diff --git a/src/app/core/common.cc b/src/app/core/common.cc index b2af94e1..d31d70f0 100644 --- a/src/app/core/common.cc +++ b/src/app/core/common.cc @@ -48,10 +48,27 @@ uint64_t decode(const std::vector &input, size_t &offset) { return data; } +uint32_t crc32(const std::vector &data) { + uint32_t crc = ::crc32(0L, Z_NULL, 0); + return ::crc32(crc, data.data(), data.size()); +} + } // namespace std::shared_ptr ExperimentFlags::flags_; +// Initialize the static member +std::stack ImGuiIdIssuer::idStack; + +uint32_t Get24LocalFromPC(uint8_t *data, int addr, bool pc) { + uint32_t ret = + (PcToSnes(addr) & 0xFF0000) | (data[addr + 1] << 8) | data[addr]; + if (pc) { + return SnesToPc(ret); + } + return ret; +} + // hextodec has been imported from SNESDisasm to parse hex numbers int HexToDec(char *input, int length) { int result = 0; @@ -107,8 +124,7 @@ void stle16b(uint8_t *const p_arr, uint16_t const p_val) { stle0(p_arr, p_val); stle1(p_arr, p_val); } -// "Store little endian 16-bit value using a byte pointer, offset by an -// index before dereferencing" + void stle16b_i(uint8_t *const p_arr, size_t const p_index, uint16_t const p_val) { stle16b(p_arr + (p_index * 2), p_val); @@ -134,7 +150,7 @@ uint32_t ldle2(uint8_t const *const p_arr) { return ldle(p_arr, 2); } // Helper function to get the third byte in a little endian number uint32_t ldle3(uint8_t const *const p_arr) { return ldle(p_arr, 3); } -// Load little endian halfword (16-bit) dereferenced from + uint16_t ldle16b(uint8_t const *const p_arr) { uint16_t v = 0; @@ -142,30 +158,11 @@ uint16_t ldle16b(uint8_t const *const p_arr) { return v; } -// Load little endian halfword (16-bit) dereferenced from an arrays of bytes. -// This version provides an index that will be multiplied by 2 and added to the -// base address. + uint16_t ldle16b_i(uint8_t const *const p_arr, size_t const p_index) { return ldle16b(p_arr + (2 * p_index)); } -// Initialize the static member -std::stack ImGuiIdIssuer::idStack; - -uint32_t Get24LocalFromPC(uint8_t *data, int addr, bool pc) { - uint32_t ret = - (PcToSnes(addr) & 0xFF0000) | (data[addr + 1] << 8) | data[addr]; - if (pc) { - return SnesToPc(ret); - } - return ret; -} - -uint32_t crc32(const std::vector &data) { - uint32_t crc = ::crc32(0L, Z_NULL, 0); - return ::crc32(crc, data.data(), data.size()); -} - void CreateBpsPatch(const std::vector &source, const std::vector &target, std::vector &patch) { diff --git a/src/app/core/common.h b/src/app/core/common.h index 3038a137..c0b36693 100644 --- a/src/app/core/common.h +++ b/src/app/core/common.h @@ -227,12 +227,21 @@ inline uint32_t MapBankToWordAddress(uint8_t bank, uint16_t addr) noexcept { return result; } +uint32_t Get24LocalFromPC(uint8_t *data, int addr, bool pc = true); + int HexToDec(char *input, int length); +// "Store little endian 16-bit value using a byte pointer, offset by an +// index before dereferencing" void stle16b_i(uint8_t *const p_arr, size_t const p_index, uint16_t const p_val); + +// Load little endian halfword (16-bit) dereferenced from an arrays of bytes. +// This version provides an index that will be multiplied by 2 and added to the +// base address. uint16_t ldle16b_i(uint8_t const *const p_arr, size_t const p_index); +// Load little endian halfword (16-bit) dereferenced from uint16_t ldle16b(uint8_t const *const p_arr); void stle16b(uint8_t *const p_arr, uint16_t const p_val); @@ -245,10 +254,6 @@ struct FolderItem { typedef struct FolderItem FolderItem; -uint32_t Get24LocalFromPC(uint8_t *data, int addr, bool pc = true); - -uint32_t crc32(const std::vector &data); - void CreateBpsPatch(const std::vector &source, const std::vector &target, std::vector &patch);