Add SaveMap16Expanded and SaveMap32Expanded functions based on ZS

This commit is contained in:
scawful
2024-11-10 16:49:16 -05:00
parent 3a2b2e8c37
commit 8cccbdfd4c
2 changed files with 137 additions and 1 deletions

View File

@@ -1069,6 +1069,56 @@ absl::Status Overworld::CreateTile32Tilemap() {
return absl::OkStatus();
}
absl::Status Overworld::SaveMap32Expanded() {
int bottomLeft = kMap32TileBLExpanded;
int bottomRight = kMap32TileBRExpanded;
int topRight = kMap32TileTRExpanded;
int limit = 0x8A80;
// Updates the pointers too for the tile32
// Top Right
RETURN_IF_ERROR(
rom()->WriteLong(0x0176EC, core::PcToSnes(kMap32TileTRExpanded)));
RETURN_IF_ERROR(
rom()->WriteLong(0x0176F3, core::PcToSnes(kMap32TileTRExpanded + 1)));
RETURN_IF_ERROR(
rom()->WriteLong(0x0176FA, core::PcToSnes(kMap32TileTRExpanded + 2)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017701, core::PcToSnes(kMap32TileTRExpanded + 3)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017708, core::PcToSnes(kMap32TileTRExpanded + 4)));
RETURN_IF_ERROR(
rom()->WriteLong(0x01771A, core::PcToSnes(kMap32TileTRExpanded + 5)));
// BottomLeft
RETURN_IF_ERROR(
rom()->WriteLong(0x01772C, core::PcToSnes(kMap32TileBLExpanded)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017733, core::PcToSnes(kMap32TileBLExpanded + 1)));
RETURN_IF_ERROR(
rom()->WriteLong(0x01773A, core::PcToSnes(kMap32TileBLExpanded + 2)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017741, core::PcToSnes(kMap32TileBLExpanded + 3)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017748, core::PcToSnes(kMap32TileBLExpanded + 4)));
RETURN_IF_ERROR(
rom()->WriteLong(0x01775A, core::PcToSnes(kMap32TileBLExpanded + 5)));
// BottomRight
RETURN_IF_ERROR(
rom()->WriteLong(0x01776C, core::PcToSnes(kMap32TileBRExpanded)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017773, core::PcToSnes(kMap32TileBRExpanded + 1)));
RETURN_IF_ERROR(
rom()->WriteLong(0x01777A, core::PcToSnes(kMap32TileBRExpanded + 2)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017781, core::PcToSnes(kMap32TileBRExpanded + 3)));
RETURN_IF_ERROR(
rom()->WriteLong(0x017788, core::PcToSnes(kMap32TileBRExpanded + 4)));
RETURN_IF_ERROR(
rom()->WriteLong(0x01779A, core::PcToSnes(kMap32TileBRExpanded + 5)));
}
absl::Status Overworld::SaveMap32Tiles() {
core::Logger::log("Saving Map32 Tiles");
constexpr int kMaxUniqueTiles = 0x4540;
@@ -1198,6 +1248,84 @@ absl::Status Overworld::SaveMap32Tiles() {
return absl::OkStatus();
}
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(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(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(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(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(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()->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()->Write(
core::SnesToPc(0x02FD28),
static_cast<uint8_t>(core::PcToSnes(kMap16TilesExpanded) >> 16)));
RETURN_IF_ERROR(rom()->Write(
core::SnesToPc(0x02FD39),
static_cast<uint8_t>(core::PcToSnes(kMap16TilesExpanded) >> 16)));
return absl::OkStatus();
}
absl::Status Overworld::SaveMap16Tiles() {
core::Logger::log("Saving Map16 Tiles");
int tpos = kMap16Tiles;