Refactor SnesToPc and PcToSnes functions for improved readability and consistency; remove redundant core:: namespace usage

This commit is contained in:
scawful
2025-01-22 13:45:58 -05:00
parent de53ccae21
commit 43fc52dec7
12 changed files with 170 additions and 172 deletions

View File

@@ -19,13 +19,13 @@ void Room::LoadHeader() {
int header_pointer = (rom()->data()[kRoomHeaderPointer + 2] << 16) +
(rom()->data()[kRoomHeaderPointer + 1] << 8) +
(rom()->data()[kRoomHeaderPointer]);
header_pointer = core::SnesToPc(header_pointer);
header_pointer = SnesToPc(header_pointer);
int address = (rom()->data()[kRoomHeaderPointerBank] << 16) +
(rom()->data()[(header_pointer + 1) + (room_id_ * 2)] << 8) +
rom()->data()[(header_pointer) + (room_id_ * 2)];
auto header_location = core::SnesToPc(address);
auto header_location = SnesToPc(address);
bg2_ = (background2)((rom()->data()[header_location] >> 5) & 0x07);
collision_ = (CollisionKey)((rom()->data()[header_location] >> 2) & 0x07);
@@ -124,7 +124,7 @@ void Room::CalculateRoomSize() {
void Room::LoadRoomFromROM() {
auto rom_data = rom()->vector();
int header_pointer = core::SnesToPc(kRoomHeaderPointer);
int header_pointer = SnesToPc(kRoomHeaderPointer);
message_id_ = messages_id_dungeon + (room_id_ * 2);
@@ -132,7 +132,7 @@ void Room::LoadRoomFromROM() {
(rom()->data()[(header_pointer + 1) + (room_id_ * 2)] << 8) +
rom()->data()[(header_pointer) + (room_id_ * 2)];
int hpos = core::SnesToPc(address);
int hpos = SnesToPc(address);
hpos++;
uint8_t b = rom_data[hpos];
@@ -182,14 +182,14 @@ void Room::LoadRoomFromROM() {
hpos++;
// Load room objects
int object_pointer = core::SnesToPc(room_object_pointer);
int object_pointer = SnesToPc(room_object_pointer);
int room_address = object_pointer + (room_id_ * 3);
int objects_location = core::SnesToPc(room_address);
int objects_location = SnesToPc(room_address);
// Load sprites
// int spr_ptr = 0x040000 | rooms_sprite_pointer;
// int sprite_address =
// core::SnesToPc(dungeon_spr_ptrs | spr_ptr + (room_id_ * 2));
// SnesToPc(dungeon_spr_ptrs | spr_ptr + (room_id_ * 2));
}
void Room::LoadRoomGraphics(uint8_t entrance_blockset) {
@@ -253,7 +253,7 @@ void Room::CopyRoomGraphicsToBuffer() {
}
void Room::LoadAnimatedGraphics() {
int gfx_ptr = core::SnesToPc(rom()->version_constants().kGfxAnimatedPointer);
int gfx_ptr = SnesToPc(rom()->version_constants().kGfxAnimatedPointer);
auto gfx_buffer_data = rom()->graphics_buffer();
auto rom_data = rom()->vector();
@@ -277,13 +277,13 @@ void Room::LoadObjects() {
int object_pointer = (rom_data[room_object_pointer + 2] << 16) +
(rom_data[room_object_pointer + 1] << 8) +
(rom_data[room_object_pointer]);
object_pointer = core::SnesToPc(object_pointer);
object_pointer = SnesToPc(object_pointer);
int room_address = object_pointer + (room_id_ * 3);
int tile_address = (rom_data[room_address + 2] << 16) +
(rom_data[room_address + 1] << 8) + rom_data[room_address];
int objects_location = core::SnesToPc(tile_address);
int objects_location = SnesToPc(tile_address);
if (objects_location == 0x52CA2) {
std::cout << "Room ID : " << room_id_ << std::endl;
@@ -422,7 +422,7 @@ void Room::LoadSprites() {
(0x09 << 16) + (rom_data[sprite_pointer + (room_id_ * 2) + 1] << 8) +
rom_data[sprite_pointer + (room_id_ * 2)];
int sprite_address = core::SnesToPc(sprite_address_snes);
int sprite_address = SnesToPc(sprite_address_snes);
bool sortsprites = rom_data[sprite_address] == 1;
sprite_address += 1;
@@ -462,7 +462,7 @@ void Room::LoadSprites() {
void Room::LoadChests() {
auto rom_data = rom()->vector();
uint32_t cpos = core::SnesToPc((rom_data[chests_data_pointer1 + 2] << 16) +
uint32_t cpos = SnesToPc((rom_data[chests_data_pointer1 + 2] << 16) +
(rom_data[chests_data_pointer1 + 1] << 8) +
(rom_data[chests_data_pointer1]));
size_t clength = (rom_data[chests_length_pointer + 1] << 8) +

View File

@@ -224,7 +224,7 @@ void Overworld::DecompressAllMapTiles() {
int p = (rom()->data()[map_ptr + 2 + (3 * index)] << 16) +
(rom()->data()[map_ptr + 1 + (3 * index)] << 8) +
(rom()->data()[map_ptr + (3 * index)]);
return core::SnesToPc(p);
return SnesToPc(p);
};
constexpr uint32_t kBaseLowest = 0x0FFFFF;
@@ -416,12 +416,12 @@ absl::Status Overworld::LoadExits() {
absl::Status Overworld::LoadItems() {
ASSIGN_OR_RETURN(uint32_t pointer,
rom()->ReadLong(zelda3::kOverworldItemsAddress));
uint32_t pointer_pc = core::SnesToPc(pointer); // 1BC2F9 -> 0DC2F9
uint32_t pointer_pc = SnesToPc(pointer); // 1BC2F9 -> 0DC2F9
for (int i = 0; i < 128; i++) {
ASSIGN_OR_RETURN(uint16_t word_address,
rom()->ReadWord(pointer_pc + i * 2));
uint32_t addr = (pointer & 0xFF0000) | word_address; // 1B F9 3C
addr = core::SnesToPc(addr);
addr = SnesToPc(addr);
if (overworld_maps_[i].is_large_map()) {
if (overworld_maps_[i].parent() != (uint8_t)i) {
@@ -490,7 +490,7 @@ absl::Status Overworld::LoadSpritesFromMap(int sprites_per_gamestate_ptr,
int current_spr_ptr = sprites_per_gamestate_ptr + (i * 2);
ASSIGN_OR_RETURN(auto word_addr, rom()->ReadWord(current_spr_ptr));
int sprite_address = core::SnesToPc((0x09 << 0x10) | word_addr);
int sprite_address = SnesToPc((0x09 << 0x10) | word_addr);
while (true) {
ASSIGN_OR_RETURN(uint8_t b1, rom()->ReadByte(sprite_address));
ASSIGN_OR_RETURN(uint8_t b2, rom()->ReadByte(sprite_address + 1));
@@ -609,7 +609,7 @@ absl::Status Overworld::SaveOverworldMaps() {
if (map_pointers1_id[i] == -1) {
// Save compressed data and pointer for map1
std::copy(a.begin(), a.end(), map_data_p1[i].begin());
int snes_pos = core::PcToSnes(pos);
int snes_pos = PcToSnes(pos);
map_pointers1[i] = snes_pos;
util::logf("Saving map pointers1 and compressed data for map %s at %s",
util::HexByte(i), util::HexLong(snes_pos));
@@ -641,7 +641,7 @@ absl::Status Overworld::SaveOverworldMaps() {
if (map_pointers2_id[i] == -1) {
// Save compressed data and pointer for map2
std::copy(b.begin(), b.end(), map_data_p2[i].begin());
int snes_pos = core::PcToSnes(pos);
int snes_pos = PcToSnes(pos);
map_pointers2[i] = snes_pos;
util::logf("Saving map pointers2 and compressed data for map %s at %s",
util::HexByte(i), util::HexLong(snes_pos));
@@ -1107,45 +1107,45 @@ absl::Status Overworld::SaveMap32Expanded() {
// Updates the pointers too for the tile32
// Top Right
RETURN_IF_ERROR(
rom()->WriteLong(0x0176EC, core::PcToSnes(kMap32TileTRExpanded)));
rom()->WriteLong(0x0176EC, PcToSnes(kMap32TileTRExpanded)));
RETURN_IF_ERROR(
rom()->WriteLong(0x0176F3, core::PcToSnes(kMap32TileTRExpanded + 1)));
rom()->WriteLong(0x0176F3, PcToSnes(kMap32TileTRExpanded + 1)));
RETURN_IF_ERROR(
rom()->WriteLong(0x0176FA, core::PcToSnes(kMap32TileTRExpanded + 2)));
rom()->WriteLong(0x0176FA, PcToSnes(kMap32TileTRExpanded + 2)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017701, core::PcToSnes(kMap32TileTRExpanded + 3)));
rom()->WriteLong(0x017701, PcToSnes(kMap32TileTRExpanded + 3)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017708, core::PcToSnes(kMap32TileTRExpanded + 4)));
rom()->WriteLong(0x017708, PcToSnes(kMap32TileTRExpanded + 4)));
RETURN_IF_ERROR(
rom()->WriteLong(0x01771A, core::PcToSnes(kMap32TileTRExpanded + 5)));
rom()->WriteLong(0x01771A, PcToSnes(kMap32TileTRExpanded + 5)));
// BottomLeft
RETURN_IF_ERROR(
rom()->WriteLong(0x01772C, core::PcToSnes(kMap32TileBLExpanded)));
rom()->WriteLong(0x01772C, PcToSnes(kMap32TileBLExpanded)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017733, core::PcToSnes(kMap32TileBLExpanded + 1)));
rom()->WriteLong(0x017733, PcToSnes(kMap32TileBLExpanded + 1)));
RETURN_IF_ERROR(
rom()->WriteLong(0x01773A, core::PcToSnes(kMap32TileBLExpanded + 2)));
rom()->WriteLong(0x01773A, PcToSnes(kMap32TileBLExpanded + 2)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017741, core::PcToSnes(kMap32TileBLExpanded + 3)));
rom()->WriteLong(0x017741, PcToSnes(kMap32TileBLExpanded + 3)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017748, core::PcToSnes(kMap32TileBLExpanded + 4)));
rom()->WriteLong(0x017748, PcToSnes(kMap32TileBLExpanded + 4)));
RETURN_IF_ERROR(
rom()->WriteLong(0x01775A, core::PcToSnes(kMap32TileBLExpanded + 5)));
rom()->WriteLong(0x01775A, PcToSnes(kMap32TileBLExpanded + 5)));
// BottomRight
RETURN_IF_ERROR(
rom()->WriteLong(0x01776C, core::PcToSnes(kMap32TileBRExpanded)));
rom()->WriteLong(0x01776C, PcToSnes(kMap32TileBRExpanded)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017773, core::PcToSnes(kMap32TileBRExpanded + 1)));
rom()->WriteLong(0x017773, PcToSnes(kMap32TileBRExpanded + 1)));
RETURN_IF_ERROR(
rom()->WriteLong(0x01777A, core::PcToSnes(kMap32TileBRExpanded + 2)));
rom()->WriteLong(0x01777A, PcToSnes(kMap32TileBRExpanded + 2)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017781, core::PcToSnes(kMap32TileBRExpanded + 3)));
rom()->WriteLong(0x017781, PcToSnes(kMap32TileBRExpanded + 3)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017788, core::PcToSnes(kMap32TileBRExpanded + 4)));
rom()->WriteLong(0x017788, PcToSnes(kMap32TileBRExpanded + 4)));
RETURN_IF_ERROR(
rom()->WriteLong(0x01779A, core::PcToSnes(kMap32TileBRExpanded + 5)));
rom()->WriteLong(0x01779A, PcToSnes(kMap32TileBRExpanded + 5)));
return absl::OkStatus();
}
@@ -1279,79 +1279,79 @@ absl::Status Overworld::SaveMap32Tiles() {
}
absl::Status Overworld::SaveMap16Expanded() {
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x008865),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x0EDE4F),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x0EDEE9),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x008865),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x0EDE4F),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x0EDEE9),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BBC2D),
core::PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BBC4C),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BBCC2),
core::PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BBCCB),
core::PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BBC2D),
PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BBC4C),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BBCC2),
PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BBCCB),
PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BBEF6),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BBF23),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BC041),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BC9B3),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BBEF6),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BBF23),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BC041),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BC9B3),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BC9BA),
core::PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BC9C1),
core::PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BC9C8),
core::PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BC9BA),
PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BC9C1),
PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BC9C8),
PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BCA40),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BCA47),
core::PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BCA4E),
core::PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x1BCA55),
core::PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BCA40),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BCA47),
PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BCA4E),
PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x1BCA55),
PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x02F457),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x02F45E),
core::PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x02F467),
core::PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x02F46E),
core::PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x02F51F),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x02F526),
core::PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x02F52F),
core::PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteLong(core::SnesToPc(0x02F536),
core::PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x02F457),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x02F45E),
PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x02F467),
PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x02F46E),
PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x02F51F),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x02F526),
PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x02F52F),
PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteLong(SnesToPc(0x02F536),
PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteShort(core::SnesToPc(0x02FE1C),
core::PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteShort(core::SnesToPc(0x02FE23),
core::PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteShort(core::SnesToPc(0x02FE2C),
core::PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteShort(core::SnesToPc(0x02FE33),
core::PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteShort(SnesToPc(0x02FE1C),
PcToSnes(kMap16TilesExpanded)));
RETURN_IF_ERROR(rom()->WriteShort(SnesToPc(0x02FE23),
PcToSnes(kMap16TilesExpanded + 4)));
RETURN_IF_ERROR(rom()->WriteShort(SnesToPc(0x02FE2C),
PcToSnes(kMap16TilesExpanded + 2)));
RETURN_IF_ERROR(rom()->WriteShort(SnesToPc(0x02FE33),
PcToSnes(kMap16TilesExpanded + 6)));
RETURN_IF_ERROR(rom()->WriteByte(
core::SnesToPc(0x02FD28),
static_cast<uint8_t>(core::PcToSnes(kMap16TilesExpanded) >> 16)));
SnesToPc(0x02FD28),
static_cast<uint8_t>(PcToSnes(kMap16TilesExpanded) >> 16)));
RETURN_IF_ERROR(rom()->WriteByte(
core::SnesToPc(0x02FD39),
static_cast<uint8_t>(core::PcToSnes(kMap16TilesExpanded) >> 16)));
SnesToPc(0x02FD39),
static_cast<uint8_t>(PcToSnes(kMap16TilesExpanded) >> 16)));
return absl::OkStatus();
}
@@ -1537,7 +1537,7 @@ absl::Status Overworld::SaveItems() {
item_pointers[i] = item_pointers[item_pointers_reuse[i]];
}
int snesaddr = core::PcToSnes(item_pointers[i]);
int snesaddr = PcToSnes(item_pointers[i]);
RETURN_IF_ERROR(
rom()->WriteWord(kOverworldItemsPointers + (i * 2), snesaddr));
}

View File

@@ -67,7 +67,7 @@ void TitleScreen::LoadTitleScreen() {
tilesBG2Buffer[i] = 492;
}
pos = core::SnesToPc(pos);
pos = SnesToPc(pos);
while ((rom_[pos] & 0x80) != 0x80) {
int dest_addr = pos; // $03 and $04