move palette constants to snes_palette

This commit is contained in:
scawful
2024-07-22 19:25:18 -04:00
parent 8255ec6993
commit b887771593
3 changed files with 66 additions and 71 deletions

View File

@@ -204,38 +204,6 @@ constexpr int GravesCountOnY = 0x499E0; // Byte 0x09 entries
constexpr int GraveLinkSpecialHole = 0x46DD9; // short
constexpr int GraveLinkSpecialStairs = 0x46DE0; // short
// ============================================================================
// Palettes Related Variables - This contain all the palettes of the game
// ============================================================================
constexpr int overworldPaletteMain = 0xDE6C8;
constexpr int overworldPaletteAuxialiary = 0xDE86C;
constexpr int overworldPaletteAnimated = 0xDE604;
constexpr int globalSpritePalettesLW = 0xDD218;
constexpr int globalSpritePalettesDW = 0xDD290;
// Green, Blue, Red, Bunny, Electrocuted (15 colors each)
constexpr int armorPalettes = 0xDD308;
constexpr int spritePalettesAux1 = 0xDD39E; // 7 colors each
constexpr int spritePalettesAux2 = 0xDD446; // 7 colors each
constexpr int spritePalettesAux3 = 0xDD4E0; // 7 colors each
constexpr int swordPalettes = 0xDD630; // 3 colors each - 4 entries
constexpr int shieldPalettes = 0xDD648; // 4 colors each - 3 entries
constexpr int hudPalettes = 0xDD660;
constexpr int dungeonMapPalettes = 0xDD70A; // 21 colors
constexpr int dungeonMainPalettes = 0xDD734; //(15*6) colors each - 20 entries
constexpr int dungeonMapBgPalettes = 0xDE544; // 16*6
// Mirrored Value at 0x75645 : 0x75625
constexpr int hardcodedGrassLW = 0x5FEA9;
constexpr int hardcodedGrassDW = 0x05FEB3; // 0x7564F
constexpr int hardcodedGrassSpecial = 0x75640;
constexpr int overworldMiniMapPalettes = 0x55B27;
constexpr int triforcePalette = 0x64425;
constexpr int crystalPalette = 0xF4CD3;
constexpr int customAreaSpecificBGPalette =
0x140000; // 2 bytes for each overworld area (320)
constexpr int customAreaSpecificBGASM = 0x140150;
constexpr int customAreaSpecificBGEnabled =
0x140140; // 1 byte, not 0 if enabled
// ============================================================================
// Names
// ============================================================================

View File

@@ -30,7 +30,7 @@ absl::Status LoadOverworldMainPalettes(const Bytes& rom_data,
auto data = rom_data.data();
for (int i = 0; i < 6; i++) {
RETURN_IF_ERROR(palette_groups.overworld_main.AddPalette(
gfx::ReadPaletteFromRom(core::overworldPaletteMain + (i * (35 * 2)),
gfx::ReadPaletteFromRom(kOverworldPaletteMain + (i * (35 * 2)),
/*num_colors*/ 35, data)))
}
return absl::OkStatus();
@@ -40,10 +40,9 @@ absl::Status LoadOverworldAuxiliaryPalettes(
const Bytes& rom_data, gfx::PaletteGroupMap& palette_groups) {
auto data = rom_data.data();
for (int i = 0; i < 20; i++) {
RETURN_IF_ERROR(
palette_groups.overworld_aux.AddPalette(gfx::ReadPaletteFromRom(
core::overworldPaletteAuxialiary + (i * (21 * 2)),
/*num_colors*/ 21, data)))
RETURN_IF_ERROR(palette_groups.overworld_aux.AddPalette(
gfx::ReadPaletteFromRom(kOverworldPaletteAux + (i * (21 * 2)),
/*num_colors*/ 21, data)))
}
return absl::OkStatus();
}
@@ -54,7 +53,7 @@ absl::Status LoadOverworldAnimatedPalettes(
for (int i = 0; i < 14; i++) {
RETURN_IF_ERROR(
palette_groups.overworld_animated.AddPalette(gfx::ReadPaletteFromRom(
core::overworldPaletteAnimated + (i * (7 * 2)), 7, data)))
kOverworldPaletteAnimated + (i * (7 * 2)), 7, data)))
}
return absl::OkStatus();
}
@@ -64,7 +63,7 @@ absl::Status LoadHUDPalettes(const Bytes& rom_data,
auto data = rom_data.data();
for (int i = 0; i < 2; i++) {
RETURN_IF_ERROR(palette_groups.hud.AddPalette(
gfx::ReadPaletteFromRom(core::hudPalettes + (i * 64), 32, data)))
gfx::ReadPaletteFromRom(kHudPalettes + (i * 64), 32, data)))
}
return absl::OkStatus();
}
@@ -73,9 +72,9 @@ absl::Status LoadGlobalSpritePalettes(const Bytes& rom_data,
gfx::PaletteGroupMap& palette_groups) {
auto data = rom_data.data();
RETURN_IF_ERROR(palette_groups.global_sprites.AddPalette(
gfx::ReadPaletteFromRom(core::globalSpritePalettesLW, 60, data)))
gfx::ReadPaletteFromRom(kGlobalSpritesLW, 60, data)))
RETURN_IF_ERROR(palette_groups.global_sprites.AddPalette(
gfx::ReadPaletteFromRom(core::globalSpritePalettesDW, 60, data)))
gfx::ReadPaletteFromRom(globalSpritePalettesDW, 60, data)))
return absl::OkStatus();
}
@@ -84,7 +83,7 @@ absl::Status LoadArmorPalettes(const Bytes& rom_data,
auto data = rom_data.data();
for (int i = 0; i < 5; i++) {
RETURN_IF_ERROR(palette_groups.armors.AddPalette(
gfx::ReadPaletteFromRom(core::armorPalettes + (i * 30), 15, data)))
gfx::ReadPaletteFromRom(kArmorPalettes + (i * 30), 15, data)))
}
return absl::OkStatus();
}
@@ -94,7 +93,7 @@ absl::Status LoadSwordPalettes(const Bytes& rom_data,
auto data = rom_data.data();
for (int i = 0; i < 4; i++) {
RETURN_IF_ERROR(palette_groups.swords.AddPalette(
gfx::ReadPaletteFromRom(core::swordPalettes + (i * 6), 3, data)))
gfx::ReadPaletteFromRom(kSwordPalettes + (i * 6), 3, data)))
}
return absl::OkStatus();
}
@@ -104,7 +103,7 @@ absl::Status LoadShieldPalettes(const Bytes& rom_data,
auto data = rom_data.data();
for (int i = 0; i < 3; i++) {
RETURN_IF_ERROR(palette_groups.shields.AddPalette(
gfx::ReadPaletteFromRom(core::shieldPalettes + (i * 8), 4, data)))
gfx::ReadPaletteFromRom(kShieldPalettes + (i * 8), 4, data)))
}
return absl::OkStatus();
}
@@ -114,7 +113,7 @@ absl::Status LoadSpriteAux1Palettes(const Bytes& rom_data,
auto data = rom_data.data();
for (int i = 0; i < 12; i++) {
RETURN_IF_ERROR(palette_groups.sprites_aux1.AddPalette(
gfx::ReadPaletteFromRom(core::spritePalettesAux1 + (i * 14), 7, data)))
gfx::ReadPaletteFromRom(kSpritesPalettesAux1 + (i * 14), 7, data)))
}
return absl::OkStatus();
}
@@ -124,7 +123,7 @@ absl::Status LoadSpriteAux2Palettes(const Bytes& rom_data,
auto data = rom_data.data();
for (int i = 0; i < 11; i++) {
RETURN_IF_ERROR(palette_groups.sprites_aux2.AddPalette(
gfx::ReadPaletteFromRom(core::spritePalettesAux2 + (i * 14), 7, data)))
gfx::ReadPaletteFromRom(kSpritesPalettesAux2 + (i * 14), 7, data)))
}
return absl::OkStatus();
}
@@ -134,7 +133,7 @@ absl::Status LoadSpriteAux3Palettes(const Bytes& rom_data,
auto data = rom_data.data();
for (int i = 0; i < 24; i++) {
RETURN_IF_ERROR(palette_groups.sprites_aux3.AddPalette(
gfx::ReadPaletteFromRom(core::spritePalettesAux3 + (i * 14), 7, data)))
gfx::ReadPaletteFromRom(kSpritesPalettesAux3 + (i * 14), 7, data)))
}
return absl::OkStatus();
}
@@ -143,9 +142,8 @@ absl::Status LoadDungeonMainPalettes(const Bytes& rom_data,
gfx::PaletteGroupMap& palette_groups) {
auto data = rom_data.data();
for (int i = 0; i < 20; i++) {
RETURN_IF_ERROR(
palette_groups.dungeon_main.AddPalette(gfx::ReadPaletteFromRom(
core::dungeonMainPalettes + (i * 180), 90, data)))
RETURN_IF_ERROR(palette_groups.dungeon_main.AddPalette(
gfx::ReadPaletteFromRom(kDungeonMainPalettes + (i * 180), 90, data)))
}
return absl::OkStatus();
}
@@ -153,11 +151,11 @@ absl::Status LoadDungeonMainPalettes(const Bytes& rom_data,
absl::Status LoadGrassColors(const Bytes& rom_data,
gfx::PaletteGroupMap& palette_groups) {
RETURN_IF_ERROR(palette_groups.grass.AddColor(
gfx::ReadColorFromRom(core::hardcodedGrassLW, rom_data.data())))
gfx::ReadColorFromRom(kHardcodedGrassLW, rom_data.data())))
RETURN_IF_ERROR(palette_groups.grass.AddColor(
gfx::ReadColorFromRom(core::hardcodedGrassDW, rom_data.data())))
gfx::ReadColorFromRom(hardcodedGrassDW, rom_data.data())))
RETURN_IF_ERROR(palette_groups.grass.AddColor(
gfx::ReadColorFromRom(core::hardcodedGrassSpecial, rom_data.data())))
gfx::ReadColorFromRom(hardcodedGrassSpecial, rom_data.data())))
return absl::OkStatus();
}
@@ -165,9 +163,9 @@ absl::Status Load3DObjectPalettes(const Bytes& rom_data,
gfx::PaletteGroupMap& palette_groups) {
auto data = rom_data.data();
RETURN_IF_ERROR(palette_groups.object_3d.AddPalette(
gfx::ReadPaletteFromRom(core::triforcePalette, 8, data)))
gfx::ReadPaletteFromRom(kTriforcePalette, 8, data)))
RETURN_IF_ERROR(palette_groups.object_3d.AddPalette(
gfx::ReadPaletteFromRom(core::crystalPalette, 8, data)))
gfx::ReadPaletteFromRom(crystalPalette, 8, data)))
return absl::OkStatus();
}
@@ -177,28 +175,28 @@ absl::Status LoadOverworldMiniMapPalettes(
for (int i = 0; i < 2; i++) {
RETURN_IF_ERROR(
palette_groups.overworld_mini_map.AddPalette(gfx::ReadPaletteFromRom(
core::overworldMiniMapPalettes + (i * 256), 128, data)))
kOverworldMiniMapPalettes + (i * 256), 128, data)))
}
return absl::OkStatus();
}
} // namespace palette_group_internal
const absl::flat_hash_map<std::string, uint32_t> kPaletteGroupAddressMap = {
{"ow_main", core::overworldPaletteMain},
{"ow_aux", core::overworldPaletteAuxialiary},
{"ow_animated", core::overworldPaletteAnimated},
{"hud", core::hudPalettes},
{"global_sprites", core::globalSpritePalettesLW},
{"armors", core::armorPalettes},
{"swords", core::swordPalettes},
{"shields", core::shieldPalettes},
{"sprites_aux1", core::spritePalettesAux1},
{"sprites_aux2", core::spritePalettesAux2},
{"sprites_aux3", core::spritePalettesAux3},
{"dungeon_main", core::dungeonMainPalettes},
{"grass", core::hardcodedGrassLW},
{"3d_object", core::triforcePalette},
{"ow_mini_map", core::overworldMiniMapPalettes},
{"ow_main", kOverworldPaletteMain},
{"ow_aux", kOverworldPaletteAux},
{"ow_animated", kOverworldPaletteAnimated},
{"hud", kHudPalettes},
{"global_sprites", kGlobalSpritesLW},
{"armors", kArmorPalettes},
{"swords", kSwordPalettes},
{"shields", kShieldPalettes},
{"sprites_aux1", kSpritesPalettesAux1},
{"sprites_aux2", kSpritesPalettesAux2},
{"sprites_aux3", kSpritesPalettesAux3},
{"dungeon_main", kDungeonMainPalettes},
{"grass", kHardcodedGrassLW},
{"3d_object", kTriforcePalette},
{"ow_mini_map", kOverworldMiniMapPalettes},
};
const absl::flat_hash_map<std::string, uint32_t> kPaletteGroupColorCounts = {

View File

@@ -59,6 +59,35 @@ constexpr const char* kPaletteGroupAddressesKeys[] = {
"grass", "3d_object", "ow_mini_map",
};
constexpr int kOverworldPaletteMain = 0xDE6C8;
constexpr int kOverworldPaletteAux = 0xDE86C;
constexpr int kOverworldPaletteAnimated = 0xDE604;
constexpr int kGlobalSpritesLW = 0xDD218;
constexpr int globalSpritePalettesDW = 0xDD290;
// Green, Blue, Red, Bunny, Electrocuted (15 colors each)
constexpr int kArmorPalettes = 0xDD308;
constexpr int kSpritesPalettesAux1 = 0xDD39E; // 7 colors each
constexpr int kSpritesPalettesAux2 = 0xDD446; // 7 colors each
constexpr int kSpritesPalettesAux3 = 0xDD4E0; // 7 colors each
constexpr int kSwordPalettes = 0xDD630; // 3 colors each - 4 entries
constexpr int kShieldPalettes = 0xDD648; // 4 colors each - 3 entries
constexpr int kHudPalettes = 0xDD660;
constexpr int dungeonMapPalettes = 0xDD70A; // 21 colors
constexpr int kDungeonMainPalettes = 0xDD734; //(15*6) colors each - 20 entries
constexpr int dungeonMapBgPalettes = 0xDE544; // 16*6
// Mirrored Value at 0x75645 : 0x75625
constexpr int kHardcodedGrassLW = 0x5FEA9;
constexpr int hardcodedGrassDW = 0x05FEB3; // 0x7564F
constexpr int hardcodedGrassSpecial = 0x75640;
constexpr int kOverworldMiniMapPalettes = 0x55B27;
constexpr int kTriforcePalette = 0x64425;
constexpr int crystalPalette = 0xF4CD3;
// 2 bytes for each overworld area (320)
constexpr int customAreaSpecificBGPalette = 0x140000;
constexpr int customAreaSpecificBGASM = 0x140150;
// 1 byte, not 0 if enabled
constexpr int customAreaSpecificBGEnabled = 0x140140;
/**
* @brief Primitive of a SNES color palette.
*/