From a630fd0f2312757c7920d03069fe348e96b408fb Mon Sep 17 00:00:00 2001 From: scawful Date: Tue, 6 Aug 2024 17:37:58 -0400 Subject: [PATCH] inline common fns, replace redudant code --- src/app/core/common.cc | 33 --------------------------------- src/app/core/common.h | 33 +++++++++++++++++++++++++++++---- src/app/rom.cc | 9 ++++----- 3 files changed, 33 insertions(+), 42 deletions(-) diff --git a/src/app/core/common.cc b/src/app/core/common.cc index dacd5fac..b2af94e1 100644 --- a/src/app/core/common.cc +++ b/src/app/core/common.cc @@ -52,39 +52,6 @@ uint64_t decode(const std::vector &input, size_t &offset) { std::shared_ptr ExperimentFlags::flags_; -constexpr uint32_t kFastRomRegion = 0x808000; - -inline uint32_t SnesToPc(uint32_t addr) noexcept { - if (addr >= kFastRomRegion) { - addr -= kFastRomRegion; - } - uint32_t temp = (addr & 0x7FFF) + ((addr / 2) & 0xFF8000); - return (temp + 0x0); -} - -inline uint32_t PcToSnes(uint32_t addr) { - uint8_t *b = reinterpret_cast(&addr); - b[2] = static_cast(b[2] * 2); - - if (b[1] >= 0x80) { - b[2] += 1; - } else { - b[1] += 0x80; - } - - return addr; -} - -uint32_t MapBankToWordAddress(uint8_t bank, uint16_t addr) { - uint32_t result = 0; - result = (bank << 16) | addr; - return result; -} - -int AddressFromBytes(uint8_t bank, uint8_t high, uint8_t low) noexcept { - return (bank << 16) | (high << 8) | low; -} - // hextodec has been imported from SNESDisasm to parse hex numbers int HexToDec(char *input, int length) { int result = 0; diff --git a/src/app/core/common.h b/src/app/core/common.h index 310e55b0..3038a137 100644 --- a/src/app/core/common.h +++ b/src/app/core/common.h @@ -194,13 +194,38 @@ class Logger { static std::vector logs; }; -inline uint32_t SnesToPc(uint32_t addr) noexcept; +constexpr uint32_t kFastRomRegion = 0x808000; -inline uint32_t PcToSnes(uint32_t addr); +inline uint32_t SnesToPc(uint32_t addr) noexcept { + if (addr >= kFastRomRegion) { + addr -= kFastRomRegion; + } + uint32_t temp = (addr & 0x7FFF) + ((addr / 2) & 0xFF8000); + return (temp + 0x0); +} -inline uint32_t MapBankToWordAddress(uint8_t bank, uint16_t addr); +inline uint32_t PcToSnes(uint32_t addr) { + uint8_t *b = reinterpret_cast(&addr); + b[2] = static_cast(b[2] * 2); -inline int AddressFromBytes(uint8_t bank, uint8_t high, uint8_t low) noexcept; + if (b[1] >= 0x80) { + b[2] += 1; + } else { + b[1] += 0x80; + } + + return addr; +} + +inline int AddressFromBytes(uint8_t bank, uint8_t high, uint8_t low) noexcept { + return (bank << 16) | (high << 8) | low; +} + +inline uint32_t MapBankToWordAddress(uint8_t bank, uint16_t addr) noexcept { + uint32_t result = 0; + result = (bank << 16) | addr; + return result; +} int HexToDec(char *input, int length); diff --git a/src/app/rom.cc b/src/app/rom.cc index 6fbc30ae..8835d49c 100644 --- a/src/app/rom.cc +++ b/src/app/rom.cc @@ -33,11 +33,10 @@ constexpr int Uncompressed3BPPSize = 0x0600; constexpr int kEntranceGfxGroup = 0x5D97; int Rom::GetGraphicsAddress(const uchar* data, uint8_t addr) { - auto part_one = data[version_constants().kOverworldGfxPtr1 + addr] << 16; - auto part_two = data[version_constants().kOverworldGfxPtr2 + addr] << 8; - auto part_three = data[version_constants().kOverworldGfxPtr3 + addr]; - auto snes_addr = (part_one | part_two | part_three); - return core::SnesToPc(snes_addr); + return core::SnesToPc(core::AddressFromBytes( + data[version_constants().kOverworldGfxPtr1 + addr], + data[version_constants().kOverworldGfxPtr2 + addr], + data[version_constants().kOverworldGfxPtr3 + addr])); } absl::StatusOr Rom::Load2BppGraphics() {