From d0fcb9168bc36dff9c9da0d36baefd4fbf3a1c55 Mon Sep 17 00:00:00 2001 From: Kaz Date: Sat, 12 Sep 2020 21:51:16 -0400 Subject: [PATCH 001/116] Match two minor functions in battle_tent and berry_crush --- src/battle_tent.c | 9 +++------ src/berry_crush.c | 17 +++++------------ 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/battle_tent.c b/src/battle_tent.c index 0a03fc167..250e2d8ee 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -355,11 +355,7 @@ static void GenerateOpponentMons(void) { u16 trainerId; s32 i, j, k; - #ifndef NONMATCHING - register const u16 *monSet asm("r9"); // Fix me. Compiler insists on moving that variable into stack. - #else - const u16 *monSet; - #endif + const u16 *monSet; u16 species[FRONTIER_PARTY_SIZE]; u16 heldItems[FRONTIER_PARTY_SIZE]; s32 monId = 0; @@ -380,7 +376,8 @@ static void GenerateOpponentMons(void) } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum); gTrainerBattleOpponent_A = trainerId; - while (gFacilityTrainers[gTrainerBattleOpponent_A].monSet[monId] != 0xFFFF) + monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet; + while (monSet[monId] != 0xFFFF) monId++; if (monId > 8) break; diff --git a/src/berry_crush.c b/src/berry_crush.c index 2175d2abb..bc972fec7 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1779,22 +1779,15 @@ void sub_8022600(struct BerryCrushGame *r6) void sub_80226D0(struct BerryCrushGame *r6) { u8 r5 = 0; - const u32 *r0 = gUnknown_08DE3FD4; -#ifndef NONMATCHING // r4, r5, r6 register roulette - register u8 *r4 asm("r4") = gDecompressionBuffer; - register u32 r0_ asm("r0"); -#else - u8 *r4 = gDecompressionBuffer; - u32 r0_; -#endif + u8 * r4; - LZ77UnCompWram(r0, r4); - for (; r5 < r6->unk9; ++r5) + LZ77UnCompWram(gUnknown_08DE3FD4, gDecompressionBuffer); // required for matching + + for (r4 = gDecompressionBuffer; r5 < r6->unk9; ++r5) { - r0_ = r6->unk138.unkC[r5]->unk0; CopyToBgTilemapBufferRect( 3, - &r4[r0_ * 40], + &r4[r6->unk138.unkC[r5]->unk0 * 40], r6->unk138.unkC[r5]->unk1, r6->unk138.unkC[r5]->unk2, 10, From 449df5860d91570a2b14caf58a51af45c7bbf8d0 Mon Sep 17 00:00:00 2001 From: Kaz Date: Sun, 13 Sep 2020 00:26:01 -0400 Subject: [PATCH 002/116] Begin documenting berry_crush --- src/berry_crush.c | 180 +++++++++++++++++++++++----------------------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/src/berry_crush.c b/src/berry_crush.c index bc972fec7..744389ba7 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -149,7 +149,7 @@ struct BerryCrushGame u8 unk8; u8 unk9; - u8 unkA; + u8 mainTask; u8 unkB; u8 unkC; @@ -199,10 +199,10 @@ struct BerryCrushGame u8 unk31C0[0x1000]; }; -static void sub_8020F74(void); -static void sub_8020F88(void); -static void sub_8020FA0(u8); -void sub_8020FC4(struct BerryCrushGame *); +static void VBlankCB(void); +static void MainCB(void); +static void MainTask(u8); +static void InitGame(struct BerryCrushGame *); void sub_8022BEC(u16, u8, u8 *); static void BerryCrush_SetPaletteFadeParams(u8 *, bool8, u32, s8, u8, u8, u16); static int sub_8021450(struct BerryCrushGame *); @@ -243,7 +243,7 @@ static u32 sub_8024444(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1 static u32 sub_8024508(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1); static u32 sub_8024568(__attribute__((unused)) struct BerryCrushGame *r0, __attribute__((unused)) u8 *r1); -static EWRAM_DATA struct BerryCrushGame *gUnknown_02022C90 = NULL; +static EWRAM_DATA struct BerryCrushGame *gBerryCrushGame = NULL; static const u8 gUnknown_082F325C[] = { 1, 2, 4, 8, 16, 32, 64, 128 }; static const u8 gUnknown_082F3264[] = { 0, 1, 2, 3, 5, 0, 0, 0 }; @@ -816,22 +816,21 @@ static const u8 gUnknown_082F4434[][4] = static const u8 gUnknown_082F4444[] = {5, 7, 9, 12}; static const u8 gUnknown_082F4448[] = {3, 7, 15, 31}; - -struct BerryCrushGame *sub_8020C00(void) +struct BerryCrushGame * GetBerryCrushGame(void) { - return gUnknown_02022C90; + return gBerryCrushGame; } -u32 sub_8020C0C(MainCallback callback) +u32 QuitBerryCrush(MainCallback callback) { - if (!gUnknown_02022C90) + if (!gBerryCrushGame) return 2; if (!callback) - callback = gUnknown_02022C90->unk0; + callback = gBerryCrushGame->unk0; - DestroyTask(gUnknown_02022C90->unkA); - FREE_AND_SET_NULL(gUnknown_02022C90); + DestroyTask(gBerryCrushGame->mainTask); + FREE_AND_SET_NULL(gBerryCrushGame); SetMainCallback2(callback); if (callback == CB2_ReturnToField) { @@ -868,8 +867,8 @@ void StartBerryCrush(MainCallback callback) return; } - gUnknown_02022C90 = AllocZeroed(sizeof(*gUnknown_02022C90)); - if (!gUnknown_02022C90) + gBerryCrushGame = AllocZeroed(sizeof(*gBerryCrushGame)); + if (!gBerryCrushGame) { SetMainCallback2(callback); Rfu.unk_10 = 0; @@ -878,110 +877,110 @@ void StartBerryCrush(MainCallback callback) return; } - gUnknown_02022C90->unk0 = callback; - gUnknown_02022C90->unk8 = multiplayerId; - gUnknown_02022C90->unk9 = playerCount; - sub_8020FC4(gUnknown_02022C90); - gUnknown_02022C90->unk12 = 1; - gUnknown_02022C90->unkE = 1; - gUnknown_02022C90->unkF = 6; - BerryCrush_SetPaletteFadeParams(gUnknown_02022C90->unk36, 1, -1, 0, 16, 0, 0); - sub_8022BEC(4, 1, gUnknown_02022C90->unk36); - SetMainCallback2(sub_8020F88); - gUnknown_02022C90->unkA = CreateTask(sub_8020FA0, 8); + gBerryCrushGame->unk0 = callback; + gBerryCrushGame->unk8 = multiplayerId; + gBerryCrushGame->unk9 = playerCount; + InitGame(gBerryCrushGame); + gBerryCrushGame->unk12 = 1; + gBerryCrushGame->unkE = 1; + gBerryCrushGame->unkF = 6; + BerryCrush_SetPaletteFadeParams(gBerryCrushGame->unk36, 1, -1, 0, 16, 0, 0); + sub_8022BEC(4, 1, gBerryCrushGame->unk36); + SetMainCallback2(MainCB); + gBerryCrushGame->mainTask = CreateTask(MainTask, 8); gTextFlags.autoScroll = 0; } -static void sub_8020D8C(void) +static void GetBerryFromBag(void) { if (gSpecialVar_ItemId < FIRST_BERRY_INDEX || gSpecialVar_ItemId > LAST_BERRY_INDEX + 1) gSpecialVar_ItemId = ITEM_CHERI_BERRY; else RemoveBagItem(gSpecialVar_ItemId, 1); - gUnknown_02022C90->unk68.as_four_players.others[gUnknown_02022C90->unk8].unk0 = gSpecialVar_ItemId - FIRST_BERRY_INDEX; - gUnknown_02022C90->unkE = 1; - gUnknown_02022C90->unkF = 9; - BerryCrush_SetPaletteFadeParams(gUnknown_02022C90->unk36, 0, -1, 0, 16, 0, 0); - sub_8022BEC(4, 1, gUnknown_02022C90->unk36); - gUnknown_02022C90->unkA = CreateTask(sub_8020FA0, 8); - SetMainCallback2(sub_8020F88); + gBerryCrushGame->unk68.as_four_players.others[gBerryCrushGame->unk8].unk0 = gSpecialVar_ItemId - FIRST_BERRY_INDEX; + gBerryCrushGame->unkE = 1; + gBerryCrushGame->unkF = 9; + BerryCrush_SetPaletteFadeParams(gBerryCrushGame->unk36, 0, -1, 0, 16, 0, 0); + sub_8022BEC(4, 1, gBerryCrushGame->unk36); + gBerryCrushGame->mainTask = CreateTask(MainTask, 8); + SetMainCallback2(MainCB); } -void sub_8020E1C(void) +static void InitMainTask(void) { - DestroyTask(gUnknown_02022C90->unkA); - ChooseBerryForMachine(sub_8020D8C); + DestroyTask(gBerryCrushGame->mainTask); + ChooseBerryForMachine(GetBerryFromBag); } -static void sub_8020E3C(void) +static void SetVBlankCB(void) { - SetVBlankCallback(sub_8020F74); + SetVBlankCallback(VBlankCB); } -void sub_8020E4C(void) +static void InitVBlankCB(void) { SetVBlankCallback(NULL); } -void sub_8020E58(void) +static void SaveResults(void) { u32 var0, var1; - var0 = gUnknown_02022C90->unk68.as_four_players.unk00.unk04; + var0 = gBerryCrushGame->unk68.as_four_players.unk00.unk04; var0 = Q_24_8(var0); var0 = MathUtil_Div32(var0, Q_24_8(60)); - var1 = gUnknown_02022C90->unk68.as_four_players.unk00.unk0A; + var1 = gBerryCrushGame->unk68.as_four_players.unk00.unk0A; var1 = Q_24_8(var1); var1 = MathUtil_Div32(var1, var0) & 0xFFFF; - gUnknown_02022C90->unk16 = var1; - switch (gUnknown_02022C90->unk9) + gBerryCrushGame->unk16 = var1; + switch (gBerryCrushGame->unk9) { case 2: - if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[0]) + if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[0]) { - gUnknown_02022C90->unk25_1 = 1; - gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = gUnknown_02022C90->unk16; + gBerryCrushGame->unk25_1 = 1; + gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = gBerryCrushGame->unk16; } break; case 3: - if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[1]) + if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[1]) { - gUnknown_02022C90->unk25_1 = 1; - gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = gUnknown_02022C90->unk16; + gBerryCrushGame->unk25_1 = 1; + gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = gBerryCrushGame->unk16; } break; case 4: - if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[2]) + if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[2]) { - gUnknown_02022C90->unk25_1 = 1; - gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = gUnknown_02022C90->unk16; + gBerryCrushGame->unk25_1 = 1; + gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = gBerryCrushGame->unk16; } break; case 5: - if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[3]) + if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[3]) { - gUnknown_02022C90->unk25_1 = 1; - gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = gUnknown_02022C90->unk16; + gBerryCrushGame->unk25_1 = 1; + gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = gBerryCrushGame->unk16; } break; } - gUnknown_02022C90->unk1C = gUnknown_02022C90->unk68.as_four_players.unk00.unk00; - if (GiveBerryPowder(gUnknown_02022C90->unk1C)) + gBerryCrushGame->unk1C = gBerryCrushGame->unk68.as_four_players.unk00.unk00; + if (GiveBerryPowder(gBerryCrushGame->unk1C)) return; - gUnknown_02022C90->unk25_0 = 1; + gBerryCrushGame->unk25_0 = 1; } -static void sub_8020F74(void) +static void VBlankCB(void) { TransferPlttBuffer(); LoadOam(); ProcessSpriteCopyRequests(); } -static void sub_8020F88(void) +static void MainCB(void) { RunTasks(); RunTextPrinters(); @@ -989,12 +988,12 @@ static void sub_8020F88(void) BuildOamBuffer(); } -static void sub_8020FA0(u8 taskId) +static void MainTask(u8 taskId) { - if (gUnknown_02022C90->unk4) - gUnknown_02022C90->unk4(gUnknown_02022C90, gUnknown_02022C90->unk36); + if (gBerryCrushGame->unk4) + gBerryCrushGame->unk4(gBerryCrushGame, gBerryCrushGame->unk36); - sub_8021450(gUnknown_02022C90); + sub_8021450(gBerryCrushGame); } #define PLAYER_UNK14(game, i) \ @@ -1003,11 +1002,11 @@ static void sub_8020FA0(u8 taskId) + offsetof(struct BerryCrushGame_68_x, unk30) \ + sizeof(struct BerryCrushGame_Player) * (i)) -void sub_8020FC4(struct BerryCrushGame *arg0) +static void InitGame(struct BerryCrushGame *arg0) { - u8 i; + u8 i = 0; - for (i = 0; i < arg0->unk9; i++) + for (; i < arg0->unk9; i++) StringCopy(PLAYER_UNK14(arg0, i), gLinkPlayers[i].name); for (; i < 5; i++) { @@ -1029,13 +1028,14 @@ void sub_8020FC4(struct BerryCrushGame *arg0) } } -int sub_802104C(void) +// TODO: Everything from here on is likely in a separate file. +s32 InitBerryCrushDisplay(void) { - struct BerryCrushGame *var0 = sub_8020C00(); - if (!var0) + struct BerryCrushGame *game = GetBerryCrushGame(); + if (!game) return -1; - switch (var0->unkC) + switch (game->unkC) { case 0: SetVBlankCallback(NULL); @@ -1057,9 +1057,9 @@ int sub_802104C(void) case 3: ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, gUnknown_082F32C8, ARRAY_COUNT(gUnknown_082F32C8)); - SetBgTilemapBuffer(1, var0->unk1C0); - SetBgTilemapBuffer(2, var0->unk21C0); - SetBgTilemapBuffer(3, var0->unk31C0); + SetBgTilemapBuffer(1, game->unk1C0); + SetBgTilemapBuffer(2, game->unk21C0); + SetBgTilemapBuffer(3, game->unk31C0); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(2, 0, 0); @@ -1088,8 +1088,8 @@ int sub_802104C(void) InitStandardTextBoxWindows(); InitTextBoxGfxAndPrinters(); - sub_8022588(var0); - sub_8022600(var0); + sub_8022588(game); + sub_8022600(game); gPaletteFade.bufferTransferDisabled = TRUE; break; case 7: @@ -1097,7 +1097,7 @@ int sub_802104C(void) CopyToBgTilemapBuffer(1, gBerryCrushGrinderTopTilemap, 0, 0); CopyToBgTilemapBuffer(2, gBerryCrushContainerCapTilemap, 0, 0); CopyToBgTilemapBuffer(3, gBerryCrushBackgroundTilemap, 0, 0); - sub_80226D0(var0); + sub_80226D0(game); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); @@ -1105,7 +1105,7 @@ int sub_802104C(void) case 8: LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); - sub_8022730(var0); + sub_8022730(game); SetGpuReg(REG_OFFSET_BG1VOFS, -gSpriteCoordOffsetY); ChangeBgX(1, 0, 0); ChangeBgY(1, 0, 0); @@ -1118,18 +1118,18 @@ int sub_802104C(void) ShowBg(2); ShowBg(3); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); - sub_8020E3C(); - var0->unkC = 0; + SetVBlankCB(); + game->unkC = 0; return 1; } - var0->unkC++; + game->unkC++; return 0; } int sub_802130C(void) { - struct BerryCrushGame *var0 = sub_8020C00(); + struct BerryCrushGame *var0 = GetBerryCrushGame(); if (!var0) return -1; @@ -1960,7 +1960,7 @@ void sub_8022B28(struct Sprite *sprite) void sub_8022BEC(u16 r5, u8 r4, u8 *r7) { - struct BerryCrushGame *r6 = sub_8020C00(); + struct BerryCrushGame *r6 = GetBerryCrushGame(); if (r5 > 25) r5 = 0; @@ -2097,7 +2097,7 @@ static u32 sub_8022D14(struct BerryCrushGame *r7, u8 *r5) static u32 sub_8022E1C(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1) { - if (sub_802104C() != 0) + if (InitBerryCrushDisplay() != 0) sub_8022BEC(r4->unkE, 0, r4->unk36); return 0; } @@ -2155,7 +2155,7 @@ static u32 sub_8022EAC(struct BerryCrushGame *r4, u8 *r5) static u32 sub_8022F04(struct BerryCrushGame *r0, __attribute__((unused)) u8 *r1) { r0->unk4 = NULL; - SetMainCallback2(sub_8020E1C); + SetMainCallback2(InitMainTask); return 0; } @@ -2942,7 +2942,7 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 r7->unk10 = 0; break; case 7: - sub_8020E58(); + SaveResults(); sub_8022BEC(18, 1, NULL); r7->unk12 = 11; r7->unkC = 0; @@ -3210,7 +3210,7 @@ static u32 sub_8024508(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1 static u32 sub_8024568(__attribute__((unused)) struct BerryCrushGame *r0, __attribute__((unused)) u8 *r1) { - sub_8020C0C(NULL); + QuitBerryCrush(NULL); return 0; } From f952144922b23d258c6b98ce3da79276d5c1e643 Mon Sep 17 00:00:00 2001 From: Kaz Date: Sun, 13 Sep 2020 03:02:41 -0400 Subject: [PATCH 003/116] party_menu fakematch fix --- src/party_menu.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/party_menu.c b/src/party_menu.c index e509ef6e0..39f74e58d 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1964,19 +1964,17 @@ static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor) if (item >= ITEM_TM01_FOCUS_PUNCH) { - if (CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH)) - move = ItemIdToBattleMoveId(item); - else + if (!CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH)) return CANNOT_LEARN_MOVE; - do {} while (0); // :morphon: - } - else if (CanLearnTutorMove(GetMonData(mon, MON_DATA_SPECIES), tutor) == FALSE) - { - return CANNOT_LEARN_MOVE; + else + move = ItemIdToBattleMoveId(item); } else { - move = GetTutorMove(tutor); + if (!CanLearnTutorMove(GetMonData(mon, MON_DATA_SPECIES), tutor)) + return CANNOT_LEARN_MOVE; + else + move = GetTutorMove(tutor); } if (MonKnowsMove(mon, move) == TRUE) From 327dd877b5b9cd76fcd4747dea755395aacc6157 Mon Sep 17 00:00:00 2001 From: Kaz Date: Sun, 13 Sep 2020 03:47:12 -0400 Subject: [PATCH 004/116] use_pokeblock: fakematch fix. I am beginning to suspect that we should be using the gflib DMA macros everywhere wherever possible. --- src/use_pokeblock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index ebb237d54..4a70e9b44 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -1,5 +1,6 @@ #include "global.h" #include "main.h" +#include "dma3.h" #include "pokeblock.h" #include "malloc.h" #include "decompress.h" @@ -1240,8 +1241,7 @@ static void UpdateMonPic(u8 loadId) } else { - do {} while(0); // Only needed to match, feel free to remove. - DmaCopy16Defvars(3, sMenu->partySheets[loadId], sMenu->curMonTileStart, 0x800); + Dma3CopyLarge16_(sMenu->partySheets[loadId], sMenu->curMonTileStart, 0x800); LoadPalette(sMenu->partyPalettes[loadId], sMenu->curMonPalette, 32); } } From 171154a0975b1c734b5b2069f1bdb3ca2bab26f2 Mon Sep 17 00:00:00 2001 From: Kaz Date: Wed, 16 Sep 2020 19:27:55 -0400 Subject: [PATCH 005/116] Convert to -g; will be required for eliminating fakematches. --- Makefile | 4 ++-- src/battle_message.c | 3 +-- src/battle_script_commands.c | 9 ++------- src/battle_setup.c | 3 +-- src/berry_crush.c | 22 +++++++++++----------- src/event_object_movement.c | 9 +++------ src/fldeff_cut.c | 3 +-- src/pokenav_match_call_data.c | 13 +++---------- 8 files changed, 24 insertions(+), 42 deletions(-) diff --git a/Makefile b/Makefile index ca282d07e..5484fb26e 100644 --- a/Makefile +++ b/Makefile @@ -63,13 +63,13 @@ ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=$(MODERN) ifeq ($(MODERN),0) CC1 := tools/agbcc/bin/agbcc$(EXE) -override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm +override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm -g ROM := pokeemerald.gba OBJ_DIR := build/emerald LIBPATH := -L ../../tools/agbcc/lib else CC1 = $(shell $(CC) --print-prog-name=cc1) -quiet -override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mcpu=arm7tdmi -fno-toplevel-reorder -Wno-pointer-to-int-cast +override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mcpu=arm7tdmi -fno-toplevel-reorder -Wno-pointer-to-int-cast -g ROM := pokeemerald_modern.gba OBJ_DIR := build/modern LIBPATH := -L "$(dir $(shell $(CC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(CC) -mthumb -print-file-name=libc.a))" diff --git a/src/battle_message.c b/src/battle_message.c index c004665d7..ee1616b5e 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -2288,8 +2288,7 @@ static const u8* TryGetStatusString(u8 *src) statusPtr = status; for (i = 0; i < 8; i++) { - if (*src == EOS) - break; + if (*src == EOS) break; // one line required to match -g *statusPtr = *src; src++; statusPtr++; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index fca2b3879..c2c4e6c41 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5035,14 +5035,9 @@ static void Cmd_openpartyscreen(void) hitmarkerFaintBits = gHitMarker >> 0x1C; gBattlerFainted = 0; - while (1) - { - if (gBitTable[gBattlerFainted] & hitmarkerFaintBits) - break; - if (gBattlerFainted >= gBattlersCount) - break; + while (!(gBitTable[gBattlerFainted] & hitmarkerFaintBits) + && gBattlerFainted < gBattlersCount) gBattlerFainted++; - } if (gBattlerFainted == gBattlersCount) gBattlescriptCurrInstr = jumpPtr; diff --git a/src/battle_setup.c b/src/battle_setup.c index 3c20d9ffe..8b02e1f42 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -1565,8 +1565,7 @@ static s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 tra { for (j = 0; j < REMATCHES_COUNT; j++) { - if (table[i].trainerIds[j] == 0) - break; + if (table[i].trainerIds[j] == 0) break; // one line required to match -g if (table[i].trainerIds[j] == trainerId) return i; } diff --git a/src/berry_crush.c b/src/berry_crush.c index 744389ba7..3554644f2 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -202,7 +202,7 @@ struct BerryCrushGame static void VBlankCB(void); static void MainCB(void); static void MainTask(u8); -static void InitGame(struct BerryCrushGame *); +static void ParseName_Options(struct BerryCrushGame *); void sub_8022BEC(u16, u8, u8 *); static void BerryCrush_SetPaletteFadeParams(u8 *, bool8, u32, s8, u8, u8, u16); static int sub_8021450(struct BerryCrushGame *); @@ -880,7 +880,7 @@ void StartBerryCrush(MainCallback callback) gBerryCrushGame->unk0 = callback; gBerryCrushGame->unk8 = multiplayerId; gBerryCrushGame->unk9 = playerCount; - InitGame(gBerryCrushGame); + ParseName_Options(gBerryCrushGame); gBerryCrushGame->unk12 = 1; gBerryCrushGame->unkE = 1; gBerryCrushGame->unkF = 6; @@ -907,23 +907,23 @@ static void GetBerryFromBag(void) SetMainCallback2(MainCB); } -static void InitMainTask(void) +static void BerryCrush_SetupMainTask(void) { DestroyTask(gBerryCrushGame->mainTask); ChooseBerryForMachine(GetBerryFromBag); } -static void SetVBlankCB(void) +static void BerryCrush_SetVBlankCB(void) { SetVBlankCallback(VBlankCB); } -static void InitVBlankCB(void) +static void BerryCrush_InitVBlankCB(void) { SetVBlankCallback(NULL); } -static void SaveResults(void) +static void BerryCrush_SaveResults(void) { u32 var0, var1; @@ -1002,7 +1002,7 @@ static void MainTask(u8 taskId) + offsetof(struct BerryCrushGame_68_x, unk30) \ + sizeof(struct BerryCrushGame_Player) * (i)) -static void InitGame(struct BerryCrushGame *arg0) +static void ParseName_Options(struct BerryCrushGame *arg0) { u8 i = 0; @@ -1028,7 +1028,7 @@ static void InitGame(struct BerryCrushGame *arg0) } } -// TODO: Everything from here on is likely in a separate file. +// TODO: Everything from here on is likely in separate files. s32 InitBerryCrushDisplay(void) { struct BerryCrushGame *game = GetBerryCrushGame(); @@ -1118,7 +1118,7 @@ s32 InitBerryCrushDisplay(void) ShowBg(2); ShowBg(3); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); - SetVBlankCB(); + BerryCrush_SetVBlankCB(); game->unkC = 0; return 1; } @@ -2155,7 +2155,7 @@ static u32 sub_8022EAC(struct BerryCrushGame *r4, u8 *r5) static u32 sub_8022F04(struct BerryCrushGame *r0, __attribute__((unused)) u8 *r1) { r0->unk4 = NULL; - SetMainCallback2(InitMainTask); + SetMainCallback2(BerryCrush_SetupMainTask); return 0; } @@ -2942,7 +2942,7 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 r7->unk10 = 0; break; case 7: - SaveResults(); + BerryCrush_SaveResults(); sub_8022BEC(18, 1, NULL); r7->unk12 = 11; r7->unkC = 0; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 68f873446..0859fb32f 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1295,22 +1295,19 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 * { u8 i = 0; - for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + for (i = 0; i < OBJECT_EVENTS_COUNT && gObjectEvents[i].active; i++) { - if (!gObjectEvents[i].active) - break; if (gObjectEvents[i].localId == localId && gObjectEvents[i].mapNum == mapNum && gObjectEvents[i].mapGroup == mapGroup) return TRUE; } if (i >= OBJECT_EVENTS_COUNT) return TRUE; *objectEventId = i; - do + for (; i < OBJECT_EVENTS_COUNT; i++) { if (gObjectEvents[i].active && gObjectEvents[i].localId == localId && gObjectEvents[i].mapNum == mapNum && gObjectEvents[i].mapGroup == mapGroup) return TRUE; - i++; - } while (i < OBJECT_EVENTS_COUNT); + } return FALSE; } diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index 991617713..db9eb4268 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -228,8 +228,7 @@ bool8 SetUpFieldMove_Cut(void) tileCuttable = TRUE; for (j = 0; j < 2; ++j) { - if (sHyperCutStruct[i].unk2[j] == 0) - break; + if (sHyperCutStruct[i].unk2[j] == 0) break; // one line required to match -g if (cutTiles[(u8)(sHyperCutStruct[i].unk2[j] - 1)] == FALSE) { tileCuttable = FALSE; diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 91dbe4005..6610dcb80 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -1100,16 +1100,9 @@ const u8 *MatchCall_GetOverrideFlavorText(u32 idx, u32 offset) { if (sCheckPageOverrides[i].idx == idx) { - while (1) - { - if (i + 1 >= ARRAY_COUNT(sCheckPageOverrides)) - break; - if (sCheckPageOverrides[i + 1].idx != idx) - break; - if (!FlagGet(sCheckPageOverrides[i + 1].flag)) - break; - i++; - } + for (; i + 1 < ARRAY_COUNT(sCheckPageOverrides) && + sCheckPageOverrides[i + 1].idx == idx && + FlagGet(sCheckPageOverrides[i + 1].flag); i++); return sCheckPageOverrides[i].flavorTexts[offset]; } } From 5a70f99e16c5c2bb1bd32672dde581054990fae5 Mon Sep 17 00:00:00 2001 From: Kaz Date: Wed, 16 Sep 2020 21:39:44 -0400 Subject: [PATCH 006/116] battle_script_commands.c: Eliminate the last nonmatching (swapped expressions). --- src/battle_script_commands.c | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c2c4e6c41..14866bbca 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -4666,19 +4666,16 @@ static void Cmd_jumpifcantswitch(void) if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { - #ifndef NONMATCHING - asm("":::"r5"); - #endif // NONMATCHING if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) party = gEnemyParty; else party = gPlayerParty; - i = 0; + lastMonId = 0; if (gActiveBattler & 2) - i = 3; + lastMonId = 3; - for (lastMonId = i + 3; i < lastMonId; i++) + for (i = lastMonId; i < lastMonId + 3; i++) { if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&party[i], MON_DATA_IS_EGG) @@ -4687,7 +4684,7 @@ static void Cmd_jumpifcantswitch(void) break; } - if (i == lastMonId) + if (i == lastMonId + 3) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); else gBattlescriptCurrInstr += 6; @@ -4700,18 +4697,18 @@ static void Cmd_jumpifcantswitch(void) { party = gPlayerParty; - i = 0; + lastMonId = 0; if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE) - i = 3; + lastMonId = 3; } else { party = gEnemyParty; if (gActiveBattler == 1) - i = 0; + lastMonId = 0; else - i = 3; + lastMonId = 3; } } else @@ -4721,12 +4718,12 @@ static void Cmd_jumpifcantswitch(void) else party = gPlayerParty; - i = 0; + lastMonId = 0; if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE) - i = 3; + lastMonId = 3; } - for (lastMonId = i + 3; i < lastMonId; i++) + for (i = lastMonId; i < lastMonId + 3; i++) { if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&party[i], MON_DATA_IS_EGG) @@ -4735,7 +4732,7 @@ static void Cmd_jumpifcantswitch(void) break; } - if (i == lastMonId) + if (i == lastMonId + 3) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); else gBattlescriptCurrInstr += 6; @@ -4744,11 +4741,11 @@ static void Cmd_jumpifcantswitch(void) { party = gEnemyParty; - i = 0; + lastMonId = 0; if (gActiveBattler == B_POSITION_OPPONENT_RIGHT) - i = 3; + lastMonId = 3; - for (lastMonId = i + 3; i < lastMonId; i++) + for (i = lastMonId; i < lastMonId + 3; i++) { if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&party[i], MON_DATA_IS_EGG) @@ -4757,7 +4754,7 @@ static void Cmd_jumpifcantswitch(void) break; } - if (i == lastMonId) + if (i == lastMonId + 3) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); else gBattlescriptCurrInstr += 6; From c724f2b8099645daf85884895047e60e23368e4b Mon Sep 17 00:00:00 2001 From: Kaz Date: Wed, 16 Sep 2020 22:01:45 -0400 Subject: [PATCH 007/116] battle_ai_script_commands.c: -g fixes the fakematch. --- src/battle_ai_script_commands.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 032e5f407..5aef7a04f 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -616,8 +616,8 @@ static void RecordLastUsedMoveByTarget(void) { if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) break; - if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] != gLastMoves[gBattlerTarget] // HACK: This redundant condition is a hack to make the asm match. - && BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == MOVE_NONE) + + if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == MOVE_NONE) { BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] = gLastMoves[gBattlerTarget]; break; From 1404cf3330b49e217c317602194e52d9c49bb12b Mon Sep 17 00:00:00 2001 From: Kaz Date: Thu, 17 Sep 2020 18:24:11 -0400 Subject: [PATCH 008/116] field_player_avatar.c: Fix TryInterruptObjectEventSpecialAnim fakematch. --- include/global.fieldmap.h | 13 ++++--------- src/event_object_movement.c | 24 ++++++++++++------------ src/field_player_avatar.c | 10 +++------- src/overworld.c | 34 +++++++++++++++++++--------------- src/trainer_see.c | 12 ++++++------ 5 files changed, 44 insertions(+), 49 deletions(-) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 4598e87fa..2729d2a20 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -195,15 +195,10 @@ struct ObjectEvent /*0x0C*/ struct Coords16 initialCoords; /*0x10*/ struct Coords16 currentCoords; /*0x14*/ struct Coords16 previousCoords; - /*0x18*/ u8 facingDirection:4; // current direction? - /*0x18*/ u8 movementDirection:4; - /*0x19*/ union __attribute__((packed)) { - u8 as_byte; - struct __attribute__((packed)) { - u8 x:4; - u8 y:4; - } ALIGNED(1) as_nybbles; - } ALIGNED(1) range; + /*0x18*/ u16 facingDirection:4; // current direction? + u16 movementDirection:4; + u16 rangeX:4; + u16 rangeY:4; /*0x1A*/ u8 fieldEffectSpriteId; /*0x1B*/ u8 warpArrowSpriteId; /*0x1C*/ u8 movementActionId; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 0859fb32f..f97c9bfa0 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1232,8 +1232,8 @@ static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, objectEvent->previousCoords.y = y; objectEvent->currentElevation = template->elevation; objectEvent->previousElevation = template->elevation; - objectEvent->range.as_nybbles.x = template->movementRangeX; - objectEvent->range.as_nybbles.y = template->movementRangeY; + objectEvent->rangeX = template->movementRangeX; + objectEvent->rangeY = template->movementRangeY; objectEvent->trainerType = template->trainerType; objectEvent->mapNum = mapNum; //redundant, but needed to match objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId; @@ -1242,13 +1242,13 @@ static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, SetObjectEventDynamicGraphicsId(objectEvent); if (gRangedMovementTypes[objectEvent->movementType]) { - if (objectEvent->range.as_nybbles.x == 0) + if (objectEvent->rangeX == 0) { - objectEvent->range.as_nybbles.x++; + objectEvent->rangeX++; } - if (objectEvent->range.as_nybbles.y == 0) + if (objectEvent->rangeY == 0) { - objectEvent->range.as_nybbles.y++; + objectEvent->rangeY++; } } return objectEventId; @@ -4755,19 +4755,19 @@ static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *objectEv s16 top; s16 bottom; - if (objectEvent->range.as_nybbles.x != 0) + if (objectEvent->rangeX != 0) { - left = objectEvent->initialCoords.x - objectEvent->range.as_nybbles.x; - right = objectEvent->initialCoords.x + objectEvent->range.as_nybbles.x; + left = objectEvent->initialCoords.x - objectEvent->rangeX; + right = objectEvent->initialCoords.x + objectEvent->rangeX; if (left > x || right < x) { return TRUE; } } - if (objectEvent->range.as_nybbles.y != 0) + if (objectEvent->rangeY != 0) { - top = objectEvent->initialCoords.y - objectEvent->range.as_nybbles.y; - bottom = objectEvent->initialCoords.y + objectEvent->range.as_nybbles.y; + top = objectEvent->initialCoords.y - objectEvent->rangeY; + bottom = objectEvent->initialCoords.y + objectEvent->rangeY; if (top > y || bottom < y) { return TRUE; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index e907af5b9..a47ee4a93 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -343,10 +343,6 @@ void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys) static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *playerObjEvent, u8 direction) { - u8 r5 = direction; - u8 r6 = direction; - r6++; r6--; - if (ObjectEventIsMovementOverridden(playerObjEvent) && !ObjectEventClearHeldMovementIfFinished(playerObjEvent)) { @@ -358,13 +354,13 @@ static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *playerObjEve return TRUE; } - if (playerObjEvent->movementDirection != r5) + if (playerObjEvent->movementDirection != direction) { ObjectEventClearHeldMovement(playerObjEvent); return FALSE; } - if (!sub_808B028(r6)) + if (!sub_808B028(direction)) { ObjectEventClearHeldMovement(playerObjEvent); return FALSE; @@ -2086,7 +2082,7 @@ static void sub_808D094(u8 taskId) sub_808D074(object->facingDirection); data[1] = 0; data[2] = 1; - data[3] = (u16)(sprite->pos1.y + sprite->pos2.y) * 16; + data[3] = (u16)(sprite->pos1.y + sprite->pos2.y) << 4; sprite->pos2.y = 0; CameraObjectReset2(); object->fixedPriority = TRUE; diff --git a/src/overworld.c b/src/overworld.c index 2d798f2ec..ee70b3b92 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2909,7 +2909,11 @@ static void ZeroObjectEvent(struct ObjectEvent *objEvent) memset(objEvent, 0, sizeof(struct ObjectEvent)); } -static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4) +#define linkGender(obj) obj->singleMovementActive +// not even one can reference *byte* aligned bitfield members... +#define linkDirection(obj) ((u8*)obj)[offsetof(typeof(*obj), fieldEffectSpriteId) - 1] // -> rangeX + +static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 gender) { u8 objEventId = GetFirstInactiveObjectEventId(); struct LinkPlayerObjectEvent *linkPlayerObjEvent = &gLinkPlayerObjectEvents[linkPlayerId]; @@ -2924,8 +2928,8 @@ static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4) linkPlayerObjEvent->movementMode = MOVEMENT_MODE_FREE; objEvent->active = 1; - objEvent->singleMovementActive = a4; - objEvent->range.as_byte = 2; + linkGender(objEvent) = gender; + linkDirection(objEvent) = 2; objEvent->spriteId = 64; InitLinkPlayerObjectEventPos(objEvent, x, y); @@ -2948,7 +2952,7 @@ static void sub_80877DC(u8 linkPlayerId, u8 a2) { u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId; struct ObjectEvent *objEvent = &gObjectEvents[objEventId]; - objEvent->range.as_byte = a2; + linkDirection(objEvent) = a2; } } @@ -2983,7 +2987,7 @@ static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId) { u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId; struct ObjectEvent *objEvent = &gObjectEvents[objEventId]; - return objEvent->range.as_byte; + return linkDirection(objEvent); } static u8 GetLinkPlayerElevation(u8 linkPlayerId) @@ -3068,10 +3072,10 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer { s16 x, y; - objEvent->range.as_byte = FlipVerticalAndClearForced(a3, objEvent->range.as_byte); - ObjectEventMoveDestCoords(objEvent, objEvent->range.as_byte, &x, &y); + linkDirection(objEvent) = FlipVerticalAndClearForced(a3, linkDirection(objEvent)); + ObjectEventMoveDestCoords(objEvent, linkDirection(objEvent), &x, &y); - if (LinkPlayerDetectCollision(linkPlayerObjEvent->objEventId, objEvent->range.as_byte, x, y)) + if (LinkPlayerDetectCollision(linkPlayerObjEvent->objEventId, linkDirection(objEvent), x, y)) { return FALSE; } @@ -3086,7 +3090,7 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3) { - objEvent->range.as_byte = FlipVerticalAndClearForced(a3, objEvent->range.as_byte); + linkDirection(objEvent) = FlipVerticalAndClearForced(a3, linkDirection(objEvent)); return FALSE; } @@ -3100,7 +3104,7 @@ static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerObjectEvent { objEvent->directionSequenceIndex--; linkPlayerObjEvent->movementMode = MOVEMENT_MODE_FROZEN; - MoveCoords(objEvent->range.as_byte, &objEvent->initialCoords.x, &objEvent->initialCoords.y); + MoveCoords(linkDirection(objEvent), &objEvent->initialCoords.x, &objEvent->initialCoords.y); if (!objEvent->directionSequenceIndex) { ShiftStillObjectEventCoords(objEvent); @@ -3161,14 +3165,14 @@ static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion) { case VERSION_FIRE_RED: case VERSION_LEAF_GREEN: - objEvent->spriteId = AddPseudoObjectEvent(GetFRLGAvatarGraphicsIdByGender(objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0); + objEvent->spriteId = AddPseudoObjectEvent(GetFRLGAvatarGraphicsIdByGender(linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0); break; case VERSION_RUBY: case VERSION_SAPPHIRE: - objEvent->spriteId = AddPseudoObjectEvent(GetRSAvatarGraphicsIdByGender(objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0); + objEvent->spriteId = AddPseudoObjectEvent(GetRSAvatarGraphicsIdByGender(linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0); break; case VERSION_EMERALD: - objEvent->spriteId = AddPseudoObjectEvent(GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0); + objEvent->spriteId = AddPseudoObjectEvent(GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0); break; } @@ -3189,9 +3193,9 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite) sprite->oam.priority = ZCoordToPriority(objEvent->previousElevation); if (linkPlayerObjEvent->movementMode == MOVEMENT_MODE_FREE) - StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objEvent->range.as_byte)); + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(linkDirection(objEvent))); else - StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(objEvent->range.as_byte)); + StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(linkDirection(objEvent))); UpdateObjectEventSpriteVisibility(sprite, 0); if (objEvent->triggerGroundEffectsOnMove) diff --git a/src/trainer_see.c b/src/trainer_see.c index c37f37262..f2024e37c 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -377,15 +377,15 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 ap } // preserve mapobj_unk_19 before clearing. - unk19_temp = trainerObj->range.as_nybbles.x; - unk19b_temp = trainerObj->range.as_nybbles.y; - trainerObj->range.as_nybbles.x = 0; - trainerObj->range.as_nybbles.y = 0; + unk19_temp = trainerObj->rangeX; + unk19b_temp = trainerObj->rangeY; + trainerObj->rangeX = 0; + trainerObj->rangeY = 0; collision = GetCollisionAtCoords(trainerObj, x, y, direction); - trainerObj->range.as_nybbles.x = unk19_temp; - trainerObj->range.as_nybbles.y = unk19b_temp; + trainerObj->rangeX = unk19_temp; + trainerObj->rangeY = unk19b_temp; if (collision == 4) return approachDistance; From 847878eae9a9f0ac4a722c27c1cdf1a2d3ff1d67 Mon Sep 17 00:00:00 2001 From: Kaz Date: Sat, 19 Sep 2020 13:37:24 -0400 Subject: [PATCH 009/116] battle_gfx_sfx_util.c: Very annoying fakematch fix. daycare.c: -g eliminates the need for the brace hack. battle_transition.c: Fix Phase2_Ripple_Func2...? --- include/battle.h | 6 +++++- src/battle_anim_effects_3.c | 2 +- src/battle_gfx_sfx_util.c | 42 +++++++++++++++++------------------- src/battle_intro.c | 4 ++-- src/battle_main.c | 2 +- src/battle_transition.c | 5 +---- src/contest.c | 4 ++-- src/contest_painting.c | 8 +++---- src/contest_util.c | 8 +++---- src/daycare.c | 3 --- src/egg_hatch.c | 2 +- src/evolution_scene.c | 10 ++++----- src/pokeblock_feed.c | 2 +- src/pokemon.c | 4 ++-- src/pokemon_summary_screen.c | 8 +++---- src/trade.c | 8 +++---- 16 files changed, 57 insertions(+), 61 deletions(-) diff --git a/include/battle.h b/include/battle.h index 5a04c1eec..0f7a262ce 100644 --- a/include/battle.h +++ b/include/battle.h @@ -584,7 +584,11 @@ struct BattleSpriteData struct MonSpritesGfx { void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon - void* sprites[4]; + union + { + void* ptr[4]; + u8* byte[4]; + } sprites; struct SpriteTemplate templates[4]; struct SpriteFrameImage field_74[4][4]; u8 field_F4[0x80]; diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 58d335197..4ba2ad1f1 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -2291,7 +2291,7 @@ void AnimTask_TransformMon(u8 taskId) else position = GetBattlerPosition(gBattleAnimAttacker); - src = gMonSpritesGfxPtr->sprites[position] + (gBattleMonForms[gBattleAnimAttacker] << 11); + src = gMonSpritesGfxPtr->sprites.ptr[position] + (gBattleMonForms[gBattleAnimAttacker] << 11); dest = animBg.bgTiles; CpuCopy32(src, dest, 0x800); LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset); diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index e3e63f0e8..58b5d8228 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -6,6 +6,7 @@ #include "constants/battle_anim.h" #include "battle_interface.h" #include "main.h" +#include "dma3.h" #include "malloc.h" #include "graphics.h" #include "random.h" @@ -568,7 +569,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId) otId = GetMonData(mon, MON_DATA_OT_ID); position = GetBattlerPosition(battlerId); HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], - gMonSpritesGfxPtr->sprites[position], + gMonSpritesGfxPtr->sprites.ptr[position], species, currentPersonality); paletteOffset = 0x100 + battlerId * 16; @@ -624,13 +625,13 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId) if (sub_80688F8(1, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE) { HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], - gMonSpritesGfxPtr->sprites[position], + gMonSpritesGfxPtr->sprites.ptr[position], species, currentPersonality); } else { HandleLoadSpecialPokePic(&gMonBackPicTable[species], - gMonSpritesGfxPtr->sprites[position], + gMonSpritesGfxPtr->sprites.ptr[position], species, currentPersonality); } @@ -672,7 +673,7 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId) { u8 position = GetBattlerPosition(battlerId); DecompressPicFromTable_2(&gTrainerFrontPicTable[frontPicId], - gMonSpritesGfxPtr->sprites[position], + gMonSpritesGfxPtr->sprites.ptr[position], SPECIES_NONE); LoadCompressedSpritePalette(&gTrainerFrontPicPaletteTable[frontPicId]); } @@ -681,7 +682,7 @@ void DecompressTrainerBackPic(u16 backPicId, u8 battlerId) { u8 position = GetBattlerPosition(battlerId); DecompressPicFromTable_2(&gTrainerBackPicTable[backPicId], - gMonSpritesGfxPtr->sprites[position], + gMonSpritesGfxPtr->sprites.ptr[position], SPECIES_NONE); LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data, 0x100 + 16 * battlerId, 0x20); @@ -921,7 +922,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform otId = gContestResources->moveAnim->otId; HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies], - gMonSpritesGfxPtr->sprites[0], + gMonSpritesGfxPtr->sprites.ptr[0], targetSpecies, gContestResources->moveAnim->targetPersonality); } @@ -940,7 +941,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies], - gMonSpritesGfxPtr->sprites[position], + gMonSpritesGfxPtr->sprites.ptr[position], targetSpecies, gTransformedPersonalities[battlerAtk]); } @@ -950,13 +951,13 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[targetSpecies], - gMonSpritesGfxPtr->sprites[position], + gMonSpritesGfxPtr->sprites.ptr[position], targetSpecies, gTransformedPersonalities[battlerAtk]); } } - src = gMonSpritesGfxPtr->sprites[position]; + src = gMonSpritesGfxPtr->sprites.ptr[position]; dst = (void *)(OBJ_VRAM0 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32); DmaCopy32(3, src, dst, 0x800); paletteOffset = 0x100 + battlerAtk * 16; @@ -997,18 +998,15 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite) position = GetBattlerPosition(battlerId); if (IsContest()) - LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]); + LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites.ptr[position]); else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) - LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[position]); + LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites.ptr[position]); else - LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]); + LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites.ptr[position]); for (i = 1; i < 4; i++) { - u8 (*ptr)[4][0x800] = gMonSpritesGfxPtr->sprites[position]; - ptr++;ptr--; // Needed to match. - - DmaCopy32Defvars(3, (*ptr)[0], (*ptr)[i], 0x800); + Dma3CopyLarge32_(gMonSpritesGfxPtr->sprites.ptr[position], &gMonSpritesGfxPtr->sprites.byte[position][0x800 * i], 0x800); } palOffset = (battlerId * 16) + 0x100; @@ -1245,12 +1243,12 @@ void AllocateMonSpritesGfx(void) for (i = 0; i < MAX_BATTLERS_COUNT; i++) { - gMonSpritesGfxPtr->sprites[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000); + gMonSpritesGfxPtr->sprites.ptr[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000); *(gMonSpritesGfxPtr->templates + i) = gUnknown_08329D98[i]; for (j = 0; j < 4; j++) { - gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites[i] + (j * 0x800); + gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites.ptr[i] + (j * 0x800); gMonSpritesGfxPtr->field_74[i][j].size = 0x800; } @@ -1272,10 +1270,10 @@ void FreeMonSpritesGfx(void) FREE_AND_SET_NULL(gMonSpritesGfxPtr->barFontGfx); FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed); - gMonSpritesGfxPtr->sprites[0] = NULL; - gMonSpritesGfxPtr->sprites[1] = NULL; - gMonSpritesGfxPtr->sprites[2] = NULL; - gMonSpritesGfxPtr->sprites[3] = NULL; + gMonSpritesGfxPtr->sprites.ptr[0] = NULL; + gMonSpritesGfxPtr->sprites.ptr[1] = NULL; + gMonSpritesGfxPtr->sprites.ptr[2] = NULL; + gMonSpritesGfxPtr->sprites.ptr[3] = NULL; FREE_AND_SET_NULL(gMonSpritesGfxPtr); } diff --git a/src/battle_intro.c b/src/battle_intro.c index 6964428a3..36ff325f5 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -586,7 +586,7 @@ void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *ar int i, j; u8 battler = GetBattlerAtPosition(battlerPosition); int offset = tilesOffset; - CpuCopy16(gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE); + CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE); LoadBgTiles(bgId, arg5, 0x1000, tilesOffset); for (i = arg2; i < arg2 + 8; i++) { @@ -604,7 +604,7 @@ void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u { int i, j, offset; - DmaCopy16(3, gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE); + DmaCopy16(3, gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE); offset = (arg5 >> 5) - (arg7 << 9); for (i = arg1; i < arg1 + 8; i++) { diff --git a/src/battle_main.c b/src/battle_main.c index bf0fdc1aa..f0fedbd13 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -2762,7 +2762,7 @@ static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite) } else // Erase bottom part of the sprite to create a smooth illusion of mon falling down. { - u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBattlerPosition(sprite->sBattler)] + (gBattleMonForms[sprite->sBattler] << 11) + (sprite->data[3] << 8); + u8* dst = gMonSpritesGfxPtr->sprites.byte[GetBattlerPosition(sprite->sBattler)] + (gBattleMonForms[sprite->sBattler] << 11) + (sprite->data[3] << 8); for (i = 0; i < 0x100; i++) *(dst++) = 0; diff --git a/src/battle_transition.c b/src/battle_transition.c index 4a9d26303..43a90ac98 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -1956,10 +1956,7 @@ static bool8 Phase2_Ripple_Func2(struct Task *task) for (i = 0; i < 160; i++, r4 += r8) { s16 var = r4 >> 8; - - var++; - var--; - gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3); + gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var & 0xffff, r3); } if (++task->tData3 == 81) diff --git a/src/contest.c b/src/contest.c index 612d79562..61a159bc4 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3119,9 +3119,9 @@ static u8 CreateContestantSprite(u16 species, u32 otId, u32 personality, u32 ind species = SanitizeSpecies(species); if (index == gContestPlayerMonIndex) - HandleLoadSpecialPokePic_2(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites[0], species, personality); + HandleLoadSpecialPokePic_2(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites.ptr[0], species, personality); else - HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites[0], species, personality); + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites.ptr[0], species, personality); LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20); SetMultiuseSpriteTemplateToPokemon(species, 0); diff --git a/src/contest_painting.c b/src/contest_painting.c index ceef8a902..e903edbbb 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -368,19 +368,19 @@ static void InitContestMonPixels(u16 species, u8 whichSprite) { HandleLoadSpecialPokePic_DontHandleDeoxys( &gMonFrontPicTable[species], - gMonSpritesGfxPtr->sprites[1], + gMonSpritesGfxPtr->sprites.ptr[1], species, gContestPaintingWinner->personality); - _InitContestMonPixels(gMonSpritesGfxPtr->sprites[1], gContestPaintingMonPalette, (void *)gContestMonPixels); + _InitContestMonPixels(gMonSpritesGfxPtr->sprites.ptr[1], gContestPaintingMonPalette, (void *)gContestMonPixels); } else { HandleLoadSpecialPokePic_DontHandleDeoxys( &gMonBackPicTable[species], - gMonSpritesGfxPtr->sprites[0], + gMonSpritesGfxPtr->sprites.ptr[0], species, gContestPaintingWinner->personality); - _InitContestMonPixels(gMonSpritesGfxPtr->sprites[0], gContestPaintingMonPalette, (void *)gContestMonPixels); + _InitContestMonPixels(gMonSpritesGfxPtr->sprites.ptr[0], gContestPaintingMonPalette, (void *)gContestMonPixels); } } diff --git a/src/contest_util.c b/src/contest_util.c index ae76eda6b..dbc1e28ed 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -880,7 +880,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId) { HandleLoadSpecialPokePic_2( &gMonFrontPicTable[species], - gMonSpritesGfxPtr->sprites[1], + gMonSpritesGfxPtr->sprites.ptr[1], species, personality); } @@ -888,7 +888,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId) { HandleLoadSpecialPokePic_DontHandleDeoxys( &gMonFrontPicTable[species], - gMonSpritesGfxPtr->sprites[1], + gMonSpritesGfxPtr->sprites.ptr[1], species, personality); } @@ -2552,9 +2552,9 @@ void ShowContestEntryMonPic(void) gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = species; if (gSpecialVar_0x8006 == gContestPlayerMonIndex) - HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality); + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality); else - HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality); + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality); palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); LoadCompressedSpritePalette(palette); diff --git a/src/daycare.c b/src/daycare.c index 69043a513..1490d3742 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -615,10 +615,7 @@ static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves) for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++) { if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET) - { - // TODO: the curly braces around this if statement are required for a matching build. break; - } eggMoves[i] = gEggMoves[eggMoveIdx + i]; numEggMoves++; diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 87f0a13fd..f90441b68 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -434,7 +434,7 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc u16 species = GetMonData(mon, MON_DATA_SPECIES); u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], - gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], + gMonSpritesGfxPtr->sprites.ptr [(a0 * 2) + 1], species, pid); LoadCompressedSpritePalette(GetMonSpritePalStruct(mon)); *speciesLoc = species; diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 61065367c..faa6195b0 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -256,7 +256,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, trainerId = GetMonData(mon, MON_DATA_OT_ID); personality = GetMonData(mon, MON_DATA_PERSONALITY); DecompressPicFromTable_2(&gMonFrontPicTable[currSpecies], - gMonSpritesGfxPtr->sprites[1], + gMonSpritesGfxPtr->sprites.ptr[1], currSpecies); pokePal = GetMonSpritePalStructFromOtIdPersonality(currSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x110, 0x20); @@ -271,7 +271,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, // postEvo sprite DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve], - gMonSpritesGfxPtr->sprites[3], + gMonSpritesGfxPtr->sprites.ptr[3], speciesToEvolve); pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x120, 0x20); @@ -348,7 +348,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) gReservedSpritePaletteCount = 4; DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies], - gMonSpritesGfxPtr->sprites[3], + gMonSpritesGfxPtr->sprites.ptr[3], postEvoSpecies); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); @@ -420,7 +420,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) u32 trainerId = GetMonData(Mon, MON_DATA_OT_ID); u32 personality = GetMonData(Mon, MON_DATA_PERSONALITY); DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies], - gMonSpritesGfxPtr->sprites[3], + gMonSpritesGfxPtr->sprites.ptr[3], postEvoSpecies); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x120, 0x20); @@ -484,7 +484,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri sEvoStructPtr->preEvoSpriteID = preEvoSpriteID; DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve], - gMonSpritesGfxPtr->sprites[1], + gMonSpritesGfxPtr->sprites.ptr[1], speciesToEvolve); pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality); diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index 797771f80..32db6c717 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -646,7 +646,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) case 0: species = GetMonData(mon, MON_DATA_SPECIES2); personality = GetMonData(mon, MON_DATA_PERSONALITY); - HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality); + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality); sPokeblockFeed->loadGfxState++; break; case 1: diff --git a/src/pokemon.c b/src/pokemon.c index a0e655d1e..72fb4984c 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -5591,8 +5591,8 @@ u16 SpeciesToCryId(u16 species) void sub_806D544(u16 species, u32 personality, u8 *dest) { if (species == SPECIES_SPINDA - && dest != gMonSpritesGfxPtr->sprites[0] - && dest != gMonSpritesGfxPtr->sprites[2]) + && dest != gMonSpritesGfxPtr->sprites.ptr[0] + && dest != gMonSpritesGfxPtr->sprites.ptr[2]) { int i; for (i = 0; i < 4; i++) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index bfd849229..805f69542 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -3859,18 +3859,18 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) if (gMain.inBattle) { if (sub_80688F8(3, sMonSummaryScreen->curMonIndex)) - HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid); else - HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid); } else { if (gMonSpritesGfxPtr != NULL) { if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE) - HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid); else - HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid); } else { diff --git a/src/trade.c b/src/trade.c index 17aaba565..f48e453a8 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2725,9 +2725,9 @@ static void LoadTradeMonPic(u8 whichParty, u8 state) personality = GetMonData(mon, MON_DATA_PERSONALITY); if (whichParty == TRADE_PLAYER) - HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality); + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality); else - HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[whichParty * 2 + 1], species, personality); + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[whichParty * 2 + 1], species, personality); LoadCompressedSpritePalette(GetMonSpritePalStruct(mon)); sTradeData->monSpecies[whichParty] = species; @@ -3660,7 +3660,7 @@ static bool8 AnimateTradeSequenceCable(void) case 65: if (gSprites[sTradeData->unk_D3].callback == SpriteCallbackDummy) { - HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites[3], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]); + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites.ptr[3], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]); sTradeData->state++; } break; @@ -4175,7 +4175,7 @@ static bool8 AnimateTradeSequenceWireless(void) case 65: if (gSprites[sTradeData->unk_D3].callback == SpriteCallbackDummy) { - HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites[3], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]); + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites.ptr[3], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]); sTradeData->state++; } break; From 94711208a2088ec739f04a6bd78a983a76e7ec2e Mon Sep 17 00:00:00 2001 From: Kaz Date: Sat, 19 Sep 2020 17:38:54 -0400 Subject: [PATCH 010/116] menu_specialized.c: Fix fakematches. --- src/menu_specialized.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/menu_specialized.c b/src/menu_specialized.c index f9da20e11..495f9aa10 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -881,34 +881,31 @@ s32 GetBoxOrPartyMonData(u16 boxId, u16 monId, s32 request, u8 *dst) // Gets the name/gender/level string for the condition menu static u8 *GetConditionMenuMonString(u8 *dst, u16 boxId, u16 monId) { - u16 species, level, gender; + u16 box, mon, species, level, gender; struct BoxPokemon *boxMon; u8 *str; + box = boxId; + mon = monId; *(dst++) = EXT_CTRL_CODE_BEGIN; *(dst++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; *(dst++) = TEXT_COLOR_BLUE; *(dst++) = TEXT_COLOR_TRANSPARENT; *(dst++) = TEXT_COLOR_LIGHT_BLUE; - if (GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_EGG, NULL)) - { + if (GetBoxOrPartyMonData(box, mon, MON_DATA_IS_EGG, NULL)) return StringCopyPadded(dst, gText_EggNickname, 0, 12); - } - GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, dst); + GetBoxOrPartyMonData(box, mon, MON_DATA_NICKNAME, dst); StringGetEnd10(dst); - species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL); - if (boxId == TOTAL_BOXES_COUNT) // Party mon. + species = GetBoxOrPartyMonData(box, mon, MON_DATA_SPECIES, NULL); + if (box == TOTAL_BOXES_COUNT) // Party mon. { - level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); - gender = GetMonGender(&gPlayerParty[monId]); + level = GetMonData(&gPlayerParty[mon], MON_DATA_LEVEL); + gender = GetMonGender(&gPlayerParty[mon]); } else { - // Needed to match, feel free to remove. - boxId++, boxId--; - monId++, monId--; + boxMon = GetBoxedMonPtr(box, mon); - boxMon = GetBoxedMonPtr(boxId, monId); gender = GetBoxMonGender(boxMon); level = GetLevelFromBoxMonExp(boxMon); } @@ -981,6 +978,8 @@ static u8 *BufferConditionMenuSpacedStringN(u8 *dst, const u8 *src, s16 n) void GetConditionMenuMonNameAndLocString(u8 *locationDst, u8 *nameDst, u16 boxId, u16 monId, u16 partyId, u16 numMons, bool8 excludesCancel) { u16 i; + u16 box = boxId; + u16 mon = monId; // In this and the below 2 functions, numMons is passed as the number of menu selections (which includes Cancel) // To indicate that the Cancel needs to be subtracted they pass an additional bool @@ -990,21 +989,16 @@ void GetConditionMenuMonNameAndLocString(u8 *locationDst, u8 *nameDst, u16 boxId if (partyId != numMons) { - GetConditionMenuMonString(nameDst, boxId, monId); + GetConditionMenuMonString(nameDst, box, mon); locationDst[0] = EXT_CTRL_CODE_BEGIN; locationDst[1] = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; locationDst[2] = TEXT_COLOR_BLUE; locationDst[3] = TEXT_COLOR_TRANSPARENT; locationDst[4] = TEXT_COLOR_LIGHT_BLUE; - if (boxId == TOTAL_BOXES_COUNT) // Party mon. - { + if (box == TOTAL_BOXES_COUNT) // Party mon. BufferConditionMenuSpacedStringN(&locationDst[5], gText_InParty, 8); - } else - { - boxId++;boxId--; // Again...Someone fix this maybe? - BufferConditionMenuSpacedStringN(&locationDst[5], GetBoxNamePtr(boxId), 8); - } + BufferConditionMenuSpacedStringN(&locationDst[5], GetBoxNamePtr(box), 8); } else { From 32ae13f9b66ab1b01146e5746e9350f97f055526 Mon Sep 17 00:00:00 2001 From: Kaz Date: Sat, 19 Sep 2020 19:03:07 -0400 Subject: [PATCH 011/116] walda_phrase.c: Proper sub_81D9C90 match GET. --- src/walda_phrase.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/walda_phrase.c b/src/walda_phrase.c index 2b11add76..c9c7809d3 100644 --- a/src/walda_phrase.c +++ b/src/walda_phrase.c @@ -173,14 +173,12 @@ static void sub_81D9C90(u8 *array, s32 arg1, s32 arg2) { var1 = (array[0] & 0x80) >> 7; - var1++; var1--; // needed to match - for (j = arg1 - 1; j >= 0; j--) { - var2 = array[j] & 0x80; + var2 = (array[j] & 0x80) >> 7; array[j] <<= 1; array[j] |= var1; - var1 = var2 >> 7; + var1 = var2; } } } From 4b748d32ccd7c35716ea7c1b3267b0b0ac53bca4 Mon Sep 17 00:00:00 2001 From: luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> Date: Sat, 7 Nov 2020 18:21:17 -0500 Subject: [PATCH 012/116] Bugfix for ChooseMoveOrAction_Doubles. --- src/battle_ai_script_commands.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 4185f8017..2423cfe37 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -450,7 +450,16 @@ static u8 ChooseMoveOrAction_Doubles(void) { s32 i; s32 j; +#ifndef BUGFIX s32 scriptsToRun; +#else + // the value assigned to this is a u32 (aiFlags) + // this becomes relevant because aiFlags can have bit 31 set + // and scriptsToRun is shifted + // this never happens in the vanilla game because bit 31 is + // only set when it's the first battle + u32 scriptsToRun; +#endif s16 bestMovePointsForTarget[MAX_BATTLERS_COUNT]; s8 mostViableTargetsArray[MAX_BATTLERS_COUNT]; u8 actionOrMoveIndex[MAX_BATTLERS_COUNT]; From 8a780977a8dd4b6990dc09aa4f5e7cb3782123c7 Mon Sep 17 00:00:00 2001 From: luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> Date: Sun, 8 Nov 2020 20:13:21 -0500 Subject: [PATCH 013/116] Add missing files to .gitattributes. Only *.sed is required, all other files are listed to be explicit. --- .gitattributes | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitattributes b/.gitattributes index 4e8417c0c..1f2aa0c6d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10,6 +10,14 @@ Makefile text eol=lf *.inc text eol=lf *.sha1 text eol=lf *.json text eol=lf +*.sed text eol=lf +*.cpp text eol=lf +.gitattributes text eol=lf +.gitignore text eol=lf +*.hpp text eol=lf +*.md text eol=lf +*.ps1 text eol=crlf +*.yml text eol=lf *.png binary *.bin binary From 5029c909797ec6a8b89124c76b3c6d34440d099d Mon Sep 17 00:00:00 2001 From: luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> Date: Thu, 12 Nov 2020 11:04:38 -0500 Subject: [PATCH 014/116] Missing inc files in asm/*.s and data/*.s will raise an actual error message. --- Makefile | 35 ++++++++++++++++++++++++----------- tools/scaninc/scaninc.cpp | 2 +- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 0035eb626..1d16a7f29 100644 --- a/Makefile +++ b/Makefile @@ -136,6 +136,10 @@ C_ASM_OBJS := $(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o,$(C_ASM_SRCS)) ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s) ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) +# get all the data/*.s files EXCEPT the ones with specific rules +REGULAR_DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) +REGULAR_DATA_ASM_SRCS := $(filter-out $(DATA_ASM_SUBDIR)/maps.s $(DATA_ASM_SUBDIR)/map_events.s, $(REGULAR_DATA_ASM_SRCS)) + DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) @@ -275,23 +279,32 @@ endif $(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s $$(c_asm_dep) $(AS) $(ASFLAGS) -o $@ $< -ifeq ($(NODEP),1) -$(ASM_BUILDDIR)/%.o: asm_dep := -else -$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) -I "" $(ASM_SUBDIR)/$*.s) -endif +# The dep rules have to be explicit or else missing files won't be reported. +# As a side effect, they're evaluated immediately instead of when the rule is invoked. +# It doesn't look like $(shell) can be deferred so there might not be a better way. -$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep) + +ifeq ($(NODEP),1) +$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $(AS) $(ASFLAGS) -o $@ $< - -ifeq ($(NODEP),1) -$(DATA_ASM_BUILDDIR)/%.o: data_dep := else -$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) -I include -I "" $(DATA_ASM_SUBDIR)/$*.s) +define ASM_DEP +$1: $2 $$(shell $(SCANINC) -I include -I "" $2) + $$(AS) $$(ASFLAGS) -o $$@ $$< +endef +$(foreach src, $(ASM_SRCS), $(eval $(call ASM_DEP,$(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o, $(src)),$(src)))) endif -$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) +ifeq ($(NODEP),1) +$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@ +else +define DATA_ASM_DEP +$1: $2 $$(shell $(SCANINC) -I include -I "" $2) + $$(PREPROC) $$< charmap.txt | $$(CPP) -I include | $$(AS) $$(ASFLAGS) -o $$@ +endef +$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call DATA_ASM_DEP,$(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o, $(src)),$(src)))) +endif $(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s $(AS) $(ASFLAGS) -I sound -o $@ $< diff --git a/tools/scaninc/scaninc.cpp b/tools/scaninc/scaninc.cpp index a3e40c5d9..dcb16c0e7 100644 --- a/tools/scaninc/scaninc.cpp +++ b/tools/scaninc/scaninc.cpp @@ -108,7 +108,7 @@ int main(int argc, char **argv) break; } } - if (!exists && file.FileType() == SourceFileType::Asm) + if (!exists && (file.FileType() == SourceFileType::Asm || file.FileType() == SourceFileType::Inc)) { path = include; } From 3f157b5293b54466c5f4d54b600e9097163fc241 Mon Sep 17 00:00:00 2001 From: ExpoSeed <43502820+ExpoSeed@users.noreply.github.com> Date: Sun, 15 Nov 2020 16:24:19 -0600 Subject: [PATCH 015/116] Document bugged IV inheritance difference --- src/daycare.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/daycare.c b/src/daycare.c index a438c8e85..369fe14e8 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -548,7 +548,12 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) { // Randomly pick an IV from the available list and stop from being chosen again. selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)]; - RemoveIVIndexFromList(availableIVs, i); + // BUG: Instead of removing the IV that was just picked (like in RS and FRLG), this + // removes position 0 (HP) then position 1 (DEF), then position 2. This is why HP and DEF + // have a lower chance to be inherited in Emerald and why the IV picked for inheritance can + // be repeated. Uncomment the remove the existing expression to get the intended behavior and + // to match the other Gen 3 games. This bug was also in DP and never fixed until Platinum. + RemoveIVIndexFromList(availableIVs, i /*selectedIvs[i]*/); } // Determine which parent each of the selected IVs should inherit from. From e5f043ff72d7652f63ee574d9f0acf8f1a8ddbe7 Mon Sep 17 00:00:00 2001 From: ExpoSeed <43502820+ExpoSeed@users.noreply.github.com> Date: Sun, 15 Nov 2020 16:28:09 -0600 Subject: [PATCH 016/116] Fix grammar --- src/daycare.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/daycare.c b/src/daycare.c index 369fe14e8..fd6ed3a50 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -551,8 +551,8 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) // BUG: Instead of removing the IV that was just picked (like in RS and FRLG), this // removes position 0 (HP) then position 1 (DEF), then position 2. This is why HP and DEF // have a lower chance to be inherited in Emerald and why the IV picked for inheritance can - // be repeated. Uncomment the remove the existing expression to get the intended behavior and - // to match the other Gen 3 games. This bug was also in DP and never fixed until Platinum. + // be repeated. Uncomment the inline comment and remove the existing expression to get the + // intended behavior and to match the other Gen 3 games. RemoveIVIndexFromList(availableIVs, i /*selectedIvs[i]*/); } From cad5b57b42b400a7fee048a36a324947b0a12988 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 16 Nov 2020 15:36:38 -0300 Subject: [PATCH 017/116] sanityIsBagEgg -> sanityIsBadEgg Fixed a typo. Lunos#4026 --- src/pokemon_storage_system.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 6efca2562..eb288c978 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -6777,11 +6777,11 @@ static void SetCursorMonData(void *pokemon, u8 mode) { u8 *txtPtr; u16 gender; - bool8 sanityIsBagEgg; + bool8 sanityIsBadEgg; sPSSData->cursorMonItem = 0; gender = MON_MALE; - sanityIsBagEgg = FALSE; + sanityIsBadEgg = FALSE; if (mode == MODE_PARTY) { struct Pokemon *mon = (struct Pokemon *)pokemon; @@ -6789,8 +6789,8 @@ static void SetCursorMonData(void *pokemon, u8 mode) sPSSData->cursorMonSpecies = GetMonData(mon, MON_DATA_SPECIES2); if (sPSSData->cursorMonSpecies != SPECIES_NONE) { - sanityIsBagEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG); - if (sanityIsBagEgg) + sanityIsBadEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG); + if (sanityIsBadEgg) sPSSData->cursorMonIsEgg = TRUE; else sPSSData->cursorMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG); @@ -6813,8 +6813,8 @@ static void SetCursorMonData(void *pokemon, u8 mode) if (sPSSData->cursorMonSpecies != SPECIES_NONE) { u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID); - sanityIsBagEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG); - if (sanityIsBagEgg) + sanityIsBadEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG); + if (sanityIsBadEgg) sPSSData->cursorMonIsEgg = TRUE; else sPSSData->cursorMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG); @@ -6846,7 +6846,7 @@ static void SetCursorMonData(void *pokemon, u8 mode) } else if (sPSSData->cursorMonIsEgg) { - if (sanityIsBagEgg) + if (sanityIsBadEgg) StringCopyPadded(sPSSData->cursorMonNickText, sPSSData->cursorMonNick, CHAR_SPACE, 5); else StringCopyPadded(sPSSData->cursorMonNickText, gText_EggNickname, CHAR_SPACE, 8); From 6f91f7e0e341ec410f0d231625cdb7aea1cb0359 Mon Sep 17 00:00:00 2001 From: kageru Date: Tue, 17 Nov 2020 17:21:34 +0100 Subject: [PATCH 018/116] Use more constants in Battle Tower code --- include/global.h | 3 ++- src/battle_tower.c | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/include/global.h b/include/global.h index 85166e0ec..4ccd2be50 100644 --- a/include/global.h +++ b/include/global.h @@ -328,11 +328,12 @@ struct BattleDomeTrainer }; #define DOME_TOURNAMENT_TRAINERS_COUNT 16 +#define BATTLE_TOWER_RECORD_COUNT 5 struct BattleFrontier { /*0x64C*/ struct EmeraldBattleTowerRecord towerPlayer; - /*0x738*/ struct EmeraldBattleTowerRecord towerRecords[5]; // From record mixing. + /*0x738*/ struct EmeraldBattleTowerRecord towerRecords[BATTLE_TOWER_RECORD_COUNT]; // From record mixing. /*0xBEB*/ struct BattleTowerInterview towerInterview; /*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer; /*0xCA8*/ u8 challengeStatus; diff --git a/src/battle_tower.c b/src/battle_tower.c index b7d03a5bc..6fc0cd5be 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -999,7 +999,7 @@ static bool8 ChooseSpecialBattleTowerTrainer(void) return FALSE; winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode); - for (i = 0; i < 5; i++) + for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++) { u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]); u32 recordHasData = 0; @@ -1010,7 +1010,7 @@ static bool8 ChooseSpecialBattleTowerTrainer(void) checksum += record[j]; } validMons = 0; - for (j = 0; j < 4; j++) + for (j = 0; j < MAX_FRONTIER_PARTY_SIZE; j++) { if (gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species != 0 && gSaveBlock2Ptr->frontier.towerRecords[i].party[j].level <= GetFrontierEnemyMonLevel(lvlMode)) @@ -1324,7 +1324,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) struct EmeraldBattleTowerRecord *newRecord = newRecordEm; // Needed to match. // Find a record slot of the same player and replace it. - for (i = 0; i < 5; i++) + for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++) { k = 0; for (j = 0; j < TRAINER_ID_LENGTH; j++) @@ -1350,19 +1350,19 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) if (k == PLAYER_NAME_LENGTH) break; } - if (i < 5) + if (i < BATTLE_TOWER_RECORD_COUNT) { gSaveBlock2Ptr->frontier.towerRecords[i] = *newRecord; return; } // Find an empty record slot. - for (i = 0; i < 5; i++) + for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++) { if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak == 0) break; } - if (i < 5) + if (i < BATTLE_TOWER_RECORD_COUNT) { gSaveBlock2Ptr->frontier.towerRecords[i] = *newRecord; return; @@ -1373,7 +1373,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) slotIds[0] = 0; slotsCount++; - for (i = 1; i < 5; i++) + for (i = 1; i < BATTLE_TOWER_RECORD_COUNT; i++) { for (j = 0; j < slotsCount; j++) { @@ -2240,7 +2240,7 @@ static void GetRecordMixFriendMultiPartnerParty(u16 trainerId) u16 species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL); count = 0; - for (i = 0; i < 4; i++) + for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) { if (gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != species1 && gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != species2 @@ -2362,7 +2362,7 @@ static void LoadMultiPartnerCandidatesData(void) } r10 = 0; - for (i = 0; i < 5; i++) + for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++) { u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]); u32 recordHasData = 0; @@ -2379,7 +2379,7 @@ static void LoadMultiPartnerCandidatesData(void) && gSaveBlock2Ptr->frontier.towerRecords[i].checksum == checksum) { k = 0; - for (j = 0; j < 4; j++) + for (j = 0; j < MAX_FRONTIER_PARTY_SIZE; j++) { if (species1 != gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species && species2 != gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species @@ -2682,7 +2682,7 @@ static void ValidateBattleTowerRecordChecksums(void) if (gSaveBlock2Ptr->frontier.towerPlayer.checksum != checksum) ClearBattleTowerRecord(&gSaveBlock2Ptr->frontier.towerPlayer); - for (i = 0; i < 5; i++) + for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++) { record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]); checksum = 0; From 68b53c743770ae34428b29a5eb988e3e58c82285 Mon Sep 17 00:00:00 2001 From: luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> Date: Wed, 18 Nov 2020 20:53:42 -0500 Subject: [PATCH 019/116] Optimize Makefile, also add *.sna to gitignore. --- .gitignore | 1 + Makefile | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ebf507247..38c3e02d6 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ porymap.project.cfg .vscode/ *.a .fuse_hidden* +*.sna diff --git a/Makefile b/Makefile index 1d16a7f29..cf569de80 100644 --- a/Makefile +++ b/Makefile @@ -137,8 +137,7 @@ ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s) ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) # get all the data/*.s files EXCEPT the ones with specific rules -REGULAR_DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) -REGULAR_DATA_ASM_SRCS := $(filter-out $(DATA_ASM_SUBDIR)/maps.s $(DATA_ASM_SUBDIR)/map_events.s, $(REGULAR_DATA_ASM_SRCS)) +REGULAR_DATA_ASM_SRCS := $(filter-out $(DATA_ASM_SUBDIR)/maps.s $(DATA_ASM_SUBDIR)/map_events.s, $(wildcard $(DATA_ASM_SUBDIR)/*.s)) DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) @@ -301,6 +300,7 @@ $(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s else define DATA_ASM_DEP $1: $2 $$(shell $(SCANINC) -I include -I "" $2) + #echo "hello" $$(PREPROC) $$< charmap.txt | $$(CPP) -I include | $$(AS) $$(ASFLAGS) -o $$@ endef $(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call DATA_ASM_DEP,$(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o, $(src)),$(src)))) From 70b6e05a47fc2e38d4f90cc2145f4d3d23a92793 Mon Sep 17 00:00:00 2001 From: luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> Date: Wed, 18 Nov 2020 21:31:04 -0500 Subject: [PATCH 020/116] Remove useless comment. --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index cf569de80..07143e4ad 100644 --- a/Makefile +++ b/Makefile @@ -300,7 +300,6 @@ $(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s else define DATA_ASM_DEP $1: $2 $$(shell $(SCANINC) -I include -I "" $2) - #echo "hello" $$(PREPROC) $$< charmap.txt | $$(CPP) -I include | $$(AS) $$(ASFLAGS) -o $$@ endef $(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call DATA_ASM_DEP,$(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o, $(src)),$(src)))) From 99d9a36860934a547cbc812c7aa3dc57cdb21be6 Mon Sep 17 00:00:00 2001 From: Evan Date: Thu, 19 Nov 2020 10:35:37 -0700 Subject: [PATCH 021/116] add totem boosts --- asm/macros/battle_script.inc | 5 ++ asm/macros/event.inc | 58 ++++++++++++++++++++++ data/battle_anim_scripts.s | 31 ++++++++++++ data/battle_scripts_1.s | 20 ++++++++ data/specials.inc | 1 + include/battle.h | 7 +++ include/battle_scripts.h | 2 + include/constants/battle_anim.h | 1 + include/constants/battle_script_commands.h | 1 + include/constants/battle_string_ids.h | 3 +- src/battle_anim_effects_1.c | 33 ++++++++++++ src/battle_main.c | 33 ++++++++++++ src/battle_message.c | 2 + src/battle_script_commands.c | 34 +++++++++++++ 14 files changed, 230 insertions(+), 1 deletion(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 41a51efeb..d7d85ff6e 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1755,6 +1755,11 @@ various \battler, VARIOUS_JUMP_IF_ABSENT .4byte \ptr .endm + + .macro gettotemboost ptr:req + various BS_ATTACKER, VARIOUS_TOTEM_BOOST + .4byte \ptr + .endm @ helpful macros .macro setstatchanger stat:req, stages:req, down:req diff --git a/asm/macros/event.inc b/asm/macros/event.inc index d0600a97b..62f59ecd9 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1784,3 +1784,61 @@ setfieldeffectargument 2, \priority dofieldeffect FLDEFF_SPARKLE .endm + + .macro settotemboost battler:req, atk=0,def=0,speed=0,spatk=0,spdef=0,acc=0,evas=0 + setvar VAR_0x8000, \battler + setvar VAR_0x8001, \atk + setvar VAR_0x8002, \def + setvar VAR_0x8003, \speed + setvar VAR_0x8004, \spatk + setvar VAR_0x8005, \spdef + setvar VAR_0x8006, \acc + setvar VAR_0x8007, \evas + special SetTotemBoost + .endm + + @ useful totem boost macros + .macro totemboost_atk1 battler:req + settotemboost \battler, 1 + .endm + .macro totemboost_def1 battler:req + settotemboost \battler, 0, 1 + .endm + .macro totemboost_speed1 battler:req + settotemboost \battler, 0, 0, 1 + .endm + .macro totemboost_spatk1 battler:req + settotemboost \battler, 0, 0, 0, 1 + .endm + .macro totemboost_spdef1 battler:req + settotemboost \battler, 0, 0, 0, 0, 1 + .endm + .macro totemboost_acc1 battler:req + settotemboost \battler, 0, 0, 0, 0, 0, 1 + .endm + .macro totemboost_evas1 battler:req + settotemboost \battler, 0, 0, 0, 0, 0, 0, 1 + .endm + + .macro totemboost_atk2 battler:req + settotemboost \battler, 2 + .endm + .macro totemboost_def2 battler:req + settotemboost \battler, 0, 2 + .endm + .macro totemboost_speed2 battler:req + settotemboost \battler, 0, 0, 2 + .endm + .macro totemboost_spatk2 battler:req + settotemboost \battler, 0, 0, 0, 2 + .endm + .macro totemboost_spdef2 battler:req + settotemboost \battler, 0, 0, 0, 0, 2 + .endm + .macro totemboost_acc2 battler:req + settotemboost \battler, 0, 0, 0, 0, 0, 2 + .endm + .macro totemboost_evas2 battler:req + settotemboost \battler, 0, 0, 0, 0, 0, 0, 2 + .endm + diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 70ed22c9e..4675451e5 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -815,6 +815,7 @@ gBattleAnims_General:: .4byte General_IllusionOff .4byte General_FormChange .4byte General_SlideOffScreen + .4byte General_TotemFlare .align 2 gBattleAnims_Special:: @@ -24320,6 +24321,36 @@ General_TerrainElectric: General_TerrainPsychic: end +General_TotemFlare:: + loadspritegfx ANIM_TAG_FOCUS_ENERGY + loadspritegfx ANIM_TAG_WHIP_HIT @green color + loadspritegfx ANIM_TAG_SWEAT_BEAD @blue color + loadspritegfx ANIM_TAG_PAW_PRINT @yellow color + monbg ANIM_ATTACKER + setblends 0x80c + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_ATK 0x0 0x6 0x0 0xb 0x1f + call RainbowEndureEffect + call RainbowEndureEffect + call RainbowEndureEffect + call RainbowEndureEffect + call RainbowEndureEffect + waitforvisualfinish + blendoff + clearmonbg ANIM_ATTACKER + end + +RainbowEndureEffect: + launchtemplate gBlueEndureEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2 + delay 0x3 + launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 @Red Buff + delay 0x3 + launchtemplate gGreenEndureEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2 + delay 0x3 + launchtemplate gYellowEndureEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3 + delay 0x3 + return + SnatchMoveTrySwapFromSubstitute: createvisualtask AnimTask_IsAttackerBehindSubstitute, 2 jumprettrue SnatchMoveSwapSubstituteForMon diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 504896d63..5a52e0f64 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7688,3 +7688,23 @@ BattleScript_PrintPlayerForfeitedLinkBattle:: atk57 waitmessage 0x40 end2 + + +BattleScript_TotemFlaredToLife:: + playanimation BS_ATTACKER, B_ANIM_TOTEM_FLARE, NULL + printstring STRINGID_AURAFLAREDTOLIFE + waitmessage 0x40 + goto BattleScript_ApplyTotemVarBoost + +BattleScript_TotemVar:: + gettotemboost BattleScript_ApplyTotemVarBoost +BattleScript_TotemVarEnd: + end2 +BattleScript_ApplyTotemVarBoost: + statbuffchange STAT_BUFF_ALLOW_PTR, BattleScript_TotemVarEnd + setgraphicalstatchangevalues + playanimation BS_SCRIPTING, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 +BattleScript_TotemVarPrintStatMsg: + printfromtable gStatUpStringIds + waitmessage 0x40 + goto BattleScript_TotemVar @loop until stats bitfield is empty diff --git a/data/specials.inc b/data/specials.inc index 77e7d5c0a..fe596a0f0 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -535,3 +535,4 @@ gSpecials:: @ 81DBA64 def_special RemoveRecordsWindow def_special CloseDeptStoreElevatorWindow def_special TrySetBattleTowerLinkType + def_special SetTotemBoost diff --git a/include/battle.h b/include/battle.h index 13fe13171..53324b31b 100644 --- a/include/battle.h +++ b/include/battle.h @@ -709,6 +709,12 @@ struct MonSpritesGfx u16 *buffer; }; +struct TotemBoost +{ + u8 stats; //bitfield for each battle stat + u8 statChanges[NUM_BATTLE_STATS - 1]; //highest bit is decrease +}; /* size = 8 */ + // All battle variables are declared in battle_main.c extern u16 gBattle_BG0_X; extern u16 gBattle_BG0_Y; @@ -817,6 +823,7 @@ extern u32 gFieldStatuses; extern struct FieldTimer gFieldTimers; extern u8 gBattlerAbility; extern u16 gPartnerSpriteId; +extern struct TotemBoost gTotemBoosts[MAX_BATTLERS_COUNT]; extern void (*gPreBattleCallback1)(void); extern void (*gBattleMainFunc)(void); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 84a7ba2ef..df4b6db5a 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -349,5 +349,7 @@ extern const u8 BattleScript_EmergencyExitNoPopUp[]; extern const u8 BattleScript_EmergencyExitWild[]; extern const u8 BattleScript_EmergencyExitWildNoPopUp[]; extern const u8 BattleScript_CheekPouchActivates[]; +extern const u8 BattleScript_TotemVar[]; +extern const u8 BattleScript_TotemFlaredToLife[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 871aa1e35..5596f28bf 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -525,6 +525,7 @@ #define B_ANIM_ILLUSION_OFF 0x1C #define B_ANIM_FORM_CHANGE 0x1D #define B_ANIM_SLIDE_OFFSCREEN 0x1E // for Emergency Exit +#define B_ANIM_TOTEM_FLARE 0x1F // special animations table #define B_ANIM_LVL_UP 0x0 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index b081907ec..45f679d62 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -165,6 +165,7 @@ #define VARIOUS_SET_LAST_USED_ITEM 99 #define VARIOUS_PARALYZE_TYPE_IMMUNITY 100 #define VARIOUS_JUMP_IF_ABSENT 101 +#define VARIOUS_TOTEM_BOOST 102 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 3c6d74b48..68d8fbc30 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -551,7 +551,8 @@ #define STRINGID_CLOAKEDINAFREEZINGLIGHT 547 #define STRINGID_STATWASNOTLOWERED 548 #define STRINGID_FERVENTWISHREACHED 549 +#define STRINGID_AURAFLAREDTOLIFE 550 -#define BATTLESTRINGS_COUNT 550 +#define BATTLESTRINGS_COUNT 551 #endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index b241e7d90..6b528c71e 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -1926,6 +1926,39 @@ const struct SpriteTemplate gEndureEnergySpriteTemplate = .callback = AnimEndureEnergy, }; +const struct SpriteTemplate gBlueEndureEnergySpriteTemplate = +{ + .tileTag = ANIM_TAG_FOCUS_ENERGY, + .paletteTag = ANIM_TAG_SWEAT_BEAD, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gEndureEnergyAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEndureEnergy, +}; + +const struct SpriteTemplate gGreenEndureEnergySpriteTemplate = +{ + .tileTag = ANIM_TAG_FOCUS_ENERGY, + .paletteTag = ANIM_TAG_WHIP_HIT, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gEndureEnergyAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEndureEnergy, +}; + +const struct SpriteTemplate gYellowEndureEnergySpriteTemplate = +{ + .tileTag = ANIM_TAG_FOCUS_ENERGY, + .paletteTag = ANIM_TAG_PAW_PRINT, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = gEndureEnergyAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEndureEnergy, +}; + const union AnimCmd gSharpenSphereAnimCmds[] = { ANIMCMD_FRAME(0, 18), diff --git a/src/battle_main.c b/src/battle_main.c index 793a37022..3e9228997 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -228,6 +228,7 @@ EWRAM_DATA u32 gFieldStatuses = 0; EWRAM_DATA struct FieldTimer gFieldTimers = {0}; EWRAM_DATA u8 gBattlerAbility = 0; EWRAM_DATA u16 gPartnerSpriteId = 0; +EWRAM_DATA struct TotemBoost gTotemBoosts[MAX_BATTLERS_COUNT] = {0}; // IWRAM common vars void (*gPreBattleCallback1)(void); @@ -3500,6 +3501,18 @@ static void TryDoEventsBeforeFirstTurn(void) if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gBattlerByTurnOrder[gBattleStruct->switchInItemsCounter++], FALSE)) return; } + // Totem + for (i = 0; i < gBattlersCount; i++) + { + if (gTotemBoosts[i].stats != 0) + { + gBattlerAttacker = i; + BattleScriptExecute(BattleScript_TotemVar); + return; + } + } + memset(gTotemBoosts, 0, sizeof(gTotemBoosts)); //erase all totem boosts just to be safe + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { *(gBattleStruct->monToSwitchIntoId + i) = PARTY_SIZE; @@ -5049,3 +5062,23 @@ void SetTypeBeforeUsingMove(u16 move, u8 battlerAtk) gSpecialStatuses[battlerAtk].gemBoost = 1; } } + +// special to set a field's totem boost(s) +// inputs: +// var8000: battlerId +// var8001 - var8007: stat changes +void SetTotemBoost(void) +{ + u8 battlerId = gSpecialVar_0x8000; + u8 i; + + for (i = 0; i < (NUM_BATTLE_STATS - 1); i++) + { + if (*(&gSpecialVar_0x8001 + i)) + { + gTotemBoosts[battlerId].stats |= (1 << i); + gTotemBoosts[battlerId].statChanges[i] = *(&gSpecialVar_0x8001 + i); + gTotemBoosts[battlerId].stats |= 0x80; //used as a flag for the "totem flared to life" script + } + } +} diff --git a/src/battle_message.c b/src/battle_message.c index 9e86d2774..dbbc89983 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -678,6 +678,7 @@ static const u8 sText_NoOneWillBeAbleToRun[] = _("No one will be able to run awa static const u8 sText_DestinyKnotActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} fell in love\nfrom the {B_LAST_ITEM}!"); static const u8 sText_CloakedInAFreezingLight[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin a freezing light!"); static const u8 sText_StatWasNotLowered[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwas not lowered!"); +static const u8 sText_AuraFlaredToLife[] = _("{B_DEF_NAME_WITH_PREFIX}'s aura flared to life!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { @@ -1219,6 +1220,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_GRASSYTERRAINHEALS - 12] = sText_GrassyTerrainHeals, [STRINGID_ELECTRICTERRAINPREVENTS - 12] = sText_ElectricTerrainPreventsSleep, [STRINGID_PSYCHICTERRAINPREVENTS - 12] = sText_PsychicTerrainPreventsPriority, + [STRINGID_AURAFLAREDTOLIFE - 12] = sText_AuraFlaredToLife, }; const u16 gTerrainStringIds[] = diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index d0811e77d..adf072636 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8300,6 +8300,40 @@ static void Cmd_various(void) gBattlescriptCurrInstr += 7; } return; + case VARIOUS_TOTEM_BOOST: + gActiveBattler = gBattlerAttacker; + if (gTotemBoosts[gActiveBattler].stats == 0) + { + gBattlescriptCurrInstr += 7; //stats done, exit + } + else + { + for (i = 0; i < (NUM_BATTLE_STATS - 1); i++) + { + if (gTotemBoosts[gActiveBattler].stats & (1 << i)) + { + bool8 negative = (gTotemBoosts[gActiveBattler].statChanges[i] & 0x80) ? TRUE : FALSE; + u8 change = gTotemBoosts[gActiveBattler].statChanges[i] & 0x7F; + + gTotemBoosts[gActiveBattler].stats &= ~(1 << i); + SET_STATCHANGER(i + 1, change, negative); + gBattleScripting.battler = gActiveBattler; + gBattlerTarget = gActiveBattler; + if (gTotemBoosts[gActiveBattler].stats & 0x80) + { + gTotemBoosts[gActiveBattler].stats &= ~0x80; + gBattlescriptCurrInstr = BattleScript_TotemFlaredToLife; + } + else + { + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); //do boost + } + return; + } + } + gBattlescriptCurrInstr += 7; //exit if loop failed (failsafe) + } + return; } gBattlescriptCurrInstr += 3; From 1c398c3d4bf9437ba442c41660318e3dc6dba308 Mon Sep 17 00:00:00 2001 From: Evan Date: Thu, 19 Nov 2020 10:37:15 -0700 Subject: [PATCH 022/116] totem format fixes --- asm/macros/battle_script.inc | 10 +++++----- data/battle_anim_scripts.s | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index d7d85ff6e..29f901acb 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1755,11 +1755,11 @@ various \battler, VARIOUS_JUMP_IF_ABSENT .4byte \ptr .endm - - .macro gettotemboost ptr:req - various BS_ATTACKER, VARIOUS_TOTEM_BOOST - .4byte \ptr - .endm + + .macro gettotemboost ptr:req + various BS_ATTACKER, VARIOUS_TOTEM_BOOST + .4byte \ptr + .endm @ helpful macros .macro setstatchanger stat:req, stages:req, down:req diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 4675451e5..b9ce86481 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -815,7 +815,7 @@ gBattleAnims_General:: .4byte General_IllusionOff .4byte General_FormChange .4byte General_SlideOffScreen - .4byte General_TotemFlare + .4byte General_TotemFlare .align 2 gBattleAnims_Special:: From bf65c1fb2505cad8c29ee4beceb1f41eab3151d2 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 23 Nov 2020 14:12:07 -0500 Subject: [PATCH 023/116] Name object event pals/tags --- .../{30.pal => birth_island_stone.pal} | 0 .../palettes/{08.pal => brendan.pal} | 0 .../{09.pal => brendan_reflection.pal} | 0 .../{10.pal => bridge_reflection.pal} | 0 .../palettes/{20.pal => cable_car.pal} | 0 .../palettes/{29.pal => deoxys.pal} | 0 .../palettes/{16.pal => enemy_zigzagoon.pal} | 0 .../palettes/{24.pal => groudon.pal} | 0 .../{25.pal => groudon_reflection.pal} | 0 .../palettes/{31.pal => ho_oh.pal} | 0 .../palettes/{22.pal => kyogre.pal} | 0 .../{23.pal => kyogre_reflection.pal} | 0 .../palettes/{32.pal => lugia.pal} | 0 .../palettes/{17.pal => may.pal} | 0 .../palettes/{18.pal => may_reflection.pal} | 0 .../palettes/{19.pal => moving_box.pal} | 0 .../palettes/{00.pal => npc_1.pal} | 0 .../palettes/{04.pal => npc_1_reflection.pal} | 0 .../palettes/{01.pal => npc_2.pal} | 0 .../palettes/{05.pal => npc_2_reflection.pal} | 0 .../palettes/{02.pal => npc_3.pal} | 0 .../palettes/{06.pal => npc_3_reflection.pal} | 0 .../palettes/{03.pal => npc_4.pal} | 0 .../palettes/{07.pal => npc_4_reflection.pal} | 0 .../{11.pal => player_underwater.pal} | 0 .../palettes/{27.pal => poochyena.pal} | 0 .../palettes/{12.pal => quinty_plump.pal} | 0 .../{13.pal => quinty_plump_reflection.pal} | 0 .../palettes/{28.pal => red_leaf.pal} | 0 .../{33.pal => ruby_sapphire_brendan.pal} | 0 .../{34.pal => ruby_sapphire_may.pal} | 0 .../palettes/{21.pal => ss_tidal.pal} | 0 .../palettes/{26.pal => submarine_shadow.pal} | 0 .../palettes/{14.pal => truck.pal} | 0 .../palettes/{15.pal => vigoroth.pal} | 0 include/global.fieldmap.h | 4 +- src/contest_util.c | 16 +- src/data/field_effects/field_effect_objects.h | 2 +- .../object_events/object_event_graphics.h | 128 ++--- .../object_event_graphics_info.h | 490 +++++++++--------- src/event_object_movement.c | 473 ++++++++--------- src/field_effect_helpers.c | 10 +- src/field_specials.c | 32 +- 43 files changed, 578 insertions(+), 577 deletions(-) rename graphics/object_events/palettes/{30.pal => birth_island_stone.pal} (100%) rename graphics/object_events/palettes/{08.pal => brendan.pal} (100%) rename graphics/object_events/palettes/{09.pal => brendan_reflection.pal} (100%) rename graphics/object_events/palettes/{10.pal => bridge_reflection.pal} (100%) rename graphics/object_events/palettes/{20.pal => cable_car.pal} (100%) rename graphics/object_events/palettes/{29.pal => deoxys.pal} (100%) rename graphics/object_events/palettes/{16.pal => enemy_zigzagoon.pal} (100%) rename graphics/object_events/palettes/{24.pal => groudon.pal} (100%) rename graphics/object_events/palettes/{25.pal => groudon_reflection.pal} (100%) rename graphics/object_events/palettes/{31.pal => ho_oh.pal} (100%) rename graphics/object_events/palettes/{22.pal => kyogre.pal} (100%) rename graphics/object_events/palettes/{23.pal => kyogre_reflection.pal} (100%) rename graphics/object_events/palettes/{32.pal => lugia.pal} (100%) rename graphics/object_events/palettes/{17.pal => may.pal} (100%) rename graphics/object_events/palettes/{18.pal => may_reflection.pal} (100%) rename graphics/object_events/palettes/{19.pal => moving_box.pal} (100%) rename graphics/object_events/palettes/{00.pal => npc_1.pal} (100%) rename graphics/object_events/palettes/{04.pal => npc_1_reflection.pal} (100%) rename graphics/object_events/palettes/{01.pal => npc_2.pal} (100%) rename graphics/object_events/palettes/{05.pal => npc_2_reflection.pal} (100%) rename graphics/object_events/palettes/{02.pal => npc_3.pal} (100%) rename graphics/object_events/palettes/{06.pal => npc_3_reflection.pal} (100%) rename graphics/object_events/palettes/{03.pal => npc_4.pal} (100%) rename graphics/object_events/palettes/{07.pal => npc_4_reflection.pal} (100%) rename graphics/object_events/palettes/{11.pal => player_underwater.pal} (100%) rename graphics/object_events/palettes/{27.pal => poochyena.pal} (100%) rename graphics/object_events/palettes/{12.pal => quinty_plump.pal} (100%) rename graphics/object_events/palettes/{13.pal => quinty_plump_reflection.pal} (100%) rename graphics/object_events/palettes/{28.pal => red_leaf.pal} (100%) rename graphics/object_events/palettes/{33.pal => ruby_sapphire_brendan.pal} (100%) rename graphics/object_events/palettes/{34.pal => ruby_sapphire_may.pal} (100%) rename graphics/object_events/palettes/{21.pal => ss_tidal.pal} (100%) rename graphics/object_events/palettes/{26.pal => submarine_shadow.pal} (100%) rename graphics/object_events/palettes/{14.pal => truck.pal} (100%) rename graphics/object_events/palettes/{15.pal => vigoroth.pal} (100%) diff --git a/graphics/object_events/palettes/30.pal b/graphics/object_events/palettes/birth_island_stone.pal similarity index 100% rename from graphics/object_events/palettes/30.pal rename to graphics/object_events/palettes/birth_island_stone.pal diff --git a/graphics/object_events/palettes/08.pal b/graphics/object_events/palettes/brendan.pal similarity index 100% rename from graphics/object_events/palettes/08.pal rename to graphics/object_events/palettes/brendan.pal diff --git a/graphics/object_events/palettes/09.pal b/graphics/object_events/palettes/brendan_reflection.pal similarity index 100% rename from graphics/object_events/palettes/09.pal rename to graphics/object_events/palettes/brendan_reflection.pal diff --git a/graphics/object_events/palettes/10.pal b/graphics/object_events/palettes/bridge_reflection.pal similarity index 100% rename from graphics/object_events/palettes/10.pal rename to graphics/object_events/palettes/bridge_reflection.pal diff --git a/graphics/object_events/palettes/20.pal b/graphics/object_events/palettes/cable_car.pal similarity index 100% rename from graphics/object_events/palettes/20.pal rename to graphics/object_events/palettes/cable_car.pal diff --git a/graphics/object_events/palettes/29.pal b/graphics/object_events/palettes/deoxys.pal similarity index 100% rename from graphics/object_events/palettes/29.pal rename to graphics/object_events/palettes/deoxys.pal diff --git a/graphics/object_events/palettes/16.pal b/graphics/object_events/palettes/enemy_zigzagoon.pal similarity index 100% rename from graphics/object_events/palettes/16.pal rename to graphics/object_events/palettes/enemy_zigzagoon.pal diff --git a/graphics/object_events/palettes/24.pal b/graphics/object_events/palettes/groudon.pal similarity index 100% rename from graphics/object_events/palettes/24.pal rename to graphics/object_events/palettes/groudon.pal diff --git a/graphics/object_events/palettes/25.pal b/graphics/object_events/palettes/groudon_reflection.pal similarity index 100% rename from graphics/object_events/palettes/25.pal rename to graphics/object_events/palettes/groudon_reflection.pal diff --git a/graphics/object_events/palettes/31.pal b/graphics/object_events/palettes/ho_oh.pal similarity index 100% rename from graphics/object_events/palettes/31.pal rename to graphics/object_events/palettes/ho_oh.pal diff --git a/graphics/object_events/palettes/22.pal b/graphics/object_events/palettes/kyogre.pal similarity index 100% rename from graphics/object_events/palettes/22.pal rename to graphics/object_events/palettes/kyogre.pal diff --git a/graphics/object_events/palettes/23.pal b/graphics/object_events/palettes/kyogre_reflection.pal similarity index 100% rename from graphics/object_events/palettes/23.pal rename to graphics/object_events/palettes/kyogre_reflection.pal diff --git a/graphics/object_events/palettes/32.pal b/graphics/object_events/palettes/lugia.pal similarity index 100% rename from graphics/object_events/palettes/32.pal rename to graphics/object_events/palettes/lugia.pal diff --git a/graphics/object_events/palettes/17.pal b/graphics/object_events/palettes/may.pal similarity index 100% rename from graphics/object_events/palettes/17.pal rename to graphics/object_events/palettes/may.pal diff --git a/graphics/object_events/palettes/18.pal b/graphics/object_events/palettes/may_reflection.pal similarity index 100% rename from graphics/object_events/palettes/18.pal rename to graphics/object_events/palettes/may_reflection.pal diff --git a/graphics/object_events/palettes/19.pal b/graphics/object_events/palettes/moving_box.pal similarity index 100% rename from graphics/object_events/palettes/19.pal rename to graphics/object_events/palettes/moving_box.pal diff --git a/graphics/object_events/palettes/00.pal b/graphics/object_events/palettes/npc_1.pal similarity index 100% rename from graphics/object_events/palettes/00.pal rename to graphics/object_events/palettes/npc_1.pal diff --git a/graphics/object_events/palettes/04.pal b/graphics/object_events/palettes/npc_1_reflection.pal similarity index 100% rename from graphics/object_events/palettes/04.pal rename to graphics/object_events/palettes/npc_1_reflection.pal diff --git a/graphics/object_events/palettes/01.pal b/graphics/object_events/palettes/npc_2.pal similarity index 100% rename from graphics/object_events/palettes/01.pal rename to graphics/object_events/palettes/npc_2.pal diff --git a/graphics/object_events/palettes/05.pal b/graphics/object_events/palettes/npc_2_reflection.pal similarity index 100% rename from graphics/object_events/palettes/05.pal rename to graphics/object_events/palettes/npc_2_reflection.pal diff --git a/graphics/object_events/palettes/02.pal b/graphics/object_events/palettes/npc_3.pal similarity index 100% rename from graphics/object_events/palettes/02.pal rename to graphics/object_events/palettes/npc_3.pal diff --git a/graphics/object_events/palettes/06.pal b/graphics/object_events/palettes/npc_3_reflection.pal similarity index 100% rename from graphics/object_events/palettes/06.pal rename to graphics/object_events/palettes/npc_3_reflection.pal diff --git a/graphics/object_events/palettes/03.pal b/graphics/object_events/palettes/npc_4.pal similarity index 100% rename from graphics/object_events/palettes/03.pal rename to graphics/object_events/palettes/npc_4.pal diff --git a/graphics/object_events/palettes/07.pal b/graphics/object_events/palettes/npc_4_reflection.pal similarity index 100% rename from graphics/object_events/palettes/07.pal rename to graphics/object_events/palettes/npc_4_reflection.pal diff --git a/graphics/object_events/palettes/11.pal b/graphics/object_events/palettes/player_underwater.pal similarity index 100% rename from graphics/object_events/palettes/11.pal rename to graphics/object_events/palettes/player_underwater.pal diff --git a/graphics/object_events/palettes/27.pal b/graphics/object_events/palettes/poochyena.pal similarity index 100% rename from graphics/object_events/palettes/27.pal rename to graphics/object_events/palettes/poochyena.pal diff --git a/graphics/object_events/palettes/12.pal b/graphics/object_events/palettes/quinty_plump.pal similarity index 100% rename from graphics/object_events/palettes/12.pal rename to graphics/object_events/palettes/quinty_plump.pal diff --git a/graphics/object_events/palettes/13.pal b/graphics/object_events/palettes/quinty_plump_reflection.pal similarity index 100% rename from graphics/object_events/palettes/13.pal rename to graphics/object_events/palettes/quinty_plump_reflection.pal diff --git a/graphics/object_events/palettes/28.pal b/graphics/object_events/palettes/red_leaf.pal similarity index 100% rename from graphics/object_events/palettes/28.pal rename to graphics/object_events/palettes/red_leaf.pal diff --git a/graphics/object_events/palettes/33.pal b/graphics/object_events/palettes/ruby_sapphire_brendan.pal similarity index 100% rename from graphics/object_events/palettes/33.pal rename to graphics/object_events/palettes/ruby_sapphire_brendan.pal diff --git a/graphics/object_events/palettes/34.pal b/graphics/object_events/palettes/ruby_sapphire_may.pal similarity index 100% rename from graphics/object_events/palettes/34.pal rename to graphics/object_events/palettes/ruby_sapphire_may.pal diff --git a/graphics/object_events/palettes/21.pal b/graphics/object_events/palettes/ss_tidal.pal similarity index 100% rename from graphics/object_events/palettes/21.pal rename to graphics/object_events/palettes/ss_tidal.pal diff --git a/graphics/object_events/palettes/26.pal b/graphics/object_events/palettes/submarine_shadow.pal similarity index 100% rename from graphics/object_events/palettes/26.pal rename to graphics/object_events/palettes/submarine_shadow.pal diff --git a/graphics/object_events/palettes/14.pal b/graphics/object_events/palettes/truck.pal similarity index 100% rename from graphics/object_events/palettes/14.pal rename to graphics/object_events/palettes/truck.pal diff --git a/graphics/object_events/palettes/15.pal b/graphics/object_events/palettes/vigoroth.pal similarity index 100% rename from graphics/object_events/palettes/15.pal rename to graphics/object_events/palettes/vigoroth.pal diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 4598e87fa..83123c834 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -219,8 +219,8 @@ struct ObjectEvent struct ObjectEventGraphicsInfo { /*0x00*/ u16 tileTag; - /*0x02*/ u16 paletteTag1; - /*0x04*/ u16 paletteTag2; + /*0x02*/ u16 paletteTag; + /*0x04*/ u16 reflectionPaletteTag; /*0x06*/ u16 size; /*0x08*/ s16 width; /*0x0A*/ s16 height; diff --git a/src/contest_util.c b/src/contest_util.c index 21408c673..9f9582292 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -166,10 +166,10 @@ static void SpriteCB_Confetti(struct Sprite *sprite); static void Task_ShowContestEntryMonPic(u8 taskId); static void Task_LinkContestWaitForConnection(u8 taskId); -extern const u16 gObjectEventPalette8[]; -extern const u16 gObjectEventPalette17[]; -extern const u16 gObjectEventPalette33[]; -extern const u16 gObjectEventPalette34[]; +extern const u16 gObjectEventPal_Brendan[]; +extern const u16 gObjectEventPal_May[]; +extern const u16 gObjectEventPal_RubySapphireBrendan[]; +extern const u16 gObjectEventPal_RubySapphireMay[]; static const u16 sUnknown_0858D6B0[] = INCBIN_U16("graphics/unknown/unknown_58D6B0.gbapal"); static const u8 sUnknown_0858D6D0[] = INCBIN_U8("graphics/unknown/unknown_58D6D0.4bpp"); @@ -2488,16 +2488,16 @@ void LoadLinkContestPlayerPalettes(void) if (version == VERSION_RUBY || version == VERSION_SAPPHIRE) { if (gLinkPlayers[i].gender == MALE) - LoadPalette(gObjectEventPalette33, 0x160 + i * 0x10, 0x20); + LoadPalette(gObjectEventPal_RubySapphireBrendan, 0x160 + i * 0x10, 0x20); else - LoadPalette(gObjectEventPalette34, 0x160 + i * 0x10, 0x20); + LoadPalette(gObjectEventPal_RubySapphireMay, 0x160 + i * 0x10, 0x20); } else { if (gLinkPlayers[i].gender == MALE) - LoadPalette(gObjectEventPalette8, 0x160 + i * 0x10, 0x20); + LoadPalette(gObjectEventPal_Brendan, 0x160 + i * 0x10, 0x20); else - LoadPalette(gObjectEventPalette17, 0x160 + i * 0x10, 0x20); + LoadPalette(gObjectEventPal_May, 0x160 + i * 0x10, 0x20); } } } diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 1626b9f32..4fc3ecff6 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -1286,4 +1286,4 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = { .callback = UpdateRayquazaSpotlightEffect, }; -static const struct SpritePalette sSpritePalette_Unused = {gObjectEventPalette2, FLDEFF_PAL_TAG_UNKNOWN}; +static const struct SpritePalette sSpritePalette_Unused = {gObjectEventPal_Npc3, FLDEFF_PAL_TAG_UNKNOWN}; diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 50fc6715c..81d83a856 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -1,26 +1,26 @@ const u32 gObjectEventPic_BrendanNormal[] = INCBIN_U32("graphics/object_events/pics/people/brendan/walking.4bpp"); const u32 gObjectEventPic_BrendanRunning[] = INCBIN_U32("graphics/object_events/pics/people/brendan/running.4bpp"); -const u16 gObjectEventPalette8[] = INCBIN_U16("graphics/object_events/palettes/08.gbapal"); +const u16 gObjectEventPal_Brendan[] = INCBIN_U16("graphics/object_events/palettes/brendan.gbapal"); const u32 gObjectEventPic_RubySapphireBrendanNormal[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_brendan/walking.4bpp"); const u32 gObjectEventPic_RubySapphireBrendanRunning[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_brendan/running.4bpp"); -const u16 gObjectEventPalette33[] = INCBIN_U16("graphics/object_events/palettes/33.gbapal"); -const u16 gObjectEventPaletteNull1[16] = {}; -const u16 gObjectEventPaletteNull2[16] = {}; -const u16 gObjectEventPaletteNull3[16] = {}; -const u16 gObjectEventPaletteNull4[16] = {}; -const u16 gObjectEventPaletteNull5[16] = {}; -const u16 gObjectEventPaletteNull6[16] = {}; -const u16 gObjectEventPaletteNull7[16] = {}; -const u16 gObjectEventPaletteNull8[16] = {}; -const u16 gObjectEventPaletteNull9[16] = {}; -const u16 gObjectEventPaletteNull10[16] = {}; -const u16 gObjectEventPaletteNull11[16] = {}; -const u16 gObjectEventPaletteNull12[16] = {}; -const u16 gObjectEventPaletteNull13[16] = {}; -const u16 gObjectEventPaletteNull14[16] = {}; -const u16 gObjectEventPaletteNull15[16] = {}; -const u16 gObjectEventPalette9[] = INCBIN_U16("graphics/object_events/palettes/09.gbapal"); -const u16 gObjectEventPalette10[] = INCBIN_U16("graphics/object_events/palettes/10.gbapal"); +const u16 gObjectEventPal_RubySapphireBrendan[] = INCBIN_U16("graphics/object_events/palettes/ruby_sapphire_brendan.gbapal"); +const u16 gObjectEventPal_Null1[16] = {}; +const u16 gObjectEventPal_Null2[16] = {}; +const u16 gObjectEventPal_Null3[16] = {}; +const u16 gObjectEventPal_Null4[16] = {}; +const u16 gObjectEventPal_Null5[16] = {}; +const u16 gObjectEventPal_Null6[16] = {}; +const u16 gObjectEventPal_Null7[16] = {}; +const u16 gObjectEventPal_Null8[16] = {}; +const u16 gObjectEventPal_Null9[16] = {}; +const u16 gObjectEventPal_Null10[16] = {}; +const u16 gObjectEventPal_Null11[16] = {}; +const u16 gObjectEventPal_Null12[16] = {}; +const u16 gObjectEventPal_Null13[16] = {}; +const u16 gObjectEventPal_Null14[16] = {}; +const u16 gObjectEventPal_Null15[16] = {}; +const u16 gObjectEventPal_BrendanReflection[] = INCBIN_U16("graphics/object_events/palettes/brendan_reflection.gbapal"); +const u16 gObjectEventPal_BridgeReflection[] = INCBIN_U16("graphics/object_events/palettes/bridge_reflection.gbapal"); const u32 gObjectEventPic_BrendanFieldMove[] = INCBIN_U32("graphics/object_events/pics/people/brendan/field_move.4bpp"); const u32 gObjectEventPic_BrendanSurfing[] = INCBIN_U32("graphics/object_events/pics/people/brendan/surfing.4bpp"); const u32 gObjectEventPic_BrendanMachBike[] = INCBIN_U32("graphics/object_events/pics/people/brendan/mach_bike.4bpp"); @@ -31,43 +31,43 @@ const u32 gObjectEventPic_BrendanDecorating[] = INCBIN_U32("graphics/object_even const u32 gObjectEventPic_MayDecorating[] = INCBIN_U32("graphics/object_events/pics/people/may/decorating.4bpp"); const u32 gObjectEventPic_BrendanUnderwater[] = INCBIN_U32("graphics/object_events/pics/people/brendan/underwater.4bpp"); const u32 gObjectEventPic_MayUnderwater[] = INCBIN_U32("graphics/object_events/pics/people/may/underwater.4bpp"); -const u16 gObjectEventPalette11[] = INCBIN_U16("graphics/object_events/palettes/11.gbapal"); +const u16 gObjectEventPal_PlayerUnderwater[] = INCBIN_U16("graphics/object_events/palettes/player_underwater.gbapal"); const u32 gObjectEventPic_MayNormal[] = INCBIN_U32("graphics/object_events/pics/people/may/walking.4bpp"); const u32 gObjectEventPic_MayRunning[] = INCBIN_U32("graphics/object_events/pics/people/may/running.4bpp"); -const u16 gObjectEventPalette17[] = INCBIN_U16("graphics/object_events/palettes/17.gbapal"); -const u16 gObjectEventPalette18[] = INCBIN_U16("graphics/object_events/palettes/18.gbapal"); +const u16 gObjectEventPal_May[] = INCBIN_U16("graphics/object_events/palettes/may.gbapal"); +const u16 gObjectEventPal_MayReflection[] = INCBIN_U16("graphics/object_events/palettes/may_reflection.gbapal"); const u32 gObjectEventPic_RubySapphireMayNormal[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_may/walking.4bpp"); const u32 gObjectEventPic_RubySapphireMayRunning[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_may/running.4bpp"); -const u16 gObjectEventPalette34[] = INCBIN_U16("graphics/object_events/palettes/34.gbapal"); +const u16 gObjectEventPal_RubySapphireMay[] = INCBIN_U16("graphics/object_events/palettes/ruby_sapphire_may.gbapal"); const u16 gUnusedObjectEventPalette[] = INCBIN_U16("graphics/object_events/palettes/unused_palette.gbapal"); -const u16 gObjectEventPaletteNull16[16] = {}; -const u16 gObjectEventPaletteNull17[16] = {}; -const u16 gObjectEventPaletteNull18[16] = {}; -const u16 gObjectEventPaletteNull19[16] = {}; -const u16 gObjectEventPaletteNull20[16] = {}; -const u16 gObjectEventPaletteNull21[16] = {}; -const u16 gObjectEventPaletteNull22[16] = {}; -const u16 gObjectEventPaletteNull23[16] = {}; -const u16 gObjectEventPaletteNull24[16] = {}; -const u16 gObjectEventPaletteNull25[16] = {}; -const u16 gObjectEventPaletteNull26[16] = {}; -const u16 gObjectEventPaletteNull27[16] = {}; -const u16 gObjectEventPaletteNull28[16] = {}; -const u16 gObjectEventPaletteNull29[16] = {}; +const u16 gObjectEventPal_Null16[16] = {}; +const u16 gObjectEventPal_Null17[16] = {}; +const u16 gObjectEventPal_Null18[16] = {}; +const u16 gObjectEventPal_Null19[16] = {}; +const u16 gObjectEventPal_Null20[16] = {}; +const u16 gObjectEventPal_Null21[16] = {}; +const u16 gObjectEventPal_Null22[16] = {}; +const u16 gObjectEventPal_Null23[16] = {}; +const u16 gObjectEventPal_Null24[16] = {}; +const u16 gObjectEventPal_Null25[16] = {}; +const u16 gObjectEventPal_Null26[16] = {}; +const u16 gObjectEventPal_Null27[16] = {}; +const u16 gObjectEventPal_Null28[16] = {}; +const u16 gObjectEventPal_Null29[16] = {}; const u32 gObjectEventPic_MayMachBike[] = INCBIN_U32("graphics/object_events/pics/people/may/mach_bike.4bpp"); const u32 gObjectEventPic_MayAcroBike[] = INCBIN_U32("graphics/object_events/pics/people/may/acro_bike.4bpp"); const u32 gObjectEventPic_MaySurfing[] = INCBIN_U32("graphics/object_events/pics/people/may/surfing.4bpp"); const u32 gObjectEventPic_MayFieldMove[] = INCBIN_U32("graphics/object_events/pics/people/may/field_move.4bpp"); const u32 gObjectEventPic_MayFishing[] = INCBIN_U32("graphics/object_events/pics/people/may/fishing.4bpp"); const u32 gObjectEventPic_MayWatering[] = INCBIN_U32("graphics/object_events/pics/people/may/watering.4bpp"); -const u16 gObjectEventPalette0[] = INCBIN_U16("graphics/object_events/palettes/00.gbapal"); -const u16 gObjectEventPalette1[] = INCBIN_U16("graphics/object_events/palettes/01.gbapal"); -const u16 gObjectEventPalette2[] = INCBIN_U16("graphics/object_events/palettes/02.gbapal"); -const u16 gObjectEventPalette3[] = INCBIN_U16("graphics/object_events/palettes/03.gbapal"); -const u16 gObjectEventPalette4[] = INCBIN_U16("graphics/object_events/palettes/04.gbapal"); -const u16 gObjectEventPalette5[] = INCBIN_U16("graphics/object_events/palettes/05.gbapal"); -const u16 gObjectEventPalette6[] = INCBIN_U16("graphics/object_events/palettes/06.gbapal"); -const u16 gObjectEventPalette7[] = INCBIN_U16("graphics/object_events/palettes/07.gbapal"); +const u16 gObjectEventPal_Npc1[] = INCBIN_U16("graphics/object_events/palettes/npc_1.gbapal"); +const u16 gObjectEventPal_Npc2[] = INCBIN_U16("graphics/object_events/palettes/npc_2.gbapal"); +const u16 gObjectEventPal_Npc3[] = INCBIN_U16("graphics/object_events/palettes/npc_3.gbapal"); +const u16 gObjectEventPal_Npc4[] = INCBIN_U16("graphics/object_events/palettes/npc_4.gbapal"); +const u16 gObjectEventPal_Npc1Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_1_reflection.gbapal"); +const u16 gObjectEventPal_Npc2Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_2_reflection.gbapal"); +const u16 gObjectEventPal_Npc3Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_3_reflection.gbapal"); +const u16 gObjectEventPal_Npc4Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_4_reflection.gbapal"); const u32 gObjectEventPic_NinjaBoy[] = INCBIN_U32("graphics/object_events/pics/people/ninja_boy.4bpp"); const u32 gObjectEventPic_Twin[] = INCBIN_U32("graphics/object_events/pics/people/twin.4bpp"); const u32 gObjectEventPic_Boy1[] = INCBIN_U32("graphics/object_events/pics/people/boy_1.4bpp"); @@ -177,10 +177,10 @@ const u32 gObjectEventPic_Wingull[] = INCBIN_U32("graphics/object_events/pics/po const u32 gObjectEventPic_TuberMSwimming[] = INCBIN_U32("graphics/object_events/pics/people/tuber_m_swimming.4bpp"); const u32 gObjectEventPic_Azurill[] = INCBIN_U32("graphics/object_events/pics/pokemon/azurill.4bpp"); const u32 gObjectEventPic_Mom[] = INCBIN_U32("graphics/object_events/pics/people/mom.4bpp"); -const u16 gObjectEventPalette22[] = INCBIN_U16("graphics/object_events/palettes/22.gbapal"); -const u16 gObjectEventPalette23[] = INCBIN_U16("graphics/object_events/palettes/23.gbapal"); -const u16 gObjectEventPalette24[] = INCBIN_U16("graphics/object_events/palettes/24.gbapal"); -const u16 gObjectEventPalette25[] = INCBIN_U16("graphics/object_events/palettes/25.gbapal"); +const u16 gObjectEventPal_Kyogre[] = INCBIN_U16("graphics/object_events/palettes/kyogre.gbapal"); +const u16 gObjectEventPal_KyogreReflection[] = INCBIN_U16("graphics/object_events/palettes/kyogre_reflection.gbapal"); +const u16 gObjectEventPal_Groudon[] = INCBIN_U16("graphics/object_events/palettes/groudon.gbapal"); +const u16 gObjectEventPal_GroudonReflection[] = INCBIN_U16("graphics/object_events/palettes/groudon_reflection.gbapal"); const u32 gObjectEventPic_UnusedNatuDoll[] = INCBIN_U32("graphics/object_events/pics/dolls/unused_natu_doll.4bpp"); const u32 gObjectEventPic_UnusedMagnemiteDoll[] = INCBIN_U32("graphics/object_events/pics/dolls/unused_magnemite_doll.4bpp"); const u32 gObjectEventPic_UnusedSquirtleDoll[] = INCBIN_U32("graphics/object_events/pics/dolls/unused_squirtle_doll.4bpp"); @@ -238,20 +238,20 @@ const u32 gObjectEventPic_PushableBoulder[] = INCBIN_U32("graphics/object_events const u32 gObjectEventPic_MrBrineysBoat[] = INCBIN_U32("graphics/object_events/pics/misc/mr_brineys_boat.4bpp"); const u32 gObjectEventPic_Fossil[] = INCBIN_U32("graphics/object_events/pics/misc/fossil.4bpp"); const u32 gObjectEventPic_SubmarineShadow[] = INCBIN_U32("graphics/object_events/pics/misc/submarine_shadow.4bpp"); -const u16 gObjectEventPalette26[] = INCBIN_U16("graphics/object_events/palettes/26.gbapal"); +const u16 gObjectEventPal_SubmarineShadow[] = INCBIN_U16("graphics/object_events/palettes/submarine_shadow.gbapal"); const u32 gObjectEventPic_Truck[] = INCBIN_U32("graphics/object_events/pics/misc/truck.4bpp"); -const u16 gObjectEventPalette14[] = INCBIN_U16("graphics/object_events/palettes/14.gbapal"); +const u16 gObjectEventPal_Truck[] = INCBIN_U16("graphics/object_events/palettes/truck.gbapal"); const u32 gObjectEventPic_Vigoroth[] = INCBIN_U32("graphics/object_events/pics/pokemon/vigoroth.4bpp"); -const u16 gObjectEventPalette15[] = INCBIN_U16("graphics/object_events/palettes/15.gbapal"); +const u16 gObjectEventPal_Vigoroth[] = INCBIN_U16("graphics/object_events/palettes/vigoroth.gbapal"); const u32 gObjectEventPic_BirchsBag[] = INCBIN_U32("graphics/object_events/pics/misc/birchs_bag.4bpp"); const u32 gObjectEventPic_EnemyZigzagoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/enemy_zigzagoon.4bpp"); -const u16 gObjectEventPalette16[] = INCBIN_U16("graphics/object_events/palettes/16.gbapal"); +const u16 gObjectEventPal_EnemyZigzagoon[] = INCBIN_U16("graphics/object_events/palettes/enemy_zigzagoon.gbapal"); const u32 gObjectEventPic_Poochyena[] = INCBIN_U32("graphics/object_events/pics/pokemon/poochyena.4bpp"); -const u16 gObjectEventPalette27[] = INCBIN_U16("graphics/object_events/palettes/27.gbapal"); +const u16 gObjectEventPal_Poochyena[] = INCBIN_U16("graphics/object_events/palettes/poochyena.gbapal"); const u32 gObjectEventPic_CableCar[] = INCBIN_U32("graphics/object_events/pics/misc/cable_car.4bpp"); -const u16 gObjectEventPalette20[] = INCBIN_U16("graphics/object_events/palettes/20.gbapal"); +const u16 gObjectEventPal_CableCar[] = INCBIN_U16("graphics/object_events/palettes/cable_car.gbapal"); const u32 gObjectEventPic_SSTidal[] = INCBIN_U32("graphics/object_events/pics/misc/ss_tidal.4bpp"); -const u16 gObjectEventPalette21[] = INCBIN_U16("graphics/object_events/palettes/21.gbapal"); +const u16 gObjectEventPal_SSTidal[] = INCBIN_U16("graphics/object_events/palettes/ss_tidal.gbapal"); const u32 gFieldEffectObjectPic_Sparkle[] = INCBIN_U32("graphics/field_effects/pics/sparkle.4bpp"); const u32 gObjectEventPic_BerryTreeDirtPile[] = INCBIN_U32("graphics/object_events/pics/berry_trees/dirt_pile.4bpp"); const u32 gObjectEventPic_BerryTreeSprout[] = INCBIN_U32("graphics/object_events/pics/berry_trees/sprout.4bpp"); @@ -287,8 +287,8 @@ const u32 gObjectEventPic_DurinBerryTree[] = INCBIN_U32("graphics/object_events/ const u32 gObjectEventPic_TamatoBerryTree[] = INCBIN_U32("graphics/object_events/pics/berry_trees/tamato.4bpp"); const u32 gFieldEffectObjectPic_SurfBlob[] = INCBIN_U32("graphics/field_effects/pics/surf_blob.4bpp"); const u32 gObjectEventPic_QuintyPlump[] = INCBIN_U32("graphics/object_events/pics/people/quinty_plump.4bpp"); -const u16 gObjectEventPalette12[] = INCBIN_U16("graphics/object_events/palettes/12.gbapal"); -const u16 gObjectEventPalette13[] = INCBIN_U16("graphics/object_events/palettes/13.gbapal"); +const u16 gObjectEventPal_QuintyPlump[] = INCBIN_U16("graphics/object_events/palettes/quinty_plump.gbapal"); +const u16 gObjectEventPal_QuintyPlumpReflection[] = INCBIN_U16("graphics/object_events/palettes/quinty_plump_reflection.gbapal"); const u32 gFieldEffectObjectPic_ShadowSmall[] = INCBIN_U32("graphics/field_effects/pics/shadow_small.4bpp"); const u32 gFieldEffectObjectPic_ShadowMedium[] = INCBIN_U32("graphics/field_effects/pics/shadow_medium.4bpp"); const u32 gFieldEffectObjectPic_ShadowLarge[] = INCBIN_U32("graphics/field_effects/pics/shadow_large.4bpp"); @@ -339,15 +339,15 @@ const u32 gObjectEventPic_Dusclops[] = INCBIN_U32("graphics/object_events/pics/p const u32 gObjectEventPic_MysteryEventDeliveryman[] = INCBIN_U32("graphics/object_events/pics/people/mystery_event_deliveryman.4bpp"); const u32 gObjectEventPic_UnionRoomAttendant[] = INCBIN_U32("graphics/object_events/pics/people/union_room_attendant.4bpp"); const u32 gObjectEventPic_MovingBox[] = INCBIN_U32("graphics/object_events/pics/misc/moving_box.4bpp"); -const u16 gObjectEventPalette19[] = INCBIN_U16("graphics/object_events/palettes/19.gbapal"); +const u16 gObjectEventPal_MovingBox[] = INCBIN_U16("graphics/object_events/palettes/moving_box.gbapal"); const u32 gObjectEventPic_Sudowoodo[] = INCBIN_U32("graphics/object_events/pics/pokemon/sudowoodo.4bpp"); const u32 gObjectEventPic_Mew[] = INCBIN_U32("graphics/object_events/pics/pokemon/mew.4bpp"); -const u16 gObjectEventPalette28[] = INCBIN_U16("graphics/object_events/palettes/28.gbapal"); +const u16 gObjectEventPal_RedLeaf[] = INCBIN_U16("graphics/object_events/palettes/red_leaf.gbapal"); const u32 gObjectEventPic_Red[] = INCBIN_U32("graphics/object_events/pics/people/red.4bpp"); const u32 gObjectEventPic_Leaf[] = INCBIN_U32("graphics/object_events/pics/people/leaf.4bpp"); -const u16 gObjectEventPalette30[] = INCBIN_U16("graphics/object_events/palettes/30.gbapal"); +const u16 gObjectEventPal_BirthIslandStone[] = INCBIN_U16("graphics/object_events/palettes/birth_island_stone.gbapal"); const u32 gObjectEventPic_BirthIslandStone[] = INCBIN_U32("graphics/object_events/pics/misc/birth_island_stone.4bpp"); -const u16 gObjectEventPalette29[] = INCBIN_U16("graphics/object_events/palettes/29.gbapal"); +const u16 gObjectEventPal_Deoxys[] = INCBIN_U16("graphics/object_events/palettes/deoxys.gbapal"); const u32 gObjectEventPic_Deoxys[] = INCBIN_U32("graphics/object_events/pics/pokemon/deoxys.4bpp"); const u32 gObjectEventPic_Anabel[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/anabel.4bpp"); const u32 gObjectEventPic_Tucker[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/tucker.4bpp"); @@ -357,6 +357,6 @@ const u32 gObjectEventPic_Noland[] = INCBIN_U32("graphics/object_events/pics/peo const u32 gObjectEventPic_Lucy[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/lucy.4bpp"); const u32 gObjectEventPic_Brandon[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/brandon.4bpp"); const u32 gObjectEventPic_Lugia[] = INCBIN_U32("graphics/object_events/pics/pokemon/lugia.4bpp"); -const u16 gObjectEventPalette32[] = INCBIN_U16("graphics/object_events/palettes/32.gbapal"); +const u16 gObjectEventPal_Lugia[] = INCBIN_U16("graphics/object_events/palettes/lugia.gbapal"); const u32 gObjectEventPic_HoOh[] = INCBIN_U32("graphics/object_events/pics/pokemon/ho_oh.4bpp"); -const u16 gObjectEventPalette31[] = INCBIN_U16("graphics/object_events/palettes/31.gbapal"); +const u16 gObjectEventPal_HoOh[] = INCBIN_U16("graphics/object_events/palettes/ho_oh.gbapal"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index bb36c9436..7b0dc44cc 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -1,245 +1,245 @@ -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump = {0xFFFF, OBJ_EVENT_PAL_TAG_12, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_QuintyPlump, gObjectEventPicTable_QuintyPlump, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_NinjaBoy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Twin, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2 = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LittleBoy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LittleGirl, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3 = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy3, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl3, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RichBoy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1 = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_FatMan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PokefanF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ExpertM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ExpertF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman3, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PokefanM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4 = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman4, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Cook, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LinkReceptionist, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_OldMan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_OldWoman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Camper, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Picnicker, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man3, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman5, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Youngster, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BugCatcher, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PsychicM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SchoolKidM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Maniac, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_HexManiac, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RayquazaStill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SwimmerM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SwimmerF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BlackBelt, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Beauty, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scientist1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lass, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Gentleman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sailor, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Fisherman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Hiker, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Nurse, gObjectEventPicTable_Nurse, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ItemBall, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ProfBirch, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4 = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man4, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man5, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ReporterM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ReporterF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2 = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_CuttableTree, gObjectEventPicTable_CuttableTree, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MartEmployee, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Teala, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_BreakableRock, gObjectEventPicTable_BreakableRock, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PushableBoulder, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = {0xFFFF, OBJ_EVENT_PAL_TAG_14, OBJ_EVENT_PAL_TAG_NONE, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_48x48, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Truck, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_15, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothCarryingBox, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway = {0xFFFF, OBJ_EVENT_PAL_TAG_15, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirchsBag, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_16, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = {0xFFFF, OBJ_EVENT_PAL_TAG_27, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Poochyena, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Artist, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Cameraman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_11, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_11, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayUnderwater, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_19, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MovingBox, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar = {0xFFFF, OBJ_EVENT_PAL_TAG_20, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_CableCar, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2 = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scientist2, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_DevonEmployee, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AquaMemberM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AquaMemberF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MagmaMemberM, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MagmaMemberF, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sidney, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Phoebe, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Glacia, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Drake, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Roxanne, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brawly, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wattson, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Flannery, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Norman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Winona, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Liza, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tate, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wallace, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Steven, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wally, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireLittleBoy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Fishing, gObjectEventPicTable_BrendanFishing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Fishing, gObjectEventPicTable_MayFishing, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = {0xFFFF, OBJ_EVENT_PAL_TAG_21, OBJ_EVENT_PAL_TAG_NONE, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_96x40, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SSTidal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_26, OBJ_EVENT_PAL_TAG_NONE, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_88x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SubmarineShadow, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PichuDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PikachuDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MarillDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TogepiDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TotodileDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MeowthDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ClefairyDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DittoDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SmoochumDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TreeckoDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TorchicDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MudkipDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DuskullDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_WynautDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BaltoyDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_KecleonDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_AzurillDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SkittyDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SwabluDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_GulpinDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_LotadDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SeedotDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PikaCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_RoundCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_KissCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ZigzagCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SpinCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DiamondCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BallCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_GrassCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_FireCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_WaterCushion, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GameboyKid, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ContestJudge, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanWatering, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayWatering, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BrendanDecorating, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MayDecorating, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Archie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Maxie, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre1 = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre3 = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreSide, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon3 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Groudon3, gObjectEventPicTable_GroudonSide, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Fossil, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Skitty, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2 = {0xFFFF, OBJ_EVENT_PAL_TAG_22, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_24, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Rayquaza2, gObjectEventPicTable_Rayquaza, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Zigzagoon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Pikachu, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wingull, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_10, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberMSwimming, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azurill, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mom, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Juan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scott, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Statue, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kirlia, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Dusclops, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = {0xFFFF, OBJ_EVENT_PAL_TAG_28, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Red, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = {0xFFFF, OBJ_EVENT_PAL_TAG_28, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Leaf, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sudowoodo, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mew, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = {0xFFFF, OBJ_EVENT_PAL_TAG_29, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Deoxys, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = {0xFFFF, OBJ_EVENT_PAL_TAG_30, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirthIslandStone, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Anabel, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tucker, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Greta, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Spenser, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Noland, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lucy, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brandon, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_33, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_34, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_32, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_31, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump = {0xFFFF, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_QuintyPlump, gObjectEventPicTable_QuintyPlump, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_NinjaBoy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Twin, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LittleBoy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LittleGirl, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy3, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl3, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RichBoy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_FatMan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PokefanF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ExpertM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ExpertF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman3, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PokefanM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman4, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Cook, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LinkReceptionist, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_OldMan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_OldWoman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Camper, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Picnicker, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man3, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman5, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Youngster, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BugCatcher, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PsychicM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SchoolKidM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Maniac, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_HexManiac, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RayquazaStill, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SwimmerM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SwimmerF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BlackBelt, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Beauty, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scientist1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lass, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Gentleman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sailor, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Fisherman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Hiker, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Nurse, gObjectEventPicTable_Nurse, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ItemBall, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ProfBirch, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man4, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man5, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ReporterM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ReporterF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_CuttableTree, gObjectEventPicTable_CuttableTree, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MartEmployee, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Teala, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_BreakableRock, gObjectEventPicTable_BreakableRock, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PushableBoulder, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = {0xFFFF, OBJ_EVENT_PAL_TAG_TRUCK, OBJ_EVENT_PAL_TAG_NONE, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_48x48, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Truck, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothCarryingBox, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirchsBag, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Poochyena, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Artist, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Cameraman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayUnderwater, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_MOVING_BOX, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MovingBox, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar = {0xFFFF, OBJ_EVENT_PAL_TAG_CABLE_CAR, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_CableCar, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scientist2, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_DevonEmployee, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AquaMemberM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AquaMemberF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MagmaMemberM, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MagmaMemberF, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sidney, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Phoebe, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Glacia, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Drake, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Roxanne, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brawly, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wattson, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Flannery, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Norman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Winona, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Liza, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tate, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wallace, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Steven, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wally, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireLittleBoy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Fishing, gObjectEventPicTable_BrendanFishing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Fishing, gObjectEventPicTable_MayFishing, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = {0xFFFF, OBJ_EVENT_PAL_TAG_SSTIDAL, OBJ_EVENT_PAL_TAG_NONE, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_96x40, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SSTidal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, OBJ_EVENT_PAL_TAG_NONE, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_88x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SubmarineShadow, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PichuDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PikachuDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MarillDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TogepiDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TotodileDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MeowthDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ClefairyDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DittoDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SmoochumDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TreeckoDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TorchicDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MudkipDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DuskullDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_WynautDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BaltoyDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_KecleonDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_AzurillDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SkittyDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SwabluDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_GulpinDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_LotadDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SeedotDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PikaCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_RoundCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_KissCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ZigzagCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SpinCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DiamondCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BallCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_GrassCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_FireCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_WaterCushion, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GameboyKid, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ContestJudge, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanWatering, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayWatering, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BrendanDecorating, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MayDecorating, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Archie, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Maxie, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreSide, gObjectEventRotScalAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Groudon3, gObjectEventPicTable_GroudonSide, gObjectEventRotScalAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Fossil, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Skitty, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2 = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Rayquaza2, gObjectEventPicTable_Rayquaza, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Zigzagoon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Pikachu, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wingull, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberMSwimming, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azurill, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mom, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Juan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scott, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Statue, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kirlia, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Dusclops, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Red, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Leaf, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sudowoodo, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mew, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Deoxys, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = {0xFFFF, OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirthIslandStone, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Anabel, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tucker, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Greta, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Spenser, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Noland, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lucy, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brandon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable}; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6d89adea6..c0f02acb2 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -401,42 +401,43 @@ const u8 gInitialMovementTypeFacingDirections[] = { [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST, }; -#define OBJ_EVENT_PAL_TAG_0 0x1103 -#define OBJ_EVENT_PAL_TAG_1 0x1104 -#define OBJ_EVENT_PAL_TAG_2 0x1105 -#define OBJ_EVENT_PAL_TAG_3 0x1106 -#define OBJ_EVENT_PAL_TAG_4 0x1107 -#define OBJ_EVENT_PAL_TAG_5 0x1108 -#define OBJ_EVENT_PAL_TAG_6 0x1109 -#define OBJ_EVENT_PAL_TAG_7 0x110A -#define OBJ_EVENT_PAL_TAG_8 0x1100 -#define OBJ_EVENT_PAL_TAG_9 0x1101 -#define OBJ_EVENT_PAL_TAG_10 0x1102 -#define OBJ_EVENT_PAL_TAG_11 0x1115 -#define OBJ_EVENT_PAL_TAG_12 0x110B -#define OBJ_EVENT_PAL_TAG_13 0x110C -#define OBJ_EVENT_PAL_TAG_14 0x110D -#define OBJ_EVENT_PAL_TAG_15 0x110E -#define OBJ_EVENT_PAL_TAG_16 0x110F -#define OBJ_EVENT_PAL_TAG_17 0x1110 -#define OBJ_EVENT_PAL_TAG_18 0x1111 -#define OBJ_EVENT_PAL_TAG_19 0x1112 -#define OBJ_EVENT_PAL_TAG_20 0x1113 -#define OBJ_EVENT_PAL_TAG_21 0x1114 -#define OBJ_EVENT_PAL_TAG_22 0x1116 -#define OBJ_EVENT_PAL_TAG_23 0x1117 -#define OBJ_EVENT_PAL_TAG_24 0x1118 -#define OBJ_EVENT_PAL_TAG_25 0x1119 -#define OBJ_EVENT_PAL_TAG_26 0x111B -#define OBJ_EVENT_PAL_TAG_27 0x111C -#define OBJ_EVENT_PAL_TAG_28 0x111D -#define OBJ_EVENT_PAL_TAG_29 0x111E -#define OBJ_EVENT_PAL_TAG_30 0x111F -#define OBJ_EVENT_PAL_TAG_31 0x1120 -#define OBJ_EVENT_PAL_TAG_32 0x1121 -#define OBJ_EVENT_PAL_TAG_33 0x1122 -#define OBJ_EVENT_PAL_TAG_34 0x1123 -#define OBJ_EVENT_PAL_TAG_NONE 0x11FF +#define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100 +#define OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION 0x1101 +#define OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION 0x1102 +#define OBJ_EVENT_PAL_TAG_NPC_1 0x1103 +#define OBJ_EVENT_PAL_TAG_NPC_2 0x1104 +#define OBJ_EVENT_PAL_TAG_NPC_3 0x1105 +#define OBJ_EVENT_PAL_TAG_NPC_4 0x1106 +#define OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION 0x1107 +#define OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION 0x1108 +#define OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION 0x1109 +#define OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION 0x110A +#define OBJ_EVENT_PAL_TAG_QUINTY_PLUMP 0x110B +#define OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION 0x110C +#define OBJ_EVENT_PAL_TAG_TRUCK 0x110D +#define OBJ_EVENT_PAL_TAG_VIGOROTH 0x110E +#define OBJ_EVENT_PAL_TAG_ZIGZAGOON 0x110F +#define OBJ_EVENT_PAL_TAG_MAY 0x1110 +#define OBJ_EVENT_PAL_TAG_MAY_REFLECTION 0x1111 +#define OBJ_EVENT_PAL_TAG_MOVING_BOX 0x1112 +#define OBJ_EVENT_PAL_TAG_CABLE_CAR 0x1113 +#define OBJ_EVENT_PAL_TAG_SSTIDAL 0x1114 +#define OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER 0x1115 +#define OBJ_EVENT_PAL_TAG_KYOGRE 0x1116 +#define OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION 0x1117 +#define OBJ_EVENT_PAL_TAG_GROUDON 0x1118 +#define OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION 0x1119 +#define OBJ_EVENT_PAL_TAG_UNUSED 0x111A +#define OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW 0x111B +#define OBJ_EVENT_PAL_TAG_POOCHYENA 0x111C +#define OBJ_EVENT_PAL_TAG_RED_LEAF 0x111D +#define OBJ_EVENT_PAL_TAG_DEOXYS 0x111E +#define OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE 0x111F +#define OBJ_EVENT_PAL_TAG_HO_OH 0x1120 +#define OBJ_EVENT_PAL_TAG_LUGIA 0x1121 +#define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 +#define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 +#define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" #include "data/field_effects/field_effect_object_template_pointers.h" @@ -446,224 +447,224 @@ const u8 gInitialMovementTypeFacingDirections[] = { #include "data/object_events/object_event_subsprites.h" #include "data/object_events/object_event_graphics_info.h" -const struct SpritePalette sObjectEventSpritePalettes[] = { - {gObjectEventPalette0, OBJ_EVENT_PAL_TAG_0}, - {gObjectEventPalette1, OBJ_EVENT_PAL_TAG_1}, - {gObjectEventPalette2, OBJ_EVENT_PAL_TAG_2}, - {gObjectEventPalette3, OBJ_EVENT_PAL_TAG_3}, - {gObjectEventPalette4, OBJ_EVENT_PAL_TAG_4}, - {gObjectEventPalette5, OBJ_EVENT_PAL_TAG_5}, - {gObjectEventPalette6, OBJ_EVENT_PAL_TAG_6}, - {gObjectEventPalette7, OBJ_EVENT_PAL_TAG_7}, - {gObjectEventPalette8, OBJ_EVENT_PAL_TAG_8}, - {gObjectEventPalette9, OBJ_EVENT_PAL_TAG_9}, - {gObjectEventPalette10, OBJ_EVENT_PAL_TAG_10}, - {gObjectEventPalette11, OBJ_EVENT_PAL_TAG_11}, - {gObjectEventPalette12, OBJ_EVENT_PAL_TAG_12}, - {gObjectEventPalette13, OBJ_EVENT_PAL_TAG_13}, - {gObjectEventPalette14, OBJ_EVENT_PAL_TAG_14}, - {gObjectEventPalette15, OBJ_EVENT_PAL_TAG_15}, - {gObjectEventPalette16, OBJ_EVENT_PAL_TAG_16}, - {gObjectEventPalette17, OBJ_EVENT_PAL_TAG_17}, - {gObjectEventPalette18, OBJ_EVENT_PAL_TAG_18}, - {gObjectEventPalette19, OBJ_EVENT_PAL_TAG_19}, - {gObjectEventPalette20, OBJ_EVENT_PAL_TAG_20}, - {gObjectEventPalette21, OBJ_EVENT_PAL_TAG_21}, - {gObjectEventPalette22, OBJ_EVENT_PAL_TAG_22}, - {gObjectEventPalette23, OBJ_EVENT_PAL_TAG_23}, - {gObjectEventPalette24, OBJ_EVENT_PAL_TAG_24}, - {gObjectEventPalette25, OBJ_EVENT_PAL_TAG_25}, - {gObjectEventPalette26, OBJ_EVENT_PAL_TAG_26}, - {gObjectEventPalette27, OBJ_EVENT_PAL_TAG_27}, - {gObjectEventPalette28, OBJ_EVENT_PAL_TAG_28}, - {gObjectEventPalette29, OBJ_EVENT_PAL_TAG_29}, - {gObjectEventPalette30, OBJ_EVENT_PAL_TAG_30}, - {gObjectEventPalette31, OBJ_EVENT_PAL_TAG_31}, - {gObjectEventPalette32, OBJ_EVENT_PAL_TAG_32}, - {gObjectEventPalette33, OBJ_EVENT_PAL_TAG_33}, - {gObjectEventPalette34, OBJ_EVENT_PAL_TAG_34}, - {NULL, 0x0000}, +static const struct SpritePalette sObjectEventSpritePalettes[] = { + {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_NPC_1}, + {gObjectEventPal_Npc2, OBJ_EVENT_PAL_TAG_NPC_2}, + {gObjectEventPal_Npc3, OBJ_EVENT_PAL_TAG_NPC_3}, + {gObjectEventPal_Npc4, OBJ_EVENT_PAL_TAG_NPC_4}, + {gObjectEventPal_Npc1Reflection, OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION}, + {gObjectEventPal_Npc2Reflection, OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION}, + {gObjectEventPal_Npc3Reflection, OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION}, + {gObjectEventPal_Npc4Reflection, OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION}, + {gObjectEventPal_Brendan, OBJ_EVENT_PAL_TAG_BRENDAN}, + {gObjectEventPal_BrendanReflection, OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION}, + {gObjectEventPal_BridgeReflection, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION}, + {gObjectEventPal_PlayerUnderwater, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER}, + {gObjectEventPal_QuintyPlump, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP}, + {gObjectEventPal_QuintyPlumpReflection, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION}, + {gObjectEventPal_Truck, OBJ_EVENT_PAL_TAG_TRUCK}, + {gObjectEventPal_Vigoroth, OBJ_EVENT_PAL_TAG_VIGOROTH}, + {gObjectEventPal_EnemyZigzagoon, OBJ_EVENT_PAL_TAG_ZIGZAGOON}, + {gObjectEventPal_May, OBJ_EVENT_PAL_TAG_MAY}, + {gObjectEventPal_MayReflection, OBJ_EVENT_PAL_TAG_MAY_REFLECTION}, + {gObjectEventPal_MovingBox, OBJ_EVENT_PAL_TAG_MOVING_BOX}, + {gObjectEventPal_CableCar, OBJ_EVENT_PAL_TAG_CABLE_CAR}, + {gObjectEventPal_SSTidal, OBJ_EVENT_PAL_TAG_SSTIDAL}, + {gObjectEventPal_Kyogre, OBJ_EVENT_PAL_TAG_KYOGRE}, + {gObjectEventPal_KyogreReflection, OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION}, + {gObjectEventPal_Groudon, OBJ_EVENT_PAL_TAG_GROUDON}, + {gObjectEventPal_GroudonReflection, OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION}, + {gObjectEventPal_SubmarineShadow, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW}, + {gObjectEventPal_Poochyena, OBJ_EVENT_PAL_TAG_POOCHYENA}, + {gObjectEventPal_RedLeaf, OBJ_EVENT_PAL_TAG_RED_LEAF}, + {gObjectEventPal_Deoxys, OBJ_EVENT_PAL_TAG_DEOXYS}, + {gObjectEventPal_BirthIslandStone, OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE}, + {gObjectEventPal_HoOh, OBJ_EVENT_PAL_TAG_HO_OH}, + {gObjectEventPal_Lugia, OBJ_EVENT_PAL_TAG_LUGIA}, + {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, + {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, + {NULL, 0x0000}, }; -const u16 gPlayerReflectionPaletteTags[] = { - OBJ_EVENT_PAL_TAG_9, - OBJ_EVENT_PAL_TAG_9, - OBJ_EVENT_PAL_TAG_9, - OBJ_EVENT_PAL_TAG_9, +static const u16 sReflectionPaletteTags_Brendan[] = { + OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, + OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, + OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, + OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, }; -const u16 Unknown_0850BCF0[] = { - OBJ_EVENT_PAL_TAG_18, - OBJ_EVENT_PAL_TAG_18, - OBJ_EVENT_PAL_TAG_18, - OBJ_EVENT_PAL_TAG_18, +static const u16 sReflectionPaletteTags_May[] = { + OBJ_EVENT_PAL_TAG_MAY_REFLECTION, + OBJ_EVENT_PAL_TAG_MAY_REFLECTION, + OBJ_EVENT_PAL_TAG_MAY_REFLECTION, + OBJ_EVENT_PAL_TAG_MAY_REFLECTION, }; -const u16 gPlayerUnderwaterReflectionPaletteTags[] = { - OBJ_EVENT_PAL_TAG_11, - OBJ_EVENT_PAL_TAG_11, - OBJ_EVENT_PAL_TAG_11, - OBJ_EVENT_PAL_TAG_11, +static const u16 sReflectionPaletteTags_PlayerUnderwater[] = { + OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, + OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, + OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, + OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, }; -const struct PairedPalettes gPlayerReflectionPaletteSets[] = { - {OBJ_EVENT_PAL_TAG_8, gPlayerReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_17, Unknown_0850BCF0}, - {OBJ_EVENT_PAL_TAG_11, gPlayerUnderwaterReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_NONE, NULL}, +static const struct PairedPalettes sPlayerReflectionPaletteSets[] = { + {OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan}, + {OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May}, + {OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, sReflectionPaletteTags_PlayerUnderwater}, + {OBJ_EVENT_PAL_TAG_NONE, NULL}, }; -const u16 gQuintyPlumpReflectionPaletteTags[] = { - OBJ_EVENT_PAL_TAG_13, - OBJ_EVENT_PAL_TAG_13, - OBJ_EVENT_PAL_TAG_13, - OBJ_EVENT_PAL_TAG_13, +static const u16 sReflectionPaletteTags_QuintyPlump[] = { + OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION, + OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION, + OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION, + OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION, }; -const u16 gTruckReflectionPaletteTags[] = { - OBJ_EVENT_PAL_TAG_14, - OBJ_EVENT_PAL_TAG_14, - OBJ_EVENT_PAL_TAG_14, - OBJ_EVENT_PAL_TAG_14, +static const u16 sReflectionPaletteTags_Truck[] = { + OBJ_EVENT_PAL_TAG_TRUCK, + OBJ_EVENT_PAL_TAG_TRUCK, + OBJ_EVENT_PAL_TAG_TRUCK, + OBJ_EVENT_PAL_TAG_TRUCK, }; -const u16 gVigorothMoverReflectionPaletteTags[] = { - OBJ_EVENT_PAL_TAG_15, - OBJ_EVENT_PAL_TAG_15, - OBJ_EVENT_PAL_TAG_15, - OBJ_EVENT_PAL_TAG_15, +static const u16 sReflectionPaletteTags_VigorothMover[] = { + OBJ_EVENT_PAL_TAG_VIGOROTH, + OBJ_EVENT_PAL_TAG_VIGOROTH, + OBJ_EVENT_PAL_TAG_VIGOROTH, + OBJ_EVENT_PAL_TAG_VIGOROTH, }; -const u16 gMovingBoxReflectionPaletteTags[] = { - OBJ_EVENT_PAL_TAG_19, - OBJ_EVENT_PAL_TAG_19, - OBJ_EVENT_PAL_TAG_19, - OBJ_EVENT_PAL_TAG_19, +static const u16 sReflectionPaletteTags_MovingBox[] = { + OBJ_EVENT_PAL_TAG_MOVING_BOX, + OBJ_EVENT_PAL_TAG_MOVING_BOX, + OBJ_EVENT_PAL_TAG_MOVING_BOX, + OBJ_EVENT_PAL_TAG_MOVING_BOX, }; -const u16 gCableCarReflectionPaletteTags[] = { - OBJ_EVENT_PAL_TAG_20, - OBJ_EVENT_PAL_TAG_20, - OBJ_EVENT_PAL_TAG_20, - OBJ_EVENT_PAL_TAG_20, +static const u16 sReflectionPaletteTags_CableCar[] = { + OBJ_EVENT_PAL_TAG_CABLE_CAR, + OBJ_EVENT_PAL_TAG_CABLE_CAR, + OBJ_EVENT_PAL_TAG_CABLE_CAR, + OBJ_EVENT_PAL_TAG_CABLE_CAR, }; -const u16 gSSTidalReflectionPaletteTags[] = { - OBJ_EVENT_PAL_TAG_21, - OBJ_EVENT_PAL_TAG_21, - OBJ_EVENT_PAL_TAG_21, - OBJ_EVENT_PAL_TAG_21, +static const u16 sReflectionPaletteTags_SSTidal[] = { + OBJ_EVENT_PAL_TAG_SSTIDAL, + OBJ_EVENT_PAL_TAG_SSTIDAL, + OBJ_EVENT_PAL_TAG_SSTIDAL, + OBJ_EVENT_PAL_TAG_SSTIDAL, }; -const u16 gSubmarineShadowReflectionPaletteTags[] = { - OBJ_EVENT_PAL_TAG_26, - OBJ_EVENT_PAL_TAG_26, - OBJ_EVENT_PAL_TAG_26, - OBJ_EVENT_PAL_TAG_26, +static const u16 sReflectionPaletteTags_SubmarineShadow[] = { + OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, + OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, + OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, + OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, }; -const u16 Unknown_0850BD58[] = { // Kyogre2? - OBJ_EVENT_PAL_TAG_23, - OBJ_EVENT_PAL_TAG_23, - OBJ_EVENT_PAL_TAG_23, - OBJ_EVENT_PAL_TAG_23, +static const u16 sReflectionPaletteTags_Kyogre[] = { + OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION, + OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION, + OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION, + OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION, }; -const u16 Unknown_0850BD60[] = { // Groudon2? - OBJ_EVENT_PAL_TAG_25, - OBJ_EVENT_PAL_TAG_25, - OBJ_EVENT_PAL_TAG_25, - OBJ_EVENT_PAL_TAG_25, +static const u16 sReflectionPaletteTags_Groudon[] = { + OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION, + OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION, + OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION, + OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION, }; -const u16 Unknown_0850BD68[] = { // Invisible Keckleon? - OBJ_EVENT_PAL_TAG_6, - OBJ_EVENT_PAL_TAG_6, - OBJ_EVENT_PAL_TAG_6, - OBJ_EVENT_PAL_TAG_6, +static const u16 sReflectionPaletteTags_Npc3[] = { // Only used by the Route 120 bridge Kecleon + OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, }; -const u16 gRedLeafReflectionPaletteTags[] = { - OBJ_EVENT_PAL_TAG_28, - OBJ_EVENT_PAL_TAG_28, - OBJ_EVENT_PAL_TAG_28, - OBJ_EVENT_PAL_TAG_28, +static const u16 sReflectionPaletteTags_RedLeaf[] = { + OBJ_EVENT_PAL_TAG_RED_LEAF, + OBJ_EVENT_PAL_TAG_RED_LEAF, + OBJ_EVENT_PAL_TAG_RED_LEAF, + OBJ_EVENT_PAL_TAG_RED_LEAF, }; -const struct PairedPalettes gSpecialObjectReflectionPaletteSets[] = { - {OBJ_EVENT_PAL_TAG_8, gPlayerReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_17, Unknown_0850BCF0}, - {OBJ_EVENT_PAL_TAG_12, gQuintyPlumpReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_14, gTruckReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_15, gVigorothMoverReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_19, gMovingBoxReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_20, gCableCarReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_21, gSSTidalReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_22, Unknown_0850BD58}, - {OBJ_EVENT_PAL_TAG_24, Unknown_0850BD60}, - {OBJ_EVENT_PAL_TAG_2, Unknown_0850BD68}, - {OBJ_EVENT_PAL_TAG_26, gSubmarineShadowReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_28, gRedLeafReflectionPaletteTags}, - {OBJ_EVENT_PAL_TAG_NONE, NULL}, +static const struct PairedPalettes sSpecialObjectReflectionPaletteSets[] = { + {OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan}, + {OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May}, + {OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, sReflectionPaletteTags_QuintyPlump}, + {OBJ_EVENT_PAL_TAG_TRUCK, sReflectionPaletteTags_Truck}, + {OBJ_EVENT_PAL_TAG_VIGOROTH, sReflectionPaletteTags_VigorothMover}, + {OBJ_EVENT_PAL_TAG_MOVING_BOX, sReflectionPaletteTags_MovingBox}, + {OBJ_EVENT_PAL_TAG_CABLE_CAR, sReflectionPaletteTags_CableCar}, + {OBJ_EVENT_PAL_TAG_SSTIDAL, sReflectionPaletteTags_SSTidal}, + {OBJ_EVENT_PAL_TAG_KYOGRE, sReflectionPaletteTags_Kyogre}, + {OBJ_EVENT_PAL_TAG_GROUDON, sReflectionPaletteTags_Groudon}, + {OBJ_EVENT_PAL_TAG_NPC_3, sReflectionPaletteTags_Npc3}, + {OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, sReflectionPaletteTags_SubmarineShadow}, + {OBJ_EVENT_PAL_TAG_RED_LEAF, sReflectionPaletteTags_RedLeaf}, + {OBJ_EVENT_PAL_TAG_NONE, NULL}, }; -const u16 gObjectPaletteTags0[] = { - OBJ_EVENT_PAL_TAG_8, - OBJ_EVENT_PAL_TAG_9, - OBJ_EVENT_PAL_TAG_0, - OBJ_EVENT_PAL_TAG_1, - OBJ_EVENT_PAL_TAG_2, - OBJ_EVENT_PAL_TAG_3, - OBJ_EVENT_PAL_TAG_4, - OBJ_EVENT_PAL_TAG_5, - OBJ_EVENT_PAL_TAG_6, - OBJ_EVENT_PAL_TAG_7, +static const u16 sObjectPaletteTags0[] = { + OBJ_EVENT_PAL_TAG_BRENDAN, + OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_1, + OBJ_EVENT_PAL_TAG_NPC_2, + OBJ_EVENT_PAL_TAG_NPC_3, + OBJ_EVENT_PAL_TAG_NPC_4, + OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION, }; -const u16 gObjectPaletteTags1[] = { - OBJ_EVENT_PAL_TAG_8, - OBJ_EVENT_PAL_TAG_9, - OBJ_EVENT_PAL_TAG_0, - OBJ_EVENT_PAL_TAG_1, - OBJ_EVENT_PAL_TAG_2, - OBJ_EVENT_PAL_TAG_3, - OBJ_EVENT_PAL_TAG_4, - OBJ_EVENT_PAL_TAG_5, - OBJ_EVENT_PAL_TAG_6, - OBJ_EVENT_PAL_TAG_7, +static const u16 sObjectPaletteTags1[] = { + OBJ_EVENT_PAL_TAG_BRENDAN, + OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_1, + OBJ_EVENT_PAL_TAG_NPC_2, + OBJ_EVENT_PAL_TAG_NPC_3, + OBJ_EVENT_PAL_TAG_NPC_4, + OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION, }; -const u16 gObjectPaletteTags2[] = { - OBJ_EVENT_PAL_TAG_8, - OBJ_EVENT_PAL_TAG_9, - OBJ_EVENT_PAL_TAG_0, - OBJ_EVENT_PAL_TAG_1, - OBJ_EVENT_PAL_TAG_2, - OBJ_EVENT_PAL_TAG_3, - OBJ_EVENT_PAL_TAG_4, - OBJ_EVENT_PAL_TAG_5, - OBJ_EVENT_PAL_TAG_6, - OBJ_EVENT_PAL_TAG_7, +static const u16 sObjectPaletteTags2[] = { + OBJ_EVENT_PAL_TAG_BRENDAN, + OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_1, + OBJ_EVENT_PAL_TAG_NPC_2, + OBJ_EVENT_PAL_TAG_NPC_3, + OBJ_EVENT_PAL_TAG_NPC_4, + OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION, }; -const u16 gObjectPaletteTags3[] = { - OBJ_EVENT_PAL_TAG_8, - OBJ_EVENT_PAL_TAG_9, - OBJ_EVENT_PAL_TAG_0, - OBJ_EVENT_PAL_TAG_1, - OBJ_EVENT_PAL_TAG_2, - OBJ_EVENT_PAL_TAG_3, - OBJ_EVENT_PAL_TAG_4, - OBJ_EVENT_PAL_TAG_5, - OBJ_EVENT_PAL_TAG_6, - OBJ_EVENT_PAL_TAG_7, +static const u16 sObjectPaletteTags3[] = { + OBJ_EVENT_PAL_TAG_BRENDAN, + OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_1, + OBJ_EVENT_PAL_TAG_NPC_2, + OBJ_EVENT_PAL_TAG_NPC_3, + OBJ_EVENT_PAL_TAG_NPC_4, + OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION, + OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION, }; -const u16 *const gObjectPaletteTagSets[] = { - gObjectPaletteTags0, - gObjectPaletteTags1, - gObjectPaletteTags2, - gObjectPaletteTags3, +static const u16 *const sObjectPaletteTagSets[] = { + sObjectPaletteTags0, + sObjectPaletteTags1, + sObjectPaletteTags2, + sObjectPaletteTags3, }; #include "data/object_events/berry_tree_graphics_tables.h" @@ -1367,16 +1368,16 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl paletteSlot = graphicsInfo->paletteSlot; if (paletteSlot == 0) { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, 0); + LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, 0); } else if (paletteSlot == 10) { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, 10); + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, 10); } else if (paletteSlot >= 16) { paletteSlot -= 16; - sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot); + sub_808EAB0(graphicsInfo->paletteTag, paletteSlot); } if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) @@ -1479,7 +1480,7 @@ static void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void ( const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); spriteTemplate->tileTag = graphicsInfo->tileTag; - spriteTemplate->paletteTag = graphicsInfo->paletteTag1; + spriteTemplate->paletteTag = graphicsInfo->paletteTag; spriteTemplate->oam = graphicsInfo->oam; spriteTemplate->anims = graphicsInfo->anims; spriteTemplate->images = graphicsInfo->images; @@ -1556,11 +1557,11 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction) sprite->data[1] = z; if (graphicsInfo->paletteSlot == 10) { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); } else if (graphicsInfo->paletteSlot >= 16) { - sub_808EAB0(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot | 0xf0); + sub_808EAB0(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0); } if (subspriteTables != NULL) { @@ -1696,16 +1697,16 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y) paletteSlot = graphicsInfo->paletteSlot; if (paletteSlot == 0) { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); } else if (paletteSlot == 10) { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); } else if (paletteSlot >= 16) { paletteSlot -= 16; - sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot); + sub_808EAB0(graphicsInfo->paletteTag, paletteSlot); } *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; spriteId = CreateSprite(&spriteTemplate, 0, 0, 0); @@ -1772,16 +1773,16 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) paletteSlot = graphicsInfo->paletteSlot; if (paletteSlot == 0) { - PatchObjectPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); } else if (paletteSlot == 10) { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot); + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); } else if (paletteSlot >= 16) { paletteSlot -= 16; - sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot); + sub_808EAB0(graphicsInfo->paletteTag, paletteSlot); } sprite->oam.shape = graphicsInfo->oam->shape; sprite->oam.size = graphicsInfo->oam->size; @@ -2033,11 +2034,11 @@ void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot) u8 i; PatchObjectPalette(tag, slot); - for (i = 0; gPlayerReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) + for (i = 0; sPlayerReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) { - if (gPlayerReflectionPaletteSets[i].tag == tag) + if (sPlayerReflectionPaletteSets[i].tag == tag) { - PatchObjectPalette(gPlayerReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]); + PatchObjectPalette(sPlayerReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]); return; } } @@ -2049,11 +2050,11 @@ void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot) sCurrentSpecialObjectPaletteTag = tag; PatchObjectPalette(tag, slot); - for (i = 0; gSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) + for (i = 0; sSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) { - if (gSpecialObjectReflectionPaletteSets[i].tag == tag) + if (sSpecialObjectReflectionPaletteSets[i].tag == tag) { - PatchObjectPalette(gSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]); + PatchObjectPalette(sSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]); return; } } @@ -2504,12 +2505,12 @@ void InitObjectEventPalettes(u8 palSlot) sCurrentReflectionType = palSlot; if (palSlot == 1) { - PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], 0, 6); + PatchObjectPaletteRange(sObjectPaletteTagSets[sCurrentReflectionType], 0, 6); gReservedSpritePaletteCount = 8; } else { - PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], 0, 10); + PatchObjectPaletteRange(sObjectPaletteTagSets[sCurrentReflectionType], 0, 10); } } @@ -2519,13 +2520,13 @@ u16 GetObjectPaletteTag(u8 palSlot) if (palSlot < 10) { - return gObjectPaletteTagSets[sCurrentReflectionType][palSlot]; + return sObjectPaletteTagSets[sCurrentReflectionType][palSlot]; } - for (i = 0; gSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) + for (i = 0; sSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++) { - if (gSpecialObjectReflectionPaletteSets[i].tag == sCurrentSpecialObjectPaletteTag) + if (sSpecialObjectReflectionPaletteSets[i].tag == sCurrentSpecialObjectPaletteTag) { - return gSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType]; + return sSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType]; } } return OBJ_EVENT_PAL_TAG_NONE; diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 886e023d1..2322232b8 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -81,15 +81,15 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, const struct ObjectEventGraphicsInfo *graphicsInfo; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - if (graphicsInfo->paletteTag2 != OBJ_EVENT_PAL_TAG_NONE) + if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) { if (graphicsInfo->paletteSlot == 0) { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, paletteIndex); + LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex); } else if (graphicsInfo->paletteSlot == 10) { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, paletteIndex); + LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex); } else { @@ -106,9 +106,9 @@ static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEven const struct ObjectEventGraphicsInfo *graphicsInfo; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - if (graphicsInfo->paletteTag2 != OBJ_EVENT_PAL_TAG_NONE) + if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) { - PatchObjectPalette(graphicsInfo->paletteTag2, paletteNum); + PatchObjectPalette(graphicsInfo->reflectionPaletteTag, paletteNum); UpdateSpritePaletteWithWeather(paletteNum); } } diff --git a/src/field_specials.c b/src/field_specials.c index b287a071a..5ff697182 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -86,10 +86,10 @@ static EWRAM_DATA u32 sBattleTowerMultiBattleTypeFlags = 0; struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate; -extern const u16 gObjectEventPalette8[]; -extern const u16 gObjectEventPalette17[]; -extern const u16 gObjectEventPalette33[]; -extern const u16 gObjectEventPalette34[]; +extern const u16 gObjectEventPal_Brendan[]; +extern const u16 gObjectEventPal_May[]; +extern const u16 gObjectEventPal_RubySapphireBrendan[]; +extern const u16 gObjectEventPal_RubySapphireMay[]; void TryLoseFansFromPlayTime(void); void SetPlayerGotFirstFans(void); @@ -621,18 +621,18 @@ static void LoadLinkPartnerObjectEventSpritePalette(u8 graphicsId, u8 localEvent switch (graphicsId) { - case OBJ_EVENT_GFX_LINK_RS_BRENDAN: - LoadPalette(gObjectEventPalette33, 0x100 + (adjustedPaletteNum << 4), 0x20); - break; - case OBJ_EVENT_GFX_LINK_RS_MAY: - LoadPalette(gObjectEventPalette34, 0x100 + (adjustedPaletteNum << 4), 0x20); - break; - case OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL: - LoadPalette(gObjectEventPalette8, 0x100 + (adjustedPaletteNum << 4), 0x20); - break; - case OBJ_EVENT_GFX_RIVAL_MAY_NORMAL: - LoadPalette(gObjectEventPalette17, 0x100 + (adjustedPaletteNum << 4), 0x20); - break; + case OBJ_EVENT_GFX_LINK_RS_BRENDAN: + LoadPalette(gObjectEventPal_RubySapphireBrendan, 0x100 + (adjustedPaletteNum << 4), 0x20); + break; + case OBJ_EVENT_GFX_LINK_RS_MAY: + LoadPalette(gObjectEventPal_RubySapphireMay, 0x100 + (adjustedPaletteNum << 4), 0x20); + break; + case OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL: + LoadPalette(gObjectEventPal_Brendan, 0x100 + (adjustedPaletteNum << 4), 0x20); + break; + case OBJ_EVENT_GFX_RIVAL_MAY_NORMAL: + LoadPalette(gObjectEventPal_May, 0x100 + (adjustedPaletteNum << 4), 0x20); + break; } } } From 513c7c5f45b3c79e710ea1e48298d8a7bf9bb591 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 23 Nov 2020 14:41:22 -0500 Subject: [PATCH 024/116] Clarify Kecleon objects --- data/maps/FortreeCity/map.json | 2 +- data/maps/LilycoveCity_House1/map.json | 2 +- data/maps/Route117/map.json | 2 +- data/maps/Route119/map.json | 4 ++-- data/maps/Route120/map.json | 20 +++++++++---------- data/maps/Route120/scripts.inc | 20 +++++++++---------- data/maps/SootopolisCity_House1/map.json | 2 +- include/constants/event_objects.h | 4 ++-- include/constants/flags.h | 4 ++-- src/data/lilycove_lady.h | 2 +- .../object_event_graphics_info.h | 4 ++-- .../object_event_graphics_info_pointers.h | 8 ++++---- 12 files changed, 37 insertions(+), 37 deletions(-) diff --git a/data/maps/FortreeCity/map.json b/data/maps/FortreeCity/map.json index 86d43693a..fd23e6ffd 100644 --- a/data/maps/FortreeCity/map.json +++ b/data/maps/FortreeCity/map.json @@ -104,7 +104,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 25, "y": 8, "elevation": 3, diff --git a/data/maps/LilycoveCity_House1/map.json b/data/maps/LilycoveCity_House1/map.json index bd6850f5a..cbd7cdbdf 100644 --- a/data/maps/LilycoveCity_House1/map.json +++ b/data/maps/LilycoveCity_House1/map.json @@ -28,7 +28,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 4, "y": 4, "elevation": 3, diff --git a/data/maps/Route117/map.json b/data/maps/Route117/map.json index d2f45e256..dd923a7cd 100644 --- a/data/maps/Route117/map.json +++ b/data/maps/Route117/map.json @@ -78,7 +78,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 39, "y": 4, "elevation": 3, diff --git a/data/maps/Route119/map.json b/data/maps/Route119/map.json index fa6391a34..8d78d1065 100644 --- a/data/maps/Route119/map.json +++ b/data/maps/Route119/map.json @@ -468,7 +468,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 31, "y": 6, "elevation": 3, @@ -481,7 +481,7 @@ "flag": "FLAG_HIDE_ROUTE_119_KECLEON_1" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 25, "y": 15, "elevation": 3, diff --git a/data/maps/Route120/map.json b/data/maps/Route120/map.json index 8a7e56ddc..787f51361 100644 --- a/data/maps/Route120/map.json +++ b/data/maps/Route120/map.json @@ -403,7 +403,7 @@ "flag": "FLAG_ITEM_ROUTE_120_HYPER_POTION" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 12, "y": 16, "elevation": 4, @@ -412,8 +412,8 @@ "movement_range_y": 1, "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", - "script": "Route120_EventScript_InvisibleBridgeKecleon", - "flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_INVISIBLE" + "script": "Route120_EventScript_BridgeKecleon", + "flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE" }, { "graphics_id": "OBJ_EVENT_GFX_STEVEN", @@ -481,7 +481,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_2", + "graphics_id": "OBJ_EVENT_GFX_KECLEON_BRIDGE_SHADOW", "x": 12, "y": 16, "elevation": 3, @@ -491,10 +491,10 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "0x0", - "flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_VISIBLE" + "flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_SHADOW" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 20, "y": 11, "elevation": 3, @@ -507,7 +507,7 @@ "flag": "FLAG_HIDE_ROUTE_120_KECLEON_1" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 27, "y": 2, "elevation": 3, @@ -520,7 +520,7 @@ "flag": "FLAG_HIDE_ROUTE_120_KECLEON_2" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 4, "y": 77, "elevation": 3, @@ -533,7 +533,7 @@ "flag": "FLAG_HIDE_ROUTE_120_KECLEON_3" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 7, "y": 51, "elevation": 3, @@ -546,7 +546,7 @@ "flag": "FLAG_HIDE_ROUTE_120_KECLEON_5" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 19, "y": 48, "elevation": 3, diff --git a/data/maps/Route120/scripts.inc b/data/maps/Route120/scripts.inc index 7ec3e1221..0056acbd7 100644 --- a/data/maps/Route120/scripts.inc +++ b/data/maps/Route120/scripts.inc @@ -1,6 +1,6 @@ -.set LOCALID_INVISIBLE_BRIDGE_KECLEON, 30 +.set LOCALID_BRIDGE_KECLEON, 30 .set LOCALID_STEVEN, 31 -.set LOCALID_VISIBLE_BRIDGE_KECLEON, 36 +.set LOCALID_BRIDGE_KECLEON_SHADOW, 36 @ They use a second object which is identical to Kecleon but has a reflection palette tag for the bridge shadow Route120_MapScripts:: @ 81F53EC map_script MAP_SCRIPT_ON_RESUME, Route120_OnResume @@ -31,8 +31,8 @@ Route120_EventScript_RemoveBridgeKecleon:: @ 81F5449 specialvar VAR_RESULT, GetBattleOutcome compare VAR_RESULT, B_OUTCOME_CAUGHT goto_if_ne Common_EventScript_NopReturn - removeobject LOCALID_INVISIBLE_BRIDGE_KECLEON - removeobject LOCALID_VISIBLE_BRIDGE_KECLEON + removeobject LOCALID_BRIDGE_KECLEON + removeobject LOCALID_BRIDGE_KECLEON_SHADOW return Route120_EventScript_RemoveKecleon:: @ 81F5460 @@ -61,7 +61,7 @@ Route120_EventScript_SetBridgeClearMetatiles:: @ 81F54A3 return Route120_EventScript_SetBridgeKecleonMovement:: @ 81F54C8 - setobjectmovementtype LOCALID_VISIBLE_BRIDGE_KECLEON, MOVEMENT_TYPE_FACE_RIGHT + setobjectmovementtype LOCALID_BRIDGE_KECLEON_SHADOW, MOVEMENT_TYPE_FACE_RIGHT return Route120_OnTransition: @ 81F54CD @@ -205,9 +205,9 @@ Route120_EventScript_StevenBattleKecleon:: @ 81F568B delay 20 msgbox Route120_Text_StevenUsedDevonScope, MSGBOX_DEFAULT closemessage - applymovement LOCALID_INVISIBLE_BRIDGE_KECLEON, Common_Movement_WalkInPlaceFastestRight + applymovement LOCALID_BRIDGE_KECLEON, Common_Movement_WalkInPlaceFastestRight waitmovement 0 - applymovement LOCALID_INVISIBLE_BRIDGE_KECLEON, Movement_KecleonAppears + applymovement LOCALID_BRIDGE_KECLEON, Movement_KecleonAppears waitmovement 0 waitse playmoncry SPECIES_KECLEON, 2 @@ -230,8 +230,8 @@ Route120_EventScript_StevenBattleKecleon:: @ 81F568B Route120_EventScript_RemoveBridgeKecleonPostBattle:: @ 81F571C fadescreenswapbuffers FADE_TO_BLACK - removeobject LOCALID_INVISIBLE_BRIDGE_KECLEON - removeobject LOCALID_VISIBLE_BRIDGE_KECLEON + removeobject LOCALID_BRIDGE_KECLEON + removeobject LOCALID_BRIDGE_KECLEON_SHADOW fadescreenswapbuffers FADE_FROM_BLACK goto Route120_EventScript_StevenGiveDeconScope end @@ -276,7 +276,7 @@ Route120_Movement_ApproachKecleonWest: @ 81F57B9 walk_left step_end -Route120_EventScript_InvisibleBridgeKecleon:: @ 81F57BC +Route120_EventScript_BridgeKecleon:: @ 81F57BC msgbox Kecleon_Text_SomethingUnseeable, MSGBOX_NPC end diff --git a/data/maps/SootopolisCity_House1/map.json b/data/maps/SootopolisCity_House1/map.json index 26c47c432..29162b867 100644 --- a/data/maps/SootopolisCity_House1/map.json +++ b/data/maps/SootopolisCity_House1/map.json @@ -28,7 +28,7 @@ "flag": "0" }, { - "graphics_id": "OBJ_EVENT_GFX_KECLEON_1", + "graphics_id": "OBJ_EVENT_GFX_KECLEON", "x": 2, "y": 3, "elevation": 3, diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index ca312e957..8e026ef2d 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -205,7 +205,7 @@ #define OBJ_EVENT_GFX_REGICE 201 #define OBJ_EVENT_GFX_REGISTEEL 202 #define OBJ_EVENT_GFX_SKITTY 203 -#define OBJ_EVENT_GFX_KECLEON_1 204 +#define OBJ_EVENT_GFX_KECLEON 204 #define OBJ_EVENT_GFX_KYOGRE_2 205 #define OBJ_EVENT_GFX_GROUDON_2 206 #define OBJ_EVENT_GFX_RAYQUAZA_2 207 @@ -213,7 +213,7 @@ #define OBJ_EVENT_GFX_PIKACHU 209 #define OBJ_EVENT_GFX_AZUMARILL 210 #define OBJ_EVENT_GFX_WINGULL 211 -#define OBJ_EVENT_GFX_KECLEON_2 212 +#define OBJ_EVENT_GFX_KECLEON_BRIDGE_SHADOW 212 #define OBJ_EVENT_GFX_TUBER_M_SWIMMING 213 #define OBJ_EVENT_GFX_AZURILL 214 #define OBJ_EVENT_GFX_MOM 215 diff --git a/include/constants/flags.h b/include/constants/flags.h index a562b0670..9be269105 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1012,7 +1012,7 @@ #define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_STEVEN 0x3C7 #define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_BELDUM_POKEBALL 0x3C8 #define FLAG_HIDE_FORTREE_CITY_KECLEON 0x3C9 -#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_INVISIBLE 0x3CA +#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE 0x3CA #define FLAG_HIDE_LILYCOVE_CITY_RIVAL 0x3CB #define FLAG_HIDE_ROUTE_120_STEVEN 0x3CC #define FLAG_HIDE_SOOTOPOLIS_CITY_STEVEN 0x3CD @@ -1023,7 +1023,7 @@ #define FLAG_HIDE_AQUA_HIDEOUT_B1F_ELECTRODE_2 0x3D2 #define FLAG_HIDE_OLDALE_TOWN_RIVAL 0x3D3 #define FLAG_HIDE_UNDERWATER_SEA_FLOOR_CAVERN_STOLEN_SUBMARINE 0x3D4 -#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_VISIBLE 0x3D5 +#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_SHADOW 0x3D5 #define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3D6 #define FLAG_HIDE_RUSTURF_TUNNEL_WANDA 0x3D7 #define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WANDA 0x3D8 diff --git a/src/data/lilycove_lady.h b/src/data/lilycove_lady.h index cf6c0c648..37bae7e95 100644 --- a/src/data/lilycove_lady.h +++ b/src/data/lilycove_lady.h @@ -8,7 +8,7 @@ static const u16 sContestLadyMonGfxId[] = OBJ_EVENT_GFX_ZIGZAGOON_1, OBJ_EVENT_GFX_SKITTY, OBJ_EVENT_GFX_POOCHYENA, - OBJ_EVENT_GFX_KECLEON_1, + OBJ_EVENT_GFX_KECLEON, OBJ_EVENT_GFX_PIKACHU }; diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 7b0dc44cc..c6c78dca9 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -205,7 +205,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = {0xFFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Skitty, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2 = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Rayquaza2, gObjectEventPicTable_Rayquaza, gDummySpriteAffineAnimTable}; @@ -213,7 +213,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFF const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Pikachu, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wingull, gDummySpriteAffineAnimTable}; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberMSwimming, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azurill, gDummySpriteAffineAnimTable}; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mom, gDummySpriteAffineAnimTable}; diff --git a/src/data/object_events/object_event_graphics_info_pointers.h b/src/data/object_events/object_event_graphics_info_pointers.h index c72b0279d..0ca70fa33 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -202,7 +202,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon1; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2; @@ -210,7 +210,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon2; +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill; const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom; @@ -451,7 +451,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_REGICE] = &gObjectEventGraphicsInfo_Regice, [OBJ_EVENT_GFX_REGISTEEL] = &gObjectEventGraphicsInfo_Registeel, [OBJ_EVENT_GFX_SKITTY] = &gObjectEventGraphicsInfo_Skitty, - [OBJ_EVENT_GFX_KECLEON_1] = &gObjectEventGraphicsInfo_Kecleon1, + [OBJ_EVENT_GFX_KECLEON] = &gObjectEventGraphicsInfo_Kecleon, [OBJ_EVENT_GFX_KYOGRE_2] = &gObjectEventGraphicsInfo_Kyogre2, [OBJ_EVENT_GFX_GROUDON_2] = &gObjectEventGraphicsInfo_Groudon2, [OBJ_EVENT_GFX_RAYQUAZA_2] = &gObjectEventGraphicsInfo_Rayquaza2, @@ -459,7 +459,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_PIKACHU] = &gObjectEventGraphicsInfo_Pikachu, [OBJ_EVENT_GFX_AZUMARILL] = &gObjectEventGraphicsInfo_Azumarill, [OBJ_EVENT_GFX_WINGULL] = &gObjectEventGraphicsInfo_Wingull, - [OBJ_EVENT_GFX_KECLEON_2] = &gObjectEventGraphicsInfo_Kecleon2, + [OBJ_EVENT_GFX_KECLEON_BRIDGE_SHADOW] = &gObjectEventGraphicsInfo_KecleonBridgeShadow, [OBJ_EVENT_GFX_TUBER_M_SWIMMING] = &gObjectEventGraphicsInfo_TuberMSwimming, [OBJ_EVENT_GFX_AZURILL] = &gObjectEventGraphicsInfo_Azurill, [OBJ_EVENT_GFX_MOM] = &gObjectEventGraphicsInfo_Mom, From 9d056e865655af52c16be7c04df42be378259439 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 23 Nov 2020 14:45:16 -0500 Subject: [PATCH 025/116] Move object event pal declarations to graphics --- include/graphics.h | 6 ++++++ src/contest_util.c | 5 ----- src/field_specials.c | 6 +----- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/include/graphics.h b/include/graphics.h index 32268d6db..936f95aa8 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -5014,4 +5014,10 @@ extern const u16 gPokenavMessageBox_Pal[]; extern const u32 gPokenavOptions_Gfx[]; extern const u16 gPokenavOptions_Pal[]; +// Object event pals +extern const u16 gObjectEventPal_Brendan[]; +extern const u16 gObjectEventPal_May[]; +extern const u16 gObjectEventPal_RubySapphireBrendan[]; +extern const u16 gObjectEventPal_RubySapphireMay[]; + #endif //GUARD_GRAPHICS_H diff --git a/src/contest_util.c b/src/contest_util.c index 9f9582292..9ddfdad1d 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -166,11 +166,6 @@ static void SpriteCB_Confetti(struct Sprite *sprite); static void Task_ShowContestEntryMonPic(u8 taskId); static void Task_LinkContestWaitForConnection(u8 taskId); -extern const u16 gObjectEventPal_Brendan[]; -extern const u16 gObjectEventPal_May[]; -extern const u16 gObjectEventPal_RubySapphireBrendan[]; -extern const u16 gObjectEventPal_RubySapphireMay[]; - static const u16 sUnknown_0858D6B0[] = INCBIN_U16("graphics/unknown/unknown_58D6B0.gbapal"); static const u8 sUnknown_0858D6D0[] = INCBIN_U8("graphics/unknown/unknown_58D6D0.4bpp"); static const u16 sMiscBlank_Pal[] = INCBIN_U16("graphics/interface/blank.gbapal"); diff --git a/src/field_specials.c b/src/field_specials.c index 5ff697182..51030a387 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -16,6 +16,7 @@ #include "field_screen_effect.h" #include "field_specials.h" #include "field_weather.h" +#include "graphics.h" #include "international_string_util.h" #include "item_icon.h" #include "link.h" @@ -86,11 +87,6 @@ static EWRAM_DATA u32 sBattleTowerMultiBattleTypeFlags = 0; struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate; -extern const u16 gObjectEventPal_Brendan[]; -extern const u16 gObjectEventPal_May[]; -extern const u16 gObjectEventPal_RubySapphireBrendan[]; -extern const u16 gObjectEventPal_RubySapphireMay[]; - void TryLoseFansFromPlayTime(void); void SetPlayerGotFirstFans(void); u16 GetNumFansOfPlayerInTrainerFanClub(void); From 6c0878b5fe5f7bc6430d3660528460f286d27ab7 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 24 Nov 2020 17:21:59 -0500 Subject: [PATCH 026/116] infestation between turn anim --- data/battle_anim_scripts.s | 20 ++++++++++++++++++++ include/constants/battle_anim.h | 1 + src/battle_anim_throw.c | 2 ++ 3 files changed, 23 insertions(+) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 70ed22c9e..431ca8e2e 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -23929,6 +23929,7 @@ General_TurnTrap: jumpargeq 0, TRAP_ANIM_WHIRLPOOL, Status_Whirlpool jumpargeq 0, TRAP_ANIM_CLAMP, Status_Clamp jumpargeq 0, TRAP_ANIM_SAND_TOMB, Status_SandTomb + jumpargeq 0, TRAP_ANIM_INFESTATION, Status_Infestation goto Status_BindWrap Status_BindWrap: loadspritegfx ANIM_TAG_TENDRILS @@ -24002,6 +24003,25 @@ Status_SandTomb: stopsound end +Status_Infestation: + loadspritegfx ANIM_TAG_HANDS_AND_FEET @black color + loadspritegfx ANIM_TAG_SMALL_BUBBLES @circle particles + monbg ANIM_DEF_PARTNER + monbgprio_28 ANIM_TARGET + createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_DEF, 0x2, 0x0, 0x9, 0x7320 + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x4f 0x1 + loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 0x4F + call InfestationVortex + call InfestationVortex + call InfestationVortex + call InfestationVortex + call InfestationVortex + waitforvisualfinish + launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x7320 + waitforvisualfinish + clearmonbg ANIM_DEF_PARTNER + end + General_HeldItemEffect: loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 871aa1e35..633f0ae8a 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -558,6 +558,7 @@ #define TRAP_ANIM_WHIRLPOOL 2 #define TRAP_ANIM_CLAMP 3 #define TRAP_ANIM_SAND_TOMB 4 +#define TRAP_ANIM_INFESTATION 5 // Weather defines for battle animation scripts. #define ANIM_WEATHER_NONE 0 diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index ad3270235..c8c2b9e6a 100755 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -2494,6 +2494,8 @@ void AnimTask_GetTrappedMoveAnimId(u8 taskId) gBattleAnimArgs[0] = TRAP_ANIM_CLAMP; else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_SAND_TOMB) gBattleAnimArgs[0] = TRAP_ANIM_SAND_TOMB; + else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_INFESTATION) + gBattleAnimArgs[0] = TRAP_ANIM_INFESTATION; else gBattleAnimArgs[0] = TRAP_ANIM_BIND; From 94cbd3ff1b916d045663f3c7dab2268b75c9bde2 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Thu, 26 Nov 2020 01:30:59 -0500 Subject: [PATCH 027/116] [LEAK INFORMED] match sub_819A080 --- src/menu.c | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/src/menu.c b/src/menu.c index dca8adc2d..12bd71f33 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2016,7 +2016,7 @@ void sub_819A080(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 src { int loopSrcY, loopDstY, loopSrcX, loopDstX, xEnd, yEnd, multiplierSrcY, multiplierDstY; const u8 *pixelsSrc; - u16 *pixelsDst; + u8 *pixelsDst; u16 toOrr; if (dst->width - dstX < width) @@ -2037,53 +2037,52 @@ void sub_819A080(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 src for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++) { pixelsSrc = src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX >> 3) << 5) + (((loopSrcY >> 3) * multiplierSrcY) << 5) + ((u32)(loopSrcY << 0x1d) >> 0x1B); - pixelsDst = (void*) dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)( loopDstY << 0x1d) >> 0x1B); + pixelsDst = (void*) dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)(loopDstY << 0x1d) >> 0x1B); if ((uintptr_t )pixelsDst & 0x1) { - pixelsDst = (void*)(pixelsDst) - 1; + pixelsDst--; if (loopDstX & 0x1) { - toOrr = *pixelsDst & 0x0fff; + toOrr = *(vu16*)pixelsDst; + toOrr &= 0x0fff; if (loopSrcX & 0x1) - *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 8); + toOrr |= ((*pixelsSrc & 0xf0) << 8); else - *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 12); + toOrr |= ((*pixelsSrc & 0x0f) << 12); } else { - toOrr = *pixelsDst & 0xf0ff; + toOrr = *(vu16*)pixelsDst; + toOrr &= 0xf0ff; if (loopSrcX & 0x1) - *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 4); + toOrr |= ((*pixelsSrc & 0xf0) << 4); else - *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 8); + toOrr |= ((*pixelsSrc & 0x0f) << 8); } } else { if (loopDstX & 1) { - toOrr = *pixelsDst & 0xff0f; + toOrr = *(vu16*)pixelsDst; + toOrr &= 0xff0f; if (loopSrcX & 1) - *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 0); + toOrr |= ((*pixelsSrc & 0xf0) << 0); else - *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 4); + toOrr |= ((*pixelsSrc & 0x0f) << 4); } else { - toOrr = *pixelsDst & 0xfff0; + toOrr = *(vu16*)pixelsDst; + toOrr &= 0xfff0; if (loopSrcX & 1) - *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) >> 4); + toOrr |= ((*pixelsSrc & 0xf0) >> 4); else - *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) >> 0); + toOrr |= ((*pixelsSrc & 0x0f) >> 0); } } - - // Needed to match, urgh. - #ifndef NONMATCHING - asm("":::"r4"); - pixelsDst++;pixelsDst--; - #endif // NONMATCHING + *(vu16*)pixelsDst = toOrr; } } } From 54becd2303fa25db7e0db42525f44acc964c03e3 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Thu, 26 Nov 2020 01:35:08 -0500 Subject: [PATCH 028/116] whitespace --- src/menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/menu.c b/src/menu.c index 12bd71f33..4813f7b02 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2039,7 +2039,7 @@ void sub_819A080(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 src pixelsSrc = src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX >> 3) << 5) + (((loopSrcY >> 3) * multiplierSrcY) << 5) + ((u32)(loopSrcY << 0x1d) >> 0x1B); pixelsDst = (void*) dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)(loopDstY << 0x1d) >> 0x1B); - if ((uintptr_t )pixelsDst & 0x1) + if ((uintptr_t)pixelsDst & 0x1) { pixelsDst--; if (loopDstX & 0x1) From 0f04944b81088133754b675d4e715c4caa53161e Mon Sep 17 00:00:00 2001 From: Ashley Coleman Date: Thu, 26 Nov 2020 11:05:02 -0800 Subject: [PATCH 029/116] Rename graphics files for COOLTRAINER to match define --- ..._f_front_pic.png => cooltrainer_f_front_pic.png} | Bin ..._m_front_pic.png => cooltrainer_m_front_pic.png} | Bin .../{cool_trainer_f.pal => cooltrainer_f.pal} | 0 .../{cool_trainer_m.pal => cooltrainer_m.pal} | 0 src/data/graphics/trainers.h | 8 ++++---- 5 files changed, 4 insertions(+), 4 deletions(-) rename graphics/trainers/front_pics/{cool_trainer_f_front_pic.png => cooltrainer_f_front_pic.png} (100%) rename graphics/trainers/front_pics/{cool_trainer_m_front_pic.png => cooltrainer_m_front_pic.png} (100%) rename graphics/trainers/palettes/{cool_trainer_f.pal => cooltrainer_f.pal} (100%) rename graphics/trainers/palettes/{cool_trainer_m.pal => cooltrainer_m.pal} (100%) diff --git a/graphics/trainers/front_pics/cool_trainer_f_front_pic.png b/graphics/trainers/front_pics/cooltrainer_f_front_pic.png similarity index 100% rename from graphics/trainers/front_pics/cool_trainer_f_front_pic.png rename to graphics/trainers/front_pics/cooltrainer_f_front_pic.png diff --git a/graphics/trainers/front_pics/cool_trainer_m_front_pic.png b/graphics/trainers/front_pics/cooltrainer_m_front_pic.png similarity index 100% rename from graphics/trainers/front_pics/cool_trainer_m_front_pic.png rename to graphics/trainers/front_pics/cooltrainer_m_front_pic.png diff --git a/graphics/trainers/palettes/cool_trainer_f.pal b/graphics/trainers/palettes/cooltrainer_f.pal similarity index 100% rename from graphics/trainers/palettes/cool_trainer_f.pal rename to graphics/trainers/palettes/cooltrainer_f.pal diff --git a/graphics/trainers/palettes/cool_trainer_m.pal b/graphics/trainers/palettes/cooltrainer_m.pal similarity index 100% rename from graphics/trainers/palettes/cool_trainer_m.pal rename to graphics/trainers/palettes/cooltrainer_m.pal diff --git a/src/data/graphics/trainers.h b/src/data/graphics/trainers.h index 3de77d6ec..206d73a88 100644 --- a/src/data/graphics/trainers.h +++ b/src/data/graphics/trainers.h @@ -7,8 +7,8 @@ const u32 gTrainerPalette_AquaGruntM[] = INCBIN_U32("graphics/trainers/palettes/ const u32 gTrainerFrontPic_PokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_f_front_pic.4bpp.lz"); const u32 gTrainerPalette_PokemonBreederF[] = INCBIN_U32("graphics/trainers/palettes/pokemon_breeder_f.gbapal.lz"); -const u32 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cool_trainer_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_CoolTrainerM[] = INCBIN_U32("graphics/trainers/palettes/cool_trainer_m.gbapal.lz"); +const u32 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_m_front_pic.4bpp.lz"); +const u32 gTrainerPalette_CoolTrainerM[] = INCBIN_U32("graphics/trainers/palettes/cooltrainer_m.gbapal.lz"); const u32 gTrainerFrontPic_BirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/bird_keeper_front_pic.4bpp.lz"); const u32 gTrainerPalette_BirdKeeper[] = INCBIN_U32("graphics/trainers/palettes/bird_keeper.gbapal.lz"); @@ -58,8 +58,8 @@ const u32 gTrainerPalette_TuberF[] = INCBIN_U32("graphics/trainers/palettes/tube const u32 gTrainerFrontPic_TuberM[] = INCBIN_U32("graphics/trainers/front_pics/tuber_m_front_pic.4bpp.lz"); const u32 gTrainerPalette_TuberM[] = INCBIN_U32("graphics/trainers/palettes/tuber_m.gbapal.lz"); -const u32 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cool_trainer_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_CoolTrainerF[] = INCBIN_U32("graphics/trainers/palettes/cool_trainer_f.gbapal.lz"); +const u32 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_f_front_pic.4bpp.lz"); +const u32 gTrainerPalette_CoolTrainerF[] = INCBIN_U32("graphics/trainers/palettes/cooltrainer_f.gbapal.lz"); const u32 gTrainerFrontPic_Lady[] = INCBIN_U32("graphics/trainers/front_pics/lady_front_pic.4bpp.lz"); const u32 gTrainerPalette_Lady[] = INCBIN_U32("graphics/trainers/palettes/lady.gbapal.lz"); From 076b2c2edc3688aa94f3e627ab68ceb49a80b3f1 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 30 Nov 2020 15:32:08 -0500 Subject: [PATCH 030/116] Designated initializers for gTrainerBackPicTable --- src/data.c | 5 ----- src/data/trainer_graphics/back_pic_tables.h | 20 ++++++++++++-------- src/data/trainer_graphics/front_pic_tables.h | 4 ++++ 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/data.c b/src/data.c index 29d1835ac..4861da18b 100644 --- a/src/data.c +++ b/src/data.c @@ -295,11 +295,6 @@ const union AnimCmd *const gUnknown_082FF70C[] = #define SPECIES_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species} #define SPECIES_SHINY_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species + SPECIES_SHINY_TAG} -#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic} -#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic} - -#define TRAINER_BACK_PAL(trainerPic, pal) [TRAINER_BACK_PIC_##trainerPic] = {pal, TRAINER_BACK_PIC_##trainerPic} - #include "data/pokemon_graphics/unknown_anims.h" #include "data/pokemon_graphics/front_pic_coordinates.h" #include "data/pokemon_graphics/still_front_pic_table.h" diff --git a/src/data/trainer_graphics/back_pic_tables.h b/src/data/trainer_graphics/back_pic_tables.h index 86efd7905..1dbffba42 100644 --- a/src/data/trainer_graphics/back_pic_tables.h +++ b/src/data/trainer_graphics/back_pic_tables.h @@ -13,18 +13,22 @@ const struct MonCoords gTrainerBackPicCoords[] = // this table goes functionally unused, since none of these pics are compressed // and the place they would get extracted to gets overwritten later anyway // the casts are so they'll play nice with the strict struct definition +#define TRAINER_BACK_SPRITE(trainerPic, sprite, size) [TRAINER_BACK_PIC_##trainerPic] = {(const u32 *)sprite, size, TRAINER_BACK_PIC_##trainerPic} + const struct CompressedSpriteSheet gTrainerBackPicTable[] = { - (const u32 *)gTrainerBackPic_Brendan, 0x2000, TRAINER_BACK_PIC_BRENDAN, - (const u32 *)gTrainerBackPic_May, 0x2000, TRAINER_BACK_PIC_MAY, - (const u32 *)gTrainerBackPic_Red, 0x2800, TRAINER_BACK_PIC_RED, - (const u32 *)gTrainerBackPic_Leaf, 0x2800, TRAINER_BACK_PIC_LEAF, - (const u32 *)gTrainerBackPic_RubySapphireBrendan, 0x2000, TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN, - (const u32 *)gTrainerBackPic_RubySapphireMay, 0x2000, TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY, - (const u32 *)gTrainerBackPic_Wally, 0x2000, TRAINER_BACK_PIC_WALLY, - (const u32 *)gTrainerBackPic_Steven, 0x2000, TRAINER_BACK_PIC_STEVEN, + TRAINER_BACK_SPRITE(BRENDAN, gTrainerBackPic_Brendan, 0x2000), + TRAINER_BACK_SPRITE(MAY, gTrainerBackPic_May, 0x2000), + TRAINER_BACK_SPRITE(RED, gTrainerBackPic_Red, 0x2800), + TRAINER_BACK_SPRITE(LEAF, gTrainerBackPic_Leaf, 0x2800), + TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_BRENDAN, gTrainerBackPic_RubySapphireBrendan, 0x2000), + TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_MAY, gTrainerBackPic_RubySapphireMay, 0x2000), + TRAINER_BACK_SPRITE(WALLY, gTrainerBackPic_Wally, 0x2000), + TRAINER_BACK_SPRITE(STEVEN, gTrainerBackPic_Steven, 0x2000), }; +#define TRAINER_BACK_PAL(trainerPic, pal) [TRAINER_BACK_PIC_##trainerPic] = {pal, TRAINER_BACK_PIC_##trainerPic} + const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] = { TRAINER_BACK_PAL(BRENDAN, gTrainerPalette_Brendan), diff --git a/src/data/trainer_graphics/front_pic_tables.h b/src/data/trainer_graphics/front_pic_tables.h index c3408b4c3..e751f3c1d 100644 --- a/src/data/trainer_graphics/front_pic_tables.h +++ b/src/data/trainer_graphics/front_pic_tables.h @@ -95,6 +95,8 @@ const struct MonCoords gTrainerFrontPicCoords[] = [TRAINER_PIC_RS_MAY] = {.size = 8, .y_offset = 1}, }; +#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic} + const struct CompressedSpriteSheet gTrainerFrontPicTable[] = { TRAINER_SPRITE(HIKER, gTrainerFrontPic_Hiker, 0x800), @@ -192,6 +194,8 @@ const struct CompressedSpriteSheet gTrainerFrontPicTable[] = TRAINER_SPRITE(RS_MAY, gTrainerFrontPic_RubySapphireMay, 0x800), }; +#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic} + const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[] = { TRAINER_PAL(HIKER, gTrainerPalette_Hiker), From 58a79a4f37e7c14380744bbbc1de58f2e68abf7c Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 1 Dec 2020 17:52:44 -0500 Subject: [PATCH 031/116] shorten between-turn infestation anim length --- data/battle_anim_scripts.s | 3 --- 1 file changed, 3 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 431ca8e2e..a8af18686 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -24013,9 +24013,6 @@ Status_Infestation: loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 0x4F call InfestationVortex call InfestationVortex - call InfestationVortex - call InfestationVortex - call InfestationVortex waitforvisualfinish launchtask AnimTask_BlendBattleAnimPal 0xA 0x5 ANIM_PAL_DEF 0x2 0x9 0x0 0x7320 waitforvisualfinish From e11fa09632e87594b599455517bf7d3521758b65 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 2 Dec 2020 18:46:29 -0300 Subject: [PATCH 032/116] Implemented Intrepid Sword and Dauntless Shield and... -Renamed BattleScript_TargetAbilityStatRaise to BattleScript_TargetAbilityStatRaiseOnMoveEnd -Added a copy, BattleScript_TargetAbilityStatRaiseOnSwitchin Their labels reflect the instances of a battle in which they can be called. --- data/battle_scripts_1.s | 12 +++++++++++- include/battle_scripts.h | 3 ++- src/battle_util.c | 28 +++++++++++++++++++++++----- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 6f1ceb63b..fa59e58ce 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7082,7 +7082,17 @@ BattleScript_AngryPointActivates:: waitmessage 0x40 return -BattleScript_TargetAbilityStatRaise:: +BattleScript_TargetAbilityStatRaiseOnSwitchin:: + call BattleScript_AbilityPopUp + statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + waitanimation + printstring STRINGID_TARGETABILITYSTATRAISE + waitmessage 0x40 + end3 + +BattleScript_TargetAbilityStatRaiseOnMoveEnd:: call BattleScript_AbilityPopUp statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL setgraphicalstatchangevalues diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 3566a1c4d..7799e721f 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -249,7 +249,7 @@ extern const u8 BattleScript_SturdiedMsg[]; extern const u8 BattleScript_GravityEnds[]; extern const u8 BattleScript_MoveStatDrain[]; extern const u8 BattleScript_MoveStatDrain_PPLoss[]; -extern const u8 BattleScript_TargetAbilityStatRaise[]; +extern const u8 BattleScript_TargetAbilityStatRaiseOnMoveEnd[]; extern const u8 BattleScript_AngryPointActivates[]; extern const u8 BattleScript_AttackerAbilityStatRaise[]; extern const u8 BattleScript_AttackerAbilityStatRaiseEnd3[]; @@ -350,5 +350,6 @@ extern const u8 BattleScript_EmergencyExitWild[]; extern const u8 BattleScript_EmergencyExitWildNoPopUp[]; extern const u8 BattleScript_CheekPouchActivates[]; extern const u8 BattleScript_AnnounceAirLockCloudNine[]; +extern const u8 BattleScript_TargetAbilityStatRaiseOnSwitchin[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/src/battle_util.c b/src/battle_util.c index b929b7499..ef414b711 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3936,6 +3936,24 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect++; } break; + case ABILITY_INTREPID_SWORD: + if (!gSpecialStatuses[battler].switchInAbilityDone) + { + gSpecialStatuses[battler].switchInAbilityDone = 1; + SET_STATCHANGER(STAT_ATK, 1, FALSE); + BattleScriptPushCursorAndCallback(BattleScript_TargetAbilityStatRaiseOnSwitchin); + effect++; + } + break; + case ABILITY_DAUNTLESS_SHIELD: + if (!gSpecialStatuses[battler].switchInAbilityDone) + { + gSpecialStatuses[battler].switchInAbilityDone = 1; + SET_STATCHANGER(STAT_DEF, 1, FALSE); + BattleScriptPushCursorAndCallback(BattleScript_TargetAbilityStatRaiseOnSwitchin); + effect++; + } + break; } break; case ABILITYEFFECT_ENDTURN: // 1 @@ -4249,7 +4267,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { SET_STATCHANGER(STAT_ATK, 1, FALSE); BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaise; + gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseOnMoveEnd; effect++; } break; @@ -4262,7 +4280,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { SET_STATCHANGER(STAT_SPEED, 1, FALSE); BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaise; + gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseOnMoveEnd; effect++; } break; @@ -4275,7 +4293,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { SET_STATCHANGER(STAT_DEF, 2, FALSE); BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaise; + gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseOnMoveEnd; effect++; } break; @@ -4287,7 +4305,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { SET_STATCHANGER(STAT_DEF, 1, FALSE); BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaise; + gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseOnMoveEnd; effect++; } break; @@ -4304,7 +4322,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { SET_STATCHANGER(STAT_SPATK, 1, FALSE); BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaise; + gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseOnMoveEnd; effect++; } break; From 3d8308844c92e3d1ae09d8129d731f65ae8f23b4 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 2 Dec 2020 19:09:59 -0300 Subject: [PATCH 033/116] Implemented Libero Kappa. --- src/battle_script_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 747dcb484..45761ce0f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1273,7 +1273,7 @@ static void Cmd_attackcanceler(void) // Check Protean activation. GET_MOVE_TYPE(gCurrentMove, moveType); - if (GetBattlerAbility(gBattlerAttacker) == ABILITY_PROTEAN + if ((GetBattlerAbility(gBattlerAttacker) == ABILITY_PROTEAN || GetBattlerAbility(gBattlerAttacker) == ABILITY_LIBERO) && (gBattleMons[gBattlerAttacker].type1 != moveType || gBattleMons[gBattlerAttacker].type2 != moveType || (gBattleMons[gBattlerAttacker].type3 != moveType && gBattleMons[gBattlerAttacker].type3 != TYPE_MYSTERY)) && gCurrentMove != MOVE_STRUGGLE) From 0c4c6fc7786d8cb572d4ef66e62697203f1cff06 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 2 Dec 2020 22:53:00 -0300 Subject: [PATCH 034/116] Implemented Cotton Down --- data/battle_scripts_1.s | 19 +++++++++++++++++++ include/battle_scripts.h | 1 + src/battle_util.c | 15 +++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index fa59e58ce..769ef1daa 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6189,6 +6189,25 @@ BattleScript_IllusionOff:: waitmessage 0x40 return +BattleScript_CottonDownActivates:: + setbyte gBattlerTarget, 0x1 +BattleScript_CottonDownLoop: + setstatchanger STAT_SPEED, 1, TRUE + statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED | STAT_BUFF_ALLOW_PTR, BattleScript_CottonDownActivatesLoopIncrement + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CottonDownEnd + call BattleScript_AbilityPopUp + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + setbyte gBattleCommunication STAT_SPEED + stattextbuffer BS_TARGET + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_CottonDownActivatesLoopIncrement: + addbyte gBattlerTarget, 0x1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_CottonDownLoop +BattleScript_CottonDownEnd: + end3 + BattleScript_AnticipationActivates:: pause 0x5 call BattleScript_AbilityPopUp diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 7799e721f..62c5ce2e0 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -351,5 +351,6 @@ extern const u8 BattleScript_EmergencyExitWildNoPopUp[]; extern const u8 BattleScript_CheekPouchActivates[]; extern const u8 BattleScript_AnnounceAirLockCloudNine[]; extern const u8 BattleScript_TargetAbilityStatRaiseOnSwitchin[]; +extern const u8 BattleScript_CottonDownActivates[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/src/battle_util.c b/src/battle_util.c index ef414b711..9372fe694 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4608,6 +4608,21 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect++; } break; + case ABILITY_COTTON_DOWN: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && gBattleMons[gBattlerTarget].hp != 0 + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && TARGET_TURN_DAMAGED) + { + for (i = 0; i < gBattlersCount; i++) + { + gBattlerAttacker = i; + BattleScriptPushCursorAndCallback(BattleScript_CottonDownActivates); + effect++; + break; + } + } + break; } break; case ABILITYEFFECT_MOVE_END_ATTACKER: // Same as above, but for attacker From 9e1d7cc8273775698fe4bc294308a95615e8b59c Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 2 Dec 2020 23:09:35 -0300 Subject: [PATCH 035/116] Implemented Ball Fetch --- data/battle_scripts_1.s | 5 +++++ include/battle.h | 2 ++ include/battle_scripts.h | 1 + include/constants/battle_string_ids.h | 3 ++- src/battle_main.c | 5 +++++ src/battle_message.c | 2 ++ src/battle_script_commands.c | 5 +++++ src/battle_util.c | 14 ++++++++++++++ 8 files changed, 36 insertions(+), 1 deletion(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 769ef1daa..8c7f31f1e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6165,6 +6165,11 @@ BattleScript_AttackerFormChangeEnd3:: call BattleScript_AttackerFormChange end3 +BattleScript_BallFetch:: + printstring STRINGID_FETCHEDPOKEBALL + waitmessage 0x40 + end3 + BattleScript_TargetFormChange:: pause 0x5 copybyte gBattlerAbility, gBattlerTarget diff --git a/include/battle.h b/include/battle.h index a6e201a23..5783f5093 100644 --- a/include/battle.h +++ b/include/battle.h @@ -827,5 +827,7 @@ extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT]; extern u8 gMultiUsePlayerCursor; extern u8 gNumberOfMovesToChoose; extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT]; +extern bool8 gHasFetchedBall; +extern u8 gLastUsedBall; #endif // GUARD_BATTLE_H diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 62c5ce2e0..9fa4256b4 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -352,5 +352,6 @@ extern const u8 BattleScript_CheekPouchActivates[]; extern const u8 BattleScript_AnnounceAirLockCloudNine[]; extern const u8 BattleScript_TargetAbilityStatRaiseOnSwitchin[]; extern const u8 BattleScript_CottonDownActivates[]; +extern const u8 BattleScript_BallFetch[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 9348d67d5..4d3ba62a8 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -558,8 +558,9 @@ #define STRINGID_AURABREAKENTERS 554 #define STRINGID_COMATOSEENTERS 555 #define STRINGID_SCREENCLEANERENTERS 556 +#define STRINGID_FETCHEDPOKEBALL 557 -#define BATTLESTRINGS_COUNT 557 +#define BATTLESTRINGS_COUNT 558 //// multichoice message IDs // switch in ability message diff --git a/src/battle_main.c b/src/battle_main.c index 48129c523..e2c23bd2a 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -228,6 +228,8 @@ EWRAM_DATA u32 gFieldStatuses = 0; EWRAM_DATA struct FieldTimer gFieldTimers = {0}; EWRAM_DATA u8 gBattlerAbility = 0; EWRAM_DATA u16 gPartnerSpriteId = 0; +EWRAM_DATA bool8 gHasFetchedBall = FALSE; +EWRAM_DATA bool8 gLastUsedBall = 0; // IWRAM common vars void (*gPreBattleCallback1)(void); @@ -2886,6 +2888,9 @@ static void BattleStartClearSetData(void) gLastUsedMove = 0; gFieldStatuses = 0; + gHasFetchedBall = FALSE; + gLastUsedBall = 0; + gBattlerAttacker = 0; gBattlerTarget = 0; gBattleWeather = 0; diff --git a/src/battle_message.c b/src/battle_message.c index 22561dd07..c62674d53 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -685,9 +685,11 @@ static const u8 sText_FairyAuraActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} static const u8 sText_AuraBreakActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} reversed all\nother POKéMON's auras!"); static const u8 sText_ComatoseActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is drowsing!"); static const u8 sText_ScreenCleanerActivates[] = _("All screens on the field were\ncleansed!"); +static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} has fetched\nyour {B_LAST_ITEM}!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_FETCHEDPOKEBALL - 12] = sText_FetchedPokeBall, [STRINGID_STATWASNOTLOWERED - 12] = sText_StatWasNotLowered, [STRINGID_CLOAKEDINAFREEZINGLIGHT - 12] = sText_CloakedInAFreezingLight, [STRINGID_DESTINYKNOTACTIVATES - 12] = sText_DestinyKnotActivates, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 45761ce0f..13a919a53 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11990,6 +11990,11 @@ static void Cmd_handleballthrow(void) } else // not caught { + if (!gHasFetchedBall) + { + gLastUsedBall = gLastUsedItem; + gBattleResults.catchAttempts[gLastUsedBall]++; + } if (IsCriticalCapture()) gBattleCommunication[MULTISTRING_CHOOSER] = shakes + 3; else diff --git a/src/battle_util.c b/src/battle_util.c index 9372fe694..cb22de62e 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4126,6 +4126,20 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect++; } break; + case ABILITY_BALL_FETCH: + if (gBattleMons[battler].item == ITEM_NONE + && gBattleResults.catchAttempts[gLastUsedBall] >= 1 + && !gHasFetchedBall) + { + gBattleScripting.battler = battler; + BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedBall); + MarkBattlerForControllerExec(battler); + gHasFetchedBall = TRUE; + gLastUsedItem = gLastUsedBall; + BattleScriptPushCursorAndCallback(BattleScript_BallFetch); + effect++; + } + break; } } break; From 9e8913c69831190cb7decc9d47f7240fd57390e4 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 2 Dec 2020 23:23:34 -0300 Subject: [PATCH 036/116] Implemented Propeller Tail --- src/battle_util.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index cb22de62e..62dc7977f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -140,7 +140,8 @@ void HandleAction_UseMove(void) if (gSideTimers[side].followmeTimer != 0 && gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget) - && gBattleMons[gSideTimers[side].followmeTarget].hp != 0) + && gBattleMons[gSideTimers[side].followmeTarget].hp != 0 + && GetBattlerAbility(gBattlerAttacker) != ABILITY_PROPELLER_TAIL) { gBattlerTarget = gSideTimers[side].followmeTarget; } @@ -158,9 +159,9 @@ void HandleAction_UseMove(void) if (side != GetBattlerSide(gActiveBattler) && *(gBattleStruct->moveTarget + gBattlerAttacker) != gActiveBattler && ((GetBattlerAbility(gActiveBattler) == ABILITY_LIGHTNING_ROD && moveType == TYPE_ELECTRIC) - || (GetBattlerAbility(gActiveBattler) == ABILITY_STORM_DRAIN && moveType == TYPE_WATER) - ) - && GetBattlerTurnOrderNum(gActiveBattler) < var) + || (GetBattlerAbility(gActiveBattler) == ABILITY_STORM_DRAIN && moveType == TYPE_WATER)) + && GetBattlerTurnOrderNum(gActiveBattler) < var + && GetBattlerAbility(gBattlerAttacker) != ABILITY_PROPELLER_TAIL) { var = GetBattlerTurnOrderNum(gActiveBattler); } From e2f4ca27b0eed0480ec040ee0b38bf27dc1f27a5 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 5 Dec 2020 02:43:29 -0300 Subject: [PATCH 037/116] BattleScript_TargetAbilityStatRaiseOnSwitchin -> BattleScript_TargetAbilityStatRaiseOnSwitchIn --- data/battle_scripts_1.s | 2 +- include/battle_scripts.h | 2 +- src/battle_util.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 8c7f31f1e..a030cdb67 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7106,7 +7106,7 @@ BattleScript_AngryPointActivates:: waitmessage 0x40 return -BattleScript_TargetAbilityStatRaiseOnSwitchin:: +BattleScript_TargetAbilityStatRaiseOnSwitchIn:: call BattleScript_AbilityPopUp statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL setgraphicalstatchangevalues diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 9fa4256b4..ecaaf52c4 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -350,7 +350,7 @@ extern const u8 BattleScript_EmergencyExitWild[]; extern const u8 BattleScript_EmergencyExitWildNoPopUp[]; extern const u8 BattleScript_CheekPouchActivates[]; extern const u8 BattleScript_AnnounceAirLockCloudNine[]; -extern const u8 BattleScript_TargetAbilityStatRaiseOnSwitchin[]; +extern const u8 BattleScript_TargetAbilityStatRaiseOnSwitchIn[]; extern const u8 BattleScript_CottonDownActivates[]; extern const u8 BattleScript_BallFetch[]; diff --git a/src/battle_util.c b/src/battle_util.c index 62dc7977f..b60310c4f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3942,7 +3942,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { gSpecialStatuses[battler].switchInAbilityDone = 1; SET_STATCHANGER(STAT_ATK, 1, FALSE); - BattleScriptPushCursorAndCallback(BattleScript_TargetAbilityStatRaiseOnSwitchin); + BattleScriptPushCursorAndCallback(BattleScript_TargetAbilityStatRaiseOnSwitchIn); effect++; } break; @@ -3951,7 +3951,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { gSpecialStatuses[battler].switchInAbilityDone = 1; SET_STATCHANGER(STAT_DEF, 1, FALSE); - BattleScriptPushCursorAndCallback(BattleScript_TargetAbilityStatRaiseOnSwitchin); + BattleScriptPushCursorAndCallback(BattleScript_TargetAbilityStatRaiseOnSwitchIn); effect++; } break; From 6bbd88049a8c0ff3c98e55db9db91a988356056b Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 5 Dec 2020 03:03:55 -0300 Subject: [PATCH 038/116] Ball Fetch tweaks --- data/battle_scripts_1.s | 1 + src/battle_main.c | 2 +- src/battle_message.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index a030cdb67..80dc1bdbb 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6166,6 +6166,7 @@ BattleScript_AttackerFormChangeEnd3:: end3 BattleScript_BallFetch:: + call BattleScript_AbilityPopUp printstring STRINGID_FETCHEDPOKEBALL waitmessage 0x40 end3 diff --git a/src/battle_main.c b/src/battle_main.c index e2c23bd2a..000bed511 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -229,7 +229,7 @@ EWRAM_DATA struct FieldTimer gFieldTimers = {0}; EWRAM_DATA u8 gBattlerAbility = 0; EWRAM_DATA u16 gPartnerSpriteId = 0; EWRAM_DATA bool8 gHasFetchedBall = FALSE; -EWRAM_DATA bool8 gLastUsedBall = 0; +EWRAM_DATA u8 gLastUsedBall = 0; // IWRAM common vars void (*gPreBattleCallback1)(void); diff --git a/src/battle_message.c b/src/battle_message.c index c62674d53..3bc300d2c 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -685,7 +685,7 @@ static const u8 sText_FairyAuraActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} static const u8 sText_AuraBreakActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} reversed all\nother POKéMON's auras!"); static const u8 sText_ComatoseActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is drowsing!"); static const u8 sText_ScreenCleanerActivates[] = _("All screens on the field were\ncleansed!"); -static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} has fetched\nyour {B_LAST_ITEM}!"); +static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} found\na {B_LAST_ITEM}!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { From 002973d37368998c79de2188f11aae4c2fcf3f94 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 5 Dec 2020 13:50:47 -0300 Subject: [PATCH 039/116] Renamed BattleScript_TargetAbilityStatRaiseOnSwitchIn This battlescript is meant to be called within the case ABILITYEFFECT_ON_SWITCHIN of AbilityBattleEffects, which refers to the currently selected battler as Battler instead of Attacker or Target. --- data/battle_scripts_1.s | 2 +- include/battle_scripts.h | 2 +- src/battle_util.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 80dc1bdbb..e9664a46f 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7107,7 +7107,7 @@ BattleScript_AngryPointActivates:: waitmessage 0x40 return -BattleScript_TargetAbilityStatRaiseOnSwitchIn:: +BattleScript_BattlerAbilityStatRaiseOnSwitchIn:: call BattleScript_AbilityPopUp statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL setgraphicalstatchangevalues diff --git a/include/battle_scripts.h b/include/battle_scripts.h index ecaaf52c4..864825ed6 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -350,7 +350,7 @@ extern const u8 BattleScript_EmergencyExitWild[]; extern const u8 BattleScript_EmergencyExitWildNoPopUp[]; extern const u8 BattleScript_CheekPouchActivates[]; extern const u8 BattleScript_AnnounceAirLockCloudNine[]; -extern const u8 BattleScript_TargetAbilityStatRaiseOnSwitchIn[]; +extern const u8 BattleScript_BattlerAbilityStatRaiseOnSwitchIn[]; extern const u8 BattleScript_CottonDownActivates[]; extern const u8 BattleScript_BallFetch[]; diff --git a/src/battle_util.c b/src/battle_util.c index b60310c4f..19171e7fd 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3942,7 +3942,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { gSpecialStatuses[battler].switchInAbilityDone = 1; SET_STATCHANGER(STAT_ATK, 1, FALSE); - BattleScriptPushCursorAndCallback(BattleScript_TargetAbilityStatRaiseOnSwitchIn); + BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); effect++; } break; @@ -3951,7 +3951,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { gSpecialStatuses[battler].switchInAbilityDone = 1; SET_STATCHANGER(STAT_DEF, 1, FALSE); - BattleScriptPushCursorAndCallback(BattleScript_TargetAbilityStatRaiseOnSwitchIn); + BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); effect++; } break; From 6a0fee9c56f35325966dca92476d1ed35479674b Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 5 Dec 2020 14:03:13 -0300 Subject: [PATCH 040/116] Fixed Intrepid Sword and Dauntless Shield And also introduced a new BattleString for BattleScript_BattlerAbilityStatRaiseOnSwitchIn --- data/battle_scripts_1.s | 5 +++-- include/constants/battle_string_ids.h | 3 ++- src/battle_message.c | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index e9664a46f..78992eb26 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7108,12 +7108,13 @@ BattleScript_AngryPointActivates:: return BattleScript_BattlerAbilityStatRaiseOnSwitchIn:: + copybyte gBattlerAbility, gBattlerAttacker call BattleScript_AbilityPopUp statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL setgraphicalstatchangevalues - playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 waitanimation - printstring STRINGID_TARGETABILITYSTATRAISE + printstring STRINGID_BATTLERABILITYRAISEDSTAT waitmessage 0x40 end3 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 4d3ba62a8..75a2fddc5 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -559,8 +559,9 @@ #define STRINGID_COMATOSEENTERS 555 #define STRINGID_SCREENCLEANERENTERS 556 #define STRINGID_FETCHEDPOKEBALL 557 +#define STRINGID_BATTLERABILITYRAISEDSTAT 558 -#define BATTLESTRINGS_COUNT 558 +#define BATTLESTRINGS_COUNT 559 //// multichoice message IDs // switch in ability message diff --git a/src/battle_message.c b/src/battle_message.c index 3bc300d2c..e51d85fe3 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -686,9 +686,11 @@ static const u8 sText_AuraBreakActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} static const u8 sText_ComatoseActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is drowsing!"); static const u8 sText_ScreenCleanerActivates[] = _("All screens on the field were\ncleansed!"); static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} found\na {B_LAST_ITEM}!"); +static const u8 sText_BattlerAbilityRaisedStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its {B_BUFF1}!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_BATTLERABILITYRAISEDSTAT - 12] = sText_BattlerAbilityRaisedStat, [STRINGID_FETCHEDPOKEBALL - 12] = sText_FetchedPokeBall, [STRINGID_STATWASNOTLOWERED - 12] = sText_StatWasNotLowered, [STRINGID_CLOAKEDINAFREEZINGLIGHT - 12] = sText_CloakedInAFreezingLight, From c83c67ff8e30360b4c6786ba644f3d706c0acf5e Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 5 Dec 2020 14:14:26 -0300 Subject: [PATCH 041/116] Implemented Stalwart --- src/battle_util.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 19171e7fd..9527ac6c0 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -141,7 +141,8 @@ void HandleAction_UseMove(void) && gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget) && gBattleMons[gSideTimers[side].followmeTarget].hp != 0 - && GetBattlerAbility(gBattlerAttacker) != ABILITY_PROPELLER_TAIL) + && (GetBattlerAbility(gBattlerAttacker) != ABILITY_PROPELLER_TAIL + || GetBattlerAbility(gBattlerAttacker) != ABILITY_STALWART)) { gBattlerTarget = gSideTimers[side].followmeTarget; } @@ -161,7 +162,8 @@ void HandleAction_UseMove(void) && ((GetBattlerAbility(gActiveBattler) == ABILITY_LIGHTNING_ROD && moveType == TYPE_ELECTRIC) || (GetBattlerAbility(gActiveBattler) == ABILITY_STORM_DRAIN && moveType == TYPE_WATER)) && GetBattlerTurnOrderNum(gActiveBattler) < var - && GetBattlerAbility(gBattlerAttacker) != ABILITY_PROPELLER_TAIL) + && (GetBattlerAbility(gBattlerAttacker) != ABILITY_PROPELLER_TAIL + || GetBattlerAbility(gBattlerAttacker) != ABILITY_STALWART)) { var = GetBattlerTurnOrderNum(gActiveBattler); } From 42a06c6003e31aedbe3fa52e597891d811189d1c Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 5 Dec 2020 21:23:59 -0300 Subject: [PATCH 042/116] Fixed softlock caused by the majority of Techno Blast's animations And made the checks that sets its animation use the Type constants instead of their internal IDs. --- data/battle_anim_scripts.s | 48 +++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index cf11f4d6a..0e3862250 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -6,6 +6,7 @@ .include "asm/macros.inc" .include "asm/macros/battle_anim_script.inc" .include "constants/constants.inc" +#include "constants/pokemon.h" .section script_data, "aw", %progbits @@ -6745,10 +6746,10 @@ Move_SEARING_SHOT: Move_TECHNO_BLAST: launchtask AnimTask_TechnoBlast 0x5 0x0 - jumpargeq 0x0, 10, TechnoBlastFire - jumpargeq 0x0, 11, TechnoBlastWater - jumpargeq 0x0, 13, TechnoBlastElectric - jumpargeq 0x0, 15, TechnoBlastIce + jumpargeq 0x0, TYPE_FIRE, TechnoBlastFire + jumpargeq 0x0, TYPE_WATER, TechnoBlastWater + jumpargeq 0x0, TYPE_ELECTRIC, TechnoBlastElectric + jumpargeq 0x0, TYPE_ICE, TechnoBlastIce TechnoBlastNormal: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation loadspritegfx ANIM_TAG_ORBS @circles @@ -6884,7 +6885,7 @@ TechnoBlastElectric: launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 launchtemplate gTechnoBlastYellowSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 @@ -6893,20 +6894,20 @@ TechnoBlastElectric: playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x5 0x0 0x5 0x0, ANIM_TARGET - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfffb 0xa 0x5 0x1, ANIM_TARGET + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x5 0x0 0x5 0x0 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfffb 0xa 0x5 0x1 delay 0x2 launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xf 0x14 0x5 0x2, ANIM_TARGET - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0, ANIM_TARGET + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xf 0x14 0x5 0x2 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff1 0xfff6 0x5 0x0 delay 0x2 launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0x8 0xfff8 0x1 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x19 0x0 0x5 0x1, ANIM_TARGET - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff8 0x8 0x5 0x2, ANIM_TARGET + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x19 0x0 0x5 0x1 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xfff8 0x8 0x5 0x2 delay 0x2 launchtemplate gTechnoBlastYellowSmokeTemplate 0x82, 0x4, 0xfff8 0x8 0x1 0x0 - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x2 0xfff8 0x5 0x0, ANIM_TARGET - launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xffec 0xf 0x5 0x1, ANIM_TARGET + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0x2 0xfff8 0x5 0x0 + launchtemplate gElectricitySpriteTemplate 0x82, 0x4, 0xffec 0xf 0x5 0x1 waitforvisualfinish launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0xC 0x0 0x0 waitforvisualfinish @@ -7018,7 +7019,7 @@ TechnoBlastWater: launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 launchtemplate gTechnoBlastBlueSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 @@ -7071,7 +7072,7 @@ TechnoBlastFire: launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 launchtemplate gTechnoBlastRedSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 @@ -7080,13 +7081,13 @@ TechnoBlastFire: playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER launchtask AnimTask_ShakeMon2 0x2 0x5 0x1 0x4 0x0 0x5 0x1 launchtemplate gTechnoBlastRedSmokeTemplate 0x82, 0x4, 0x8 0x8 0x1 0x0 - launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa SOUND_PAN_ATTACKER 0xb0 0x28 - launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa 0xff40 0xf0 0x28 - launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa SOUND_PAN_ATTACKER 0xff60 0x28 - launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa 0xff40 0xff90 0x28 - launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa 0xa0 0x30 0x28 - launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa 0xff20 0xffe0 0x28 - launchtemplate gFireSpreadSpriteTemplate 0x81 0x5 0x0 0xa 0x70 0xff80 0x28 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, 176, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, -160, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -192, -112, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 160, 48, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -224, -32, 40 + createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40 delay 0x2 launchtemplate gTechnoBlastRedSmokeTemplate 0x82, 0x4, 0xfff8 0xfff8 0x1 0x0 delay 0x2 @@ -7155,7 +7156,7 @@ TechnoBlastIce: launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0 launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1 launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0 - launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x2 + launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x2 launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x20 0x28 0x0 launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0x60 0x28 0x1 launchtemplate gTechnoBlastIceSparkTemplate 0x84 0x7 0xa 0x0 0x8 0x1e 0xa0 0x28 0x0 @@ -24428,4 +24429,3 @@ Special_CriticalCaptureBallThrow: createvisualtask AnimTask_IsBallBlockedByTrainer, 2 jumpreteq -1, BallThrowTrainerBlock goto BallThrowEnd - From ef41a4c14d8008b41dd468f9f1a124f1b5a8c017 Mon Sep 17 00:00:00 2001 From: BuffelSaft Date: Sun, 6 Dec 2020 16:14:02 +1300 Subject: [PATCH 043/116] Fix Jump Kick * Now inflicts recoil damage on the user if the target was immune to the attack * Gen V+ recoil damage is now half of the user's HP instead of half of the target's HP. --- data/battle_scripts_1.s | 7 ++++--- src/battle_script_commands.c | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0ccaa7ef6..63ae752ec 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2806,6 +2806,8 @@ BattleScript_EffectDoubleHit:: BattleScript_EffectRecoilIfMiss:: attackcanceler accuracycheck BattleScript_MoveMissedDoDamage, ACC_CURR_MOVE + typecalc + jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveMissedDoDamage goto BattleScript_HitFromAtkString BattleScript_MoveMissedDoDamage:: jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_PrintMoveMissed @@ -2814,19 +2816,18 @@ BattleScript_MoveMissedDoDamage:: pause 0x40 resultmessage waitmessage 0x40 - jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd printstring STRINGID_PKMNCRASHED waitmessage 0x40 damagecalc typecalc adjustdamage manipulatedamage DMG_RECOIL_FROM_MISS - bichalfword gMoveResultFlags, MOVE_RESULT_MISSED + bichalfword gMoveResultFlags, MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER tryfaintmon BS_ATTACKER, FALSE, NULL - orhalfword gMoveResultFlags, MOVE_RESULT_MISSED + orhalfword gMoveResultFlags, MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE goto BattleScript_MoveEnd BattleScript_EffectMist:: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 16e2989f8..ab3b70e69 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8584,7 +8584,7 @@ static void Cmd_manipulatedamage(void) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; if (B_RECOIL_IF_MISS_DMG >= GEN_5 || ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage)) - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; break; case DMG_DOUBLED: gBattleMoveDamage *= 2; From 72b769ec7518e1d8dbdd57b94e721f6107c6f83c Mon Sep 17 00:00:00 2001 From: BuffelSaft Date: Mon, 7 Dec 2020 19:30:31 +1300 Subject: [PATCH 044/116] Add config options for Jump Kick Added options for: - Gen 4 style recoil when target is immune (user takes 50% of target's max HP) - Gen 3 style recoil when target is immune (i.e no recoil) - Gen 5+ recoil was already implemented but was bugged --- data/battle_scripts_1.s | 17 +++++++++++++++++ include/constants/battle_config.h | 1 + include/constants/battle_script_commands.h | 1 + src/battle_script_commands.c | 3 +++ 4 files changed, 22 insertions(+) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 63ae752ec..d72346b12 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2806,8 +2806,10 @@ BattleScript_EffectDoubleHit:: BattleScript_EffectRecoilIfMiss:: attackcanceler accuracycheck BattleScript_MoveMissedDoDamage, ACC_CURR_MOVE +.if B_CRASH_IF_TARGET_IMMUNE >= GEN_4 typecalc jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveMissedDoDamage +.endif goto BattleScript_HitFromAtkString BattleScript_MoveMissedDoDamage:: jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_PrintMoveMissed @@ -2816,18 +2818,33 @@ BattleScript_MoveMissedDoDamage:: pause 0x40 resultmessage waitmessage 0x40 +.if B_CRASH_IF_TARGET_IMMUNE < GEN_4 + jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd +.endif printstring STRINGID_PKMNCRASHED waitmessage 0x40 damagecalc typecalc adjustdamage +.if B_CRASH_IF_TARGET_IMMUNE == GEN_4 + manipulatedamage DMG_RECOIL_FROM_IMMUNE +.else manipulatedamage DMG_RECOIL_FROM_MISS +.endif +.if B_CRASH_IF_TARGET_IMMUNE >= GEN_4 bichalfword gMoveResultFlags, MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE +.else + bichalfword gMoveResultFlags, MOVE_RESULT_MISSED +.endif orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER tryfaintmon BS_ATTACKER, FALSE, NULL +.if B_CRASH_IF_TARGET_IMMUNE >= GEN_4 orhalfword gMoveResultFlags, MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE +.else + orhalfword gMoveResultFlags, MOVE_RESULT_MISSED +.endif goto BattleScript_MoveEnd BattleScript_EffectMist:: diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 55c62af98..7acfaf026 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -109,6 +109,7 @@ #define B_DISABLE_TURNS GEN_6 // Disable's turns. See Cmd_disablelastusedattack. #define B_INCINERATE_GEMS GEN_6 // In Gen6+, Incinerate can destroy Gems. #define B_MINIMIZE_DMG_ACC GEN_6 // In Gen6+, moves that causes double damage to minimized Pokémon will also skip accuracy checks. +#define B_CRASH_IF_TARGET_IMMUNE GEN_6 // In Gen4+, The user of Jump Kick or Hi Jump Kick will "keep going and crash" if it attacks a target that is immune to the move. // Ability settings #define B_ABILITY_WEATHER GEN_6 // In Gen5+, weather caused by abilities lasts the same amount of turns as induced from a move. Before, they lasted till the battle's end or weather change by a move. diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index b081907ec..38f9254cb 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -175,6 +175,7 @@ #define DMG_CURR_ATTACKER_HP 5 #define DMG_BIG_ROOT 6 #define DMG_1_2_ATTACKER_HP 7 +#define DMG_RECOIL_FROM_IMMUNE 8 // Used to calculate recoil for the Gen 4 version of Jump Kick // Cmd_jumpifcantswitch #define SWITCH_IGNORE_ESCAPE_PREVENTION 0x80 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index ab3b70e69..58e4cf60d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8606,6 +8606,9 @@ static void Cmd_manipulatedamage(void) case DMG_1_2_ATTACKER_HP: gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; break; + case DMG_RECOIL_FROM_IMMUNE: + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + break; } gBattlescriptCurrInstr += 2; From a3b891bd653434fa6587275724e334650b502ec3 Mon Sep 17 00:00:00 2001 From: BuffelSaft Date: Mon, 7 Dec 2020 19:41:49 +1300 Subject: [PATCH 045/116] Cap recoil for Gen 4 Jump Kick Jump Kick's recoil in Gen 4 cannot exceed half of the target's maximum HP. --- src/battle_script_commands.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 58e4cf60d..2de22dd98 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8583,8 +8583,10 @@ static void Cmd_manipulatedamage(void) gBattleMoveDamage /= 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - if (B_RECOIL_IF_MISS_DMG >= GEN_5 || ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage)) + if (B_RECOIL_IF_MISS_DMG >= GEN_5) gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + if ((B_RECOIL_IF_MISS_DMG <= GEN_4) && ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage)) + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; break; case DMG_DOUBLED: gBattleMoveDamage *= 2; From c9824a8dd9e2f502441a8ade0395a0cdca6fdc93 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 7 Dec 2020 15:03:52 -0300 Subject: [PATCH 046/116] Fixed Cotton Down It was tough, but the nightmare is finally over. Ghoulslash, Blurose, Cancer Fairy, thanks to all of you guys! --- data/battle_scripts_1.s | 23 ++++++++++++++--------- src/battle_util.c | 13 +++++-------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 78992eb26..ddfa5e594 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6196,23 +6196,28 @@ BattleScript_IllusionOff:: return BattleScript_CottonDownActivates:: - setbyte gBattlerTarget, 0x1 + call BattleScript_AbilityPopUp + copybyte gEffectBattler, gBattlerTarget + savetarget + setbyte gBattlerTarget, 0x0 BattleScript_CottonDownLoop: setstatchanger STAT_SPEED, 1, TRUE - statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED | STAT_BUFF_ALLOW_PTR, BattleScript_CottonDownActivatesLoopIncrement - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CottonDownEnd - call BattleScript_AbilityPopUp + jumpifbyteequal gBattlerTarget, gEffectBattler, BattleScript_CottonDownLoopIncrement + statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED, BattleScript_CottonDownTargetSpeedCantGoLower setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 - setbyte gBattleCommunication STAT_SPEED - stattextbuffer BS_TARGET printfromtable gStatDownStringIds waitmessage 0x40 -BattleScript_CottonDownActivatesLoopIncrement: + goto BattleScript_CottonDownLoopIncrement +BattleScript_CottonDownTargetSpeedCantGoLower: + printstring STRINGID_STATSWONTDECREASE + waitmessage 0x40 +BattleScript_CottonDownLoopIncrement: addbyte gBattlerTarget, 0x1 jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_CottonDownLoop -BattleScript_CottonDownEnd: - end3 +BattleScript_CottonDownReturn: + restoretarget + return BattleScript_AnticipationActivates:: pause 0x5 diff --git a/src/battle_util.c b/src/battle_util.c index 9527ac6c0..ff93b4120 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4627,17 +4627,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move break; case ABILITY_COTTON_DOWN: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerTarget].hp != 0 + && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED) { - for (i = 0; i < gBattlersCount; i++) - { - gBattlerAttacker = i; - BattleScriptPushCursorAndCallback(BattleScript_CottonDownActivates); - effect++; - break; - } + gEffectBattler = gBattlerTarget; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_CottonDownActivates; + effect++; } break; } From f95192ed87e4ff9d5be14477eb3e61b690f96fb6 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 8 Dec 2020 00:44:26 -0500 Subject: [PATCH 047/116] Define terminal species IDs relatively --- include/constants/species.h | 156 ++++++++++++++++++------------------ 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/include/constants/species.h b/include/constants/species.h index 8fa5cf77b..983e1a796 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -417,36 +417,36 @@ #define SPECIES_CHIMECHO 411 #define SPECIES_EGG 412 -#define SPECIES_UNOWN_B 413 -#define SPECIES_UNOWN_C 414 -#define SPECIES_UNOWN_D 415 -#define SPECIES_UNOWN_E 416 -#define SPECIES_UNOWN_F 417 -#define SPECIES_UNOWN_G 418 -#define SPECIES_UNOWN_H 419 -#define SPECIES_UNOWN_I 420 -#define SPECIES_UNOWN_J 421 -#define SPECIES_UNOWN_K 422 -#define SPECIES_UNOWN_L 423 -#define SPECIES_UNOWN_M 424 -#define SPECIES_UNOWN_N 425 -#define SPECIES_UNOWN_O 426 -#define SPECIES_UNOWN_P 427 -#define SPECIES_UNOWN_Q 428 -#define SPECIES_UNOWN_R 429 -#define SPECIES_UNOWN_S 430 -#define SPECIES_UNOWN_T 431 -#define SPECIES_UNOWN_U 432 -#define SPECIES_UNOWN_V 433 -#define SPECIES_UNOWN_W 434 -#define SPECIES_UNOWN_X 435 -#define SPECIES_UNOWN_Y 436 -#define SPECIES_UNOWN_Z 437 -#define SPECIES_UNOWN_EMARK 438 -#define SPECIES_UNOWN_QMARK 439 - #define NUM_SPECIES SPECIES_EGG +#define SPECIES_UNOWN_B (NUM_SPECIES + 1) +#define SPECIES_UNOWN_C (SPECIES_UNOWN_B + 1) +#define SPECIES_UNOWN_D (SPECIES_UNOWN_B + 2) +#define SPECIES_UNOWN_E (SPECIES_UNOWN_B + 3) +#define SPECIES_UNOWN_F (SPECIES_UNOWN_B + 4) +#define SPECIES_UNOWN_G (SPECIES_UNOWN_B + 5) +#define SPECIES_UNOWN_H (SPECIES_UNOWN_B + 6) +#define SPECIES_UNOWN_I (SPECIES_UNOWN_B + 7) +#define SPECIES_UNOWN_J (SPECIES_UNOWN_B + 8) +#define SPECIES_UNOWN_K (SPECIES_UNOWN_B + 9) +#define SPECIES_UNOWN_L (SPECIES_UNOWN_B + 10) +#define SPECIES_UNOWN_M (SPECIES_UNOWN_B + 11) +#define SPECIES_UNOWN_N (SPECIES_UNOWN_B + 12) +#define SPECIES_UNOWN_O (SPECIES_UNOWN_B + 13) +#define SPECIES_UNOWN_P (SPECIES_UNOWN_B + 14) +#define SPECIES_UNOWN_Q (SPECIES_UNOWN_B + 15) +#define SPECIES_UNOWN_R (SPECIES_UNOWN_B + 16) +#define SPECIES_UNOWN_S (SPECIES_UNOWN_B + 17) +#define SPECIES_UNOWN_T (SPECIES_UNOWN_B + 18) +#define SPECIES_UNOWN_U (SPECIES_UNOWN_B + 19) +#define SPECIES_UNOWN_V (SPECIES_UNOWN_B + 20) +#define SPECIES_UNOWN_W (SPECIES_UNOWN_B + 21) +#define SPECIES_UNOWN_X (SPECIES_UNOWN_B + 22) +#define SPECIES_UNOWN_Y (SPECIES_UNOWN_B + 23) +#define SPECIES_UNOWN_Z (SPECIES_UNOWN_B + 24) +#define SPECIES_UNOWN_EMARK (SPECIES_UNOWN_B + 25) +#define SPECIES_UNOWN_QMARK (SPECIES_UNOWN_B + 26) + // National Dex Index Defines #define NATIONAL_DEX_NONE 0 @@ -845,31 +845,31 @@ #define NATIONAL_DEX_COUNT NATIONAL_DEX_DEOXYS -#define NATIONAL_DEX_OLD_UNOWN_B 387 -#define NATIONAL_DEX_OLD_UNOWN_C 388 -#define NATIONAL_DEX_OLD_UNOWN_D 389 -#define NATIONAL_DEX_OLD_UNOWN_E 390 -#define NATIONAL_DEX_OLD_UNOWN_F 391 -#define NATIONAL_DEX_OLD_UNOWN_G 392 -#define NATIONAL_DEX_OLD_UNOWN_H 393 -#define NATIONAL_DEX_OLD_UNOWN_I 394 -#define NATIONAL_DEX_OLD_UNOWN_J 395 -#define NATIONAL_DEX_OLD_UNOWN_K 396 -#define NATIONAL_DEX_OLD_UNOWN_L 397 -#define NATIONAL_DEX_OLD_UNOWN_M 398 -#define NATIONAL_DEX_OLD_UNOWN_N 399 -#define NATIONAL_DEX_OLD_UNOWN_O 400 -#define NATIONAL_DEX_OLD_UNOWN_P 401 -#define NATIONAL_DEX_OLD_UNOWN_Q 402 -#define NATIONAL_DEX_OLD_UNOWN_R 403 -#define NATIONAL_DEX_OLD_UNOWN_S 404 -#define NATIONAL_DEX_OLD_UNOWN_T 405 -#define NATIONAL_DEX_OLD_UNOWN_U 406 -#define NATIONAL_DEX_OLD_UNOWN_V 407 -#define NATIONAL_DEX_OLD_UNOWN_W 408 -#define NATIONAL_DEX_OLD_UNOWN_X 409 -#define NATIONAL_DEX_OLD_UNOWN_Y 410 -#define NATIONAL_DEX_OLD_UNOWN_Z 411 +#define NATIONAL_DEX_OLD_UNOWN_B (NATIONAL_DEX_COUNT + 1) +#define NATIONAL_DEX_OLD_UNOWN_C (NATIONAL_DEX_OLD_UNOWN_B + 1) +#define NATIONAL_DEX_OLD_UNOWN_D (NATIONAL_DEX_OLD_UNOWN_B + 2) +#define NATIONAL_DEX_OLD_UNOWN_E (NATIONAL_DEX_OLD_UNOWN_B + 3) +#define NATIONAL_DEX_OLD_UNOWN_F (NATIONAL_DEX_OLD_UNOWN_B + 4) +#define NATIONAL_DEX_OLD_UNOWN_G (NATIONAL_DEX_OLD_UNOWN_B + 5) +#define NATIONAL_DEX_OLD_UNOWN_H (NATIONAL_DEX_OLD_UNOWN_B + 6) +#define NATIONAL_DEX_OLD_UNOWN_I (NATIONAL_DEX_OLD_UNOWN_B + 7) +#define NATIONAL_DEX_OLD_UNOWN_J (NATIONAL_DEX_OLD_UNOWN_B + 8) +#define NATIONAL_DEX_OLD_UNOWN_K (NATIONAL_DEX_OLD_UNOWN_B + 9) +#define NATIONAL_DEX_OLD_UNOWN_L (NATIONAL_DEX_OLD_UNOWN_B + 10) +#define NATIONAL_DEX_OLD_UNOWN_M (NATIONAL_DEX_OLD_UNOWN_B + 11) +#define NATIONAL_DEX_OLD_UNOWN_N (NATIONAL_DEX_OLD_UNOWN_B + 12) +#define NATIONAL_DEX_OLD_UNOWN_O (NATIONAL_DEX_OLD_UNOWN_B + 13) +#define NATIONAL_DEX_OLD_UNOWN_P (NATIONAL_DEX_OLD_UNOWN_B + 14) +#define NATIONAL_DEX_OLD_UNOWN_Q (NATIONAL_DEX_OLD_UNOWN_B + 15) +#define NATIONAL_DEX_OLD_UNOWN_R (NATIONAL_DEX_OLD_UNOWN_B + 16) +#define NATIONAL_DEX_OLD_UNOWN_S (NATIONAL_DEX_OLD_UNOWN_B + 17) +#define NATIONAL_DEX_OLD_UNOWN_T (NATIONAL_DEX_OLD_UNOWN_B + 18) +#define NATIONAL_DEX_OLD_UNOWN_U (NATIONAL_DEX_OLD_UNOWN_B + 19) +#define NATIONAL_DEX_OLD_UNOWN_V (NATIONAL_DEX_OLD_UNOWN_B + 20) +#define NATIONAL_DEX_OLD_UNOWN_W (NATIONAL_DEX_OLD_UNOWN_B + 21) +#define NATIONAL_DEX_OLD_UNOWN_X (NATIONAL_DEX_OLD_UNOWN_B + 22) +#define NATIONAL_DEX_OLD_UNOWN_Y (NATIONAL_DEX_OLD_UNOWN_B + 23) +#define NATIONAL_DEX_OLD_UNOWN_Z (NATIONAL_DEX_OLD_UNOWN_B + 24) // Hoenn Dex Index Defines @@ -1264,30 +1264,30 @@ #define HOENN_DEX_HO_OH 385 #define HOENN_DEX_CELEBI 386 -#define HOENN_DEX_OLD_UNOWN_B 387 -#define HOENN_DEX_OLD_UNOWN_C 388 -#define HOENN_DEX_OLD_UNOWN_D 389 -#define HOENN_DEX_OLD_UNOWN_E 390 -#define HOENN_DEX_OLD_UNOWN_F 391 -#define HOENN_DEX_OLD_UNOWN_G 392 -#define HOENN_DEX_OLD_UNOWN_H 393 -#define HOENN_DEX_OLD_UNOWN_I 394 -#define HOENN_DEX_OLD_UNOWN_J 395 -#define HOENN_DEX_OLD_UNOWN_K 396 -#define HOENN_DEX_OLD_UNOWN_L 397 -#define HOENN_DEX_OLD_UNOWN_M 398 -#define HOENN_DEX_OLD_UNOWN_N 399 -#define HOENN_DEX_OLD_UNOWN_O 400 -#define HOENN_DEX_OLD_UNOWN_P 401 -#define HOENN_DEX_OLD_UNOWN_Q 402 -#define HOENN_DEX_OLD_UNOWN_R 403 -#define HOENN_DEX_OLD_UNOWN_S 404 -#define HOENN_DEX_OLD_UNOWN_T 405 -#define HOENN_DEX_OLD_UNOWN_U 406 -#define HOENN_DEX_OLD_UNOWN_V 407 -#define HOENN_DEX_OLD_UNOWN_W 408 -#define HOENN_DEX_OLD_UNOWN_X 409 -#define HOENN_DEX_OLD_UNOWN_Y 410 -#define HOENN_DEX_OLD_UNOWN_Z 411 +#define HOENN_DEX_OLD_UNOWN_B (HOENN_DEX_CELEBI + 1) +#define HOENN_DEX_OLD_UNOWN_C (HOENN_DEX_OLD_UNOWN_B + 1) +#define HOENN_DEX_OLD_UNOWN_D (HOENN_DEX_OLD_UNOWN_B + 2) +#define HOENN_DEX_OLD_UNOWN_E (HOENN_DEX_OLD_UNOWN_B + 3) +#define HOENN_DEX_OLD_UNOWN_F (HOENN_DEX_OLD_UNOWN_B + 4) +#define HOENN_DEX_OLD_UNOWN_G (HOENN_DEX_OLD_UNOWN_B + 5) +#define HOENN_DEX_OLD_UNOWN_H (HOENN_DEX_OLD_UNOWN_B + 6) +#define HOENN_DEX_OLD_UNOWN_I (HOENN_DEX_OLD_UNOWN_B + 7) +#define HOENN_DEX_OLD_UNOWN_J (HOENN_DEX_OLD_UNOWN_B + 8) +#define HOENN_DEX_OLD_UNOWN_K (HOENN_DEX_OLD_UNOWN_B + 9) +#define HOENN_DEX_OLD_UNOWN_L (HOENN_DEX_OLD_UNOWN_B + 10) +#define HOENN_DEX_OLD_UNOWN_M (HOENN_DEX_OLD_UNOWN_B + 11) +#define HOENN_DEX_OLD_UNOWN_N (HOENN_DEX_OLD_UNOWN_B + 12) +#define HOENN_DEX_OLD_UNOWN_O (HOENN_DEX_OLD_UNOWN_B + 13) +#define HOENN_DEX_OLD_UNOWN_P (HOENN_DEX_OLD_UNOWN_B + 14) +#define HOENN_DEX_OLD_UNOWN_Q (HOENN_DEX_OLD_UNOWN_B + 15) +#define HOENN_DEX_OLD_UNOWN_R (HOENN_DEX_OLD_UNOWN_B + 16) +#define HOENN_DEX_OLD_UNOWN_S (HOENN_DEX_OLD_UNOWN_B + 17) +#define HOENN_DEX_OLD_UNOWN_T (HOENN_DEX_OLD_UNOWN_B + 18) +#define HOENN_DEX_OLD_UNOWN_U (HOENN_DEX_OLD_UNOWN_B + 19) +#define HOENN_DEX_OLD_UNOWN_V (HOENN_DEX_OLD_UNOWN_B + 20) +#define HOENN_DEX_OLD_UNOWN_W (HOENN_DEX_OLD_UNOWN_B + 21) +#define HOENN_DEX_OLD_UNOWN_X (HOENN_DEX_OLD_UNOWN_B + 22) +#define HOENN_DEX_OLD_UNOWN_Y (HOENN_DEX_OLD_UNOWN_B + 23) +#define HOENN_DEX_OLD_UNOWN_Z (HOENN_DEX_OLD_UNOWN_B + 24) #endif // GUARD_CONSTANTS_SPECIES_H From 964ec53a65815aa28f3e63e42fa219b96ae10943 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 8 Dec 2020 11:36:19 -0700 Subject: [PATCH 048/116] port cfru shadow sneak anim --- data/battle_anim_scripts.s | 52 ++++++++++++++++++++++++-------------- src/battle_anim_new.c | 12 +++++++++ 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index cf11f4d6a..df87c770e 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -2799,28 +2799,42 @@ Move_FIRE_FANG: end Move_SHADOW_SNEAK: - loadspritegfx ANIM_TAG_LICK - setalpha 0, 16 - delay 1 - createvisualtask AnimTask_InitMementoShadow, 2 - delay 1 - createvisualtask AnimTask_MoveAttackerMementoShadow, 5 - playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER - delay 48 - playsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER + loadspritegfx ANIM_TAG_IMPACT + loadspritegfx ANIM_TAG_WHITE_SHADOW @Destiny Bond + loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @Black Colour + loadspritegfx ANIM_TAG_POISON_BUBBLE @Poison + loadspritegfx ANIM_TAG_HANDS_AND_FEET + monbg ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x7 0x0000 waitforvisualfinish - createvisualtask sub_8114470, 2 - setalpha 0, 16 - delay 1 - playsewithpan SE_M_LICK, SOUND_PAN_TARGET - createsprite gLickSpriteTemplate, ANIM_TARGET, 2, 0, 0 - createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 16, 1 + playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER + launchtask AnimTask_TranslateMonEllipticalRespectSide 0x2 0x5 0x0 0x12 0x6 0x1 0x3 + launchtask AnimTask_AttackerFadeToInvisible 0x2 0x1 0x1 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + invisible ANIM_ATTACKER + delay 0x1 + launchtask AnimTask_DestinyBondWhiteShadow 0x5 0x2 0x0 0x30 + delay 0x30 + launchtask AnimTask_BlendColorCycle 0x2 0x6 ANIM_PAL_DEF 0x2 0x2 0x0 0xF 0x0 + createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xfff6, 0xfff6, 0x0 + call ShadowSneakMovement + createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xa, 0x14, 0x0 + call ShadowSneakMovement + createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0xfffb, 0xa, 0x0 + call ShadowSneakMovement + createsprite gShadowSneakImpactSpriteTemplate, ANIM_TARGET, 2, 0x11, 0xfff4, 0x0 + call ShadowSneakMovement + waitforvisualfinish + visible ANIM_ATTACKER + launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x7 0x0 0x0000 waitforvisualfinish - clearmonbg_23 ANIM_TARGET - delay 1 - blendoff - delay 1 end +ShadowSneakMovement: + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x6 0x1 + delay 0x4 + return Move_MUD_BOMB: loadspritegfx ANIM_TAG_MUD_SAND diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 0b54b4c40..e7bb23d90 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -66,6 +66,18 @@ static const union AffineAnimCmd sSquishTargetAffineAnimCmds[] = }; //// GEN 4 +// shadow sneak +const struct SpriteTemplate gShadowSneakImpactSpriteTemplate = +{ + .tileTag = ANIM_TAG_IMPACT, + .paletteTag = ANIM_TAG_HANDS_AND_FEET, + .oam = &gOamData_AffineNormal_ObjBlend_32x32, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_IceCrystalHit, + .callback = AnimIceEffectParticle +}; + // power trick const struct SpriteTemplate gPowerTrickSpriteTemplate = { From 76e40fe2dd9e3d68ff5211617ffda4bc7d4faa81 Mon Sep 17 00:00:00 2001 From: ExpoSeed <43502820+ExpoSeed@users.noreply.github.com> Date: Wed, 9 Dec 2020 16:45:27 -0600 Subject: [PATCH 049/116] Fix incorrect bug description --- src/daycare.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/daycare.c b/src/daycare.c index fd6ed3a50..d849b39f3 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -547,13 +547,17 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) for (i = 0; i < INHERITED_IV_COUNT; i++) { // Randomly pick an IV from the available list and stop from being chosen again. - selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)]; - // BUG: Instead of removing the IV that was just picked (like in RS and FRLG), this + // BUG: Instead of removing the IV that was just picked, this // removes position 0 (HP) then position 1 (DEF), then position 2. This is why HP and DEF // have a lower chance to be inherited in Emerald and why the IV picked for inheritance can - // be repeated. Uncomment the inline comment and remove the existing expression to get the - // intended behavior and to match the other Gen 3 games. - RemoveIVIndexFromList(availableIVs, i /*selectedIvs[i]*/); + // be repeated. Amusingly, FRLG and RS also got this wrong. They remove selectedIvs[i], which + // is not an index! This means that it can sometimes remove the wrong stat. To fix, delete + // the following two lines and uncomment the rest of the block. + selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)]; + RemoveIVIndexFromList(availableIVs, i); + // u8 index = Random() % (NUM_STATS - i); + // selectedIvs[i] = availableIVs[index]; + // RemoveIVIndexFromList(availableIVs, index); } // Determine which parent each of the selected IVs should inherit from. From 322918e28004673a9ca95d328e29f7ba12bbb18a Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 10 Dec 2020 18:27:35 -0300 Subject: [PATCH 050/116] Implemented Steam Engine And I also made the BattleScript created for Anger Point a bit more neutral friendly so it can be reused on situations like this. --- data/battle_scripts_1.s | 4 ++-- include/battle_scripts.h | 2 +- include/constants/battle_string_ids.h | 2 +- src/battle_message.c | 4 ++-- src/battle_util.c | 15 ++++++++++++++- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index ddfa5e594..69af61a12 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7103,12 +7103,12 @@ BattleScript_MummyActivates:: waitmessage 0x40 return -BattleScript_AngryPointActivates:: +BattleScript_TargetsStatWasMaxedOut:: call BattleScript_AbilityPopUp statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 - printstring STRINGID_ANGRYPOINTACTIVATES + printstring STRINGID_TARGETSSTATWASMAXEDOUT waitmessage 0x40 return diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 864825ed6..097e907c5 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -250,7 +250,7 @@ extern const u8 BattleScript_GravityEnds[]; extern const u8 BattleScript_MoveStatDrain[]; extern const u8 BattleScript_MoveStatDrain_PPLoss[]; extern const u8 BattleScript_TargetAbilityStatRaiseOnMoveEnd[]; -extern const u8 BattleScript_AngryPointActivates[]; +extern const u8 BattleScript_TargetsStatWasMaxedOut[]; extern const u8 BattleScript_AttackerAbilityStatRaise[]; extern const u8 BattleScript_AttackerAbilityStatRaiseEnd3[]; extern const u8 BattleScript_PoisonHealActivates[]; diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 75a2fddc5..526a68c58 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -452,7 +452,7 @@ #define STRINGID_PSYCHICTERRAINENDS 448 #define STRINGID_GRASSYTERRAINENDS 449 #define STRINGID_TARGETABILITYSTATRAISE 450 -#define STRINGID_ANGRYPOINTACTIVATES 451 +#define STRINGID_TARGETSSTATWASMAXEDOUT 451 #define STRINGID_ATTACKERABILITYSTATRAISE 452 #define STRINGID_POISONHEALHPUP 453 #define STRINGID_BADDREAMSDMG 454 diff --git a/src/battle_message.c b/src/battle_message.c index e51d85fe3..9ca2b7cce 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -584,7 +584,7 @@ static const u8 sText_ElectricTerrainEnds[] = _("The electricity disappeared\nfr static const u8 sText_MistyTerrainEnds[] = _("The mist disappeared\nfrom the battlefield."); static const u8 sText_PsychicTerrainEnds[] = _("The weirdness disappeared\nfrom the battlefield."); static const u8 sText_GrassyTerrainEnds[] = _("The grass disappeared\nfrom the battlefield."); -static const u8 sText_AngryPointActivates[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} maxed\nits attack!"); +static const u8 sText_TargetsStatWasMaxedOut[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} maxed\nits {B_BUFF1}!"); static const u8 sText_PoisonHealHpUp[] = _("The poisoning healed {B_ATK_NAME_WITH_PREFIX}\na little bit!"); static const u8 sText_BadDreamsDmg[] = _("{B_DEF_NAME_WITH_PREFIX} is tormented\nby {B_ATK_ABILITY}!"); static const u8 sText_MoldBreakerEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} breaks the mold!"); @@ -1160,7 +1160,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_PSYCHICTERRAINENDS - 12] = sText_PsychicTerrainEnds, [STRINGID_GRASSYTERRAINENDS - 12] = sText_GrassyTerrainEnds, [STRINGID_TARGETABILITYSTATRAISE - 12] = sText_TargetAbilityRaisedStat, - [STRINGID_ANGRYPOINTACTIVATES - 12] = sText_AngryPointActivates, + [STRINGID_TARGETSSTATWASMAXEDOUT - 12] = sText_TargetsStatWasMaxedOut, [STRINGID_ATTACKERABILITYSTATRAISE - 12] = sText_AttackerAbilityRaisedStat, [STRINGID_POISONHEALHPUP - 12] = sText_PoisonHealHpUp, [STRINGID_BADDREAMSDMG - 12] = sText_BadDreamsDmg, diff --git a/src/battle_util.c b/src/battle_util.c index ff93b4120..c1270453f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4425,7 +4425,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { SET_STATCHANGER(STAT_ATK, 12 - gBattleMons[battler].statStages[STAT_ATK], FALSE); BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AngryPointActivates; + gBattlescriptCurrInstr = BattleScript_TargetsStatWasMaxedOut; effect++; } break; @@ -4637,6 +4637,19 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect++; } break; + case ABILITY_STEAM_ENGINE: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && TARGET_TURN_DAMAGED + && IsBattlerAlive(battler) + && gBattleMons[battler].statStages[STAT_SPEED] != 12 + && (moveType == TYPE_FIRE || moveType == TYPE_WATER)) + { + SET_STATCHANGER(STAT_SPEED, 12 - gBattleMons[battler].statStages[STAT_SPEED], FALSE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_TargetsStatWasMaxedOut; + effect++; + } + break; } break; case ABILITYEFFECT_MOVE_END_ATTACKER: // Same as above, but for attacker From 54acea6083da645dd509a226cb1156be01236b80 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Fri, 11 Dec 2020 00:32:12 -0500 Subject: [PATCH 051/116] improve asmdiff.sh --- asmdiff.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/asmdiff.sh b/asmdiff.sh index 9e8749acf..6ea588131 100755 --- a/asmdiff.sh +++ b/asmdiff.sh @@ -1,7 +1,11 @@ #!/bin/bash OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" -OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" +if [ $(($1)) -ge $((0x8000000)) ]; then + OPTIONS="--adjust-vma=0x8000000 --start-address=$(($1)) --stop-address=$(($1 + $2))" +else + OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" +fi $OBJDUMP $OPTIONS baserom.gba > baserom.dump $OBJDUMP $OPTIONS pokeemerald.gba > pokeemerald.dump diff -u baserom.dump pokeemerald.dump From ee59fab143ee4ff79227c9848bfea3acc48cfdc5 Mon Sep 17 00:00:00 2001 From: NamNguyenUTSA <47985283+NamNguyenUTSA@users.noreply.github.com> Date: Fri, 11 Dec 2020 08:31:00 -0600 Subject: [PATCH 052/116] Allow player partner NPC's to mega evolve (i.e., Steven at Mossdeep) --- src/battle_controller_player_partner.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 9743e92e0..06a73beab 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -1526,7 +1526,10 @@ static void PlayerPartnerHandleChooseMove(void) gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); } - BtlController_EmitTwoReturnValues(1, 10, chosenMoveId | (gBattlerTarget << 8)); + if (CanMegaEvolve(gActiveBattler)) // If partner can mega evolve, do it. + BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (RET_MEGA_EVOLUTION) | (gBattlerTarget << 8)); + else + BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gBattlerTarget << 8)); PlayerPartnerBufferExecCompleted(); } From 15ff55eee58bd246d60f97c7ade919519f645654 Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Fri, 11 Dec 2020 13:58:00 +0100 Subject: [PATCH 053/116] use better m4a variable/constant names --- constants/m4a_constants.inc | 166 +++++++++----- include/gba/m4a_internal.h | 189 +++++++++------- src/m4a.c | 226 +++++++++--------- src/m4a_1.s | 440 ++++++++++++++++++------------------ 4 files changed, 549 insertions(+), 472 deletions(-) diff --git a/constants/m4a_constants.inc b/constants/m4a_constants.inc index 62ca5bb55..08d888acd 100644 --- a/constants/m4a_constants.inc +++ b/constants/m4a_constants.inc @@ -2,11 +2,41 @@ .equiv PCM_DMA_BUF_SIZE, 1584 + .equiv C_V, 0x40 + .equiv TONEDATA_TYPE_CGB, 0x07 .equiv TONEDATA_TYPE_FIX, 0x08 + .equiv TONEDATA_TYPE_REV, 0x10 + .equiv TONEDATA_TYPE_CMP, 0x20 .equiv TONEDATA_TYPE_SPL, 0x40 @ key split .equiv TONEDATA_TYPE_RHY, 0x80 @ rhythm + .equiv TONEDATA_P_S_PAN, 0xc0 + + .equiv SOUND_CHANNEL_SF_START, 0x80 + .equiv SOUND_CHANNEL_SF_STOP, 0x40 + .equiv SOUND_CHANNEL_SF_SPECIAL, 0x20 + .equiv SOUND_CHANNEL_SF_LOOP, 0x10 + .equiv SOUND_CHANNEL_SF_IEC, 0x04 + .equiv SOUND_CHANNEL_SF_ENV, 0x03 + .equiv SOUND_CHANNEL_SF_ENV_ATTACK, 0x03 + .equiv SOUND_CHANNEL_SF_ENV_DECAY, 0x02 + .equiv SOUND_CHANNEL_SF_ENV_SUSTAIN, 0x01 + .equiv SOUND_CHANNEL_SF_ENV_RELEASE, 0x00 + .equiv SOUND_CHANNEL_SF_ON, (SOUND_CHANNEL_SF_START | SOUND_CHANNEL_SF_STOP | SOUND_CHANNEL_SF_IEC | SOUND_CHANNEL_SF_ENV) + + .equiv CGB_CHANNEL_MO_PIT, 0x02 + .equiv CGB_CHANNEL_MO_VOL, 0x01 + + .equiv WAVE_DATA_FLAG_LOOP, 0xC0 + + .equiv MPT_FLG_VOLSET, 0x01 + .equiv MPT_FLG_VOLCHG, 0x03 + .equiv MPT_FLG_PITSET, 0x04 + .equiv MPT_FLG_PITCHG, 0x0C + .equiv MPT_FLG_START, 0x40 + .equiv MPT_FLG_EXIST, 0x80 + .macro struct_begin .struct 0 .endm @@ -16,6 +46,28 @@ .struct \name + \size .endm + struct_begin + struct_field o_WaveData_type, 2 + struct_field o_WaveData_d1, 1 + struct_field o_WaveData_flags, 1 + struct_field o_WaveData_freq, 4 + struct_field o_WaveData_loopStart, 4 + struct_field o_WaveData_size, 4 + struct_field o_WaveData_data, 0 + struct_field WaveData_size, 0 + + struct_begin + struct_field o_ToneData_type, 1 + struct_field o_ToneData_key, 1 + struct_field o_ToneData_length, 1 + struct_field o_ToneData_pan_sweep, 1 + struct_field o_ToneData_wav, 4 + struct_field o_ToneData_attack, 1 + struct_field o_ToneData_decay, 1 + struct_field o_ToneData_sustain, 1 + struct_field o_ToneData_release, 1 + struct_field ToneData_size, 0 + struct_begin struct_field o_SoundInfo_ident, 4 struct_field o_SoundInfo_pcmDmaCounter, 1 @@ -32,8 +84,8 @@ struct_field o_SoundInfo_pcmFreq, 4 struct_field o_SoundInfo_divFreq, 4 struct_field o_SoundInfo_cgbChans, 4 - struct_field o_SoundInfo_func, 4 - struct_field o_SoundInfo_intp, 4 + struct_field o_SoundInfo_MPlayMainHead, 4 + struct_field o_SoundInfo_musicPlayerHead, 4 struct_field o_SoundInfo_CgbSound, 4 struct_field o_SoundInfo_CgbOscOff, 4 struct_field o_SoundInfo_MidiKeyToCgbFreq, 4 @@ -46,7 +98,7 @@ struct_field SoundInfo_size, 0 struct_begin - struct_field o_SoundChannel_status, 1 + struct_field o_SoundChannel_statusFlags, 1 struct_field o_SoundChannel_type, 1 struct_field o_SoundChannel_rightVolume, 1 struct_field o_SoundChannel_leftVolume, 1 @@ -54,29 +106,29 @@ struct_field o_SoundChannel_decay, 1 struct_field o_SoundChannel_sustain, 1 struct_field o_SoundChannel_release, 1 - struct_field o_SoundChannel_ky, 1 - struct_field o_SoundChannel_ev, 1 - struct_field o_SoundChannel_er, 1 - struct_field o_SoundChannel_el, 1 - struct_field o_SoundChannel_iev, 1 - struct_field o_SoundChannel_iel, 1 - struct_field o_SoundChannel_d1, 1 - struct_field o_SoundChannel_d2, 1 - struct_field o_SoundChannel_gt, 1 - struct_field o_SoundChannel_mk, 1 - struct_field o_SoundChannel_ve, 1 - struct_field o_SoundChannel_pr, 1 - struct_field o_SoundChannel_rp, 1 - struct_field o_SoundChannel_d3, 3 - struct_field o_SoundChannel_ct, 4 + struct_field o_SoundChannel_key, 1 + struct_field o_SoundChannel_envelopeVolume, 1 + struct_field o_SoundChannel_envelopeVolumeRight, 1 + struct_field o_SoundChannel_envelopeVolumeLeft, 1 + struct_field o_SoundChannel_pseudoEchoVolume, 1 + struct_field o_SoundChannel_pseudoEchoLength, 1 + struct_field o_SoundChannel_dummy1, 1 + struct_field o_SoundChannel_dummy2, 1 + struct_field o_SoundChannel_gateTime, 1 + struct_field o_SoundChannel_midiKey, 1 + struct_field o_SoundChannel_velocity, 1 + struct_field o_SoundChannel_priority, 1 + struct_field o_SoundChannel_rhythmPan, 1 + struct_field o_SoundChannel_dummy3, 3 + struct_field o_SoundChannel_count, 4 struct_field o_SoundChannel_fw, 4 - struct_field o_SoundChannel_freq, 4 + struct_field o_SoundChannel_frequency, 4 struct_field o_SoundChannel_wav, 4 - struct_field o_SoundChannel_cp, 4 + struct_field o_SoundChannel_currentPointer, 4 struct_field o_SoundChannel_track, 4 - struct_field o_SoundChannel_pp, 4 - struct_field o_SoundChannel_np, 4 - struct_field o_SoundChannel_d4, 4 + struct_field o_SoundChannel_prevChannelPointer, 4 + struct_field o_SoundChannel_nextChannelPointer, 4 + struct_field o_SoundChannel_dummy4, 4 struct_field o_SoundChannel_xpi, 2 struct_field o_SoundChannel_xpc, 2 struct_field SoundChannel_size, 0 @@ -112,8 +164,8 @@ struct_field o_MusicPlayerTrack_lfoDelay, 1 struct_field o_MusicPlayerTrack_lfoDelayC, 1 struct_field o_MusicPlayerTrack_priority, 1 - struct_field o_MusicPlayerTrack_echoVolume, 1 - struct_field o_MusicPlayerTrack_echoLength, 1 + struct_field o_MusicPlayerTrack_pseudoEchoVolume, 1 + struct_field o_MusicPlayerTrack_pseudoEchoLength, 1 struct_field o_MusicPlayerTrack_chan, 4 struct_field o_MusicPlayerTrack_ToneData_type, 1 struct_field o_MusicPlayerTrack_ToneData_key, 1 @@ -159,41 +211,41 @@ struct_field MusicPlayerInfo_size, 0 struct_begin - struct_field o_CgbChannel_sf, 1 - struct_field o_CgbChannel_ty, 1 + struct_field o_CgbChannel_statusFlags, 1 + struct_field o_CgbChannel_type, 1 struct_field o_CgbChannel_rightVolume, 1 struct_field o_CgbChannel_leftVolume, 1 - struct_field o_CgbChannel_at, 1 - struct_field o_CgbChannel_de, 1 - struct_field o_CgbChannel_su, 1 - struct_field o_CgbChannel_re, 1 - struct_field o_CgbChannel_ky, 1 - struct_field o_CgbChannel_ev, 1 - struct_field o_CgbChannel_eg, 1 - struct_field o_CgbChannel_ec, 1 - struct_field o_CgbChannel_echoVolume, 1 - struct_field o_CgbChannel_echoLength, 1 - struct_field o_CgbChannel_d1, 1 - struct_field o_CgbChannel_d2, 1 - struct_field o_CgbChannel_gt, 1 - struct_field o_CgbChannel_mk, 1 - struct_field o_CgbChannel_ve, 1 - struct_field o_CgbChannel_pr, 1 - struct_field o_CgbChannel_rp, 1 - struct_field o_CgbChannel_d3, 3 - struct_field o_CgbChannel_d5, 1 - struct_field o_CgbChannel_sg, 1 + struct_field o_CgbChannel_attack, 1 + struct_field o_CgbChannel_decay, 1 + struct_field o_CgbChannel_sustain, 1 + struct_field o_CgbChannel_release, 1 + struct_field o_CgbChannel_key, 1 + struct_field o_CgbChannel_envelopeVolume, 1 + struct_field o_CgbChannel_envelopeGoal, 1 + struct_field o_CgbChannel_envelopeCounter, 1 + struct_field o_CgbChannel_pseudoEchoVolume, 1 + struct_field o_CgbChannel_pseudoEchoLength, 1 + struct_field o_CgbChannel_dummy1, 1 + struct_field o_CgbChannel_dummy2, 1 + struct_field o_CgbChannel_gateTime, 1 + struct_field o_CgbChannel_midiKey, 1 + struct_field o_CgbChannel_velocity, 1 + struct_field o_CgbChannel_priority, 1 + struct_field o_CgbChannel_rhythmPan, 1 + struct_field o_CgbChannel_dummy3, 3 + struct_field o_CgbChannel_dummy5, 1 + struct_field o_CgbChannel_sustainGoal, 1 struct_field o_CgbChannel_n4, 1 struct_field o_CgbChannel_pan, 1 struct_field o_CgbChannel_panMask, 1 - struct_field o_CgbChannel_mo, 1 - struct_field o_CgbChannel_le, 1 - struct_field o_CgbChannel_sw, 1 - struct_field o_CgbChannel_fr, 4 - struct_field o_CgbChannel_wp, 4 - struct_field o_CgbChannel_cp, 4 - struct_field o_CgbChannel_tp, 4 - struct_field o_CgbChannel_pp, 4 - struct_field o_CgbChannel_np, 4 - struct_field o_CgbChannel_d4, 8 + struct_field o_CgbChannel_modify, 1 + struct_field o_CgbChannel_length, 1 + struct_field o_CgbChannel_sweep, 1 + struct_field o_CgbChannel_frequency, 4 + struct_field o_CgbChannel_wavePointer, 4 + struct_field o_CgbChannel_currentPointer, 4 + struct_field o_CgbChannel_track, 4 + struct_field o_CgbChannel_prevChannelPointer, 4 + struct_field o_CgbChannel_nextChannelPointer, 4 + struct_field o_CgbChannel_dummy4, 8 struct_field CgbChannel_size, 0 diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index e2836c6f6..e09169ab8 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -67,52 +67,22 @@ struct ToneData u8 release; }; +#define SOUND_CHANNEL_SF_START 0x80 +#define SOUND_CHANNEL_SF_STOP 0x40 +#define SOUND_CHANNEL_SF_LOOP 0x10 +#define SOUND_CHANNEL_SF_IEC 0x04 +#define SOUND_CHANNEL_SF_ENV 0x03 +#define SOUND_CHANNEL_SF_ENV_ATTACK 0x03 +#define SOUND_CHANNEL_SF_ENV_DECAY 0x02 +#define SOUND_CHANNEL_SF_ENV_SUSTAIN 0x01 +#define SOUND_CHANNEL_SF_ON (SOUND_CHANNEL_SF_START | SOUND_CHANNEL_SF_STOP | SOUND_CHANNEL_SF_IEC | SOUND_CHANNEL_SF_ENV) + +#define CGB_CHANNEL_MO_PIT 0x02 +#define CGB_CHANNEL_MO_VOL 0x01 + struct CgbChannel { - u8 sf; // 0x0 - u8 ty; // 0x1 - u8 rightVolume; // 0x2 - u8 leftVolume; // 0x3 - u8 at; // 0x4 - u8 de; // 0x5 - u8 su; // 0x6 - u8 re; // 0x7 - u8 ky; // 0x8 - u8 ev; // 0x9 - u8 eg; // 0xA - u8 ec; // 0xB - u8 echoVolume; // 0xC - u8 echoLength; // 0xD - u8 d1; // 0xE - u8 d2; // 0xF - u8 gt; // 0x10 - u8 mk; // 0x11 - u8 ve; // 0x12 - u8 pr; // 0x13 - u8 rp; // 0x14 - u8 d3[3]; // 0x15, 0x16, 0x17 - u8 d5; // 0x18 - u8 sg; // 0x19 - u8 n4; // 0x1A - u8 pan; // 0x1B - u8 panMask; // 0x1C - u8 mo; // 0x1D - u8 le; // 0x1E - u8 sw; // 0x1F - u32 fr; // 0x20 - u32 *wp; - u32 cp; - u32 tp; - u32 pp; - u32 np; - u8 d4[8]; -}; - -struct MusicPlayerTrack; - -struct SoundChannel -{ - u8 status; + u8 statusFlags; u8 type; u8 rightVolume; u8 leftVolume; @@ -120,29 +90,72 @@ struct SoundChannel u8 decay; u8 sustain; u8 release; - u8 ky; - u8 ev; - u8 er; - u8 el; - u8 echoVolume; - u8 echoLength; - u8 d1; - u8 d2; - u8 gt; - u8 mk; - u8 ve; - u8 pr; - u8 rp; - u8 d3[3]; - u32 ct; - u32 fw; - u32 freq; - struct WaveData *wav; - u32 cp; + u8 key; + u8 envelopeVolume; + u8 envelopeGoal; + u8 envelopeCounter; + u8 pseudoEchoVolume; + u8 pseudoEchoLength; + u8 dummy1; + u8 dummy2; + u8 gateTime; + u8 midiKey; + u8 velocity; + u8 priority; + u8 rhythmPan; + u8 dummy3[3]; + u8 dummy5; + u8 sustainGoal; + u8 n4; // NR[1-4]4 register (initial, length bit) + u8 pan; + u8 panMask; + u8 modify; + u8 length; + u8 sweep; + u32 frequency; + u32 *wavePointer; // instructs CgbMain to load targeted wave + u32 *currentPointer; // stores the currently loaded wave struct MusicPlayerTrack *track; - u32 pp; - u32 np; - u32 d4; + void *prevChannelPointer; + void *nextChannelPointer; + u8 dummy4[8]; +}; + +struct MusicPlayerTrack; + +struct SoundChannel +{ + u8 statusFlags; + u8 type; + u8 rightVolume; + u8 leftVolume; + u8 attack; + u8 decay; + u8 sustain; + u8 release; + u8 key; // midi key as it was translated into final pitch + u8 envelopeVolume; + u8 envelopeVolumeRight; + u8 envelopeVolumeLeft; + u8 pseudoEchoVolume; + u8 pseudoEchoLength; + u8 dummy1; + u8 dummy2; + u8 gateTime; + u8 midiKey; // midi key as it was used in the track data + u8 velocity; + u8 priority; + u8 rhythmPan; + u8 dummy3[3]; + u32 count; + u32 fw; + u32 frequency; + struct WaveData *wav; + s8 *currentPointer; + struct MusicPlayerTrack *track; + void *prevChannelPointer; + void *nextChannelPointer; + u32 dummy4; u16 xpi; u16 xpc; }; @@ -151,6 +164,16 @@ struct SoundChannel #define PCM_DMA_BUF_SIZE 1584 // size of Direct Sound buffer +struct MusicPlayerInfo; + +typedef void (*MPlayFunc)(); +typedef void (*PlyNoteFunc)(u32, struct MusicPlayerInfo *, struct MusicPlayerTrack *); +typedef void (*CgbSoundFunc)(void); +typedef void (*CgbOscOffFunc)(u8); +typedef u32 (*MidiKeyToCgbFreqFunc)(u8, u8, u8); +typedef void (*ExtVolPitFunc)(void); +typedef void (*MPlayMainFunc)(struct MusicPlayerInfo *); + struct SoundInfo { // This field is normally equal to ID_NUMBER but it is set to other @@ -168,7 +191,7 @@ struct SoundInfo u8 freq; u8 mode; - u8 c15; + u8 c15; // periodically counts from 14 downto 0 (15 states) u8 pcmDmaPeriod; // number of V-blanks per PCM DMA u8 maxLines; u8 gap[3]; @@ -176,14 +199,14 @@ struct SoundInfo s32 pcmFreq; s32 divFreq; struct CgbChannel *cgbChans; - u32 func; - u32 intp; - void (*CgbSound)(void); - void (*CgbOscOff)(u8); - u32 (*MidiKeyToCgbFreq)(u8, u8, u8); - u32 MPlayJumpTable; - u32 plynote; - u32 ExtVolPit; + MPlayMainFunc MPlayMainHead; + struct MusicPlayerInfo *musicPlayerHead; + CgbSoundFunc CgbSound; + CgbOscOffFunc CgbOscOff; + MidiKeyToCgbFreqFunc MidiKeyToCgbFreq; + MPlayFunc *MPlayJumpTable; + PlyNoteFunc plynote; + ExtVolPitFunc ExtVolPit; u8 gap2[16]; struct SoundChannel chans[MAX_DIRECTSOUND_CHANNELS]; s8 pcmBuffer[PCM_DMA_BUF_SIZE * 2]; @@ -270,8 +293,8 @@ struct MusicPlayerTrack u8 lfoDelay; u8 lfoDelayC; u8 priority; - u8 echoVolume; - u8 echoLength; + u8 pseudoEchoVolume; + u8 pseudoEchoLength; struct SoundChannel *chan; struct ToneData tone; u8 gap[10]; @@ -312,8 +335,8 @@ struct MusicPlayerInfo struct MusicPlayerTrack *tracks; struct ToneData *tone; u32 ident; - u32 func; - u32 intp; + MPlayMainFunc MPlayMainNext; + struct MusicPlayerInfo *musicPlayerNext; }; struct MusicPlayer @@ -351,7 +374,7 @@ extern struct MusicPlayerTrack gPokemonCryTracks[]; extern char SoundMainRAM[]; -extern void *gMPlayJumpTable[]; +extern MPlayFunc gMPlayJumpTable[]; typedef void (*XcmdFunc)(struct MusicPlayerInfo *, struct MusicPlayerTrack *); extern const XcmdFunc gXcmdTable[]; @@ -380,7 +403,7 @@ u32 umul3232H32(u32 multiplier, u32 multiplicand); void SoundMain(void); void SoundMainBTM(void); void TrackStop(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track); -void MPlayMain(void); +void MPlayMain(struct MusicPlayerInfo *); void RealClearChain(void *x); void MPlayContinue(struct MusicPlayerInfo *mplayInfo); @@ -400,7 +423,7 @@ void CgbOscOff(u8); void CgbModVol(struct CgbChannel *chan); u32 MidiKeyToCgbFreq(u8, u8, u8); void DummyFunc(void); -void MPlayJumpTableCopy(void **mplayJumpTable); +void MPlayJumpTableCopy(MPlayFunc *mplayJumpTable); void SampleFreqSet(u32 freq); void m4aSoundVSyncOn(void); void m4aSoundVSyncOff(void); @@ -448,7 +471,7 @@ void ply_tune(struct MusicPlayerInfo *, struct MusicPlayerTrack *); void ply_port(struct MusicPlayerInfo *, struct MusicPlayerTrack *); void ply_xcmd(struct MusicPlayerInfo *, struct MusicPlayerTrack *); void ply_endtie(struct MusicPlayerInfo *, struct MusicPlayerTrack *); -void ply_note(struct MusicPlayerInfo *, struct MusicPlayerTrack *); +void ply_note(u32 note_cmd, struct MusicPlayerInfo *, struct MusicPlayerTrack *); // extended sound command handler functions void ply_xxx(struct MusicPlayerInfo *, struct MusicPlayerTrack *); diff --git a/src/m4a.c b/src/m4a.c index f061ba9b9..3d564a5a1 100644 --- a/src/m4a.c +++ b/src/m4a.c @@ -10,7 +10,7 @@ BSS_CODE ALIGNED(4) char SoundMainRAM_Buffer[0x800] = {0}; struct SoundInfo gSoundInfo; struct PokemonCrySong gPokemonCrySongs[MAX_POKEMON_CRIES]; struct MusicPlayerInfo gPokemonCryMusicPlayers[MAX_POKEMON_CRIES]; -void *gMPlayJumpTable[36]; +MPlayFunc gMPlayJumpTable[36]; struct CgbChannel gCgbChans[4]; struct MusicPlayerTrack gPokemonCryTracks[MAX_POKEMON_CRIES * 2]; struct PokemonCrySong gPokemonCrySong; @@ -293,7 +293,7 @@ void MPlayExtender(struct CgbChannel *cgbChans) gMPlayJumpTable[32] = FadeOutBody; gMPlayJumpTable[33] = TrkVolPitSet; - soundInfo->cgbChans = (struct CgbChannel *)cgbChans; + soundInfo->cgbChans = cgbChans; soundInfo->CgbSound = CgbSound; soundInfo->CgbOscOff = CgbOscOff; soundInfo->MidiKeyToCgbFreq = MidiKeyToCgbFreq; @@ -301,13 +301,13 @@ void MPlayExtender(struct CgbChannel *cgbChans) CpuFill32(0, cgbChans, sizeof(struct CgbChannel) * 4); - cgbChans[0].ty = 1; + cgbChans[0].type = 1; cgbChans[0].panMask = 0x11; - cgbChans[1].ty = 2; + cgbChans[1].type = 2; cgbChans[1].panMask = 0x22; - cgbChans[2].ty = 3; + cgbChans[2].type = 3; cgbChans[2].panMask = 0x44; - cgbChans[3].ty = 4; + cgbChans[3].type = 4; cgbChans[3].panMask = 0x88; soundInfo->ident = ident; @@ -362,15 +362,15 @@ void SoundInit(struct SoundInfo *soundInfo) soundInfo->maxChans = 8; soundInfo->masterVolume = 15; - soundInfo->plynote = (u32)ply_note; + soundInfo->plynote = ply_note; soundInfo->CgbSound = DummyFunc; - soundInfo->CgbOscOff = (void (*)(u8))DummyFunc; - soundInfo->MidiKeyToCgbFreq = (u32 (*)(u8, u8, u8))DummyFunc; - soundInfo->ExtVolPit = (u32)DummyFunc; + soundInfo->CgbOscOff = (CgbOscOffFunc)DummyFunc; + soundInfo->MidiKeyToCgbFreq = (MidiKeyToCgbFreqFunc)DummyFunc; + soundInfo->ExtVolPit = (ExtVolPitFunc)DummyFunc; MPlayJumpTableCopy(gMPlayJumpTable); - soundInfo->MPlayJumpTable = (u32)gMPlayJumpTable; + soundInfo->MPlayJumpTable = gMPlayJumpTable; SampleFreqSet(SOUND_MODE_FREQ_13379); @@ -437,7 +437,7 @@ void m4aSoundMode(u32 mode) while (temp != 0) { - chan->status = 0; + chan->statusFlags = 0; temp--; chan++; } @@ -483,7 +483,7 @@ void SoundClear(void) while (i > 0) { - ((struct SoundChannel *)chan)->status = 0; + ((struct SoundChannel *)chan)->statusFlags = 0; i--; chan = (void *)((s32)chan + sizeof(struct SoundChannel)); } @@ -497,7 +497,7 @@ void SoundClear(void) while (i <= 4) { soundInfo->CgbOscOff(i); - ((struct CgbChannel *)chan)->sf = 0; + ((struct CgbChannel *)chan)->statusFlags = 0; i++; chan = (void *)((s32)chan + sizeof(struct CgbChannel)); } @@ -572,15 +572,18 @@ void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track tracks++; } - if (soundInfo->func != 0) + // append music player and MPlayMain to linked list + + if (soundInfo->MPlayMainHead != NULL) { - mplayInfo->func = soundInfo->func; - mplayInfo->intp = soundInfo->intp; - soundInfo->func = 0; + mplayInfo->MPlayMainNext = soundInfo->MPlayMainHead; + mplayInfo->musicPlayerNext = soundInfo->musicPlayerHead; + // NULL assignment semantically useless, but required for match + soundInfo->MPlayMainHead = NULL; } - soundInfo->intp = (u32)mplayInfo; - soundInfo->func = (u32)MPlayMain; + soundInfo->musicPlayerHead = mplayInfo; + soundInfo->MPlayMainHead = MPlayMain; soundInfo->ident = ID_NUMBER; mplayInfo->ident = ID_NUMBER; } @@ -884,7 +887,7 @@ void CgbModVol(struct CgbChannel *chan) if ((soundInfo->mode & 1) || !CgbPan(chan)) { chan->pan = 0xFF; - chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; + chan->envelopeGoal = (u32)(chan->rightVolume + chan->leftVolume) >> 4; } else { @@ -895,12 +898,12 @@ void CgbModVol(struct CgbChannel *chan) asm("" : : : "memory"); #endif - chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4; - if (chan->eg > 15) - chan->eg = 15; + chan->envelopeGoal = (u32)(chan->rightVolume + chan->leftVolume) >> 4; + if (chan->envelopeGoal > 15) + chan->envelopeGoal = 15; } - chan->sg = (chan->eg * chan->su + 15) >> 4; + chan->sustainGoal = (chan->envelopeGoal * chan->sustain + 15) >> 4; chan->pan &= chan->panMask; } @@ -927,7 +930,7 @@ void CgbSound(void) for (ch = 1, channels = soundInfo->cgbChans; ch <= 4; ch++, channels++) { - if (!(channels->sf & 0xc7)) + if (!(channels->statusFlags & SOUND_CHANNEL_SF_ON)) continue; switch (ch) @@ -965,53 +968,53 @@ void CgbSound(void) prevC15 = soundInfo->c15; evAdd = *nrx2ptr; - if (channels->sf & 0x80) + if (channels->statusFlags & SOUND_CHANNEL_SF_START) { - if (!(channels->sf & 0x40)) + if (!(channels->statusFlags & SOUND_CHANNEL_SF_STOP)) { - channels->sf = 3; - channels->mo = 3; + channels->statusFlags = SOUND_CHANNEL_SF_ENV_ATTACK; + channels->modify = CGB_CHANNEL_MO_PIT | CGB_CHANNEL_MO_VOL; CgbModVol(channels); switch (ch) { case 1: - *nrx0ptr = channels->sw; + *nrx0ptr = channels->sweep; // fallthrough case 2: - *nrx1ptr = ((u32)channels->wp << 6) + channels->le; + *nrx1ptr = ((u32)channels->wavePointer << 6) + channels->length; goto loc_82E0E30; case 3: - if ((u32)channels->wp != channels->cp) + if (channels->wavePointer != channels->currentPointer) { *nrx0ptr = 0x40; - REG_WAVE_RAM0 = channels->wp[0]; - REG_WAVE_RAM1 = channels->wp[1]; - REG_WAVE_RAM2 = channels->wp[2]; - REG_WAVE_RAM3 = channels->wp[3]; - channels->cp = (u32)channels->wp; + REG_WAVE_RAM0 = channels->wavePointer[0]; + REG_WAVE_RAM1 = channels->wavePointer[1]; + REG_WAVE_RAM2 = channels->wavePointer[2]; + REG_WAVE_RAM3 = channels->wavePointer[3]; + channels->currentPointer = channels->wavePointer; } *nrx0ptr = 0; - *nrx1ptr = channels->le; - if (channels->le) - channels->n4 = -64; + *nrx1ptr = channels->length; + if (channels->length) + channels->n4 = 0xC0; else - channels->n4 = -128; + channels->n4 = 0x80; break; default: - *nrx1ptr = channels->le; - *nrx3ptr = (u32)channels->wp << 3; + *nrx1ptr = channels->length; + *nrx3ptr = (u32)channels->wavePointer << 3; loc_82E0E30: - evAdd = channels->at + 8; - if (channels->le) - channels->n4 = 64; + evAdd = channels->attack + 8; + if (channels->length) + channels->n4 = 0x40; else - channels->n4 = 0; + channels->n4 = 0x00; break; } - channels->ec = channels->at; - if ((s8)(channels->at & mask)) + channels->envelopeCounter = channels->attack; + if ((s8)(channels->attack & mask)) { - channels->ev = 0; + channels->envelopeVolume = 0; goto EC_MINUS; } else @@ -1024,28 +1027,28 @@ void CgbSound(void) goto loc_82E0E82; } } - else if (channels->sf & 0x04) + else if (channels->statusFlags & SOUND_CHANNEL_SF_IEC) { - channels->echoLength--; - if ((s8)(channels->echoLength & mask) <= 0) + channels->pseudoEchoLength--; + if ((s8)(channels->pseudoEchoLength & mask) <= 0) { loc_82E0E82: CgbOscOff(ch); - channels->sf = 0; + channels->statusFlags = 0; goto LAST_LABEL; } goto loc_82E0FD6; } - else if ((channels->sf & 0x40) && (channels->sf & 0x03)) + else if ((channels->statusFlags & SOUND_CHANNEL_SF_STOP) && (channels->statusFlags & SOUND_CHANNEL_SF_ENV)) { - channels->sf &= 0xfc; - channels->ec = channels->re; - if ((s8)(channels->re & mask)) + channels->statusFlags &= ~SOUND_CHANNEL_SF_ENV; + channels->envelopeCounter = channels->release; + if ((s8)(channels->release & mask)) { - channels->mo |= 1; + channels->modify |= CGB_CHANNEL_MO_VOL; if (ch != 3) { - evAdd = channels->re; + evAdd = channels->release; } goto EC_MINUS; } @@ -1057,24 +1060,24 @@ void CgbSound(void) else { loc_82E0ED0: - if (channels->ec == 0) + if (channels->envelopeCounter == 0) { if (ch == 3) { - channels->mo |= 1; + channels->modify |= CGB_CHANNEL_MO_VOL; } CgbModVol(channels); - if ((channels->sf & 0x3) == 0) + if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == 0) { - channels->ev--; - if ((s8)(channels->ev & mask) <= 0) + channels->envelopeVolume--; + if ((s8)(channels->envelopeVolume & mask) <= 0) { loc_82E0F02: - channels->ev = ((channels->eg * channels->echoVolume) + 0xFF) >> 8; - if (channels->ev) + channels->envelopeVolume = ((channels->envelopeGoal * channels->pseudoEchoVolume) + 0xFF) >> 8; + if (channels->envelopeVolume) { - channels->sf |= 0x4; - channels->mo |= 1; + channels->statusFlags |= SOUND_CHANNEL_SF_IEC; + channels->modify |= CGB_CHANNEL_MO_VOL; if (ch != 3) { evAdd = 8; @@ -1088,34 +1091,34 @@ void CgbSound(void) } else { - channels->ec = channels->re; + channels->envelopeCounter = channels->release; } } - else if ((channels->sf & 0x3) == 1) + else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == 1) { loc_82E0F3A: - channels->ev = channels->sg; - channels->ec = 7; + channels->envelopeVolume = channels->sustainGoal; + channels->envelopeCounter = 7; } - else if ((channels->sf & 0x3) == 2) + else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == 2) { - int ev, sg; + int envelopeVolume, sustainGoal; - channels->ev--; - ev = (s8)(channels->ev & mask); - sg = (s8)(channels->sg); - if (ev <= sg) + channels->envelopeVolume--; + envelopeVolume = (s8)(channels->envelopeVolume & mask); + sustainGoal = (s8)(channels->sustainGoal); + if (envelopeVolume <= sustainGoal) { loc_82E0F5A: - if (channels->su == 0) + if (channels->sustain == 0) { - channels->sf &= 0xfc; + channels->statusFlags &= ~SOUND_CHANNEL_SF_ENV; goto loc_82E0F02; } else { - channels->sf--; - channels->mo |= 1; + channels->statusFlags--; + channels->modify |= CGB_CHANNEL_MO_VOL; if (ch != 3) { evAdd = 8; @@ -1125,24 +1128,24 @@ void CgbSound(void) } else { - channels->ec = channels->de; + channels->envelopeCounter = channels->decay; } } else { - channels->ev++; - if ((u8)(channels->ev & mask) >= channels->eg) + channels->envelopeVolume++; + if ((u8)(channels->envelopeVolume & mask) >= channels->envelopeGoal) { loc_82E0F96: - channels->sf--; - channels->ec = channels->de; - if ((u8)(channels->ec & mask)) + channels->statusFlags--; + channels->envelopeCounter = channels->decay; + if ((u8)(channels->envelopeCounter & mask)) { - channels->mo |= 1; - channels->ev = channels->eg; + channels->modify |= CGB_CHANNEL_MO_VOL; + channels->envelopeVolume = channels->envelopeGoal; if (ch != 3) { - evAdd = channels->de; + evAdd = channels->decay; } } else @@ -1152,14 +1155,14 @@ void CgbSound(void) } else { - channels->ec = channels->at; + channels->envelopeCounter = channels->attack; } } } } EC_MINUS: - channels->ec--; + channels->envelopeCounter--; if (prevC15 == 0) { prevC15--; @@ -1167,39 +1170,39 @@ void CgbSound(void) } loc_82E0FD6: - if (channels->mo & 0x2) + if (channels->modify & CGB_CHANNEL_MO_PIT) { - if (ch < 4 && (channels->ty & 0x08)) + if (ch < 4 && (channels->type & TONEDATA_TYPE_FIX)) { int biasH = REG_SOUNDBIAS_H; if (biasH < 64) { - channels->fr = (channels->fr + 2) & 0x7fc; + channels->frequency = (channels->frequency + 2) & 0x7fc; } else if (biasH < 128) { - channels->fr = (channels->fr + 1) & 0x7fe; + channels->frequency = (channels->frequency + 1) & 0x7fe; } } if (ch != 4) { - *nrx3ptr = channels->fr; + *nrx3ptr = channels->frequency; } else { - *nrx3ptr = (*nrx3ptr & 0x08) | channels->fr; + *nrx3ptr = (*nrx3ptr & 0x08) | channels->frequency; } - channels->n4 = (channels->n4 & 0xC0) + (*((u8*)(&channels->fr) + 1)); + channels->n4 = (channels->n4 & 0xC0) + (*((u8*)(&channels->frequency) + 1)); *nrx4ptr = (s8)(channels->n4 & mask); } - if (channels->mo & 1) + if (channels->modify & 1) { REG_NR51 = (REG_NR51 & ~channels->panMask) | channels->pan; if (ch == 3) { - *nrx2ptr = gCgb3Vol[channels->ev]; + *nrx2ptr = gCgb3Vol[channels->envelopeVolume]; if (channels->n4 & 0x80) { *nrx0ptr = 0x80; @@ -1210,7 +1213,7 @@ void CgbSound(void) else { evAdd &= 0xf; - *nrx2ptr = (channels->ev << 4) + evAdd; + *nrx2ptr = (channels->envelopeVolume << 4) + evAdd; *nrx4ptr = channels->n4 | 0x80; if (ch == 1 && !(*nrx0ptr & 0x08)) { @@ -1220,7 +1223,7 @@ void CgbSound(void) } LAST_LABEL: - channels->mo = 0; + channels->modify = 0; } } @@ -1504,8 +1507,8 @@ void ply_memacc(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *trac cond_true: { - void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[1]); - func(mplayInfo, track); + // *& is required for matching + (*&gMPlayJumpTable[1])(mplayInfo, track); return; } @@ -1523,8 +1526,7 @@ void ply_xcmd(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) void ply_xxx(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) { - void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[0]); - func(mplayInfo, track); + gMPlayJumpTable[0](mplayInfo, track); } #define READ_XCMD_BYTE(var, n) \ @@ -1580,13 +1582,13 @@ void ply_xrele(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track void ply_xiecv(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) { - track->echoVolume = *track->cmdPtr; + track->pseudoEchoVolume = *track->cmdPtr; track->cmdPtr++; } void ply_xiecl(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track) { - track->echoLength = *track->cmdPtr; + track->pseudoEchoLength = *track->cmdPtr; track->cmdPtr++; } diff --git a/src/m4a_1.s b/src/m4a_1.s index cab4ed174..d72336c18 100644 --- a/src/m4a_1.s +++ b/src/m4a_1.s @@ -48,10 +48,10 @@ SoundMain_2: adds r1, r2 SoundMain_3: str r1, [sp, 0x14] - ldr r3, [r0, o_SoundInfo_func] + ldr r3, [r0, o_SoundInfo_MPlayMainHead] cmp r3, 0 beq SoundMain_4 - ldr r0, [r0, o_SoundInfo_intp] + ldr r0, [r0, o_SoundInfo_musicPlayerHead] bl _081DD25E ldr r0, [sp, 0x18] SoundMain_4: @@ -169,74 +169,74 @@ _081DCF54: .pool _081DCF60: - ldrb r6, [r4, o_SoundChannel_status] - movs r0, 0xC7 + ldrb r6, [r4, o_SoundChannel_statusFlags] + movs r0, SOUND_CHANNEL_SF_ON tst r0, r6 bne _081DCF6A b _081DD240 _081DCF6A: - movs r0, 0x80 + movs r0, SOUND_CHANNEL_SF_START tst r0, r6 beq _081DCFA0 - movs r0, 0x40 + movs r0, SOUND_CHANNEL_SF_STOP tst r0, r6 bne _081DCFB0 - movs r6, 0x3 - strb r6, [r4, o_SoundChannel_status] + movs r6, SOUND_CHANNEL_SF_ENV_ATTACK + strb r6, [r4, o_SoundChannel_statusFlags] adds r0, r3, 0 - adds r0, 0x10 - ldr r1, [r4, o_SoundChannel_ct] + adds r0, o_WaveData_data + ldr r1, [r4, o_SoundChannel_count] adds r0, r1 - str r0, [r4, o_SoundChannel_cp] - ldr r0, [r3, 0xC] + str r0, [r4, o_SoundChannel_currentPointer] + ldr r0, [r3, o_WaveData_size] subs r0, r1 - str r0, [r4, o_SoundChannel_ct] + str r0, [r4, o_SoundChannel_count] movs r5, 0 - strb r5, [r4, o_SoundChannel_ev] + strb r5, [r4, o_SoundChannel_envelopeVolume] str r5, [r4, o_SoundChannel_fw] - ldrb r2, [r3, 0x3] - movs r0, 0xC0 + ldrb r2, [r3, o_WaveData_flags] + movs r0, WAVE_DATA_FLAG_LOOP tst r0, r2 beq _081DCFF8 - movs r0, 0x10 + movs r0, SOUND_CHANNEL_SF_LOOP orrs r6, r0 - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, o_SoundChannel_statusFlags] b _081DCFF8 _081DCFA0: - ldrb r5, [r4, o_SoundChannel_ev] - movs r0, 0x4 + ldrb r5, [r4, o_SoundChannel_envelopeVolume] + movs r0, SOUND_CHANNEL_SF_IEC tst r0, r6 beq _081DCFB6 - ldrb r0, [r4, o_SoundChannel_iel] + ldrb r0, [r4, o_SoundChannel_pseudoEchoLength] subs r0, 1 - strb r0, [r4, o_SoundChannel_iel] + strb r0, [r4, o_SoundChannel_pseudoEchoLength] bhi _081DD006 _081DCFB0: movs r0, 0 - strb r0, [r4, o_SoundChannel_status] + strb r0, [r4, o_SoundChannel_statusFlags] b _081DD240 _081DCFB6: - movs r0, 0x40 + movs r0, SOUND_CHANNEL_SF_STOP tst r0, r6 beq _081DCFD6 ldrb r0, [r4, o_SoundChannel_release] muls r5, r0 lsrs r5, 8 - ldrb r0, [r4, o_SoundChannel_iev] + ldrb r0, [r4, o_SoundChannel_pseudoEchoVolume] cmp r5, r0 bhi _081DD006 _081DCFC8: - ldrb r5, [r4, o_SoundChannel_iev] + ldrb r5, [r4, o_SoundChannel_pseudoEchoVolume] cmp r5, 0 beq _081DCFB0 - movs r0, 0x4 + movs r0, SOUND_CHANNEL_SF_IEC orrs r6, r0 - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, o_SoundChannel_statusFlags] b _081DD006 _081DCFD6: - movs r2, 0x3 + movs r2, SOUND_CHANNEL_SF_ENV ands r2, r6 - cmp r2, 0x2 + cmp r2, SOUND_CHANNEL_SF_ENV_DECAY bne _081DCFF4 ldrb r0, [r4, o_SoundChannel_decay] muls r5, r0 @@ -247,10 +247,10 @@ _081DCFD6: adds r5, r0, 0 beq _081DCFC8 subs r6, 0x1 - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, o_SoundChannel_statusFlags] b _081DD006 _081DCFF4: - cmp r2, 0x3 + cmp r2, SOUND_CHANNEL_SF_ENV_ATTACK bne _081DD006 _081DCFF8: ldrb r0, [r4, o_SoundChannel_attack] @@ -259,9 +259,9 @@ _081DCFF8: bcc _081DD006 movs r5, 0xFF subs r6, 0x1 - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, o_SoundChannel_statusFlags] _081DD006: - strb r5, [r4, o_SoundChannel_ev] + strb r5, [r4, o_SoundChannel_envelopeVolume] ldr r0, [sp, 0x18] ldrb r0, [r0, o_SoundChannel_release] adds r0, 0x1 @@ -270,37 +270,37 @@ _081DD006: ldrb r0, [r4, o_SoundChannel_rightVolume] muls r0, r5 lsrs r0, 8 - strb r0, [r4, o_SoundChannel_er] + strb r0, [r4, o_SoundChannel_envelopeVolumeRight] ldrb r0, [r4, o_SoundChannel_leftVolume] muls r0, r5 lsrs r0, 8 - strb r0, [r4, o_SoundChannel_el] - movs r0, 0x10 + strb r0, [r4, o_SoundChannel_envelopeVolumeLeft] + movs r0, SOUND_CHANNEL_SF_LOOP ands r0, r6 str r0, [sp, 0x10] beq _081DD03A adds r0, r3, 0 - adds r0, 0x10 - ldr r1, [r3, 0x8] + adds r0, o_WaveData_data + ldr r1, [r3, o_WaveData_loopStart] adds r0, r1 str r0, [sp, 0xC] - ldr r0, [r3, 0xC] + ldr r0, [r3, o_WaveData_size] subs r0, r1 str r0, [sp, 0x10] _081DD03A: ldr r5, [sp, 0x8] - ldr r2, [r4, o_SoundChannel_ct] - ldr r3, [r4, o_SoundChannel_cp] + ldr r2, [r4, o_SoundChannel_count] + ldr r3, [r4, o_SoundChannel_currentPointer] adr r0, _081DD044 bx r0 .arm _081DD044: str r8, [sp] ldr r9, [r4, o_SoundChannel_fw] - ldrb r10, [r4, o_SoundChannel_er] - ldrb r11, [r4, o_SoundChannel_el] + ldrb r10, [r4, o_SoundChannel_envelopeVolumeRight] + ldrb r11, [r4, o_SoundChannel_envelopeVolumeLeft] ldrb r0, [r4, o_SoundChannel_type] - tst r0, 0x30 + tst r0, TONEDATA_TYPE_CMP | TONEDATA_TYPE_REV beq _081DD068 bl sub_82DF49C b _081DD228 @@ -324,7 +324,7 @@ _081DD07C: moveq r2, 0x4 _081DD0A8: ldr r6, [r5] - ldr r7, [r5, 0x630] + ldr r7, [r5, PCM_DMA_BUF_SIZE] _081DD0B0: ldrsb r0, [r3], 0x1 mul r1, r10, r0 @@ -335,7 +335,7 @@ _081DD0B0: add r7, r1, r7, ror 8 adds r5, r5, 0x40000000 bcc _081DD0B0 - str r7, [r5, 0x630] + str r7, [r5, PCM_DMA_BUF_SIZE] str r6, [r5], 0x4 subs r8, r8, 0x4 bgt _081DD0A8 @@ -343,7 +343,7 @@ _081DD0B0: beq _081DD22C _081DD0EC: ldr r6, [r5] - ldr r7, [r5, 0x630] + ldr r7, [r5, PCM_DMA_BUF_SIZE] _081DD0F4: ldrsb r0, [r3], 0x1 mul r1, r10, r0 @@ -357,7 +357,7 @@ _081DD0F4: _081DD118: adds r5, r5, 0x40000000 bcc _081DD0F4 - str r7, [r5, 0x630] + str r7, [r5, PCM_DMA_BUF_SIZE] str r6, [r5], 0x4 subs r8, r8, 0x4 bgt _081DD07C @@ -383,26 +383,26 @@ _081DD164: ldrne r3, [sp, 0xC] bne _081DD118 _081DD174: - strb r2, [r4, o_SoundChannel_status] + strb r2, [r4, o_SoundChannel_statusFlags] mov r0, r5, lsr 30 bic r5, r5, 0xC0000000 rsb r0, r0, 0x3 mov r0, r0, lsl 3 mov r6, r6, ror r0 mov r7, r7, ror r0 - str r7, [r5, 0x630] + str r7, [r5, PCM_DMA_BUF_SIZE] str r6, [r5], 0x4 b _081DD234 _081DD19C: push {r4,r12} - ldr r1, [r4, o_SoundChannel_freq] + ldr r1, [r4, o_SoundChannel_frequency] mul r4, r12, r1 ldrsb r0, [r3] ldrsb r1, [r3, 0x1]! sub r1, r1, r0 _081DD1B4: ldr r6, [r5] - ldr r7, [r5, 0x630] + ldr r7, [r5, PCM_DMA_BUF_SIZE] _081DD1BC: mul lr, r9, r1 add lr, r0, lr, asr 23 @@ -427,7 +427,7 @@ _081DD1FC: _081DD208: adds r5, r5, 0x40000000 bcc _081DD1BC - str r7, [r5, 0x630] + str r7, [r5, PCM_DMA_BUF_SIZE] str r6, [r5], 0x4 subs r8, r8, 0x4 bgt _081DD1B4 @@ -436,8 +436,8 @@ _081DD208: _081DD228: str r9, [r4, o_SoundChannel_fw] _081DD22C: - str r2, [r4, o_SoundChannel_ct] - str r3, [r4, o_SoundChannel_cp] + str r2, [r4, o_SoundChannel_count] + str r3, [r4, o_SoundChannel_currentPointer] _081DD234: ldr r8, [sp] add r0, pc, 0x1 @@ -468,42 +468,42 @@ _081DD25E: arm_func_start sub_82DF49C sub_82DF49C: ldr r6, [r4, o_SoundChannel_wav] - ldrb r0, [r4, o_SoundChannel_status] - tst r0, 0x20 + ldrb r0, [r4, o_SoundChannel_statusFlags] + tst r0, SOUND_CHANNEL_SF_SPECIAL bne _081DD2B4 - orr r0, r0, 0x20 - strb r0, [r4, o_SoundChannel_status] + orr r0, r0, SOUND_CHANNEL_SF_SPECIAL + strb r0, [r4, o_SoundChannel_statusFlags] ldrb r0, [r4, o_SoundChannel_type] - tst r0, 0x10 + tst r0, TONEDATA_TYPE_REV beq _081DD29C - ldr r1, [r6, 0xC] + ldr r1, [r6, o_WaveData_size] add r1, r1, r6, lsl 1 add r1, r1, 0x20 sub r3, r1, r3 - str r3, [r4, o_SoundChannel_cp] + str r3, [r4, o_SoundChannel_currentPointer] _081DD29C: - ldrh r0, [r6] + ldrh r0, [r6, o_WaveData_type] cmp r0, 0 beq _081DD2B4 sub r3, r3, r6 sub r3, r3, 0x10 - str r3, [r4, o_SoundChannel_cp] + str r3, [r4, o_SoundChannel_currentPointer] _081DD2B4: push {r8,r12,lr} mov r10, r10, lsl 16 mov r11, r11, lsl 16 - ldr r1, [r4, o_SoundChannel_freq] + ldr r1, [r4, o_SoundChannel_frequency] ldrb r0, [r4, o_SoundChannel_type] - tst r0, 0x8 + tst r0, TONEDATA_TYPE_FIX movne r8, 0x800000 muleq r8, r12, r1 - ldrh r0, [r6] + ldrh r0, [r6, o_WaveData_type] cmp r0, 0 beq _081DD468 mov r0, 0xFF000000 str r0, [r4, o_SoundChannel_xpi] ldrb r0, [r4, o_SoundChannel_type] - tst r0, 0x10 + tst r0, TONEDATA_TYPE_REV bne _081DD3C0 bl sub_82DF758 mov r0, r1 @@ -512,7 +512,7 @@ _081DD2B4: sub r1, r1, r0 _081DD308: ldr r6, [r5] - ldr r7, [r5, 0x630] + ldr r7, [r5, PCM_DMA_BUF_SIZE] _081DD310: mul lr, r9, r1 add lr, r0, lr, asr 23 @@ -543,7 +543,7 @@ _081DD364: _081DD370: adds r5, r5, 0x40000000 bcc _081DD310 - str r7, [r5, 0x630] + str r7, [r5, PCM_DMA_BUF_SIZE] str r6, [r5], 0x4 ldr r6, [sp] subs r6, r6, 0x4 @@ -556,7 +556,7 @@ _081DD398: cmp r0, 0 beq _081DD4F4 ldr r3, [r4, o_SoundChannel_wav] - ldr r3, [r3, 0x8] + ldr r3, [r3, o_WaveData_loopStart] rsb lr, r2, 0 _081DD3B0: adds r2, r2, r0 @@ -572,7 +572,7 @@ _081DD3C0: sub r1, r1, r0 _081DD3D8: ldr r6, [r5] - ldr r7, [r5, 0x630] + ldr r7, [r5, PCM_DMA_BUF_SIZE] _081DD3E0: mul lr, r9, r1 add lr, r0, lr, asr 23 @@ -603,7 +603,7 @@ _081DD434: _081DD440: adds r5, r5, 0x40000000 bcc _081DD3E0 - str r7, [r5, 0x630] + str r7, [r5, PCM_DMA_BUF_SIZE] str r6, [r5], 0x4 ldr r6, [sp] subs r6, r6, 0x4 @@ -613,7 +613,7 @@ _081DD440: b _081DD4F0 _081DD468: ldrb r0, [r4, o_SoundChannel_type] - tst r0, 0x10 + tst r0, TONEDATA_TYPE_REV beq _081DD4F0 ldrsb r0, [r3, -0x1]! ldrsb r1, [r3, -0x1] @@ -653,7 +653,7 @@ _081DD4F0: pop {r8,r12,pc} _081DD4F4: mov r2, 0 - strb r2, [r4, o_SoundChannel_status] + strb r2, [r4, o_SoundChannel_statusFlags] mov r0, r5, lsr 30 bic r5, r5, 0xC0000000 rsb r0, r0, 0x3 @@ -723,24 +723,24 @@ SoundMainBTM: thumb_func_start RealClearChain RealClearChain: - ldr r3, [r0, 0x2C] + ldr r3, [r0, o_SoundChannel_track] cmp r3, 0 beq _081DD5E2 - ldr r1, [r0, 0x34] - ldr r2, [r0, 0x30] + ldr r1, [r0, o_SoundChannel_nextChannelPointer] + ldr r2, [r0, o_SoundChannel_prevChannelPointer] cmp r2, 0 beq _081DD5D6 - str r1, [r2, 0x34] + str r1, [r2, o_SoundChannel_nextChannelPointer] b _081DD5D8 _081DD5D6: - str r1, [r3, 0x20] + str r1, [r3, o_MusicPlayerTrack_chan] _081DD5D8: cmp r1, 0 beq _081DD5DE - str r2, [r1, 0x30] + str r2, [r1, o_SoundChannel_prevChannelPointer] _081DD5DE: movs r1, 0 - str r1, [r0, 0x2C] + str r1, [r0, o_SoundChannel_track] _081DD5E2: bx lr thumb_func_end RealClearChain @@ -753,22 +753,22 @@ ply_fine: cmp r4, 0 beq ply_fine_done ply_fine_loop: - ldrb r1, [r4] - movs r0, 0xC7 + ldrb r1, [r4, o_SoundChannel_statusFlags] + movs r0, SOUND_CHANNEL_SF_ON tst r0, r1 beq ply_fine_ok - movs r0, 0x40 + movs r0, SOUND_CHANNEL_SF_STOP orrs r1, r0 - strb r1, [r4] + strb r1, [r4, o_SoundChannel_statusFlags] ply_fine_ok: adds r0, r4, 0 bl RealClearChain - ldr r4, [r4, 0x34] + ldr r4, [r4, o_SoundChannel_nextChannelPointer] cmp r4, 0 bne ply_fine_loop ply_fine_done: movs r0, 0 - strb r0, [r5] + strb r0, [r5, o_MusicPlayerTrack_flags] pop {r4,r5} pop {r0} bx r0 @@ -818,10 +818,10 @@ lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate thumb_func_start ld_r3_tp_adr_i ld_r3_tp_adr_i: - ldr r2, [r1, 0x40] + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] _081DD64A: adds r3, r2, 0x1 - str r3, [r1, 0x40] + str r3, [r1, o_MusicPlayerTrack_cmdPtr] ldrb r3, [r2] b chk_adr_r2 thumb_func_end ld_r3_tp_adr_i @@ -952,13 +952,13 @@ ply_voice: lsls r2, 2 ldr r3, [r0, o_MusicPlayerInfo_tone] adds r2, r3 - ldr r3, [r2] + ldr r3, [r2, o_ToneData_type] bl chk_adr_r2 str r3, [r1, o_MusicPlayerTrack_ToneData_type] - ldr r3, [r2, 0x4] + ldr r3, [r2, o_ToneData_wav] bl chk_adr_r2 str r3, [r1, o_MusicPlayerTrack_ToneData_wav] - ldr r3, [r2, 0x8] + ldr r3, [r2, o_ToneData_attack] bl chk_adr_r2 str r3, [r1, o_MusicPlayerTrack_ToneData_attack] bx r12 @@ -970,7 +970,7 @@ ply_vol: bl ld_r3_tp_adr_i strb r3, [r1, o_MusicPlayerTrack_vol] ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0x3 + movs r2, MPT_FLG_VOLCHG orrs r3, r2 strb r3, [r1, o_MusicPlayerTrack_flags] bx r12 @@ -980,10 +980,10 @@ ply_vol: ply_pan: mov r12, lr bl ld_r3_tp_adr_i - subs r3, 0x40 + subs r3, C_V strb r3, [r1, o_MusicPlayerTrack_pan] ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0x3 + movs r2, MPT_FLG_VOLCHG orrs r3, r2 strb r3, [r1, o_MusicPlayerTrack_flags] bx r12 @@ -993,10 +993,10 @@ ply_pan: ply_bend: mov r12, lr bl ld_r3_tp_adr_i - subs r3, 0x40 + subs r3, C_V strb r3, [r1, o_MusicPlayerTrack_bend] ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0xC + movs r2, MPT_FLG_PITCHG orrs r3, r2 strb r3, [r1, o_MusicPlayerTrack_flags] bx r12 @@ -1008,7 +1008,7 @@ ply_bendr: bl ld_r3_tp_adr_i strb r3, [r1, o_MusicPlayerTrack_bendRange] ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0xC + movs r2, MPT_FLG_PITCHG orrs r3, r2 strb r3, [r1, o_MusicPlayerTrack_flags] bx r12 @@ -1031,7 +1031,7 @@ ply_modt: beq _081DD7AA strb r3, [r1, o_MusicPlayerTrack_modT] ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0xF + movs r2, MPT_FLG_VOLCHG | MPT_FLG_PITCHG orrs r3, r2 strb r3, [r1, o_MusicPlayerTrack_flags] _081DD7AA: @@ -1042,10 +1042,10 @@ _081DD7AA: ply_tune: mov r12, lr bl ld_r3_tp_adr_i - subs r3, 0x40 + subs r3, C_V strb r3, [r1, o_MusicPlayerTrack_tune] ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0xC + movs r2, MPT_FLG_PITCHG orrs r3, r2 strb r3, [r1, o_MusicPlayerTrack_flags] bx r12 @@ -1174,8 +1174,8 @@ _081DD874: movs r3, 0x1 movs r4, 0 _081DD87C: - ldrb r0, [r5] - movs r1, 0x80 + ldrb r0, [r5, o_MusicPlayerTrack_flags] + movs r1, MPT_FLG_EXIST tst r1, r0 bne _081DD886 b _081DD998 @@ -1187,36 +1187,36 @@ _081DD886: cmp r4, 0 beq _081DD8BA _081DD892: - ldrb r1, [r4] - movs r0, 0xC7 + ldrb r1, [r4, o_SoundChannel_statusFlags] + movs r0, SOUND_CHANNEL_SF_ON tst r0, r1 beq _081DD8AE - ldrb r0, [r4, 0x10] + ldrb r0, [r4, o_SoundChannel_gateTime] cmp r0, 0 beq _081DD8B4 subs r0, 0x1 - strb r0, [r4, 0x10] + strb r0, [r4, o_SoundChannel_gateTime] bne _081DD8B4 - movs r0, 0x40 + movs r0, SOUND_CHANNEL_SF_STOP orrs r1, r0 - strb r1, [r4] + strb r1, [r4, o_SoundChannel_statusFlags] b _081DD8B4 _081DD8AE: adds r0, r4, 0 bl ClearChain _081DD8B4: - ldr r4, [r4, 0x34] + ldr r4, [r4, o_SoundChannel_nextChannelPointer] cmp r4, 0 bne _081DD892 _081DD8BA: ldrb r3, [r5, o_MusicPlayerTrack_flags] - movs r0, 0x40 + movs r0, MPT_FLG_START tst r0, r3 beq _081DD938 adds r0, r5, 0 bl Clear64byte - movs r0, 0x80 - strb r0, [r5] + movs r0, MPT_FLG_EXIST + strb r0, [r5, o_MusicPlayerTrack_flags] movs r0, 0x2 strb r0, [r5, o_MusicPlayerTrack_bendRange] movs r0, 0x40 @@ -1319,10 +1319,10 @@ _081DD972: ldrb r1, [r5, o_MusicPlayerTrack_modT] cmp r1, 0 bne _081DD98E - movs r1, 0xC + movs r1, MPT_FLG_PITCHG b _081DD990 _081DD98E: - movs r1, 0x3 + movs r1, MPT_FLG_VOLCHG _081DD990: orrs r0, r1 strb r0, [r5, o_MusicPlayerTrack_flags] @@ -1332,7 +1332,7 @@ _081DD994: _081DD998: subs r6, 0x1 ble _081DD9A4 - movs r0, 0x50 + movs r0, MusicPlayerTrack_size adds r5, r0 lsls r3, 1 b _081DD87C @@ -1349,10 +1349,10 @@ _081DD9A4: _081DD9B6: str r4, [r7, o_MusicPlayerInfo_status] ldrh r0, [r7, o_MusicPlayerInfo_tempoC] - subs r0, 0x96 + subs r0, 150 _081DD9BC: strh r0, [r7, o_MusicPlayerInfo_tempoC] - cmp r0, 0x96 + cmp r0, 150 bcc _081DD9C4 b _081DD874 _081DD9C4: @@ -1363,7 +1363,7 @@ _081DD9C8: movs r1, 0x80 tst r1, r0 beq _081DDA62 - movs r1, 0xF + movs r1, MPT_FLG_VOLCHG | MPT_FLG_PITCHG tst r1, r0 beq _081DDA62 mov r9, r2 @@ -1374,8 +1374,8 @@ _081DD9C8: cmp r4, 0 beq _081DDA58 _081DD9E6: - ldrb r1, [r4, o_SoundChannel_status] - movs r0, 0xC7 + ldrb r1, [r4, o_SoundChannel_statusFlags] + movs r0, SOUND_CHANNEL_SF_ON tst r0, r1 bne _081DD9F6 adds r0, r4, 0 @@ -1383,26 +1383,26 @@ _081DD9E6: b _081DDA52 _081DD9F6: ldrb r0, [r4, o_SoundChannel_type] - movs r6, 0x7 + movs r6, TONEDATA_TYPE_CGB ands r6, r0 ldrb r3, [r5, o_MusicPlayerTrack_flags] - movs r0, 0x3 + movs r0, MPT_FLG_VOLCHG tst r0, r3 beq _081DDA14 bl ChnVolSetAsm cmp r6, 0 beq _081DDA14 - ldrb r0, [r4, o_CgbChannel_mo] + ldrb r0, [r4, o_CgbChannel_modify] movs r1, 0x1 orrs r0, r1 - strb r0, [r4, o_CgbChannel_mo] + strb r0, [r4, o_CgbChannel_modify] _081DDA14: ldrb r3, [r5, o_MusicPlayerTrack_flags] - movs r0, 0xC + movs r0, MPT_FLG_PITCHG tst r0, r3 beq _081DDA52 - ldrb r1, [r4, o_SoundChannel_ky] - movs r0, 0x8 + ldrb r1, [r4, o_SoundChannel_key] + movs r0, o_MusicPlayerTrack_keyM ldrsb r0, [r5, r0] adds r2, r1, r0 bpl _081DDA28 @@ -1416,20 +1416,20 @@ _081DDA28: ldrb r2, [r5, o_MusicPlayerTrack_pitM] adds r0, r6, 0 bl call_r3 - str r0, [r4, o_CgbChannel_fr] - ldrb r0, [r4, o_CgbChannel_mo] - movs r1, 0x2 + str r0, [r4, o_CgbChannel_frequency] + ldrb r0, [r4, o_CgbChannel_modify] + movs r1, CGB_CHANNEL_MO_PIT orrs r0, r1 - strb r0, [r4, o_CgbChannel_mo] + strb r0, [r4, o_CgbChannel_modify] b _081DDA52 _081DDA46: adds r1, r2, 0 ldrb r2, [r5, o_MusicPlayerTrack_pitM] ldr r0, [r4, o_SoundChannel_wav] bl MidiKeyToFreq - str r0, [r4, o_SoundChannel_freq] + str r0, [r4, o_SoundChannel_frequency] _081DDA52: - ldr r4, [r4, o_SoundChannel_np] + ldr r4, [r4, o_SoundChannel_nextChannelPointer] cmp r4, 0 bne _081DD9E6 _081DDA58: @@ -1441,7 +1441,7 @@ _081DDA58: _081DDA62: subs r2, 0x1 ble _081DDA6C - movs r0, 0x50 + movs r0, MusicPlayerTrack_size adds r5, r0 bgt _081DD9C8 _081DDA6C: @@ -1468,7 +1468,7 @@ TrackStop: push {r4-r6,lr} adds r5, r1, 0 ldrb r1, [r5, o_MusicPlayerTrack_flags] - movs r0, 0x80 + movs r0, MPT_FLG_EXIST tst r0, r1 beq TrackStop_Done ldr r4, [r5, o_MusicPlayerTrack_chan] @@ -1476,11 +1476,11 @@ TrackStop: beq TrackStop_3 movs r6, 0 TrackStop_Loop: - ldrb r0, [r4, o_SoundChannel_status] + ldrb r0, [r4, o_SoundChannel_statusFlags] cmp r0, 0 beq TrackStop_2 ldrb r0, [r4, o_SoundChannel_type] - movs r3, 0x7 + movs r3, TONEDATA_TYPE_CGB ands r0, r3 beq TrackStop_1 ldr r3, =SOUND_INFO_PTR @@ -1488,10 +1488,10 @@ TrackStop_Loop: ldr r3, [r3, o_SoundInfo_CgbOscOff] bl call_r3 TrackStop_1: - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, o_SoundChannel_statusFlags] TrackStop_2: str r6, [r4, o_SoundChannel_track] - ldr r4, [r4, o_SoundChannel_np] + ldr r4, [r4, o_SoundChannel_nextChannelPointer] cmp r4, 0 bne TrackStop_Loop TrackStop_3: @@ -1505,31 +1505,31 @@ TrackStop_Done: thumb_func_start ChnVolSetAsm ChnVolSetAsm: - ldrb r1, [r4, 0x12] - movs r0, 0x14 + ldrb r1, [r4, o_SoundChannel_velocity] + movs r0, o_SoundChannel_rhythmPan ldrsb r2, [r4, r0] movs r3, 0x80 adds r3, r2 muls r3, r1 - ldrb r0, [r5, 0x10] + ldrb r0, [r5, o_MusicPlayerTrack_volMR] muls r0, r3 asrs r0, 14 cmp r0, 0xFF bls _081DDAE8 movs r0, 0xFF _081DDAE8: - strb r0, [r4, 0x2] + strb r0, [r4, o_SoundChannel_rightVolume] movs r3, 0x7F subs r3, r2 muls r3, r1 - ldrb r0, [r5, 0x11] + ldrb r0, [r5, o_MusicPlayerTrack_volML] muls r0, r3 asrs r0, 14 cmp r0, 0xFF bls _081DDAFC movs r0, 0xFF _081DDAFC: - strb r0, [r4, 0x3] + strb r0, [r4, o_SoundChannel_leftVolume] bx lr thumb_func_end ChnVolSetAsm @@ -1599,32 +1599,32 @@ _081DDB68: mov r9, r1 mov r6, r9 ldrb r1, [r6] - movs r0, 0xC0 + movs r0, TONEDATA_TYPE_SPL | TONEDATA_TYPE_RHY tst r0, r1 beq _081DDB80 b _081DDCEA _081DDB80: - movs r0, 0x80 + movs r0, TONEDATA_TYPE_RHY tst r0, r2 beq _081DDB9C - ldrb r1, [r6, 0x3] + ldrb r1, [r6, o_ToneData_pan_sweep] movs r0, 0x80 tst r0, r1 beq _081DDB94 - subs r1, 0xC0 + subs r1, TONEDATA_P_S_PAN lsls r1, 1 str r1, [sp, 0x14] _081DDB94: - ldrb r3, [r6, 0x1] + ldrb r3, [r6, o_SoundChannel_type] b _081DDB9C _081DDB98: mov r9, r4 - ldrb r3, [r5, 0x5] + ldrb r3, [r5, o_MusicPlayerTrack_key] _081DDB9C: str r3, [sp, 0x8] ldr r6, [sp] - ldrb r1, [r6, 0x9] - ldrb r0, [r5, 0x1D] + ldrb r1, [r6, o_MusicPlayerInfo_priority] + ldrb r0, [r5, o_MusicPlayerTrack_priority] adds r0, r1 cmp r0, 0xFF bls _081DDBAC @@ -1632,13 +1632,13 @@ _081DDB9C: _081DDBAC: str r0, [sp, 0x10] mov r6, r9 - ldrb r0, [r6] - movs r6, 0x7 + ldrb r0, [r6, o_ToneData_type] + movs r6, TONEDATA_TYPE_CGB ands r6, r0 str r6, [sp, 0xC] beq _081DDBEC ldr r0, [sp, 0x4] - ldr r4, [r0, 0x1C] + ldr r4, [r0, o_SoundInfo_cgbChans] cmp r4, 0 bne _081DDBC4 b _081DDCEA @@ -1646,21 +1646,21 @@ _081DDBC4: subs r6, 0x1 lsls r0, r6, 6 adds r4, r0 - ldrb r1, [r4] - movs r0, 0xC7 + ldrb r1, [r4, o_CgbChannel_statusFlags] + movs r0, SOUND_CHANNEL_SF_ON tst r0, r1 beq _081DDC40 - movs r0, 0x40 + movs r0, SOUND_CHANNEL_SF_STOP tst r0, r1 bne _081DDC40 - ldrb r1, [r4, 0x13] + ldrb r1, [r4, o_CgbChannel_priority] ldr r0, [sp, 0x10] cmp r1, r0 bcc _081DDC40 beq _081DDBE4 b _081DDCEA _081DDBE4: - ldr r0, [r4, 0x2C] + ldr r0, [r4, o_CgbChannel_track] cmp r0, r5 bcs _081DDC40 b _081DDCEA @@ -1670,35 +1670,35 @@ _081DDBEC: movs r2, 0 mov r8, r2 ldr r4, [sp, 0x4] - ldrb r3, [r4, 0x6] - adds r4, 0x50 + ldrb r3, [r4, o_SoundInfo_maxChans] + adds r4, o_SoundInfo_chans _081DDBFA: - ldrb r1, [r4] - movs r0, 0xC7 + ldrb r1, [r4, o_SoundChannel_statusFlags] + movs r0, SOUND_CHANNEL_SF_ON tst r0, r1 beq _081DDC40 - movs r0, 0x40 + movs r0, SOUND_CHANNEL_SF_STOP tst r0, r1 beq _081DDC14 cmp r2, 0 bne _081DDC18 adds r2, 0x1 - ldrb r6, [r4, 0x13] - ldr r7, [r4, 0x2C] + ldrb r6, [r4, o_SoundChannel_priority] + ldr r7, [r4, o_SoundChannel_track] b _081DDC32 _081DDC14: cmp r2, 0 bne _081DDC34 _081DDC18: - ldrb r0, [r4, 0x13] + ldrb r0, [r4, o_SoundChannel_priority] cmp r0, r6 bcs _081DDC24 adds r6, r0, 0 - ldr r7, [r4, 0x2C] + ldr r7, [r4, o_SoundChannel_track] b _081DDC32 _081DDC24: bhi _081DDC34 - ldr r0, [r4, 0x2C] + ldr r0, [r4, o_SoundChannel_track] cmp r0, r7 bls _081DDC30 adds r7, r0, 0 @@ -1708,7 +1708,7 @@ _081DDC30: _081DDC32: mov r8, r4 _081DDC34: - adds r4, 0x40 + adds r4, SoundChannel_size subs r3, 0x1 bgt _081DDBFA mov r4, r8 @@ -1718,17 +1718,17 @@ _081DDC40: adds r0, r4, 0 bl ClearChain movs r1, 0 - str r1, [r4, 0x30] - ldr r3, [r5, 0x20] - str r3, [r4, 0x34] + str r1, [r4, o_SoundChannel_prevChannelPointer] + ldr r3, [r5, o_MusicPlayerTrack_chan] + str r3, [r4, o_SoundChannel_nextChannelPointer] cmp r3, 0 beq _081DDC54 - str r4, [r3, 0x30] + str r4, [r3, o_SoundChannel_prevChannelPointer] _081DDC54: - str r4, [r5, 0x20] - str r5, [r4, 0x2C] - ldrb r0, [r5, 0x1B] - strb r0, [r5, 0x1C] + str r4, [r5, o_MusicPlayerTrack_chan] + str r5, [r4, o_SoundChannel_track] + ldrb r0, [r5, o_MusicPlayerTrack_lfoDelay] + strb r0, [r5, o_MusicPlayerTrack_lfoDelayC] cmp r0, r1 beq _081DDC66 adds r1, r5, 0 @@ -1737,26 +1737,26 @@ _081DDC66: ldr r0, [sp] adds r1, r5, 0 bl TrkVolPitSet - ldr r0, [r5, 0x4] - str r0, [r4, 0x10] + ldr r0, [r5, o_MusicPlayerTrack_gateTime] + str r0, [r4, o_SoundChannel_gateTime] ldr r0, [sp, 0x10] - strb r0, [r4, 0x13] + strb r0, [r4, o_SoundChannel_priority] ldr r0, [sp, 0x8] - strb r0, [r4, 0x8] + strb r0, [r4, o_SoundChannel_key] ldr r0, [sp, 0x14] - strb r0, [r4, 0x14] + strb r0, [r4, o_SoundChannel_rhythmPan] mov r6, r9 - ldrb r0, [r6] - strb r0, [r4, 0x1] - ldr r7, [r6, 0x4] - str r7, [r4, 0x24] - ldr r0, [r6, 0x8] - str r0, [r4, 0x4] - ldrh r0, [r5, 0x1E] - strh r0, [r4, 0xC] + ldrb r0, [r6, o_ToneData_type] + strb r0, [r4, o_SoundChannel_type] + ldr r7, [r6, o_ToneData_wav] + str r7, [r4, o_SoundChannel_wav] + ldr r0, [r6, o_ToneData_attack] + str r0, [r4, o_SoundChannel_attack] + ldrh r0, [r5, o_MusicPlayerTrack_pseudoEchoVolume] + strh r0, [r4, o_SoundChannel_pseudoEchoVolume] bl ChnVolSetAsm - ldrb r1, [r4, 0x8] - movs r0, 0x8 + ldrb r1, [r4, o_SoundChannel_key] + movs r0, o_MusicPlayerTrack_keyM ldrsb r0, [r5, r0] adds r3, r1, r0 bpl _081DDCA0 @@ -1766,9 +1766,9 @@ _081DDCA0: cmp r6, 0 beq _081DDCCE mov r6, r9 - ldrb r0, [r6, 0x2] - strb r0, [r4, 0x1E] - ldrb r1, [r6, 0x3] + ldrb r0, [r6, o_ToneData_length] + strb r0, [r4, o_CgbChannel_length] + ldrb r1, [r6, o_ToneData_pan_sweep] movs r0, 0x80 tst r0, r1 bne _081DDCBA @@ -1778,29 +1778,29 @@ _081DDCA0: _081DDCBA: movs r1, 0x8 _081DDCBC: - strb r1, [r4, 0x1F] - ldrb r2, [r5, 0x9] + strb r1, [r4, o_CgbChannel_sweep] + ldrb r2, [r5, o_MusicPlayerTrack_pitM] adds r1, r3, 0 ldr r0, [sp, 0xC] ldr r3, [sp, 0x4] - ldr r3, [r3, 0x30] + ldr r3, [r3, o_SoundInfo_MidiKeyToCgbFreq] bl call_r3 b _081DDCDC _081DDCCE: ldr r0, [r5, o_MusicPlayerTrack_unk_3C] - str r0, [r4, 0x18] - ldrb r2, [r5, 0x9] + str r0, [r4, o_SoundChannel_count] + ldrb r2, [r5, o_MusicPlayerTrack_pitM] adds r1, r3, 0 adds r0, r7, 0 bl MidiKeyToFreq _081DDCDC: - str r0, [r4, 0x20] - movs r0, 0x80 - strb r0, [r4] - ldrb r1, [r5] + str r0, [r4, o_SoundChannel_frequency] + movs r0, SOUND_CHANNEL_SF_START + strb r0, [r4, o_SoundChannel_statusFlags] + ldrb r1, [r5, o_MusicPlayerTrack_flags] movs r0, 0xF0 ands r0, r1 - strb r0, [r5] + strb r0, [r5, o_MusicPlayerTrack_flags] _081DDCEA: add sp, 0x18 pop {r0-r7} @@ -1830,23 +1830,23 @@ _081DDD18: ldr r1, [r1, o_MusicPlayerTrack_chan] cmp r1, 0 beq _081DDD40 - movs r4, 0x83 - movs r5, 0x40 + movs r4, SOUND_CHANNEL_SF_START | SOUND_CHANNEL_SF_ENV + movs r5, SOUND_CHANNEL_SF_STOP _081DDD22: - ldrb r2, [r1, o_SoundChannel_status] + ldrb r2, [r1, o_SoundChannel_statusFlags] tst r2, r4 beq _081DDD3A tst r2, r5 bne _081DDD3A - ldrb r0, [r1, o_SoundChannel_mk] + ldrb r0, [r1, o_SoundChannel_midiKey] cmp r0, r3 bne _081DDD3A - movs r0, 0x40 + movs r0, SOUND_CHANNEL_SF_STOP orrs r2, r0 - strb r2, [r1, o_SoundChannel_status] + strb r2, [r1, o_SoundChannel_statusFlags] b _081DDD40 _081DDD3A: - ldr r1, [r1, o_SoundChannel_np] + ldr r1, [r1, o_SoundChannel_nextChannelPointer] cmp r1, 0 bne _081DDD22 _081DDD40: @@ -1862,10 +1862,10 @@ clear_modM: ldrb r2, [r1, o_MusicPlayerTrack_modT] cmp r2, 0 bne _081DDD54 - movs r2, 0xC + movs r2, MPT_FLG_PITCHG b _081DDD56 _081DDD54: - movs r2, 0x3 + movs r2, MPT_FLG_VOLCHG _081DDD56: ldrb r3, [r1, o_MusicPlayerTrack_flags] orrs r3, r2 From f177c736fc722a2168a105b595888a0e6a6d5c02 Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Fri, 11 Dec 2020 16:06:18 +0100 Subject: [PATCH 054/116] more CgbSound decipher work --- include/gba/m4a_internal.h | 4 ++ src/m4a.c | 109 +++++++++++++++++-------------------- 2 files changed, 53 insertions(+), 60 deletions(-) diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index e09169ab8..6ec9e3854 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -75,11 +75,15 @@ struct ToneData #define SOUND_CHANNEL_SF_ENV_ATTACK 0x03 #define SOUND_CHANNEL_SF_ENV_DECAY 0x02 #define SOUND_CHANNEL_SF_ENV_SUSTAIN 0x01 +#define SOUND_CHANNEL_SF_ENV_RELEASE 0x00 #define SOUND_CHANNEL_SF_ON (SOUND_CHANNEL_SF_START | SOUND_CHANNEL_SF_STOP | SOUND_CHANNEL_SF_IEC | SOUND_CHANNEL_SF_ENV) #define CGB_CHANNEL_MO_PIT 0x02 #define CGB_CHANNEL_MO_VOL 0x01 +#define CGB_NRx2_ENV_DIR_DEC 0x00 +#define CGB_NRx2_ENV_DIR_INC 0x08 + struct CgbChannel { u8 statusFlags; diff --git a/src/m4a.c b/src/m4a.c index 3d564a5a1..99feeadd7 100644 --- a/src/m4a.c +++ b/src/m4a.c @@ -911,7 +911,7 @@ void CgbSound(void) { s32 ch; struct CgbChannel *channels; - s32 evAdd; + s32 envelopeStepTimeAndDir; s32 prevC15; struct SoundInfo *soundInfo = SOUND_INFO_PTR; vu8 *nrx0ptr; @@ -933,6 +933,7 @@ void CgbSound(void) if (!(channels->statusFlags & SOUND_CHANNEL_SF_ON)) continue; + /* 1. determine hardware channel registers */ switch (ch) { case 1: @@ -966,8 +967,9 @@ void CgbSound(void) } prevC15 = soundInfo->c15; - evAdd = *nrx2ptr; + envelopeStepTimeAndDir = *nrx2ptr; + /* 2. calculate envelope volume */ if (channels->statusFlags & SOUND_CHANNEL_SF_START) { if (!(channels->statusFlags & SOUND_CHANNEL_SF_STOP)) @@ -982,7 +984,7 @@ void CgbSound(void) // fallthrough case 2: *nrx1ptr = ((u32)channels->wavePointer << 6) + channels->length; - goto loc_82E0E30; + goto init_env_step_time_dir; case 3: if (channels->wavePointer != channels->currentPointer) { @@ -1003,8 +1005,8 @@ void CgbSound(void) default: *nrx1ptr = channels->length; *nrx3ptr = (u32)channels->wavePointer << 3; - loc_82E0E30: - evAdd = channels->attack + 8; + init_env_step_time_dir: + envelopeStepTimeAndDir = channels->attack + CGB_NRx2_ENV_DIR_INC; if (channels->length) channels->n4 = 0x40; else @@ -1015,16 +1017,17 @@ void CgbSound(void) if ((s8)(channels->attack & mask)) { channels->envelopeVolume = 0; - goto EC_MINUS; + goto envelope_step_complete; } else { - goto loc_82E0F96; + // skip attack phase if attack is instantaneous (=0) + goto envelope_decay_start; } } else { - goto loc_82E0E82; + goto oscillator_off; } } else if (channels->statusFlags & SOUND_CHANNEL_SF_IEC) @@ -1032,12 +1035,12 @@ void CgbSound(void) channels->pseudoEchoLength--; if ((s8)(channels->pseudoEchoLength & mask) <= 0) { - loc_82E0E82: + oscillator_off: CgbOscOff(ch); channels->statusFlags = 0; - goto LAST_LABEL; + goto channel_complete; } - goto loc_82E0FD6; + goto envelope_complete; } else if ((channels->statusFlags & SOUND_CHANNEL_SF_STOP) && (channels->statusFlags & SOUND_CHANNEL_SF_ENV)) { @@ -1047,46 +1050,41 @@ void CgbSound(void) { channels->modify |= CGB_CHANNEL_MO_VOL; if (ch != 3) - { - evAdd = channels->release; - } - goto EC_MINUS; + envelopeStepTimeAndDir = channels->release | CGB_NRx2_ENV_DIR_DEC; + goto envelope_step_complete; } else { - goto loc_82E0F02; + goto envelope_pseudoecho_start; } } else { - loc_82E0ED0: + envelope_step_repeat: if (channels->envelopeCounter == 0) { if (ch == 3) - { channels->modify |= CGB_CHANNEL_MO_VOL; - } + CgbModVol(channels); - if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == 0) + if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == SOUND_CHANNEL_SF_ENV_RELEASE) { channels->envelopeVolume--; if ((s8)(channels->envelopeVolume & mask) <= 0) { - loc_82E0F02: + envelope_pseudoecho_start: channels->envelopeVolume = ((channels->envelopeGoal * channels->pseudoEchoVolume) + 0xFF) >> 8; if (channels->envelopeVolume) { channels->statusFlags |= SOUND_CHANNEL_SF_IEC; channels->modify |= CGB_CHANNEL_MO_VOL; if (ch != 3) - { - evAdd = 8; - } - goto loc_82E0FD6; + envelopeStepTimeAndDir = 0 | CGB_NRx2_ENV_DIR_INC; + goto envelope_complete; } else { - goto loc_82E0E82; + goto oscillator_off; } } else @@ -1094,13 +1092,13 @@ void CgbSound(void) channels->envelopeCounter = channels->release; } } - else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == 1) + else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == SOUND_CHANNEL_SF_ENV_SUSTAIN) { - loc_82E0F3A: + envelope_sustain: channels->envelopeVolume = channels->sustainGoal; channels->envelopeCounter = 7; } - else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == 2) + else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == SOUND_CHANNEL_SF_ENV_DECAY) { int envelopeVolume, sustainGoal; @@ -1109,21 +1107,19 @@ void CgbSound(void) sustainGoal = (s8)(channels->sustainGoal); if (envelopeVolume <= sustainGoal) { - loc_82E0F5A: + envelope_sustain_start: if (channels->sustain == 0) { channels->statusFlags &= ~SOUND_CHANNEL_SF_ENV; - goto loc_82E0F02; + goto envelope_pseudoecho_start; } else { channels->statusFlags--; channels->modify |= CGB_CHANNEL_MO_VOL; if (ch != 3) - { - evAdd = 8; - } - goto loc_82E0F3A; + envelopeStepTimeAndDir = 0 | CGB_NRx2_ENV_DIR_INC; + goto envelope_sustain; } } else @@ -1136,7 +1132,7 @@ void CgbSound(void) channels->envelopeVolume++; if ((u8)(channels->envelopeVolume & mask) >= channels->envelopeGoal) { - loc_82E0F96: + envelope_decay_start: channels->statusFlags--; channels->envelopeCounter = channels->decay; if ((u8)(channels->envelopeCounter & mask)) @@ -1144,13 +1140,11 @@ void CgbSound(void) channels->modify |= CGB_CHANNEL_MO_VOL; channels->envelopeVolume = channels->envelopeGoal; if (ch != 3) - { - evAdd = channels->decay; - } + envelopeStepTimeAndDir = channels->decay | CGB_NRx2_ENV_DIR_DEC; } else { - goto loc_82E0F5A; + goto envelope_sustain_start; } } else @@ -1161,43 +1155,40 @@ void CgbSound(void) } } - EC_MINUS: + envelope_step_complete: + // every 15 frames, envelope calculation has to be done twice + // to keep up with the hardware envelope rate (1/64 s) channels->envelopeCounter--; if (prevC15 == 0) { prevC15--; - goto loc_82E0ED0; + goto envelope_step_repeat; } - loc_82E0FD6: + envelope_complete: + /* 3. apply pitch to HW registers */ if (channels->modify & CGB_CHANNEL_MO_PIT) { if (ch < 4 && (channels->type & TONEDATA_TYPE_FIX)) { - int biasH = REG_SOUNDBIAS_H; + int dac_pwm_rate = REG_SOUNDBIAS_H; - if (biasH < 64) - { + if (dac_pwm_rate < 0x40) // if PWM rate = 32768 Hz channels->frequency = (channels->frequency + 2) & 0x7fc; - } - else if (biasH < 128) - { + else if (dac_pwm_rate < 0x80) // if PWM rate = 65536 Hz channels->frequency = (channels->frequency + 1) & 0x7fe; - } } + if (ch != 4) - { *nrx3ptr = channels->frequency; - } else - { *nrx3ptr = (*nrx3ptr & 0x08) | channels->frequency; - } channels->n4 = (channels->n4 & 0xC0) + (*((u8*)(&channels->frequency) + 1)); *nrx4ptr = (s8)(channels->n4 & mask); } - if (channels->modify & 1) + /* 4. apply envelope & volume to HW registers */ + if (channels->modify & CGB_CHANNEL_MO_VOL ) { REG_NR51 = (REG_NR51 & ~channels->panMask) | channels->pan; if (ch == 3) @@ -1212,17 +1203,15 @@ void CgbSound(void) } else { - evAdd &= 0xf; - *nrx2ptr = (channels->envelopeVolume << 4) + evAdd; + envelopeStepTimeAndDir &= 0xf; + *nrx2ptr = (channels->envelopeVolume << 4) + envelopeStepTimeAndDir; *nrx4ptr = channels->n4 | 0x80; if (ch == 1 && !(*nrx0ptr & 0x08)) - { *nrx4ptr = channels->n4 | 0x80; - } } } - LAST_LABEL: + channel_complete: channels->modify = 0; } } From 7d8b8083e809810468a55a8a6e244f609f32772e Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 11 Dec 2020 16:41:53 -0300 Subject: [PATCH 055/116] Implemented Sand Spit --- data/battle_scripts_1.s | 9 +++++++++ include/battle_scripts.h | 1 + include/constants/battle_string_ids.h | 3 ++- src/battle_message.c | 2 ++ src/battle_util.c | 13 +++++++++++++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 69af61a12..c03384cfb 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6738,6 +6738,15 @@ BattleScript_SandstreamActivates:: call BattleScript_WeatherFormChanges end3 +BattleScript_SandSpitActivates:: + pause 0x20 + call BattleScript_AbilityPopUp + printstring STRINGID_ASANDSTORMKICKEDUP + waitstate + playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES, NULL + call BattleScript_WeatherFormChanges + return + BattleScript_ShedSkinActivates:: call BattleScript_AbilityPopUp printstring STRINGID_PKMNSXCUREDYPROBLEM diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 097e907c5..f97c992c9 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -353,5 +353,6 @@ extern const u8 BattleScript_AnnounceAirLockCloudNine[]; extern const u8 BattleScript_BattlerAbilityStatRaiseOnSwitchIn[]; extern const u8 BattleScript_CottonDownActivates[]; extern const u8 BattleScript_BallFetch[]; +extern const u8 BattleScript_SandSpitActivates[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 526a68c58..7f1737ac1 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -560,8 +560,9 @@ #define STRINGID_SCREENCLEANERENTERS 556 #define STRINGID_FETCHEDPOKEBALL 557 #define STRINGID_BATTLERABILITYRAISEDSTAT 558 +#define STRINGID_ASANDSTORMKICKEDUP 559 -#define BATTLESTRINGS_COUNT 559 +#define BATTLESTRINGS_COUNT 560 //// multichoice message IDs // switch in ability message diff --git a/src/battle_message.c b/src/battle_message.c index 9ca2b7cce..2fec453b0 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -687,9 +687,11 @@ static const u8 sText_ComatoseActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} i static const u8 sText_ScreenCleanerActivates[] = _("All screens on the field were\ncleansed!"); static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} found\na {B_LAST_ITEM}!"); static const u8 sText_BattlerAbilityRaisedStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its {B_BUFF1}!"); +static const u8 sText_ASandstormKickedUp[] = _("A sandstorm kicked up!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_ASANDSTORMKICKEDUP - 12] = sText_ASandstormKickedUp, [STRINGID_BATTLERABILITYRAISEDSTAT - 12] = sText_BattlerAbilityRaisedStat, [STRINGID_FETCHEDPOKEBALL - 12] = sText_FetchedPokeBall, [STRINGID_STATWASNOTLOWERED - 12] = sText_StatWasNotLowered, diff --git a/src/battle_util.c b/src/battle_util.c index c1270453f..73304c8fe 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4650,6 +4650,19 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect++; } break; + case ABILITY_SAND_SPIT: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && TARGET_TURN_DAMAGED + && !(WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SANDSTORM_ANY) + && TryChangeBattleWeather(battler, ENUM_WEATHER_SANDSTORM, TRUE)) + { + gBattleScripting.battler = gActiveBattler = battler; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SandSpitActivates; + effect++; + } + break; } break; case ABILITYEFFECT_MOVE_END_ATTACKER: // Same as above, but for attacker From 2b0702ec04a5c0e3b3a036ef7ee587b36c1763d3 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 11 Dec 2020 19:00:30 -0300 Subject: [PATCH 056/116] Implemented Perish Body Inspired by Raguzero's implementation. --- data/battle_scripts_1.s | 7 +++++++ include/battle_scripts.h | 1 + include/constants/battle_string_ids.h | 3 ++- src/battle_message.c | 2 ++ src/battle_util.c | 22 ++++++++++++++++++++++ 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c03384cfb..5701d223e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -5733,6 +5733,13 @@ BattleScript_PerishSongTakesLife:: tryfaintmon BS_ATTACKER, FALSE, NULL end2 +BattleScript_PerishBodyActivates:: + call BattleScript_AbilityPopUp + printstring STRINGID_PKMNSWILLPERISHIN3TURNS + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + return + BattleScript_PerishSongCountGoesDown:: printstring STRINGID_PKMNPERISHCOUNTFELL waitmessage 0x40 diff --git a/include/battle_scripts.h b/include/battle_scripts.h index f97c992c9..2d4fb2ed2 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -354,5 +354,6 @@ extern const u8 BattleScript_BattlerAbilityStatRaiseOnSwitchIn[]; extern const u8 BattleScript_CottonDownActivates[]; extern const u8 BattleScript_BallFetch[]; extern const u8 BattleScript_SandSpitActivates[]; +extern const u8 BattleScript_PerishBodyActivates[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 7f1737ac1..297233eb0 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -561,8 +561,9 @@ #define STRINGID_FETCHEDPOKEBALL 557 #define STRINGID_BATTLERABILITYRAISEDSTAT 558 #define STRINGID_ASANDSTORMKICKEDUP 559 +#define STRINGID_PKMNSWILLPERISHIN3TURNS 560 -#define BATTLESTRINGS_COUNT 560 +#define BATTLESTRINGS_COUNT 561 //// multichoice message IDs // switch in ability message diff --git a/src/battle_message.c b/src/battle_message.c index 2fec453b0..ea574f0e9 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -688,9 +688,11 @@ static const u8 sText_ScreenCleanerActivates[] = _("All screens on the field wer static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} found\na {B_LAST_ITEM}!"); static const u8 sText_BattlerAbilityRaisedStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its {B_BUFF1}!"); static const u8 sText_ASandstormKickedUp[] = _("A sandstorm kicked up!"); +static const u8 sText_PkmnsWillPerishIn3Turns[] = _("Both Pokémon will perish\nin three turns!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_PKMNSWILLPERISHIN3TURNS - 12] = sText_PkmnsWillPerishIn3Turns, [STRINGID_ASANDSTORMKICKEDUP - 12] = sText_ASandstormKickedUp, [STRINGID_BATTLERABILITYRAISEDSTAT - 12] = sText_BattlerAbilityRaisedStat, [STRINGID_FETCHEDPOKEBALL - 12] = sText_FetchedPokeBall, diff --git a/src/battle_util.c b/src/battle_util.c index 73304c8fe..65f55001b 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4663,6 +4663,28 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect++; } break; + case ABILITY_PERISH_BODY: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && TARGET_TURN_DAMAGED + && IsBattlerAlive(battler) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && !(gStatuses3[gBattlerAttacker] & STATUS3_PERISH_SONG)) + { + if (!(gStatuses3[battler] & STATUS3_PERISH_SONG)) + { + gStatuses3[battler] |= STATUS3_PERISH_SONG; + gDisableStructs[battler].perishSongTimer = 3; + gDisableStructs[battler].perishSongTimerStartValue = 3; + } + gStatuses3[gBattlerAttacker] |= STATUS3_PERISH_SONG; + gDisableStructs[gBattlerAttacker].perishSongTimer = 3; + gDisableStructs[gBattlerAttacker].perishSongTimerStartValue = 3; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_PerishBodyActivates; + effect++; + } + break; } break; case ABILITYEFFECT_MOVE_END_ATTACKER: // Same as above, but for attacker From c930a63c84d5c66deda4299765af53da99244a14 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 11 Dec 2020 19:46:33 -0300 Subject: [PATCH 057/116] Implemented Punk Rock --- include/constants/pokemon.h | 1 + src/battle_util.c | 8 ++++++++ src/data/battle_moves.h | 26 +++++++++++++------------- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 334122385..0edb1608e 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -264,6 +264,7 @@ #define FLAG_DANCE (1 << 21) #define FLAG_DMG_IN_AIR (1 << 22) // X2 dmg on air, always hits target on air #define FLAG_HIT_IN_AIR (1 << 23) // dmg is normal, always hits target on air +#define FLAG_PUNK_ROCK_AFFECTED (1 << 24) // To do: Add it to Eerie Spell's move data. // Split defines. #define SPLIT_PHYSICAL 0x0 diff --git a/src/battle_util.c b/src/battle_util.c index 65f55001b..87ce6bce7 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6777,6 +6777,10 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe if (moveType == TYPE_NORMAL && gBattleStruct->ateBoost[battlerAtk]) MulModifier(&modifier, UQ_4_12(1.2)); break; + case ABILITY_PUNK_ROCK: + if (gBattleMoves[move].flags & FLAG_PUNK_ROCK_AFFECTED) + MulModifier(&modifier, UQ_4_12(1.3)); + break; } // field abilities @@ -7222,6 +7226,10 @@ static u32 CalcDefenseStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, if (gBattleMons[battlerDef].species == SPECIES_CHERRIM && WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && !usesDefStat) MulModifier(&modifier, UQ_4_12(1.5)); break; + case ABILITY_PUNK_ROCK: + if (gBattleMoves[move].flags & FLAG_PUNK_ROCK_AFFECTED) + MulModifier(&modifier, UQ_4_12(1.3)); + break; } // ally's abilities diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 0b0c0b553..046d11035 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -2720,7 +2720,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -3993,7 +3993,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -4764,7 +4764,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -6354,7 +6354,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -7715,7 +7715,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -7729,7 +7729,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -8479,7 +8479,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -8593,7 +8593,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -8876,7 +8876,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -9050,7 +9050,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -9637,7 +9637,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, .argument = STATUS1_BURN, }, @@ -10016,7 +10016,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -10936,7 +10936,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, .split = SPLIT_SPECIAL, }, From 0ac026e6ca0075ecbcfdfe855998c3c4371e2ac9 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 11 Dec 2020 20:21:40 -0300 Subject: [PATCH 058/116] Added the data of SwSh's Crown Tundra's moves And Dragon Energy's effect. Eerie Spell's is the only one missing out of this bunch. --- data/battle_scripts_1.s | 2 + include/constants/battle_move_effects.h | 1 + include/constants/moves.h | 11 ++- src/battle_util.c | 3 + src/data/battle_moves.h | 112 ++++++++++++++++++++++++ src/data/text/move_descriptions.h | 41 ++++++++- src/data/text/move_names.h | 8 ++ 7 files changed, 176 insertions(+), 2 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0ccaa7ef6..982507ac8 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -365,6 +365,7 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectFairyLock .4byte BattleScript_EffectAllySwitch .4byte BattleScript_EffectSleepHit + .4byte BattleScript_EffectDragonEnergy BattleScript_EffectSleepHit: setmoveeffect MOVE_EFFECT_SLEEP @@ -2007,6 +2008,7 @@ BattleScript_EffectPlaceholder: printstring STRINGID_NOTDONEYET goto BattleScript_MoveEnd +BattleScript_EffectDragonEnergy: BattleScript_EffectStompingTantrum: BattleScript_EffectEvasionDownHit: BattleScript_EffectVitalThrow: diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index b018429de..5bd0c6a46 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -351,5 +351,6 @@ #define EFFECT_FAIRY_LOCK 345 #define EFFECT_ALLY_SWITCH 346 #define EFFECT_SLEEP_HIT 347 // Relic Song +#define EFFECT_DRAGON_ENERGY 348 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/constants/moves.h b/include/constants/moves.h index 711aa3023..1c38d54e9 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -772,8 +772,17 @@ #define MOVE_JUNGLE_HEALING 744 #define MOVE_WICKED_BLOW 745 #define MOVE_SURGING_STRIKES 746 +// Crown Tundra Moves +#define MOVE_THUNDER_CAGE 747 +#define MOVE_DRAGON_ENERGY 748 +#define MOVE_FREEZING_GLARE 749 +#define MOVE_FIERY_WRATH 750 +#define MOVE_THUNDEROUS_KICK 751 +#define MOVE_GLACIAL_LANCE 752 +#define MOVE_ASTRAL_BARRAGE 753 +#define MOVE_EERIE_SPELL 754 -#define MOVES_COUNT_GEN8 747 +#define MOVES_COUNT_GEN8 755 #define MOVES_COUNT MOVES_COUNT_GEN8 diff --git a/src/battle_util.c b/src/battle_util.c index b929b7499..14f7a6e93 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6581,6 +6581,9 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) if (gBattleMoves[gLastUsedMove].effect == EFFECT_FUSION_COMBO && move != gLastUsedMove) basePower *= 2; break; + case EFFECT_DRAGON_ENERGY: + basePower = 150 * gBattleMons[battlerAtk].hp / gBattleMons[battlerAtk].maxHP; + break; } if (basePower == 0) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 0b0c0b553..175c623f3 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11386,4 +11386,116 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_IRON_FIST_BOOST, .split = SPLIT_PHYSICAL, }, + + [MOVE_THUNDER_CAGE] = + { + .effect = EFFECT_TRAP, + .power = 80, + .type = TYPE_ELECTRIC, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_DRAGON_ENERGY] = + { + .effect = EFFECT_DRAGON_ENERGY, + .power = 150, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_FREEZING_GLARE] = + { + .power = 90, + .effect = EFFECT_FREEZE_HIT, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 10, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_FIERY_WRATH] = + { + .effect = EFFECT_FLINCH_HIT, + .power = 90, + .type = TYPE_DARK, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_THUNDEROUS_KICK] = + { + .effect = EFFECT_DEFENSE_DOWN_HIT, + .power = 90, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_GLACIAL_LANCE] = + { + .effect = EFFECT_HIT, + .power = 130, + .type = TYPE_ICE, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_ASTRAL_BARRAGE] = + { + .effect = EFFECT_HIT, + .power = 120, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_EERIE_SPELL] = + { + .effect = EFFECT_HIT, // To do. It's a copy of Spite that inflicts damage and reduced the target's last move's PP by 3 instead of 4. + .power = 80, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, + .split = SPLIT_SPECIAL, + }, }; diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 96b04d342..2792f33ce 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2910,6 +2910,38 @@ static const u8 sSURGING_STRIKESDescription[] = _( "Mastering the Water style,\n" "strikes with 3 critical hits."); +static const u8 sTHUNDER_CAGEDescription[] = _( + "Traps the foe in a cage of\n" + "electricity for 2 to 5 turns."); + +static const u8 sDRAGON_ENERGYDescription[] = _( + "The higher the user's HP\n" + "the more damage caused."); + +static const u8 sFREEZING_GLAREDescription[] = _( + "Shoots psychic power from\n" + "the eyes. May freeze the foe."); + +static const u8 sFIERY_WRATHDescription[] = _( + "An attack fueled by your\n" + "wrath. May cause flinching."); + +static const u8 sTHUNDEROUS_KICKDescription[] = _( + "Uses a lightning-like kick\n" + "to hit. Lowers foe's DEFENSE."); + +static const u8 sGLACIAL_LANCEDescription[] = _( + "Strikes by hurling a blizzard-\n" + "cloaked icicle lance at a foe."); + +static const u8 sASTRAL_BARRAGEDescription[] = _( + "Strikes by sending a frightful\n" + "amount of ghosts at a foe."); + +static const u8 sEERIE_SPELLDescription[] = _( + "Eeriely inflicts damage and\n" + "cuts a foe's las move's PP."); + static const u8 sNotDoneYetDescription[] = _( "Not done yet."); @@ -3664,5 +3696,12 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_JUNGLE_HEALING - 1] = sJUNGLE_HEALINGDescription, [MOVE_WICKED_BLOW - 1] = sWICKED_BLOWDescription, [MOVE_SURGING_STRIKES - 1] = sSURGING_STRIKESDescription, - + [MOVE_THUNDER_CAGE - 1] = sTHUNDER_CAGEDescription, + [MOVE_DRAGON_ENERGY - 1] = sDRAGON_ENERGYDescription, + [MOVE_FREEZING_GLARE - 1] = sFREEZING_GLAREDescription, + [MOVE_FIERY_WRATH - 1] = sFIERY_WRATHDescription, + [MOVE_THUNDEROUS_KICK - 1] = sTHUNDEROUS_KICKDescription, + [MOVE_GLACIAL_LANCE - 1] = sGLACIAL_LANCEDescription, + [MOVE_ASTRAL_BARRAGE - 1] = sASTRAL_BARRAGEDescription, + [MOVE_EERIE_SPELL - 1] = sEERIE_SPELLDescription, }; diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 1eaf3137d..8df3a514d 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -748,4 +748,12 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_JUNGLE_HEALING] = _("Jungle Heal"), [MOVE_WICKED_BLOW] = _("Wicked Blow"), [MOVE_SURGING_STRIKES] = _("SurgeStrikes"), + [MOVE_THUNDER_CAGE] = _("Thunder Cage"), + [MOVE_DRAGON_ENERGY] = _("DragonEnergy"), + [MOVE_FREEZING_GLARE] = _("FreezngGlare"), + [MOVE_FIERY_WRATH] = _("Fiery Wrath"), + [MOVE_THUNDEROUS_KICK] = _("ThnderusKick"), + [MOVE_GLACIAL_LANCE] = _("GlacialLance"), + [MOVE_ASTRAL_BARRAGE] = _("AstrlBarrage"), + [MOVE_EERIE_SPELL] = _("Eerie Spell"), }; From c5e04cf2437623acafdcf3904a2839ef98bb3cc7 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 01:19:15 -0300 Subject: [PATCH 059/116] Removed the unnecessary Dragon Energy effect The move is an Eruption clone, whose effect was already done. Thanks to BuffelSaft for the heads up. I took the chance and fixed its target too. --- data/battle_scripts_1.s | 2 -- include/constants/battle_move_effects.h | 1 - src/battle_util.c | 3 --- src/data/battle_moves.h | 4 ++-- 4 files changed, 2 insertions(+), 8 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 982507ac8..0ccaa7ef6 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -365,7 +365,6 @@ gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectFairyLock .4byte BattleScript_EffectAllySwitch .4byte BattleScript_EffectSleepHit - .4byte BattleScript_EffectDragonEnergy BattleScript_EffectSleepHit: setmoveeffect MOVE_EFFECT_SLEEP @@ -2008,7 +2007,6 @@ BattleScript_EffectPlaceholder: printstring STRINGID_NOTDONEYET goto BattleScript_MoveEnd -BattleScript_EffectDragonEnergy: BattleScript_EffectStompingTantrum: BattleScript_EffectEvasionDownHit: BattleScript_EffectVitalThrow: diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 5bd0c6a46..b018429de 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -351,6 +351,5 @@ #define EFFECT_FAIRY_LOCK 345 #define EFFECT_ALLY_SWITCH 346 #define EFFECT_SLEEP_HIT 347 // Relic Song -#define EFFECT_DRAGON_ENERGY 348 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/src/battle_util.c b/src/battle_util.c index 14f7a6e93..b929b7499 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6581,9 +6581,6 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) if (gBattleMoves[gLastUsedMove].effect == EFFECT_FUSION_COMBO && move != gLastUsedMove) basePower *= 2; break; - case EFFECT_DRAGON_ENERGY: - basePower = 150 * gBattleMons[battlerAtk].hp / gBattleMons[battlerAtk].maxHP; - break; } if (basePower == 0) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 175c623f3..7031fdc22 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11403,13 +11403,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DRAGON_ENERGY] = { - .effect = EFFECT_DRAGON_ENERGY, + .effect = EFFECT_ERUPTION, .power = 150, .type = TYPE_DRAGON, .accuracy = 100, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, + .target = MOVE_TARGET_BOTH, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, From 91ccf9e34328d5d47f98172051a6460223249b40 Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Sat, 12 Dec 2020 13:07:56 +0100 Subject: [PATCH 060/116] fix typo --- include/gba/m4a_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h index 6ec9e3854..2d0e1bb1c 100644 --- a/include/gba/m4a_internal.h +++ b/include/gba/m4a_internal.h @@ -195,7 +195,7 @@ struct SoundInfo u8 freq; u8 mode; - u8 c15; // periodically counts from 14 downto 0 (15 states) + u8 c15; // periodically counts from 14 down to 0 (15 states) u8 pcmDmaPeriod; // number of V-blanks per PCM DMA u8 maxLines; u8 gap[3]; From eaff64e223d88e20134392a1058faa4edc74f200 Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Sat, 12 Dec 2020 13:19:08 +0100 Subject: [PATCH 061/116] remove trailing spaces --- src/m4a.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/m4a.c b/src/m4a.c index 99feeadd7..e079ba4f6 100644 --- a/src/m4a.c +++ b/src/m4a.c @@ -1188,7 +1188,7 @@ void CgbSound(void) } /* 4. apply envelope & volume to HW registers */ - if (channels->modify & CGB_CHANNEL_MO_VOL ) + if (channels->modify & CGB_CHANNEL_MO_VOL) { REG_NR51 = (REG_NR51 & ~channels->panMask) | channels->pan; if (ch == 3) From 31d483ef44bb39536b20f5b8677eca7c72a5d425 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 11:26:27 -0300 Subject: [PATCH 062/116] Some more battle_config.h tweaks --- include/constants/battle_config.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 55c62af98..4cf246418 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -111,7 +111,7 @@ #define B_MINIMIZE_DMG_ACC GEN_6 // In Gen6+, moves that causes double damage to minimized Pokémon will also skip accuracy checks. // Ability settings -#define B_ABILITY_WEATHER GEN_6 // In Gen5+, weather caused by abilities lasts the same amount of turns as induced from a move. Before, they lasted till the battle's end or weather change by a move. +#define B_ABILITY_WEATHER GEN_6 // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move. #define B_GALE_WINGS GEN_6 // In Gen7+ requires full HP to trigger. #define B_STANCE_CHANGE_FAIL GEN_7 // In Gen7+, Aegislash's form change does not happen, if the Pokémon cannot use a move, because of confusion, paralysis, etc. In gen6, the form change occurs despite not being able to move. #define B_GHOSTS_ESCAPE GEN_6 // In Gen6+, ghosts can escape even when blocked by abilities such as Shadow Tag. @@ -124,8 +124,9 @@ #define B_HP_BERRIES GEN_6 // In Gen4+, berries which restore hp activate immediately after hp drops to half. In gen3, the effect occurs at the end of the turn. #define B_BERRIES_INSTANT GEN_6 // In Gen4+, most berries activate on battle start/switch-in if applicable. In gen3, they only activate either at the move end or turn end. -// Flag settings. -// To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. Eg: Replace with FLAG_UNUSED_0x264 so you can use that flag for toggling the feature. +// Flag settings +// To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. +// Eg: Replace with FLAG_UNUSED_0x264 so you can use that flag to toggle the feature. #define B_FLAG_INVERSE_BATTLE 0 // If this flag is set, the battle's type effectiveness are inversed. For example, fire is super effective against water. #define B_FLAG_FORCE_DOUBLE_WILD 0 // If this flag is set, all land and surfing wild battles will be double battles. From e9c6c96b9d087103b88e84e891186336e3d9359a Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 11:54:41 -0300 Subject: [PATCH 063/116] Corrected Final Gambit's move data It didn't have its own working effect assigned, and it wasn't being affected by King's Rock even though it should. --- src/data/battle_moves.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 0b0c0b553..bce0c60e5 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -7986,7 +7986,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FINAL_GAMBIT] = { - .effect = EFFECT_HIT_SWITCH_TARGET, + .effect = EFFECT_FINAL_GAMBIT, .power = 1, .type = TYPE_FIGHTING, .accuracy = 100, @@ -7994,7 +7994,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, }, From 55bc2b4bb943d3c7d4e3c94609777df335db8cf2 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 12:09:26 -0300 Subject: [PATCH 064/116] Corrected small inconsistency in move flag names --- include/constants/pokemon.h | 4 +- src/battle_script_commands.c | 2 +- src/battle_util.c | 2 +- src/data/battle_moves.h | 340 +++++++++++++++++------------------ 4 files changed, 174 insertions(+), 174 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 4cf0bd4f0..bac914fec 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -241,10 +241,10 @@ // Battle move flags #define FLAG_MAKES_CONTACT (1 << 0) #define FLAG_PROTECT_AFFECTED (1 << 1) -#define FLAG_MAGICCOAT_AFFECTED (1 << 2) +#define FLAG_MAGIC_COAT_AFFECTED (1 << 2) #define FLAG_SNATCH_AFFECTED (1 << 3) #define FLAG_MIRROR_MOVE_AFFECTED (1 << 4) -#define FLAG_KINGSROCK_AFFECTED (1 << 5) +#define FLAG_KINGS_ROCK_AFFECTED (1 << 5) // Growth rates #define GROWTH_MEDIUM_FAST 0 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index d43ddd5a2..53d8be47c 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -953,7 +953,7 @@ static void Cmd_attackcanceler(void) gHitMarker |= HITMARKER_OBEYS; - if (gProtectStructs[gBattlerTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED) + if (gProtectStructs[gBattlerTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGIC_COAT_AFFECTED) { PressurePPLose(gBattlerAttacker, gBattlerTarget, MOVE_MAGIC_COAT); gProtectStructs[gBattlerTarget].bounceMove = 0; diff --git a/src/battle_util.c b/src/battle_util.c index 7025f0e3f..a30145ea4 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3818,7 +3818,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && TARGET_TURN_DAMAGED && (Random() % 100) < atkHoldEffectParam - && gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED + && gBattleMoves[gCurrentMove].flags & FLAG_KINGS_ROCK_AFFECTED && gBattleMons[gBattlerTarget].hp) { gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH; diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 008d7d784..f78fa2c8c 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -23,7 +23,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_KARATE_CHOP] = @@ -36,7 +36,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_DOUBLE_SLAP] = @@ -49,7 +49,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_COMET_PUNCH] = @@ -62,7 +62,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_MEGA_PUNCH] = @@ -75,7 +75,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_PAY_DAY] = @@ -88,7 +88,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_FIRE_PUNCH] = @@ -140,7 +140,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_VICE_GRIP] = @@ -153,7 +153,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_GUILLOTINE] = @@ -179,7 +179,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SWORDS_DANCE] = @@ -205,7 +205,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_GUST] = @@ -218,7 +218,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_WING_ATTACK] = @@ -231,7 +231,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_WHIRLWIND] = @@ -257,7 +257,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_BIND] = @@ -270,7 +270,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SLAM] = @@ -283,7 +283,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_VINE_WHIP] = @@ -296,7 +296,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_STOMP] = @@ -322,7 +322,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_MEGA_KICK] = @@ -335,7 +335,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_JUMP_KICK] = @@ -348,7 +348,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_ROLLING_KICK] = @@ -361,7 +361,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SAND_ATTACK] = @@ -374,7 +374,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_HEADBUTT] = @@ -400,7 +400,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_FURY_ATTACK] = @@ -413,7 +413,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_HORN_DRILL] = @@ -439,7 +439,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_BODY_SLAM] = @@ -465,7 +465,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_TAKE_DOWN] = @@ -478,7 +478,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_THRASH] = @@ -491,7 +491,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_DOUBLE_EDGE] = @@ -504,7 +504,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_TAIL_WHIP] = @@ -517,7 +517,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_POISON_STING] = @@ -556,7 +556,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_LEER] = @@ -569,7 +569,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_BITE] = @@ -595,7 +595,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_ROAR] = @@ -621,7 +621,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_SUPERSONIC] = @@ -634,7 +634,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_SONIC_BOOM] = @@ -647,7 +647,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_DISABLE] = @@ -725,7 +725,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_HYDRO_PUMP] = @@ -738,7 +738,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SURF] = @@ -751,7 +751,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_ICE_BEAM] = @@ -829,7 +829,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_PECK] = @@ -842,7 +842,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_DRILL_PECK] = @@ -855,7 +855,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SUBMISSION] = @@ -868,7 +868,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_LOW_KICK] = @@ -881,7 +881,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_COUNTER] = @@ -907,7 +907,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_STRENGTH] = @@ -920,7 +920,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_ABSORB] = @@ -959,7 +959,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_GROWTH] = @@ -985,7 +985,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SOLAR_BEAM] = @@ -998,7 +998,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_POISON_POWDER] = @@ -1011,7 +1011,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_STUN_SPORE] = @@ -1024,7 +1024,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_SLEEP_POWDER] = @@ -1037,7 +1037,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_PETAL_DANCE] = @@ -1050,7 +1050,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_STRING_SHOT] = @@ -1063,7 +1063,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_DRAGON_RAGE] = @@ -1076,7 +1076,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_FIRE_SPIN] = @@ -1089,7 +1089,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_THUNDER_SHOCK] = @@ -1128,7 +1128,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_THUNDER] = @@ -1154,7 +1154,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_EARTHQUAKE] = @@ -1167,7 +1167,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_FISSURE] = @@ -1193,7 +1193,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_TOXIC] = @@ -1206,7 +1206,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_CONFUSION] = @@ -1245,7 +1245,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_MEDITATE] = @@ -1284,7 +1284,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_RAGE] = @@ -1297,7 +1297,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_TELEPORT] = @@ -1323,7 +1323,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_MIMIC] = @@ -1349,7 +1349,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_DOUBLE_TEAM] = @@ -1414,7 +1414,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_CONFUSE_RAY] = @@ -1427,7 +1427,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_WITHDRAW] = @@ -1531,7 +1531,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_METRONOME] = @@ -1570,7 +1570,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_EGG_BOMB] = @@ -1583,7 +1583,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_LICK] = @@ -1661,7 +1661,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_CLAMP] = @@ -1674,7 +1674,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SWIFT] = @@ -1687,7 +1687,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SKULL_BASH] = @@ -1700,7 +1700,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SPIKE_CANNON] = @@ -1713,7 +1713,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_CONSTRICT] = @@ -1778,7 +1778,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_GLARE] = @@ -1791,7 +1791,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_DREAM_EATER] = @@ -1817,7 +1817,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_BARRAGE] = @@ -1830,7 +1830,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_LEECH_LIFE] = @@ -1856,7 +1856,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_SKY_ATTACK] = @@ -1869,7 +1869,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_TRANSFORM] = @@ -1921,7 +1921,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_FLASH] = @@ -1934,7 +1934,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_PSYWAVE] = @@ -1947,7 +1947,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SPLASH] = @@ -1986,7 +1986,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_EXPLOSION] = @@ -1999,7 +1999,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_FURY_SWIPES] = @@ -2012,7 +2012,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_BONEMERANG] = @@ -2025,7 +2025,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_REST] = @@ -2129,7 +2129,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SUBSTITUTE] = @@ -2155,7 +2155,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SKETCH] = @@ -2181,7 +2181,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_THIEF] = @@ -2207,7 +2207,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_MIND_READER] = @@ -2259,7 +2259,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_CURSE] = @@ -2285,7 +2285,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_CONVERSION_2] = @@ -2311,7 +2311,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_COTTON_SPORE] = @@ -2324,7 +2324,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_REVERSAL] = @@ -2337,7 +2337,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SPITE] = @@ -2389,7 +2389,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SCARY_FACE] = @@ -2402,7 +2402,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_FAINT_ATTACK] = @@ -2415,7 +2415,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SWEET_KISS] = @@ -2428,7 +2428,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_BELLY_DRUM] = @@ -2584,7 +2584,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_LOCK_ON] = @@ -2610,7 +2610,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SANDSTORM] = @@ -2662,7 +2662,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_ROLLOUT] = @@ -2675,7 +2675,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_FALSE_SWIPE] = @@ -2688,7 +2688,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SWAGGER] = @@ -2701,7 +2701,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_MILK_DRINK] = @@ -2740,7 +2740,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_STEEL_WING] = @@ -2753,7 +2753,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_MEAN_LOOK] = @@ -2766,7 +2766,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_ATTRACT] = @@ -2779,7 +2779,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_SLEEP_TALK] = @@ -2818,7 +2818,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_PRESENT] = @@ -2844,7 +2844,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SAFEGUARD] = @@ -2896,7 +2896,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_DYNAMIC_PUNCH] = @@ -2922,7 +2922,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_DRAGON_BREATH] = @@ -2935,7 +2935,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_BATON_PASS] = @@ -2987,7 +2987,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SWEET_SCENT] = @@ -3000,7 +3000,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_IRON_TAIL] = @@ -3039,7 +3039,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = -1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_MORNING_SUN] = @@ -3091,7 +3091,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_CROSS_CHOP] = @@ -3104,7 +3104,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_TWISTER] = @@ -3117,7 +3117,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 20, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_RAIN_DANCE] = @@ -3195,7 +3195,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 1, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_ANCIENT_POWER] = @@ -3260,7 +3260,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_BEAT_UP] = @@ -3273,7 +3273,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_FAKE_OUT] = @@ -3299,7 +3299,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_STOCKPILE] = @@ -3325,7 +3325,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SWALLOW] = @@ -3390,7 +3390,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_WILL_O_WISP] = @@ -3403,7 +3403,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_MEMENTO] = @@ -3637,7 +3637,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = -4, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_BRICK_BREAK] = @@ -3650,7 +3650,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_YAWN] = @@ -3663,7 +3663,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_KNOCK_OFF] = @@ -3689,7 +3689,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_ERUPTION] = @@ -3702,7 +3702,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SKILL_SWAP] = @@ -3793,7 +3793,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_ARM_THRUST] = @@ -3806,7 +3806,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_CAMOUFLAGE] = @@ -3871,7 +3871,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_TEETER_DANCE] = @@ -3923,7 +3923,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_NEEDLE_ARM] = @@ -4001,7 +4001,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_HYDRO_CANNON] = @@ -4014,7 +4014,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_METEOR_MASH] = @@ -4027,7 +4027,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_ASTONISH] = @@ -4053,7 +4053,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_AROMATHERAPY] = @@ -4079,7 +4079,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_AIR_CUTTER] = @@ -4092,7 +4092,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_OVERHEAT] = @@ -4105,7 +4105,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_ODOR_SLEUTH] = @@ -4144,7 +4144,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_METAL_SOUND] = @@ -4157,7 +4157,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_GRASS_WHISTLE] = @@ -4170,7 +4170,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_TICKLE] = @@ -4183,7 +4183,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_COSMIC_POWER] = @@ -4222,7 +4222,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SHADOW_PUNCH] = @@ -4235,7 +4235,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_EXTRASENSORY] = @@ -4261,7 +4261,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SAND_TOMB] = @@ -4274,7 +4274,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SHEER_COLD] = @@ -4300,7 +4300,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 30, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_BULLET_SEED] = @@ -4313,7 +4313,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_AERIAL_ACE] = @@ -4326,7 +4326,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_ICICLE_SPEAR] = @@ -4339,7 +4339,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_IRON_DEFENSE] = @@ -4365,7 +4365,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, }, [MOVE_HOWL] = @@ -4391,7 +4391,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_FRENZY_PLANT] = @@ -4404,7 +4404,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_BULK_UP] = @@ -4430,7 +4430,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_MUD_SHOT] = @@ -4443,7 +4443,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_POISON_TAIL] = @@ -4456,7 +4456,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_COVET] = @@ -4482,7 +4482,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_MAGICAL_LEAF] = @@ -4495,7 +4495,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_WATER_SPORT] = @@ -4534,7 +4534,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_DRAGON_DANCE] = @@ -4560,7 +4560,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_SHOCK_WAVE] = @@ -4573,7 +4573,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_WATER_PULSE] = @@ -4586,7 +4586,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, [MOVE_DOOM_DESIRE] = @@ -4612,6 +4612,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, }, }; From 8e187d1d5babe4d9669e40e1cbd8157b8605790b Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 19:39:35 -0300 Subject: [PATCH 065/116] Implemented Ice Scales --- src/battle_util.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/battle_util.c b/src/battle_util.c index 87ce6bce7..2fb5181c6 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -7087,6 +7087,10 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b RecordAbilityBattle(battlerDef, ABILITY_THICK_FAT); } break; + case ABILITY_ICE_SCALES: + if (IS_MOVE_SPECIAL(move)) + MulModifier(&modifier, UQ_4_12(0.5)); + break; } // ally's abilities From 305bea32df6c40fea32d72bec732207e1d46dee9 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 20:32:52 -0300 Subject: [PATCH 066/116] Added missing check to Flower Gift (offensive) --- src/battle_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index b929b7499..aeeefa734 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6960,7 +6960,7 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b } break; case ABILITY_FLOWER_GIFT: - if (gBattleMons[battlerAtk].species == SPECIES_CHERRIM && WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) + if (gBattleMons[battlerAtk].species == SPECIES_CHERRIM && WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_SUN_ANY) && IS_MOVE_PHYSICAL(move)) MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_HUSTLE: @@ -6996,7 +6996,7 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b switch (GetBattlerAbility(BATTLE_PARTNER(battlerAtk))) { case ABILITY_FLOWER_GIFT: - if (gBattleMons[BATTLE_PARTNER(battlerAtk)].species == SPECIES_CHERRIM) + if (gBattleMons[BATTLE_PARTNER(battlerAtk)].species == SPECIES_CHERRIM && IS_MOVE_PHYSICAL(move)) MulModifier(&modifier, UQ_4_12(1.5)); break; } From 1f10b94a110dfeac93cf27fa2e112504e096e5dd Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 20:09:50 -0300 Subject: [PATCH 067/116] Implemented Power Spot --- src/battle_util.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/battle_util.c b/src/battle_util.c index 2fb5181c6..2c4ce033d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -7102,6 +7102,9 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b if (gBattleMons[BATTLE_PARTNER(battlerAtk)].species == SPECIES_CHERRIM) MulModifier(&modifier, UQ_4_12(1.5)); break; + case ABILITY_POWER_SPOT: + MulModifier(&modifier, UQ_4_12(1.3)); + break; } } From dc34ad7e83cc5dee7a3d9cba7d0e0047eedcc826 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 12 Dec 2020 21:24:39 -0300 Subject: [PATCH 068/116] Tweaked abilitypopup usage on Cotton Down's BattleScript --- data/battle_scripts_1.s | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 5701d223e..78e8dec75 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6203,6 +6203,7 @@ BattleScript_IllusionOff:: return BattleScript_CottonDownActivates:: + setbyte sFIXED_ABILITY_POPUP, TRUE call BattleScript_AbilityPopUp copybyte gEffectBattler, gBattlerTarget savetarget @@ -6224,6 +6225,7 @@ BattleScript_CottonDownLoopIncrement: jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_CottonDownLoop BattleScript_CottonDownReturn: restoretarget + destroyabilitypopup return BattleScript_AnticipationActivates:: From abef3065d0c6f61607161d6a88a42f93824c6f77 Mon Sep 17 00:00:00 2001 From: Sierraffinity Date: Sat, 12 Dec 2020 20:29:20 -0800 Subject: [PATCH 069/116] =?UTF-8?q?Fix=20affine=20anim=20bug=20with=20Pok?= =?UTF-8?q?=C3=A9mon=20going=20in=20and=20out=20of=20balls=20without=20an?= =?UTF-8?q?=20intermediate=20screen=20transition?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pokemon_animation.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index bfcf77b5c..58c174263 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -1041,6 +1041,15 @@ static void sub_817F77C(struct Sprite *sprite) sprite->oam.matrixNum |= (sprite->hFlip << 3); sprite->oam.affineMode = ST_OAM_AFFINE_OFF; } +#ifdef BUGFIX + else + { + // FIX: Reset these back to normal after they were changed so Poké Ball catch/release + // animations without a screen transition in between don't break + sprite->affineAnimPaused = FALSE; + sprite->affineAnims = gUnknown_082FF694; + } +#endif // BUGFIX } static void pokemonanimfunc_01(struct Sprite *sprite) From 81d95b9325ed2526ce638744408f453a8169abb4 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 12 Dec 2020 23:28:01 -0500 Subject: [PATCH 070/116] Use BUGFIX for some inline fixes --- data/battle_ai_scripts.s | 12 ++++++-- .../MossdeepCity_SpaceCenter_1F/scripts.inc | 6 +++- include/config.h | 6 ++-- src/battle_ai_script_commands.c | 6 ++-- src/battle_dome.c | 14 ++++++++-- src/battle_factory_screen.c | 6 +++- src/battle_pyramid.c | 8 ++++-- src/battle_tower.c | 28 +++++++++++++++---- src/battle_util.c | 7 +++-- src/berry_blender.c | 10 ++++++- src/contest_ai.c | 10 +++++-- src/daycare.c | 12 ++++---- src/field_effect.c | 13 +++++++-- src/frontier_pass.c | 3 ++ src/frontier_util.c | 14 ++++++++-- src/match_call.c | 10 +++++-- src/metatile_behavior.c | 9 ++++-- src/pokemon.c | 5 +++- src/pokemon_storage_system.c | 5 ++-- src/region_map.c | 4 +++ src/roulette.c | 5 ++-- src/union_room.c | 10 ++++++- 22 files changed, 157 insertions(+), 46 deletions(-) diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s index 1c7bff51c..d1dd1caed 100644 --- a/data/battle_ai_scripts.s +++ b/data/battle_ai_scripts.s @@ -2324,14 +2324,18 @@ AI_CV_SemiInvulnerable: @ BUG: The scripts for checking type-resistance to weather for semi-invulnerable moves are swapped @ The result is that the AI is encouraged to stall while taking damage from weather -@ To fix, swap _CheckSandstormTypes/_CheckIceType in the below script AI_CV_SemiInvulnerable2: if_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_SemiInvulnerable_TryEncourage if_status2 AI_TARGET, STATUS2_CURSED, AI_CV_SemiInvulnerable_TryEncourage if_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_SemiInvulnerable_TryEncourage get_weather + .ifdef BUGFIX + if_equal AI_WEATHER_HAIL, AI_CV_SemiInvulnerable_CheckIceType + if_equal AI_WEATHER_SANDSTORM, AI_CV_SemiInvulnerable_CheckSandstormTypes + .else if_equal AI_WEATHER_HAIL, AI_CV_SemiInvulnerable_CheckSandstormTypes if_equal AI_WEATHER_SANDSTORM, AI_CV_SemiInvulnerable_CheckIceType + .endif goto AI_CV_SemiInvulnerable5 AI_CV_SemiInvulnerable_CheckSandstormTypes: @@ -2398,9 +2402,13 @@ AI_CV_Hail_ScoreDown1: AI_CV_Hail_End: end -@ BUG: Facade score is increased if the target is statused, but should be if the user is. Replace AI_TARGET with AI_USER +@ BUG: Facade score is increased if the target is statused, but should be if the user is AI_CV_Facade: + .ifdef BUGFIX + if_not_status AI_USER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End + .else if_not_status AI_TARGET, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End + .endif score +1 AI_CV_Facade_End: end diff --git a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc index 667f44114..eb081dbbb 100644 --- a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc +++ b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc @@ -247,7 +247,11 @@ MossdeepCity_SpaceCenter_1F_EventScript_Grunt2:: @ 822321F copyobjectxytoperm LOCALID_STAIR_GRUNT switch VAR_FACING case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsWest - case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast @ BUG: This was meant to be case DIR_EAST + #ifdef BUGFIX + case DIR_EAST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast + #else + case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast + #endif applymovement LOCALID_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairs waitmovement 0 setvar VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 2 diff --git a/include/config.h b/include/config.h index 4f97a12a3..34ce302e5 100644 --- a/include/config.h +++ b/include/config.h @@ -15,9 +15,6 @@ // printing system. Use NoCashGBAPrint() and NoCashGBAPrintf() like you // would normally use AGBPrint() and AGBPrintf(). -// NOTE: Don't try to enable assert right now as many pointers -// still exist in defines and WILL likely result in a broken ROM. - #define ENGLISH #ifdef ENGLISH @@ -34,4 +31,7 @@ #endif #endif +// Uncomment to fix some identified minor bugs +//#define BUGFIX + #endif // GUARD_CONFIG_H diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 2423cfe37..651f9da2a 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -1613,8 +1613,10 @@ static void Cmd_if_status_not_in_party(void) if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo) { - gAIScriptPtr += 10; // UB: Still bugged in Emerald. Uncomment the return statement to fix. - // return; + gAIScriptPtr += 10; + #ifdef BUGFIX + return; + #endif } } diff --git a/src/battle_dome.c b/src/battle_dome.c index ce2f3cde6..0d1bee8cf 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -863,7 +863,9 @@ static const struct WindowTemplate sInfoCardWindowTemplates[] = .paletteNum = 15, .baseBlock = 372, }, - // UB: No DUMMY_WIN_TEMPLATE at the array's end. + #ifdef UBFIX + DUMMY_WIN_TEMPLATE, + #endif }; static const struct ScanlineEffectParams sTourneyTreeScanlineEffectParams = @@ -2526,7 +2528,11 @@ static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tou { int i; u8 friendship = MAX_FRIENDSHIP; - u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Should be using (DOME_TRAINERS[tournamentTrainerId].trainerId) instead of (tournamentTrainerId). As a result, all Pokemon have ivs of 3. + #ifdef BUGFIX + u8 fixedIv = GetDomeTrainerMonIvs(DOME_TRAINERS[tournamentTrainerId].trainerId); + #else + u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Using the wrong ID. As a result, all Pokemon have ivs of 3. + #endif u8 level = SetFacilityPtrsGetLevel(); CreateMonWithEVSpreadNatureOTID(&gEnemyParty[monPartyId], gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].species, @@ -5964,6 +5970,10 @@ static void DecideRoundWinners(u8 roundId) else if (tournamentId2 != 0xFF) { // BUG: points1 and points2 are not cleared at the beginning of the loop resulting in not fair results. + #ifdef BUGFIX + points1 = 0; + points2 = 0; + #endif // Calculate points for both trainers. for (monId1 = 0; monId1 < FRONTIER_PARTY_SIZE; monId1++) diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index c10bbc5e4..ba1e39006 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -3905,7 +3905,11 @@ static void Swap_ShowSummaryMonSprite(void) personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); otId = GetMonData(mon, MON_DATA_OT_ID, NULL); - sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, personality, otId, TRUE, 88, 32, 15, 0xFFFF); // BUG: otId and personality should be switched. + #ifdef BUGFIX + sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF); + #else + sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, personality, otId, TRUE, 88, 32, 15, 0xFFFF); + #endif gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecX = 0; gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecY = 0; diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index 1b220f145..ac6d95338 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1757,7 +1757,9 @@ static bool8 SetPyramidObjectPositionsInAndNearSquare(u8 objType, u8 squareId) r7 &= 1; } - // free(floorLayoutOffsets); BUG: floorLayoutOffsets memory not freed + #ifdef BUGFIX + free(floorLayoutOffsets); + #endif return (numObjects / 2) > numPlacedObjects; } @@ -1809,7 +1811,9 @@ static bool8 SetPyramidObjectPositionsNearSquare(u8 objType, u8 squareId) if (r8 == 4) break; } - // free(floorLayoutOffsets); BUG: floorLayoutOffsets memory not freed + #ifdef BUGFIX + free(floorLayoutOffsets); + #endif return (numObjects / 2) > numPlacedObjects; } diff --git a/src/battle_tower.c b/src/battle_tower.c index 6fc0cd5be..d7123f3d2 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1336,10 +1336,15 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) { for (k = 0; k < PLAYER_NAME_LENGTH; k++) { - // BUG: Wrong variable used, 'j' instead of 'k'. + #ifdef BUGFIX + if (gSaveBlock2Ptr->frontier.towerRecords[i].name[k] != newRecord->name[k]) + break; + if (newRecord->name[k] == EOS) + #else if (gSaveBlock2Ptr->frontier.towerRecords[i].name[j] != newRecord->name[j]) break; if (newRecord->name[j] == EOS) + #endif { k = PLAYER_NAME_LENGTH; break; @@ -2956,7 +2961,12 @@ static void FillPartnerParty(u16 trainerId) sStevenMons[i].species, sStevenMons[i].level, sStevenMons[i].fixedIV, - TRUE, i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures. + TRUE, + #ifdef BUGFIX + j, + #else + i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures. + #endif OT_ID_PRESET, STEVEN_OTID); for (j = 0; j < PARTY_SIZE; j++) SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_HP_EV + j, &sStevenMons[i].evs[j]); @@ -3062,9 +3072,12 @@ bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct Em { dst->lvlMode = src->lvlMode; dst->winStreak = src->winStreak; - // BUG: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries. - // Fix by using ARRAY_COUNT(sRubyFacilityClassToEmerald) + // UB: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries. + #ifdef UBFIX + for (i = 0; i < ARRAY_COUNT(sRubyFacilityClassToEmerald); i++) + #else for (i = 0; i < FACILITY_CLASSES_COUNT; i++) + #endif { if (sRubyFacilityClassToEmerald[i][0] == src->facilityClass) break; @@ -3112,9 +3125,12 @@ bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, stru { dst->lvlMode = src->lvlMode; dst->winStreak = src->winStreak; - // BUG: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries. - // Fix by using ARRAY_COUNT(sRubyFacilityClassToEmerald) instead + // UB: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries. + #ifdef UBFIX + for (i = 0; i < ARRAY_COUNT(sRubyFacilityClassToEmerald); i++) + #else for (i = 0; i < FACILITY_CLASSES_COUNT; i++) + #endif { if (sRubyFacilityClassToEmerald[i][1] == src->facilityClass) break; diff --git a/src/battle_util.c b/src/battle_util.c index a30145ea4..e929de091 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -536,9 +536,12 @@ void HandleAction_ThrowPokeblock(void) gBattleStruct->safariPkblThrowCounter++; if (gBattleStruct->safariEscapeFactor > 1) { - // BUG: The safariEscapeFactor is unintetionally able to become 0 (but it can not become negative!). This causes the pokeblock throw glitch. - // To fix that change the < in the if statement below to <=. + // BUG: safariEscapeFactor can become 0 below. This causes the pokeblock throw glitch. + #ifdef BUGFIX + if (gBattleStruct->safariEscapeFactor <= sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]]) + #else if (gBattleStruct->safariEscapeFactor < sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]]) + #endif gBattleStruct->safariEscapeFactor = 1; else gBattleStruct->safariEscapeFactor -= sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]]; diff --git a/src/berry_blender.c b/src/berry_blender.c index 16ba42bd7..573affbd5 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1852,7 +1852,9 @@ static void Task_HandleOpponent1(u8 taskId) gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; // BUG: Overrwrote above assignment. Opponent 1 can't get Best at low speed + #ifndef BUGFIX gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; + #endif } else if (sBerryBlender->speed < 1500) { @@ -2131,11 +2133,17 @@ static void UpdateOpponentScores(void) sBerryBlender->scores[i][SCORE_MISS]++; } - // BUG: Should [i][BLENDER_COMM_SCORE] below, not [BLENDER_COMM_SCORE][i] + // BUG: Should be [i][BLENDER_COMM_SCORE] below, not [BLENDER_COMM_SCORE][i] // As a result the music tempo updates if any player misses, but only if 1 specific player hits + #ifdef BUGFIX + if (gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_MISS + || gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_BEST + || gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_GOOD) + #else if (gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_MISS || gRecvCmds[BLENDER_COMM_SCORE][i] == LINKCMD_BLENDER_SCORE_BEST || gRecvCmds[BLENDER_COMM_SCORE][i] == LINKCMD_BLENDER_SCORE_GOOD) + #endif { if (sBerryBlender->speed > 1500) m4aMPlayTempoControl(&gMPlayInfo_BGM, ((sBerryBlender->speed - 750) / 20) + 256); diff --git a/src/contest_ai.c b/src/contest_ai.c index 2f048718f..8fe339790 100644 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -1734,8 +1734,9 @@ static void ContestAICmd_if_user_doesnt_have_exciting_move(void) // they're checking for an effect. Checking for a specific effect would make more sense, // but given that effects are normally read as a single byte and this reads 2 bytes, it // seems reading a move was intended and the AI script is using it incorrectly. -// In any case, to fix it to correctly check for effects replace the u16 move assignment with -// u16 move = gContestMoves[gContestMons[eContestAI.contestantId].moves[i]].effect; +// The fix below aligns the function with how it's used by the script, rather than the apparent +// intention of its usage + static void ContestAICmd_check_user_has_move(void) { int hasMove = FALSE; @@ -1744,7 +1745,12 @@ static void ContestAICmd_check_user_has_move(void) for (i = 0; i < MAX_MON_MOVES; i++) { + #ifdef BUGFIX + u16 move = gContestMoves[gContestMons[eContestAI.contestantId].moves[i]].effect; + #else u16 move = gContestMons[eContestAI.contestantId].moves[i]; + #endif + if (move == targetMove) { hasMove = TRUE; diff --git a/src/daycare.c b/src/daycare.c index d849b39f3..96f62d5bf 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -551,13 +551,15 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) // removes position 0 (HP) then position 1 (DEF), then position 2. This is why HP and DEF // have a lower chance to be inherited in Emerald and why the IV picked for inheritance can // be repeated. Amusingly, FRLG and RS also got this wrong. They remove selectedIvs[i], which - // is not an index! This means that it can sometimes remove the wrong stat. To fix, delete - // the following two lines and uncomment the rest of the block. + // is not an index! This means that it can sometimes remove the wrong stat. + #ifndef BUGFIX selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)]; RemoveIVIndexFromList(availableIVs, i); - // u8 index = Random() % (NUM_STATS - i); - // selectedIvs[i] = availableIVs[index]; - // RemoveIVIndexFromList(availableIVs, index); + #else + u8 index = Random() % (NUM_STATS - i); + selectedIvs[i] = availableIVs[index]; + RemoveIVIndexFromList(availableIVs, index); + #endif } // Determine which parent each of the selected IVs should inherit from. diff --git a/src/field_effect.c b/src/field_effect.c index 41f1a899c..5a18557eb 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -3846,7 +3846,6 @@ bool8 FldEff_MoveDeoxysRock(struct Sprite* sprite) static void Task_MoveDeoxysRock(u8 taskId) { - // BUG: Possible divide by zero s16 *data = gTasks[taskId].data; struct Sprite *sprite = &gSprites[data[1]]; switch (data[0]) @@ -3854,8 +3853,16 @@ static void Task_MoveDeoxysRock(u8 taskId) case 0: data[4] = sprite->pos1.x << 4; data[5] = sprite->pos1.y << 4; - data[6] = (data[2] * 16 - data[4]) / data[8]; - data[7] = (data[3] * 16 - data[5]) / data[8]; + + // UB: Possible divide by zero + #ifdef UBFIX + #define DIVISOR (data[8] ? data[8] : 1); + #else + #define DIVISOR (data[8]) + #endif + + data[6] = (data[2] * 16 - data[4]) / DIVISOR; + data[7] = (data[3] * 16 - data[5]) / DIVISOR; data[0]++; case 1: if (data[8] != 0) diff --git a/src/frontier_pass.c b/src/frontier_pass.c index 1b8030149..cf170b350 100644 --- a/src/frontier_pass.c +++ b/src/frontier_pass.c @@ -983,6 +983,9 @@ static void Task_HandleFrontierPassInput(u8 taskId) SetMainCallback2(CB2_HideFrontierPass); DestroyTask(taskId); // BUG. The function should return here. Otherwise, it can play the same sound twice and destroy the same task twice. + #ifdef BUGFIX + return; + #endif } } diff --git a/src/frontier_util.c b/src/frontier_util.c index 83c9341d5..5955d9bf7 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -2383,13 +2383,21 @@ void ClearRankingHallRecords(void) { s32 i, j, k; + // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0. + #ifdef BUGFIX + u8 zero = 0; + #define ZERO (&zero) + #else + #define ZERO 0 + #endif + for (i = 0; i < HALL_FACILITIES_COUNT; i++) { for (j = 0; j < 2; j++) { for (k = 0; k < 3; k++) { - CopyTrainerId(gSaveBlock2Ptr->hallRecords1P[i][j][k].id, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0. + CopyTrainerId(gSaveBlock2Ptr->hallRecords1P[i][j][k].id, ZERO); gSaveBlock2Ptr->hallRecords1P[i][j][k].name[0] = EOS; gSaveBlock2Ptr->hallRecords1P[i][j][k].winStreak = 0; } @@ -2400,8 +2408,8 @@ void ClearRankingHallRecords(void) { for (k = 0; k < 3; k++) { - CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id1, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0. - CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id2, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0. + CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id1, ZERO); + CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id2, ZERO); gSaveBlock2Ptr->hallRecords2P[j][k].name1[0] = EOS; gSaveBlock2Ptr->hallRecords2P[j][k].name2[0] = EOS; gSaveBlock2Ptr->hallRecords2P[j][k].winStreak = 0; diff --git a/src/match_call.c b/src/match_call.c index a39739f76..723562ade 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -1817,10 +1817,13 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) } *topicTextId = 3; break; + #ifdef BUGFIX + case FRONTIER_FACILITY_PIKE: + #else case FRONTIER_FACILITY_FACTORY: + #endif for (i = 0; i < 2; i++) { - // BUG: should be looking at battle factory records. if (streak < gSaveBlock2Ptr->frontier.pikeRecordStreaks[i]) streak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i]; } @@ -1848,12 +1851,15 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId) } *topicTextId = 2; break; + #ifdef BUGFIX + case FRONTIER_FACILITY_FACTORY: + #else case FRONTIER_FACILITY_PIKE: + #endif for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { - // BUG: should be looking at battle pike records. if (streak < gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[i][j]) streak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[i][j]; } diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index 51cc65c22..2a9304a4d 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -970,10 +970,13 @@ bool8 MetatileBehavior_IsUnableToEmerge(u8 metatileBehavior) { // BUG: The player is unintentionally able to emerge on water doors. // Also the narrower underwater door in the underwater tileset has the wrong metatile behavior. This causes the dive glitch. - // To fix that add || metatileBehavior == MB_WATER_DOOR to the if statement below and - // change the metatile behavior of the narrower water door with porymaps tileset editor. + // To fix change the metatile behavior of the narrower water door with porymap's tileset editor. if (metatileBehavior == MB_NO_SURFACING - || metatileBehavior == MB_SEAWEED_NO_SURFACING) + || metatileBehavior == MB_SEAWEED_NO_SURFACING + #ifdef BUGFIX + || metatileBehavior == MB_WATER_DOOR + #endif + ) return TRUE; else return FALSE; diff --git a/src/pokemon.c b/src/pokemon.c index 3621284d6..7c546fcd5 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2861,8 +2861,11 @@ void CalculateMonStats(struct Pokemon *mon) currentHP = newMaxHP; else if (currentHP != 0) // BUG: currentHP is unintentionally able to become <= 0 after the instruction below. This causes the pomeg berry glitch. - // To fix that set currentHP = 1 if currentHP <= 0. currentHP += newMaxHP - oldMaxHP; + #ifdef BUGFIX + if (currentHP <= 0) + currentHP = 1; + #endif else return; } diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index eb288c978..db8f3d2bb 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -9329,10 +9329,11 @@ u32 GetBoxMonLevelAt(u8 boxId, u8 boxPosition) { u32 lvl; - // BUG: Missed 'else' statement. if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT && GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SANITY_HAS_SPECIES)) lvl = GetLevelFromBoxMonExp(&gPokemonStoragePtr->boxes[boxId][boxPosition]); - // else + #ifdef BUGFIX + else + #endif lvl = 0; return lvl; diff --git a/src/region_map.c b/src/region_map.c index 49b21be07..c2a5b4e9c 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -131,7 +131,11 @@ static const u16 sRegionMap_SpecialPlaceLocations[][2] = { {MAPSEC_UNDERWATER_105, MAPSEC_ROUTE_105}, {MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124}, + #ifdef BUGFIX + {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_125}, + #else {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_129}, // BUG: Map will incorrectly display the name of Route 129 when diving on Route 125 (for Marine Cave only) + #endif {MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_126}, {MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_127}, {MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128}, diff --git a/src/roulette.c b/src/roulette.c index b4d1c4463..4173edcdb 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -463,8 +463,9 @@ static const struct WindowTemplate sWindowTemplates[] = .paletteNum = 15, .baseBlock = 0xC5 }, - // BUG: Array not terminated properly - //DUMMY_WIN_TEMPLATE + #ifdef UBFIX + DUMMY_WIN_TEMPLATE, + #endif }; static const struct GridSelection sGridSelections[NUM_GRID_SELECTIONS + 1] = diff --git a/src/union_room.c b/src/union_room.c index 3e80ffe37..479792a7c 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -478,7 +478,11 @@ static void Task_TryBecomeLinkLeader(u8 taskId) // BUG: sPlayerActivityGroupSize was meant below, not gPlayerCurrActivity // This will be false for all but ACTIVITY_BATTLE_DOUBLE and ACTIVITY_DECLINE // All this changes is which of two texts gets printed + #ifdef BUGFIX + id = (GROUP_MAX(sPlayerActivityGroupSize) == 2) ? 0 : 1; + #else id = (GROUP_MAX(gPlayerCurrActivity) == 2) ? 1 : 0; + #endif if (PrintOnTextbox(&data->textState, sPlayerUnavailableTexts[id])) { data->playerCount = sub_8013398(data->field_0); @@ -1320,7 +1324,11 @@ static bool32 IsPartnerActivityAcceptable(u32 activity, u32 linkGroup) if (linkGroup == 0xFF) return TRUE; - if (linkGroup <= ARRAY_COUNT(sAcceptedActivityIds)) // UB: <= may access data outside the array + #ifdef UBFIX + if (linkGroup < ARRAY_COUNT(sAcceptedActivityIds)) + #else + if (linkGroup <= ARRAY_COUNT(sAcceptedActivityIds)) + #endif { const u8 *bytes = sAcceptedActivityIds[linkGroup]; From b1197ac2da952ca289d9e5ca37b49fd05207f65b Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 12 Dec 2020 23:57:25 -0500 Subject: [PATCH 071/116] UBFIX for if_status_not_in_party --- src/battle_ai_script_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 651f9da2a..952868e11 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -1614,7 +1614,7 @@ static void Cmd_if_status_not_in_party(void) if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo) { gAIScriptPtr += 10; - #ifdef BUGFIX + #ifdef UBFIX return; #endif } From 1aca3786347e8317e01323914e6782ea3d809256 Mon Sep 17 00:00:00 2001 From: Sierraffinity Date: Sat, 12 Dec 2020 21:08:15 -0800 Subject: [PATCH 072/116] Fix name of SetDexNumberColor --- src/pokemon_summary_screen.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index ad037a5f5..578b9768e 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -2578,7 +2578,7 @@ static void DrawPokerusCuredSymbol(struct Pokemon *mon) // This checks if the mo ScheduleBgCopyTilemapToVram(3); } -static void SetDexNumberColor(bool8 isMonShiny) +static void SetMonPicBackgroundPalette(bool8 isMonShiny) { if (!isMonShiny) SetBgTilemapPalette(3, 1, 4, 8, 8, 0); @@ -2715,12 +2715,12 @@ static void PrintNotEggInfo(void) if (!IsMonShiny(mon)) { PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 1); - SetDexNumberColor(FALSE); + SetMonPicBackgroundPalette(FALSE); } else { PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 7); - SetDexNumberColor(TRUE); + SetMonPicBackgroundPalette(TRUE); } PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER); } @@ -2728,9 +2728,9 @@ static void PrintNotEggInfo(void) { ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER); if (!IsMonShiny(mon)) - SetDexNumberColor(FALSE); + SetMonPicBackgroundPalette(FALSE); else - SetDexNumberColor(TRUE); + SetMonPicBackgroundPalette(TRUE); } StringCopy(gStringVar1, gText_LevelSymbol); ConvertIntToDecimalStringN(gStringVar2, summary->level, STR_CONV_MODE_LEFT_ALIGN, 3); From 56ec5c65a89a3f13fa30ec5fca055346c9470ee4 Mon Sep 17 00:00:00 2001 From: Sierra A <6080951+Sierraffinity@users.noreply.github.com> Date: Sat, 12 Dec 2020 22:41:46 -0800 Subject: [PATCH 073/116] Update bugs_and_glitches.md --- docs/bugs_and_glitches.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md index 3d294f5cf..d5531caf2 100644 --- a/docs/bugs_and_glitches.md +++ b/docs/bugs_and_glitches.md @@ -1,7 +1,7 @@ # Bugs and Glitches -These are known bugs and glitches in the original Pokémon Emerald game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash. +These are known bugs and glitches in the original Pokémon Emerald game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash. Defining the `BUGFIX` preprocessor variable will fix some of these automatically. Fixes are written in the `diff` format. If you've used Git before, this should look familiar: @@ -60,7 +60,7 @@ void CB2_InitTitleScreen(void) SetGpuReg(REG_OFFSET_BLDY, 0); ... ``` -This matches with the code of FR/LG and does what GF originally wanted to do. +This matches what FRLG does and obtains the seed differently than RS, independently of the RTC. ## Scrolling through items in the bag causes the image to flicker @@ -95,3 +95,21 @@ Then edit `BagMenu_MoveCursorCallback` in [src/item_menu.c](https://github.com/p if (a != -2) ... ``` + +## Pokémon that have an affine transform as part of their entry animation glitch when going in and out of Poké Balls without a screen transition in between + +**Fix:** Edit sub_817F77C in [src/pokemon_animation.c](https://github.com/pret/pokeemerald/blob/master/src/pokemon_animation.c#L1028) and remove the ifdef/endif lines: + +```diff + ... +-#ifdef BUGFIX + else + { + // FIX: Reset these back to normal after they were changed so Poké Ball catch/release + // animations without a screen transition in between don't break + sprite->affineAnimPaused = FALSE; + sprite->affineAnims = gUnknown_082FF694; + } +-#endif // BUGFIX +} +``` From f24307346f1d8f0540aefc84db7463bfaa85e3ee Mon Sep 17 00:00:00 2001 From: Sierra A <6080951+Sierraffinity@users.noreply.github.com> Date: Sat, 12 Dec 2020 22:42:02 -0800 Subject: [PATCH 074/116] Update bugs_and_glitches.md --- docs/bugs_and_glitches.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md index d5531caf2..670950c1c 100644 --- a/docs/bugs_and_glitches.md +++ b/docs/bugs_and_glitches.md @@ -98,7 +98,7 @@ Then edit `BagMenu_MoveCursorCallback` in [src/item_menu.c](https://github.com/p ## Pokémon that have an affine transform as part of their entry animation glitch when going in and out of Poké Balls without a screen transition in between -**Fix:** Edit sub_817F77C in [src/pokemon_animation.c](https://github.com/pret/pokeemerald/blob/master/src/pokemon_animation.c#L1028) and remove the ifdef/endif lines: +**Fix:** Edit `sub_817F77C` in [src/pokemon_animation.c](https://github.com/pret/pokeemerald/blob/master/src/pokemon_animation.c#L1028) and remove the ifdef/endif lines: ```diff ... From 70310686419fb34a16b5dfba27b6cd15f65913cc Mon Sep 17 00:00:00 2001 From: Sierra A <6080951+Sierraffinity@users.noreply.github.com> Date: Sat, 12 Dec 2020 22:42:29 -0800 Subject: [PATCH 075/116] Update bugs_and_glitches.md --- docs/bugs_and_glitches.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md index 670950c1c..285718598 100644 --- a/docs/bugs_and_glitches.md +++ b/docs/bugs_and_glitches.md @@ -98,7 +98,7 @@ Then edit `BagMenu_MoveCursorCallback` in [src/item_menu.c](https://github.com/p ## Pokémon that have an affine transform as part of their entry animation glitch when going in and out of Poké Balls without a screen transition in between -**Fix:** Edit `sub_817F77C` in [src/pokemon_animation.c](https://github.com/pret/pokeemerald/blob/master/src/pokemon_animation.c#L1028) and remove the ifdef/endif lines: +**Fix:** Edit `sub_817F77C` in [src/pokemon_animation.c](https://github.com/pret/pokeemerald/blob/master/src/pokemon_animation.c#L1028): ```diff ... From 581306db7b38a71682c7c4d4320cb79a4d888269 Mon Sep 17 00:00:00 2001 From: Tim Gates Date: Sun, 13 Dec 2020 22:14:50 +1100 Subject: [PATCH 076/116] docs: fix simple typo, redunant -> redundant There is a small typo in include/constants/battle_frontier.h. Should read `redundant` rather than `redunant`. --- include/constants/battle_frontier.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index 1a60714e8..bbe6db81c 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -51,7 +51,7 @@ #define MAX_BATTLE_FRONTIER_POINTS 9999 #define MAX_STREAK 9999 -// These sets of facility ids would be redunant if the order was consistent +// These sets of facility ids would be redundant if the order was consistent // The order is important for this set so that all the non-link records can be continuous #define RANKING_HALL_BATTLE_TOWER_SINGLES 0 #define RANKING_HALL_BATTLE_TOWER_DOUBLES 1 From f7a729df3079041d3cc462a44919150f4ebdf19f Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 13 Dec 2020 16:16:48 -0500 Subject: [PATCH 077/116] BUGFIX implies UBFIX --- include/config.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/config.h b/include/config.h index 34ce302e5..4c231a84d 100644 --- a/include/config.h +++ b/include/config.h @@ -23,15 +23,15 @@ #define UNITS_METRIC #endif +// Uncomment to fix some identified minor bugs +//#define BUGFIX + // Various undefined behavior bugs may or may not prevent compilation with // newer compilers. So always fix them when using a modern compiler. -#if MODERN +#if MODERN || defined(BUGFIX) #ifndef UBFIX #define UBFIX #endif #endif -// Uncomment to fix some identified minor bugs -//#define BUGFIX - #endif // GUARD_CONFIG_H From 36b0e6dedce4002385e162ac1efce4086a4f9e9a Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 13 Dec 2020 17:08:35 -0700 Subject: [PATCH 078/116] fix shake duration --- data/battle_anim_scripts.s | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index a8af18686..facd8e0d2 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -24009,8 +24009,8 @@ Status_Infestation: monbg ANIM_DEF_PARTNER monbgprio_28 ANIM_TARGET createvisualtask AnimTask_BlendBattleAnimPal, 10, ANIM_PAL_DEF, 0x2, 0x0, 0x9, 0x7320 - launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 0x4f 0x1 - loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 0x4F + launchtask AnimTask_ShakeMon 0x2 0x5 ANIM_TARGET 0x3 0x0 30 0x1 + loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 0x0, 30 call InfestationVortex call InfestationVortex waitforvisualfinish From 785e23222bd3a8ae7b94fa635d846906fc2a4b2d Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 13 Dec 2020 21:20:23 -0300 Subject: [PATCH 079/116] Review correction --- data/battle_anim_scripts.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 0e3862250..85e69da39 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -3,10 +3,10 @@ #include "constants/rgb.h" #include "constants/songs.h" #include "constants/moves.h" +#include "constants/pokemon.h" .include "asm/macros.inc" .include "asm/macros/battle_anim_script.inc" .include "constants/constants.inc" -#include "constants/pokemon.h" .section script_data, "aw", %progbits From 259e59bae0f278b22aaac7115da2ff56bd2c6567 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 14 Dec 2020 12:27:48 -0700 Subject: [PATCH 080/116] fix early mummy activation on two-turn moves --- src/battle_util.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/battle_util.c b/src/battle_util.c index b929b7499..9f1e0c8cb 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4357,6 +4357,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move case ABILITY_MUMMY: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerAttacker) + && TARGET_TURN_DAMAGED && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) { switch (gBattleMons[gBattlerAttacker].ability) From 6faa63347a9ad99d90f81c24fa41531cd20656bb Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Mon, 14 Dec 2020 21:41:30 -0500 Subject: [PATCH 081/116] document reuse of variables in link mode --- src/overworld.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/overworld.c b/src/overworld.c index dbc923e7b..3a7eb34de 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2908,6 +2908,9 @@ static void ZeroObjectEvent(struct ObjectEvent *objEvent) memset(objEvent, 0, sizeof(struct ObjectEvent)); } +// Note: Emerald reuses the direction and range variables during Link mode +// as special gender and direction values. The types and placement +// conflict with the usual Event Object struct, thus the definitions. #define linkGender(obj) obj->singleMovementActive // not even one can reference *byte* aligned bitfield members... #define linkDirection(obj) ((u8*)obj)[offsetof(typeof(*obj), fieldEffectSpriteId) - 1] // -> rangeX From 266a23b32712f6a81bc8ffeeb4dac145894747ad Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Mon, 14 Dec 2020 21:44:25 -0500 Subject: [PATCH 082/116] fix indentation --- src/menu_specialized.c | 87 +++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/src/menu_specialized.c b/src/menu_specialized.c index c1088d9f7..7de963893 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -903,60 +903,59 @@ static u8 *GetConditionMenuMonString(u8 *dst, u16 boxId, u16 monId) } else { - boxMon = GetBoxedMonPtr(box, mon); gender = GetBoxMonGender(boxMon); level = GetLevelFromBoxMonExp(boxMon); } - if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && !StringCompare(dst, gSpeciesNames[species])) - gender = MON_GENDERLESS; + if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && !StringCompare(dst, gSpeciesNames[species])) + gender = MON_GENDERLESS; - for (str = dst; *str != EOS; str++) - ; + for (str = dst; *str != EOS; str++) + ; - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_SKIP; - *(str++) = 60; + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_SKIP; + *(str++) = 60; - switch (gender) - { - default: - *(str++) = CHAR_SPACE; - break; - case MON_MALE: - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_COLOR; - *(str++) = TEXT_COLOR_RED; - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_SHADOW; - *(str++) = TEXT_COLOR_LIGHT_RED; - *(str++) = CHAR_MALE; - break; - case MON_FEMALE: - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_COLOR; - *(str++) = TEXT_COLOR_GREEN; - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_SHADOW; - *(str++) = TEXT_COLOR_LIGHT_GREEN; - *(str++) = CHAR_FEMALE; - break; - } - - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; - *(str++) = TEXT_COLOR_BLUE; - *(str++) = TEXT_COLOR_TRANSPARENT; - *(str++) = TEXT_COLOR_LIGHT_BLUE; - *(str++) = CHAR_SLASH; - *(str++) = CHAR_EXTRA_SYMBOL; - *(str++) = CHAR_LV_2; - str = ConvertIntToDecimalStringN(str, level, STR_CONV_MODE_LEFT_ALIGN, 3); + switch (gender) + { + default: *(str++) = CHAR_SPACE; - *str = EOS; + break; + case MON_MALE: + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_COLOR; + *(str++) = TEXT_COLOR_RED; + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_SHADOW; + *(str++) = TEXT_COLOR_LIGHT_RED; + *(str++) = CHAR_MALE; + break; + case MON_FEMALE: + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_COLOR; + *(str++) = TEXT_COLOR_GREEN; + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_SHADOW; + *(str++) = TEXT_COLOR_LIGHT_GREEN; + *(str++) = CHAR_FEMALE; + break; + } - return str; + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; + *(str++) = TEXT_COLOR_BLUE; + *(str++) = TEXT_COLOR_TRANSPARENT; + *(str++) = TEXT_COLOR_LIGHT_BLUE; + *(str++) = CHAR_SLASH; + *(str++) = CHAR_EXTRA_SYMBOL; + *(str++) = CHAR_LV_2; + str = ConvertIntToDecimalStringN(str, level, STR_CONV_MODE_LEFT_ALIGN, 3); + *(str++) = CHAR_SPACE; + *str = EOS; + + return str; } // Buffers the string in src to dest up to n chars. If src is less than n chars, fill with spaces From 68b456e7f951fa31412cff10a5a47c3f963ae61b Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Mon, 14 Dec 2020 21:51:38 -0500 Subject: [PATCH 083/116] name a2 --- src/overworld.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/overworld.c b/src/overworld.c index 3a7eb34de..70d63680c 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2948,13 +2948,13 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1 ObjectEventUpdateZCoord(objEvent); } -static void sub_80877DC(u8 linkPlayerId, u8 a2) +static void sub_80877DC(u8 linkPlayerId, u8 dir) { if (gLinkPlayerObjectEvents[linkPlayerId].active) { u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId; struct ObjectEvent *objEvent = &gObjectEvents[objEventId]; - linkDirection(objEvent) = a2; + linkDirection(objEvent) = dir; } } From 69cfe5ad01f135e16c330891d3b6d9fc7853e632 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Mon, 14 Dec 2020 21:54:19 -0500 Subject: [PATCH 084/116] use direction constant --- src/overworld.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overworld.c b/src/overworld.c index 70d63680c..72aa17929 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2931,7 +2931,7 @@ static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 gender) objEvent->active = 1; linkGender(objEvent) = gender; - linkDirection(objEvent) = 2; + linkDirection(objEvent) = DIR_NORTH; objEvent->spriteId = 64; InitLinkPlayerObjectEventPos(objEvent, x, y); From 49bdaeb940afc98e3f98b24c9a5afe1bb8d5d86b Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 16 Dec 2020 14:10:30 -0500 Subject: [PATCH 085/116] Remove redundant modern CFLAGS --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 42837b4d3..78a2c2a4f 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,6 @@ OBJ_DIR := build/emerald LIBPATH := -L ../../tools/agbcc/lib else CC1 = $(shell $(CC) --print-prog-name=cc1) -quiet -override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mcpu=arm7tdmi -fno-toplevel-reorder -Wno-pointer-to-int-cast -g override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g ROM := pokeemerald_modern.gba OBJ_DIR := build/modern From ffa35a33c169780a6154eb4976218b499e63d3c7 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 19 Dec 2020 07:44:34 -0300 Subject: [PATCH 086/116] Review corrections --- src/data/battle_moves.h | 10 +++++----- src/data/text/move_descriptions.h | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 7031fdc22..138f4f86c 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11425,7 +11425,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -11437,9 +11437,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .accuracy = 100, .pp = 10, .secondaryEffectChance = 20, - .target = MOVE_TARGET_SELECTED, + .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -11465,7 +11465,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .accuracy = 100, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, + .target = MOVE_TARGET_BOTH, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_PHYSICAL, @@ -11479,7 +11479,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .accuracy = 100, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_SELECTED, + .target = MOVE_TARGET_BOTH, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 2792f33ce..354094ad0 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2928,7 +2928,7 @@ static const u8 sFIERY_WRATHDescription[] = _( static const u8 sTHUNDEROUS_KICKDescription[] = _( "Uses a lightning-like kick\n" - "to hit. Lowers foe's DEFENSE."); + "to hit. Lowers foe's Defense."); static const u8 sGLACIAL_LANCEDescription[] = _( "Strikes by hurling a blizzard-\n" @@ -2939,8 +2939,8 @@ static const u8 sASTRAL_BARRAGEDescription[] = _( "amount of ghosts at a foe."); static const u8 sEERIE_SPELLDescription[] = _( - "Eeriely inflicts damage and\n" - "cuts a foe's las move's PP."); + "Attacks with psychic power.\n" + "Foe's last move has 3 PP cut."); static const u8 sNotDoneYetDescription[] = _( "Not done yet."); From a417a1b2b91353af7784d6f6af096b632aac4c30 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 19 Dec 2020 16:18:39 -0300 Subject: [PATCH 087/116] Corrected Punk Rock's checks --- include/constants/pokemon.h | 1 - src/battle_util.c | 4 ++-- src/data/battle_moves.h | 26 +++++++++++++------------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 0edb1608e..334122385 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -264,7 +264,6 @@ #define FLAG_DANCE (1 << 21) #define FLAG_DMG_IN_AIR (1 << 22) // X2 dmg on air, always hits target on air #define FLAG_HIT_IN_AIR (1 << 23) // dmg is normal, always hits target on air -#define FLAG_PUNK_ROCK_AFFECTED (1 << 24) // To do: Add it to Eerie Spell's move data. // Split defines. #define SPLIT_PHYSICAL 0x0 diff --git a/src/battle_util.c b/src/battle_util.c index 2c4ce033d..124fc96e1 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6778,7 +6778,7 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, UQ_4_12(1.2)); break; case ABILITY_PUNK_ROCK: - if (gBattleMoves[move].flags & FLAG_PUNK_ROCK_AFFECTED) + if ((gBattleMoves[move].flags & FLAG_SOUND) && !IS_MOVE_STATUS(move)) MulModifier(&modifier, UQ_4_12(1.3)); break; } @@ -7234,7 +7234,7 @@ static u32 CalcDefenseStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_PUNK_ROCK: - if (gBattleMoves[move].flags & FLAG_PUNK_ROCK_AFFECTED) + if ((gBattleMoves[move].flags & FLAG_SOUND) && !IS_MOVE_STATUS(move)) MulModifier(&modifier, UQ_4_12(1.3)); break; } diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 046d11035..0b0c0b553 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -2720,7 +2720,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, .split = SPLIT_SPECIAL, }, @@ -3993,7 +3993,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, }, @@ -4764,7 +4764,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, }, @@ -6354,7 +6354,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, }, @@ -7715,7 +7715,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, }, @@ -7729,7 +7729,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, }, @@ -8479,7 +8479,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, }, @@ -8593,7 +8593,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_SOUND, .split = SPLIT_SPECIAL, }, @@ -8876,7 +8876,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, }, @@ -9050,7 +9050,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, }, @@ -9637,7 +9637,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, .argument = STATUS1_BURN, }, @@ -10016,7 +10016,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, }, @@ -10936,7 +10936,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND | FLAG_PUNK_ROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND, .split = SPLIT_SPECIAL, }, From 89989943b37b6ce91e2eea7b803bd7f8957c1851 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 19 Dec 2020 19:11:17 -0300 Subject: [PATCH 088/116] Added placeholders for the anims of CT's moves --- data/battle_anim_scripts.s | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index cf11f4d6a..9fb69e1e4 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -767,7 +767,15 @@ gBattleAnims_Moves:: .4byte Move_JUNGLE_HEALING .4byte Move_WICKED_BLOW .4byte Move_SURGING_STRIKES - .4byte Move_COUNT @ cannot be reached, because last move is Surging Strikes + .4byte Move_THUNDER_CAGE + .4byte Move_DRAGON_ENERGY + .4byte Move_FREEZING_GLARE + .4byte Move_FIERY_WRATH + .4byte Move_THUNDEROUS_KICK + .4byte Move_GLACIAL_LANCE + .4byte Move_ASTRAL_BARRAGE + .4byte Move_EERIE_SPELL + .4byte Move_COUNT @ cannot be reached, because last move is Eerie Spell .align 2 gBattleAnims_StatusConditions:: @@ -14006,6 +14014,30 @@ Move_WICKED_BLOW:: Move_SURGING_STRIKES:: end @to do: +Move_THUNDER_CAGE:: + end @to do: + +Move_DRAGON_ENERGY:: + end @to do: + +Move_FREEZING_GLARE:: + end @to do: + +Move_FIERY_WRATH:: + end @to do: + +Move_THUNDEROUS_KICK:: + end @to do: + +Move_GLACIAL_LANCE:: + end @to do: + +Move_ASTRAL_BARRAGE:: + end @to do: + +Move_EERIE_SPELL:: + end @to do: + @@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@ Move_NONE: Move_MIRROR_MOVE: From 819001c1023e00dd3e7e7cb6dd751b0f873b3a2f Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 19 Dec 2020 19:15:12 -0300 Subject: [PATCH 089/116] Removed redundant check in Punk Rock's effect --- src/battle_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 124fc96e1..a53b6d56d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6778,7 +6778,7 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, UQ_4_12(1.2)); break; case ABILITY_PUNK_ROCK: - if ((gBattleMoves[move].flags & FLAG_SOUND) && !IS_MOVE_STATUS(move)) + if (gBattleMoves[move].flags & FLAG_SOUND) MulModifier(&modifier, UQ_4_12(1.3)); break; } @@ -7234,7 +7234,7 @@ static u32 CalcDefenseStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, MulModifier(&modifier, UQ_4_12(1.5)); break; case ABILITY_PUNK_ROCK: - if ((gBattleMoves[move].flags & FLAG_SOUND) && !IS_MOVE_STATUS(move)) + if (gBattleMoves[move].flags & FLAG_SOUND) MulModifier(&modifier, UQ_4_12(1.3)); break; } From 0aae069db88550f703856f9833e0b6ae68622c46 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 19 Dec 2020 21:11:17 -0300 Subject: [PATCH 090/116] Made Fiery Wrath unaffected by King's Rock --- src/data/battle_moves.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 138f4f86c..13cef869b 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11439,7 +11439,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 20, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, }, From 9f2dc914ba1064bf9085a52c6daf3b77885db61f Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 19 Dec 2020 21:57:47 -0300 Subject: [PATCH 091/116] Tweaked Final Gambit's effect -Made the user faint before the foe like in the official games -Removed calls to resultmessage and critmessage as those were never needed by this move's effect --- data/battle_scripts_1.s | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0ccaa7ef6..8065073fc 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1082,16 +1082,12 @@ BattleScript_EffectFinalGambit: waitstate healthbarupdate BS_TARGET datahpupdate BS_TARGET - critmessage - waitmessage 0x40 - resultmessage - waitmessage 0x40 - seteffectwithchance - tryfaintmon BS_TARGET, FALSE, NULL - jumpifmovehadnoeffect BattleScript_MoveEnd healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER + seteffectwithchance tryfaintmon BS_ATTACKER, FALSE, NULL + tryfaintmon BS_TARGET, FALSE, NULL + jumpifmovehadnoeffect BattleScript_MoveEnd goto BattleScript_MoveEnd BattleScript_EffectHitSwitchTarget: From 14e2898a29e2cfddb4d1ca16cc0c3ec3e02689d7 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Sun, 20 Dec 2020 02:54:33 -0500 Subject: [PATCH 092/116] fix structs and some function logic (currently does not match) --- src/berry_crush.c | 826 +++++++++++++++++++++------------------------- 1 file changed, 383 insertions(+), 443 deletions(-) diff --git a/src/berry_crush.c b/src/berry_crush.c index 985bf8d28..bd6a12ba5 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -40,22 +40,27 @@ struct BerryCrushGame_Player { - u16 unk0; - u16 unk2; - union - { - u8 as_2d_bytes[2][8]; - u16 as_hwords[8]; - } unk4; - u8 unk14[12]; + u8 unk0[PLAYER_NAME_LENGTH + 1 + 4]; + u16 unkC; + u16 unkE; + u16 unk10; + u16 unk12; + u16 unk14; + u16 unk16; + u16 unk18; + u16 unk1A; + u8 unk1B; + u8 unk1C; }; -struct __attribute__((packed, aligned(2))) BerryCrushGame_4E +struct BerryCrushGame_4E { u16 unk0; u16 filler2; u8 unk4_0:1; u8 unk4_1:1; + u8 unk4_2:1; + u8 unk4_3:5; s8 unk5; u16 unk6; u16 unk8; @@ -63,54 +68,44 @@ struct __attribute__((packed, aligned(2))) BerryCrushGame_4E u16 unkC; }; -struct __attribute__((packed)) BerryCrushGame_40 +struct BerryCrushGame_40 { - u8 unk0[2]; - u16 unk2[6]; - struct BerryCrushGame_4E unkE; + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC; + s16 unkE; }; -struct BerryCrushGame_5C +struct BerryCrushGame_5A { u16 unk00; u8 unk02_0:1; u8 unk02_1:1; u8 unk02_2:1; u8 unk02_3:5; - u8 unk03; + s8 unk03; u16 unk04; u16 unk06; u16 unk08; u16 unk0A; }; -union BerryCrushGame_68 +struct BerryCrushGame_66 { - struct BerryCrushGame_68_x - { - struct BerryCrushGame_68_x_SubStruct - { - s32 unk00; - u16 unk04; - s16 unk06; - u16 unk08; - u16 unk0A; - u16 unk0C[2][5]; - u8 filler20[16]; - } unk00; - u8 unk30[12]; - struct BerryCrushGame_Player others[4]; - u8 fillerBC[20]; - } as_four_players; - struct BerryCrushGame_68_y - { - u8 filler00[28]; - struct BerryCrushGame_Player unk1C[5]; - u8 fillerBC[20]; - } as_five_players; + u32 unk00; + u16 unk04; + u16 unk06; + u16 unk08; + u16 unk0A; + u16 unk0C[2][5]; + u8 filler20[2][8]; }; -struct BerryCrushGame_138_C +struct BerryCrushGame_136_C { u8 unk0; u8 unk1; @@ -121,7 +116,7 @@ struct BerryCrushGame_138_C s16 unkA; }; -struct BerryCrushGame_138 +struct BerryCrushGame_136 { u8 unk0; u8 unk1; @@ -130,7 +125,7 @@ struct BerryCrushGame_138 s16 unk4; s16 unk6; s16 unk8; - const struct BerryCrushGame_138_C *unkC[5]; + const struct BerryCrushGame_136_C *unkC[5]; struct Sprite *unk20; struct Sprite *unk24[5]; struct Sprite *unk38[5]; @@ -140,6 +135,7 @@ struct BerryCrushGame_138 u8 filler81; u8 unk82; u8 unk83[5]; + u16 unk88[4][0x800]; }; struct BerryCrushGame @@ -160,7 +156,7 @@ struct BerryCrushGame u16 unk16; s16 unk18; s16 unk1A; - int unk1C; + s32 unk1C; s32 unk20; u8 unk24; u8 unk25_0:1; @@ -178,14 +174,12 @@ struct BerryCrushGame s16 unk32; s16 unk34; u8 unk36[0xA]; - struct BerryCrushGame_40 unk40; - struct BerryCrushGame_5C unk5C; - union BerryCrushGame_68 unk68; - struct BerryCrushGame_138 unk138; - u8 unk1C0[0x1000]; - u8 unk11C0[0x1000]; - u8 unk21C0[0x1000]; - u8 unk31C0[0x1000]; + u16 unk40[6]; + u16 unk4C[7]; + struct BerryCrushGame_5A unk5A; + struct BerryCrushGame_66 unk66; + struct BerryCrushGame_Player unk96[5]; + struct BerryCrushGame_136 unk136; }; static void VBlankCB(void); @@ -200,9 +194,9 @@ void sub_8022600(struct BerryCrushGame *); void sub_80226D0(struct BerryCrushGame *); void sub_8022730(struct BerryCrushGame *); void sub_8022960(struct BerryCrushGame *); -void sub_8022524(struct BerryCrushGame_138 *, u16); +void sub_8022524(struct BerryCrushGame_136 *, u16); void sub_8022B28(struct Sprite *); -void sub_8022554(struct BerryCrushGame_138 *r0); +void sub_8022554(struct BerryCrushGame_136 *r0); void sub_8024578(struct BerryCrushGame *); void sub_8024644(u8 *, u32, u32, u32, u32); static void sub_8022A20(struct Sprite *sprite); @@ -452,7 +446,7 @@ static const u8 gUnknown_082F417C[][5] = {0, 1, 3, 2, 4}, }; -static const struct BerryCrushGame_138_C gUnknown_082F4190[] = +static const struct BerryCrushGame_136_C gUnknown_082F4190[] = { { .unk0 = 0, @@ -887,7 +881,7 @@ static void GetBerryFromBag(void) else RemoveBagItem(gSpecialVar_ItemId, 1); - gBerryCrushGame->unk68.as_four_players.others[gBerryCrushGame->unk8].unk0 = gSpecialVar_ItemId - FIRST_BERRY_INDEX; + gBerryCrushGame->unk96[gBerryCrushGame->unk8].unkC = gSpecialVar_ItemId - FIRST_BERRY_INDEX; gBerryCrushGame->unkE = 1; gBerryCrushGame->unkF = 9; BerryCrush_SetPaletteFadeParams(gBerryCrushGame->unk36, 0, -1, 0, 16, 0, 0); @@ -916,10 +910,10 @@ static void BerryCrush_SaveResults(void) { u32 var0, var1; - var0 = gBerryCrushGame->unk68.as_four_players.unk00.unk04; + var0 = gBerryCrushGame->unk66.unk04; var0 = Q_24_8(var0); var0 = MathUtil_Div32(var0, Q_24_8(60)); - var1 = gBerryCrushGame->unk68.as_four_players.unk00.unk0A; + var1 = gBerryCrushGame->unk66.unk0A; var1 = Q_24_8(var1); var1 = MathUtil_Div32(var1, var0) & 0xFFFF; gBerryCrushGame->unk16 = var1; @@ -955,7 +949,7 @@ static void BerryCrush_SaveResults(void) break; } - gBerryCrushGame->unk1C = gBerryCrushGame->unk68.as_four_players.unk00.unk00; + gBerryCrushGame->unk1C = gBerryCrushGame->unk66.unk00; if (GiveBerryPowder(gBerryCrushGame->unk1C)) return; @@ -985,22 +979,16 @@ static void MainTask(u8 taskId) sub_8021450(gBerryCrushGame); } -#define PLAYER_UNK14(game, i) \ - ((u8 *)(game) \ - + offsetof(struct BerryCrushGame, unk68) \ - + offsetof(struct BerryCrushGame_68_x, unk30) \ - + sizeof(struct BerryCrushGame_Player) * (i)) - static void ParseName_Options(struct BerryCrushGame *arg0) { u8 i = 0; for (; i < arg0->unk9; i++) - StringCopy(PLAYER_UNK14(arg0, i), gLinkPlayers[i].name); + StringCopy(arg0->unk96[i].unk0, gLinkPlayers[i].name); for (; i < 5; i++) { - memset(PLAYER_UNK14(arg0, i), 1, PLAYER_NAME_LENGTH); - arg0->unk68.as_five_players.unk1C[i].unk14[PLAYER_NAME_LENGTH] = EOS; + memset(arg0->unk96[i].unk0, 1, PLAYER_NAME_LENGTH); + arg0->unk96[i].unk0[PLAYER_NAME_LENGTH] = EOS; } switch (gSaveBlock2Ptr->optionsTextSpeed) @@ -1046,9 +1034,9 @@ s32 InitBerryCrushDisplay(void) case 3: ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, gUnknown_082F32C8, ARRAY_COUNT(gUnknown_082F32C8)); - SetBgTilemapBuffer(1, game->unk1C0); - SetBgTilemapBuffer(2, game->unk21C0); - SetBgTilemapBuffer(3, game->unk31C0); + SetBgTilemapBuffer(1, game->unk136.unk88[0]); + SetBgTilemapBuffer(2, game->unk136.unk88[2]); + SetBgTilemapBuffer(3, game->unk136.unk88[3]); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(2, 0, 0); @@ -1182,7 +1170,7 @@ static int sub_8021450(struct BerryCrushGame *arg0) SetGpuReg(REG_OFFSET_BG1VOFS, -gSpriteCoordOffsetY); if (arg0->unk12 == 7) { - sub_8022524(&arg0->unk138, arg0->unk28); + sub_8022524(&arg0->unk136, arg0->unk28); } return 0; @@ -1196,7 +1184,7 @@ void sub_8021488(struct BerryCrushGame *arg0) gSpriteCoordOffsetY = -104; } -void sub_80214A8(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) +void sub_80214A8(struct BerryCrushGame *arg0, struct BerryCrushGame_136 *arg1) { u8 i; u8 spriteId; @@ -1212,7 +1200,7 @@ void sub_80214A8(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) &gUnknown_082F436C, gUnknown_082F41E8[i], gUnknown_082F41E8[i], - arg0->unk68.as_four_players.others[i].unk0 + 133); + arg0->unk96[i].unkC + 133); arg1->unk38[i] = &gSprites[spriteId]; arg1->unk38[i]->oam.priority = 3; arg1->unk38[i]->affineAnimPaused = TRUE; @@ -1271,7 +1259,7 @@ void sub_8021608(struct Sprite *sprite) } } -void sub_80216A8(struct BerryCrushGame *arg0, __attribute__((unused)) struct BerryCrushGame_138 *arg1) +void sub_80216A8(struct BerryCrushGame *arg0, __attribute__((unused)) struct BerryCrushGame_136 *arg1) { u8 i; for (i = 0; i < arg0->unk9; i++) @@ -1281,7 +1269,7 @@ void sub_80216A8(struct BerryCrushGame *arg0, __attribute__((unused)) struct Ber } } -void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) +void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_136 *arg1) { u8 sp4; struct BerryCrushGame_4E *var4E; @@ -1289,7 +1277,7 @@ void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) u16 var, var2; sp4 = 0; - var4E = &arg0->unk40.unkE; + var4E = (struct BerryCrushGame_4E *)arg0->unk40; for (i = 0; i < arg0->unk9; i++) { var = var4E->unkA >> (i * 3); @@ -1353,7 +1341,7 @@ void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) } } -bool32 sub_80218D4(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) +bool32 sub_80218D4(struct BerryCrushGame *arg0, struct BerryCrushGame_136 *arg1) { u8 i; @@ -1375,7 +1363,7 @@ bool32 sub_80218D4(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) return TRUE; } -void sub_8021944(struct BerryCrushGame_138 *arg0, u16 arg1) +void sub_8021944(struct BerryCrushGame_136 *arg0, u16 arg1) { u8 i = 0; u32 r7 = 0; @@ -1408,7 +1396,7 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) u8 r2; s32 r3; u8 r7; - union BerryCrushGame_68 * sp24 = &sp0C->unk68; + struct BerryCrushGame_66 * sp24 = &sp0C->unk66; u32 xOffset; s32 r6; @@ -1427,19 +1415,19 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) switch (sp10) { case 0: - sp1C = sp24->as_five_players.unk1C[0].unk4.as_2d_bytes[sp10][r8]; - if (r8 != 0 && sp24->as_four_players.unk00.unk0C[sp10][r8] != sp24->as_four_players.unk00.unk0C[sp10][r8 - 1]) + sp1C = sp24->filler20[sp10][r8]; + if (r8 != 0 && sp24->unk0C[sp10][r8] != sp24->unk0C[sp10][r8 - 1]) sp20 = r8; - ConvertIntToDecimalStringN(gStringVar4, sp24->as_four_players.unk00.unk0C[sp10][r8], STR_CONV_MODE_RIGHT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar4, sp24->unk0C[sp10][r8], STR_CONV_MODE_RIGHT_ALIGN, 4); StringAppend(gStringVar4, gUnknown_082F43B4[sp10]); break; case 1: - sp1C = sp24->as_five_players.unk1C[0].unk4.as_2d_bytes[sp10][r8]; - if (r8 != 0 && sp24->as_four_players.unk00.unk0C[sp10][r8] != sp24->as_four_players.unk00.unk0C[sp10][r8 - 1]) + sp1C = sp24->filler20[sp10][r8]; + if (r8 != 0 && sp24->unk0C[sp10][r8] != sp24->unk0C[sp10][r8 - 1]) sp20 = r8; - ConvertIntToDecimalStringN(gStringVar1, sp24->as_four_players.unk00.unk0C[sp10][r8] >> 4, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar1, sp24->unk0C[sp10][r8] >> 4, STR_CONV_MODE_RIGHT_ALIGN, 3); r3 = 0; - r7 = sp24->as_four_players.unk00.unk0C[sp10][r8] & 15; + r7 = sp24->unk0C[sp10][r8] & 15; for (r2 = 0; r2 < 4; ++r2) if ((r7 >> (3 - r2)) & 1) r3 += sPressingSpeedConversionTable[r2]; @@ -1450,7 +1438,7 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) case 2: sp1C = r8; sp20 = r8; - r2 = sp0C->unk68.as_five_players.unk1C[r8].unk14[12]; + r2 = sp0C->unk96[r8].unkC; if (r2 >= LAST_BERRY_INDEX - FIRST_BERRY_INDEX + 2) r2 = 0; StringCopy(gStringVar1, gBerries[r2].name); @@ -1458,15 +1446,15 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) break; } xOffset = GetStringRightAlignXOffset(2, gStringVar4, sp14 - 4); - AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, xOffset, r6, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(sp0C->unk136.unk82, 2, xOffset, r6, sBerryCrushTextColorTable[0], 0, gStringVar4); if (sp1C == sp0C->unk8) StringCopy(gStringVar3, gText_1DotBlueF700); else StringCopy(gStringVar3, gText_1DotF700); gStringVar3[0] = sp20 + CHAR_1; - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, PLAYER_UNK14(sp0C, sp1C)); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sp0C->unk96[sp1C].unk0); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gStringVar3); - AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, 4, r6, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(sp0C->unk136.unk82, 2, 4, r6, sBerryCrushTextColorTable[0], 0, gStringVar4); } } @@ -1475,28 +1463,28 @@ void sub_8021D34(struct BerryCrushGame *r8) u8 r10 = 0; u8 r6 = 0; u32 sp0C = 0; - union BerryCrushGame_68 *sp10 = &r8->unk68; - u8 r7 = GetWindowAttribute(r8->unk138.unk82, WINDOW_HEIGHT) * 8 - 42; + struct BerryCrushGame_66 *sp10 = &r8->unk66; + u8 r7 = GetWindowAttribute(r8->unk136.unk82, WINDOW_HEIGHT) * 8 - 42; - sub_8021944(&r8->unk138, sp10->as_four_players.unk00.unk04); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_TimeColon); + sub_8021944(&r8->unk136, sp10->unk04); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_TimeColon); r6 = 176 - (u8)GetStringWidth(2, gText_SpaceSec, -1); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceSec); - ConvertIntToDecimalStringN(gStringVar1, r8->unk138.unk6, STR_CONV_MODE_LEADING_ZEROS, 2); - ConvertIntToDecimalStringN(gStringVar2, r8->unk138.unk8, STR_CONV_MODE_LEADING_ZEROS, 2); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceSec); + ConvertIntToDecimalStringN(gStringVar1, r8->unk136.unk6, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar2, r8->unk136.unk8, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar4, gText_XDotY2); r6 -= GetStringWidth(2, gStringVar4, -1); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); r6 -= GetStringWidth(2, gText_SpaceMin, -1); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceMin); - ConvertIntToDecimalStringN(gStringVar1, r8->unk138.unk4, STR_CONV_MODE_LEADING_ZEROS, 1); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceMin); + ConvertIntToDecimalStringN(gStringVar1, r8->unk136.unk4, STR_CONV_MODE_LEADING_ZEROS, 1); StringExpandPlaceholders(gStringVar4, gText_StrVar1); r6 -= GetStringWidth(2, gStringVar4, -1); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); r7 += 14; - AddTextPrinterParameterized3(r8->unk138.unk82, 2, 0, r7, sBerryCrushTextColorTable[0], 0, gText_PressingSpeed); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, 0, r7, sBerryCrushTextColorTable[0], 0, gText_PressingSpeed); r6 = 176 - (u8)GetStringWidth(2, gText_TimesPerSec, -1); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_TimesPerSec); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_TimesPerSec); for (; r10 < 8; ++r10) if (((u8)r8->unk16 >> (7 - r10)) & 1) sp0C += *(r10 + sPressingSpeedConversionTable); // It's accessed in a different way here for unknown reason @@ -1505,18 +1493,18 @@ void sub_8021D34(struct BerryCrushGame *r8) StringExpandPlaceholders(gStringVar4, gText_XDotY3); r6 -= GetStringWidth(2, gStringVar4, -1); if (r8->unk25_1) - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[5], 0, gStringVar4); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[5], 0, gStringVar4); else - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); r7 += 14; - AddTextPrinterParameterized3(r8->unk138.unk82, 2, 0, r7, sBerryCrushTextColorTable[0], 0, gText_Silkiness); - ConvertIntToDecimalStringN(gStringVar1, sp10->as_four_players.unk00.unk08, STR_CONV_MODE_RIGHT_ALIGN, 3); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, 0, r7, sBerryCrushTextColorTable[0], 0, gText_Silkiness); + ConvertIntToDecimalStringN(gStringVar1, sp10->unk08, STR_CONV_MODE_RIGHT_ALIGN, 3); StringExpandPlaceholders(gStringVar4, gText_Var1Percent); r6 = 176 - (u8)GetStringWidth(2, gStringVar4, -1); - AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); } -bool32 sub_8022070(struct BerryCrushGame *r4, struct BerryCrushGame_138 *r6) +bool32 sub_8022070(struct BerryCrushGame *r4, struct BerryCrushGame_136 *r6) { u8 r5; struct WindowTemplate template; @@ -1551,7 +1539,7 @@ bool32 sub_8022070(struct BerryCrushGame *r4, struct BerryCrushGame_138 *r6) r6->unk80 = 5; return FALSE; case 12: - sub_80219C8(r6->unk82, 20, 4, gUnknown_082F43B4[r4->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][7] + 3]); + sub_80219C8(r6->unk82, 20, 4, gUnknown_082F43B4[r4->unk66.filler20[0][7] + 3]); sub_8021A28(r4, 1, 0xA0, 8 * gUnknown_082F3344[0][r5]); r6->unk80 = 5; return FALSE; @@ -1575,8 +1563,8 @@ bool32 sub_8022070(struct BerryCrushGame *r4, struct BerryCrushGame_138 *r6) void sub_802222C(struct BerryCrushGame *r4) { - ClearStdWindowAndFrameToTransparent(r4->unk138.unk82, 1); - RemoveWindow(r4->unk138.unk82); + ClearStdWindowAndFrameToTransparent(r4->unk136.unk82, 1); + RemoveWindow(r4->unk136.unk82); sub_8022600(r4); } @@ -1694,7 +1682,7 @@ void ShowBerryCrushRankings(void) gTasks[taskId].data[5] = gSaveBlock2Ptr->berryCrush.berryCrushResults[3]; } -void sub_8022524(struct BerryCrushGame_138 *r4, u16 r1) +void sub_8022524(struct BerryCrushGame_136 *r4, u16 r1) { sub_8021944(r4, r1); DigitObjUtil_PrintNumOn(0, r4->unk4); @@ -1702,7 +1690,7 @@ void sub_8022524(struct BerryCrushGame_138 *r4, u16 r1) DigitObjUtil_PrintNumOn(2, r4->unk8); } -void sub_8022554(struct BerryCrushGame_138 *r0) +void sub_8022554(struct BerryCrushGame_136 *r0) { r0->unk78[0]->invisible = TRUE; r0->unk78[1]->invisible = TRUE; @@ -1717,10 +1705,10 @@ void sub_8022588(struct BerryCrushGame *r5) for (r6 = 0; r6 < r5->unk9; ++r6) { - r5->unk138.unkC[r6] = &gUnknown_082F4190[gUnknown_082F417C[r5->unk9 - 2][r6]]; - r5->unk138.unk83[r6] = AddWindow(&gUnknown_082F32F4[r5->unk138.unkC[r6]->unk0]); - PutWindowTilemap(r5->unk138.unk83[r6]); - FillWindowPixelBuffer(r5->unk138.unk83[r6], 0); + r5->unk136.unkC[r6] = &gUnknown_082F4190[gUnknown_082F417C[r5->unk9 - 2][r6]]; + r5->unk136.unk83[r6] = AddWindow(&gUnknown_082F32F4[r5->unk136.unkC[r6]->unk0]); + PutWindowTilemap(r5->unk136.unk83[r6]); + FillWindowPixelBuffer(r5->unk136.unk83[r6], 0); } } @@ -1731,36 +1719,36 @@ void sub_8022600(struct BerryCrushGame *r6) for (r7 = 0; r7 < r6->unk9; ++r7) { - PutWindowTilemap(r6->unk138.unk83[r7]); + PutWindowTilemap(r6->unk136.unk83[r7]); if (r7 == r6->unk8) { AddTextPrinterParameterized4( - r6->unk138.unk83[r7], + r6->unk136.unk83[r7], 2, - 36 - GetStringWidth(2, PLAYER_UNK14(r6, r7), 0) / 2u, + 36 - GetStringWidth(2, r6->unk96[r7].unk0, 0) / 2u, 1, 0, 0, sBerryCrushTextColorTable[1], 0, - PLAYER_UNK14(r6, r7) + r6->unk96[r7].unk0 ); } else { AddTextPrinterParameterized4( - r6->unk138.unk83[r7], + r6->unk136.unk83[r7], 2, - 36 - GetStringWidth(2, PLAYER_UNK14(r6, r7), 0) / 2u, + 36 - GetStringWidth(2, r6->unk96[r7].unk0, 0) / 2u, 1, 0, 0, sBerryCrushTextColorTable[2], 0, - PLAYER_UNK14(r6, r7) + r6->unk96[r7].unk0 ); } - CopyWindowToVram(r6->unk138.unk83[r7], 3); + CopyWindowToVram(r6->unk136.unk83[r7], 3); } CopyBgTilemapBufferToVram(0); } @@ -1768,17 +1756,18 @@ void sub_8022600(struct BerryCrushGame *r6) void sub_80226D0(struct BerryCrushGame *r6) { u8 r5 = 0; - u8 * r4; + u16 * r4; - LZ77UnCompWram(gUnknown_08DE3FD4, gDecompressionBuffer); // required for matching + LZ77UnCompWram(gUnknown_08DE3FD4, gDecompressionBuffer); + r4 = (u16 *)gDecompressionBuffer; - for (r4 = gDecompressionBuffer; r5 < r6->unk9; ++r5) + for (; r5 < r6->unk9; ++r5) { CopyToBgTilemapBufferRect( 3, - &r4[r6->unk138.unkC[r5]->unk0 * 40], - r6->unk138.unkC[r5]->unk1, - r6->unk138.unkC[r5]->unk2, + &r4[r6->unk136.unkC[r5]->unk0 * 40], + r6->unk136.unkC[r5]->unk1, + r6->unk136.unkC[r5]->unk2, 10, 2 ); @@ -1799,25 +1788,25 @@ void sub_8022730(struct BerryCrushGame *r6) LoadCompressedSpriteSheet(&gUnknown_082F41F4[r5]); LoadSpritePalettes(gUnknown_082F421C); r2 = CreateSprite(&gUnknown_082F430C, 120, 88, 5); - r6->unk138.unk20 = &gSprites[r2]; - r6->unk138.unk20->oam.priority = 3; - r6->unk138.unk20->coordOffsetEnabled = TRUE; - r6->unk138.unk20->animPaused = TRUE; + r6->unk136.unk20 = &gSprites[r2]; + r6->unk136.unk20->oam.priority = 3; + r6->unk136.unk20->coordOffsetEnabled = TRUE; + r6->unk136.unk20->animPaused = TRUE; for (r5 = 0; r5 < r6->unk9; ++r5) { r2 = CreateSprite( &gUnknown_082F4324, - r6->unk138.unkC[r5]->unk4 + 120, - r6->unk138.unkC[r5]->unk6 + 32, + r6->unk136.unkC[r5]->unk4 + 120, + r6->unk136.unkC[r5]->unk6 + 32, 0 ); - r6->unk138.unk24[r5] = &gSprites[r2]; - r6->unk138.unk24[r5]->oam.priority = 1; - r6->unk138.unk24[r5]->invisible = TRUE; - r6->unk138.unk24[r5]->coordOffsetEnabled = TRUE; - r6->unk138.unk24[r5]->animPaused = TRUE; + r6->unk136.unk24[r5] = &gSprites[r2]; + r6->unk136.unk24[r5]->oam.priority = 1; + r6->unk136.unk24[r5]->invisible = TRUE; + r6->unk136.unk24[r5]->coordOffsetEnabled = TRUE; + r6->unk136.unk24[r5]->animPaused = TRUE; } - for (r5 = 0; r5 < ARRAY_COUNT(r6->unk138.unk4C); ++r5) + for (r5 = 0; r5 < ARRAY_COUNT(r6->unk136.unk4C); ++r5) { r2 = CreateSprite( &gUnknown_082F433C, @@ -1825,13 +1814,13 @@ void sub_8022730(struct BerryCrushGame *r6) gUnknown_082F41D2[r5][1] + 136, 6 ); - r6->unk138.unk4C[r5] = &gSprites[r2]; - r6->unk138.unk4C[r5]->oam.priority = 3; - r6->unk138.unk4C[r5]->invisible = TRUE; - r6->unk138.unk4C[r5]->animPaused = TRUE; - r6->unk138.unk4C[r5]->data[0] = r5; + r6->unk136.unk4C[r5] = &gSprites[r2]; + r6->unk136.unk4C[r5]->oam.priority = 3; + r6->unk136.unk4C[r5]->invisible = TRUE; + r6->unk136.unk4C[r5]->animPaused = TRUE; + r6->unk136.unk4C[r5]->data[0] = r5; } - for (r5 = 0; r5 < ARRAY_COUNT(r6->unk138.unk78); ++r5) + for (r5 = 0; r5 < ARRAY_COUNT(r6->unk136.unk78); ++r5) { r2 = CreateSprite( &gUnknown_082F4354, @@ -1839,16 +1828,16 @@ void sub_8022730(struct BerryCrushGame *r6) 8, 0 ); - r6->unk138.unk78[r5] = &gSprites[r2]; - r6->unk138.unk78[r5]->oam.priority = 0; - r6->unk138.unk78[r5]->invisible = FALSE; - r6->unk138.unk78[r5]->animPaused = FALSE; + r6->unk136.unk78[r5] = &gSprites[r2]; + r6->unk136.unk78[r5]->oam.priority = 0; + r6->unk136.unk78[r5]->invisible = FALSE; + r6->unk136.unk78[r5]->animPaused = FALSE; } DigitObjUtil_CreatePrinter(0, 0, &gUnknown_082F4384[0]); DigitObjUtil_CreatePrinter(1, 0, &gUnknown_082F4384[1]); DigitObjUtil_CreatePrinter(2, 0, &gUnknown_082F4384[2]); if (r6->unk12 == 1) - sub_8022554(&r6->unk138); + sub_8022554(&r6->unk136); } void sub_8022960(struct BerryCrushGame *r5) @@ -1862,17 +1851,17 @@ void sub_8022960(struct BerryCrushGame *r5) FreeSpritePaletteByTag(4); FreeSpritePaletteByTag(2); FreeSpritePaletteByTag(1); - for (; r4 < ARRAY_COUNT(r5->unk138.unk78); ++r4) - DestroySprite(r5->unk138.unk78[r4]); + for (; r4 < ARRAY_COUNT(r5->unk136.unk78); ++r4) + DestroySprite(r5->unk136.unk78[r4]); DigitObjUtil_DeletePrinter(2); DigitObjUtil_DeletePrinter(1); DigitObjUtil_DeletePrinter(0); - for (r4 = 0; r4 < ARRAY_COUNT(r5->unk138.unk4C); ++r4) - DestroySprite(r5->unk138.unk4C[r4]); + for (r4 = 0; r4 < ARRAY_COUNT(r5->unk136.unk4C); ++r4) + DestroySprite(r5->unk136.unk4C[r4]); for (r4 = 0; r4 < r5->unk9; ++r4) - DestroySprite(r5->unk138.unk24[r4]); - if (r5->unk138.unk20->inUse) - DestroySprite(r5->unk138.unk20); + DestroySprite(r5->unk136.unk24[r4]); + if (r5->unk136.unk20->inUse) + DestroySprite(r5->unk136.unk20); } static void sub_8022A20(struct Sprite *sprite) @@ -2165,9 +2154,9 @@ static u32 sub_8022F1C(struct BerryCrushGame *r5, u8 *r2) case 2: if (!IsLinkTaskFinished()) return 0; - memset(r5->unk40.unk2, 0, sizeof(r5->unk40.unk2)); - r5->unk40.unk2[0] = r5->unk68.as_four_players.others[r5->unk8].unk0; - SendBlock(0, r5->unk40.unk2, 2); + memset(r5->unk40, 0, sizeof(r5->unk40)); + r5->unk40[0] = r5->unk96[r5->unk8].unkC; + SendBlock(0, r5->unk40, 2); break; case 3: if (!IsLinkTaskFinished()) @@ -2179,11 +2168,11 @@ static u32 sub_8022F1C(struct BerryCrushGame *r5, u8 *r2) return 0; for (r3 = 0; r3 < r5->unk9; ++r3) { - r5->unk68.as_four_players.others[r3].unk0 = gBlockRecvBuffer[r3][0]; - if (r5->unk68.as_four_players.others[r3].unk0 > 0xB0) - r5->unk68.as_four_players.others[r3].unk0 = 0; - r5->unk18 += gUnknown_0858AB24[r5->unk68.as_four_players.others[r3].unk0].unk0; - r5->unk1C += gUnknown_0858AB24[r5->unk68.as_four_players.others[r3].unk0].unk1; + r5->unk96[r3].unkC = gBlockRecvBuffer[r3][0]; + if (r5->unk96[r3].unkC > 0xB0) + r5->unk96[r3].unkC = 0; + r5->unk18 += gUnknown_0858AB24[r5->unk96[r3].unkC].unk0; + r5->unk1C += gUnknown_0858AB24[r5->unk96[r3].unkC].unk1; } r5->unk10 = 0; ResetBlockReceivedFlags(); @@ -2205,41 +2194,41 @@ static u32 sub_8023070(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r switch (r4->unkC) { case 0: - sub_80214A8(r4, &r4->unk138); + sub_80214A8(r4, &r4->unk136); Rfu_SetLinkStandbyCallback(); break; case 1: if (!IsLinkTaskFinished()) return 0; - r4->unk138.unk0 = 0; - r4->unk138.unk1 = 0; - r4->unk138.unk2 = 0; - r4->unk138.unk3 = 0; + r4->unk136.unk0 = 0; + r4->unk136.unk1 = 0; + r4->unk136.unk2 = 0; + r4->unk136.unk3 = 0; break; case 2: - r4->unk138.unk38[r4->unk138.unk0]->callback = sub_8021608; - r4->unk138.unk38[r4->unk138.unk0]->affineAnimPaused = FALSE; + r4->unk136.unk38[r4->unk136.unk0]->callback = sub_8021608; + r4->unk136.unk38[r4->unk136.unk0]->affineAnimPaused = FALSE; PlaySE(SE_BALL_THROW); break; case 3: - if (r4->unk138.unk38[r4->unk138.unk0]->callback == sub_8021608) + if (r4->unk136.unk38[r4->unk136.unk0]->callback == sub_8021608) return 0; - r4->unk138.unk38[r4->unk138.unk0] = NULL; - ++r4->unk138.unk0; + r4->unk136.unk38[r4->unk136.unk0] = NULL; + ++r4->unk136.unk0; Rfu_SetLinkStandbyCallback(); break; case 4: if (!IsLinkTaskFinished()) return 0; - if (r4->unk138.unk0 < r4->unk9) + if (r4->unk136.unk0 < r4->unk9) { r4->unkC = 2; return 0; } - r4->unk138.unk0 = 0; + r4->unk136.unk0 = 0; break; case 5: - sub_80216A8(r4, &r4->unk138); + sub_80216A8(r4, &r4->unk136); Rfu_SetLinkStandbyCallback(); break; case 6: @@ -2264,24 +2253,24 @@ static u32 sub_80231B8(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r if (r4->unk2A < 0) return 0; r4->unk2A = 0; - r4->unk138.unk1 = 4; - r4->unk138.unk0 = 0; - r4->unk138.unk2 = gUnknown_082F326C[r4->unk138.unk1][0]; + r4->unk136.unk1 = 4; + r4->unk136.unk0 = 0; + r4->unk136.unk2 = gUnknown_082F326C[r4->unk136.unk1][0]; PlaySE(SE_M_STRENGTH); break; case 1: - r4->unk2C = gUnknown_082F326C[r4->unk138.unk1][r4->unk138.unk0]; + r4->unk2C = gUnknown_082F326C[r4->unk136.unk1][r4->unk136.unk0]; SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG3VOFS, -r4->unk2C); - ++r4->unk138.unk0; - if (r4->unk138.unk0 < r4->unk138.unk2) + ++r4->unk136.unk0; + if (r4->unk136.unk0 < r4->unk136.unk2) return 0; - if (r4->unk138.unk1 == 0) + if (r4->unk136.unk1 == 0) break; - --r4->unk138.unk1; - r4->unk138.unk2 = gUnknown_082F326C[r4->unk138.unk1][0]; - r4->unk138.unk0 = 0; + --r4->unk136.unk1; + r4->unk136.unk2 = gUnknown_082F326C[r4->unk136.unk1][0]; + r4->unk136.unk0 = 0; return 0; case 2: r4->unk2C = 0; @@ -2321,10 +2310,10 @@ static u32 sub_80232EC(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r case 3: if (!IsLinkTaskFinished()) return 0; - r4->unk138.unk0 = 0; - r4->unk138.unk1 = 0; - r4->unk138.unk2 = 0; - r4->unk138.unk3 = 0; + r4->unk136.unk0 = 0; + r4->unk136.unk1 = 0; + r4->unk136.unk2 = 0; + r4->unk136.unk3 = 0; r4->unk10 = 0; if (r4->unk8 == 0) sub_8022BEC(13, 1, NULL); @@ -2341,45 +2330,44 @@ static u32 sub_80232EC(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r void sub_802339C(struct BerryCrushGame *r4) { u8 r8 = 0; - u16 r3; - u16 *r2; u8 r7 = 0; + u16 r3 = 0; s32 r2_ = 0; - s32 r0; + struct BerryCrushGame_4E *r2; - for (r7 = 0; r7 < r4->unk9; ++r7) + for (r7 = 0; r7 < r4->unk9; r7++) { - r2 = gRecvCmds[r7]; - if ((r2[0] & 0xFF00) == RFUCMD_SEND_PACKET - && r2[1] == 2) + r2 = (struct BerryCrushGame_4E *)gRecvCmds[r7]; + if ((r2->unk0 & 0xFF00) == RFUCMD_SEND_PACKET + && r2->filler2 == 2) { - if ((u8)r2[2] & 4) + if (r2->unk4_2) { - r4->unk5C.unk02_3 |= gUnknown_082F325C[r7]; - r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] = 1; - ++r4->unk68.as_four_players.others[r7].unk4.as_hwords[3]; + r4->unk5A.unk02_3 |= gUnknown_082F325C[r7]; + r4->unk96[r7].unk1C = 1; + ++r4->unk96[r7].unk16; ++r8; - r3 = r4->unk28 - r4->unk68.as_four_players.others[r7].unk2; - if (r3 >= r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] - 1 - && r3 <= r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] + 1) + r3 = r4->unk28 - r4->unk96[r7].unkE; + if (r3 >= r4->unk96[r7].unk12 - 1 && r3 <= r4->unk96[r7].unk12 + 1) { - ++r4->unk68.as_four_players.others[r7].unk4.as_hwords[0]; - r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] = r3; - if (r4->unk68.as_four_players.others[r7].unk4.as_hwords[0] > r4->unk68.as_four_players.others[r7].unk4.as_hwords[2]) - r4->unk68.as_four_players.others[r7].unk4.as_hwords[2] = r4->unk68.as_four_players.others[r7].unk4.as_hwords[0]; + ++r4->unk96[r7].unk10; + r4->unk96[r7].unk12 = r3; + if (r4->unk96[r7].unk10 > r4->unk96[r7].unk14) + r4->unk96[r7].unk14 = r4->unk96[r7].unk10; } else { - r4->unk68.as_four_players.others[r7].unk4.as_hwords[0] = 0; - r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] = r3; + r4->unk96[r7].unk10 = 0; + r4->unk96[r7].unk12 = r3; } - r4->unk68.as_four_players.others[r7].unk2 = r4->unk28; - if (++r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][4] > 2) - r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][4] = 0; + r4->unk96[r7].unkE = r4->unk28; + ++r4->unk96[r7].unk1B; + if (r4->unk96[r7].unk1B > 2) + r4->unk96[r7].unk1B = 0; } else { - r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] = 0; + r4->unk96[r7].unk1C = 0; } } } @@ -2387,10 +2375,10 @@ void sub_802339C(struct BerryCrushGame *r4) { for (r7 = 0; r7 < r4->unk9; ++r7) { - if (r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] != 0) + if (r4->unk96[r7].unk1C != 0) { - r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] |= 2; - ++r4->unk68.as_four_players.others[r7].unk4.as_hwords[4]; + r4->unk96[r7].unk1C |= 2; + ++r4->unk96[r7].unk18; } } } @@ -2400,19 +2388,18 @@ void sub_802339C(struct BerryCrushGame *r4) r8 += gUnknown_082F3264[r8 - 1]; r4->unk34 += r8; r4->unk1A += r8; - r0 = r4->unk18; - r2_ = r4->unk1A; - if (r0 - r2_ > 0) + if (r4->unk18 - r4->unk1A > 0) { - r2_ = Q_24_8(r2_); + r2_ = (s32)r4->unk1A; + r2_ <<= 8; r2_ = MathUtil_Div32(r2_, r4->unk20); - r2_ = Q_24_8_TO_INT(r2_); - r4->unk24 = r2_; + r2_ >>= 8; + r4->unk24 = (u8)r2_; } else { r4->unk24 = 32; - r4->unk5C.unk02_0 = 1; + r4->unk5A.unk02_0 = 1; } } } @@ -2421,86 +2408,83 @@ void sub_8023558(struct BerryCrushGame *r3) { u8 r6 = 0; u16 r1 = 0; + u16 r2 = 0; u8 r4 = 0; for (r4 = 0; r4 < r3->unk9; ++r4) { - if (r3->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] != 0) + if (r3->unk96[r4].unk1C != 0) { ++r6; - r1 = r3->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][4] + 1; - if (r3->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] & 2) + r1 = r3->unk96[r4].unk1B + 1; + if (r3->unk96[r4].unk1C & 2) r1 |= 4; r1 <<= 3 * r4; - r3->unk5C.unk08 |= r1; + r3->unk5A.unk08 |= r1; } } - r3->unk5C.unk04 = r3->unk24; + r2 = (u16)r3->unk24; + r3->unk5A.unk04 = r2; if (r6 == 0) { - if (r3->unk138.unk3 != 0) - ++r3->unk138.unk0; + if (r3->unk136.unk3 != 0) + ++r3->unk136.unk0; + } + else if (r3->unk136.unk3 != 0) + { + if (r6 != r3->unk136.unk1) + { + r3->unk136.unk1 = r6 - 1; + r3->unk136.unk2 = gUnknown_082F3290[r6 - 1][0]; + } else - goto SET_UNK5F_0; + { + ++r3->unk136.unk0; + } } else { - if (r3->unk138.unk3 != 0) - { - if (r6 != r3->unk138.unk1) - { - r3->unk138.unk1 = r6 - 1; - r3->unk138.unk2 = gUnknown_082F3290[r6 - 1][0]; - } - else - { - ++r3->unk138.unk0; - } - } - else - { - r3->unk138.unk0 = 0; - r3->unk138.unk1 = r6 - 1; - r3->unk138.unk2 = gUnknown_082F3290[r6 - 1][0]; - r3->unk138.unk3 = 1; - } + r3->unk136.unk0 = 0; + r3->unk136.unk1 = r6 - 1; + r3->unk136.unk2 = gUnknown_082F3290[r6 - 1][0]; + r3->unk136.unk3 = 1; } - if (r3->unk138.unk3 != 0) + + if (r3->unk136.unk3 != 0) { - if (r3->unk138.unk0 >= r3->unk138.unk2) + if (r3->unk136.unk0 >= r3->unk136.unk2) { - r3->unk138.unk0 = 0; - r3->unk138.unk1 = 0; - r3->unk138.unk2 = 0; - r3->unk138.unk3 = 0; + r3->unk136.unk0 = 0; + r3->unk136.unk1 = 0; + r3->unk136.unk2 = 0; + r3->unk136.unk3 = 0; r1 = 0; } else { - r1 = gUnknown_082F3290[r3->unk138.unk1][r3->unk138.unk0 + 1]; + r1 = gUnknown_082F3290[r3->unk136.unk1][r3->unk136.unk0 + 1]; } - r3->unk5C.unk03 = r1; + r3->unk5A.unk03 = (u8)r1; } else { - SET_UNK5F_0: - r3->unk5C.unk03 = 0; + r3->unk5A.unk03 = 0; } - r3->unk5C.unk06 = r3->unk26; + r3->unk5A.unk06 = r3->unk26; } void sub_80236B8(struct BerryCrushGame *r5) { if (JOY_NEW(A_BUTTON)) - r5->unk5C.unk02_2 = 1; + r5->unk5A.unk02_2 = 1; if (JOY_HELD(A_BUTTON)) { - if (r5->unk68.as_four_players.others[r5->unk8].unk4.as_hwords[5] < r5->unk28) - ++r5->unk68.as_four_players.others[r5->unk8].unk4.as_hwords[5]; + if (r5->unk96[r5->unk8].unk1A < r5->unk28) + ++r5->unk96[r5->unk8].unk1A; } - if (r5->unk8 != 0 && r5->unk5C.unk02_2 == 0) + if (r5->unk8 != 0 && r5->unk5A.unk02_2 == 0) return; - r5->unk5C.unk00 = 2; + r5->unk5A.unk00 = 2; if (r5->unk28 % 30 == 0) { if (r5->unk2E > gUnknown_082F4444[r5->unk9 - 2]) @@ -2539,7 +2523,7 @@ void sub_80236B8(struct BerryCrushGame *r5) sub_8011AC8(); r5->unk10 = 0; } - else if (r5->unk5C.unk02_3 == 0) + else if (r5->unk5A.unk02_3 == 0) { sub_8011AC8(); r5->unk10 = 0; @@ -2548,53 +2532,47 @@ void sub_80236B8(struct BerryCrushGame *r5) } if (r5->unk28 >= 36000) - r5->unk5C.unk02_0 = 1; - r5->unk5C.unk02_1 = r5->unk25_4; - r5->unk5C.unk0A = r5->unk25_5; - memcpy(r5->unk40.unk2, &r5->unk5C, sizeof(r5->unk40.unk2)); - Rfu_SendPacket(r5->unk40.unk2); + r5->unk5A.unk02_0 = 1; + r5->unk5A.unk02_1 = r5->unk25_4; + r5->unk5A.unk0A = r5->unk25_5; + memcpy(r5->unk40, &r5->unk5A, sizeof(r5->unk40)); + Rfu_SendPacket(r5->unk40); } void sub_802385C(struct BerryCrushGame *r5) { - struct BerryCrushGame_4E *r4_; -#ifndef NONMATCHING - register u32 r4 asm("r4"); - register u32 r0 asm("r0"); + u8 r4 = 0; + struct BerryCrushGame_4E *r4_ = NULL; - for (r4 = 0; r4 < r5->unk9; r4 = (u8)r0) - { - r5->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] = 0; - r0 = r4 + 1; - } -#else - u8 r4; - - for (r4 = 0; r4 < r5->unk9; ++r4) - r5->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] = 0; -#endif - if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET - || gRecvCmds[0][1] != 2) + for (r4 = 0; r4 < r5->unk9; r4++) + r5->unk96[r4].unk1C = 0; + if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET) { r5->unk25_2 = 0; + return; } - else + if (gRecvCmds[0][1] != 2) { - r4_ = &r5->unk40.unkE; - memcpy(r4_, gRecvCmds, sizeof(struct BerryCrushGame_4E)); - r5->unk2A = r4_->unk6; - r5->unk2C = r4_->unk5; - r5->unk28 = r4_->unk8; - sub_80216E0(r5, &r5->unk138); - if (r4_->unk4_0) - r5->unk25_3 = 1; + r5->unk25_2 = 0; + return; + } + + memcpy(r5->unk4C, gRecvCmds[0], 14); + r4_ = (struct BerryCrushGame_4E *)&r5->unk4C; + r5->unk2A = r4_->unk6; + r5->unk2C = (s16)r4_->unk5; + r5->unk28 = r4_->unk8; + sub_80216E0(r5, &(r5->unk136)); + if (r4_->unk4_0) + { + r5->unk25_3 = 1; } } static u32 sub_80238F0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1) { - memset(&r4->unk5C, 0, sizeof(r4->unk5C)); - memset(&r4->unk40.unkE, 0, sizeof(r4->unk40.unkE)); + memset(&r4->unk5A, 0, sizeof(r4->unk5A)); + memset(&r4->unk4C, 0, sizeof(r4->unk4C)); sub_802385C(r4); SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); @@ -2626,8 +2604,8 @@ static u32 sub_80238F0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 static u32 sub_8023998(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1) { - memset(&r4->unk5C, 0, sizeof(r4->unk5C)); - memset(&r4->unk40.unkE, 0, sizeof(r4->unk40.unkE)); + memset(&r4->unk5A, 0, sizeof(r4->unk5A)); + memset(&r4->unk4C, 0, sizeof(r4->unk4C)); sub_802385C(r4); SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); @@ -2662,28 +2640,28 @@ static u32 sub_8023A30(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 r4->unk12 = 8; PlaySE(SE_M_STRENGTH); BlendPalettes(0xFFFFFFFF, 8, RGB(31, 31, 0)); - r4->unk138.unk0 = 2; + r4->unk136.unk0 = 2; break; case 1: - if (--r4->unk138.unk0 != 255) + if (--r4->unk136.unk0 != 255) return 0; BlendPalettes(0xFFFFFFFF, 0, RGB(31, 31, 0)); - r4->unk138.unk1 = 4; - r4->unk138.unk0 = 0; - r4->unk138.unk2 = gUnknown_082F326C[r4->unk138.unk1][0]; + r4->unk136.unk1 = 4; + r4->unk136.unk0 = 0; + r4->unk136.unk2 = gUnknown_082F326C[r4->unk136.unk1][0]; break; case 2: - r4->unk2C = gUnknown_082F326C[r4->unk138.unk1][r4->unk138.unk0]; + r4->unk2C = gUnknown_082F326C[r4->unk136.unk1][r4->unk136.unk0]; SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG3VOFS, -r4->unk2C); - if (++r4->unk138.unk0 < r4->unk138.unk2) + if (++r4->unk136.unk0 < r4->unk136.unk2) return 0; - if (r4->unk138.unk1 != 0) + if (r4->unk136.unk1 != 0) { - --r4->unk138.unk1; - r4->unk138.unk2 = gUnknown_082F326C[r4->unk138.unk1][0]; - r4->unk138.unk0 = 0; + --r4->unk136.unk1; + r4->unk136.unk2 = gUnknown_082F326C[r4->unk136.unk1][0]; + r4->unk136.unk0 = 0; return 0; } break; @@ -2694,7 +2672,7 @@ static u32 sub_8023A30(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 SetGpuReg(REG_OFFSET_BG3VOFS, 0); break; case 4: - if (!sub_80218D4(r4, &r4->unk138)) + if (!sub_80218D4(r4, &r4->unk136)) return 0; Rfu_SetLinkStandbyCallback(); r4->unk10 = 0; @@ -2719,16 +2697,16 @@ static u32 sub_8023BC0(struct BerryCrushGame *r5, u8 *r6) r5->unk12 = 9; PlaySE(SE_FAILURE); BlendPalettes(0xFFFFFFFF, 8, RGB(31, 0, 0)); - r5->unk138.unk0 = 4; + r5->unk136.unk0 = 4; break; case 1: - if (--r5->unk138.unk0 != 255) + if (--r5->unk136.unk0 != 255) return 0; BlendPalettes(0xFFFFFFFF, 0, RGB(31, 0, 0)); - r5->unk138.unk0 = 0; + r5->unk136.unk0 = 0; break; case 2: - if (!sub_80218D4(r5, &r5->unk138)) + if (!sub_80218D4(r5, &r5->unk136)) return 0; Rfu_SetLinkStandbyCallback(); r5->unk10 = 0; @@ -2753,19 +2731,19 @@ static u32 sub_8023BC0(struct BerryCrushGame *r5, u8 *r6) static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1) { - u8 r8, r4_; + u8 r8, r4_, r3; s32 r2; s32 r4; - u8 r6; // ??? + u16 r6; switch (r7->unkC) { case 0: - memset(r7->unk40.unk2, 0, 2 * sizeof(u16)); - if (r7->unk68.as_four_players.others[r7->unk8].unk4.as_hwords[5] > r7->unk28) - r7->unk68.as_four_players.others[r7->unk8].unk4.as_hwords[5] = r7->unk28; - r7->unk40.unk2[0] = r7->unk68.as_four_players.others[r7->unk8].unk4.as_hwords[5]; - SendBlock(0, r7->unk40.unk2, 2); + memset(r7->unk40, 0, sizeof(r7->unk40)); + if (r7->unk96[r7->unk8].unk1A > r7->unk28) + r7->unk96[r7->unk8].unk1A = r7->unk28; + r7->unk40[0] = r7->unk96[r7->unk8].unk1A; + SendBlock(0, r7->unk40, 2); break; case 1: if (!IsLinkTaskFinished()) @@ -2776,9 +2754,9 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 if (GetBlockReceivedStatus() != gUnknown_082F4448[r7->unk9 - 2]) return 0; for (r8 = 0; r8 < r7->unk9; ++r8) - r7->unk68.as_four_players.others[r8].unk4.as_hwords[5] = gBlockRecvBuffer[r8][0]; + r7->unk96[r8].unk1A = gBlockRecvBuffer[r8][0]; r7->unk10 = 0; - r7->unk40.unk2[0] = 0; + r7->unk40[0] = 0; ResetBlockReceivedFlags(); if (r7->unk8 == 0) r7->unkC = 3; @@ -2786,38 +2764,34 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 r7->unkC = 6; return 0; case 3: - memset( - &r7->unk68, - 0, - sizeof(struct BerryCrushGame_68_x_SubStruct) - ); - r7->unk68.as_four_players.unk00.unk04 = r7->unk28; - r7->unk68.as_four_players.unk00.unk06 = r7->unk18 / (r7->unk28 / 60); + memset(&r7->unk66, 0, sizeof(struct BerryCrushGame_66)); + r7->unk66.unk04 = r7->unk28; + r7->unk66.unk06 = r7->unk18 / (r7->unk28 / 60); r2 = MathUtil_Mul32(Q_24_8(r7->unk30), Q_24_8(50)); r2 = MathUtil_Div32(r2, Q_24_8(r7->unk32)) + Q_24_8(50); r2 = Q_24_8_TO_INT(r2); - r7->unk68.as_four_players.unk00.unk08 = r2 & 0x7F; + r7->unk66.unk08 = r2 & 0x7F; r2 = Q_24_8(r2); r2 = MathUtil_Div32(r2, Q_24_8(100)); r4 = Q_24_8(r7->unk1C * r7->unk9); r4 = MathUtil_Mul32(r4, r2); - r7->unk68.as_four_players.unk00.unk00 = r4 >> 8; - r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][7] = Random() % 3; - for (r6 = 0, r8 = 0; r8 < r7->unk9; ++r8) + r7->unk66.unk00 = r4 >> 8; + r7->unk66.filler20[0][7] = Random() % 3; + for (r8 = 0; r8 < r7->unk9; ++r8) { - r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][r8] = r8; - r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[1][r8] = r8; - r7->unk68.as_four_players.unk00.unk0C[0][r8] = r7->unk68.as_four_players.others[r8].unk4.as_hwords[3]; - r7->unk68.as_four_players.unk00.unk0A += r7->unk68.as_four_players.unk00.unk0C[0][r8]; - switch (r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][7]) + r7->unk66.filler20[0][r8] = r8; + r7->unk66.filler20[1][r8] = r8; + r7->unk66.unk0C[0][r8] = r7->unk96[r8].unk16; + r7->unk66.unk0A += r7->unk66.unk0C[0][r8]; + switch (r7->unk66.filler20[0][7]) { case 0: - if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[3] != 0) + if (r7->unk96[r8].unk16 != 0) { - r2 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[2]; + r2 = r7->unk96[r8].unk14; r2 = Q_24_8(r2); r2 = MathUtil_Mul32(r2, Q_24_8(100)); - r4 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[3]; + r4 = r7->unk96[r8].unk16; r4 = Q_24_8(r4); r4 = MathUtil_Div32(r2, r4); } @@ -2827,12 +2801,12 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 } break; case 1: - if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[3] != 0) + if (r7->unk96[r8].unk16 != 0) { - r2 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[4]; + r2 = r7->unk96[r8].unk18; r2 = Q_24_8(r2); r2 = MathUtil_Mul32(r2, Q_24_8(100)); - r4 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[3]; + r4 = r7->unk96[r8].unk16; r4 = Q_24_8(r4); r4 = MathUtil_Div32(r2, r4); } @@ -2842,17 +2816,17 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 } break; case 2: - if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[3] == 0) + if (r7->unk96[r8].unk16 == 0) { r4 = 0; } - else if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[5] >= r7->unk28) + else if (r7->unk96[r8].unk1A >= r7->unk28) { r4 = 0x6400; } else { - r2 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[5]; + r2 = r7->unk96[r8].unk1A; r2 = Q_24_8(r2); r2 = MathUtil_Mul32(r2, Q_24_8(100)); r4 = r7->unk28; @@ -2862,51 +2836,35 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 break; } r4 >>= 4; - r7->unk68.as_four_players.unk00.unk0C[1][r8] = r4; + r7->unk66.unk0C[1][r8] = r4; } break; case 4: - for (r6 = 0, r8 = 0; r8 < r7->unk9 - 1; ++r8) + for (r8 = 0; r8 < r7->unk9 - 1; ++r8) { for (r4_ = r7->unk9 - 1; r4_ > r8; --r4_) { - u16 r0; - u8 r3; - u16 *sp00 = r7->unk68.as_four_players.unk00.unk0C[0]; - u8 *sp04 = r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0]; - u8 *r10 = r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[1]; - u16 *r9 = r7->unk68.as_four_players.unk00.unk0C[1]; - s32 r12 = r4_ - 1; - u16 *p1 = sp00 + r12; // these have to be here - u16 *p2 = sp00 + r4_; // to swap operands. macro? - - if (*p1 < *p2) + if (r7->unk66.unk0C[0][r4_ - 1] < r7->unk66.unk0C[0][r4_]) { - r0 = sp00[r4_]; - sp00[r4_] = sp00[r12]; - sp00[r12] = r0; - r3 = sp04[r4_]; - sp04[r4_] = sp04[r12]; - sp04[r12] = r3; + r6 = r7->unk66.unk0C[0][r4_]; + r7->unk66.unk0C[0][r4_] = r7->unk66.unk0C[0][r4_ - 1]; + r7->unk66.unk0C[0][r4_ - 1] = r6; + r3 = r7->unk66.filler20[0][r4_]; + r7->unk66.filler20[0][r4_] = r7->unk66.filler20[0][r4_ - 1]; + r7->unk66.filler20[0][r4_ - 1] = r3; } - p1 = r9 + r12; - p2 = r9 + r4_; - if (*p1 < *p2) + if (r7->unk66.unk0C[1][r4_ - 1] < r7->unk66.unk0C[1][r4_]) { - r0 = r9[r4_]; - r9[r4_] = r9[r12]; - r9[r12] = r0; - r3 = r10[r4_]; - r10[r4_] = r10[r12]; - r10[r12] = r3; + r6 = r7->unk66.unk0C[1][r4_]; + r7->unk66.unk0C[1][r4_] = r7->unk66.unk0C[1][r4_ - 1]; + r7->unk66.unk0C[1][r4_ - 1] = r6; + r3 = r7->unk66.filler20[1][r4_]; + r7->unk66.filler20[1][r4_] = r7->unk66.filler20[1][r4_ - 1]; + r7->unk66.filler20[1][r4_ - 1] = r3; } } } - SendBlock( - 0, - &r7->unk68, - sizeof(struct BerryCrushGame_68_x_SubStruct) - ); + SendBlock(0,&r7->unk66, sizeof(struct BerryCrushGame_66)); break; case 5: if (!IsLinkTaskFinished()) @@ -2916,16 +2874,8 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 case 6: if (GetBlockReceivedStatus() != 1) return 0; - memset( - &r7->unk68, - 0, - sizeof(struct BerryCrushGame_68_x_SubStruct) - ); - memcpy( - &r7->unk68, - gBlockRecvBuffer, - sizeof(struct BerryCrushGame_68_x_SubStruct) - ); + memset(&r7->unk66, 0, sizeof(struct BerryCrushGame_66)); + memcpy(&r7->unk66, gBlockRecvBuffer, sizeof(struct BerryCrushGame_66)); ResetBlockReceivedFlags(); r7->unk10 = 0; break; @@ -2946,17 +2896,17 @@ static u32 sub_8024048(struct BerryCrushGame *r5, u8 *r6) switch (r5->unkC) { case 0: - if (!sub_8022070(r5, &r5->unk138)) + if (!sub_8022070(r5, &r5->unk136)) return 0; break; case 1: CopyBgTilemapBufferToVram(0); - r5->unk138.unk0 = 30; + r5->unk136.unk0 = 30; break; case 2: - if (r5->unk138.unk0 != 0) + if (r5->unk136.unk0 != 0) { - --r5->unk138.unk0; + --r5->unk136.unk0; return 0; } if (!(JOY_NEW(A_BUTTON))) @@ -2991,7 +2941,7 @@ static u32 sub_8024134(struct BerryCrushGame *r5, u8 *r4) { case 0: if (r5->unk28 >= 36000) - sub_8022554(&r5->unk138); + sub_8022554(&r5->unk136); sub_8024644(r4, 8, 0, 0, 1); r5->unkE = 19; sub_8022BEC(3, 1, NULL); @@ -3024,12 +2974,7 @@ static u32 sub_8024134(struct BerryCrushGame *r5, u8 *r4) static u32 sub_8024228(struct BerryCrushGame *r5, u8 *r6) { - s32 r4; -#ifndef NONMATCHING - register s32 r0 asm("r0"); -#else - s32 r0; -#endif + s8 r4; switch (r5->unkC) { @@ -3037,16 +2982,16 @@ static u32 sub_8024228(struct BerryCrushGame *r5, u8 *r6) sub_8024644(r6, 4, 0, 0, 1); r5->unkE = 20; sub_8022BEC(3, 1, NULL); - r0 = 0; - r5->unkC = r0; // dunno what it's doing because it's already in case 0 + r5->unkC = 0; // dunno what it's doing because it's already in case 0 return 0; case 1: DisplayYesNoMenuDefaultYes(); break; case 2: - if ((r4 = Menu_ProcessInputNoWrapClearOnChoose()) != -2) + r4 = Menu_ProcessInputNoWrapClearOnChoose(); + if (r4 != -2) { - memset(r5->unk40.unk2, 0, sizeof(r5->unk40.unk2)); + memset(r5->unk40, 0, sizeof(r5->unk40)); if (r4 == 0) { if (HasAtLeastOneBerry()) @@ -3082,9 +3027,9 @@ static u32 sub_80242E0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 case 1: if (!IsLinkTaskFinished()) return 0; - r4->unk40.unk2[0] = r4->unk14; - r4->unk40.unkE.unk0 = 0; - SendBlock(0, r4->unk40.unk2, sizeof(u16)); + r4->unk40[0] = r4->unk14; + r4->unk4C[0] = 0; + SendBlock(0, r4->unk40, sizeof(u16)); break; case 2: if (!IsLinkTaskFinished()) @@ -3095,14 +3040,14 @@ static u32 sub_80242E0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 if (GetBlockReceivedStatus() != gUnknown_082F4448[r4->unk9 - 2]) return 0; for (; r5 < r4->unk9; ++r5) - r4->unk40.unkE.unk0 += gBlockRecvBuffer[r5][0]; - if (r4->unk40.unkE.unk0 != 0) + r4->unk4C[0] += gBlockRecvBuffer[r5][0]; + if (r4->unk4C != 0) sub_8022BEC(23, 1, NULL); else sub_8022BEC(22, 1, NULL); ResetBlockReceivedFlags(); - r4->unk40.unk2[0] = 0; - r4->unk40.unkE.unk0 = 0; + r4->unk40[0] = 0; + r4->unk4C[0] = 0; r4->unk10 = 0; r4->unkC = 0; return 0; @@ -3156,11 +3101,11 @@ static u32 sub_8024444(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1 case 1: if (IsTextPrinterActive(0)) return 0; - r5->unk138.unk0 = 120; + r5->unk136.unk0 = 120; break; case 2: - if (r5->unk138.unk0 != 0) - --r5->unk138.unk0; + if (r5->unk136.unk0 != 0) + --r5->unk136.unk0; else { sub_8022BEC(24, 1, NULL); @@ -3202,11 +3147,6 @@ static u32 sub_8024568(__attribute__((unused)) struct BerryCrushGame *r0, __attr return 0; } -#if MODERN -// TODO remove this as soon as the code below is understood -// add a UBFIX if required (code buggy?) -__attribute__((optimize("no-aggressive-loop-optimizations"))) -#endif void sub_8024578(struct BerryCrushGame *r4) { u8 r5 = 0; @@ -3233,18 +3173,18 @@ void sub_8024578(struct BerryCrushGame *r4) r4->unk32 = -1; r4->unk30 = 0; r4->unk34 = 0; - for (; r5 < 5; ++r5) // why is it 5 instead of 4? fillerBC isn't sufficient for one player + for (; r5 < 5; ++r5) { - r4->unk68.as_four_players.others[r5].unk0 = -1; - r4->unk68.as_four_players.others[r5].unk2 = 0; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[0] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[1] = 1; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[2] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[3] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[4] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_hwords[5] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_2d_bytes[1][4] = 0; - r4->unk68.as_four_players.others[r5].unk4.as_2d_bytes[1][5] = 0; + r4->unk96[r5].unkC = -1; + r4->unk96[r5].unkE = 0; + r4->unk96[r5].unk10 = 0; + r4->unk96[r5].unk12 = 1; + r4->unk96[r5].unk14 = 0; + r4->unk96[r5].unk16 = 0; + r4->unk96[r5].unk18 = 0; + r4->unk96[r5].unk1A = 0; + r4->unk96[r5].unk1B = 0; + r4->unk96[r5].unk1C = 0; } } From 3918542b3e10a441344fb70ac7411b3dbcc55ce3 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 20 Dec 2020 21:31:36 -0300 Subject: [PATCH 093/116] Corrections to Final Gambit's effect's battle script -Restored the call to resultmessage -Corrected its behavior against Endured, Focus Banded/Sashed and Sturdy foes --- data/battle_scripts_1.s | 3 +++ 1 file changed, 3 insertions(+) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 8065073fc..0856324e2 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1082,6 +1082,9 @@ BattleScript_EffectFinalGambit: waitstate healthbarupdate BS_TARGET datahpupdate BS_TARGET + resultmessage + waitmessage 0x40 + dmgtocurrattackerhp healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER seteffectwithchance From 3203bac053553b5d1e129b6242fc60df3ca2996f Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Sun, 20 Dec 2020 23:15:35 -0500 Subject: [PATCH 094/116] fix struct --- src/berry_crush.c | 588 +++++++++++++++++++++++----------------------- 1 file changed, 294 insertions(+), 294 deletions(-) diff --git a/src/berry_crush.c b/src/berry_crush.c index bd6a12ba5..3a43b60ab 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -80,7 +80,7 @@ struct BerryCrushGame_40 s16 unkE; }; -struct BerryCrushGame_5A +struct BerryCrushGame_5C { u16 unk00; u8 unk02_0:1; @@ -94,7 +94,7 @@ struct BerryCrushGame_5A u16 unk0A; }; -struct BerryCrushGame_66 +struct BerryCrushGame_68 { u32 unk00; u16 unk04; @@ -105,7 +105,7 @@ struct BerryCrushGame_66 u8 filler20[2][8]; }; -struct BerryCrushGame_136_C +struct BerryCrushGame_138_C { u8 unk0; u8 unk1; @@ -116,7 +116,7 @@ struct BerryCrushGame_136_C s16 unkA; }; -struct BerryCrushGame_136 +struct BerryCrushGame_138 { u8 unk0; u8 unk1; @@ -125,7 +125,7 @@ struct BerryCrushGame_136 s16 unk4; s16 unk6; s16 unk8; - const struct BerryCrushGame_136_C *unkC[5]; + const struct BerryCrushGame_138_C *unkC[5]; struct Sprite *unk20; struct Sprite *unk24[5]; struct Sprite *unk38[5]; @@ -173,13 +173,13 @@ struct BerryCrushGame s16 unk30; s16 unk32; s16 unk34; - u8 unk36[0xA]; - u16 unk40[6]; - u16 unk4C[7]; - struct BerryCrushGame_5A unk5A; - struct BerryCrushGame_66 unk66; - struct BerryCrushGame_Player unk96[5]; - struct BerryCrushGame_136 unk136; + u8 unk36[0xC]; + u16 unk42[6]; + u16 unk4E[7]; + struct BerryCrushGame_5C unk5C; + struct BerryCrushGame_68 unk68; + struct BerryCrushGame_Player unk98[5]; + struct BerryCrushGame_138 unk138; }; static void VBlankCB(void); @@ -194,9 +194,9 @@ void sub_8022600(struct BerryCrushGame *); void sub_80226D0(struct BerryCrushGame *); void sub_8022730(struct BerryCrushGame *); void sub_8022960(struct BerryCrushGame *); -void sub_8022524(struct BerryCrushGame_136 *, u16); +void sub_8022524(struct BerryCrushGame_138 *, u16); void sub_8022B28(struct Sprite *); -void sub_8022554(struct BerryCrushGame_136 *r0); +void sub_8022554(struct BerryCrushGame_138 *r0); void sub_8024578(struct BerryCrushGame *); void sub_8024644(u8 *, u32, u32, u32, u32); static void sub_8022A20(struct Sprite *sprite); @@ -446,7 +446,7 @@ static const u8 gUnknown_082F417C[][5] = {0, 1, 3, 2, 4}, }; -static const struct BerryCrushGame_136_C gUnknown_082F4190[] = +static const struct BerryCrushGame_138_C gUnknown_082F4190[] = { { .unk0 = 0, @@ -881,7 +881,7 @@ static void GetBerryFromBag(void) else RemoveBagItem(gSpecialVar_ItemId, 1); - gBerryCrushGame->unk96[gBerryCrushGame->unk8].unkC = gSpecialVar_ItemId - FIRST_BERRY_INDEX; + gBerryCrushGame->unk98[gBerryCrushGame->unk8].unkC = gSpecialVar_ItemId - FIRST_BERRY_INDEX; gBerryCrushGame->unkE = 1; gBerryCrushGame->unkF = 9; BerryCrush_SetPaletteFadeParams(gBerryCrushGame->unk36, 0, -1, 0, 16, 0, 0); @@ -910,10 +910,10 @@ static void BerryCrush_SaveResults(void) { u32 var0, var1; - var0 = gBerryCrushGame->unk66.unk04; + var0 = gBerryCrushGame->unk68.unk04; var0 = Q_24_8(var0); var0 = MathUtil_Div32(var0, Q_24_8(60)); - var1 = gBerryCrushGame->unk66.unk0A; + var1 = gBerryCrushGame->unk68.unk0A; var1 = Q_24_8(var1); var1 = MathUtil_Div32(var1, var0) & 0xFFFF; gBerryCrushGame->unk16 = var1; @@ -949,7 +949,7 @@ static void BerryCrush_SaveResults(void) break; } - gBerryCrushGame->unk1C = gBerryCrushGame->unk66.unk00; + gBerryCrushGame->unk1C = gBerryCrushGame->unk68.unk00; if (GiveBerryPowder(gBerryCrushGame->unk1C)) return; @@ -984,11 +984,11 @@ static void ParseName_Options(struct BerryCrushGame *arg0) u8 i = 0; for (; i < arg0->unk9; i++) - StringCopy(arg0->unk96[i].unk0, gLinkPlayers[i].name); + StringCopy(arg0->unk98[i].unk0, gLinkPlayers[i].name); for (; i < 5; i++) { - memset(arg0->unk96[i].unk0, 1, PLAYER_NAME_LENGTH); - arg0->unk96[i].unk0[PLAYER_NAME_LENGTH] = EOS; + memset(arg0->unk98[i].unk0, 1, PLAYER_NAME_LENGTH); + arg0->unk98[i].unk0[PLAYER_NAME_LENGTH] = EOS; } switch (gSaveBlock2Ptr->optionsTextSpeed) @@ -1034,9 +1034,9 @@ s32 InitBerryCrushDisplay(void) case 3: ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, gUnknown_082F32C8, ARRAY_COUNT(gUnknown_082F32C8)); - SetBgTilemapBuffer(1, game->unk136.unk88[0]); - SetBgTilemapBuffer(2, game->unk136.unk88[2]); - SetBgTilemapBuffer(3, game->unk136.unk88[3]); + SetBgTilemapBuffer(1, game->unk138.unk88[0]); + SetBgTilemapBuffer(2, game->unk138.unk88[2]); + SetBgTilemapBuffer(3, game->unk138.unk88[3]); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(2, 0, 0); @@ -1170,7 +1170,7 @@ static int sub_8021450(struct BerryCrushGame *arg0) SetGpuReg(REG_OFFSET_BG1VOFS, -gSpriteCoordOffsetY); if (arg0->unk12 == 7) { - sub_8022524(&arg0->unk136, arg0->unk28); + sub_8022524(&arg0->unk138, arg0->unk28); } return 0; @@ -1184,7 +1184,7 @@ void sub_8021488(struct BerryCrushGame *arg0) gSpriteCoordOffsetY = -104; } -void sub_80214A8(struct BerryCrushGame *arg0, struct BerryCrushGame_136 *arg1) +void sub_80214A8(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) { u8 i; u8 spriteId; @@ -1200,7 +1200,7 @@ void sub_80214A8(struct BerryCrushGame *arg0, struct BerryCrushGame_136 *arg1) &gUnknown_082F436C, gUnknown_082F41E8[i], gUnknown_082F41E8[i], - arg0->unk96[i].unkC + 133); + arg0->unk98[i].unkC + 133); arg1->unk38[i] = &gSprites[spriteId]; arg1->unk38[i]->oam.priority = 3; arg1->unk38[i]->affineAnimPaused = TRUE; @@ -1259,7 +1259,7 @@ void sub_8021608(struct Sprite *sprite) } } -void sub_80216A8(struct BerryCrushGame *arg0, __attribute__((unused)) struct BerryCrushGame_136 *arg1) +void sub_80216A8(struct BerryCrushGame *arg0, __attribute__((unused)) struct BerryCrushGame_138 *arg1) { u8 i; for (i = 0; i < arg0->unk9; i++) @@ -1269,7 +1269,7 @@ void sub_80216A8(struct BerryCrushGame *arg0, __attribute__((unused)) struct Ber } } -void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_136 *arg1) +void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) { u8 sp4; struct BerryCrushGame_4E *var4E; @@ -1277,7 +1277,7 @@ void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_136 *arg1) u16 var, var2; sp4 = 0; - var4E = (struct BerryCrushGame_4E *)arg0->unk40; + var4E = (struct BerryCrushGame_4E *)arg0->unk4E; for (i = 0; i < arg0->unk9; i++) { var = var4E->unkA >> (i * 3); @@ -1341,7 +1341,7 @@ void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_136 *arg1) } } -bool32 sub_80218D4(struct BerryCrushGame *arg0, struct BerryCrushGame_136 *arg1) +bool32 sub_80218D4(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) { u8 i; @@ -1363,7 +1363,7 @@ bool32 sub_80218D4(struct BerryCrushGame *arg0, struct BerryCrushGame_136 *arg1) return TRUE; } -void sub_8021944(struct BerryCrushGame_136 *arg0, u16 arg1) +void sub_8021944(struct BerryCrushGame_138 *arg0, u16 arg1) { u8 i = 0; u32 r7 = 0; @@ -1388,7 +1388,7 @@ void sub_80219C8(u8 windowId, u8 left, u8 colorId, const u8 *string) AddTextPrinterParameterized3(windowId, 2, left, 0, sBerryCrushTextColorTable[colorId], 0, string); } -void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) +void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) //////// { u8 r8; u8 sp1C = 0; @@ -1396,7 +1396,7 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) u8 r2; s32 r3; u8 r7; - struct BerryCrushGame_66 * sp24 = &sp0C->unk66; + struct BerryCrushGame_68 * sp24 = &sp0C->unk68; u32 xOffset; s32 r6; @@ -1438,7 +1438,7 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) case 2: sp1C = r8; sp20 = r8; - r2 = sp0C->unk96[r8].unkC; + r2 = sp0C->unk98[r8].unkC; if (r2 >= LAST_BERRY_INDEX - FIRST_BERRY_INDEX + 2) r2 = 0; StringCopy(gStringVar1, gBerries[r2].name); @@ -1446,15 +1446,15 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) break; } xOffset = GetStringRightAlignXOffset(2, gStringVar4, sp14 - 4); - AddTextPrinterParameterized3(sp0C->unk136.unk82, 2, xOffset, r6, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, xOffset, r6, sBerryCrushTextColorTable[0], 0, gStringVar4); if (sp1C == sp0C->unk8) StringCopy(gStringVar3, gText_1DotBlueF700); else StringCopy(gStringVar3, gText_1DotF700); gStringVar3[0] = sp20 + CHAR_1; - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sp0C->unk96[sp1C].unk0); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sp0C->unk98[sp1C].unk0); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gStringVar3); - AddTextPrinterParameterized3(sp0C->unk136.unk82, 2, 4, r6, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, 4, r6, sBerryCrushTextColorTable[0], 0, gStringVar4); } } @@ -1463,28 +1463,28 @@ void sub_8021D34(struct BerryCrushGame *r8) u8 r10 = 0; u8 r6 = 0; u32 sp0C = 0; - struct BerryCrushGame_66 *sp10 = &r8->unk66; - u8 r7 = GetWindowAttribute(r8->unk136.unk82, WINDOW_HEIGHT) * 8 - 42; + struct BerryCrushGame_68 *sp10 = &r8->unk68; + u8 r7 = GetWindowAttribute(r8->unk138.unk82, WINDOW_HEIGHT) * 8 - 42; - sub_8021944(&r8->unk136, sp10->unk04); - AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_TimeColon); + sub_8021944(&r8->unk138, sp10->unk04); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_TimeColon); r6 = 176 - (u8)GetStringWidth(2, gText_SpaceSec, -1); - AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceSec); - ConvertIntToDecimalStringN(gStringVar1, r8->unk136.unk6, STR_CONV_MODE_LEADING_ZEROS, 2); - ConvertIntToDecimalStringN(gStringVar2, r8->unk136.unk8, STR_CONV_MODE_LEADING_ZEROS, 2); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceSec); + ConvertIntToDecimalStringN(gStringVar1, r8->unk138.unk6, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar2, r8->unk138.unk8, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar4, gText_XDotY2); r6 -= GetStringWidth(2, gStringVar4, -1); - AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); r6 -= GetStringWidth(2, gText_SpaceMin, -1); - AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceMin); - ConvertIntToDecimalStringN(gStringVar1, r8->unk136.unk4, STR_CONV_MODE_LEADING_ZEROS, 1); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceMin); + ConvertIntToDecimalStringN(gStringVar1, r8->unk138.unk4, STR_CONV_MODE_LEADING_ZEROS, 1); StringExpandPlaceholders(gStringVar4, gText_StrVar1); r6 -= GetStringWidth(2, gStringVar4, -1); - AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); r7 += 14; - AddTextPrinterParameterized3(r8->unk136.unk82, 2, 0, r7, sBerryCrushTextColorTable[0], 0, gText_PressingSpeed); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, 0, r7, sBerryCrushTextColorTable[0], 0, gText_PressingSpeed); r6 = 176 - (u8)GetStringWidth(2, gText_TimesPerSec, -1); - AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_TimesPerSec); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_TimesPerSec); for (; r10 < 8; ++r10) if (((u8)r8->unk16 >> (7 - r10)) & 1) sp0C += *(r10 + sPressingSpeedConversionTable); // It's accessed in a different way here for unknown reason @@ -1493,18 +1493,18 @@ void sub_8021D34(struct BerryCrushGame *r8) StringExpandPlaceholders(gStringVar4, gText_XDotY3); r6 -= GetStringWidth(2, gStringVar4, -1); if (r8->unk25_1) - AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[5], 0, gStringVar4); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[5], 0, gStringVar4); else - AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); r7 += 14; - AddTextPrinterParameterized3(r8->unk136.unk82, 2, 0, r7, sBerryCrushTextColorTable[0], 0, gText_Silkiness); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, 0, r7, sBerryCrushTextColorTable[0], 0, gText_Silkiness); ConvertIntToDecimalStringN(gStringVar1, sp10->unk08, STR_CONV_MODE_RIGHT_ALIGN, 3); StringExpandPlaceholders(gStringVar4, gText_Var1Percent); r6 = 176 - (u8)GetStringWidth(2, gStringVar4, -1); - AddTextPrinterParameterized3(r8->unk136.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); + AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4); } -bool32 sub_8022070(struct BerryCrushGame *r4, struct BerryCrushGame_136 *r6) +bool32 sub_8022070(struct BerryCrushGame *r4, struct BerryCrushGame_138 *r6) { u8 r5; struct WindowTemplate template; @@ -1539,7 +1539,7 @@ bool32 sub_8022070(struct BerryCrushGame *r4, struct BerryCrushGame_136 *r6) r6->unk80 = 5; return FALSE; case 12: - sub_80219C8(r6->unk82, 20, 4, gUnknown_082F43B4[r4->unk66.filler20[0][7] + 3]); + sub_80219C8(r6->unk82, 20, 4, gUnknown_082F43B4[r4->unk68.filler20[0][7] + 3]); sub_8021A28(r4, 1, 0xA0, 8 * gUnknown_082F3344[0][r5]); r6->unk80 = 5; return FALSE; @@ -1563,8 +1563,8 @@ bool32 sub_8022070(struct BerryCrushGame *r4, struct BerryCrushGame_136 *r6) void sub_802222C(struct BerryCrushGame *r4) { - ClearStdWindowAndFrameToTransparent(r4->unk136.unk82, 1); - RemoveWindow(r4->unk136.unk82); + ClearStdWindowAndFrameToTransparent(r4->unk138.unk82, 1); + RemoveWindow(r4->unk138.unk82); sub_8022600(r4); } @@ -1682,7 +1682,7 @@ void ShowBerryCrushRankings(void) gTasks[taskId].data[5] = gSaveBlock2Ptr->berryCrush.berryCrushResults[3]; } -void sub_8022524(struct BerryCrushGame_136 *r4, u16 r1) +void sub_8022524(struct BerryCrushGame_138 *r4, u16 r1) { sub_8021944(r4, r1); DigitObjUtil_PrintNumOn(0, r4->unk4); @@ -1690,7 +1690,7 @@ void sub_8022524(struct BerryCrushGame_136 *r4, u16 r1) DigitObjUtil_PrintNumOn(2, r4->unk8); } -void sub_8022554(struct BerryCrushGame_136 *r0) +void sub_8022554(struct BerryCrushGame_138 *r0) { r0->unk78[0]->invisible = TRUE; r0->unk78[1]->invisible = TRUE; @@ -1705,10 +1705,10 @@ void sub_8022588(struct BerryCrushGame *r5) for (r6 = 0; r6 < r5->unk9; ++r6) { - r5->unk136.unkC[r6] = &gUnknown_082F4190[gUnknown_082F417C[r5->unk9 - 2][r6]]; - r5->unk136.unk83[r6] = AddWindow(&gUnknown_082F32F4[r5->unk136.unkC[r6]->unk0]); - PutWindowTilemap(r5->unk136.unk83[r6]); - FillWindowPixelBuffer(r5->unk136.unk83[r6], 0); + r5->unk138.unkC[r6] = &gUnknown_082F4190[gUnknown_082F417C[r5->unk9 - 2][r6]]; + r5->unk138.unk83[r6] = AddWindow(&gUnknown_082F32F4[r5->unk138.unkC[r6]->unk0]); + PutWindowTilemap(r5->unk138.unk83[r6]); + FillWindowPixelBuffer(r5->unk138.unk83[r6], 0); } } @@ -1719,36 +1719,36 @@ void sub_8022600(struct BerryCrushGame *r6) for (r7 = 0; r7 < r6->unk9; ++r7) { - PutWindowTilemap(r6->unk136.unk83[r7]); + PutWindowTilemap(r6->unk138.unk83[r7]); if (r7 == r6->unk8) { AddTextPrinterParameterized4( - r6->unk136.unk83[r7], + r6->unk138.unk83[r7], 2, - 36 - GetStringWidth(2, r6->unk96[r7].unk0, 0) / 2u, + 36 - GetStringWidth(2, r6->unk98[r7].unk0, 0) / 2u, 1, 0, 0, sBerryCrushTextColorTable[1], 0, - r6->unk96[r7].unk0 + r6->unk98[r7].unk0 ); } else { AddTextPrinterParameterized4( - r6->unk136.unk83[r7], + r6->unk138.unk83[r7], 2, - 36 - GetStringWidth(2, r6->unk96[r7].unk0, 0) / 2u, + 36 - GetStringWidth(2, r6->unk98[r7].unk0, 0) / 2u, 1, 0, 0, sBerryCrushTextColorTable[2], 0, - r6->unk96[r7].unk0 + r6->unk98[r7].unk0 ); } - CopyWindowToVram(r6->unk136.unk83[r7], 3); + CopyWindowToVram(r6->unk138.unk83[r7], 3); } CopyBgTilemapBufferToVram(0); } @@ -1765,9 +1765,9 @@ void sub_80226D0(struct BerryCrushGame *r6) { CopyToBgTilemapBufferRect( 3, - &r4[r6->unk136.unkC[r5]->unk0 * 40], - r6->unk136.unkC[r5]->unk1, - r6->unk136.unkC[r5]->unk2, + &r4[r6->unk138.unkC[r5]->unk0 * 40], + r6->unk138.unkC[r5]->unk1, + r6->unk138.unkC[r5]->unk2, 10, 2 ); @@ -1788,25 +1788,25 @@ void sub_8022730(struct BerryCrushGame *r6) LoadCompressedSpriteSheet(&gUnknown_082F41F4[r5]); LoadSpritePalettes(gUnknown_082F421C); r2 = CreateSprite(&gUnknown_082F430C, 120, 88, 5); - r6->unk136.unk20 = &gSprites[r2]; - r6->unk136.unk20->oam.priority = 3; - r6->unk136.unk20->coordOffsetEnabled = TRUE; - r6->unk136.unk20->animPaused = TRUE; + r6->unk138.unk20 = &gSprites[r2]; + r6->unk138.unk20->oam.priority = 3; + r6->unk138.unk20->coordOffsetEnabled = TRUE; + r6->unk138.unk20->animPaused = TRUE; for (r5 = 0; r5 < r6->unk9; ++r5) { r2 = CreateSprite( &gUnknown_082F4324, - r6->unk136.unkC[r5]->unk4 + 120, - r6->unk136.unkC[r5]->unk6 + 32, + r6->unk138.unkC[r5]->unk4 + 120, + r6->unk138.unkC[r5]->unk6 + 32, 0 ); - r6->unk136.unk24[r5] = &gSprites[r2]; - r6->unk136.unk24[r5]->oam.priority = 1; - r6->unk136.unk24[r5]->invisible = TRUE; - r6->unk136.unk24[r5]->coordOffsetEnabled = TRUE; - r6->unk136.unk24[r5]->animPaused = TRUE; + r6->unk138.unk24[r5] = &gSprites[r2]; + r6->unk138.unk24[r5]->oam.priority = 1; + r6->unk138.unk24[r5]->invisible = TRUE; + r6->unk138.unk24[r5]->coordOffsetEnabled = TRUE; + r6->unk138.unk24[r5]->animPaused = TRUE; } - for (r5 = 0; r5 < ARRAY_COUNT(r6->unk136.unk4C); ++r5) + for (r5 = 0; r5 < ARRAY_COUNT(r6->unk138.unk4C); ++r5) { r2 = CreateSprite( &gUnknown_082F433C, @@ -1814,13 +1814,13 @@ void sub_8022730(struct BerryCrushGame *r6) gUnknown_082F41D2[r5][1] + 136, 6 ); - r6->unk136.unk4C[r5] = &gSprites[r2]; - r6->unk136.unk4C[r5]->oam.priority = 3; - r6->unk136.unk4C[r5]->invisible = TRUE; - r6->unk136.unk4C[r5]->animPaused = TRUE; - r6->unk136.unk4C[r5]->data[0] = r5; + r6->unk138.unk4C[r5] = &gSprites[r2]; + r6->unk138.unk4C[r5]->oam.priority = 3; + r6->unk138.unk4C[r5]->invisible = TRUE; + r6->unk138.unk4C[r5]->animPaused = TRUE; + r6->unk138.unk4C[r5]->data[0] = r5; } - for (r5 = 0; r5 < ARRAY_COUNT(r6->unk136.unk78); ++r5) + for (r5 = 0; r5 < ARRAY_COUNT(r6->unk138.unk78); ++r5) { r2 = CreateSprite( &gUnknown_082F4354, @@ -1828,16 +1828,16 @@ void sub_8022730(struct BerryCrushGame *r6) 8, 0 ); - r6->unk136.unk78[r5] = &gSprites[r2]; - r6->unk136.unk78[r5]->oam.priority = 0; - r6->unk136.unk78[r5]->invisible = FALSE; - r6->unk136.unk78[r5]->animPaused = FALSE; + r6->unk138.unk78[r5] = &gSprites[r2]; + r6->unk138.unk78[r5]->oam.priority = 0; + r6->unk138.unk78[r5]->invisible = FALSE; + r6->unk138.unk78[r5]->animPaused = FALSE; } DigitObjUtil_CreatePrinter(0, 0, &gUnknown_082F4384[0]); DigitObjUtil_CreatePrinter(1, 0, &gUnknown_082F4384[1]); DigitObjUtil_CreatePrinter(2, 0, &gUnknown_082F4384[2]); if (r6->unk12 == 1) - sub_8022554(&r6->unk136); + sub_8022554(&r6->unk138); } void sub_8022960(struct BerryCrushGame *r5) @@ -1851,17 +1851,17 @@ void sub_8022960(struct BerryCrushGame *r5) FreeSpritePaletteByTag(4); FreeSpritePaletteByTag(2); FreeSpritePaletteByTag(1); - for (; r4 < ARRAY_COUNT(r5->unk136.unk78); ++r4) - DestroySprite(r5->unk136.unk78[r4]); + for (; r4 < ARRAY_COUNT(r5->unk138.unk78); ++r4) + DestroySprite(r5->unk138.unk78[r4]); DigitObjUtil_DeletePrinter(2); DigitObjUtil_DeletePrinter(1); DigitObjUtil_DeletePrinter(0); - for (r4 = 0; r4 < ARRAY_COUNT(r5->unk136.unk4C); ++r4) - DestroySprite(r5->unk136.unk4C[r4]); + for (r4 = 0; r4 < ARRAY_COUNT(r5->unk138.unk4C); ++r4) + DestroySprite(r5->unk138.unk4C[r4]); for (r4 = 0; r4 < r5->unk9; ++r4) - DestroySprite(r5->unk136.unk24[r4]); - if (r5->unk136.unk20->inUse) - DestroySprite(r5->unk136.unk20); + DestroySprite(r5->unk138.unk24[r4]); + if (r5->unk138.unk20->inUse) + DestroySprite(r5->unk138.unk20); } static void sub_8022A20(struct Sprite *sprite) @@ -2154,9 +2154,9 @@ static u32 sub_8022F1C(struct BerryCrushGame *r5, u8 *r2) case 2: if (!IsLinkTaskFinished()) return 0; - memset(r5->unk40, 0, sizeof(r5->unk40)); - r5->unk40[0] = r5->unk96[r5->unk8].unkC; - SendBlock(0, r5->unk40, 2); + memset(r5->unk42, 0, sizeof(r5->unk42)); + r5->unk42[0] = r5->unk98[r5->unk8].unkC; + SendBlock(0, r5->unk42, 2); break; case 3: if (!IsLinkTaskFinished()) @@ -2168,11 +2168,11 @@ static u32 sub_8022F1C(struct BerryCrushGame *r5, u8 *r2) return 0; for (r3 = 0; r3 < r5->unk9; ++r3) { - r5->unk96[r3].unkC = gBlockRecvBuffer[r3][0]; - if (r5->unk96[r3].unkC > 0xB0) - r5->unk96[r3].unkC = 0; - r5->unk18 += gUnknown_0858AB24[r5->unk96[r3].unkC].unk0; - r5->unk1C += gUnknown_0858AB24[r5->unk96[r3].unkC].unk1; + r5->unk98[r3].unkC = gBlockRecvBuffer[r3][0]; + if (r5->unk98[r3].unkC > 0xB0) + r5->unk98[r3].unkC = 0; + r5->unk18 += gUnknown_0858AB24[r5->unk98[r3].unkC].unk0; + r5->unk1C += gUnknown_0858AB24[r5->unk98[r3].unkC].unk1; } r5->unk10 = 0; ResetBlockReceivedFlags(); @@ -2194,41 +2194,41 @@ static u32 sub_8023070(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r switch (r4->unkC) { case 0: - sub_80214A8(r4, &r4->unk136); + sub_80214A8(r4, &r4->unk138); Rfu_SetLinkStandbyCallback(); break; case 1: if (!IsLinkTaskFinished()) return 0; - r4->unk136.unk0 = 0; - r4->unk136.unk1 = 0; - r4->unk136.unk2 = 0; - r4->unk136.unk3 = 0; + r4->unk138.unk0 = 0; + r4->unk138.unk1 = 0; + r4->unk138.unk2 = 0; + r4->unk138.unk3 = 0; break; case 2: - r4->unk136.unk38[r4->unk136.unk0]->callback = sub_8021608; - r4->unk136.unk38[r4->unk136.unk0]->affineAnimPaused = FALSE; + r4->unk138.unk38[r4->unk138.unk0]->callback = sub_8021608; + r4->unk138.unk38[r4->unk138.unk0]->affineAnimPaused = FALSE; PlaySE(SE_BALL_THROW); break; case 3: - if (r4->unk136.unk38[r4->unk136.unk0]->callback == sub_8021608) + if (r4->unk138.unk38[r4->unk138.unk0]->callback == sub_8021608) return 0; - r4->unk136.unk38[r4->unk136.unk0] = NULL; - ++r4->unk136.unk0; + r4->unk138.unk38[r4->unk138.unk0] = NULL; + ++r4->unk138.unk0; Rfu_SetLinkStandbyCallback(); break; case 4: if (!IsLinkTaskFinished()) return 0; - if (r4->unk136.unk0 < r4->unk9) + if (r4->unk138.unk0 < r4->unk9) { r4->unkC = 2; return 0; } - r4->unk136.unk0 = 0; + r4->unk138.unk0 = 0; break; case 5: - sub_80216A8(r4, &r4->unk136); + sub_80216A8(r4, &r4->unk138); Rfu_SetLinkStandbyCallback(); break; case 6: @@ -2253,24 +2253,24 @@ static u32 sub_80231B8(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r if (r4->unk2A < 0) return 0; r4->unk2A = 0; - r4->unk136.unk1 = 4; - r4->unk136.unk0 = 0; - r4->unk136.unk2 = gUnknown_082F326C[r4->unk136.unk1][0]; + r4->unk138.unk1 = 4; + r4->unk138.unk0 = 0; + r4->unk138.unk2 = gUnknown_082F326C[r4->unk138.unk1][0]; PlaySE(SE_M_STRENGTH); break; case 1: - r4->unk2C = gUnknown_082F326C[r4->unk136.unk1][r4->unk136.unk0]; + r4->unk2C = gUnknown_082F326C[r4->unk138.unk1][r4->unk138.unk0]; SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG3VOFS, -r4->unk2C); - ++r4->unk136.unk0; - if (r4->unk136.unk0 < r4->unk136.unk2) + ++r4->unk138.unk0; + if (r4->unk138.unk0 < r4->unk138.unk2) return 0; - if (r4->unk136.unk1 == 0) + if (r4->unk138.unk1 == 0) break; - --r4->unk136.unk1; - r4->unk136.unk2 = gUnknown_082F326C[r4->unk136.unk1][0]; - r4->unk136.unk0 = 0; + --r4->unk138.unk1; + r4->unk138.unk2 = gUnknown_082F326C[r4->unk138.unk1][0]; + r4->unk138.unk0 = 0; return 0; case 2: r4->unk2C = 0; @@ -2310,10 +2310,10 @@ static u32 sub_80232EC(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r case 3: if (!IsLinkTaskFinished()) return 0; - r4->unk136.unk0 = 0; - r4->unk136.unk1 = 0; - r4->unk136.unk2 = 0; - r4->unk136.unk3 = 0; + r4->unk138.unk0 = 0; + r4->unk138.unk1 = 0; + r4->unk138.unk2 = 0; + r4->unk138.unk3 = 0; r4->unk10 = 0; if (r4->unk8 == 0) sub_8022BEC(13, 1, NULL); @@ -2343,31 +2343,31 @@ void sub_802339C(struct BerryCrushGame *r4) { if (r2->unk4_2) { - r4->unk5A.unk02_3 |= gUnknown_082F325C[r7]; - r4->unk96[r7].unk1C = 1; - ++r4->unk96[r7].unk16; + r4->unk5C.unk02_3 |= gUnknown_082F325C[r7]; + r4->unk98[r7].unk1C = 1; + ++r4->unk98[r7].unk16; ++r8; - r3 = r4->unk28 - r4->unk96[r7].unkE; - if (r3 >= r4->unk96[r7].unk12 - 1 && r3 <= r4->unk96[r7].unk12 + 1) + r3 = r4->unk28 - r4->unk98[r7].unkE; + if (r3 >= r4->unk98[r7].unk12 - 1 && r3 <= r4->unk98[r7].unk12 + 1) { - ++r4->unk96[r7].unk10; - r4->unk96[r7].unk12 = r3; - if (r4->unk96[r7].unk10 > r4->unk96[r7].unk14) - r4->unk96[r7].unk14 = r4->unk96[r7].unk10; + ++r4->unk98[r7].unk10; + r4->unk98[r7].unk12 = r3; + if (r4->unk98[r7].unk10 > r4->unk98[r7].unk14) + r4->unk98[r7].unk14 = r4->unk98[r7].unk10; } else { - r4->unk96[r7].unk10 = 0; - r4->unk96[r7].unk12 = r3; + r4->unk98[r7].unk10 = 0; + r4->unk98[r7].unk12 = r3; } - r4->unk96[r7].unkE = r4->unk28; - ++r4->unk96[r7].unk1B; - if (r4->unk96[r7].unk1B > 2) - r4->unk96[r7].unk1B = 0; + r4->unk98[r7].unkE = r4->unk28; + ++r4->unk98[r7].unk1B; + if (r4->unk98[r7].unk1B > 2) + r4->unk98[r7].unk1B = 0; } else { - r4->unk96[r7].unk1C = 0; + r4->unk98[r7].unk1C = 0; } } } @@ -2375,10 +2375,10 @@ void sub_802339C(struct BerryCrushGame *r4) { for (r7 = 0; r7 < r4->unk9; ++r7) { - if (r4->unk96[r7].unk1C != 0) + if (r4->unk98[r7].unk1C != 0) { - r4->unk96[r7].unk1C |= 2; - ++r4->unk96[r7].unk18; + r4->unk98[r7].unk1C |= 2; + ++r4->unk98[r7].unk18; } } } @@ -2399,7 +2399,7 @@ void sub_802339C(struct BerryCrushGame *r4) else { r4->unk24 = 32; - r4->unk5A.unk02_0 = 1; + r4->unk5C.unk02_0 = 1; } } } @@ -2413,78 +2413,78 @@ void sub_8023558(struct BerryCrushGame *r3) for (r4 = 0; r4 < r3->unk9; ++r4) { - if (r3->unk96[r4].unk1C != 0) + if (r3->unk98[r4].unk1C != 0) { ++r6; - r1 = r3->unk96[r4].unk1B + 1; - if (r3->unk96[r4].unk1C & 2) + r1 = r3->unk98[r4].unk1B + 1; + if (r3->unk98[r4].unk1C & 2) r1 |= 4; r1 <<= 3 * r4; - r3->unk5A.unk08 |= r1; + r3->unk5C.unk08 |= r1; } } r2 = (u16)r3->unk24; - r3->unk5A.unk04 = r2; + r3->unk5C.unk04 = r2; if (r6 == 0) { - if (r3->unk136.unk3 != 0) - ++r3->unk136.unk0; + if (r3->unk138.unk3 != 0) + ++r3->unk138.unk0; } - else if (r3->unk136.unk3 != 0) + else if (r3->unk138.unk3 != 0) { - if (r6 != r3->unk136.unk1) + if (r6 != r3->unk138.unk1) { - r3->unk136.unk1 = r6 - 1; - r3->unk136.unk2 = gUnknown_082F3290[r6 - 1][0]; + r3->unk138.unk1 = r6 - 1; + r3->unk138.unk2 = gUnknown_082F3290[r6 - 1][0]; } else { - ++r3->unk136.unk0; + ++r3->unk138.unk0; } } else { - r3->unk136.unk0 = 0; - r3->unk136.unk1 = r6 - 1; - r3->unk136.unk2 = gUnknown_082F3290[r6 - 1][0]; - r3->unk136.unk3 = 1; + r3->unk138.unk0 = 0; + r3->unk138.unk1 = r6 - 1; + r3->unk138.unk2 = gUnknown_082F3290[r6 - 1][0]; + r3->unk138.unk3 = 1; } - if (r3->unk136.unk3 != 0) + if (r3->unk138.unk3 != 0) { - if (r3->unk136.unk0 >= r3->unk136.unk2) + if (r3->unk138.unk0 >= r3->unk138.unk2) { - r3->unk136.unk0 = 0; - r3->unk136.unk1 = 0; - r3->unk136.unk2 = 0; - r3->unk136.unk3 = 0; + r3->unk138.unk0 = 0; + r3->unk138.unk1 = 0; + r3->unk138.unk2 = 0; + r3->unk138.unk3 = 0; r1 = 0; } else { - r1 = gUnknown_082F3290[r3->unk136.unk1][r3->unk136.unk0 + 1]; + r1 = gUnknown_082F3290[r3->unk138.unk1][r3->unk138.unk0 + 1]; } - r3->unk5A.unk03 = (u8)r1; + r3->unk5C.unk03 = (u8)r1; } else { - r3->unk5A.unk03 = 0; + r3->unk5C.unk03 = 0; } - r3->unk5A.unk06 = r3->unk26; + r3->unk5C.unk06 = r3->unk26; } void sub_80236B8(struct BerryCrushGame *r5) { if (JOY_NEW(A_BUTTON)) - r5->unk5A.unk02_2 = 1; + r5->unk5C.unk02_2 = 1; if (JOY_HELD(A_BUTTON)) { - if (r5->unk96[r5->unk8].unk1A < r5->unk28) - ++r5->unk96[r5->unk8].unk1A; + if (r5->unk98[r5->unk8].unk1A < r5->unk28) + ++r5->unk98[r5->unk8].unk1A; } - if (r5->unk8 != 0 && r5->unk5A.unk02_2 == 0) + if (r5->unk8 != 0 && r5->unk5C.unk02_2 == 0) return; - r5->unk5A.unk00 = 2; + r5->unk5C.unk00 = 2; if (r5->unk28 % 30 == 0) { if (r5->unk2E > gUnknown_082F4444[r5->unk9 - 2]) @@ -2523,7 +2523,7 @@ void sub_80236B8(struct BerryCrushGame *r5) sub_8011AC8(); r5->unk10 = 0; } - else if (r5->unk5A.unk02_3 == 0) + else if (r5->unk5C.unk02_3 == 0) { sub_8011AC8(); r5->unk10 = 0; @@ -2532,11 +2532,11 @@ void sub_80236B8(struct BerryCrushGame *r5) } if (r5->unk28 >= 36000) - r5->unk5A.unk02_0 = 1; - r5->unk5A.unk02_1 = r5->unk25_4; - r5->unk5A.unk0A = r5->unk25_5; - memcpy(r5->unk40, &r5->unk5A, sizeof(r5->unk40)); - Rfu_SendPacket(r5->unk40); + r5->unk5C.unk02_0 = 1; + r5->unk5C.unk02_1 = r5->unk25_4; + r5->unk5C.unk0A = r5->unk25_5; + memcpy(r5->unk42, &r5->unk5C, sizeof(r5->unk42)); + Rfu_SendPacket(r5->unk42); } void sub_802385C(struct BerryCrushGame *r5) @@ -2545,7 +2545,7 @@ void sub_802385C(struct BerryCrushGame *r5) struct BerryCrushGame_4E *r4_ = NULL; for (r4 = 0; r4 < r5->unk9; r4++) - r5->unk96[r4].unk1C = 0; + r5->unk98[r4].unk1C = 0; if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET) { r5->unk25_2 = 0; @@ -2557,12 +2557,12 @@ void sub_802385C(struct BerryCrushGame *r5) return; } - memcpy(r5->unk4C, gRecvCmds[0], 14); - r4_ = (struct BerryCrushGame_4E *)&r5->unk4C; + memcpy(r5->unk4E, gRecvCmds[0], 14); + r4_ = (struct BerryCrushGame_4E *)&r5->unk4E; r5->unk2A = r4_->unk6; r5->unk2C = (s16)r4_->unk5; r5->unk28 = r4_->unk8; - sub_80216E0(r5, &(r5->unk136)); + sub_80216E0(r5, &(r5->unk138)); if (r4_->unk4_0) { r5->unk25_3 = 1; @@ -2571,8 +2571,8 @@ void sub_802385C(struct BerryCrushGame *r5) static u32 sub_80238F0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1) { - memset(&r4->unk5A, 0, sizeof(r4->unk5A)); - memset(&r4->unk4C, 0, sizeof(r4->unk4C)); + memset(&r4->unk5C, 0, sizeof(r4->unk5C)); + memset(&r4->unk4E, 0, sizeof(r4->unk4E)); sub_802385C(r4); SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); @@ -2604,8 +2604,8 @@ static u32 sub_80238F0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 static u32 sub_8023998(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1) { - memset(&r4->unk5A, 0, sizeof(r4->unk5A)); - memset(&r4->unk4C, 0, sizeof(r4->unk4C)); + memset(&r4->unk5C, 0, sizeof(r4->unk5C)); + memset(&r4->unk4E, 0, sizeof(r4->unk4E)); sub_802385C(r4); SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); @@ -2640,28 +2640,28 @@ static u32 sub_8023A30(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 r4->unk12 = 8; PlaySE(SE_M_STRENGTH); BlendPalettes(0xFFFFFFFF, 8, RGB(31, 31, 0)); - r4->unk136.unk0 = 2; + r4->unk138.unk0 = 2; break; case 1: - if (--r4->unk136.unk0 != 255) + if (--r4->unk138.unk0 != 255) return 0; BlendPalettes(0xFFFFFFFF, 0, RGB(31, 31, 0)); - r4->unk136.unk1 = 4; - r4->unk136.unk0 = 0; - r4->unk136.unk2 = gUnknown_082F326C[r4->unk136.unk1][0]; + r4->unk138.unk1 = 4; + r4->unk138.unk0 = 0; + r4->unk138.unk2 = gUnknown_082F326C[r4->unk138.unk1][0]; break; case 2: - r4->unk2C = gUnknown_082F326C[r4->unk136.unk1][r4->unk136.unk0]; + r4->unk2C = gUnknown_082F326C[r4->unk138.unk1][r4->unk138.unk0]; SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C); SetGpuReg(REG_OFFSET_BG3VOFS, -r4->unk2C); - if (++r4->unk136.unk0 < r4->unk136.unk2) + if (++r4->unk138.unk0 < r4->unk138.unk2) return 0; - if (r4->unk136.unk1 != 0) + if (r4->unk138.unk1 != 0) { - --r4->unk136.unk1; - r4->unk136.unk2 = gUnknown_082F326C[r4->unk136.unk1][0]; - r4->unk136.unk0 = 0; + --r4->unk138.unk1; + r4->unk138.unk2 = gUnknown_082F326C[r4->unk138.unk1][0]; + r4->unk138.unk0 = 0; return 0; } break; @@ -2672,7 +2672,7 @@ static u32 sub_8023A30(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 SetGpuReg(REG_OFFSET_BG3VOFS, 0); break; case 4: - if (!sub_80218D4(r4, &r4->unk136)) + if (!sub_80218D4(r4, &r4->unk138)) return 0; Rfu_SetLinkStandbyCallback(); r4->unk10 = 0; @@ -2697,16 +2697,16 @@ static u32 sub_8023BC0(struct BerryCrushGame *r5, u8 *r6) r5->unk12 = 9; PlaySE(SE_FAILURE); BlendPalettes(0xFFFFFFFF, 8, RGB(31, 0, 0)); - r5->unk136.unk0 = 4; + r5->unk138.unk0 = 4; break; case 1: - if (--r5->unk136.unk0 != 255) + if (--r5->unk138.unk0 != 255) return 0; BlendPalettes(0xFFFFFFFF, 0, RGB(31, 0, 0)); - r5->unk136.unk0 = 0; + r5->unk138.unk0 = 0; break; case 2: - if (!sub_80218D4(r5, &r5->unk136)) + if (!sub_80218D4(r5, &r5->unk138)) return 0; Rfu_SetLinkStandbyCallback(); r5->unk10 = 0; @@ -2739,11 +2739,11 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 switch (r7->unkC) { case 0: - memset(r7->unk40, 0, sizeof(r7->unk40)); - if (r7->unk96[r7->unk8].unk1A > r7->unk28) - r7->unk96[r7->unk8].unk1A = r7->unk28; - r7->unk40[0] = r7->unk96[r7->unk8].unk1A; - SendBlock(0, r7->unk40, 2); + memset(r7->unk42, 0, sizeof(r7->unk42)); + if (r7->unk98[r7->unk8].unk1A > r7->unk28) + r7->unk98[r7->unk8].unk1A = r7->unk28; + r7->unk42[0] = r7->unk98[r7->unk8].unk1A; + SendBlock(0, r7->unk42, 2); break; case 1: if (!IsLinkTaskFinished()) @@ -2754,9 +2754,9 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 if (GetBlockReceivedStatus() != gUnknown_082F4448[r7->unk9 - 2]) return 0; for (r8 = 0; r8 < r7->unk9; ++r8) - r7->unk96[r8].unk1A = gBlockRecvBuffer[r8][0]; + r7->unk98[r8].unk1A = gBlockRecvBuffer[r8][0]; r7->unk10 = 0; - r7->unk40[0] = 0; + r7->unk42[0] = 0; ResetBlockReceivedFlags(); if (r7->unk8 == 0) r7->unkC = 3; @@ -2764,34 +2764,34 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 r7->unkC = 6; return 0; case 3: - memset(&r7->unk66, 0, sizeof(struct BerryCrushGame_66)); - r7->unk66.unk04 = r7->unk28; - r7->unk66.unk06 = r7->unk18 / (r7->unk28 / 60); + memset(&r7->unk68, 0, sizeof(struct BerryCrushGame_68)); + r7->unk68.unk04 = r7->unk28; + r7->unk68.unk06 = r7->unk18 / (r7->unk28 / 60); r2 = MathUtil_Mul32(Q_24_8(r7->unk30), Q_24_8(50)); r2 = MathUtil_Div32(r2, Q_24_8(r7->unk32)) + Q_24_8(50); r2 = Q_24_8_TO_INT(r2); - r7->unk66.unk08 = r2 & 0x7F; + r7->unk68.unk08 = r2 & 0x7F; r2 = Q_24_8(r2); r2 = MathUtil_Div32(r2, Q_24_8(100)); r4 = Q_24_8(r7->unk1C * r7->unk9); r4 = MathUtil_Mul32(r4, r2); - r7->unk66.unk00 = r4 >> 8; - r7->unk66.filler20[0][7] = Random() % 3; + r7->unk68.unk00 = r4 >> 8; + r7->unk68.filler20[0][7] = Random() % 3; for (r8 = 0; r8 < r7->unk9; ++r8) { - r7->unk66.filler20[0][r8] = r8; - r7->unk66.filler20[1][r8] = r8; - r7->unk66.unk0C[0][r8] = r7->unk96[r8].unk16; - r7->unk66.unk0A += r7->unk66.unk0C[0][r8]; - switch (r7->unk66.filler20[0][7]) + r7->unk68.filler20[0][r8] = r8; + r7->unk68.filler20[1][r8] = r8; + r7->unk68.unk0C[0][r8] = r7->unk98[r8].unk16; + r7->unk68.unk0A += r7->unk68.unk0C[0][r8]; + switch (r7->unk68.filler20[0][7]) { case 0: - if (r7->unk96[r8].unk16 != 0) + if (r7->unk98[r8].unk16 != 0) { - r2 = r7->unk96[r8].unk14; + r2 = r7->unk98[r8].unk14; r2 = Q_24_8(r2); r2 = MathUtil_Mul32(r2, Q_24_8(100)); - r4 = r7->unk96[r8].unk16; + r4 = r7->unk98[r8].unk16; r4 = Q_24_8(r4); r4 = MathUtil_Div32(r2, r4); } @@ -2801,12 +2801,12 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 } break; case 1: - if (r7->unk96[r8].unk16 != 0) + if (r7->unk98[r8].unk16 != 0) { - r2 = r7->unk96[r8].unk18; + r2 = r7->unk98[r8].unk18; r2 = Q_24_8(r2); r2 = MathUtil_Mul32(r2, Q_24_8(100)); - r4 = r7->unk96[r8].unk16; + r4 = r7->unk98[r8].unk16; r4 = Q_24_8(r4); r4 = MathUtil_Div32(r2, r4); } @@ -2816,17 +2816,17 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 } break; case 2: - if (r7->unk96[r8].unk16 == 0) + if (r7->unk98[r8].unk16 == 0) { r4 = 0; } - else if (r7->unk96[r8].unk1A >= r7->unk28) + else if (r7->unk98[r8].unk1A >= r7->unk28) { r4 = 0x6400; } else { - r2 = r7->unk96[r8].unk1A; + r2 = r7->unk98[r8].unk1A; r2 = Q_24_8(r2); r2 = MathUtil_Mul32(r2, Q_24_8(100)); r4 = r7->unk28; @@ -2836,7 +2836,7 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 break; } r4 >>= 4; - r7->unk66.unk0C[1][r8] = r4; + r7->unk68.unk0C[1][r8] = r4; } break; case 4: @@ -2844,27 +2844,27 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 { for (r4_ = r7->unk9 - 1; r4_ > r8; --r4_) { - if (r7->unk66.unk0C[0][r4_ - 1] < r7->unk66.unk0C[0][r4_]) + if (r7->unk68.unk0C[0][r4_ - 1] < r7->unk68.unk0C[0][r4_]) { - r6 = r7->unk66.unk0C[0][r4_]; - r7->unk66.unk0C[0][r4_] = r7->unk66.unk0C[0][r4_ - 1]; - r7->unk66.unk0C[0][r4_ - 1] = r6; - r3 = r7->unk66.filler20[0][r4_]; - r7->unk66.filler20[0][r4_] = r7->unk66.filler20[0][r4_ - 1]; - r7->unk66.filler20[0][r4_ - 1] = r3; + r6 = r7->unk68.unk0C[0][r4_]; + r7->unk68.unk0C[0][r4_] = r7->unk68.unk0C[0][r4_ - 1]; + r7->unk68.unk0C[0][r4_ - 1] = r6; + r3 = r7->unk68.filler20[0][r4_]; + r7->unk68.filler20[0][r4_] = r7->unk68.filler20[0][r4_ - 1]; + r7->unk68.filler20[0][r4_ - 1] = r3; } - if (r7->unk66.unk0C[1][r4_ - 1] < r7->unk66.unk0C[1][r4_]) + if (r7->unk68.unk0C[1][r4_ - 1] < r7->unk68.unk0C[1][r4_]) { - r6 = r7->unk66.unk0C[1][r4_]; - r7->unk66.unk0C[1][r4_] = r7->unk66.unk0C[1][r4_ - 1]; - r7->unk66.unk0C[1][r4_ - 1] = r6; - r3 = r7->unk66.filler20[1][r4_]; - r7->unk66.filler20[1][r4_] = r7->unk66.filler20[1][r4_ - 1]; - r7->unk66.filler20[1][r4_ - 1] = r3; + r6 = r7->unk68.unk0C[1][r4_]; + r7->unk68.unk0C[1][r4_] = r7->unk68.unk0C[1][r4_ - 1]; + r7->unk68.unk0C[1][r4_ - 1] = r6; + r3 = r7->unk68.filler20[1][r4_]; + r7->unk68.filler20[1][r4_] = r7->unk68.filler20[1][r4_ - 1]; + r7->unk68.filler20[1][r4_ - 1] = r3; } } } - SendBlock(0,&r7->unk66, sizeof(struct BerryCrushGame_66)); + SendBlock(0,&r7->unk68, sizeof(struct BerryCrushGame_68)); break; case 5: if (!IsLinkTaskFinished()) @@ -2874,8 +2874,8 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 case 6: if (GetBlockReceivedStatus() != 1) return 0; - memset(&r7->unk66, 0, sizeof(struct BerryCrushGame_66)); - memcpy(&r7->unk66, gBlockRecvBuffer, sizeof(struct BerryCrushGame_66)); + memset(&r7->unk68, 0, sizeof(struct BerryCrushGame_68)); + memcpy(&r7->unk68, gBlockRecvBuffer, sizeof(struct BerryCrushGame_68)); ResetBlockReceivedFlags(); r7->unk10 = 0; break; @@ -2896,17 +2896,17 @@ static u32 sub_8024048(struct BerryCrushGame *r5, u8 *r6) switch (r5->unkC) { case 0: - if (!sub_8022070(r5, &r5->unk136)) + if (!sub_8022070(r5, &r5->unk138)) return 0; break; case 1: CopyBgTilemapBufferToVram(0); - r5->unk136.unk0 = 30; + r5->unk138.unk0 = 30; break; case 2: - if (r5->unk136.unk0 != 0) + if (r5->unk138.unk0 != 0) { - --r5->unk136.unk0; + --r5->unk138.unk0; return 0; } if (!(JOY_NEW(A_BUTTON))) @@ -2941,7 +2941,7 @@ static u32 sub_8024134(struct BerryCrushGame *r5, u8 *r4) { case 0: if (r5->unk28 >= 36000) - sub_8022554(&r5->unk136); + sub_8022554(&r5->unk138); sub_8024644(r4, 8, 0, 0, 1); r5->unkE = 19; sub_8022BEC(3, 1, NULL); @@ -2991,7 +2991,7 @@ static u32 sub_8024228(struct BerryCrushGame *r5, u8 *r6) r4 = Menu_ProcessInputNoWrapClearOnChoose(); if (r4 != -2) { - memset(r5->unk40, 0, sizeof(r5->unk40)); + memset(r5->unk42, 0, sizeof(r5->unk42)); if (r4 == 0) { if (HasAtLeastOneBerry()) @@ -3027,9 +3027,9 @@ static u32 sub_80242E0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 case 1: if (!IsLinkTaskFinished()) return 0; - r4->unk40[0] = r4->unk14; - r4->unk4C[0] = 0; - SendBlock(0, r4->unk40, sizeof(u16)); + r4->unk42[0] = r4->unk14; + r4->unk4E[0] = 0; + SendBlock(0, r4->unk42, sizeof(u16)); break; case 2: if (!IsLinkTaskFinished()) @@ -3040,14 +3040,14 @@ static u32 sub_80242E0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 if (GetBlockReceivedStatus() != gUnknown_082F4448[r4->unk9 - 2]) return 0; for (; r5 < r4->unk9; ++r5) - r4->unk4C[0] += gBlockRecvBuffer[r5][0]; - if (r4->unk4C != 0) + r4->unk4E[0] += gBlockRecvBuffer[r5][0]; + if (r4->unk4E != 0) sub_8022BEC(23, 1, NULL); else sub_8022BEC(22, 1, NULL); ResetBlockReceivedFlags(); - r4->unk40[0] = 0; - r4->unk4C[0] = 0; + r4->unk42[0] = 0; + r4->unk4E[0] = 0; r4->unk10 = 0; r4->unkC = 0; return 0; @@ -3101,11 +3101,11 @@ static u32 sub_8024444(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1 case 1: if (IsTextPrinterActive(0)) return 0; - r5->unk136.unk0 = 120; + r5->unk138.unk0 = 120; break; case 2: - if (r5->unk136.unk0 != 0) - --r5->unk136.unk0; + if (r5->unk138.unk0 != 0) + --r5->unk138.unk0; else { sub_8022BEC(24, 1, NULL); @@ -3175,16 +3175,16 @@ void sub_8024578(struct BerryCrushGame *r4) r4->unk34 = 0; for (; r5 < 5; ++r5) { - r4->unk96[r5].unkC = -1; - r4->unk96[r5].unkE = 0; - r4->unk96[r5].unk10 = 0; - r4->unk96[r5].unk12 = 1; - r4->unk96[r5].unk14 = 0; - r4->unk96[r5].unk16 = 0; - r4->unk96[r5].unk18 = 0; - r4->unk96[r5].unk1A = 0; - r4->unk96[r5].unk1B = 0; - r4->unk96[r5].unk1C = 0; + r4->unk98[r5].unkC = -1; + r4->unk98[r5].unkE = 0; + r4->unk98[r5].unk10 = 0; + r4->unk98[r5].unk12 = 1; + r4->unk98[r5].unk14 = 0; + r4->unk98[r5].unk16 = 0; + r4->unk98[r5].unk18 = 0; + r4->unk98[r5].unk1A = 0; + r4->unk98[r5].unk1B = 0; + r4->unk98[r5].unk1C = 0; } } From b3f9a08ba6d17c9a91d715ca356a252713599dbb Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Mon, 21 Dec 2020 20:24:36 -0500 Subject: [PATCH 095/116] fix sub_8021A28 --- src/berry_crush.c | 200 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 193 insertions(+), 7 deletions(-) diff --git a/src/berry_crush.c b/src/berry_crush.c index 3a43b60ab..cdaa585c4 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1388,7 +1388,193 @@ void sub_80219C8(u8 windowId, u8 left, u8 colorId, const u8 *string) AddTextPrinterParameterized3(windowId, 2, left, 0, sBerryCrushTextColorTable[colorId], 0, string); } -void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) //////// +#include "global.h" +#include "battle_anim.h" +#include "berry.h" +#include "berry_powder.h" +#include "bg.h" +#include "decompress.h" +#include "dynamic_placeholder_text_util.h" +#include "event_data.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "international_string_util.h" +#include "item_icon.h" +#include "item_menu.h" +#include "link.h" +#include "link_rfu.h" +#include "main.h" +#include "malloc.h" +#include "math_util.h" +#include "menu.h" +#include "overworld.h" +#include "palette.h" +#include "random.h" +#include "save.h" +#include "scanline_effect.h" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "text.h" +#include "text_window.h" +#include "trig.h" +#include "window.h" +#include "constants/items.h" +#include "constants/rgb.h" +#include "constants/songs.h" + +struct BerryCrushGame_Player +{ + u8 unk0[PLAYER_NAME_LENGTH + 1 + 4]; + u16 unkC; + u16 unkE; + u16 unk10; + u16 unk12; + u16 unk14; + u16 unk16; + u16 unk18; + u16 unk1A; + u8 unk1B; + u8 unk1C; +}; + +struct BerryCrushGame_4E +{ + u16 unk0; + u16 filler2; + u8 unk4_0:1; + u8 unk4_1:1; + u8 unk4_2:1; + u8 unk4_3:5; + s8 unk5; + u16 unk6; + u16 unk8; + u16 unkA; + u16 unkC; +}; + +struct BerryCrushGame_40 +{ + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC; + s16 unkE; +}; + +struct BerryCrushGame_5C +{ + u16 unk00; + u8 unk02_0:1; + u8 unk02_1:1; + u8 unk02_2:1; + u8 unk02_3:5; + s8 unk03; + u16 unk04; + u16 unk06; + u16 unk08; + u16 unk0A; +}; + +struct BerryCrushGame_68 +{ + u32 unk00; + u16 unk04; + u16 unk06; + u16 unk08; + u16 unk0A; + u16 unk0C[2][5]; + u8 filler20[2][8]; +}; + +struct BerryCrushGame_138_C +{ + u8 unk0; + u8 unk1; + u8 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; +}; + +struct BerryCrushGame_138 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + s16 unk4; + s16 unk6; + s16 unk8; + const struct BerryCrushGame_138_C *unkC[5]; + struct Sprite *unk20; + struct Sprite *unk24[5]; + struct Sprite *unk38[5]; + struct Sprite *unk4C[11]; + struct Sprite *unk78[2]; + u8 unk80; + u8 filler81; + u8 unk82; + u8 unk83[5]; + u16 unk88[4][0x800]; +}; + +struct BerryCrushGame +{ + MainCallback unk0; + u32 (* unk4)(struct BerryCrushGame *, u8 *); + u8 unk8; + u8 unk9; + u8 mainTask; + u8 unkB; + u8 unkC; + u8 unkD; + u8 unkE; + u8 unkF; + u16 unk10; + u16 unk12; + u16 unk14; + u16 unk16; + s16 unk18; + s16 unk1A; + s32 unk1C; + s32 unk20; + u8 unk24; + u8 unk25_0:1; + u8 unk25_1:1; + u8 unk25_2:1; + u8 unk25_3:1; + u8 unk25_4:1; + u8 unk25_5:3; + u16 unk26; + u16 unk28; + s16 unk2A; + s16 unk2C; + s16 unk2E; + s16 unk30; + s16 unk32; + s16 unk34; + u8 unk36[0xC]; + u16 unk42[6]; + u16 unk4E[7]; + struct BerryCrushGame_5C unk5C; + struct BerryCrushGame_68 unk68; + struct BerryCrushGame_Player unk98[5]; + struct BerryCrushGame_138 unk138; +}; + +extern const u8 *const gUnknown_082F43B4[]; +extern const u32 sPressingSpeedConversionTable[]; +extern const u8 sBerryCrushTextColorTable[][3]; + +void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) { u8 r8; u8 sp1C = 0; @@ -1426,12 +1612,12 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) ////// if (r8 != 0 && sp24->unk0C[sp10][r8] != sp24->unk0C[sp10][r8 - 1]) sp20 = r8; ConvertIntToDecimalStringN(gStringVar1, sp24->unk0C[sp10][r8] >> 4, STR_CONV_MODE_RIGHT_ALIGN, 3); - r3 = 0; + xOffset = 0; r7 = sp24->unk0C[sp10][r8] & 15; for (r2 = 0; r2 < 4; ++r2) if ((r7 >> (3 - r2)) & 1) - r3 += sPressingSpeedConversionTable[r2]; - r7 = r3 / 1000000u; + xOffset += sPressingSpeedConversionTable[r2]; + r7 = xOffset / 1000000u; ConvertIntToDecimalStringN(gStringVar2, r7, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar4, gUnknown_082F43B4[sp10]); break; @@ -1442,11 +1628,11 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) ////// if (r2 >= LAST_BERRY_INDEX - FIRST_BERRY_INDEX + 2) r2 = 0; StringCopy(gStringVar1, gBerries[r2].name); - StringExpandPlaceholders(gStringVar4, gUnknown_082F43B4[2]); + StringExpandPlaceholders(gStringVar4, gUnknown_082F43B4[sp10]); break; } - xOffset = GetStringRightAlignXOffset(2, gStringVar4, sp14 - 4); - AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, xOffset, r6, sBerryCrushTextColorTable[0], 0, gStringVar4); + r3 = GetStringRightAlignXOffset(2, gStringVar4, sp14 - 4); + AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, r3, r6, sBerryCrushTextColorTable[0], 0, gStringVar4); if (sp1C == sp0C->unk8) StringCopy(gStringVar3, gText_1DotBlueF700); else From 01ea4793901df345be937391b76f0df0bf9f84a1 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Mon, 21 Dec 2020 20:25:59 -0500 Subject: [PATCH 096/116] oops --- src/berry_crush.c | 186 ---------------------------------------------- 1 file changed, 186 deletions(-) diff --git a/src/berry_crush.c b/src/berry_crush.c index cdaa585c4..68fdb9c86 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1388,192 +1388,6 @@ void sub_80219C8(u8 windowId, u8 left, u8 colorId, const u8 *string) AddTextPrinterParameterized3(windowId, 2, left, 0, sBerryCrushTextColorTable[colorId], 0, string); } -#include "global.h" -#include "battle_anim.h" -#include "berry.h" -#include "berry_powder.h" -#include "bg.h" -#include "decompress.h" -#include "dynamic_placeholder_text_util.h" -#include "event_data.h" -#include "gpu_regs.h" -#include "graphics.h" -#include "international_string_util.h" -#include "item_icon.h" -#include "item_menu.h" -#include "link.h" -#include "link_rfu.h" -#include "main.h" -#include "malloc.h" -#include "math_util.h" -#include "menu.h" -#include "overworld.h" -#include "palette.h" -#include "random.h" -#include "save.h" -#include "scanline_effect.h" -#include "script.h" -#include "sound.h" -#include "sprite.h" -#include "string_util.h" -#include "strings.h" -#include "task.h" -#include "text.h" -#include "text_window.h" -#include "trig.h" -#include "window.h" -#include "constants/items.h" -#include "constants/rgb.h" -#include "constants/songs.h" - -struct BerryCrushGame_Player -{ - u8 unk0[PLAYER_NAME_LENGTH + 1 + 4]; - u16 unkC; - u16 unkE; - u16 unk10; - u16 unk12; - u16 unk14; - u16 unk16; - u16 unk18; - u16 unk1A; - u8 unk1B; - u8 unk1C; -}; - -struct BerryCrushGame_4E -{ - u16 unk0; - u16 filler2; - u8 unk4_0:1; - u8 unk4_1:1; - u8 unk4_2:1; - u8 unk4_3:5; - s8 unk5; - u16 unk6; - u16 unk8; - u16 unkA; - u16 unkC; -}; - -struct BerryCrushGame_40 -{ - s16 unk0; - s16 unk2; - s16 unk4; - s16 unk6; - s16 unk8; - s16 unkA; - s16 unkC; - s16 unkE; -}; - -struct BerryCrushGame_5C -{ - u16 unk00; - u8 unk02_0:1; - u8 unk02_1:1; - u8 unk02_2:1; - u8 unk02_3:5; - s8 unk03; - u16 unk04; - u16 unk06; - u16 unk08; - u16 unk0A; -}; - -struct BerryCrushGame_68 -{ - u32 unk00; - u16 unk04; - u16 unk06; - u16 unk08; - u16 unk0A; - u16 unk0C[2][5]; - u8 filler20[2][8]; -}; - -struct BerryCrushGame_138_C -{ - u8 unk0; - u8 unk1; - u8 unk2; - s16 unk4; - s16 unk6; - s16 unk8; - s16 unkA; -}; - -struct BerryCrushGame_138 -{ - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - s16 unk4; - s16 unk6; - s16 unk8; - const struct BerryCrushGame_138_C *unkC[5]; - struct Sprite *unk20; - struct Sprite *unk24[5]; - struct Sprite *unk38[5]; - struct Sprite *unk4C[11]; - struct Sprite *unk78[2]; - u8 unk80; - u8 filler81; - u8 unk82; - u8 unk83[5]; - u16 unk88[4][0x800]; -}; - -struct BerryCrushGame -{ - MainCallback unk0; - u32 (* unk4)(struct BerryCrushGame *, u8 *); - u8 unk8; - u8 unk9; - u8 mainTask; - u8 unkB; - u8 unkC; - u8 unkD; - u8 unkE; - u8 unkF; - u16 unk10; - u16 unk12; - u16 unk14; - u16 unk16; - s16 unk18; - s16 unk1A; - s32 unk1C; - s32 unk20; - u8 unk24; - u8 unk25_0:1; - u8 unk25_1:1; - u8 unk25_2:1; - u8 unk25_3:1; - u8 unk25_4:1; - u8 unk25_5:3; - u16 unk26; - u16 unk28; - s16 unk2A; - s16 unk2C; - s16 unk2E; - s16 unk30; - s16 unk32; - s16 unk34; - u8 unk36[0xC]; - u16 unk42[6]; - u16 unk4E[7]; - struct BerryCrushGame_5C unk5C; - struct BerryCrushGame_68 unk68; - struct BerryCrushGame_Player unk98[5]; - struct BerryCrushGame_138 unk138; -}; - -extern const u8 *const gUnknown_082F43B4[]; -extern const u32 sPressingSpeedConversionTable[]; -extern const u8 sBerryCrushTextColorTable[][3]; - void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) { u8 r8; From 45a1156dc833896ed17a51c06a4d7c1b3276a98c Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Mon, 21 Dec 2020 22:36:28 -0500 Subject: [PATCH 097/116] fix remaining functions, finally matches --- src/berry_crush.c | 109 +++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 55 deletions(-) diff --git a/src/berry_crush.c b/src/berry_crush.c index 68fdb9c86..289c53da9 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1756,12 +1756,11 @@ void sub_8022600(struct BerryCrushGame *r6) void sub_80226D0(struct BerryCrushGame *r6) { u8 r5 = 0; - u16 * r4; + u8 * r4; LZ77UnCompWram(gUnknown_08DE3FD4, gDecompressionBuffer); - r4 = (u16 *)gDecompressionBuffer; - for (; r5 < r6->unk9; ++r5) + for (r4 = gDecompressionBuffer; r5 < r6->unk9; ++r5) { CopyToBgTilemapBufferRect( 3, @@ -2331,77 +2330,77 @@ void sub_802339C(struct BerryCrushGame *r4) { u8 r8 = 0; u8 r7 = 0; - u16 r3 = 0; + u16 r3; s32 r2_ = 0; struct BerryCrushGame_4E *r2; for (r7 = 0; r7 < r4->unk9; r7++) { r2 = (struct BerryCrushGame_4E *)gRecvCmds[r7]; - if ((r2->unk0 & 0xFF00) == RFUCMD_SEND_PACKET - && r2->filler2 == 2) + if ((r2->unk0 & 0xFF00) != RFUCMD_SEND_PACKET) + continue; + if (r2->filler2 != 2) + continue; + + if (r2->unk4_2) { - if (r2->unk4_2) + r4->unk5C.unk02_3 |= gUnknown_082F325C[r7]; + r4->unk98[r7].unk1C = 1; + ++r4->unk98[r7].unk16; + ++r8; + r3 = r4->unk28 - r4->unk98[r7].unkE; + if (r3 >= r4->unk98[r7].unk12 - 1 && r3 <= r4->unk98[r7].unk12 + 1) { - r4->unk5C.unk02_3 |= gUnknown_082F325C[r7]; - r4->unk98[r7].unk1C = 1; - ++r4->unk98[r7].unk16; - ++r8; - r3 = r4->unk28 - r4->unk98[r7].unkE; - if (r3 >= r4->unk98[r7].unk12 - 1 && r3 <= r4->unk98[r7].unk12 + 1) - { - ++r4->unk98[r7].unk10; - r4->unk98[r7].unk12 = r3; - if (r4->unk98[r7].unk10 > r4->unk98[r7].unk14) - r4->unk98[r7].unk14 = r4->unk98[r7].unk10; - } - else - { - r4->unk98[r7].unk10 = 0; - r4->unk98[r7].unk12 = r3; - } - r4->unk98[r7].unkE = r4->unk28; - ++r4->unk98[r7].unk1B; - if (r4->unk98[r7].unk1B > 2) - r4->unk98[r7].unk1B = 0; + ++r4->unk98[r7].unk10; + r4->unk98[r7].unk12 = r3; + if (r4->unk98[r7].unk10 > r4->unk98[r7].unk14) + r4->unk98[r7].unk14 = r4->unk98[r7].unk10; } else { - r4->unk98[r7].unk1C = 0; + r4->unk98[r7].unk10 = 0; + r4->unk98[r7].unk12 = r3; } + r4->unk98[r7].unkE = r4->unk28; + ++r4->unk98[r7].unk1B; + if (r4->unk98[r7].unk1B > 2) + r4->unk98[r7].unk1B = 0; } + else + { + r4->unk98[r7].unk1C = 0; + } + } if (r8 > 1) { for (r7 = 0; r7 < r4->unk9; ++r7) { - if (r4->unk98[r7].unk1C != 0) - { - r4->unk98[r7].unk1C |= 2; - ++r4->unk98[r7].unk18; - } + if (!r4->unk98[r7].unk1C) + continue; + r4->unk98[r7].unk1C |= 2; + ++r4->unk98[r7].unk18; } } - if (r8 != 0) + if (r8 == 0) + return; + + r4->unk2E += r8; + r8 += gUnknown_082F3264[r8 - 1]; + r4->unk34 += r8; + r4->unk1A += r8; + if (r4->unk18 - r4->unk1A > 0) { - r4->unk2E += r8; - r8 += gUnknown_082F3264[r8 - 1]; - r4->unk34 += r8; - r4->unk1A += r8; - if (r4->unk18 - r4->unk1A > 0) - { - r2_ = (s32)r4->unk1A; - r2_ <<= 8; - r2_ = MathUtil_Div32(r2_, r4->unk20); - r2_ >>= 8; - r4->unk24 = (u8)r2_; - } - else - { - r4->unk24 = 32; - r4->unk5C.unk02_0 = 1; - } + r2_ = (s32)r4->unk1A; + r2_ <<= 8; + r2_ = MathUtil_Div32(r2_, r4->unk20); + r2_ >>= 8; + r4->unk24 = (u8)r2_; + return; } + + r4->unk24 = 32; + r4->unk5C.unk02_0 = 1; } void sub_8023558(struct BerryCrushGame *r3) @@ -2739,7 +2738,7 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 switch (r7->unkC) { case 0: - memset(r7->unk42, 0, sizeof(r7->unk42)); + memset(r7->unk42, 0, 2 * sizeof(u16)); if (r7->unk98[r7->unk8].unk1A > r7->unk28) r7->unk98[r7->unk8].unk1A = r7->unk28; r7->unk42[0] = r7->unk98[r7->unk8].unk1A; @@ -2974,7 +2973,7 @@ static u32 sub_8024134(struct BerryCrushGame *r5, u8 *r4) static u32 sub_8024228(struct BerryCrushGame *r5, u8 *r6) { - s8 r4; + s8 r4 = 0; switch (r5->unkC) { @@ -3041,7 +3040,7 @@ static u32 sub_80242E0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 return 0; for (; r5 < r4->unk9; ++r5) r4->unk4E[0] += gBlockRecvBuffer[r5][0]; - if (r4->unk4E != 0) + if (r4->unk4E[0] != 0) sub_8022BEC(23, 1, NULL); else sub_8022BEC(22, 1, NULL); From 254b4e621ce2b1a468c8251f5207823171af1007 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Tue, 22 Dec 2020 00:08:15 -0500 Subject: [PATCH 098/116] change "filler" to "unk", remove newline --- src/berry_crush.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/berry_crush.c b/src/berry_crush.c index 289c53da9..90bc7150d 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -56,7 +56,7 @@ struct BerryCrushGame_Player struct BerryCrushGame_4E { u16 unk0; - u16 filler2; + u16 unk2; u8 unk4_0:1; u8 unk4_1:1; u8 unk4_2:1; @@ -102,7 +102,7 @@ struct BerryCrushGame_68 u16 unk08; u16 unk0A; u16 unk0C[2][5]; - u8 filler20[2][8]; + u8 unk20[2][8]; }; struct BerryCrushGame_138_C @@ -1415,14 +1415,14 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18) switch (sp10) { case 0: - sp1C = sp24->filler20[sp10][r8]; + sp1C = sp24->unk20[sp10][r8]; if (r8 != 0 && sp24->unk0C[sp10][r8] != sp24->unk0C[sp10][r8 - 1]) sp20 = r8; ConvertIntToDecimalStringN(gStringVar4, sp24->unk0C[sp10][r8], STR_CONV_MODE_RIGHT_ALIGN, 4); StringAppend(gStringVar4, gUnknown_082F43B4[sp10]); break; case 1: - sp1C = sp24->filler20[sp10][r8]; + sp1C = sp24->unk20[sp10][r8]; if (r8 != 0 && sp24->unk0C[sp10][r8] != sp24->unk0C[sp10][r8 - 1]) sp20 = r8; ConvertIntToDecimalStringN(gStringVar1, sp24->unk0C[sp10][r8] >> 4, STR_CONV_MODE_RIGHT_ALIGN, 3); @@ -1539,7 +1539,7 @@ bool32 sub_8022070(struct BerryCrushGame *r4, struct BerryCrushGame_138 *r6) r6->unk80 = 5; return FALSE; case 12: - sub_80219C8(r6->unk82, 20, 4, gUnknown_082F43B4[r4->unk68.filler20[0][7] + 3]); + sub_80219C8(r6->unk82, 20, 4, gUnknown_082F43B4[r4->unk68.unk20[0][7] + 3]); sub_8021A28(r4, 1, 0xA0, 8 * gUnknown_082F3344[0][r5]); r6->unk80 = 5; return FALSE; @@ -2339,7 +2339,7 @@ void sub_802339C(struct BerryCrushGame *r4) r2 = (struct BerryCrushGame_4E *)gRecvCmds[r7]; if ((r2->unk0 & 0xFF00) != RFUCMD_SEND_PACKET) continue; - if (r2->filler2 != 2) + if (r2->unk2 != 2) continue; if (r2->unk4_2) @@ -2370,7 +2370,6 @@ void sub_802339C(struct BerryCrushGame *r4) { r4->unk98[r7].unk1C = 0; } - } if (r8 > 1) { @@ -2775,14 +2774,14 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 r4 = Q_24_8(r7->unk1C * r7->unk9); r4 = MathUtil_Mul32(r4, r2); r7->unk68.unk00 = r4 >> 8; - r7->unk68.filler20[0][7] = Random() % 3; + r7->unk68.unk20[0][7] = Random() % 3; for (r8 = 0; r8 < r7->unk9; ++r8) { - r7->unk68.filler20[0][r8] = r8; - r7->unk68.filler20[1][r8] = r8; + r7->unk68.unk20[0][r8] = r8; + r7->unk68.unk20[1][r8] = r8; r7->unk68.unk0C[0][r8] = r7->unk98[r8].unk16; r7->unk68.unk0A += r7->unk68.unk0C[0][r8]; - switch (r7->unk68.filler20[0][7]) + switch (r7->unk68.unk20[0][7]) { case 0: if (r7->unk98[r8].unk16 != 0) @@ -2848,18 +2847,18 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1 r6 = r7->unk68.unk0C[0][r4_]; r7->unk68.unk0C[0][r4_] = r7->unk68.unk0C[0][r4_ - 1]; r7->unk68.unk0C[0][r4_ - 1] = r6; - r3 = r7->unk68.filler20[0][r4_]; - r7->unk68.filler20[0][r4_] = r7->unk68.filler20[0][r4_ - 1]; - r7->unk68.filler20[0][r4_ - 1] = r3; + r3 = r7->unk68.unk20[0][r4_]; + r7->unk68.unk20[0][r4_] = r7->unk68.unk20[0][r4_ - 1]; + r7->unk68.unk20[0][r4_ - 1] = r3; } if (r7->unk68.unk0C[1][r4_ - 1] < r7->unk68.unk0C[1][r4_]) { r6 = r7->unk68.unk0C[1][r4_]; r7->unk68.unk0C[1][r4_] = r7->unk68.unk0C[1][r4_ - 1]; r7->unk68.unk0C[1][r4_ - 1] = r6; - r3 = r7->unk68.filler20[1][r4_]; - r7->unk68.filler20[1][r4_] = r7->unk68.filler20[1][r4_ - 1]; - r7->unk68.filler20[1][r4_ - 1] = r3; + r3 = r7->unk68.unk20[1][r4_]; + r7->unk68.unk20[1][r4_] = r7->unk68.unk20[1][r4_ - 1]; + r7->unk68.unk20[1][r4_ - 1] = r3; } } } From b3c5613ff737918aeb6cdc7d24f1053fb4d13c10 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 23 Dec 2020 13:16:01 -0300 Subject: [PATCH 099/116] battle_config.h tweaks -Moved the USE_BATTLE_DEBUG constant from include/battle_debug.h -Slight correction to a few comments in battle_config.h --- include/battle_debug.h | 2 -- include/constants/battle_config.h | 5 +++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/include/battle_debug.h b/include/battle_debug.h index 271f87553..db2c92296 100644 --- a/include/battle_debug.h +++ b/include/battle_debug.h @@ -1,8 +1,6 @@ #ifndef GUARD_BATTLE_DEBUG_H #define GUARD_BATTLE_DEBUG_H -#define USE_BATTLE_DEBUG TRUE - void CB2_BattleDebugMenu(void); #endif // GUARD_BATTLE_DEBUG_H diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index be58ba7e7..bf075fd8c 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -165,7 +165,8 @@ #define B_NEW_IMPACT_PALETTE TRUE // If set to TRUE, it updates the basic 'hit' palette. #define B_NEW_SURF_PARTICLE_PALETTE TRUE // If set to TRUE, it updates Surf's wave palette. -#define HIDE_HEALTHBOXES_DURING_ANIMS TRUE //if TRUE, hides healthboxes during move animations -#define B_TERRAIN_BG_CHANGE TRUE // If TRUE, terrain moves permanently change the default battle background until the effect fades. +#define HIDE_HEALTHBOXES_DURING_ANIMS TRUE // If set to TRUE, hides healthboxes during move animations +#define B_TERRAIN_BG_CHANGE TRUE // If set to TRUE, terrain moves permanently change the default battle background until the effect fades. +#define USE_BATTLE_DEBUG TRUE // If set to TRUE, enables a debug menu to use in battles by pressing the Select button. #endif // GUARD_CONSTANTS_BATTLE_CONFIG_H From 320cc37ac967a696a99771459e033eadd6b8760a Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 23 Dec 2020 14:04:14 -0300 Subject: [PATCH 100/116] USE_BATTLE_DEBUG -> B_ENABLE_DEBUG --- include/constants/battle_config.h | 2 +- src/battle_controller_player.c | 2 +- src/battle_util.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index bf075fd8c..50e66dffe 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -167,6 +167,6 @@ #define HIDE_HEALTHBOXES_DURING_ANIMS TRUE // If set to TRUE, hides healthboxes during move animations #define B_TERRAIN_BG_CHANGE TRUE // If set to TRUE, terrain moves permanently change the default battle background until the effect fades. -#define USE_BATTLE_DEBUG TRUE // If set to TRUE, enables a debug menu to use in battles by pressing the Select button. +#define B_ENABLE_DEBUG TRUE // If set to TRUE, enables a debug menu to use in battles by pressing the Select button. #endif // GUARD_CONSTANTS_BATTLE_CONFIG_H diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index dfb9cc207..939242105 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -331,7 +331,7 @@ static void HandleInputChooseAction(void) { SwapHpBarsWithHpText(); } - else if (USE_BATTLE_DEBUG && gMain.newKeys & SELECT_BUTTON) + else if (B_ENABLE_DEBUG && gMain.newKeys & SELECT_BUTTON) { BtlController_EmitTwoReturnValues(1, B_ACTION_DEBUG, 0); PlayerBufferExecCompleted(); diff --git a/src/battle_util.c b/src/battle_util.c index b929b7499..3a9ffe5ee 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6155,7 +6155,7 @@ u32 GetBattlerHoldEffect(u8 battlerId, bool32 checkNegating) gPotentialItemEffectBattler = battlerId; - if (USE_BATTLE_DEBUG && gBattleStruct->debugHoldEffects[battlerId] != 0 && gBattleMons[battlerId].item) + if (B_ENABLE_DEBUG && gBattleStruct->debugHoldEffects[battlerId] != 0 && gBattleMons[battlerId].item) return gBattleStruct->debugHoldEffects[battlerId]; else if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY) return gEnigmaBerries[battlerId].holdEffect; @@ -7624,7 +7624,7 @@ bool32 CanMegaEvolve(u8 battlerId) // Check if there is an entry in the evolution table for regular Mega Evolution. if (GetMegaEvolutionSpecies(species, itemId) != SPECIES_NONE) { - if (USE_BATTLE_DEBUG && gBattleStruct->debugHoldEffects[battlerId]) + if (B_ENABLE_DEBUG && gBattleStruct->debugHoldEffects[battlerId]) holdEffect = gBattleStruct->debugHoldEffects[battlerId]; else if (itemId == ITEM_ENIGMA_BERRY) holdEffect = gEnigmaBerries[battlerId].holdEffect; From 769ddf22c266c2bf41d3353c5972bca8fa49c085 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 24 Dec 2020 16:18:47 -0500 Subject: [PATCH 101/116] Label remaining subs in battle_tower.c --- asm/macros/battle_frontier/battle_tower.inc | 6 +- .../scripts.inc | 2 +- include/battle_tower.h | 2 +- include/constants/battle_tower.h | 2 +- include/pokemon.h | 4 +- include/recorded_battle.h | 2 +- src/battle_main.c | 2 +- src/battle_tower.c | 62 +++++++++++-------- src/pokemon.c | 23 ++++--- src/recorded_battle.c | 2 +- 10 files changed, 60 insertions(+), 47 deletions(-) diff --git a/asm/macros/battle_frontier/battle_tower.inc b/asm/macros/battle_frontier/battle_tower.inc index 71e795b1d..ccc777c50 100644 --- a/asm/macros/battle_frontier/battle_tower.inc +++ b/asm/macros/battle_frontier/battle_tower.inc @@ -72,9 +72,9 @@ special CallBattleTowerFunc .endm - @ Unknown. Destroys some link task if using wireless link. Wait for link? - .macro tower_unklink - setvar VAR_0x8004, BATTLE_TOWER_FUNC_13 + @ Attempts to close link connection. Used when finishing a link multi challenge. + .macro tower_closelink + setvar VAR_0x8004, BATTLE_TOWER_FUNC_TRY_CLOSE_LINK special CallBattleTowerFunc .endm diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc index 493588b4d..cc623e216 100644 --- a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc @@ -443,7 +443,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyMultis:: @ 82421F2 end BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyLinkMultis:: @ 82421FC - tower_unklink + tower_closelink warp MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY, 255, 18, 6 waitstate end diff --git a/include/battle_tower.h b/include/battle_tower.h index 30649719b..a80314592 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -83,6 +83,6 @@ u8 GetFrontierEnemyMonLevel(u8 lvlMode); s32 GetHighestLevelInPlayerParty(void); u8 FacilityClassToGraphicsId(u8 facilityClass); bool32 ValidateBattleTowerRecord(u8 recordId); // unused -void sub_8166188(void); +void TrySetLinkBattleTowerEnemyPartyLevel(void); #endif //GUARD_BATTLE_TOWER_H diff --git a/include/constants/battle_tower.h b/include/constants/battle_tower.h index b372c3ad5..f661ddc0b 100644 --- a/include/constants/battle_tower.h +++ b/include/constants/battle_tower.h @@ -14,7 +14,7 @@ #define BATTLE_TOWER_FUNC_LOAD_PARTNERS 10 #define BATTLE_TOWER_FUNC_PARTNER_MSG 11 #define BATTLE_TOWER_FUNC_LOAD_LINK_OPPONENTS 12 -#define BATTLE_TOWER_FUNC_13 13 +#define BATTLE_TOWER_FUNC_TRY_CLOSE_LINK 13 #define BATTLE_TOWER_FUNC_SET_PARTNER_GFX 14 #define BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA 15 diff --git a/include/pokemon.h b/include/pokemon.h index a956b9c40..497e8070b 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -275,7 +275,7 @@ void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src); void CreateBattleTowerMon2(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50); void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId); void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId); -void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest); +void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest); void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId); bool8 sub_80688F8(u8 caseId, u8 battlerId); void SetDeoxysStats(void); @@ -381,7 +381,7 @@ void ClearBattleMonForms(void); u16 GetBattleBGM(void); void PlayBattleBGM(void); void PlayMapChosenOrBattleBGM(u16 songId); -void sub_806E694(u16 songId); +void CreateTask_PlayMapChosenOrBattleBGM(u16 songId); const u32 *GetMonFrontSpritePal(struct Pokemon *mon); const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality); const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon); diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 84c5c2ea2..252b25502 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -30,7 +30,7 @@ void sub_818603C(u8 arg0); u32 GetAiScriptsInRecordedBattle(void); void sub_8186444(void); bool8 sub_8186450(void); -void sub_8186468(u8 *dst); +void GetRecordedBattleRecordMixFriendName(u8 *dst); u8 GetRecordedBattleRecordMixFriendClass(void); u8 GetRecordedBattleApprenticeId(void); u8 GetRecordedBattleRecordMixFriendLanguage(void); diff --git a/src/battle_main.c b/src/battle_main.c index 5bc80f61e..29a8f560a 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1357,7 +1357,7 @@ static void CB2_HandleStartMultiPartnerBattle(void) case 16: if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2])) { - sub_8166188(); + TrySetLinkBattleTowerEnemyPartyLevel(); gPreBattleCallback1 = gMain.callback1; gMain.callback1 = BattleMainCB1; SetMainCallback2(BattleMainCB2); diff --git a/src/battle_tower.c b/src/battle_tower.c index d7123f3d2..ee75feeb4 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -57,12 +57,12 @@ static void SetTowerBattleWon(void); static void AwardBattleTowerRibbons(void); static void SaveTowerChallenge(void); static void GetOpponentIntroSpeech(void); -static void nullsub_61(void); -static void nullsub_116(void); +static void BattleTowerNop1(void); +static void BattleTowerNop2(void); static void LoadMultiPartnerCandidatesData(void); static void ShowPartnerCandidateMessage(void); static void LoadLinkMultiOpponentsData(void); -static void sub_8164DCC(void); +static void TowerTryCloseLink(void); static void SetMultiPartnerGfx(void); static void SetTowerInterviewData(void); static void ValidateBattleTowerRecordChecksums(void); @@ -811,12 +811,12 @@ static void (* const sBattleTowerFuncs[])(void) = [BATTLE_TOWER_FUNC_GIVE_RIBBONS] = AwardBattleTowerRibbons, [BATTLE_TOWER_FUNC_SAVE] = SaveTowerChallenge, [BATTLE_TOWER_FUNC_GET_OPPONENT_INTRO] = GetOpponentIntroSpeech, - [BATTLE_TOWER_FUNC_NOP] = nullsub_61, - [BATTLE_TOWER_FUNC_NOP2] = nullsub_116, + [BATTLE_TOWER_FUNC_NOP] = BattleTowerNop1, + [BATTLE_TOWER_FUNC_NOP2] = BattleTowerNop2, [BATTLE_TOWER_FUNC_LOAD_PARTNERS] = LoadMultiPartnerCandidatesData, [BATTLE_TOWER_FUNC_PARTNER_MSG] = ShowPartnerCandidateMessage, [BATTLE_TOWER_FUNC_LOAD_LINK_OPPONENTS] = LoadLinkMultiOpponentsData, - [BATTLE_TOWER_FUNC_13] = sub_8164DCC, + [BATTLE_TOWER_FUNC_TRY_CLOSE_LINK] = TowerTryCloseLink, [BATTLE_TOWER_FUNC_SET_PARTNER_GFX] = SetMultiPartnerGfx, [BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA] = SetTowerInterviewData, }; @@ -1547,7 +1547,7 @@ void GetFrontierTrainerName(u8 *dst, u16 trainerId) { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) { - sub_8186468(dst); + GetRecordedBattleRecordMixFriendName(dst); return; } else @@ -2059,7 +2059,7 @@ void DoSpecialTrainerBattle(void) if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN) FillFrontierTrainerParty(DOME_BATTLE_PARTY_SIZE); CreateTask(Task_StartBattleAfterTransition, 1); - sub_806E694(0); + CreateTask_PlayMapChosenOrBattleBGM(0); BattleTransition_StartOnField(GetSpecialBattleTransition(3)); break; case SPECIAL_BATTLE_PALACE: @@ -2139,7 +2139,7 @@ static void SaveCurrentWinStreak(void) gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = winStreak; } -static void sub_8163EE4(void) +static void SaveBattleTowerRecord(void) { s32 i; u8 lvlMode, battleMode, class; @@ -2178,7 +2178,7 @@ static void sub_8163EE4(void) for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) { if (gSaveBlock2Ptr->frontier.selectedPartyMons[i] != 0) - sub_80686FC(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], &playerRecord->party[i]); + ConvertPokemonToBattleTowerPokemon(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], &playerRecord->party[i]); } playerRecord->language = gGameLanguage; @@ -2193,7 +2193,7 @@ static void SaveTowerChallenge(void) s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7); if (gSpecialVar_0x8005 == 0 && (challengeNum > 1 || gSaveBlock2Ptr->frontier.curChallengeBattleNum != 0)) - sub_8163EE4(); + SaveBattleTowerRecord(); gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005; VarSet(VAR_TEMP_0, 0); @@ -2201,12 +2201,12 @@ static void SaveTowerChallenge(void) SaveGameFrontier(); } -static void nullsub_61(void) +static void BattleTowerNop1(void) { } -static void nullsub_116(void) +static void BattleTowerNop2(void) { } @@ -2410,7 +2410,7 @@ static void LoadMultiPartnerCandidatesData(void) } } -static void sub_81646BC(u16 trainerId, u16 monId) +static void GetPotentialPartnerMoveAndSpecies(u16 trainerId, u16 monId) { u16 move = 0; u16 species = 0; @@ -2445,6 +2445,14 @@ static void sub_81646BC(u16 trainerId, u16 monId) StringCopy(gStringVar2, gSpeciesNames[species]); } +// For multi battles in the Battle Tower, the player may choose a partner by talking to them +// These partners can be an NPC or a former/record-mixed Apprentice +// When talked to, their response consists of: +// PARTNER_MSGID_INTRO - A greeting +// PARTNER_MSGID_MON1 - Naming one pokemon on their team, and a move it has +// PARTNER_MSGID_MON2_ASK - Naming a second pokemon on their team, a move it has, and asking if they'd like to be their partner +// PARTNER_MSGID_ACCEPT - If the player agrees to be their partner +// PARTNER_MSGID_REJECT - If the player declines to be their partner static void ShowPartnerCandidateMessage(void) { s32 i, j, partnerId; @@ -2487,11 +2495,11 @@ static void ShowPartnerCandidateMessage(void) break; case PARTNER_MSGID_MON1: monId = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2]; - sub_81646BC(trainerId, monId); + GetPotentialPartnerMoveAndSpecies(trainerId, monId); break; case PARTNER_MSGID_MON2_ASK: monId = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2]; - sub_81646BC(trainerId, monId); + GetPotentialPartnerMoveAndSpecies(trainerId, monId); break; case PARTNER_MSGID_ACCEPT: gPartnerTrainerId = trainerId; @@ -2643,7 +2651,7 @@ static void LoadLinkMultiOpponentsData(void) } } -static void sub_8164DCC(void) +static void TowerTryCloseLink(void) { if (gWirelessCommType != 0) SetCloseLinkCallback(); @@ -2838,7 +2846,7 @@ static void FillEReaderTrainerWithPlayerData(void) } for (i = 0; i < 3; i++) - sub_80686FC(&gPlayerParty[i], &ereaderTrainer->party[i]); + ConvertPokemonToBattleTowerPokemon(&gPlayerParty[i], &ereaderTrainer->party[i]); SetEReaderTrainerChecksum(ereaderTrainer); } @@ -3292,16 +3300,16 @@ static u8 GetFrontierTrainerFixedIvs(u16 trainerId) return fixedIv; } -static u16 sub_8165D40(void) +static u16 GetBattleTentTrainerId(void) { u32 facility = VarGet(VAR_FRONTIER_FACILITY); - if (facility == FRONTIER_FACILITY_PALACE) - return Random() % 30; - else if (facility == FRONTIER_FACILITY_ARENA) - return Random() % 30; - else if (facility == FRONTIER_FACILITY_FACTORY) - return Random() % 30; + if (facility == FRONTIER_FACILITY_PALACE) // Verdanturf Tent; uses Palace mechanics + return Random() % NUM_BATTLE_TENT_TRAINERS; + else if (facility == FRONTIER_FACILITY_ARENA) // Fallarbor Tent; uses Arena mechanics + return Random() % NUM_BATTLE_TENT_TRAINERS; + else if (facility == FRONTIER_FACILITY_FACTORY) // Slateport Tent; uses Factory mechanics + return Random() % NUM_BATTLE_TENT_TRAINERS; else if (facility == FRONTIER_FACILITY_TOWER) return 0; else @@ -3348,7 +3356,7 @@ static void SetNextBattleTentOpponent(void) do { - trainerId = sub_8165D40(); + trainerId = GetBattleTentTrainerId(); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -3511,7 +3519,7 @@ bool32 ValidateBattleTowerRecord(u8 recordId) // unused } } -void sub_8166188(void) +void TrySetLinkBattleTowerEnemyPartyLevel(void) { if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) { diff --git a/src/pokemon.c b/src/pokemon.c index 475373550..b5eee16b2 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -57,7 +57,7 @@ static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon); static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType); static void EncryptBoxMon(struct BoxPokemon *boxMon); static void DecryptBoxMon(struct BoxPokemon *boxMon); -static void sub_806E6CC(u8 taskId); +static void Task_PlayMapChosenOrBattleBGM(u8 taskId); static bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId); static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); static bool8 ShouldSkipFriendshipChange(void); @@ -2578,7 +2578,7 @@ void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, CalculateMonStats(mon); } -void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest) +void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest) { s32 i; u16 heldItem; @@ -2587,7 +2587,7 @@ void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest) heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, NULL); if (heldItem == ITEM_ENIGMA_BERRY) - heldItem = 0; + heldItem = ITEM_NONE; dest->heldItem = heldItem; @@ -6334,26 +6334,31 @@ void PlayMapChosenOrBattleBGM(u16 songId) PlayNewMapMusic(GetBattleBGM()); } -void sub_806E694(u16 songId) +// Identical to PlayMapChosenOrBattleBGM, but uses a task instead +// Only used by Battle Dome +#define tSongId data[0] +void CreateTask_PlayMapChosenOrBattleBGM(u16 songId) { u8 taskId; ResetMapMusic(); m4aMPlayAllStop(); - taskId = CreateTask(sub_806E6CC, 0); - gTasks[taskId].data[0] = songId; + taskId = CreateTask(Task_PlayMapChosenOrBattleBGM, 0); + gTasks[taskId].tSongId = songId; } -static void sub_806E6CC(u8 taskId) +static void Task_PlayMapChosenOrBattleBGM(u8 taskId) { - if (gTasks[taskId].data[0]) - PlayNewMapMusic(gTasks[taskId].data[0]); + if (gTasks[taskId].tSongId) + PlayNewMapMusic(gTasks[taskId].tSongId); else PlayNewMapMusic(GetBattleBGM()); DestroyTask(taskId); } +#undef tSongId + const u32 *GetMonFrontSpritePal(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 5a0579f70..881c2d3ec 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -846,7 +846,7 @@ bool8 sub_8186450(void) return (sUnknown_0203CCD0 == 0); } -void sub_8186468(u8 *dst) +void GetRecordedBattleRecordMixFriendName(u8 *dst) { s32 i; From b155c307eadea2e5bd168abfce7df677d0edba8f Mon Sep 17 00:00:00 2001 From: Sierraffinity Date: Sat, 26 Dec 2020 17:23:36 -0800 Subject: [PATCH 102/116] Add UBFIX for null deref in CameraObjectReset2 --- src/event_object_movement.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 1d06ddc84..12ef4acdc 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2275,7 +2275,18 @@ u8 CameraObjectGetFollowedObjectId(void) void CameraObjectReset2(void) { + // UB: Possible null dereference +#ifdef UBFIX + struct Sprite *cameraObject; + + cameraObject = FindCameraObject(); + if (cameraObject != NULL) + { + cameraObject->data[1] = 2; + } +#else FindCameraObject()->data[1] = 2; +#endif // UBFIX } u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority) From 86fdd033c62d54d679f2c28b5f446e2ef2df7e3e Mon Sep 17 00:00:00 2001 From: Sierraffinity Date: Sat, 26 Dec 2020 17:39:24 -0800 Subject: [PATCH 103/116] Add UBFIX for null derefs in sub_8088950 --- src/fieldmap.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/fieldmap.c b/src/fieldmap.c index 49337ebbe..296c4edf2 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -797,15 +797,33 @@ bool8 CameraMove(int x, int y) struct MapConnection *sub_8088950(u8 direction, int x, int y) { int count; - struct MapConnection *connection; int i; - count = gMapHeader.connections->count; - connection = gMapHeader.connections->connections; + struct MapConnection *connection; + const struct MapConnections *connections = gMapHeader.connections; + // UB: Multiple possible null dereferences +#ifdef UBFIX + if (connections != NULL) + { + count = connections->count; + connection = connections->connections; + if (connection != NULL) + { + for (i = 0; i < count; i++, connection++) + { + if (connection->direction == direction && sub_80889A8(direction, x, y, connection) == TRUE) + return connection; + } + } + } +#else + count = connections->count; + connection = connections->connections; for (i = 0; i < count; i++, connection++) { if (connection->direction == direction && sub_80889A8(direction, x, y, connection) == TRUE) return connection; } +#endif return NULL; } From bafbf9240d0f91ee3c38ca4652e3c54b9c503c9b Mon Sep 17 00:00:00 2001 From: Sierraffinity Date: Sat, 26 Dec 2020 17:47:36 -0800 Subject: [PATCH 104/116] Add UBFIX for null deref in sub_80D08CC --- src/pokemon_storage_system.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index db8f3d2bb..4be1cf729 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -8408,8 +8408,13 @@ static void sub_80D08CC(void) for (j = sMoveMonsPtr->minRow; j < rowCount; j++) { struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition); - + // UB: possible null dereference +#ifdef UBFIX + if (boxMon != NULL) + sMoveMonsPtr->boxMons[monArrayId] = *boxMon; +#else sMoveMonsPtr->boxMons[monArrayId] = *boxMon; +#endif monArrayId++; boxPosition++; } From 127bb97c0e5c50b9f22715bdf4e958937f7ef992 Mon Sep 17 00:00:00 2001 From: Sierraffinity Date: Sat, 26 Dec 2020 18:25:21 -0800 Subject: [PATCH 105/116] Add UBFIX for division by zero in SpriteCB_PokedexListMonSprite --- src/pokedex.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/pokedex.c b/src/pokedex.c index 516cef6a7..691abd649 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -3037,7 +3037,15 @@ static void SpriteCB_PokedexListMonSprite(struct Sprite *sprite) u32 var; sprite->pos2.y = gSineTable[(u8)sprite->data[5]] * 76 / 256; + // UB: possible division by zero +#ifdef UBFIX + if (gSineTable[sprite->data[5] + 64] != 0) + var = 0x10000 / gSineTable[sprite->data[5] + 64]; + else + var = 0xFFFF; +#else var = 0x10000 / gSineTable[sprite->data[5] + 64]; +#endif //UBFIX if (var > 0xFFFF) var = 0xFFFF; SetOamMatrix(sprite->data[1] + 1, 0x100, 0, 0, var); From ef7832a55cbf8ef0262ba63400afcf5648e8b0be Mon Sep 17 00:00:00 2001 From: Sierraffinity Date: Wed, 30 Dec 2020 17:36:53 -0800 Subject: [PATCH 106/116] Change how mon affine transform fix is handled --- src/pokeball.c | 5 +++++ src/pokemon_animation.c | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pokeball.c b/src/pokeball.c index 92081a296..916c86287 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -1133,6 +1133,11 @@ static void sub_80767D4(struct Sprite *sprite) AnimateBallOpenParticlesForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6); sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5); sprite->callback = sub_807687C; +#ifdef BUGFIX + // FIX: If this is used on a sprite that has previously had an affine animation, it will not + // play the shrink anim properly due to being paused. Works together with the fix to `sub_817F77C`. + gSprites[r7].affineAnimPaused = FALSE; +#endif // BUGFIX StartSpriteAffineAnim(&gSprites[r7], 2); AnimateSprite(&gSprites[r7]); gSprites[r7].data[1] = 0; diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 58c174263..c4077aff4 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -1046,7 +1046,6 @@ static void sub_817F77C(struct Sprite *sprite) { // FIX: Reset these back to normal after they were changed so Poké Ball catch/release // animations without a screen transition in between don't break - sprite->affineAnimPaused = FALSE; sprite->affineAnims = gUnknown_082FF694; } #endif // BUGFIX From ef60edd933a45da68d2d5444cc4b125c9e53958d Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 31 Dec 2020 14:27:46 -0500 Subject: [PATCH 107/116] Remove deadnaming, sync BgEvent --- berry_fix/payload/include/global.fieldmap.h | 17 +++++------------ tools/gbafix/gbafix.c | 8 ++++---- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/berry_fix/payload/include/global.fieldmap.h b/berry_fix/payload/include/global.fieldmap.h index f876e5a56..d5ab0812e 100644 --- a/berry_fix/payload/include/global.fieldmap.h +++ b/berry_fix/payload/include/global.fieldmap.h @@ -79,23 +79,16 @@ struct CoordEvent struct BgEvent { - /*0x00*/u16 x; - /*0x02*/u16 y; - /*0x04*/u8 elevation; - /*0x05*/u8 kind; - /*0x08*/union { // carried over from diego's FR/LG work, seems to be the same struct - // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union. + u16 x, y; + u8 elevation; + u8 kind; // The "kind" field determines how to access bgUnion union below. + union { u8 *script; - - // hidden item type struct { u16 item; - u16 hiddenItemId; // flag offset to determine flag lookup + u16 hiddenItemId; } hiddenItem; - - // secret base type u32 secretBaseId; - } bgUnion; }; diff --git a/tools/gbafix/gbafix.c b/tools/gbafix/gbafix.c index 598e43aa0..d62a9c661 100644 --- a/tools/gbafix/gbafix.c +++ b/tools/gbafix/gbafix.c @@ -28,14 +28,14 @@ // gbafix.c //--------------------------------------------------------------------------------- /* - Gameboy Advance ROM fixer (by Dark Fader / BlackThunder / WinterMute / Diegoisawesome) + Gameboy Advance ROM fixer (by Dark Fader / BlackThunder / WinterMute / Sierraffinity) Validates header of GBA roms. History ------- v1.07 - added support for ELF input, (PikalaxALT) - v1.06 - added output silencing, (Diegoisawesome) - v1.05 - added debug offset argument, (Diegoisawesome) + v1.06 - added output silencing, (Sierraffinity) + v1.05 - added debug offset argument, (Sierraffinity) v1.04 - converted to plain C, (WinterMute) v1.03 - header.fixed, header.device_type v1.02 - redefined the options (rgbfix style), checksum=0 @@ -146,7 +146,7 @@ int main(int argc, char *argv[]) // show syntax if (argc <= 1) { - printf("GBA ROM fixer v"VER" by Dark Fader / BlackThunder / WinterMute / Diegoisawesome \n"); + printf("GBA ROM fixer v"VER" by Dark Fader / BlackThunder / WinterMute / Sierraffinity \n"); printf("Syntax: gbafix [-p] [-t[title]] [-c] [-m] [-r] [-d] [--silent]\n"); printf("\n"); printf("parameters:\n"); From 533d9f1c54eb0012eda884f38af4b15769f4d0bf Mon Sep 17 00:00:00 2001 From: surskitty Date: Thu, 31 Dec 2020 18:17:26 -0500 Subject: [PATCH 108/116] Updating move names and ability names. --- src/data/text/abilities.h | 38 ++++++------- src/data/text/move_names.h | 112 ++++++++++++++++++------------------- 2 files changed, 75 insertions(+), 75 deletions(-) diff --git a/src/data/text/abilities.h b/src/data/text/abilities.h index 37fb15f25..d9ed16b01 100644 --- a/src/data/text/abilities.h +++ b/src/data/text/abilities.h @@ -288,7 +288,7 @@ const u8 gAbilityNames[ABILITIES_COUNT_GEN8][ABILITY_NAME_LENGTH + 1] = [ABILITY_SYNCHRONIZE] = _("Synchronize"), [ABILITY_CLEAR_BODY] = _("Clear Body"), [ABILITY_NATURAL_CURE] = _("Natural Cure"), - [ABILITY_LIGHTNING_ROD] = _("Lightningrod"), + [ABILITY_LIGHTNING_ROD] = _("LightningRod"), [ABILITY_SERENE_GRACE] = _("Serene Grace"), [ABILITY_SWIFT_SWIM] = _("Swift Swim"), [ABILITY_CHLOROPHYLL] = _("Chlorophyll"), @@ -303,7 +303,7 @@ const u8 gAbilityNames[ABILITIES_COUNT_GEN8][ABILITY_NAME_LENGTH + 1] = [ABILITY_SOUNDPROOF] = _("Soundproof"), [ABILITY_RAIN_DISH] = _("Rain Dish"), [ABILITY_SAND_STREAM] = _("Sand Stream"), - [ABILITY_PRESSURE] = _("PRESSURE"), + [ABILITY_PRESSURE] = _("Pressure"), [ABILITY_THICK_FAT] = _("Thick Fat"), [ABILITY_EARLY_BIRD] = _("Early Bird"), [ABILITY_FLAME_BODY] = _("Flame Body"), @@ -446,13 +446,13 @@ const u8 gAbilityNames[ABILITIES_COUNT_GEN8][ABILITY_NAME_LENGTH + 1] = [ABILITY_DARK_AURA] = _("Dark Aura"), [ABILITY_FAIRY_AURA] = _("Fairy Aura"), [ABILITY_AURA_BREAK] = _("Aura Break"), - [ABILITY_PRIMORDIAL_SEA] = _("Primordial S"), + [ABILITY_PRIMORDIAL_SEA] = _("PrimrdialSea"), [ABILITY_DESOLATE_LAND] = _("DesolateLand"), [ABILITY_DELTA_STREAM] = _("Delta Stream"), [ABILITY_STAMINA] = _("Stamina"), [ABILITY_WIMP_OUT] = _("Wimp Out"), - [ABILITY_EMERGENCY_EXIT] = _("Emergency Ex"), - [ABILITY_WATER_COMPACTION] = _("Water Compac"), + [ABILITY_EMERGENCY_EXIT] = _("EmergncyExit"), + [ABILITY_WATER_COMPACTION] = _("WtrCmpaction"), [ABILITY_MERCILESS] = _("Merciless"), [ABILITY_SHIELDS_DOWN] = _("Shields Down"), [ABILITY_STAKEOUT] = _("Stakeout"), @@ -468,10 +468,10 @@ const u8 gAbilityNames[ABILITIES_COUNT_GEN8][ABILITY_NAME_LENGTH + 1] = [ABILITY_SCHOOLING] = _("Schooling"), [ABILITY_DISGUISE] = _("Disguise"), [ABILITY_BATTLE_BOND] = _("Battle Bond"), - [ABILITY_POWER_CONSTRUCT] = _("Power Constr"), + [ABILITY_POWER_CONSTRUCT] = _("PwrConstruct"), [ABILITY_CORROSION] = _("Corrosion"), [ABILITY_COMATOSE] = _("Comatose"), - [ABILITY_QUEENLY_MAJESTY] = _("QueenMajesty"), + [ABILITY_QUEENLY_MAJESTY] = _("QueenlyMjsty"), [ABILITY_INNARDS_OUT] = _("Innards Out"), [ABILITY_DANCER] = _("Dancer"), [ABILITY_BATTERY] = _("Battery"), @@ -480,23 +480,23 @@ const u8 gAbilityNames[ABILITIES_COUNT_GEN8][ABILITY_NAME_LENGTH + 1] = [ABILITY_SOUL_HEART] = _("Soul-Heart"), [ABILITY_TANGLING_HAIR] = _("TanglingHair"), [ABILITY_RECEIVER] = _("Receiver"), - [ABILITY_POWER_OF_ALCHEMY] = _("Power Of Alc"), + [ABILITY_POWER_OF_ALCHEMY] = _("PwrOfAlchemy"), [ABILITY_BEAST_BOOST] = _("Beast Boost"), [ABILITY_RKS_SYSTEM] = _("RKS System"), - [ABILITY_ELECTRIC_SURGE] = _("Elec Surge"), - [ABILITY_PSYCHIC_SURGE] = _("Psy Surge"), + [ABILITY_ELECTRIC_SURGE] = _("ElectrcSurge"), + [ABILITY_PSYCHIC_SURGE] = _("PsychicSurge"), [ABILITY_MISTY_SURGE] = _("Misty Surge"), [ABILITY_GRASSY_SURGE] = _("Grassy Surge"), - [ABILITY_FULL_METAL_BODY] = _("FullMetalBod"), + [ABILITY_FULL_METAL_BODY] = _("FullMetalBdy"), [ABILITY_SHADOW_SHIELD] = _("ShadowShield"), [ABILITY_PRISM_ARMOR] = _("Prism Armor"), [ABILITY_NEUROFORCE] = _("Neuroforce"), - [ABILITY_INTREPID_SWORD] = _("IntrepidSwor"), - [ABILITY_DAUNTLESS_SHIELD] = _("DauntlessShi"), + [ABILITY_INTREPID_SWORD] = _("IntrepidSwrd"), + [ABILITY_DAUNTLESS_SHIELD] = _("DauntlssShld"), [ABILITY_LIBERO] = _("Libero"), [ABILITY_BALL_FETCH] = _("Ball Fetch"), [ABILITY_COTTON_DOWN] = _("Cotton Down"), - [ABILITY_PROPELLER_TAIL] = _("PropellerTai"), + [ABILITY_PROPELLER_TAIL] = _("PropellrTail"), [ABILITY_MIRROR_ARMOR] = _("Mirror Armor"), [ABILITY_GULP_MISSILE] = _("Gulp Missile"), [ABILITY_STALWART] = _("Stalwart"), @@ -508,20 +508,20 @@ const u8 gAbilityNames[ABILITIES_COUNT_GEN8][ABILITY_NAME_LENGTH + 1] = [ABILITY_ICE_FACE] = _("Ice Face"), [ABILITY_POWER_SPOT] = _("Power Spot"), [ABILITY_MIMICRY] = _("Mimicry"), - [ABILITY_SCREEN_CLEANER] = _("ScreenCleane"), + [ABILITY_SCREEN_CLEANER] = _("ScreenCleanr"), [ABILITY_STEELY_SPIRIT] = _("SteelySpirit"), [ABILITY_PERISH_BODY] = _("Perish Body"), - [ABILITY_WANDERING_SPIRIT] = _("WanderingSpi"), + [ABILITY_WANDERING_SPIRIT] = _("WandrngSprit"), [ABILITY_GORILLA_TACTICS] = _("GorillaTacti"), - [ABILITY_NEUTRALIZING_GAS] = _("Neutralizing"), + [ABILITY_NEUTRALIZING_GAS] = _("NutrlizngGas"), [ABILITY_PASTEL_VEIL] = _("Pastel Veil"), [ABILITY_HUNGER_SWITCH] = _("HungerSwitch"), [ABILITY_QUICK_DRAW] = _("Quick Draw"), [ABILITY_UNSEEN_FIST] = _("Unseen Fist"), - [ABILITY_CURIOUS_MEDICINE] = _("CuriousMedic"), + [ABILITY_CURIOUS_MEDICINE] = _("CuriusMedicn"), [ABILITY_TRANSISTOR] = _("Transistor"), [ABILITY_DRAGONS_MAW] = _("Dragon's Maw"), - [ABILITY_CHILLING_NEIGH] = _("ChillingNeig"), + [ABILITY_CHILLING_NEIGH] = _("ChillngNeigh"), [ABILITY_GRIM_NEIGH] = _("Grim Neigh"), [ABILITY_AS_ONE_ICE_RIDER] = _("As One"), [ABILITY_AS_ONE_SHADOW_RIDER] = _("As One"), diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 8df3a514d..877d03253 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -136,7 +136,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_AMNESIA] = _("Amnesia"), [MOVE_KINESIS] = _("Kinesis"), [MOVE_SOFT_BOILED] = _("Soft-Boiled"), - [MOVE_HI_JUMP_KICK] = _("Hi Jump Kick"), + [MOVE_HI_JUMP_KICK] = _("HighJumpKick"), [MOVE_GLARE] = _("Glare"), [MOVE_DREAM_EATER] = _("Dream Eater"), [MOVE_POISON_GAS] = _("Poison Gas"), @@ -185,7 +185,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_PROTECT] = _("Protect"), [MOVE_MACH_PUNCH] = _("Mach Punch"), [MOVE_SCARY_FACE] = _("Scary Face"), - [MOVE_FAINT_ATTACK] = _("Faint Attack"), + [MOVE_FAINT_ATTACK] = _("Feint Attack"), [MOVE_SWEET_KISS] = _("Sweet Kiss"), [MOVE_BELLY_DRUM] = _("Belly Drum"), [MOVE_SLUDGE_BOMB] = _("Sludge Bomb"), @@ -265,7 +265,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_MEMENTO] = _("Memento"), [MOVE_FACADE] = _("Facade"), [MOVE_FOCUS_PUNCH] = _("Focus Punch"), - [MOVE_SMELLING_SALT] = _("SmellingSalt"), + [MOVE_SMELLING_SALT] = _("SmellngSalts"), [MOVE_FOLLOW_ME] = _("Follow Me"), [MOVE_NATURE_POWER] = _("Nature Power"), [MOVE_CHARGE] = _("Charge"), @@ -567,20 +567,20 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_STICKY_WEB] = _("Sticky Web"), [MOVE_FELL_STINGER] = _("Fell Stinger"), [MOVE_PHANTOM_FORCE] = _("PhantomForce"), - [MOVE_TRICK_OR_TREAT] = _("Halloween"), + [MOVE_TRICK_OR_TREAT] = _("TrickOrTreat"), [MOVE_NOBLE_ROAR] = _("Noble Roar"), [MOVE_ION_DELUGE] = _("Ion Deluge"), - [MOVE_PARABOLIC_CHARGE] = _("Parabolic Ch"), - [MOVE_FORESTS_CURSE] = _("ForestsCurse"), - [MOVE_PETAL_BLIZZARD] = _("Petal Storm"), + [MOVE_PARABOLIC_CHARGE] = _("ParabolcChrg"), + [MOVE_FORESTS_CURSE] = _("Forest'sCurs"), + [MOVE_PETAL_BLIZZARD] = _("PetalBlizzrd"), [MOVE_FREEZE_DRY] = _("Freeze-Dry"), - [MOVE_DISARMING_VOICE] = _("Disarming Vo"), + [MOVE_DISARMING_VOICE] = _("DisrmngVoice"), [MOVE_PARTING_SHOT] = _("Parting Shot"), [MOVE_TOPSY_TURVY] = _("Topsy-Turvy"), [MOVE_DRAINING_KISS] = _("DrainingKiss"), [MOVE_CRAFTY_SHIELD] = _("CraftyShield"), [MOVE_FLOWER_SHIELD] = _("FlowerShield"), - [MOVE_GRASSY_TERRAIN] = _("GrassTerrain"), + [MOVE_GRASSY_TERRAIN] = _("GrssyTerrain"), [MOVE_MISTY_TERRAIN] = _("MistyTerrain"), [MOVE_ELECTRIFY] = _("Electrify"), [MOVE_PLAY_ROUGH] = _("Play Rough"), @@ -588,13 +588,13 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_MOONBLAST] = _("Moonblast"), [MOVE_BOOMBURST] = _("Boomburst"), [MOVE_FAIRY_LOCK] = _("Fairy Lock"), - [MOVE_KINGS_SHIELD] = _("Kings Shield"), + [MOVE_KINGS_SHIELD] = _("King'sShield"), [MOVE_PLAY_NICE] = _("Play Nice"), [MOVE_CONFIDE] = _("Confide"), [MOVE_DIAMOND_STORM] = _("DiamondStorm"), - [MOVE_STEAM_ERUPTION] = _("Steam Erupt"), - [MOVE_HYPERSPACE_HOLE] = _("Hyperspace H"), - [MOVE_WATER_SHURIKEN] = _("Water Shuri"), + [MOVE_STEAM_ERUPTION] = _("SteamErption"), + [MOVE_HYPERSPACE_HOLE] = _("HyprspceHole"), + [MOVE_WATER_SHURIKEN] = _("WatrShuriken"), [MOVE_MYSTICAL_FIRE] = _("MysticalFire"), [MOVE_SPIKY_SHIELD] = _("Spiky Shield"), [MOVE_AROMATIC_MIST] = _("AromaticMist"), @@ -604,8 +604,8 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_GEOMANCY] = _("Geomancy"), [MOVE_MAGNETIC_FLUX] = _("MagneticFlux"), [MOVE_HAPPY_HOUR] = _("Happy Hour"), - [MOVE_ELECTRIC_TERRAIN] = _("Electric Ter"), - [MOVE_DAZZLING_GLEAM] = _("Dazzling Gle"), + [MOVE_ELECTRIC_TERRAIN] = _("ElctrcTrrain"), + [MOVE_DAZZLING_GLEAM] = _("DazzlngGleam"), [MOVE_CELEBRATE] = _("Celebrate"), [MOVE_HOLD_HANDS] = _("Hold Hands"), [MOVE_BABY_DOLL_EYES] = _("BabyDollEyes"), @@ -614,23 +614,23 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_INFESTATION] = _("Infestation"), [MOVE_POWER_UP_PUNCH] = _("PowerUpPunch"), [MOVE_OBLIVION_WING] = _("OblivionWing"), - [MOVE_THOUSAND_ARROWS] = _("Thousand Ar"), - [MOVE_THOUSAND_WAVES] = _("Thousand Wav"), - [MOVE_LANDS_WRATH] = _("Lands Wrath"), + [MOVE_THOUSAND_ARROWS] = _("ThousndArrws"), + [MOVE_THOUSAND_WAVES] = _("ThousndWaves"), + [MOVE_LANDS_WRATH] = _("Land's Wrath"), [MOVE_LIGHT_OF_RUIN] = _("LightOfRuin"), [MOVE_ORIGIN_PULSE] = _("Origin Pulse"), - [MOVE_PRECIPICE_BLADES] = _("Precipice Bl"), + [MOVE_PRECIPICE_BLADES] = _("PrcipceBldes"), [MOVE_DRAGON_ASCENT] = _("DragonAscent"), - [MOVE_HYPERSPACE_FURY] = _("Hyperspace F"), + [MOVE_HYPERSPACE_FURY] = _("HyprspceFury"), [MOVE_SHORE_UP] = _("Shore Up"), [MOVE_FIRST_IMPRESSION] = _("First Impres"), - [MOVE_BANEFUL_BUNKER] = _("Baneful Bunk"), - [MOVE_SPIRIT_SHACKLE] = _("Spirit Shack"), - [MOVE_DARKEST_LARIAT] = _("Darkest Lari"), - [MOVE_SPARKLING_ARIA] = _("Sparkling Ar"), + [MOVE_BANEFUL_BUNKER] = _("BanefulBunkr"), + [MOVE_SPIRIT_SHACKLE] = _("SpiritShackl"), + [MOVE_DARKEST_LARIAT] = _("DarkstLariat"), + [MOVE_SPARKLING_ARIA] = _("SparklngAria"), [MOVE_ICE_HAMMER] = _("Ice Hammer"), - [MOVE_FLORAL_HEALING] = _("Floral Heali"), - [MOVE_HIGH_HORSEPOWER] = _("High Horsepo"), + [MOVE_FLORAL_HEALING] = _("FloralHealng"), + [MOVE_HIGH_HORSEPOWER] = _("HighHorsepwr"), [MOVE_STRENGTH_SAP] = _("Strength Sap"), [MOVE_SOLAR_BLADE] = _("Solar Blade"), [MOVE_LEAFAGE] = _("Leafage"), @@ -641,7 +641,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_THROAT_CHOP] = _("Throat Chop"), [MOVE_POLLEN_PUFF] = _("Pollen Puff"), [MOVE_ANCHOR_SHOT] = _("Anchor Shot"), - [MOVE_PSYCHIC_TERRAIN] = _("Psychic Terr"), + [MOVE_PSYCHIC_TERRAIN] = _("PsychcTrrain"), [MOVE_LUNGE] = _("Lunge"), [MOVE_FIRE_LASH] = _("Fire Lash"), [MOVE_POWER_TRIP] = _("Power Trip"), @@ -649,7 +649,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_SPEED_SWAP] = _("Speed Swap"), [MOVE_SMART_STRIKE] = _("Smart Strike"), [MOVE_PURIFY] = _("Purify"), - [MOVE_REVELATION_DANCE] = _("Revelation D"), + [MOVE_REVELATION_DANCE] = _("RvlationDnce"), [MOVE_CORE_ENFORCER] = _("CoreEnforcer"), [MOVE_TROP_KICK] = _("Trop Kick"), [MOVE_INSTRUCT] = _("Instruct"), @@ -661,23 +661,23 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_SHELL_TRAP] = _("Shell Trap"), [MOVE_FLEUR_CANNON] = _("Fleur Cannon"), [MOVE_PSYCHIC_FANGS] = _("PsychicFangs"), - [MOVE_STOMPING_TANTRUM] = _("Stomping Tan"), + [MOVE_STOMPING_TANTRUM] = _("StmpngTantrm"), [MOVE_SHADOW_BONE] = _("Shadow Bone"), [MOVE_ACCELEROCK] = _("Accelerock"), [MOVE_LIQUIDATION] = _("Liquidation"), - [MOVE_PRISMATIC_LASER] = _("Prismatic La"), - [MOVE_SPECTRAL_THIEF] = _("Spectral Thi"), - [MOVE_SUNSTEEL_STRIKE] = _("Sunsteel Str"), - [MOVE_MOONGEIST_BEAM] = _("Moongeist Be"), + [MOVE_PRISMATIC_LASER] = _("PrsmaticLasr"), + [MOVE_SPECTRAL_THIEF] = _("SpectrlThief"), + [MOVE_SUNSTEEL_STRIKE] = _("SnsteelStrke"), + [MOVE_MOONGEIST_BEAM] = _("MoongestBeam"), [MOVE_TEARFUL_LOOK] = _("Tearful Look"), [MOVE_ZING_ZAP] = _("Zing Zap"), - [MOVE_NATURES_MADNESS] = _("Nature's Mad"), + [MOVE_NATURES_MADNESS] = _("Natur'sMadns"), [MOVE_MULTI_ATTACK] = _("Multi-Attack"), [MOVE_MIND_BLOWN] = _("Mind Blown"), [MOVE_PLASMA_FISTS] = _("Plasma Fists"), [MOVE_PHOTON_GEYSER] = _("PhotonGeyser"), [MOVE_ZIPPY_ZAP] = _("Zippy Zap"), - [MOVE_SPLISHY_SPLASH] = _("SplishSplash"), + [MOVE_SPLISHY_SPLASH] = _("SplishySplsh"), [MOVE_FLOATY_FALL] = _("Floaty Fall"), [MOVE_PIKA_PAPOW] = _("Pika Papow"), [MOVE_BOUNCY_BUBBLE] = _("BouncyBubble"), @@ -691,52 +691,52 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_VEEVEE_VOLLEY] = _("VeeveeVolley"), [MOVE_DOUBLE_IRON_BASH] = _("DublIronBash"), //GEN 8 - [MOVE_DYNAMAX_CANNON] = _("Dyna Cannon"), + [MOVE_DYNAMAX_CANNON] = _("DynamxCannon"), [MOVE_SNIPE_SHOT] = _("Snipe Shot"), [MOVE_JAW_LOCK] = _("Jaw Lock"), - [MOVE_STUFF_CHEEKS] = _("StuffCheeks"), + [MOVE_STUFF_CHEEKS] = _("Stuff Cheeks"), [MOVE_NO_RETREAT] = _("No Retreat"), [MOVE_TAR_SHOT] = _("Tar Shot"), - [MOVE_MAGIC_POWDER] = _("MagicPowder"), - [MOVE_DRAGON_DARTS] = _("DragonDarts"), + [MOVE_MAGIC_POWDER] = _("Magic Powder"), + [MOVE_DRAGON_DARTS] = _("Dragon Darts"), [MOVE_TEATIME] = _("Teatime"), [MOVE_OCTOLOCK] = _("Octolock"), [MOVE_BOLT_BEAK] = _("Bolt Beak"), - [MOVE_FISHIOUS_REND] = _("Fishy Rend"), - [MOVE_COURT_CHANGE] = _("CourtChange"), - [MOVE_CLANGOROUS_SOUL] = _("Clangy Soul"), + [MOVE_FISHIOUS_REND] = _("FishiousRend"), + [MOVE_COURT_CHANGE] = _("Court Change"), + [MOVE_CLANGOROUS_SOUL] = _("ClngrousSoul"), [MOVE_BODY_PRESS] = _("Body Press"), [MOVE_DECORATE] = _("Decorate"), - [MOVE_DRUM_BEATING] = _("Drum Beat"), + [MOVE_DRUM_BEATING] = _("Drum Beating"), [MOVE_SNAP_TRAP] = _("Snap Trap"), [MOVE_PYRO_BALL] = _("Pyro Ball"), - [MOVE_BEHEMOTH_BLADE] = _("Behemoth Bl"), - [MOVE_BEHEMOTH_BASH] = _("Behemoth Ba"), + [MOVE_BEHEMOTH_BLADE] = _("BehemthBlade"), + [MOVE_BEHEMOTH_BASH] = _("BehemothBash"), [MOVE_AURA_WHEEL] = _("Aura Wheel"), - [MOVE_BREAKING_SWIPE] = _("Break Swipe"), + [MOVE_BREAKING_SWIPE] = _("BreakngSwipe"), [MOVE_BRANCH_POKE] = _("Branch Poke"), [MOVE_OVERDRIVE] = _("Overdrive"), [MOVE_APPLE_ACID] = _("Apple Acid"), [MOVE_GRAV_APPLE] = _("Grav Apple"), [MOVE_SPIRIT_BREAK] = _("Spirit Break"), - [MOVE_STRANGE_STEAM] = _("Weird Steam"), + [MOVE_STRANGE_STEAM] = _("StrangeSteam"), [MOVE_LIFE_DEW] = _("Life Dew"), [MOVE_OBSTRUCT] = _("Obstruct"), - [MOVE_FALSE_SURRENDER] = _("False Yield"), - [MOVE_METEOR_ASSAULT] = _("Meteor Ass."), + [MOVE_FALSE_SURRENDER] = _("FalsSurrendr"), + [MOVE_METEOR_ASSAULT] = _("MeteorAssalt"), [MOVE_ETERNABEAM] = _("Eternabeam"), [MOVE_STEEL_BEAM] = _("Steel Beam"), - [MOVE_EXPANDING_FORCE] = _("Expand Force"), + [MOVE_EXPANDING_FORCE] = _("ExpandngForc"), [MOVE_STEEL_ROLLER] = _("Steel Roller"), [MOVE_SCALE_SHOT] = _("Scale Shot"), [MOVE_METEOR_BEAM] = _("Meteor Beam"), [MOVE_SHELL_SIDE_ARM] = _("ShellSideArm"), - [MOVE_MISTY_EXPLOSION] = _("Misty Explos"), + [MOVE_MISTY_EXPLOSION] = _("MstyExplsion"), [MOVE_GRASSY_GLIDE] = _("Grassy Glide"), - [MOVE_RISING_VOLTAGE] = _("Rising Volts"), + [MOVE_RISING_VOLTAGE] = _("RisngVoltage"), [MOVE_TERRAIN_PULSE] = _("TerrainPulse"), [MOVE_SKITTER_SMACK] = _("SkitterSmack"), - [MOVE_BURNING_JEALOUSY] = _("BurnJealousy"), + [MOVE_BURNING_JEALOUSY] = _("BrningJelosy"), [MOVE_LASH_OUT] = _("Lash Out"), [MOVE_POLTERGEIST] = _("Poltergeist"), [MOVE_CORROSIVE_GAS] = _("CorrosiveGas"), @@ -744,10 +744,10 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_FLIP_TURN] = _("Flip Turn"), [MOVE_TRIPLE_AXEL] = _("Triple Axel"), [MOVE_DUAL_WINGBEAT] = _("DualWingbeat"), - [MOVE_SCORCHING_SANDS] = _("Scorch Sands"), - [MOVE_JUNGLE_HEALING] = _("Jungle Heal"), + [MOVE_SCORCHING_SANDS] = _("ScorchngSnds"), + [MOVE_JUNGLE_HEALING] = _("JungleHealng"), [MOVE_WICKED_BLOW] = _("Wicked Blow"), - [MOVE_SURGING_STRIKES] = _("SurgeStrikes"), + [MOVE_SURGING_STRIKES] = _("SurgngStrkes"), [MOVE_THUNDER_CAGE] = _("Thunder Cage"), [MOVE_DRAGON_ENERGY] = _("DragonEnergy"), [MOVE_FREEZING_GLARE] = _("FreezngGlare"), From aa9796a6aebe4095d487f8a076864bf305a01937 Mon Sep 17 00:00:00 2001 From: surskitty Date: Thu, 31 Dec 2020 18:57:36 -0500 Subject: [PATCH 109/116] Renaming constants for High Jump Kick, Faint Attack, Smelling Salts, and Vise Grip. --- data/battle_anim_scripts.s | 8 +- include/constants/moves.h | 8 +- src/battle_arena.c | 8 +- src/battle_dome.c | 8 +- src/battle_message.c | 2 +- src/battle_util.c | 2 +- src/data/battle_frontier/apprentice.h | 8 +- .../battle_frontier/battle_frontier_mons.h | 56 ++++++------ .../battle_pyramid_level_50_wild_mons.h | 4 +- .../battle_pyramid_open_level_wild_mons.h | 4 +- src/data/battle_frontier/battle_tent.h | 16 ++-- src/data/battle_frontier/trainer_hill.h | 10 +-- src/data/battle_moves.h | 8 +- src/data/contest_moves.h | 8 +- src/data/contest_opponents.h | 8 +- src/data/easy_chat/easy_chat_group_move_1.h | 2 +- src/data/easy_chat/easy_chat_group_move_2.h | 6 +- .../easy_chat/easy_chat_words_by_letter.h | 8 +- src/data/pokemon/egg_moves.h | 48 +++++----- src/data/pokemon/level_up_learnsets.h | 90 +++++++++---------- src/data/text/move_descriptions.h | 16 ++-- src/data/text/move_names.h | 8 +- src/data/trainer_parties.h | 56 ++++++------ src/ereader_helpers.c | 2 +- src/frontier_util.c | 2 +- 25 files changed, 198 insertions(+), 198 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index ba4beebc1..69b7aacab 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -152,7 +152,7 @@ gBattleAnims_Moves:: .4byte Move_AMNESIA .4byte Move_KINESIS .4byte Move_SOFT_BOILED - .4byte Move_HI_JUMP_KICK + .4byte Move_HIGH_JUMP_KICK .4byte Move_GLARE .4byte Move_DREAM_EATER .4byte Move_POISON_GAS @@ -281,7 +281,7 @@ gBattleAnims_Moves:: .4byte Move_MEMENTO .4byte Move_FACADE .4byte Move_FOCUS_PUNCH - .4byte Move_SMELLING_SALT + .4byte Move_SMELLING_SALTS .4byte Move_FOLLOW_ME .4byte Move_NATURE_POWER .4byte Move_CHARGE @@ -17166,7 +17166,7 @@ Move_FACADE: loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 24, 3 end -Move_SMELLING_SALT: +Move_SMELLING_SALTS: loadspritegfx ANIM_TAG_TAG_HAND loadspritegfx ANIM_TAG_SMELLINGSALT_EFFECT createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 2 @@ -20113,7 +20113,7 @@ Move_JUMP_KICK: blendoff end -Move_HI_JUMP_KICK: +Move_HIGH_JUMP_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER diff --git a/include/constants/moves.h b/include/constants/moves.h index 1c38d54e9..dcec99da1 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -12,7 +12,7 @@ #define MOVE_ICE_PUNCH 8 #define MOVE_THUNDER_PUNCH 9 #define MOVE_SCRATCH 10 -#define MOVE_VICE_GRIP 11 +#define MOVE_VISE_GRIP 11 #define MOVE_GUILLOTINE 12 #define MOVE_RAZOR_WIND 13 #define MOVE_SWORDS_DANCE 14 @@ -137,7 +137,7 @@ #define MOVE_AMNESIA 133 #define MOVE_KINESIS 134 #define MOVE_SOFT_BOILED 135 -#define MOVE_HI_JUMP_KICK 136 +#define MOVE_HIGH_JUMP_KICK 136 #define MOVE_GLARE 137 #define MOVE_DREAM_EATER 138 #define MOVE_POISON_GAS 139 @@ -186,7 +186,7 @@ #define MOVE_PROTECT 182 #define MOVE_MACH_PUNCH 183 #define MOVE_SCARY_FACE 184 -#define MOVE_FAINT_ATTACK 185 +#define MOVE_FEINT_ATTACK 185 #define MOVE_SWEET_KISS 186 #define MOVE_BELLY_DRUM 187 #define MOVE_SLUDGE_BOMB 188 @@ -266,7 +266,7 @@ #define MOVE_MEMENTO 262 #define MOVE_FACADE 263 #define MOVE_FOCUS_PUNCH 264 -#define MOVE_SMELLING_SALT 265 +#define MOVE_SMELLING_SALTS 265 #define MOVE_FOLLOW_ME 266 #define MOVE_NATURE_POWER 267 #define MOVE_CHARGE 268 diff --git a/src/battle_arena.c b/src/battle_arena.c index 0ffba4910..e25b9ce56 100644 --- a/src/battle_arena.c +++ b/src/battle_arena.c @@ -53,7 +53,7 @@ static const s8 sMindRatings[] = [MOVE_ICE_PUNCH] = 1, [MOVE_THUNDER_PUNCH] = 1, [MOVE_SCRATCH] = 1, - [MOVE_VICE_GRIP] = 1, + [MOVE_VISE_GRIP] = 1, [MOVE_GUILLOTINE] = 1, [MOVE_RAZOR_WIND] = 1, [MOVE_SWORDS_DANCE] = 0, @@ -178,7 +178,7 @@ static const s8 sMindRatings[] = [MOVE_AMNESIA] = 0, [MOVE_KINESIS] = 0, [MOVE_SOFT_BOILED] = 0, - [MOVE_HI_JUMP_KICK] = 1, + [MOVE_HIGH_JUMP_KICK] = 1, [MOVE_GLARE] = 0, [MOVE_DREAM_EATER] = 1, [MOVE_POISON_GAS] = 0, @@ -227,7 +227,7 @@ static const s8 sMindRatings[] = [MOVE_PROTECT] = -1, [MOVE_MACH_PUNCH] = 1, [MOVE_SCARY_FACE] = 0, - [MOVE_FAINT_ATTACK] = 1, + [MOVE_FEINT_ATTACK] = 1, [MOVE_SWEET_KISS] = 0, [MOVE_BELLY_DRUM] = 0, [MOVE_SLUDGE_BOMB] = 1, @@ -307,7 +307,7 @@ static const s8 sMindRatings[] = [MOVE_MEMENTO] = 0, [MOVE_FACADE] = 1, [MOVE_FOCUS_PUNCH] = 1, - [MOVE_SMELLING_SALT] = 1, + [MOVE_SMELLING_SALTS] = 1, [MOVE_FOLLOW_ME] = 0, [MOVE_NATURE_POWER] = 0, [MOVE_CHARGE] = 0, diff --git a/src/battle_dome.c b/src/battle_dome.c index 52b7a84f1..0d823653b 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -152,7 +152,7 @@ static const u8 sBattleStyleMovePoints[MOVES_COUNT][NUM_MOVE_POINT_TYPES] = [MOVE_ICE_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, [MOVE_THUNDER_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, [MOVE_SCRATCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_VICE_GRIP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_VISE_GRIP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, [MOVE_GUILLOTINE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1}, [MOVE_RAZOR_WIND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, [MOVE_SWORDS_DANCE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_POPULAR] = 1}, @@ -277,7 +277,7 @@ static const u8 sBattleStyleMovePoints[MOVES_COUNT][NUM_MOVE_POINT_TYPES] = [MOVE_AMNESIA] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, [MOVE_KINESIS] = {[MOVE_POINTS_STAT_LOWER] = 1}, [MOVE_SOFT_BOILED] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_HI_JUMP_KICK] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_HIGH_JUMP_KICK] = {[MOVE_POINTS_DMG] = 1}, [MOVE_GLARE] = {[MOVE_POINTS_STAT_LOWER] = 1}, [MOVE_DREAM_EATER] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_RARE] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, [MOVE_POISON_GAS] = {[MOVE_POINTS_STATUS] = 1}, @@ -326,7 +326,7 @@ static const u8 sBattleStyleMovePoints[MOVES_COUNT][NUM_MOVE_POINT_TYPES] = [MOVE_PROTECT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_POPULAR] = 1}, [MOVE_MACH_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, [MOVE_SCARY_FACE] = {0}, - [MOVE_FAINT_ATTACK] = {[MOVE_POINTS_DMG] = 1}, + [MOVE_FEINT_ATTACK] = {[MOVE_POINTS_DMG] = 1}, [MOVE_SWEET_KISS] = {0}, [MOVE_BELLY_DRUM] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1}, [MOVE_SLUDGE_BOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, @@ -406,7 +406,7 @@ static const u8 sBattleStyleMovePoints[MOVES_COUNT][NUM_MOVE_POINT_TYPES] = [MOVE_MEMENTO] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, [MOVE_FACADE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, [MOVE_FOCUS_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_SMELLING_SALT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, + [MOVE_SMELLING_SALTS] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, [MOVE_FOLLOW_ME] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, [MOVE_NATURE_POWER] = {[MOVE_POINTS_DMG] = 1}, [MOVE_CHARGE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1}, diff --git a/src/battle_message.c b/src/battle_message.c index 35ccc6e26..9ffb3c520 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1775,7 +1775,7 @@ static const u16 sGrammarMoveUsedTable[] = MOVE_FEATHER_DANCE, MOVE_TEETER_DANCE, MOVE_MUD_SPORT, MOVE_FAKE_TEARS, MOVE_WATER_SPORT, MOVE_CALM_MIND, 0, - MOVE_POUND, MOVE_SCRATCH, MOVE_VICE_GRIP, + MOVE_POUND, MOVE_SCRATCH, MOVE_VISE_GRIP, MOVE_WING_ATTACK, MOVE_FLY, MOVE_BIND, MOVE_SLAM, MOVE_HORN_ATTACK, MOVE_WRAP, MOVE_THRASH, MOVE_TAIL_WHIP, MOVE_LEER, MOVE_BITE, MOVE_GROWL, MOVE_ROAR, diff --git a/src/battle_util.c b/src/battle_util.c index b929b7499..37f137252 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1312,7 +1312,7 @@ static bool32 IsGravityPreventingMove(u32 move) case MOVE_BOUNCE: case MOVE_FLY: case MOVE_FLYING_PRESS: - case MOVE_HI_JUMP_KICK: + case MOVE_HIGH_JUMP_KICK: case MOVE_JUMP_KICK: case MOVE_MAGNET_RISE: case MOVE_SKY_DROP: diff --git a/src/data/battle_frontier/apprentice.h b/src/data/battle_frontier/apprentice.h index 349dc9619..e501eb403 100644 --- a/src/data/battle_frontier/apprentice.h +++ b/src/data/battle_frontier/apprentice.h @@ -583,7 +583,7 @@ static const bool8 sValidApprenticeMoves[MOVES_COUNT] = [MOVE_ICE_PUNCH] = TRUE, [MOVE_THUNDER_PUNCH] = TRUE, [MOVE_SCRATCH] = FALSE, - [MOVE_VICE_GRIP] = FALSE, + [MOVE_VISE_GRIP] = FALSE, [MOVE_GUILLOTINE] = TRUE, [MOVE_RAZOR_WIND] = FALSE, [MOVE_SWORDS_DANCE] = TRUE, @@ -708,7 +708,7 @@ static const bool8 sValidApprenticeMoves[MOVES_COUNT] = [MOVE_AMNESIA] = TRUE, [MOVE_KINESIS] = TRUE, [MOVE_SOFT_BOILED] = TRUE, - [MOVE_HI_JUMP_KICK] = TRUE, + [MOVE_HIGH_JUMP_KICK] = TRUE, [MOVE_GLARE] = TRUE, [MOVE_DREAM_EATER] = TRUE, [MOVE_POISON_GAS] = FALSE, @@ -757,7 +757,7 @@ static const bool8 sValidApprenticeMoves[MOVES_COUNT] = [MOVE_PROTECT] = TRUE, [MOVE_MACH_PUNCH] = TRUE, [MOVE_SCARY_FACE] = TRUE, - [MOVE_FAINT_ATTACK] = TRUE, + [MOVE_FEINT_ATTACK] = TRUE, [MOVE_SWEET_KISS] = TRUE, [MOVE_BELLY_DRUM] = TRUE, [MOVE_SLUDGE_BOMB] = TRUE, @@ -837,7 +837,7 @@ static const bool8 sValidApprenticeMoves[MOVES_COUNT] = [MOVE_MEMENTO] = TRUE, [MOVE_FACADE] = TRUE, [MOVE_FOCUS_PUNCH] = TRUE, - [MOVE_SMELLING_SALT] = TRUE, + [MOVE_SMELLING_SALTS] = TRUE, [MOVE_FOLLOW_ME] = TRUE, [MOVE_NATURE_POWER] = TRUE, [MOVE_CHARGE] = TRUE, diff --git a/src/data/battle_frontier/battle_frontier_mons.h b/src/data/battle_frontier/battle_frontier_mons.h index d94d6acaf..e5e992794 100644 --- a/src/data/battle_frontier/battle_frontier_mons.h +++ b/src/data/battle_frontier/battle_frontier_mons.h @@ -163,7 +163,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_WHISMUR] = { .species = SPECIES_WHISMUR, - .moves = {MOVE_UPROAR, MOVE_SWAGGER, MOVE_BODY_SLAM, MOVE_SMELLING_SALT}, + .moves = {MOVE_UPROAR, MOVE_SWAGGER, MOVE_BODY_SLAM, MOVE_SMELLING_SALTS}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED @@ -352,7 +352,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_MEDITITE] = { .species = SPECIES_MEDITITE, - .moves = {MOVE_HI_JUMP_KICK, MOVE_MEDITATE, MOVE_SWAGGER, MOVE_PSYCH_UP}, + .moves = {MOVE_HIGH_JUMP_KICK, MOVE_MEDITATE, MOVE_SWAGGER, MOVE_PSYCH_UP}, .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY @@ -639,7 +639,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_DODUO] = { .species = SPECIES_DODUO, - .moves = {MOVE_FURY_ATTACK, MOVE_UPROAR, MOVE_MUD_SLAP, MOVE_FAINT_ATTACK}, + .moves = {MOVE_FURY_ATTACK, MOVE_UPROAR, MOVE_MUD_SLAP, MOVE_FEINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_LONELY @@ -821,7 +821,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_TEDDIURSA] = { .species = SPECIES_TEDDIURSA, - .moves = {MOVE_SECRET_POWER, MOVE_FAKE_TEARS, MOVE_FAINT_ATTACK, MOVE_REST}, + .moves = {MOVE_SECRET_POWER, MOVE_FAKE_TEARS, MOVE_FEINT_ATTACK, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED @@ -877,7 +877,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_CACNEA] = { .species = SPECIES_CACNEA, - .moves = {MOVE_NEEDLE_ARM, MOVE_FAINT_ATTACK, MOVE_COTTON_SPORE, MOVE_SAND_ATTACK}, + .moves = {MOVE_NEEDLE_ARM, MOVE_FEINT_ATTACK, MOVE_COTTON_SPORE, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY @@ -912,7 +912,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, - .moves = {MOVE_EXTRASENSORY, MOVE_FAKE_OUT, MOVE_RAZOR_WIND, MOVE_FAINT_ATTACK}, + .moves = {MOVE_EXTRASENSORY, MOVE_FAKE_OUT, MOVE_RAZOR_WIND, MOVE_FEINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY @@ -1017,7 +1017,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_SPINDA] = { .species = SPECIES_SPINDA, - .moves = {MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FAINT_ATTACK}, + .moves = {MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FEINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_RELAXED @@ -1136,14 +1136,14 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_DELCATTY_1] = { .species = SPECIES_DELCATTY, - .moves = {MOVE_SECRET_POWER, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_HEAL_BELL}, + .moves = {MOVE_SECRET_POWER, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_HEAL_BELL}, .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY }, [FRONTIER_MON_SABLEYE_1] = { .species = SPECIES_SABLEYE, - .moves = {MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_KNOCK_OFF, MOVE_FAKE_OUT}, + .moves = {MOVE_FEINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_KNOCK_OFF, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_LONELY @@ -1290,7 +1290,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_MURKROW_1] = { .species = SPECIES_MURKROW, - .moves = {MOVE_FAINT_ATTACK, MOVE_FLY, MOVE_TORMENT, MOVE_TAUNT}, + .moves = {MOVE_FEINT_ATTACK, MOVE_FLY, MOVE_TORMENT, MOVE_TAUNT}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY @@ -1353,7 +1353,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_SUDOWOODO_1] = { .species = SPECIES_SUDOWOODO, - .moves = {MOVE_ROCK_SLIDE, MOVE_FAINT_ATTACK, MOVE_SANDSTORM, MOVE_BLOCK}, + .moves = {MOVE_ROCK_SLIDE, MOVE_FEINT_ATTACK, MOVE_SANDSTORM, MOVE_BLOCK}, .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_HARDY @@ -1486,7 +1486,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_SNEASEL_1] = { .species = SPECIES_SNEASEL, - .moves = {MOVE_FAINT_ATTACK, MOVE_FAKE_OUT, MOVE_ICY_WIND, MOVE_QUICK_ATTACK}, + .moves = {MOVE_FEINT_ATTACK, MOVE_FAKE_OUT, MOVE_ICY_WIND, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED @@ -1570,7 +1570,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_NOCTOWL_1] = { .species = SPECIES_NOCTOWL, - .moves = {MOVE_CONFUSION, MOVE_AERIAL_ACE, MOVE_FAINT_ATTACK, MOVE_REFLECT}, + .moves = {MOVE_CONFUSION, MOVE_AERIAL_ACE, MOVE_FEINT_ATTACK, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_RELAXED @@ -1745,14 +1745,14 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_CRAWDAUNT_1] = { .species = SPECIES_CRAWDAUNT, - .moves = {MOVE_BUBBLE_BEAM, MOVE_VICE_GRIP, MOVE_KNOCK_OFF, MOVE_PROTECT}, + .moves = {MOVE_BUBBLE_BEAM, MOVE_VISE_GRIP, MOVE_KNOCK_OFF, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT }, [FRONTIER_MON_PIDGEOT_1] = { .species = SPECIES_PIDGEOT, - .moves = {MOVE_AERIAL_ACE, MOVE_FEATHER_DANCE, MOVE_MUD_SLAP, MOVE_FAINT_ATTACK}, + .moves = {MOVE_AERIAL_ACE, MOVE_FEATHER_DANCE, MOVE_MUD_SLAP, MOVE_FEINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_HARDY @@ -1780,7 +1780,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_CACTURNE_1] = { .species = SPECIES_CACTURNE, - .moves = {MOVE_NEEDLE_ARM, MOVE_FAINT_ATTACK, MOVE_ACID, MOVE_MEGA_PUNCH}, + .moves = {MOVE_NEEDLE_ARM, MOVE_FEINT_ATTACK, MOVE_ACID, MOVE_MEGA_PUNCH}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, .nature = NATURE_HASTY @@ -1878,7 +1878,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_SABLEYE_2] = { .species = SPECIES_SABLEYE, - .moves = {MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_RECOVER}, + .moves = {MOVE_SHADOW_BALL, MOVE_FEINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_RECOVER}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_QUIRKY @@ -2305,7 +2305,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_NOCTOWL_2] = { .species = SPECIES_NOCTOWL, - .moves = {MOVE_PSYCHIC, MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE, MOVE_REFLECT}, + .moves = {MOVE_PSYCHIC, MOVE_FEINT_ATTACK, MOVE_AERIAL_ACE, MOVE_REFLECT}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET @@ -2515,7 +2515,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_CACTURNE_2] = { .species = SPECIES_CACTURNE, - .moves = {MOVE_MEGA_KICK, MOVE_TEETER_DANCE, MOVE_FAINT_ATTACK, MOVE_SANDSTORM}, + .moves = {MOVE_MEGA_KICK, MOVE_TEETER_DANCE, MOVE_FEINT_ATTACK, MOVE_SANDSTORM}, .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, .nature = NATURE_HARDY @@ -2613,7 +2613,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_MEDICHAM_1] = { .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_HI_JUMP_KICK, MOVE_CALM_MIND, MOVE_BATON_PASS}, + .moves = {MOVE_PSYCHIC, MOVE_HIGH_JUMP_KICK, MOVE_CALM_MIND, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_DOCILE @@ -2634,7 +2634,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_GRANBULL_1] = { .species = SPECIES_GRANBULL, - .moves = {MOVE_MEGA_KICK, MOVE_SMELLING_SALT, MOVE_THUNDER_WAVE, MOVE_ROAR}, + .moves = {MOVE_MEGA_KICK, MOVE_SMELLING_SALTS, MOVE_THUNDER_WAVE, MOVE_ROAR}, .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT @@ -2788,7 +2788,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_SHIFTRY_1] = { .species = SPECIES_SHIFTRY, - .moves = {MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK, MOVE_FAKE_OUT}, + .moves = {MOVE_GIGA_DRAIN, MOVE_FEINT_ATTACK, MOVE_QUICK_ATTACK, MOVE_FAKE_OUT}, .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, .nature = NATURE_QUIET @@ -3082,7 +3082,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_FLYGON_1] = { .species = SPECIES_FLYGON, - .moves = {MOVE_EARTHQUAKE, MOVE_STEEL_WING, MOVE_FAINT_ATTACK, MOVE_FACADE}, + .moves = {MOVE_EARTHQUAKE, MOVE_STEEL_WING, MOVE_FEINT_ATTACK, MOVE_FACADE}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT @@ -3131,7 +3131,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_UMBREON_1] = { .species = SPECIES_UMBREON, - .moves = {MOVE_CONFUSE_RAY, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BATON_PASS}, + .moves = {MOVE_CONFUSE_RAY, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BATON_PASS}, .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD @@ -3341,7 +3341,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_DODRIO_2] = { .species = SPECIES_DODRIO, - .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_FAINT_ATTACK, MOVE_PROTECT}, + .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_FEINT_ATTACK, MOVE_PROTECT}, .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT @@ -3971,7 +3971,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_FEAROW_3] = { .species = SPECIES_FEAROW, - .moves = {MOVE_DRILL_PECK, MOVE_RETURN, MOVE_STEEL_WING, MOVE_FAINT_ATTACK}, + .moves = {MOVE_DRILL_PECK, MOVE_RETURN, MOVE_STEEL_WING, MOVE_FEINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_HARDY @@ -3999,7 +3999,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_DODRIO_3] = { .species = SPECIES_DODRIO, - .moves = {MOVE_DOUBLE_EDGE, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_FAINT_ATTACK}, + .moves = {MOVE_DOUBLE_EDGE, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_FEINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT @@ -5147,7 +5147,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = }, [FRONTIER_MON_UMBREON_4] = { .species = SPECIES_UMBREON, - .moves = {MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM}, + .moves = {MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_BOLD diff --git a/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h b/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h index d706aafee..391c84feb 100644 --- a/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h +++ b/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h @@ -132,7 +132,7 @@ static const struct PyramidWildMon sLevel50WildMons_Round3[] = .species = SPECIES_MEDICHAM, .lvl = 41, .abilityNum = ABILITY_RANDOM, - .moves = {MOVE_FIRE_PUNCH, MOVE_HI_JUMP_KICK, MOVE_NONE, MOVE_NONE} + .moves = {MOVE_FIRE_PUNCH, MOVE_HIGH_JUMP_KICK, MOVE_NONE, MOVE_NONE} }, { .species = SPECIES_WEEZING, @@ -686,7 +686,7 @@ static const struct PyramidWildMon sLevel50WildMons_Round14[] = .species = SPECIES_SNEASEL, .lvl = 42, .abilityNum = ABILITY_RANDOM, - .moves = {MOVE_ICE_BEAM, MOVE_TAUNT, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK} + .moves = {MOVE_ICE_BEAM, MOVE_TAUNT, MOVE_FEINT_ATTACK, MOVE_QUICK_ATTACK} }, { .species = SPECIES_CRAWDAUNT, diff --git a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h index 8738b0de6..043488b93 100644 --- a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h +++ b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h @@ -132,7 +132,7 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round3[] = .species = SPECIES_MEDICHAM, .lvl = 6, .abilityNum = ABILITY_RANDOM, - .moves = {MOVE_FIRE_PUNCH, MOVE_HI_JUMP_KICK, MOVE_NONE, MOVE_NONE} + .moves = {MOVE_FIRE_PUNCH, MOVE_HIGH_JUMP_KICK, MOVE_NONE, MOVE_NONE} }, { .species = SPECIES_WEEZING, @@ -686,7 +686,7 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round14[] = .species = SPECIES_SNEASEL, .lvl = 10, .abilityNum = ABILITY_RANDOM, - .moves = {MOVE_ICE_BEAM, MOVE_TAUNT, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK} + .moves = {MOVE_ICE_BEAM, MOVE_TAUNT, MOVE_FEINT_ATTACK, MOVE_QUICK_ATTACK} }, { .species = SPECIES_CRAWDAUNT, diff --git a/src/data/battle_frontier/battle_tent.h b/src/data/battle_frontier/battle_tent.h index bf89c5bc3..1615d9562 100644 --- a/src/data/battle_frontier/battle_tent.h +++ b/src/data/battle_frontier/battle_tent.h @@ -979,7 +979,7 @@ const struct FacilityMon gSlateportBattleTentMons[NUM_SLATEPORT_TENT_MONS] = }, [SLATEPORT_TENT_MON_SPINDA] = { .species = SPECIES_SPINDA, - .moves = {MOVE_DIZZY_PUNCH, MOVE_FAINT_ATTACK, MOVE_HYPNOSIS, MOVE_REST}, + .moves = {MOVE_DIZZY_PUNCH, MOVE_FEINT_ATTACK, MOVE_HYPNOSIS, MOVE_REST}, .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_ADAMANT @@ -1063,7 +1063,7 @@ const struct FacilityMon gSlateportBattleTentMons[NUM_SLATEPORT_TENT_MONS] = }, [SLATEPORT_TENT_MON_KECLEON_2] = { .species = SPECIES_KECLEON, - .moves = {MOVE_FAINT_ATTACK, MOVE_ASTONISH, MOVE_LICK, MOVE_SCREECH}, + .moves = {MOVE_FEINT_ATTACK, MOVE_ASTONISH, MOVE_LICK, MOVE_SCREECH}, .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY, .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, .nature = NATURE_CALM @@ -1098,7 +1098,7 @@ const struct FacilityMon gSlateportBattleTentMons[NUM_SLATEPORT_TENT_MONS] = }, [SLATEPORT_TENT_MON_TRAPINCH_2] = { .species = SPECIES_TRAPINCH, - .moves = {MOVE_FAINT_ATTACK, MOVE_DIG, MOVE_BITE, MOVE_QUICK_ATTACK}, + .moves = {MOVE_FEINT_ATTACK, MOVE_DIG, MOVE_BITE, MOVE_QUICK_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_BRAVE @@ -1892,7 +1892,7 @@ const struct FacilityMon gVerdanturfBattleTentMons[NUM_VERDANTURF_TENT_MONS] = }, [VERDANTURF_TENT_MON_KECLEON] = { .species = SPECIES_KECLEON, - .moves = {MOVE_SUBSTITUTE, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BIND}, + .moves = {MOVE_SUBSTITUTE, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BIND}, .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, .nature = NATURE_QUIET @@ -1913,7 +1913,7 @@ const struct FacilityMon gVerdanturfBattleTentMons[NUM_VERDANTURF_TENT_MONS] = }, [VERDANTURF_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, - .moves = {MOVE_BULK_UP, MOVE_ARM_THRUST, MOVE_SMELLING_SALT, MOVE_SAND_ATTACK}, + .moves = {MOVE_BULK_UP, MOVE_ARM_THRUST, MOVE_SMELLING_SALTS, MOVE_SAND_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, .nature = NATURE_NAUGHTY @@ -2067,7 +2067,7 @@ const struct FacilityMon gVerdanturfBattleTentMons[NUM_VERDANTURF_TENT_MONS] = }, [VERDANTURF_TENT_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, - .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_FAINT_ATTACK}, + .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_FEINT_ATTACK}, .itemTableId = BATTLE_FRONTIER_ITEM_NONE, .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_NAUGHTY @@ -2717,7 +2717,7 @@ const struct FacilityMon gFallarborBattleTentMons[NUM_FALLARBOR_TENT_MONS] = }, [FALLARBOR_TENT_MON_KECLEON] = { .species = SPECIES_KECLEON, - .moves = {MOVE_LICK, MOVE_SLASH, MOVE_FAINT_ATTACK, MOVE_PSYBEAM}, + .moves = {MOVE_LICK, MOVE_SLASH, MOVE_FEINT_ATTACK, MOVE_PSYBEAM}, .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, .nature = NATURE_MODEST @@ -2738,7 +2738,7 @@ const struct FacilityMon gFallarborBattleTentMons[NUM_FALLARBOR_TENT_MONS] = }, [FALLARBOR_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, - .moves = {MOVE_DETECT, MOVE_ARM_THRUST, MOVE_FAKE_OUT, MOVE_SMELLING_SALT}, + .moves = {MOVE_DETECT, MOVE_ARM_THRUST, MOVE_FAKE_OUT, MOVE_SMELLING_SALTS}, .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, .nature = NATURE_ADAMANT diff --git a/src/data/battle_frontier/trainer_hill.h b/src/data/battle_frontier/trainer_hill.h index 1b41024d0..0268526a6 100644 --- a/src/data/battle_frontier/trainer_hill.h +++ b/src/data/battle_frontier/trainer_hill.h @@ -704,7 +704,7 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = { .species = SPECIES_PINSIR, .heldItem = ITEM_QUICK_CLAW, - .moves = {MOVE_GUILLOTINE, MOVE_BRICK_BREAK, MOVE_SWAGGER, MOVE_FAINT_ATTACK}, + .moves = {MOVE_GUILLOTINE, MOVE_BRICK_BREAK, MOVE_SWAGGER, MOVE_FEINT_ATTACK}, .level = 0, .ppBonuses = 0, .hpEV = 200, @@ -1259,7 +1259,7 @@ static const struct TrHillFloor sDataTagNormal_Floors[] = { .species = SPECIES_MEDICHAM, .heldItem = ITEM_QUICK_CLAW, - .moves = {MOVE_PSYCH_UP, MOVE_HI_JUMP_KICK, MOVE_MEGA_KICK, MOVE_ROCK_SLIDE}, + .moves = {MOVE_PSYCH_UP, MOVE_HIGH_JUMP_KICK, MOVE_MEGA_KICK, MOVE_ROCK_SLIDE}, .level = 0, .ppBonuses = 0, .hpEV = 252, @@ -1899,7 +1899,7 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = { { .species = SPECIES_SABLEYE, .heldItem = ITEM_SILK_SCARF, - .moves = {MOVE_ASTONISH, MOVE_FAINT_ATTACK, MOVE_DETECT, MOVE_CONFUSE_RAY}, + .moves = {MOVE_ASTONISH, MOVE_FEINT_ATTACK, MOVE_DETECT, MOVE_CONFUSE_RAY}, .level = 0, .ppBonuses = 0, .hpEV = 255, @@ -4130,7 +4130,7 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = { { .species = SPECIES_HITMONLEE, .heldItem = ITEM_FOCUS_BAND, - .moves = {MOVE_MEGA_KICK, MOVE_MIND_READER, MOVE_FOCUS_ENERGY, MOVE_HI_JUMP_KICK}, + .moves = {MOVE_MEGA_KICK, MOVE_MIND_READER, MOVE_FOCUS_ENERGY, MOVE_HIGH_JUMP_KICK}, .level = 0, .ppBonuses = 0, .hpEV = 255, @@ -4889,7 +4889,7 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = { { .species = SPECIES_BANETTE, .heldItem = ITEM_FOCUS_BAND, - .moves = {MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_ATTRACT, MOVE_WILL_O_WISP}, + .moves = {MOVE_SHADOW_BALL, MOVE_FEINT_ATTACK, MOVE_ATTRACT, MOVE_WILL_O_WISP}, .level = 0, .ppBonuses = 0, .hpEV = 252, diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 13cef869b..32a9d9c1c 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -154,7 +154,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .split = SPLIT_PHYSICAL, }, - [MOVE_VICE_GRIP] = + [MOVE_VISE_GRIP] = { .effect = EFFECT_HIT, .power = 55, @@ -2110,7 +2110,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .split = SPLIT_STATUS, }, - [MOVE_HI_JUMP_KICK] = + [MOVE_HIGH_JUMP_KICK] = { #if B_UPDATED_MOVE_DATA >= GEN_5 .power = 130, @@ -2902,7 +2902,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .split = SPLIT_STATUS, }, - [MOVE_FAINT_ATTACK] = + [MOVE_FEINT_ATTACK] = { #if B_UPDATED_MOVE_DATA >= GEN_4 .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, @@ -4171,7 +4171,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .split = SPLIT_PHYSICAL, }, - [MOVE_SMELLING_SALT] = + [MOVE_SMELLING_SALTS] = { #if B_UPDATED_MOVE_DATA >= GEN_6 .power = 70, diff --git a/src/data/contest_moves.h b/src/data/contest_moves.h index 682c15e97..2e8fd8089 100644 --- a/src/data/contest_moves.h +++ b/src/data/contest_moves.h @@ -83,7 +83,7 @@ const struct ContestMove gContestMoves[MOVES_COUNT] = .comboMoves = {COMBO_STARTER_LEER}, }, - [MOVE_VICE_GRIP] = + [MOVE_VISE_GRIP] = { .effect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, @@ -1083,7 +1083,7 @@ const struct ContestMove gContestMoves[MOVES_COUNT] = .comboMoves = {0} }, - [MOVE_HI_JUMP_KICK] = + [MOVE_HIGH_JUMP_KICK] = { .effect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, @@ -1469,7 +1469,7 @@ const struct ContestMove gContestMoves[MOVES_COUNT] = .comboMoves = {COMBO_STARTER_LEER, COMBO_STARTER_RAGE}, }, - [MOVE_FAINT_ATTACK] = + [MOVE_FEINT_ATTACK] = { .effect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, @@ -2109,7 +2109,7 @@ const struct ContestMove gContestMoves[MOVES_COUNT] = .comboMoves = {COMBO_STARTER_FOCUS_ENERGY}, }, - [MOVE_SMELLING_SALT] = + [MOVE_SMELLING_SALTS] = { .effect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, diff --git a/src/data/contest_opponents.h b/src/data/contest_opponents.h index 127457bbe..b1680189c 100644 --- a/src/data/contest_opponents.h +++ b/src/data/contest_opponents.h @@ -959,7 +959,7 @@ const struct ContestPokemon gContestOpponents[] = MOVE_BITE, MOVE_SAND_ATTACK, MOVE_DIG, - MOVE_FAINT_ATTACK + MOVE_FEINT_ATTACK }, .cool = 75, .beauty = 25, @@ -2190,7 +2190,7 @@ const struct ContestPokemon gContestOpponents[] = { MOVE_ROAR, MOVE_FLAMETHROWER, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_SUNNY_DAY }, .cool = 100, @@ -2302,7 +2302,7 @@ const struct ContestPokemon gContestOpponents[] = { MOVE_ATTRACT, MOVE_ASSIST, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_TAIL_WHIP }, .cool = 40, @@ -2441,7 +2441,7 @@ const struct ContestPokemon gContestOpponents[] = .moves = { MOVE_MEAN_LOOK, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_KNOCK_OFF, MOVE_CONFUSE_RAY }, diff --git a/src/data/easy_chat/easy_chat_group_move_1.h b/src/data/easy_chat/easy_chat_group_move_1.h index 3b0e8acca..742484f40 100755 --- a/src/data/easy_chat/easy_chat_group_move_1.h +++ b/src/data/easy_chat/easy_chat_group_move_1.h @@ -121,7 +121,7 @@ const u16 gEasyChatGroup_Move1[] = { MOVE_SKY_ATTACK, MOVE_SKY_UPPERCUT, MOVE_SLASH, - MOVE_SMELLING_SALT, + MOVE_SMELLING_SALTS, MOVE_SMOG, MOVE_SMOKESCREEN, MOVE_SNORE, diff --git a/src/data/easy_chat/easy_chat_group_move_2.h b/src/data/easy_chat/easy_chat_group_move_2.h index e0a0cd379..81d77b8f2 100755 --- a/src/data/easy_chat/easy_chat_group_move_2.h +++ b/src/data/easy_chat/easy_chat_group_move_2.h @@ -53,7 +53,7 @@ const u16 gEasyChatGroup_Move2[] = { MOVE_EMBER, MOVE_ERUPTION, MOVE_EXPLOSION, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_FAKE_OUT, MOVE_FALSE_SWIPE, MOVE_FEATHER_DANCE, @@ -73,7 +73,7 @@ const u16 gEasyChatGroup_Move2[] = { MOVE_GUILLOTINE, MOVE_HEAT_WAVE, MOVE_HELPING_HAND, - MOVE_HI_JUMP_KICK, + MOVE_HIGH_JUMP_KICK, MOVE_HIDDEN_POWER, MOVE_HORN_ATTACK, MOVE_HORN_DRILL, @@ -189,7 +189,7 @@ const u16 gEasyChatGroup_Move2[] = { MOVE_TRIPLE_KICK, MOVE_TWINEEDLE, MOVE_TWISTER, - MOVE_VICE_GRIP, + MOVE_VISE_GRIP, MOVE_VINE_WHIP, MOVE_VOLT_TACKLE, MOVE_WATER_GUN, diff --git a/src/data/easy_chat/easy_chat_words_by_letter.h b/src/data/easy_chat/easy_chat_words_by_letter.h index 927b9db2f..347f875d4 100755 --- a/src/data/easy_chat/easy_chat_words_by_letter.h +++ b/src/data/easy_chat/easy_chat_words_by_letter.h @@ -486,7 +486,7 @@ const u16 gEasyChatWordsByLetter_F[] = { EC_WORD_FABULOUS, EC_MOVE(FACADE), EC_WORD_FAINT, - EC_MOVE2(FAINT_ATTACK), + EC_MOVE2(FEINT_ATTACK), EC_WORD_FAINTED, EC_MOVE2(FAKE_OUT), EC_MOVE(FAKE_TEARS), @@ -705,7 +705,7 @@ const u16 gEasyChatWordsByLetter_H[] = { EC_WORD_HEY_THERE, EC_WORD_HEY_QUES, EC_WORD_HI, - EC_MOVE2(HI_JUMP_KICK), + EC_MOVE2(HIGH_JUMP_KICK), EC_WORD_HIDDEN, EC_MOVE2(HIDDEN_POWER), EC_WORD_HIGH, @@ -1504,7 +1504,7 @@ const u16 gEasyChatWordsByLetter_S[] = { EC_POKEMON2(SMEARGLE), EC_WORD_SMELL, EC_WORD_SMELL_YA, - EC_MOVE(SMELLING_SALT), + EC_MOVE(SMELLING_SALTS), EC_WORD_SMITE, EC_MOVE(SMOG), EC_MOVE(SMOKESCREEN), @@ -1793,7 +1793,7 @@ const u16 gEasyChatWordsByLetter_V[] = { EC_WORD_VERSUS, EC_WORD_VERY, EC_POKEMON(VIBRAVA), - EC_MOVE2(VICE_GRIP), + EC_MOVE2(VISE_GRIP), EC_WORD_VICTORY, EC_POKEMON2(VICTREEBEL), EC_WORD_VIEWING, diff --git a/src/data/pokemon/egg_moves.h b/src/data/pokemon/egg_moves.h index f8c250c6d..a9bcededb 100644 --- a/src/data/pokemon/egg_moves.h +++ b/src/data/pokemon/egg_moves.h @@ -35,7 +35,7 @@ const u16 gEggMoves[] = { egg_moves(PIDGEY, MOVE_PURSUIT, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_FORESIGHT, MOVE_STEEL_WING, MOVE_AIR_CUTTER), @@ -51,7 +51,7 @@ const u16 gEggMoves[] = { MOVE_SWAGGER), egg_moves(SPEAROW, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_FALSE_SWIPE, MOVE_SCARY_FACE, MOVE_QUICK_ATTACK, @@ -95,7 +95,7 @@ const u16 gEggMoves[] = { MOVE_BEAT_UP), egg_moves(VULPIX, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_HYPNOSIS, MOVE_FLAIL, MOVE_SPITE, @@ -107,7 +107,7 @@ const u16 gEggMoves[] = { egg_moves(ZUBAT, MOVE_QUICK_ATTACK, MOVE_PURSUIT, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_GUST, MOVE_WHIRLWIND, MOVE_CURSE), @@ -137,7 +137,7 @@ const u16 gEggMoves[] = { MOVE_SIGNAL_BEAM), egg_moves(DIGLETT, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_SCREECH, MOVE_ANCIENT_POWER, MOVE_PURSUIT, @@ -171,7 +171,7 @@ const u16 gEggMoves[] = { MOVE_REVERSAL, MOVE_BEAT_UP, MOVE_REVENGE, - MOVE_SMELLING_SALT), + MOVE_SMELLING_SALTS), egg_moves(GROWLITHE, MOVE_BODY_SLAM, @@ -204,7 +204,7 @@ const u16 gEggMoves[] = { MOVE_MEDITATE, MOVE_ROLLING_KICK, MOVE_ENCORE, - MOVE_SMELLING_SALT, + MOVE_SMELLING_SALTS, MOVE_COUNTER, MOVE_ROCK_SLIDE), @@ -261,7 +261,7 @@ const u16 gEggMoves[] = { MOVE_QUICK_ATTACK, MOVE_SUPERSONIC, MOVE_HAZE, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_FLAIL, MOVE_ENDEAVOR), @@ -347,7 +347,7 @@ const u16 gEggMoves[] = { MOVE_MAGNITUDE, MOVE_BODY_SLAM, MOVE_CURSE, - MOVE_SMELLING_SALT, + MOVE_SMELLING_SALTS, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SUBSTITUTE), @@ -434,7 +434,7 @@ const u16 gEggMoves[] = { MOVE_FURY_ATTACK, MOVE_FLAIL, MOVE_FALSE_SWIPE, - MOVE_FAINT_ATTACK), + MOVE_FEINT_ATTACK), egg_moves(LAPRAS, MOVE_FORESIGHT, @@ -539,7 +539,7 @@ const u16 gEggMoves[] = { egg_moves(HOOTHOOT, MOVE_MIRROR_MOVE, MOVE_SUPERSONIC, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_WING_ATTACK, MOVE_WHIRLWIND, MOVE_SKY_ATTACK, @@ -585,7 +585,7 @@ const u16 gEggMoves[] = { egg_moves(IGGLYBUFF, MOVE_PERISH_SONG, MOVE_PRESENT, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_WISH, MOVE_FAKE_TEARS), @@ -602,7 +602,7 @@ const u16 gEggMoves[] = { MOVE_HAZE, MOVE_DRILL_PECK, MOVE_QUICK_ATTACK, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_STEEL_WING, MOVE_PSYCH_UP, MOVE_FEATHER_DANCE, @@ -726,13 +726,13 @@ const u16 gEggMoves[] = { egg_moves(SNUBBULL, MOVE_METRONOME, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_REFLECT, MOVE_PRESENT, MOVE_CRUNCH, MOVE_HEAL_BELL, MOVE_SNORE, - MOVE_SMELLING_SALT), + MOVE_SMELLING_SALTS), egg_moves(QWILFISH, MOVE_FLAIL, @@ -853,7 +853,7 @@ const u16 gEggMoves[] = { egg_moves(TYROGUE, MOVE_RAPID_SPIN, - MOVE_HI_JUMP_KICK, + MOVE_HIGH_JUMP_KICK, MOVE_MACH_PUNCH, MOVE_MIND_READER, MOVE_HELPING_HAND), @@ -915,7 +915,7 @@ const u16 gEggMoves[] = { MOVE_ENDURE, MOVE_SWAGGER, MOVE_ROCK_SLIDE, - MOVE_SMELLING_SALT), + MOVE_SMELLING_SALTS), egg_moves(MUDKIP, MOVE_REFRESH, @@ -957,7 +957,7 @@ const u16 gEggMoves[] = { egg_moves(NINCADA, MOVE_ENDURE, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_GUST, MOVE_SILVER_WIND), @@ -984,7 +984,7 @@ const u16 gEggMoves[] = { MOVE_BATON_PASS, MOVE_WISH, MOVE_TRICK, - MOVE_SMELLING_SALT), + MOVE_SMELLING_SALTS), egg_moves(WINGULL, MOVE_MIST, @@ -1077,7 +1077,7 @@ const u16 gEggMoves[] = { MOVE_GUST), egg_moves(MAKUHITA, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_DETECT, MOVE_FORESIGHT, MOVE_HELPING_HAND, @@ -1172,7 +1172,7 @@ const u16 gEggMoves[] = { MOVE_PAIN_SPLIT, MOVE_GRUDGE, MOVE_MEMENTO, - MOVE_FAINT_ATTACK), + MOVE_FEINT_ATTACK), egg_moves(ROSELIA, MOVE_SPIKES, @@ -1207,7 +1207,7 @@ const u16 gEggMoves[] = { MOVE_SNORE, MOVE_SWAGGER, MOVE_EXTRASENSORY, - MOVE_SMELLING_SALT), + MOVE_SMELLING_SALTS), egg_moves(CLAMPERL, MOVE_REFRESH, @@ -1219,7 +1219,7 @@ const u16 gEggMoves[] = { egg_moves(ABSOL, MOVE_BATON_PASS, - MOVE_FAINT_ATTACK, + MOVE_FEINT_ATTACK, MOVE_DOUBLE_EDGE, MOVE_MAGIC_COAT, MOVE_CURSE, @@ -1258,7 +1258,7 @@ const u16 gEggMoves[] = { MOVE_ENDEAVOR, MOVE_BODY_SLAM, MOVE_STOMP, - MOVE_SMELLING_SALT), + MOVE_SMELLING_SALTS), egg_moves(CASTFORM, MOVE_FUTURE_SIGHT, diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h index 46c685572..a5091c5e1 100644 --- a/src/data/pokemon/level_up_learnsets.h +++ b/src/data/pokemon/level_up_learnsets.h @@ -651,7 +651,7 @@ static const struct LevelUpMove sVulpixLevelUpLearnset[] = { LEVEL_UP_MOVE(15, MOVE_FIRE_SPIN), LEVEL_UP_MOVE(18, MOVE_PAYBACK), LEVEL_UP_MOVE(20, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(23, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(23, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(26, MOVE_HEX), LEVEL_UP_MOVE(28, MOVE_FLAME_BURST), LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), @@ -932,7 +932,7 @@ static const struct LevelUpMove sMeowthLevelUpLearnset[] = { LEVEL_UP_MOVE( 9, MOVE_FAKE_OUT), LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), LEVEL_UP_MOVE(17, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(25, MOVE_TAUNT), LEVEL_UP_MOVE(30, MOVE_PAY_DAY), LEVEL_UP_MOVE(33, MOVE_SLASH), @@ -957,7 +957,7 @@ static const struct LevelUpMove sPersianLevelUpLearnset[] = { LEVEL_UP_MOVE( 9, MOVE_FAKE_OUT), LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), LEVEL_UP_MOVE(17, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(25, MOVE_TAUNT), LEVEL_UP_MOVE(32, MOVE_POWER_GEM), LEVEL_UP_MOVE(37, MOVE_SLASH), @@ -1895,7 +1895,7 @@ static const struct LevelUpMove sHypnoLevelUpLearnset[] = { static const struct LevelUpMove sKrabbyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 5, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 5, MOVE_VISE_GRIP), LEVEL_UP_MOVE( 9, MOVE_LEER), LEVEL_UP_MOVE(11, MOVE_HARDEN), LEVEL_UP_MOVE(15, MOVE_BUBBLE_BEAM), @@ -1915,9 +1915,9 @@ static const struct LevelUpMove sKinglerLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 5, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 5, MOVE_VISE_GRIP), LEVEL_UP_MOVE( 9, MOVE_LEER), LEVEL_UP_MOVE(11, MOVE_HARDEN), LEVEL_UP_MOVE(15, MOVE_BUBBLE_BEAM), @@ -2070,7 +2070,7 @@ static const struct LevelUpMove sHitmonleeLevelUpLearnset[] = { LEVEL_UP_MOVE(17, MOVE_BRICK_BREAK), LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE(25, MOVE_FEINT), - LEVEL_UP_MOVE(29, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(29, MOVE_HIGH_JUMP_KICK), LEVEL_UP_MOVE(33, MOVE_MIND_READER), LEVEL_UP_MOVE(37, MOVE_FORESIGHT), LEVEL_UP_MOVE(41, MOVE_WIDE_GUARD), @@ -2488,7 +2488,7 @@ static const struct LevelUpMove sMagmarLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EMBER), LEVEL_UP_MOVE( 5, MOVE_EMBER), LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(12, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(15, MOVE_FIRE_SPIN), LEVEL_UP_MOVE(19, MOVE_CLEAR_SMOG), LEVEL_UP_MOVE(22, MOVE_FLAME_BURST), @@ -2502,7 +2502,7 @@ static const struct LevelUpMove sMagmarLevelUpLearnset[] = { }; static const struct LevelUpMove sPinsirLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), LEVEL_UP_MOVE( 4, MOVE_BIND), LEVEL_UP_MOVE( 8, MOVE_SEISMIC_TOSS), @@ -3677,7 +3677,7 @@ static const struct LevelUpMove sSudowoodoLevelUpLearnset[] = { LEVEL_UP_MOVE( 8, MOVE_LOW_KICK), LEVEL_UP_MOVE(12, MOVE_ROCK_THROW), LEVEL_UP_MOVE(15, MOVE_MIMIC), - LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(22, MOVE_TEARFUL_LOOK), LEVEL_UP_MOVE(26, MOVE_ROCK_TOMB), LEVEL_UP_MOVE(29, MOVE_BLOCK), @@ -3924,7 +3924,7 @@ static const struct LevelUpMove sUmbreonLevelUpLearnset[] = { LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(20, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(20, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(25, MOVE_ASSURANCE), LEVEL_UP_MOVE(29, MOVE_SCREECH), LEVEL_UP_MOVE(33, MOVE_MOONLIGHT), @@ -3943,7 +3943,7 @@ static const struct LevelUpMove sMurkrowLevelUpLearnset[] = { LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), LEVEL_UP_MOVE(25, MOVE_ASSURANCE), LEVEL_UP_MOVE(31, MOVE_TAUNT), - LEVEL_UP_MOVE(35, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(35, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(41, MOVE_MEAN_LOOK), LEVEL_UP_MOVE(45, MOVE_FOUL_PLAY), LEVEL_UP_MOVE(50, MOVE_TAILWIND), @@ -4110,7 +4110,7 @@ static const struct LevelUpMove sGligarLevelUpLearnset[] = { LEVEL_UP_MOVE(10, MOVE_KNOCK_OFF), LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(22, MOVE_ACROBATICS), LEVEL_UP_MOVE(27, MOVE_SLASH), LEVEL_UP_MOVE(30, MOVE_U_TURN), @@ -4292,7 +4292,7 @@ static const struct LevelUpMove sSneaselLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_TAUNT), LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(10, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(10, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(14, MOVE_ICY_WIND), LEVEL_UP_MOVE(16, MOVE_FURY_SWIPES), LEVEL_UP_MOVE(20, MOVE_AGILITY), @@ -4315,7 +4315,7 @@ static const struct LevelUpMove sTeddiursaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LICK), LEVEL_UP_MOVE( 1, MOVE_FAKE_TEARS), LEVEL_UP_MOVE( 8, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(15, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(15, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(22, MOVE_SWEET_SCENT), LEVEL_UP_MOVE(25, MOVE_PLAY_NICE), LEVEL_UP_MOVE(29, MOVE_SLASH), @@ -4335,7 +4335,7 @@ static const struct LevelUpMove sUrsaringLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LICK), LEVEL_UP_MOVE( 1, MOVE_FAKE_TEARS), LEVEL_UP_MOVE( 8, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(15, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(15, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(22, MOVE_SWEET_SCENT), LEVEL_UP_MOVE(25, MOVE_PLAY_NICE), LEVEL_UP_MOVE(29, MOVE_SLASH), @@ -4559,7 +4559,7 @@ static const struct LevelUpMove sHoundourLevelUpLearnset[] = { LEVEL_UP_MOVE(20, MOVE_ODOR_SLEUTH), LEVEL_UP_MOVE(25, MOVE_BEAT_UP), LEVEL_UP_MOVE(28, MOVE_FIRE_FANG), - LEVEL_UP_MOVE(32, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(32, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(37, MOVE_EMBARGO), LEVEL_UP_MOVE(40, MOVE_FOUL_PLAY), LEVEL_UP_MOVE(44, MOVE_FLAMETHROWER), @@ -4584,7 +4584,7 @@ static const struct LevelUpMove sHoundoomLevelUpLearnset[] = { LEVEL_UP_MOVE(20, MOVE_ODOR_SLEUTH), LEVEL_UP_MOVE(26, MOVE_BEAT_UP), LEVEL_UP_MOVE(30, MOVE_FIRE_FANG), - LEVEL_UP_MOVE(35, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(35, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(41, MOVE_EMBARGO), LEVEL_UP_MOVE(45, MOVE_FOUL_PLAY), LEVEL_UP_MOVE(50, MOVE_FLAMETHROWER), @@ -4786,7 +4786,7 @@ static const struct LevelUpMove sMagbyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 5, MOVE_EMBER), LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(12, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(15, MOVE_FIRE_SPIN), LEVEL_UP_MOVE(19, MOVE_CLEAR_SMOG), LEVEL_UP_MOVE(22, MOVE_FLAME_BURST), @@ -5256,7 +5256,7 @@ static const struct LevelUpMove sBlazikenLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), LEVEL_UP_MOVE( 1, MOVE_FLARE_BLITZ), LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE( 1, MOVE_HIGH_JUMP_KICK), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_EMBER), @@ -5548,7 +5548,7 @@ static const struct LevelUpMove sNuzleafLevelUpLearnset[] = { LEVEL_UP_MOVE(12, MOVE_FAKE_OUT), LEVEL_UP_MOVE(16, MOVE_NATURE_POWER), LEVEL_UP_MOVE(20, MOVE_RAZOR_WIND), - LEVEL_UP_MOVE(24, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(24, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(28, MOVE_LEAF_BLADE), LEVEL_UP_MOVE(32, MOVE_SWAGGER), LEVEL_UP_MOVE(36, MOVE_EXTRASENSORY), @@ -5557,7 +5557,7 @@ static const struct LevelUpMove sNuzleafLevelUpLearnset[] = { static const struct LevelUpMove sShiftryLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), LEVEL_UP_MOVE( 1, MOVE_NASTY_PLOT), LEVEL_UP_MOVE(20, MOVE_LEAF_TORNADO), @@ -5704,7 +5704,7 @@ static const struct LevelUpMove sBreloomLevelUpLearnset[] = { static const struct LevelUpMove sSpindaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_COPYCAT), - LEVEL_UP_MOVE(10, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(10, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(14, MOVE_PSYBEAM), LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), LEVEL_UP_MOVE(23, MOVE_DIZZY_PUNCH), @@ -5860,7 +5860,7 @@ static const struct LevelUpMove sSkittyLevelUpLearnset[] = { LEVEL_UP_MOVE(13, MOVE_DISARMING_VOICE), LEVEL_UP_MOVE(16, MOVE_DOUBLE_SLAP), LEVEL_UP_MOVE(19, MOVE_COPYCAT), - LEVEL_UP_MOVE(22, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(25, MOVE_CHARM), LEVEL_UP_MOVE(28, MOVE_WAKE_UP_SLAP), LEVEL_UP_MOVE(31, MOVE_ASSIST), @@ -5890,7 +5890,7 @@ static const struct LevelUpMove sKecleonLevelUpLearnset[] = { LEVEL_UP_MOVE( 7, MOVE_SHADOW_SNEAK), LEVEL_UP_MOVE(10, MOVE_FEINT), LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(16, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(16, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(18, MOVE_PSYBEAM), LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), LEVEL_UP_MOVE(25, MOVE_SLASH), @@ -6002,7 +6002,7 @@ static const struct LevelUpMove sSableyeLevelUpLearnset[] = { LEVEL_UP_MOVE(11, MOVE_FURY_SWIPES), LEVEL_UP_MOVE(14, MOVE_DETECT), LEVEL_UP_MOVE(16, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(21, MOVE_FAKE_OUT), LEVEL_UP_MOVE(24, MOVE_PUNISHMENT), LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), @@ -6087,7 +6087,7 @@ static const struct LevelUpMove sLuvdiscLevelUpLearnset[] = { static const struct LevelUpMove sCorphishLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 5, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 7, MOVE_VISE_GRIP), LEVEL_UP_MOVE(10, MOVE_LEER), LEVEL_UP_MOVE(14, MOVE_BUBBLE_BEAM), LEVEL_UP_MOVE(17, MOVE_PROTECT), @@ -6108,10 +6108,10 @@ static const struct LevelUpMove sCrawdauntLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SWIFT), LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 5, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 7, MOVE_VISE_GRIP), LEVEL_UP_MOVE(10, MOVE_LEER), LEVEL_UP_MOVE(14, MOVE_BUBBLE_BEAM), LEVEL_UP_MOVE(17, MOVE_PROTECT), @@ -6205,7 +6205,7 @@ static const struct LevelUpMove sSharpedoLevelUpLearnset[] = { static const struct LevelUpMove sTrapinchLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE( 1, MOVE_BIDE), LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), @@ -6228,7 +6228,7 @@ static const struct LevelUpMove sVibravaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE( 1, MOVE_BIDE), LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), @@ -6253,7 +6253,7 @@ static const struct LevelUpMove sFlygonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DRAGON_DANCE), LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE( 1, MOVE_BIDE), LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), @@ -6282,7 +6282,7 @@ static const struct LevelUpMove sMakuhitaLevelUpLearnset[] = { LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), LEVEL_UP_MOVE(22, MOVE_VITAL_THROW), LEVEL_UP_MOVE(25, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(28, MOVE_SMELLING_SALT), + LEVEL_UP_MOVE(28, MOVE_SMELLING_SALTS), LEVEL_UP_MOVE(31, MOVE_SEISMIC_TOSS), LEVEL_UP_MOVE(34, MOVE_WAKE_UP_SLAP), LEVEL_UP_MOVE(37, MOVE_ENDURE), @@ -6306,7 +6306,7 @@ static const struct LevelUpMove sHariyamaLevelUpLearnset[] = { LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), LEVEL_UP_MOVE(22, MOVE_VITAL_THROW), LEVEL_UP_MOVE(26, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(30, MOVE_SMELLING_SALT), + LEVEL_UP_MOVE(30, MOVE_SMELLING_SALTS), LEVEL_UP_MOVE(34, MOVE_SEISMIC_TOSS), LEVEL_UP_MOVE(38, MOVE_WAKE_UP_SLAP), LEVEL_UP_MOVE(42, MOVE_ENDURE), @@ -6472,7 +6472,7 @@ static const struct LevelUpMove sCacneaLevelUpLearnset[] = { LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), LEVEL_UP_MOVE(16, MOVE_NEEDLE_ARM), - LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(22, MOVE_INGRAIN), LEVEL_UP_MOVE(26, MOVE_PAYBACK), LEVEL_UP_MOVE(30, MOVE_SPIKES), @@ -6499,7 +6499,7 @@ static const struct LevelUpMove sCacturneLevelUpLearnset[] = { LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), LEVEL_UP_MOVE(16, MOVE_NEEDLE_ARM), - LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(22, MOVE_INGRAIN), LEVEL_UP_MOVE(26, MOVE_PAYBACK), LEVEL_UP_MOVE(30, MOVE_SPIKES), @@ -6714,8 +6714,8 @@ static const struct LevelUpMove sMawileLevelUpLearnset[] = { LEVEL_UP_MOVE( 5, MOVE_FAKE_TEARS), LEVEL_UP_MOVE( 9, MOVE_BITE), LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(17, MOVE_VICE_GRIP), - LEVEL_UP_MOVE(21, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(17, MOVE_VISE_GRIP), + LEVEL_UP_MOVE(21, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(25, MOVE_BATON_PASS), LEVEL_UP_MOVE(29, MOVE_CRUNCH), LEVEL_UP_MOVE(33, MOVE_IRON_DEFENSE), @@ -6739,7 +6739,7 @@ static const struct LevelUpMove sMedititeLevelUpLearnset[] = { LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), LEVEL_UP_MOVE(23, MOVE_CALM_MIND), LEVEL_UP_MOVE(25, MOVE_MIND_READER), - LEVEL_UP_MOVE(28, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(28, MOVE_HIGH_JUMP_KICK), LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), LEVEL_UP_MOVE(33, MOVE_ACUPRESSURE), LEVEL_UP_MOVE(36, MOVE_POWER_TRICK), @@ -6767,7 +6767,7 @@ static const struct LevelUpMove sMedichamLevelUpLearnset[] = { LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), LEVEL_UP_MOVE(23, MOVE_CALM_MIND), LEVEL_UP_MOVE(25, MOVE_MIND_READER), - LEVEL_UP_MOVE(28, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(28, MOVE_HIGH_JUMP_KICK), LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), LEVEL_UP_MOVE(33, MOVE_ACUPRESSURE), LEVEL_UP_MOVE(36, MOVE_POWER_TRICK), @@ -6911,7 +6911,7 @@ static const struct LevelUpMove sSlakothLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_YAWN), LEVEL_UP_MOVE( 6, MOVE_ENCORE), LEVEL_UP_MOVE( 9, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(14, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(17, MOVE_AMNESIA), LEVEL_UP_MOVE(22, MOVE_COVET), LEVEL_UP_MOVE(25, MOVE_CHIP_AWAY), @@ -6951,7 +6951,7 @@ static const struct LevelUpMove sSlakingLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), LEVEL_UP_MOVE( 6, MOVE_ENCORE), LEVEL_UP_MOVE( 9, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(14, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(17, MOVE_AMNESIA), LEVEL_UP_MOVE(23, MOVE_COVET), LEVEL_UP_MOVE(27, MOVE_CHIP_AWAY), @@ -7114,7 +7114,7 @@ static const struct LevelUpMove sHuntailLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BITE), LEVEL_UP_MOVE( 5, MOVE_SCREECH), LEVEL_UP_MOVE( 9, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(11, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(11, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(14, MOVE_WATER_PULSE), LEVEL_UP_MOVE(16, MOVE_ICE_FANG), LEVEL_UP_MOVE(19, MOVE_BRINE), @@ -7180,7 +7180,7 @@ static const struct LevelUpMove sShuppetLevelUpLearnset[] = { LEVEL_UP_MOVE(10, MOVE_SPITE), LEVEL_UP_MOVE(13, MOVE_SHADOW_SNEAK), LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(22, MOVE_HEX), LEVEL_UP_MOVE(26, MOVE_CURSE), LEVEL_UP_MOVE(30, MOVE_SHADOW_BALL), @@ -7204,7 +7204,7 @@ static const struct LevelUpMove sBanetteLevelUpLearnset[] = { LEVEL_UP_MOVE(10, MOVE_SPITE), LEVEL_UP_MOVE(13, MOVE_SHADOW_SNEAK), LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), LEVEL_UP_MOVE(22, MOVE_HEX), LEVEL_UP_MOVE(26, MOVE_CURSE), LEVEL_UP_MOVE(30, MOVE_SHADOW_BALL), diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 354094ad0..d1d52f97c 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -41,7 +41,7 @@ static const u8 sScratchDescription[] = _( "Scratches the foe with\n" "sharp claws."); -static const u8 sViceGripDescription[] = _( +static const u8 sViseGripDescription[] = _( "Grips the foe with large and\n" "powerful pincers."); @@ -541,7 +541,7 @@ static const u8 sSoftBoiledDescription[] = _( "Recovers up to half the\n" "user's maximum HP."); -static const u8 sHiJumpKickDescription[] = _( +static const u8 sHighJumpKickDescription[] = _( "A jumping knee kick. If it\n" "misses, the user is hurt."); @@ -737,7 +737,7 @@ static const u8 sScaryFaceDescription[] = _( "Frightens with a scary face\n" "to sharply reduce SPEED."); -static const u8 sFaintAttackDescription[] = _( +static const u8 sFeintAttackDescription[] = _( "Draws the foe close, then\n" "strikes without fail."); @@ -1057,7 +1057,7 @@ static const u8 sFocusPunchDescription[] = _( "A powerful loyalty attack.\n" "The user flinches if hit."); -static const u8 sSmellingSaltDescription[] = _( +static const u8 sSmellingSaltsDescription[] = _( "Powerful against paralyzed\n" "foes, but also heals them."); @@ -2958,7 +2958,7 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_ICE_PUNCH - 1] = sIcePunchDescription, [MOVE_THUNDER_PUNCH - 1] = sThunderPunchDescription, [MOVE_SCRATCH - 1] = sScratchDescription, - [MOVE_VICE_GRIP - 1] = sViceGripDescription, + [MOVE_VISE_GRIP - 1] = sViseGripDescription, [MOVE_GUILLOTINE - 1] = sGuillotineDescription, [MOVE_RAZOR_WIND - 1] = sRazorWindDescription, [MOVE_SWORDS_DANCE - 1] = sSwordsDanceDescription, @@ -3083,7 +3083,7 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_AMNESIA - 1] = sAmnesiaDescription, [MOVE_KINESIS - 1] = sKinesisDescription, [MOVE_SOFT_BOILED - 1] = sSoftBoiledDescription, - [MOVE_HI_JUMP_KICK - 1] = sHiJumpKickDescription, + [MOVE_HIGH_JUMP_KICK - 1] = sHighJumpKickDescription, [MOVE_GLARE - 1] = sGlareDescription, [MOVE_DREAM_EATER - 1] = sDreamEaterDescription, [MOVE_POISON_GAS - 1] = sPoisonGasDescription, @@ -3132,7 +3132,7 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_PROTECT - 1] = sProtectDescription, [MOVE_MACH_PUNCH - 1] = sMachPunchDescription, [MOVE_SCARY_FACE - 1] = sScaryFaceDescription, - [MOVE_FAINT_ATTACK - 1] = sFaintAttackDescription, + [MOVE_FEINT_ATTACK - 1] = sFeintAttackDescription, [MOVE_SWEET_KISS - 1] = sSweetKissDescription, [MOVE_BELLY_DRUM - 1] = sBellyDrumDescription, [MOVE_SLUDGE_BOMB - 1] = sSludgeBombDescription, @@ -3212,7 +3212,7 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_MEMENTO - 1] = sMementoDescription, [MOVE_FACADE - 1] = sFacadeDescription, [MOVE_FOCUS_PUNCH - 1] = sFocusPunchDescription, - [MOVE_SMELLING_SALT - 1] = sSmellingSaltDescription, + [MOVE_SMELLING_SALTS - 1] = sSmellingSaltsDescription, [MOVE_FOLLOW_ME - 1] = sFollowMeDescription, [MOVE_NATURE_POWER - 1] = sNaturePowerDescription, [MOVE_CHARGE - 1] = sChargeDescription, diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 877d03253..154a30d20 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -11,7 +11,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_ICE_PUNCH] = _("Ice Punch"), [MOVE_THUNDER_PUNCH] = _("ThunderPunch"), [MOVE_SCRATCH] = _("Scratch"), - [MOVE_VICE_GRIP] = _("Vise Grip"), + [MOVE_VISE_GRIP] = _("Vise Grip"), [MOVE_GUILLOTINE] = _("Guillotine"), [MOVE_RAZOR_WIND] = _("Razor Wind"), [MOVE_SWORDS_DANCE] = _("Swords Dance"), @@ -136,7 +136,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_AMNESIA] = _("Amnesia"), [MOVE_KINESIS] = _("Kinesis"), [MOVE_SOFT_BOILED] = _("Soft-Boiled"), - [MOVE_HI_JUMP_KICK] = _("HighJumpKick"), + [MOVE_HIGH_JUMP_KICK] = _("HighJumpKick"), [MOVE_GLARE] = _("Glare"), [MOVE_DREAM_EATER] = _("Dream Eater"), [MOVE_POISON_GAS] = _("Poison Gas"), @@ -185,7 +185,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_PROTECT] = _("Protect"), [MOVE_MACH_PUNCH] = _("Mach Punch"), [MOVE_SCARY_FACE] = _("Scary Face"), - [MOVE_FAINT_ATTACK] = _("Feint Attack"), + [MOVE_FEINT_ATTACK] = _("Feint Attack"), [MOVE_SWEET_KISS] = _("Sweet Kiss"), [MOVE_BELLY_DRUM] = _("Belly Drum"), [MOVE_SLUDGE_BOMB] = _("Sludge Bomb"), @@ -265,7 +265,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_MEMENTO] = _("Memento"), [MOVE_FACADE] = _("Facade"), [MOVE_FOCUS_PUNCH] = _("Focus Punch"), - [MOVE_SMELLING_SALT] = _("SmellngSalts"), + [MOVE_SMELLING_SALTS] = _("SmellngSalts"), [MOVE_FOLLOW_ME] = _("Follow Me"), [MOVE_NATURE_POWER] = _("Nature Power"), [MOVE_CHARGE] = _("Charge"), diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index 824a49dc3..1759120b7 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -868,7 +868,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Braxton[] = { .iv = 100, .lvl = 28, .species = SPECIES_TRAPINCH, - .moves = {MOVE_BITE, MOVE_DIG, MOVE_FAINT_ATTACK, MOVE_SAND_TOMB} + .moves = {MOVE_BITE, MOVE_DIG, MOVE_FEINT_ATTACK, MOVE_SAND_TOMB} }, { .iv = 100, @@ -886,7 +886,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Braxton[] = { .iv = 100, .lvl = 28, .species = SPECIES_SHIFTRY, - .moves = {MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SWAGGER} + .moves = {MOVE_GIGA_DRAIN, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SWAGGER} } }; @@ -1115,7 +1115,7 @@ static const struct TrainerMonItemCustomMoves sParty_Mary[] = { .lvl = 26, .species = SPECIES_DELCATTY, .heldItem = ITEM_NONE, - .moves = {MOVE_FAINT_ATTACK, MOVE_SHOCK_WAVE, MOVE_NONE, MOVE_NONE} + .moves = {MOVE_FEINT_ATTACK, MOVE_SHOCK_WAVE, MOVE_NONE, MOVE_NONE} } }; @@ -1144,7 +1144,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Wendy[] = { .iv = 100, .lvl = 29, .species = SPECIES_MAWILE, - .moves = {MOVE_BATON_PASS, MOVE_FAINT_ATTACK, MOVE_FAKE_TEARS, MOVE_BITE} + .moves = {MOVE_BATON_PASS, MOVE_FEINT_ATTACK, MOVE_FAKE_TEARS, MOVE_BITE} }, { .iv = 100, @@ -1586,7 +1586,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jessica1[] = { .iv = 0, .lvl = 29, .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK} + .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} }, { .iv = 0, @@ -1651,7 +1651,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jessica2[] = { .iv = 10, .lvl = 35, .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK} + .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} }, { .iv = 10, @@ -1666,7 +1666,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jessica3[] = { .iv = 20, .lvl = 38, .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK} + .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} }, { .iv = 20, @@ -1681,7 +1681,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jessica4[] = { .iv = 30, .lvl = 41, .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK} + .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} }, { .iv = 30, @@ -1696,7 +1696,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Jessica5[] = { .iv = 40, .lvl = 44, .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK} + .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} }, { .iv = 40, @@ -3232,7 +3232,7 @@ static const struct TrainerMonItemCustomMoves sParty_Sidney[] = { .lvl = 46, .species = SPECIES_CACTURNE, .heldItem = ITEM_NONE, - .moves = {MOVE_LEECH_SEED, MOVE_FAINT_ATTACK, MOVE_NEEDLE_ARM, MOVE_COTTON_SPORE} + .moves = {MOVE_LEECH_SEED, MOVE_FEINT_ATTACK, MOVE_NEEDLE_ARM, MOVE_COTTON_SPORE} }, { .iv = 250, @@ -3263,14 +3263,14 @@ static const struct TrainerMonItemCustomMoves sParty_Phoebe[] = { .lvl = 49, .species = SPECIES_BANETTE, .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_BALL, MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_FAINT_ATTACK} + .moves = {MOVE_SHADOW_BALL, MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_FEINT_ATTACK} }, { .iv = 250, .lvl = 50, .species = SPECIES_SABLEYE, .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_NIGHT_SHADE, MOVE_FAINT_ATTACK} + .moves = {MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_NIGHT_SHADE, MOVE_FEINT_ATTACK} }, { .iv = 250, @@ -3487,7 +3487,7 @@ static const struct TrainerMonItemCustomMoves sParty_Norman1[] = { .lvl = 27, .species = SPECIES_VIGOROTH, .heldItem = ITEM_NONE, - .moves = {MOVE_SLASH, MOVE_FACADE, MOVE_ENCORE, MOVE_FAINT_ATTACK} + .moves = {MOVE_SLASH, MOVE_FACADE, MOVE_ENCORE, MOVE_FEINT_ATTACK} }, { .iv = 200, @@ -3501,7 +3501,7 @@ static const struct TrainerMonItemCustomMoves sParty_Norman1[] = { .lvl = 31, .species = SPECIES_SLAKING, .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_COUNTER, MOVE_YAWN, MOVE_FACADE, MOVE_FAINT_ATTACK} + .moves = {MOVE_COUNTER, MOVE_YAWN, MOVE_FACADE, MOVE_FEINT_ATTACK} } }; @@ -3787,7 +3787,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_KateAndJoy[] = { .iv = 0, .lvl = 32, .species = SPECIES_SLAKING, - .moves = {MOVE_FOCUS_PUNCH, MOVE_YAWN, MOVE_SLACK_OFF, MOVE_FAINT_ATTACK} + .moves = {MOVE_FOCUS_PUNCH, MOVE_YAWN, MOVE_SLACK_OFF, MOVE_FEINT_ATTACK} } }; @@ -3896,42 +3896,42 @@ static const struct TrainerMonItemCustomMoves sParty_Colton[] = { .lvl = 22, .species = SPECIES_SKITTY, .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} }, { .iv = 0, .lvl = 36, .species = SPECIES_SKITTY, .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} }, { .iv = 0, .lvl = 40, .species = SPECIES_SKITTY, .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} }, { .iv = 0, .lvl = 12, .species = SPECIES_SKITTY, .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} }, { .iv = 0, .lvl = 30, .species = SPECIES_SKITTY, .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} }, { .iv = 0, .lvl = 42, .species = SPECIES_DELCATTY, .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK, MOVE_HEAL_BELL} + .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} } }; @@ -4134,7 +4134,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Vicky[] = { .iv = 200, .lvl = 18, .species = SPECIES_MEDITITE, - .moves = {MOVE_HI_JUMP_KICK, MOVE_MEDITATE, MOVE_CONFUSION, MOVE_DETECT} + .moves = {MOVE_HIGH_JUMP_KICK, MOVE_MEDITATE, MOVE_CONFUSION, MOVE_DETECT} } }; @@ -6759,7 +6759,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR1[] = { .iv = 150, .lvl = 43, .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK} + .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} }, { .iv = 150, @@ -8639,7 +8639,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_Gerald[] = { .iv = 100, .lvl = 23, .species = SPECIES_KECLEON, - .moves = {MOVE_FLAMETHROWER, MOVE_FURY_SWIPES, MOVE_FAINT_ATTACK, MOVE_BIND} + .moves = {MOVE_FLAMETHROWER, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK, MOVE_BIND} } }; @@ -8762,7 +8762,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR2[] = { .iv = 150, .lvl = 46, .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK} + .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} }, { .iv = 150, @@ -8795,7 +8795,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR3[] = { .iv = 150, .lvl = 49, .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK} + .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} }, { .iv = 150, @@ -8828,7 +8828,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR4[] = { .iv = 150, .lvl = 52, .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK} + .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} }, { .iv = 150, @@ -8861,7 +8861,7 @@ static const struct TrainerMonNoItemCustomMoves sParty_WallyVR5[] = { .iv = 150, .lvl = 55, .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FAINT_ATTACK} + .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} }, { .iv = 150, diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c index 944d1d728..fe3da8857 100755 --- a/src/ereader_helpers.c +++ b/src/ereader_helpers.c @@ -145,7 +145,7 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = { [3] = { .species = SPECIES_CACTURNE, .heldItem = ITEM_QUICK_CLAW, - .moves = { MOVE_GIGA_DRAIN, MOVE_FAINT_ATTACK, MOVE_THUNDER_PUNCH, MOVE_GROWTH }, + .moves = { MOVE_GIGA_DRAIN, MOVE_FEINT_ATTACK, MOVE_THUNDER_PUNCH, MOVE_GROWTH }, .level = 0, .ppBonuses = 0x0, .hpEV = 55, diff --git a/src/frontier_util.c b/src/frontier_util.c index 83c9341d5..b9d7a4f57 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -284,7 +284,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ .fixedIV = 20, .nature = NATURE_CALM, .evs = {152, 0, 100, 0, 152, 106}, - .moves = {MOVE_BODY_SLAM, MOVE_CONFUSE_RAY, MOVE_PSYCHIC, MOVE_FAINT_ATTACK}, + .moves = {MOVE_BODY_SLAM, MOVE_CONFUSE_RAY, MOVE_PSYCHIC, MOVE_FEINT_ATTACK}, }, { .species = SPECIES_SHEDINJA, From a96179a308e0a783a80ac965c2b2c09fa030e823 Mon Sep 17 00:00:00 2001 From: surskitty Date: Sat, 2 Jan 2021 17:16:44 -0500 Subject: [PATCH 110/116] Changed Neutralizing Gas. --- src/data/text/abilities.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/text/abilities.h b/src/data/text/abilities.h index d9ed16b01..fdecea8a8 100644 --- a/src/data/text/abilities.h +++ b/src/data/text/abilities.h @@ -513,7 +513,7 @@ const u8 gAbilityNames[ABILITIES_COUNT_GEN8][ABILITY_NAME_LENGTH + 1] = [ABILITY_PERISH_BODY] = _("Perish Body"), [ABILITY_WANDERING_SPIRIT] = _("WandrngSprit"), [ABILITY_GORILLA_TACTICS] = _("GorillaTacti"), - [ABILITY_NEUTRALIZING_GAS] = _("NutrlizngGas"), + [ABILITY_NEUTRALIZING_GAS] = _("NeutrlzngGas"), [ABILITY_PASTEL_VEIL] = _("Pastel Veil"), [ABILITY_HUNGER_SWITCH] = _("HungerSwitch"), [ABILITY_QUICK_DRAW] = _("Quick Draw"), From 3246c20be5641df7e47f65f91a4584c5f5cb7a39 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Tue, 5 Jan 2021 19:51:52 -0300 Subject: [PATCH 111/116] Moved Power Spot's effect to CalcMoveBasePowerAfterModifiers --- src/battle_util.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 73157ac12..427c8c0d2 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6802,6 +6802,9 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe if (IS_MOVE_SPECIAL(move)) MulModifier(&modifier, UQ_4_12(1.3)); break; + case ABILITY_POWER_SPOT: + MulModifier(&modifier, UQ_4_12(1.3)); + break; } } @@ -7102,9 +7105,6 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b if (gBattleMons[BATTLE_PARTNER(battlerAtk)].species == SPECIES_CHERRIM && IS_MOVE_PHYSICAL(move)) MulModifier(&modifier, UQ_4_12(1.5)); break; - case ABILITY_POWER_SPOT: - MulModifier(&modifier, UQ_4_12(1.3)); - break; } } From 339aa95c1de12036e701cc593acd697909c404cf Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 7 Jan 2021 04:30:34 -0300 Subject: [PATCH 112/116] Review corrections -Intrepid Sword and Dauntless Shield are now properly affecting the user -Slightly tweaked Ball Fetch's effect, since an operation involving gBattleResults.catchAttempts was being done twice unnecessarily. --- data/battle_scripts_1.s | 2 +- src/battle_script_commands.c | 4 +--- src/battle_util.c | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index a64c551e8..2b9aa3129 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7154,7 +7154,7 @@ BattleScript_TargetsStatWasMaxedOut:: BattleScript_BattlerAbilityStatRaiseOnSwitchIn:: copybyte gBattlerAbility, gBattlerAttacker call BattleScript_AbilityPopUp - statbuffchange STAT_BUFF_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL setgraphicalstatchangevalues playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 waitanimation diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 047caa8cc..4a3fb47e2 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -12008,10 +12008,8 @@ static void Cmd_handleballthrow(void) else // not caught { if (!gHasFetchedBall) - { gLastUsedBall = gLastUsedItem; - gBattleResults.catchAttempts[gLastUsedBall]++; - } + if (IsCriticalCapture()) gBattleCommunication[MULTISTRING_CHOOSER] = shakes + 3; else diff --git a/src/battle_util.c b/src/battle_util.c index 427c8c0d2..c122288db 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4131,7 +4131,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move break; case ABILITY_BALL_FETCH: if (gBattleMons[battler].item == ITEM_NONE - && gBattleResults.catchAttempts[gLastUsedBall] >= 1 + && gBattleResults.catchAttempts[gLastUsedBall - ITEM_ULTRA_BALL] >= 1 && !gHasFetchedBall) { gBattleScripting.battler = battler; From de9b0328ecf10854b9f713c75e412c6588e4b9ef Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 7 Jan 2021 16:19:56 -0300 Subject: [PATCH 113/116] Corrections to Steam Engine --- src/battle_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index c122288db..a9e7910ec 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4644,9 +4644,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && gBattleMons[battler].statStages[STAT_SPEED] != 12 && (moveType == TYPE_FIRE || moveType == TYPE_WATER)) { - SET_STATCHANGER(STAT_SPEED, 12 - gBattleMons[battler].statStages[STAT_SPEED], FALSE); + SET_STATCHANGER(STAT_SPEED, 6, FALSE); BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_TargetsStatWasMaxedOut; + gBattlescriptCurrInstr = BattleScript_TargetAbilityStatRaiseOnMoveEnd; effect++; } break; From 8511ed57e47ecd73d19468f1757f5dbe956823c8 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 7 Jan 2021 17:56:23 -0300 Subject: [PATCH 114/116] Tweaked Steam Engine's battle string --- data/battle_scripts_1.s | 2 +- include/constants/battle_string_ids.h | 3 ++- src/battle_message.c | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 2b9aa3129..159410dcf 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7168,7 +7168,7 @@ BattleScript_TargetAbilityStatRaiseOnMoveEnd:: setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 waitanimation - printstring STRINGID_TARGETABILITYSTATRAISE + printstring STRINGID_ABILITYRAISEDSTATDRASTICALLY waitmessage 0x40 return diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 297233eb0..a57297501 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -562,8 +562,9 @@ #define STRINGID_BATTLERABILITYRAISEDSTAT 558 #define STRINGID_ASANDSTORMKICKEDUP 559 #define STRINGID_PKMNSWILLPERISHIN3TURNS 560 +#define STRINGID_ABILITYRAISEDSTATDRASTICALLY 561 -#define BATTLESTRINGS_COUNT 561 +#define BATTLESTRINGS_COUNT 562 //// multichoice message IDs // switch in ability message diff --git a/src/battle_message.c b/src/battle_message.c index 2d9ff1884..1ffa245d3 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -689,9 +689,11 @@ static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} fou static const u8 sText_BattlerAbilityRaisedStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its {B_BUFF1}!"); static const u8 sText_ASandstormKickedUp[] = _("A sandstorm kicked up!"); static const u8 sText_PkmnsWillPerishIn3Turns[] = _("Both Pokémon will perish\nin three turns!"); +static const u8 sText_AbilityRaisedStatDrastically[] = _("{B_DEF_ABILITY} raised {B_DEF_NAME_WITH_PREFIX}'s\n{B_BUFF1} drastically!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_ABILITYRAISEDSTATDRASTICALLY - 12] = sText_AbilityRaisedStatDrastically, [STRINGID_PKMNSWILLPERISHIN3TURNS - 12] = sText_PkmnsWillPerishIn3Turns, [STRINGID_ASANDSTORMKICKEDUP - 12] = sText_ASandstormKickedUp, [STRINGID_BATTLERABILITYRAISEDSTAT - 12] = sText_BattlerAbilityRaisedStat, From f58539b602d4eb4ec2fd922d7b02989968a3ea09 Mon Sep 17 00:00:00 2001 From: surskitty Date: Sun, 10 Jan 2021 15:48:57 -0500 Subject: [PATCH 115/116] Renaming the last two and fixing the merge conflict with PE. --- include/constants/moves.h | 6 ++++++ src/data/text/move_names.h | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/constants/moves.h b/include/constants/moves.h index dcec99da1..4e1865003 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -787,3 +787,9 @@ #define MOVES_COUNT MOVES_COUNT_GEN8 #endif // GUARD_CONSTANTS_MOVES_H + +// moves renamed in BE +#define MOVE FAINT_ATTACK MOVE_FEINT_ATTACK +#define MOVE_HI_JUMP_KICK MOVE_HIGH_JUMP_KICK +#define MOVE_SMELLING_SALT MOVE_SMELLING_SALTS +#define MOVE_VICE_GRIP MOVE_VISE_GRIP diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 154a30d20..a5b9f4e75 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -623,7 +623,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_DRAGON_ASCENT] = _("DragonAscent"), [MOVE_HYPERSPACE_FURY] = _("HyprspceFury"), [MOVE_SHORE_UP] = _("Shore Up"), - [MOVE_FIRST_IMPRESSION] = _("First Impres"), + [MOVE_FIRST_IMPRESSION] = _("FrstImpressn"), [MOVE_BANEFUL_BUNKER] = _("BanefulBunkr"), [MOVE_SPIRIT_SHACKLE] = _("SpiritShackl"), [MOVE_DARKEST_LARIAT] = _("DarkstLariat"), @@ -654,7 +654,7 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_TROP_KICK] = _("Trop Kick"), [MOVE_INSTRUCT] = _("Instruct"), [MOVE_BEAK_BLAST] = _("Beak Blast"), - [MOVE_CLANGING_SCALES] = _("Clanging Sca"), + [MOVE_CLANGING_SCALES] = _("ClngngScales"), [MOVE_DRAGON_HAMMER] = _("DragonHammer"), [MOVE_BRUTAL_SWING] = _("Brutal Swing"), [MOVE_AURORA_VEIL] = _("Aurora Veil"), From 29343ce1ec0c5856308a49f2f816089ce37193d6 Mon Sep 17 00:00:00 2001 From: surskitty Date: Mon, 11 Jan 2021 15:00:11 -0500 Subject: [PATCH 116/116] Remove synonyms Co-authored-by: ultima-soul <33333039+ultima-soul@users.noreply.github.com> --- include/constants/moves.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/include/constants/moves.h b/include/constants/moves.h index 4e1865003..dcec99da1 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -787,9 +787,3 @@ #define MOVES_COUNT MOVES_COUNT_GEN8 #endif // GUARD_CONSTANTS_MOVES_H - -// moves renamed in BE -#define MOVE FAINT_ATTACK MOVE_FEINT_ATTACK -#define MOVE_HI_JUMP_KICK MOVE_HIGH_JUMP_KICK -#define MOVE_SMELLING_SALT MOVE_SMELLING_SALTS -#define MOVE_VICE_GRIP MOVE_VISE_GRIP