diff --git a/src/app/core/common.cc b/src/app/core/common.cc index 13217f01..426d7282 100644 --- a/src/app/core/common.cc +++ b/src/app/core/common.cc @@ -7,14 +7,20 @@ namespace yaze { namespace app { namespace core { -unsigned int SnesToPc(unsigned int addr) { +uint32_t SnesToPc(uint32_t addr) { if (addr >= 0x808000) { addr -= 0x808000; } - unsigned int temp = (addr & 0x7FFF) + ((addr / 2) & 0xFF8000); + uint32_t temp = (addr & 0x7FFF) + ((addr / 2) & 0xFF8000); return (temp + 0x0); } +uint32_t PcToSnes(uint32_t addr) { + if (addr >= 0x400000) return -1; + addr = ((addr << 1) & 0x7F0000) | (addr & 0x7FFF) | 0x8000; + return addr; +} + int AddressFromBytes(uint8_t addr1, uint8_t addr2, uint8_t addr3) { return (addr1 << 16) | (addr2 << 8) | addr3; } diff --git a/src/app/core/common.h b/src/app/core/common.h index e585eb30..3818c64b 100644 --- a/src/app/core/common.h +++ b/src/app/core/common.h @@ -9,7 +9,9 @@ namespace yaze { namespace app { namespace core { -unsigned int SnesToPc(unsigned int addr); +uint32_t SnesToPc(uint32_t addr); +uint32_t PcToSnes(uint32_t addr); + int AddressFromBytes(uint8_t addr1, uint8_t addr2, uint8_t addr3); int HexToDec(char *input, int length); bool StringReplace(std::string &str, const std::string &from,