diff --git a/data/maps/PalletTown_RivalsHouse/text.inc b/data/maps/PalletTown_RivalsHouse/text.inc index 38172688c..bde0f854c 100644 --- a/data/maps/PalletTown_RivalsHouse/text.inc +++ b/data/maps/PalletTown_RivalsHouse/text.inc @@ -62,8 +62,13 @@ PalletTown_RivalsHouse_Text_LookingNiceInNoTime:: .string "nice in no time.$" PalletTown_RivalsHouse_Text_ThereYouGoAllDone:: +#ifdef BUGFIX @ The localizers missed what should be a textcolor change in the localizations. + .string "{COLOR DARK_GRAY}{STR_VAR_1} looks dreamily content…\p" + .string "{COLOR RED}DAISY: There you go! All done.\n" +#else @ In the JP games, gender-based text used a different font instead of different colors. .string "{FONT_NORMAL}{STR_VAR_1} looks dreamily content…\p" .string "{FONT_FEMALE}DAISY: There you go! All done.\n" +#endif .string "See? Doesn't it look nice?\p" .string "Giggle…\n" .string "It's such a cute POKéMON.$" diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index f92ff3183..507c8a498 100644 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -34,7 +34,7 @@ EventScript_PkmnCenterNurse_CheckTrainerTowerAndUnionRoom:: specialvar VAR_RESULT, BufferUnionRoomPlayerName copyvar VAR_0x8008, VAR_RESULT goto_if_eq VAR_0x8008, 0, EventScript_PkmnCenterNurse_ReturnPkmn - goto_if_eq VAR_0x8008, 1, EventScript_PkmnCenterNurse_PlayerWaitingInUionRoom + goto_if_eq VAR_0x8008, 1, EventScript_PkmnCenterNurse_PlayerWaitingInUnionRoom end EventScript_PkmnCenterNurse_ReturnPkmn:: @@ -45,7 +45,7 @@ EventScript_PkmnCenterNurse_ReturnPkmn:: msgbox Text_WeHopeToSeeYouAgain return -EventScript_PkmnCenterNurse_PlayerWaitingInUionRoom:: +EventScript_PkmnCenterNurse_PlayerWaitingInUnionRoom:: goto_if_set FLAG_SYS_INFORMED_OF_LOCAL_WIRELESS_PLAYER, EventScript_PkmnCenterNurse_ReturnPkmn msgbox Text_RestoredPkmnToFullHealth setflag FLAG_SYS_INFORMED_OF_LOCAL_WIRELESS_PLAYER diff --git a/include/constants/songs.h b/include/constants/songs.h index 5d2d609a5..cf7739042 100644 --- a/include/constants/songs.h +++ b/include/constants/songs.h @@ -244,21 +244,21 @@ #define SE_M_HAZE 239 // SE_W114 #define SE_M_HYPER_BEAM2 240 // SE_W063B // New FRLG SFX -#define SE_DOOR 241 // SE_RG_W_DOOR -#define SE_CARD_FLIP 242 // SE_RG_CARD1 -#define SE_CARD_FLIPPING 243 // SE_RG_CARD2 -#define SE_CARD_OPEN 244 // SE_RG_CARD3 -#define SE_BAG_CURSOR 245 // SE_RG_BAG1 -#define SE_BAG_POCKET 246 // SE_RG_BAG2 -#define SE_BALL_CLICK 247 // SE_RG_GETTING -#define SE_SHOP 248 // SE_RG_SHOP -#define SE_SS_ANNE_HORN 249 // SE_RG_KITEKI -#define SE_HELP_OPEN 250 // SE_RG_HELP_OP -#define SE_HELP_CLOSE 251 // SE_RG_HELP_CL -#define SE_HELP_ERROR 252 // SE_RG_HELP_NG -#define SE_DEOXYS_MOVE 253 // SE_RG_DEOMOV -#define SE_POKE_JUMP_SUCCESS 254 // SE_RG_EXCELLENT -#define SE_POKE_JUMP_FAILURE 255 // SE_RG_NAWAMISS +#define SE_DOOR 241 // SE_W_DOOR +#define SE_CARD_FLIP 242 // SE_CARD1 +#define SE_CARD_FLIPPING 243 // SE_CARD2 +#define SE_CARD_OPEN 244 // SE_CARD3 +#define SE_BAG_CURSOR 245 // SE_BAG1 +#define SE_BAG_POCKET 246 // SE_BAG2 +#define SE_BALL_CLICK 247 // SE_GETTING +#define SE_SHOP 248 // SE_SHOP +#define SE_SS_ANNE_HORN 249 // SE_KITEKI +#define SE_HELP_OPEN 250 // SE_HELP_OP +#define SE_HELP_CLOSE 251 // SE_HELP_CL +#define SE_HELP_ERROR 252 // SE_HELP_NG +#define SE_DEOXYS_MOVE 253 // SE_DEOMOV +#define SE_POKE_JUMP_SUCCESS 254 // SE_EXCELLENT +#define SE_POKE_JUMP_FAILURE 255 // SE_NAWAMISS #define END_SE SE_POKE_JUMP_FAILURE // Music kept from RS @@ -280,81 +280,81 @@ #define MUS_MOVE_DELETED 270 // MUS_ME_WASURE #define MUS_TOO_BAD 271 // MUS_ME_ZANNEN // New FRLG Music -#define MUS_FOLLOW_ME 272 // MUS_RG_ANNAI -#define MUS_GAME_CORNER 273 // MUS_RG_SLOT -#define MUS_ROCKET_HIDEOUT 274 // MUS_RG_AJITO -#define MUS_GYM 275 // MUS_RG_GYM -#define MUS_JIGGLYPUFF 276 // MUS_RG_PURIN -#define MUS_INTRO_FIGHT 277 // MUS_RG_DEMO -#define MUS_TITLE 278 // MUS_RG_TITLE -#define MUS_CINNABAR 279 // MUS_RG_GUREN -#define MUS_LAVENDER 280 // MUS_RG_SHION -#define MUS_HEAL_UNUSED 281 // MUS_RG_KAIHUKU -#define MUS_CYCLING 282 // MUS_RG_CYCLING -#define MUS_ENCOUNTER_ROCKET 283 // MUS_RG_ROCKET -#define MUS_ENCOUNTER_GIRL 284 // MUS_RG_SHOUJO -#define MUS_ENCOUNTER_BOY 285 // MUS_RG_SHOUNEN -#define MUS_HALL_OF_FAME 286 // MUS_RG_DENDOU -#define MUS_VIRIDIAN_FOREST 287 // MUS_RG_T_MORI -#define MUS_MT_MOON 288 // MUS_RG_OTSUKIMI -#define MUS_POKE_MANSION 289 // MUS_RG_POKEYASHI -#define MUS_CREDITS 290 // MUS_RG_ENDING -#define MUS_ROUTE1 291 // MUS_RG_LOAD01 -#define MUS_ROUTE24 292 // MUS_RG_OPENING -#define MUS_ROUTE3 293 // MUS_RG_LOAD02 -#define MUS_ROUTE11 294 // MUS_RG_LOAD03 -#define MUS_VICTORY_ROAD 295 // MUS_RG_CHAMP_R -#define MUS_VS_GYM_LEADER 296 // MUS_RG_VS_GYM -#define MUS_VS_TRAINER 297 // MUS_RG_VS_TORE -#define MUS_VS_WILD 298 // MUS_RG_VS_YASEI -#define MUS_VS_CHAMPION 299 // MUS_RG_VS_LAST -#define MUS_PALLET 300 // MUS_RG_MASARA -#define MUS_OAK_LAB 301 // MUS_RG_KENKYU -#define MUS_OAK 302 // MUS_RG_OHKIDO -#define MUS_POKE_CENTER 303 // MUS_RG_POKECEN -#define MUS_SS_ANNE 304 // MUS_RG_SANTOAN -#define MUS_SURF 305 // MUS_RG_NAMINORI -#define MUS_POKE_TOWER 306 // MUS_RG_P_TOWER -#define MUS_SILPH 307 // MUS_RG_SHIRUHU -#define MUS_FUCHSIA 308 // MUS_RG_HANADA -#define MUS_CELADON 309 // MUS_RG_TAMAMUSI -#define MUS_VICTORY_TRAINER 310 // MUS_RG_WIN_TRE -#define MUS_VICTORY_WILD 311 // MUS_RG_WIN_YASEI -#define MUS_VICTORY_GYM_LEADER 312 // MUS_RG_WIN_GYM -#define MUS_VERMILLION 313 // MUS_RG_KUCHIBA -#define MUS_PEWTER 314 // MUS_RG_NIBI -#define MUS_ENCOUNTER_RIVAL 315 // MUS_RG_RIVAL1 -#define MUS_RIVAL_EXIT 316 // MUS_RG_RIVAL2 -#define MUS_DEX_RATING 317 // MUS_RG_FAN2 -#define MUS_OBTAIN_KEY_ITEM 318 // MUS_RG_FAN5 -#define MUS_CAUGHT_INTRO 319 // MUS_RG_FAN6 -#define MUS_PHOTO 320 // MUS_ME_RG_PHOTO -#define MUS_GAME_FREAK 321 // MUS_RG_TITLEROG -#define MUS_CAUGHT 322 // MUS_RG_GET_YASEI -#define MUS_NEW_GAME_INSTRUCT 323 // MUS_RG_SOUSA -#define MUS_NEW_GAME_INTRO 324 // MUS_RG_SEKAIKAN -#define MUS_NEW_GAME_EXIT 325 // MUS_RG_SEIBETU -#define MUS_POKE_JUMP 326 // MUS_RG_JUMP -#define MUS_UNION_ROOM 327 // MUS_RG_UNION -#define MUS_NET_CENTER 328 // MUS_RG_NETWORK -#define MUS_MYSTERY_GIFT 329 // MUS_RG_OKURIMONO -#define MUS_BERRY_PICK 330 // MUS_RG_KINOMIKUI -#define MUS_SEVII_CAVE 331 // MUS_RG_NANADUNGEON -#define MUS_TEACHY_TV_SHOW 332 // MUS_RG_OSHIE_TV -#define MUS_SEVII_ROUTE 333 // MUS_RG_NANASHIMA -#define MUS_SEVII_DUNGEON 334 // MUS_RG_NANAISEKI -#define MUS_SEVII_123 335 // MUS_RG_NANA123 -#define MUS_SEVII_45 336 // MUS_RG_NANA45 -#define MUS_SEVII_67 337 // MUS_RG_NANA67 -#define MUS_POKE_FLUTE 338 // MUS_RG_POKEFUE -#define MUS_VS_DEOXYS 339 // MUS_RG_VS_DEO -#define MUS_VS_MEWTWO 340 // MUS_RG_VS_MYU2 -#define MUS_VS_LEGEND 341 // MUS_RG_VS_DEN -#define MUS_ENCOUNTER_GYM_LEADER 342 // MUS_RG_EXEYE -#define MUS_ENCOUNTER_DEOXYS 343 // MUS_RG_DEOEYE -#define MUS_TRAINER_TOWER 344 // MUS_RG_T_TOWER -#define MUS_SLOW_PALLET 345 // MUS_RG_SLOWMASARA -#define MUS_TEACHY_TV_MENU 346 // MUS_RG_TVNOIZE +#define MUS_FOLLOW_ME 272 // MUS_ANNAI +#define MUS_GAME_CORNER 273 // MUS_SLOT +#define MUS_ROCKET_HIDEOUT 274 // MUS_AJITO +#define MUS_GYM 275 // MUS_GYM +#define MUS_JIGGLYPUFF 276 // MUS_PURIN +#define MUS_INTRO_FIGHT 277 // MUS_DEMO +#define MUS_TITLE 278 // MUS_TITLE +#define MUS_CINNABAR 279 // MUS_GUREN +#define MUS_LAVENDER 280 // MUS_SHION +#define MUS_HEAL_UNUSED 281 // MUS_KAIHUKU +#define MUS_CYCLING 282 // MUS_CYCLING +#define MUS_ENCOUNTER_ROCKET 283 // MUS_ROCKET +#define MUS_ENCOUNTER_GIRL 284 // MUS_SHOUJO +#define MUS_ENCOUNTER_BOY 285 // MUS_SHOUNEN +#define MUS_HALL_OF_FAME 286 // MUS_DENDOU +#define MUS_VIRIDIAN_FOREST 287 // MUS_T_MORI +#define MUS_MT_MOON 288 // MUS_OTSUKIMI +#define MUS_POKE_MANSION 289 // MUS_POKEYASHI +#define MUS_CREDITS 290 // MUS_ENDING +#define MUS_ROUTE1 291 // MUS_LOAD01 +#define MUS_ROUTE24 292 // MUS_OPENING +#define MUS_ROUTE3 293 // MUS_LOAD02 +#define MUS_ROUTE11 294 // MUS_LOAD03 +#define MUS_VICTORY_ROAD 295 // MUS_CHAMP_R +#define MUS_VS_GYM_LEADER 296 // MUS_VS_GYM +#define MUS_VS_TRAINER 297 // MUS_VS_TORE +#define MUS_VS_WILD 298 // MUS_VS_YASEI +#define MUS_VS_CHAMPION 299 // MUS_VS_LAST +#define MUS_PALLET 300 // MUS_MASARA +#define MUS_OAK_LAB 301 // MUS_KENKYU +#define MUS_OAK 302 // MUS_OHKIDO +#define MUS_POKE_CENTER 303 // MUS_POKECEN +#define MUS_SS_ANNE 304 // MUS_SANTOAN +#define MUS_SURF 305 // MUS_NAMINORI +#define MUS_POKE_TOWER 306 // MUS_P_TOWER +#define MUS_SILPH 307 // MUS_SHIRUHU +#define MUS_FUCHSIA 308 // MUS_HANADA +#define MUS_CELADON 309 // MUS_TAMAMUSI +#define MUS_VICTORY_TRAINER 310 // MUS_WIN_TRE +#define MUS_VICTORY_WILD 311 // MUS_WIN_YASEI +#define MUS_VICTORY_GYM_LEADER 312 // MUS_WIN_GYM +#define MUS_VERMILLION 313 // MUS_KUCHIBA +#define MUS_PEWTER 314 // MUS_NIBI +#define MUS_ENCOUNTER_RIVAL 315 // MUS_RIVAL1 +#define MUS_RIVAL_EXIT 316 // MUS_RIVAL2 +#define MUS_DEX_RATING 317 // MUS_FAN2 +#define MUS_OBTAIN_KEY_ITEM 318 // MUS_FAN5 +#define MUS_CAUGHT_INTRO 319 // MUS_FAN6 +#define MUS_PHOTO 320 // MUS_ME_PHOTO +#define MUS_GAME_FREAK 321 // MUS_TITLEROG +#define MUS_CAUGHT 322 // MUS_GET_YASEI +#define MUS_NEW_GAME_INSTRUCT 323 // MUS_SOUSA +#define MUS_NEW_GAME_INTRO 324 // MUS_SEKAIKAN +#define MUS_NEW_GAME_EXIT 325 // MUS_SEIBETU +#define MUS_POKE_JUMP 326 // MUS_JUMP +#define MUS_UNION_ROOM 327 // MUS_UNION +#define MUS_NET_CENTER 328 // MUS_NETWORK +#define MUS_MYSTERY_GIFT 329 // MUS_OKURIMONO +#define MUS_BERRY_PICK 330 // MUS_KINOMIKUI +#define MUS_SEVII_CAVE 331 // MUS_NANADUNGEON +#define MUS_TEACHY_TV_SHOW 332 // MUS_OSHIE_TV +#define MUS_SEVII_ROUTE 333 // MUS_NANASHIMA +#define MUS_SEVII_DUNGEON 334 // MUS_NANAISEKI +#define MUS_SEVII_123 335 // MUS_NANA123 +#define MUS_SEVII_45 336 // MUS_NANA45 +#define MUS_SEVII_67 337 // MUS_NANA67 +#define MUS_POKE_FLUTE 338 // MUS_POKEFUE +#define MUS_VS_DEOXYS 339 // MUS_VS_DEO +#define MUS_VS_MEWTWO 340 // MUS_VS_MYU2 +#define MUS_VS_LEGEND 341 // MUS_VS_DEN +#define MUS_ENCOUNTER_GYM_LEADER 342 // MUS_EXEYE +#define MUS_ENCOUNTER_DEOXYS 343 // MUS_DEOEYE +#define MUS_TRAINER_TOWER 344 // MUS_T_TOWER +#define MUS_SLOW_PALLET 345 // MUS_SLOWMASARA +#define MUS_TEACHY_TV_MENU 346 // MUS_TVNOIZE #define END_MUS MUS_TEACHY_TV_MENU #define MUS_NONE 0xFFFF diff --git a/include/gba/defines.h b/include/gba/defines.h index 2c0b4c12c..e37e28411 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -77,6 +77,8 @@ #define TILE_SIZE_4BPP 32 #define TILE_SIZE_8BPP 64 +#define BG_TILE_ADDR_4BPP(n) (void *)(BG_VRAM + (TILE_SIZE_4BPP * (n))) + #define TILE_OFFSET_4BPP(n) ((n) * TILE_SIZE_4BPP) #define TILE_OFFSET_8BPP(n) ((n) * TILE_SIZE_8BPP) diff --git a/include/util.h b/include/util.h index 8dc5e9bb6..ef1c15faa 100644 --- a/include/util.h +++ b/include/util.h @@ -9,8 +9,8 @@ extern const u8 gMiscBlank_Gfx[]; // unused in Emerald extern const u32 gBitTable[]; u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); -void StoreWordInTwoHalfwords(u16 *, unsigned); -void LoadWordFromTwoHalfwords(u16 *, unsigned *); +void StoreWordInTwoHalfwords(u16 *, u32); +void LoadWordFromTwoHalfwords(u16 *, u32 *); int CountTrailingZeroBits(u32 value); u16 CalcCRC16(const u8 *data, u32 length); u16 CalcCRC16WithTable(const u8 *data, u32 length); diff --git a/src/field_effect.c b/src/field_effect.c index e42fd4585..63daa9e3e 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -2674,7 +2674,7 @@ static void ShowMonEffect_Outdoors_6(struct Task *task) static void ShowMonEffect_Outdoors_7(struct Task *task) { IntrCallback callback; - LoadWordFromTwoHalfwords((u16 *)&task->data[13], (uintptr_t *)&callback); + LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback); SetVBlankCallback(callback); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); @@ -2688,7 +2688,7 @@ static void VBlankCB_ShowMonEffect_Outdoors(void) { IntrCallback callback; struct Task *task = &gTasks[FindTaskIdByFunc(Task_ShowMon_Outdoors)]; - LoadWordFromTwoHalfwords((u16 *)&task->data[13], (uintptr_t *)&callback); + LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback); callback(); SetGpuReg(REG_OFFSET_WIN0H, task->data[1]); SetGpuReg(REG_OFFSET_WIN0V, task->data[2]); @@ -2793,7 +2793,7 @@ static void ShowMonEffect_Indoors_7(struct Task *task) u16 charbase; charbase = (GetGpuReg(REG_OFFSET_BG0CNT) >> 8) << 11; CpuFill32(0, (void *)VRAM + charbase, 0x800); - LoadWordFromTwoHalfwords((u16 *)&task->data[13], (uintptr_t *)&intrCallback); + LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback); SetVBlankCallback(intrCallback); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); @@ -2808,7 +2808,7 @@ static void VBlankCB_ShowMonEffect_Indoors(void) IntrCallback intrCallback; struct Task *task; task = &gTasks[FindTaskIdByFunc(Task_ShowMon_Indoors)]; - LoadWordFromTwoHalfwords((u16 *)&task->data[13], (uintptr_t *)&intrCallback); + LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback); intrCallback(); SetGpuReg(REG_OFFSET_BG0HOFS, task->data[1]); SetGpuReg(REG_OFFSET_BG0VOFS, task->data[2]); diff --git a/src/intro.c b/src/intro.c index 42d0e2039..2712efed9 100644 --- a/src/intro.c +++ b/src/intro.c @@ -2282,7 +2282,7 @@ static void SpriteCB_Star(struct Sprite *sprite) sprite->sStar_SparkleTimer++; if (sprite->sStar_SparkleTimer % sStarSparklesSpawnRate) { - LoadWordFromTwoHalfwords((u16*)&sprite->sStar_SparkleRngSeed, (uintptr_t *)&random); + LoadWordFromTwoHalfwords((u16*)&sprite->sStar_SparkleRngSeed, &random); random = ISO_RANDOMIZE1(random); StoreWordInTwoHalfwords((u16*)&sprite->sStar_SparkleRngSeed, random); random >>= 16; diff --git a/src/trainer_see.c b/src/trainer_see.c index 8a56a886f..335edfc3d 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -522,7 +522,7 @@ static void Task_RevealTrainer_RunTrainerSeeFuncList(u8 taskId) struct ObjectEvent * trainerObj; // another objEvent loaded into by loadword? - LoadWordFromTwoHalfwords((u16 *)&task->data[1], (uintptr_t *)&trainerObj); + LoadWordFromTwoHalfwords((u16 *)&task->data[1], (u32 *)&trainerObj); if (!task->data[7]) { ObjectEventClearHeldMovement(trainerObj); diff --git a/src/util.c b/src/util.c index 5423e0a2d..b32799584 100644 --- a/src/util.c +++ b/src/util.c @@ -120,13 +120,13 @@ u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *)) return sprite; } -void StoreWordInTwoHalfwords(u16 *h, unsigned w) +void StoreWordInTwoHalfwords(u16 *h, u32 w) { h[0] = (u16)(w); h[1] = (u16)(w >> 16); } -void LoadWordFromTwoHalfwords(u16 *h, unsigned *w) +void LoadWordFromTwoHalfwords(u16 *h, u32 *w) { *w = h[0] | (s16)h[1] << 16; }