diff --git a/include/gba_rom_values/base_gba_rom_struct.h b/include/gba_rom_values/base_gba_rom_struct.h index 633e660..eb4e829 100644 --- a/include/gba_rom_values/base_gba_rom_struct.h +++ b/include/gba_rom_values/base_gba_rom_struct.h @@ -47,6 +47,8 @@ struct ROM_DATA int loc_gMonPaletteTable; int loc_gMonShinyPaletteTable; int loc_gMonIconTable; + int loc_gMonIconPaletteIndices; + int loc_gMonIconPalettes; int loc_gSaveBlock1; // Only used in R/S int loc_gSaveDataBuffer; // The location of the saveDataBuffer diff --git a/include/gba_rom_values/eng_gba_rom_values.h b/include/gba_rom_values/eng_gba_rom_values.h index 8e0c1c7..dc25f31 100644 --- a/include/gba_rom_values/eng_gba_rom_values.h +++ b/include/gba_rom_values/eng_gba_rom_values.h @@ -25,6 +25,8 @@ const struct ROM_DATA ENG_RUBY_v0 = { .loc_gMonPaletteTable = 0x081EA5B4, .loc_gMonShinyPaletteTable = 0x081EB374, .loc_gMonIconTable = 0x083BBD20, + .loc_gMonIconPaletteIndices = 0x083BC400, + .loc_gMonIconPalettes = 0x08E966D8, // The following should be consistant across languages and revisions. .loc_gSaveBlock1 = 0x02025734, @@ -76,6 +78,13 @@ const struct ROM_DATA ENG_SAPPHIRE_v0 = { .loc_voicegroup = 0x08445644, .loc_sPicTable_NPC = 0x0836E718, + .loc_gMonFrontPicTable = 0x081E82E4, + .loc_gMonPaletteTable = 0x081EA544, + .loc_gMonShinyPaletteTable = 0x081EB304, + .loc_gMonIconTable = 0x083BBD78, + .loc_gMonIconPaletteIndices = 0x083BC458, + .loc_gMonIconPalettes = 0x08E966D8, + // The following should be consistant across languages and revisions. .loc_gSaveBlock1 = 0x02025734, .loc_gSaveDataBuffer = 0x02000000, // Known as "gSharedMem" in RS @@ -126,6 +135,13 @@ const struct ROM_DATA ENG_RUBY_v1 = { .loc_voicegroup = 0x084401FC, .loc_sPicTable_NPC = 0x0836E7A0, + .loc_gMonFrontPicTable = 0x081E836C, + .loc_gMonPaletteTable = 0x081EA5CC, + .loc_gMonShinyPaletteTable = 0x081EB38C, + .loc_gMonIconTable = 0x083BBD3C, + .loc_gMonIconPaletteIndices = 0x083BC41C, + .loc_gMonIconPalettes = 0x08E966D8, + // The following should be consistant across languages and revisions. .loc_gSaveBlock1 = 0x02025734, .loc_gSaveDataBuffer = 0x02000000, // Known as "gSharedMem" in RS @@ -176,6 +192,13 @@ const struct ROM_DATA ENG_SAPPHIRE_v1 = { .loc_voicegroup = 0x0844025C, .loc_sPicTable_NPC = 0x0836E730, + .loc_gMonFrontPicTable = 0x081E82FC, + .loc_gMonPaletteTable = 0x081EA55C, + .loc_gMonShinyPaletteTable = 0x081EB31C, + .loc_gMonIconTable = 0x083BBD98, + .loc_gMonIconPaletteIndices = 0x083BC478, + .loc_gMonIconPalettes = 0x08E966D8, + // The following should be consistant across languages and revisions. .loc_gSaveBlock1 = 0x02025734, .loc_gSaveDataBuffer = 0x02000000, // Known as "gSharedMem" in RS @@ -226,6 +249,13 @@ const struct ROM_DATA ENG_RUBY_v2 = { .loc_voicegroup = 0x084401FC, .loc_sPicTable_NPC = 0x0836E7A0, + .loc_gMonFrontPicTable = 0x081E836C, + .loc_gMonPaletteTable = 0x081EA5CC, + .loc_gMonShinyPaletteTable = 0x081EB38C, + .loc_gMonIconTable = 0x083BBD3C, + .loc_gMonIconPaletteIndices = 0x083BC41C, + .loc_gMonIconPalettes = 0x08E966D8, + // The following should be consistant across languages and revisions. .loc_gSaveBlock1 = 0x02025734, .loc_gSaveDataBuffer = 0x02000000, // Known as "gSharedMem" in RS @@ -276,6 +306,13 @@ const struct ROM_DATA ENG_SAPPHIRE_v2 = { .loc_voicegroup = 0x0844025C, .loc_sPicTable_NPC = 0x0836E730, + .loc_gMonFrontPicTable = 0x081E82FC, + .loc_gMonPaletteTable = 0x081EA55C, + .loc_gMonShinyPaletteTable = 0x081EB31C, + .loc_gMonIconTable = 0x083BBD98, + .loc_gMonIconPaletteIndices = 0x083BC478, + .loc_gMonIconPalettes = 0x08E966D8, + // The following should be consistant across languages and revisions. .loc_gSaveBlock1 = 0x02025734, .loc_gSaveDataBuffer = 0x02000000, // Known as "gSharedMem" in RS @@ -327,6 +364,13 @@ const struct ROM_DATA ENG_FIRERED_v0 = { .loc_voicegroup = 0x08498878, .loc_sPicTable_NPC = 0x083A0AB8, + .loc_gMonFrontPicTable = 0x082350AC, + .loc_gMonPaletteTable = 0x0823730C, + .loc_gMonShinyPaletteTable = 0x082380CC, + .loc_gMonIconTable = 0x083D37A0, + .loc_gMonIconPaletteIndices = 0x083D3E80, + .loc_gMonIconPalettes = 0x083D3740, + // The following should be consistant across languages and revisions. .loc_gSaveDataBuffer = 0x02039A38, // The location of the saveDataBuffer .loc_gSpecialVar_0x8000 = 0x020370B8, @@ -380,6 +424,13 @@ const struct ROM_DATA ENG_LEAFGREEN_v0 = { .loc_voicegroup = 0x08498154, .loc_sPicTable_NPC = 0x083A0A98, + .loc_gMonFrontPicTable = 0x08235088, + .loc_gMonPaletteTable = 0x082372E8, + .loc_gMonShinyPaletteTable = 0x082380A8, + .loc_gMonIconTable = 0x083D35DC, + .loc_gMonIconPaletteIndices = 0x083D3CBC, + .loc_gMonIconPalettes = 0x083D357C, + // The following should be consistant across languages and revisions. .loc_gSaveDataBuffer = 0x02039A38, // The location of the saveDataBuffer .loc_gSpecialVar_0x8000 = 0x020370B8, @@ -433,6 +484,13 @@ const struct ROM_DATA ENG_FIRERED_v1 = { .loc_voicegroup = 0x084988D8, .loc_sPicTable_NPC = 0x083A0B28, + .loc_gMonFrontPicTable = 0x0823511C, + .loc_gMonPaletteTable = 0x0823737C, + .loc_gMonShinyPaletteTable = 0x0823813C, + .loc_gMonIconTable = 0x083D3810, + .loc_gMonIconPaletteIndices = 0x083D3EF0, + .loc_gMonIconPalettes = 0x083D37B0, + // The following should be consistant across languages and revisions. .loc_gSaveDataBuffer = 0x02039A38, // The location of the saveDataBuffer .loc_gSpecialVar_0x8000 = 0x020370B8, @@ -486,9 +544,12 @@ const struct ROM_DATA ENG_LEAFGREEN_v1 = { .loc_voicegroup = 0x084981C4, .loc_sPicTable_NPC = 0x083A0B08, - .loc_gMonFrontPicTable = 0x08301418, - .loc_gMonPaletteTable = 0x08303678, - .loc_gMonShinyPaletteTable = 0x08304438, + .loc_gMonFrontPicTable = 0x082350F8, + .loc_gMonPaletteTable = 0x08237358, + .loc_gMonShinyPaletteTable = 0x08238118, + .loc_gMonIconTable = 0x083D364C, + .loc_gMonIconPaletteIndices = 0x083D3D2C, + .loc_gMonIconPalettes = 0x083D35EC, // The following should be consistant across languages and revisions. .loc_gSaveDataBuffer = 0x02039A38, // The location of the saveDataBuffer @@ -547,6 +608,8 @@ const struct ROM_DATA ENG_EMERALD_v0 = { .loc_gMonPaletteTable = 0x08303678, .loc_gMonShinyPaletteTable = 0x08304438, .loc_gMonIconTable = 0x0857BCA8, + .loc_gMonIconPaletteIndices = 0x0857C388, + .loc_gMonIconPalettes = 0x08DDE1F8, // The following should be consistant across languages and revisions. .loc_gSaveDataBuffer = 0x0203ABBC, // The location of the saveDataBuffer diff --git a/include/rom_data.h b/include/rom_data.h index 18af5e5..98611a7 100644 --- a/include/rom_data.h +++ b/include/rom_data.h @@ -52,12 +52,14 @@ public: int loc_sFanfareCounter; int loc_gPlttBufferFaded; int loc_gSprites; + int loc_gMonIconPalettes; int loc_voicegroup; int loc_sPicTable_NPC; int loc_gMonFrontPicTable; int loc_gMonPaletteTable; int loc_gMonShinyPaletteTable; int loc_gMonIconTable; + int loc_gMonIconPaletteIndices; int offset_ramscript; // Ramscript offset as found within the SaveBlock1 struct in global.h int offset_flags; // Flag offset as found within the SaveBlock1 struct in global.h int offset_wondercard; diff --git a/source/rom_data.cpp b/source/rom_data.cpp index 92c4c63..3cf757b 100644 --- a/source/rom_data.cpp +++ b/source/rom_data.cpp @@ -125,6 +125,8 @@ void rom_data::fill_values(const ROM_DATA *rom_values) loc_gMonPaletteTable = rom_values->loc_gMonPaletteTable; loc_gMonShinyPaletteTable = rom_values->loc_gMonShinyPaletteTable; loc_gMonIconTable = rom_values->loc_gMonIconTable; + loc_gMonIconPaletteIndices = rom_values->loc_gMonIconPaletteIndices; + loc_gMonIconPalettes = rom_values->loc_gMonIconPalettes; offset_ramscript = rom_values->offset_ramscript; offset_flags = rom_values->offset_flags; diff --git a/source/sprite_data.cpp b/source/sprite_data.cpp index 45f2c0f..a9b138f 100644 --- a/source/sprite_data.cpp +++ b/source/sprite_data.cpp @@ -482,11 +482,8 @@ void load_temp_box_sprites(Pokemon_Party *party_data) dex_num = 0; } - u32 gMonIconPaletteIndices = 0x0857c388; - u32 sprite_table = 0x0857bca8; - - u32 sprite_location = (*(u32 *)(sprite_table + (dex_num * 4))); - int pal_num = *(byte *)(gMonIconPaletteIndices + dex_num); + u32 sprite_location = (*(u32 *)(curr_rom.loc_gMonIconTable + (dex_num * 4))); + int pal_num = *(byte *)(curr_rom.loc_gMonIconPaletteIndices + dex_num); load_sprite(party_sprites[i], (const unsigned int *)sprite_location, 512, curr_tile_id, MENU_PAL_RED + pal_num, ATTR0_SQUARE, ATTR1_SIZE_32x32, 1); obj_set_pos(party_sprites[i], ((BOXMENU_SPRITE_WIDTH + BOXMENU_HSPACE) * (i % BOXMENU_HNUM)) + (BOXMENU_LEFT + BOXMENU_SPRITE_HOFFSET), ((BOXMENU_SPRITE_HEIGHT + BOXMENU_VSPACE) * (i / BOXMENU_HNUM)) + (BOXMENU_TOP + BOXMENU_SPRITE_VOFFSET)); obj_unhide(party_sprites[i], 0); @@ -497,10 +494,9 @@ void load_temp_box_sprites(Pokemon_Party *party_data) } } // Load the menu sprite palettes. Should this be done somewhere else? - u32 gMonIconPalettes = 0x08dde1f8; for (int i = 0; i < 3; i++) { - tonccpy((pal_obj_mem + ((MENU_PAL_RED + i) * 16)), (const unsigned short *)(gMonIconPalettes + (i * 32)), 32); + tonccpy((pal_obj_mem + ((MENU_PAL_RED + i) * 16)), (const unsigned short *)(curr_rom.loc_gMonIconPalettes + (i * 32)), 32); } load_sprite_compressed(grabbed_front_sprite, (const unsigned int *)*(u32 *)(curr_rom.loc_gMonFrontPicTable + (0 * 8)), curr_tile_id, PULLED_SPRITE_PAL, ATTR0_SQUARE, ATTR1_SIZE_64x64, 1);