From 95a64284fdc2b063a49f1ad3edb8726ec0db0366 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 12 Dec 2017 17:18:25 -0600 Subject: decompile nullsub_89 - sub_80AB9A0 --- src/contest.c | 472 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 472 insertions(+) create mode 100644 src/contest.c (limited to 'src') diff --git a/src/contest.c b/src/contest.c new file mode 100644 index 000000000..ebce709e3 --- /dev/null +++ b/src/contest.c @@ -0,0 +1,472 @@ +#include "global.h" +#include "constants/songs.h" +#include "battle_anim.h" +#include "contest.h" +#include "contest_link_80C857C.h" +#include "ewram.h" +#include "decompress.h" +#include "graphics.h" +#include "link.h" +#include "main.h" +#include "menu.h" +#include "palette.h" +#include "random.h" +#include "sound.h" +#include "task.h" +#include "text.h" +#include "unknown_task.h" + +struct Shared18000 +{ + /*0x18000*/ u8 unk18000; + /*0x18001*/ u8 filler18001[3]; + ///*0x18004*/ u8 unk18004[0x200]; + /*0x18004*/ u16 unk18004[16][16]; + /*0x18204*/ u8 filler18204[0xA04-0x204]; + /*0x18A04*/ u8 unk18A04[0x800]; +}; + +struct Shared19204 +{ + /*0x19204*/ u8 filler0[2]; + /*0x19206*/ u8 unk19206[4]; + /*0x1920A*/ u8 unk1920A; + /*0x1920B*/ u8 filler1920B; + /*0x1920C*/ u8 unk1920C; + /*0x1920D*/ u8 filler1920D[0x16-0xD]; + /*0x19216*/ u8 unk19216; + /*0x19217*/ u8 filler19217; + /*0x19218*/ u8 unk19218[0x5D-0x18]; + /*0x1925D*/ u8 unk1925D[3]; +}; + +struct UnknownContestStruct1 +{ + u8 filler0[0xB]; + u8 unkB_0:2; + u8 fillerC[0x13-0xC]; + u8 unk13; + u8 unk14; + u8 filler15[0x19-0x15]; + u8 unk19; + u8 filler1A[0x1C-0x1A]; +}; + +struct Shared19260 +{ + /*0x19260*/ struct UnknownContestStruct1 unk19260[4]; + /*0x192D0*/ u8 unk192D0[0x14]; + /*0x192E4*/ u8 unk192E4[0x44]; + /*0x19328*/ u8 unk19328[4]; + /*0x1932C*/ u8 filler1932C[0x38-0x2C]; + /*0x19338*/ u8 unk19338[0x10]; +}; + +#define shared15800 (gSharedMem + 0x15800) +#define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000)) +#define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) +#define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) + +extern u16 gBattleTypeFlags; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gBanksBySide[]; +extern u8 gObjectBankIDs[]; +extern bool8 gIsLinkContest; +extern u8 gContestPlayerMonIndex; +extern u16 gUnknown_030041B0; +extern s16 gUnknown_030041B4; +extern u16 gUnknown_030041B8; +extern u16 gUnknown_03004200; +extern struct Window gUnknown_03004210; +extern u16 gUnknown_03004240; +extern u16 gUnknown_03004244; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_030042C4; +extern u32 gUnknown_03005D28; +extern u8 gUnknown_02038696[]; + +void sub_80AB350(void); +void sub_80AB5D4(u8); +void sub_80AB604(u8); +void sub_80AB678(u8); +void sub_80AB694(u8); +void sub_80AB6B4(u8); +u8 sub_80AB70C(u8 *); +void sub_80AB960(u8); +void sub_80AB9A0(u8); +void sub_80ABAAC(void); +void sub_80ABAC4(void); +void sub_80ABB70(u8); +u8 sub_80AE858(void); +u8 sub_80AE8B4(void); +void sub_80AEB30(void); +void sub_80AF860(void); +void sub_80AFA5C(void); +void sub_80AFE30(void); +void sub_80B0034(void); +void sub_80B00C8(void); +void sub_80B0324(void); +void sub_80B0518(void); +void sub_80B1118(void); +void sub_80B159C(void); +void sub_80B1B14(void); +void sub_80B2184(void); +void sub_80B2280(void); +void sub_80B292C(void); + +void nullsub_89(u8 taskId) +{ +} + +void ResetLinkContestBoolean(void) +{ + gIsLinkContest = FALSE; +} + +void sub_80AB1BC(void) +{ + u16 savedIme; + + REG_DISPCNT = 0x40; + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT = 8; + REG_BG0CNT = 0x9800; + REG_BG1CNT = 0x9E09; + REG_BG2CNT = 0x9C00; + REG_BG3CNT = 0x3A03; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; + REG_DISPCNT |= 0x7F00; + + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 0; + gUnknown_030041B8 = 0; + gUnknown_030042C4 = 0; + gUnknown_03004240 = 0; + gUnknown_03004200 = 0; + gUnknown_03004244 = 0; +} + +void sub_80AB2AC(void) +{ + s32 i; + + LZDecompressVram(gContestMiscGfx, (void *)VRAM); + LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000)); + LZDecompressVram(gUnknown_08D1725C, (void *)(VRAM + 0xD000)); + LoadCompressedPalette(gUnknown_08D17144, 0, 0x200); + sub_80AB350(); + for (i = 0; i < 4; i++) + { + u32 var = 5 + i; + + LoadPalette(shared18000.unk18004[var], 16 * (5 + gUnknown_02038696[i]), 16 * sizeof(u16)); + } +} + +void sub_80AB320(void) +{ + SetUpWindowConfig(&gWindowConfig_81E6FD8); + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6FD8); + InitWindowFromConfig(&gMenuWindow, &gWindowConfig_81E6FF4); +} + +void sub_80AB350(void) +{ + u8 i; + + LoadFontDefaultPalette(&gWindowConfig_81E6FD8); + FillPalette(0, 0, 2); + for (i = 10; i < 14; i++) + LoadPalette(gPlttBufferUnfaded + 241, 240 + i, 2); + FillPalette(0x7E3F, 0xF3, 2); +} + +void sub_80AB398(void) +{ + s32 i; + + memset(&shared19204, 0, sizeof(shared19204)); // TODO: How is this struct divided? + for (i = 0; i < 4; i++) + shared19204.unk19206[i] = 0xFF; + for (i = 0; i < 4; i++) + memset(&shared19260.unk19260[i], 0, sizeof(shared19260.unk19260[i])); + for (i = 0; i < 4; i++) + { + shared19260.unk19260[i].unkB_0 = 0; + shared19260.unk19260[i].unk13 = 0xFF; + shared19260.unk19260[i].unk14 = 0xFF; + } + memset(&shared19260.unk192D0, 0, sizeof(shared19260.unk192D0)); + memset(&shared19260.unk192E4, 0, sizeof(shared19260.unk192E4)); + memset(&shared19260.unk19328, 0, sizeof(shared19260.unk19328)); + memset(&shared19260.unk19338, 0, sizeof(shared19260.unk19338)); + if (!(gIsLinkContest & 1)) // wat? + sub_80B0F28(0); + for (i = 0; i < 4; i++) + { + shared19260.unk19260[i].unk19 = 0xFF; + shared19204.unk19218[i] = gUnknown_02038696[i]; + } + sub_80B159C(); +} + +void sub_80AB47C(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + sub_80AB320(); + sub_80AB1BC(); + dp12_8087EA4(); + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + { + u8 *dest = (void *)VRAM; + u32 size = 0x18000; + while (1) + { + DmaFill32(3, 0, dest, 0x1000); + dest += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, dest, size); + break; + } + } + } + ResetSpriteData(); + ResetTasks(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + //shared18000.unk18000 = 0; + gSharedMem[0x18000] = 0; + ClearBattleMonForms(); + sub_80AB398(); + gMain.state++; + break; + case 1: + sub_80AB350(); + gMain.state++; + break; + case 2: + if (sub_80AB70C(shared19204.unk1925D) == 0) + break; + shared19204.unk1925D[0] = 0; + gMain.state++; + break; + case 3: + sub_80B2184(); + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + BeginFastPaletteFade(2); + gPaletteFade.bufferTransferDisabled = FALSE; + SetVBlankCallback(sub_80ABAC4); + shared19204.unk1920C = CreateTask(sub_80AB5D4, 10); + SetMainCallback2(sub_80ABAAC); + break; + } +} + +void sub_80AB5D4(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = sub_80AB604; +} + +void sub_80AB604(u8 taskId) +{ + if (gIsLinkContest & 1) // wat? + { + if (!gPaletteFade.active) + { + gPaletteFade.bufferTransferDisabled = FALSE; + sub_80AF860(); + CreateTask(sub_80AB678, 0); + gTasks[taskId].func = nullsub_89; + } + } + else + { + gTasks[taskId].func = sub_80AB960; + } +} + +void sub_80AB678(u8 taskId) +{ + SetTaskFuncWithFollowupFunc(taskId, sub_80C89DC, sub_80AB694); +} + +void sub_80AB694(u8 taskId) +{ + u16 one = 1; + + gTasks[taskId].data[0] = one; + gTasks[taskId].func = sub_80AB6B4; +} + +void sub_80AB6B4(u8 taskId) +{ + gTasks[taskId].data[0]--; + if (gTasks[taskId].data[0] <= 0) + { + GetMultiplayerId(); // unused return value + DestroyTask(taskId); + gTasks[shared19204.unk1920C].func = sub_80AB960; + gRngValue = gUnknown_03005D28; + } +} + +u8 sub_80AB70C(u8 *a) +{ + u16 sp0[16]; + u16 sp20[16]; + + switch (*a) + { + case 0: + gPaletteFade.bufferTransferDisabled = TRUE; + { + u8 *dest = (void *)VRAM; + u32 size = 0x18000; + while (1) + { + DmaFill32(3, 0, dest, 0x1000); + dest += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, dest, size); + break; + } + } + } + break; + case 1: + LZDecompressVram(gContestMiscGfx, (void *)VRAM); + break; + case 2: + LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000)); + DmaCopyLarge32(3, (void *)(VRAM + 0x2000), shared15800, 0x2000, 0x1000); + break; + case 3: + LZDecompressVram(gUnknown_08D1725C, (void *)(VRAM + 0xD000)); + break; + case 4: + LZDecompressVram(gUnknown_08D17424, (void *)(VRAM + 0xE000)); + //DmaCopy32(3, (void *)(VRAM + 0xE000), shared18000.unk18A04, 0x800); + //asm(""); + { + void *src = (void *)(VRAM + 0xE000); + void *dest = shared18000.unk18A04; + DmaCopy32(3, src, dest, 0x800); + } + break; + case 5: + LoadCompressedPalette(gUnknown_08D17144, 0, 0x200); + CpuCopy32(gPlttBufferUnfaded + 128, sp0, 16 * sizeof(u16)); + CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, sp20, 16 * sizeof(u16)); + CpuCopy32(sp20, gPlttBufferUnfaded + 128, 16 * sizeof(u16)); + CpuCopy32(sp0, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16)); + { + void *src = gPlttBufferUnfaded; + void *dest = shared18000.unk18004; + DmaCopy32(3, src, dest, 0x200); + } + sub_80AB350(); + break; + case 6: + sub_80B1118(); + sub_80AFA5C(); + sub_80AEB30(); + shared19204.unk19216 = sub_80AE8B4(); + sub_80AFE30(); + sub_80B0034(); + sub_80B00C8(); + sub_80B0324(); + sub_80B0518(); + gBanksBySide[0] = 0; + gBanksBySide[1] = 1; + gBanksBySide[2] = 3; + gBanksBySide[3] = 2; + gBattleTypeFlags = 0; + gBankAttacker = 2; + gBankTarget = 3; + gObjectBankIDs[gBankAttacker] = sub_80AE858(); + sub_80B292C(); + break; + default: + *a = 0; + return 1; + } + + (*a)++; + return 0; +} + +void sub_80AB960(u8 taskId) +{ + gPaletteFade.bufferTransferDisabled = FALSE; + if (!gPaletteFade.active) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80AB9A0; + } +} + +void sub_80AB9A0(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (gTasks[taskId].data[1]++ <= 60) + break; + gTasks[taskId].data[1] = 0; + PlaySE12WithPanning(SE_C_MAKU_U, 0); + gTasks[taskId].data[0]++; + break; + case 1: + gUnknown_030041B4 += 7; + if (gUnknown_030041B4 <= 160) + break; + gTasks[taskId].data[0]++; + break; + case 2: + sub_80B2280(); + gTasks[taskId].data[0]++; + break; + case 3: + REG_BG0CNT_BITFIELD.priority = 0; + REG_BG2CNT_BITFIELD.priority = 0; + sub_80B1B14(); + gTasks[taskId].data[0]++; + break; + case 4: + default: + if (shared19204.unk1920A & 0x40) + break; + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80ABB70; + break; + } +} -- cgit v1.2.3 From 90eec979c948c480772549f6ec05a76b4f4cb605 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 12 Dec 2017 20:07:09 -0600 Subject: fail at decompiling sub_80ABCDC --- src/contest.c | 396 ++++++++++++++++++++++++++++++++++++++++++++++- src/pokemon/learn_move.c | 1 + 2 files changed, 391 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index ebce709e3..34c66c66c 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3,32 +3,37 @@ #include "battle_anim.h" #include "contest.h" #include "contest_link_80C857C.h" -#include "ewram.h" +#include "data2.h" #include "decompress.h" +#include "ewram.h" #include "graphics.h" #include "link.h" #include "main.h" #include "menu.h" +#include "menu_cursor.h" #include "palette.h" #include "random.h" #include "sound.h" +#include "string_util.h" #include "task.h" #include "text.h" #include "unknown_task.h" +extern bool8 AreMovesContestCombo(u16, u16); + struct Shared18000 { /*0x18000*/ u8 unk18000; /*0x18001*/ u8 filler18001[3]; - ///*0x18004*/ u8 unk18004[0x200]; /*0x18004*/ u16 unk18004[16][16]; - /*0x18204*/ u8 filler18204[0xA04-0x204]; + /*0x18204*/ u8 unk18204[0xA04-0x204]; /*0x18A04*/ u8 unk18A04[0x800]; }; struct Shared19204 { - /*0x19204*/ u8 filler0[2]; + /*0x19204*/ u8 unk19204; + /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; /*0x1920A*/ u8 unk1920A; /*0x1920B*/ u8 filler1920B; @@ -42,12 +47,15 @@ struct Shared19204 struct UnknownContestStruct1 { - u8 filler0[0xB]; + u8 filler0[8]; + u16 unk8; + u8 fillerA; u8 unkB_0:2; u8 fillerC[0x13-0xC]; u8 unk13; u8 unk14; - u8 filler15[0x19-0x15]; + u8 unk15; + u8 filler16[0x19-0x16]; u8 unk19; u8 filler1A[0x1C-0x1A]; }; @@ -67,6 +75,7 @@ struct Shared19260 #define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) #define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) +extern u8 gDisplayedStringBattle[]; extern u16 gBattleTypeFlags; extern u8 gBankAttacker; extern u8 gBankTarget; @@ -90,6 +99,12 @@ extern u16 gUnknown_030042C4; extern u32 gUnknown_03005D28; extern u8 gUnknown_02038696[]; +extern const u8 gUnknown_083CAF84[]; +extern const u8 gUnknown_083CAFAE[]; +extern const struct ContestMove gContestMoves[]; +extern const u8 gUnknownText_UnknownFormatting2[]; +extern const u8 gUnknownText_UnknownFormatting3[]; + void sub_80AB350(void); void sub_80AB5D4(u8); void sub_80AB604(u8); @@ -102,19 +117,32 @@ void sub_80AB9A0(u8); void sub_80ABAAC(void); void sub_80ABAC4(void); void sub_80ABB70(u8); +void sub_80ABC3C(u8); +void sub_80ABC70(u8); +void sub_80ABCDC(u8); +void sub_80ABEA0(u8); +void sub_80AC0AC(s8); +void sub_80AC0C8(u8); +void sub_80AE020(); u8 sub_80AE858(void); u8 sub_80AE8B4(void); void sub_80AEB30(void); +void sub_80AEBEC(u16); +void sub_80AF138(void); +u8 sub_80AF59C(u8); void sub_80AF860(void); void sub_80AFA5C(void); void sub_80AFE30(void); +void sub_80AFFE0(u8); void sub_80B0034(void); void sub_80B00C8(void); void sub_80B0324(void); void sub_80B0518(void); +void sub_80B0D7C(void); void sub_80B1118(void); void sub_80B159C(void); void sub_80B1B14(void); +u8 sub_80B214C(u8); void sub_80B2184(void); void sub_80B2280(void); void sub_80B292C(void); @@ -470,3 +498,359 @@ void sub_80AB9A0(u8 taskId) break; } } + +void sub_80ABAAC(void) +{ + AnimateSprites(); + RunTasks(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_80ABAC4(void) +{ + REG_BG0HOFS = gUnknown_030042A4; + REG_BG0VOFS = gUnknown_030042A0; + REG_BG1HOFS = gUnknown_030042C0; + REG_BG1VOFS = gUnknown_030041B4; + REG_BG2HOFS = gUnknown_03004288; + REG_BG2VOFS = gUnknown_03004280; + REG_BG3HOFS = gUnknown_030041B0; + REG_BG3VOFS = gUnknown_030041B8; + REG_WIN0H = gUnknown_030042C4; + REG_WIN0V = gUnknown_03004240; + REG_WIN1H = gUnknown_03004200; + REG_WIN1V = gUnknown_03004244; + TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); + sub_8089668(); +} + +void sub_80ABB70(u8 taskId) +{ + gUnknown_030042A0 = 0; + gUnknown_03004280 = 0; + sub_80B0D7C(); + { + void *src = gPlttBufferUnfaded; + void *dest = shared18000.unk18204; + DmaCopy32(3, src, dest, 0x400); + } + if (sub_80AF59C(gContestPlayerMonIndex) == 0) + StringCopy(gDisplayedStringBattle, gUnknown_083CAF84); + else + StringCopy(gDisplayedStringBattle, gUnknown_083CAFAE); + sub_80AE020(gDisplayedStringBattle, shared19204.unk19205 + 1); + sub_80AF138(); + StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].func = sub_80ABC3C; +} + +void sub_80ABC3C(u8 taskId) +{ + if (sub_80037A0(&gMenuWindow) == 1) + gTasks[taskId].func = sub_80ABC70; +} + +void sub_80ABC70(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys == B_BUTTON)) + { + PlaySE(SE_SELECT); + if (sub_80AF59C(gContestPlayerMonIndex) == 0) + { + sub_80AFFE0(1); + gTasks[taskId].func = sub_80ABCDC; + } + else + { + gTasks[taskId].func = sub_80AC0C8; + } + } +} + + +struct UnknownContestStruct2 +{ + u16 unk0[4]; + u8 filler8[56]; +}; +extern struct UnknownContestStruct2 gUnknown_0203858E[]; + +extern const u8 gUnknown_083CA340[][4]; +/* +struct UnknownContestStruct3 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; +}; +extern const struct UnknownContestStruct3 gUnknown_083CA340[]; +*/ + +#ifdef NONMATCHING +void sub_80ABCDC(u8 taskId) +{ + u8 i; + u8 sp8[32]; + + gUnknown_030042A0 = 0xA0; + gUnknown_03004280 = 0xA0; + FillWindowRect_DefaultPalette( + &gUnknown_03004210, + 0, + gUnknown_083CA340[0][0], + gUnknown_083CA340[0][1], + gUnknown_083CA340[0][2], + gUnknown_083CA340[0][3]); + + for (i = 0; i < 4; i++) + { + u32 offset = i * 2 + gContestPlayerMonIndex * 64; + u16 r4 = *(u16 *)((u8 *)gUnknown_0203858E + offset); + u8 *r5 = sp8; + + if (shared19260.unk19260[gContestPlayerMonIndex].unk8 != 0 + && sub_80B214C(gContestPlayerMonIndex) != 0 + && AreMovesContestCombo(shared19260.unk19260[gContestPlayerMonIndex].unk8, r4) + && shared19260.unk19260[gContestPlayerMonIndex].unk15 & 0x10) + { + r5 = StringCopy(sp8, gUnknownText_UnknownFormatting2); + } + //_080ABDA0 + else if (r4 != 0 + && shared19260.unk19260[gContestPlayerMonIndex].unk8 == r4 + && gContestMoves[r4].effect != 3) + { + r5 = StringCopy(sp8, gUnknownText_UnknownFormatting3); + } + r5 = StringCopy(r5, gMoveNames[r4]); + + sub_8002E4C( + &gUnknown_03004210, + sp8, + 776 + i * 20, + gUnknown_083CA340[i][0] * 8 + 4, + gUnknown_083CA340[i][1] * 8, + 1); + sub_8002F44(&gUnknown_03004210); + } + + sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 72); + sub_80AC0AC(shared19204.unk19204); + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.unk19204]); + gTasks[taskId].func = sub_80ABEA0; +} +#else +__attribute__((naked)) +void sub_80ABCDC(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x2C\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x28]\n\ + ldr r0, _080ABD80 @ =gUnknown_030042A0\n\ + movs r1, 0xA0\n\ + strh r1, [r0]\n\ + ldr r0, _080ABD84 @ =gUnknown_03004280\n\ + strh r1, [r0]\n\ + ldr r5, _080ABD88 @ =gUnknown_03004210\n\ + ldr r4, _080ABD8C @ =gUnknown_083CA340\n\ + ldrb r2, [r4]\n\ + ldrb r3, [r4, 0x1]\n\ + ldrb r0, [r4, 0x2]\n\ + str r0, [sp]\n\ + ldrb r0, [r4, 0x3]\n\ + str r0, [sp, 0x4]\n\ + adds r0, r5, 0\n\ + movs r1, 0\n\ + bl FillWindowRect_DefaultPalette\n\ + movs r6, 0\n\ + ldr r0, _080ABD90 @ =gContestPlayerMonIndex\n\ + mov r8, r0\n\ + ldr r7, _080ABD94 @ =gSharedMem + 0x19260\n\ + mov r9, r5\n\ + mov r10, r4\n\ +_080ABD1C:\n\ + lsls r1, r6, 1\n\ + mov r3, r8\n\ + ldrb r2, [r3]\n\ + lsls r0, r2, 6\n\ + adds r1, r0\n\ + ldr r0, _080ABD98 @ =gUnknown_0203858E\n\ + adds r1, r0\n\ + ldrh r4, [r1]\n\ + add r5, sp, 0x8\n\ + lsls r0, r2, 3\n\ + subs r0, r2\n\ + lsls r0, 2\n\ + adds r0, r7\n\ + ldrh r0, [r0, 0x8]\n\ + cmp r0, 0\n\ + beq _080ABDA0\n\ + adds r0, r2, 0\n\ + bl sub_80B214C\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080ABDA0\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + lsls r0, 2\n\ + adds r0, r7\n\ + ldrh r0, [r0, 0x8]\n\ + adds r1, r4, 0\n\ + bl AreMovesContestCombo\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080ABDA0\n\ + mov r3, r8\n\ + ldrb r1, [r3]\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + lsls r0, 2\n\ + adds r0, r7\n\ + ldrb r1, [r0, 0x15]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080ABDA0\n\ + add r0, sp, 0x8\n\ + ldr r1, _080ABD9C @ =gUnknownText_UnknownFormatting2\n\ + b _080ABDC6\n\ + .align 2, 0\n\ +_080ABD80: .4byte gUnknown_030042A0\n\ +_080ABD84: .4byte gUnknown_03004280\n\ +_080ABD88: .4byte gUnknown_03004210\n\ +_080ABD8C: .4byte gUnknown_083CA340\n\ +_080ABD90: .4byte gContestPlayerMonIndex\n\ +_080ABD94: .4byte gSharedMem + 0x19260\n\ +_080ABD98: .4byte gUnknown_0203858E\n\ +_080ABD9C: .4byte gUnknownText_UnknownFormatting2\n\ +_080ABDA0:\n\ + cmp r4, 0\n\ + beq _080ABDCC\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + lsls r1, r0, 3\n\ + subs r1, r0\n\ + lsls r1, 2\n\ + adds r1, r7\n\ + ldrh r0, [r1, 0x8]\n\ + cmp r0, r4\n\ + bne _080ABDCC\n\ + ldr r0, _080ABE74 @ =gContestMoves\n\ + lsls r1, r4, 3\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x3\n\ + beq _080ABDCC\n\ + add r0, sp, 0x8\n\ + ldr r1, _080ABE78 @ =gUnknownText_UnknownFormatting3\n\ +_080ABDC6:\n\ + bl StringCopy\n\ + adds r5, r0, 0\n\ +_080ABDCC:\n\ + movs r0, 0xD\n\ + adds r1, r4, 0\n\ + muls r1, r0\n\ + ldr r0, _080ABE7C @ =gMoveNames\n\ + adds r1, r0\n\ + adds r0, r5, 0\n\ + bl StringCopy\n\ + lsls r1, r6, 2\n\ + adds r2, r1, r6\n\ + lsls r2, 18\n\ + movs r3, 0xC2\n\ + lsls r3, 18\n\ + adds r2, r3\n\ + lsrs r2, 16\n\ + mov r3, r10\n\ + adds r0, r1, r3\n\ + ldrb r3, [r0]\n\ + lsls r3, 3\n\ + adds r3, 0x4\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + ldr r0, _080ABE80 @ =gUnknown_083CA340 + 0x1\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + lsls r0, 3\n\ + str r0, [sp]\n\ + movs r0, 0x1\n\ + str r0, [sp, 0x4]\n\ + mov r0, r9\n\ + add r1, sp, 0x8\n\ + bl sub_8002E4C\n\ + mov r0, r9\n\ + bl sub_8002F44\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0x3\n\ + bhi _080ABE20\n\ + b _080ABD1C\n\ +_080ABE20:\n\ + ldr r1, _080ABE84 @ =0x0000ffff\n\ + ldr r3, _080ABE88 @ =0x00002d9f\n\ + movs r0, 0x48\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r2, 0xC\n\ + bl sub_814A5C0\n\ + ldr r4, _080ABE8C @ =gSharedMem + 0x19204\n\ + movs r0, 0\n\ + ldrsb r0, [r4, r0]\n\ + bl sub_80AC0AC\n\ + ldr r2, _080ABE90 @ =gContestMons\n\ + ldrb r1, [r4]\n\ + lsls r1, 1\n\ + ldr r0, _080ABE94 @ =gContestPlayerMonIndex\n\ + ldrb r0, [r0]\n\ + lsls r0, 6\n\ + adds r1, r0\n\ + adds r2, 0x1E\n\ + adds r1, r2\n\ + ldrh r0, [r1]\n\ + bl sub_80AEBEC\n\ + ldr r1, _080ABE98 @ =gTasks\n\ + ldr r2, [sp, 0x28]\n\ + lsls r0, r2, 2\n\ + adds r0, r2\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldr r1, _080ABE9C @ =sub_80ABEA0\n\ + str r1, [r0]\n\ + add sp, 0x2C\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080ABE74: .4byte gContestMoves\n\ +_080ABE78: .4byte gUnknownText_UnknownFormatting3\n\ +_080ABE7C: .4byte gMoveNames\n\ +_080ABE80: .4byte gUnknown_083CA340 + 0x1\n\ +_080ABE84: .4byte 0x0000ffff\n\ +_080ABE88: .4byte 0x00002d9f\n\ +_080ABE8C: .4byte gSharedMem + 0x19204\n\ +_080ABE90: .4byte gContestMons\n\ +_080ABE94: .4byte gContestPlayerMonIndex\n\ +_080ABE98: .4byte gTasks\n\ +_080ABE9C: .4byte sub_80ABEA0\n\ + .syntax divided\n"); +} +#endif diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c index 8aa10254c..d2538decd 100644 --- a/src/pokemon/learn_move.c +++ b/src/pokemon/learn_move.c @@ -1,4 +1,5 @@ #include "global.h" +#include "contest.h" #include "data2.h" #include "field_fadetransition.h" #include "main.h" -- cgit v1.2.3 From 5952bd74dc098104ef11764ba70e8181523f406e Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 13 Dec 2017 14:09:11 -0600 Subject: decompile sub_80ABEA0 - sub_80AC284 --- src/contest.c | 208 +++++++++++++++++++++++++++++++++-- src/pokemon/pokemon_summary_screen.c | 7 +- 2 files changed, 202 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 34c66c66c..c6ef5774d 100644 --- a/src/contest.c +++ b/src/contest.c @@ -20,13 +20,15 @@ #include "unknown_task.h" extern bool8 AreMovesContestCombo(u16, u16); +extern void sub_80C8A38(u8); struct Shared18000 { /*0x18000*/ u8 unk18000; /*0x18001*/ u8 filler18001[3]; /*0x18004*/ u16 unk18004[16][16]; - /*0x18204*/ u8 unk18204[0xA04-0x204]; + /*0x18204*/ u16 unk18204[0x200]; + /*0x18604*/ u16 unk18604[0x200]; /*0x18A04*/ u8 unk18A04[0x800]; }; @@ -35,19 +37,26 @@ struct Shared19204 /*0x19204*/ u8 unk19204; /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; - /*0x1920A*/ u8 unk1920A; - /*0x1920B*/ u8 filler1920B; + /*0x1920A*/ u16 unk1920A_0:6; + u16 unk1920A_6:1; + u16 unk1920A_7:2; + u16 unk1920B_1:1; /*0x1920C*/ u8 unk1920C; - /*0x1920D*/ u8 filler1920D[0x16-0xD]; + /*0x1920D*/ u8 filler1920D[0x14-0xD]; + /*0x19214*/ u8 unk19214; + /*0x19215*/ u8 unk19215; /*0x19216*/ u8 unk19216; /*0x19217*/ u8 filler19217; - /*0x19218*/ u8 unk19218[0x5D-0x18]; + /*0x19218*/ u8 unk19218[4]; + /*0x1921C*/ u32 unk1921C; + u8 filler19220[0x5D-0x20]; /*0x1925D*/ u8 unk1925D[3]; }; struct UnknownContestStruct1 { - u8 filler0[8]; + u8 filler0[6]; + u16 unk6; u16 unk8; u8 fillerA; u8 unkB_0:2; @@ -81,7 +90,7 @@ extern u8 gBankAttacker; extern u8 gBankTarget; extern u8 gBanksBySide[]; extern u8 gObjectBankIDs[]; -extern bool8 gIsLinkContest; +extern u8 gIsLinkContest; extern u8 gContestPlayerMonIndex; extern u16 gUnknown_030041B0; extern s16 gUnknown_030041B4; @@ -122,13 +131,23 @@ void sub_80ABC70(u8); void sub_80ABCDC(u8); void sub_80ABEA0(u8); void sub_80AC0AC(s8); +void nullsub_17(s8); void sub_80AC0C8(u8); +void sub_80AC15C(u8); +void sub_80AC188(u8); +void sub_80AC204(u8); +void sub_80AC250(u8); +void sub_80AC284(u8); +void sub_80AC2CC(u8); void sub_80AE020(); u8 sub_80AE858(void); u8 sub_80AE8B4(void); void sub_80AEB30(void); void sub_80AEBEC(u16); +void sub_80AED58(void); void sub_80AF138(void); +u16 sub_80AF15C(u8); +void sub_80AF1B8(void); u8 sub_80AF59C(u8); void sub_80AF860(void); void sub_80AFA5C(void); @@ -142,11 +161,14 @@ void sub_80B0D7C(void); void sub_80B1118(void); void sub_80B159C(void); void sub_80B1B14(void); +void sub_80B1BDC(void); u8 sub_80B214C(u8); void sub_80B2184(void); void sub_80B2280(void); +void sub_80B25E4(); void sub_80B292C(void); + void nullsub_89(u8 taskId) { } @@ -400,8 +422,6 @@ u8 sub_80AB70C(u8 *a) break; case 4: LZDecompressVram(gUnknown_08D17424, (void *)(VRAM + 0xE000)); - //DmaCopy32(3, (void *)(VRAM + 0xE000), shared18000.unk18A04, 0x800); - //asm(""); { void *src = (void *)(VRAM + 0xE000); void *dest = shared18000.unk18A04; @@ -490,7 +510,7 @@ void sub_80AB9A0(u8 taskId) break; case 4: default: - if (shared19204.unk1920A & 0x40) + if (shared19204.unk1920A_6) break; gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; @@ -854,3 +874,171 @@ _080ABE9C: .4byte sub_80ABEA0\n\ .syntax divided\n"); } #endif + +void sub_80ABEA0(u8 taskId) +{ + u8 r6 = 0; + s32 i; + + for (i = 0; i < 4; i++) + { + if (gContestMons[gContestPlayerMonIndex].moves[i] != 0) + r6++; + } + + if (gMain.newKeys & A_BUTTON) + { + DestroyMenuCursor(); + PlaySE(SE_SELECT); + gTasks[taskId].func = sub_80AC0C8; + } + else + { + switch (gMain.newAndRepeatedKeys) + { + case B_BUTTON: + sub_814A904(); + PlaySE(SE_SELECT); + sub_80AFFE0(0); + FillWindowRect_DefaultPalette( + &gUnknown_03004210, + 0, + gUnknown_083CA340[0][0], + gUnknown_083CA340[0][1], + gUnknown_083CA340[0][2], + gUnknown_083CA340[0][3]); + if (sub_80AF59C(gContestPlayerMonIndex) == 0) + StringCopy(gDisplayedStringBattle, gUnknown_083CAF84); + else + StringCopy(gDisplayedStringBattle, gUnknown_083CAFAE); + sub_80AE020(gDisplayedStringBattle, shared19204.unk19205 + 1); + sub_80AF138(); + StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); + sub_8003460(&gMenuWindow, gStringVar4, 776, 1, 15); + gUnknown_030042A0 = 0; + gUnknown_03004280 = 0; + gTasks[taskId].func = sub_80ABC70; + break; + case DPAD_LEFT: + case DPAD_RIGHT: + break; + case DPAD_UP: + nullsub_17(shared19204.unk19204); + if (shared19204.unk19204 == 0) + shared19204.unk19204 = r6 - 1; + else + shared19204.unk19204--; + sub_80AC0AC(shared19204.unk19204); + sub_80AED58(); + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.unk19204]); + if (r6 > 1) + PlaySE(SE_SELECT); + break; + case DPAD_DOWN: + nullsub_17(shared19204.unk19204); + if (shared19204.unk19204 == r6 - 1) + shared19204.unk19204 = 0; + else + shared19204.unk19204++; + sub_80AC0AC(shared19204.unk19204); + sub_80AED58(); + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.unk19204]); + if (r6 > 1) + PlaySE(SE_SELECT); + break; + } + } +} + +void sub_80AC0AC(s8 a) +{ + sub_814A880(4, 88 + a * 16); +} + +void nullsub_17(s8 a) +{ +} + +void sub_80AC0C8(u8 taskId) +{ + if (gIsLinkContest & 1) + { + u16 var = sub_80AF15C(gContestPlayerMonIndex); + struct UnknownContestStruct1 *s = &shared19260.unk19260[gContestPlayerMonIndex]; + u8 taskId2; + + s->unk6 = var; + taskId2 = CreateTask(sub_80C8A38, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8A38, sub_80AC15C); + gTasks[taskId].func = nullsub_89; + sub_80AF860(); + sub_80AFFE0(0); + } + else + { + sub_80AF1B8(); + gTasks[taskId].func = sub_80AC188; + } +} + +void sub_80AC15C(u8 taskId) +{ + DestroyTask(taskId); + gTasks[shared19204.unk1920C].func = sub_80AC188; +} + +void sub_80AC188(u8 taskId) +{ + sub_80AF138(); + gUnknown_030042A0 = 0; + gUnknown_03004280 = 0; + sub_80AFFE0(0); + { + void *src = gPlttBufferFaded; + void *dest = shared18000.unk18604; + u32 size = 0x400; + DmaCopy32(3, src, dest, size); + } + LoadPalette(shared18000.unk18204, 0, 0x400); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80AC204; +} + +void sub_80AC204(u8 taskId) +{ + if (++gTasks[taskId].data[0] > 2) + { + gTasks[taskId].data[0] = 0; + if (++gTasks[taskId].data[1] == 2) + { + sub_80B1BDC(); + sub_80B25E4(1); + gTasks[taskId].func = sub_80AC250; + } + } +} + +void sub_80AC250(u8 taskId) +{ + if (!shared19204.unk1920A_6 && !shared19204.unk1920B_1) + gTasks[taskId].func = sub_80AC284; +} + +void sub_80AC284(u8 taskId) +{ + if (++gTasks[taskId].data[0] > 19) + { + shared19204.unk19214 = 0; + shared19204.unk1921C = gRngValue; + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80AC2CC; + } +} + +/* +void sub_80AC2CC(u8 taskId) +{ + +} +*/ diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 532f30aaa..4de5f5345 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -1,11 +1,14 @@ #include "global.h" +#include "constants/items.h" +#include "constants/songs.h" +#include "constants/species.h" #include "battle.h" +#include "contest.h" #include "data2.h" #include "decompress.h" #include "event_data.h" #include "ewram.h" #include "item.h" -#include "constants/items.h" #include "learn_move.h" #include "link.h" #include "m4a.h" @@ -19,9 +22,7 @@ #include "pokemon.h" #include "pokemon_summary_screen.h" #include "region_map.h" -#include "constants/songs.h" #include "sound.h" -#include "constants/species.h" #include "sprite.h" #include "string_util.h" #include "strings.h" -- cgit v1.2.3 From 75f4026767b9b99c855ee62023ba91db61c0e4c9 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 14 Dec 2017 21:12:42 -0600 Subject: decompile about half of sub_80AC2CC --- src/contest.c | 666 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 643 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index c6ef5774d..0bea38a04 100644 --- a/src/contest.c +++ b/src/contest.c @@ -14,6 +14,7 @@ #include "palette.h" #include "random.h" #include "sound.h" +#include "sprite.h" #include "string_util.h" #include "task.h" #include "text.h" @@ -21,6 +22,7 @@ extern bool8 AreMovesContestCombo(u16, u16); extern void sub_80C8A38(u8); +extern void sub_80C8C80(u8); struct Shared18000 { @@ -37,10 +39,13 @@ struct Shared19204 /*0x19204*/ u8 unk19204; /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; - /*0x1920A*/ u16 unk1920A_0:6; + /*0x1920A*/ u16 unk1920A_0:4; + u16 unk1920A_4:1; + u16 unk1920A_5:1; u16 unk1920A_6:1; u16 unk1920A_7:2; u16 unk1920B_1:1; + u16 unk1920B_2:1; /*0x1920C*/ u8 unk1920C; /*0x1920D*/ u8 filler1920D[0x14-0xD]; /*0x19214*/ u8 unk19214; @@ -50,33 +55,76 @@ struct Shared19204 /*0x19218*/ u8 unk19218[4]; /*0x1921C*/ u32 unk1921C; u8 filler19220[0x5D-0x20]; - /*0x1925D*/ u8 unk1925D[3]; + /*0x1925D*/ u8 unk1925D; + /*0x1925E*/ u8 unk1925E; + /*0x1925F*/ u8 filler1925F; }; struct UnknownContestStruct1 { - u8 filler0[6]; - u16 unk6; + u8 filler0[2]; + u16 unk2; // s16? + u8 filler4[2]; + u16 unk6; // move u16 unk8; - u8 fillerA; + u8 unkA; // contest category u8 unkB_0:2; - u8 fillerC[0x13-0xC]; + u8 unkB_2:1; + u8 unkB_3:4; + u8 unkB_7:1; + u8 unkC_0:1; + u8 unkC_1:1; + u8 unkC_2:1; + u8 fillerD; + u8 unkE; + u8 fillerF; + u8 unk10; // maybe a bitfield + u8 unk11; + u8 filler12; u8 unk13; u8 unk14; u8 unk15; - u8 filler16[0x19-0x16]; + u8 filler16; + u8 unk17; + u8 filler18; u8 unk19; u8 filler1A[0x1C-0x1A]; }; +struct UnknownContestStruct3 +{ + u8 filler0[2]; + //u8 unk2_0:1; + //u8 unk2_1:1; + u8 unk2; // maybe a bitfield + u8 filler3; +}; + +// possibly the same as UnknownContestStruct3? +struct UnknownContestStruct4 +{ + u8 filler0[2]; + u8 unk2; // maybe a bitfield + u8 filler3; +}; + +struct UnknownContestStruct5 +{ + u32 bits_0:8; + u32 bits_8:1; + u32 bits_9:3; +}; + struct Shared19260 { /*0x19260*/ struct UnknownContestStruct1 unk19260[4]; /*0x192D0*/ u8 unk192D0[0x14]; /*0x192E4*/ u8 unk192E4[0x44]; - /*0x19328*/ u8 unk19328[4]; + ///*0x19328*/ u8 unk19328[4]; + /*0x19328*/ struct UnknownContestStruct5 unk19328; /*0x1932C*/ u8 filler1932C[0x38-0x2C]; - /*0x19338*/ u8 unk19338[0x10]; + /*0x19338*/ struct UnknownContestStruct4 unk19338[4]; + /*0x19348*/ struct UnknownContestStruct3 unk19348[5]; }; #define shared15800 (gSharedMem + 0x15800) @@ -84,6 +132,7 @@ struct Shared19260 #define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) #define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) +extern u8 gBattleMonForms[]; extern u8 gDisplayedStringBattle[]; extern u16 gBattleTypeFlags; extern u8 gBankAttacker; @@ -139,34 +188,55 @@ void sub_80AC204(u8); void sub_80AC250(u8); void sub_80AC284(u8); void sub_80AC2CC(u8); +void sub_80AD8DC(u8); +void sub_80AD8FC(struct Sprite *); void sub_80AE020(); u8 sub_80AE858(void); u8 sub_80AE8B4(void); +u8 sub_80AE9FC(); void sub_80AEB30(void); void sub_80AEBEC(u16); void sub_80AED58(void); +u8 sub_80AEE54(); +u8 sub_80AF038(); +void sub_80AF120(void); void sub_80AF138(void); u16 sub_80AF15C(u8); void sub_80AF1B8(void); u8 sub_80AF59C(u8); void sub_80AF860(void); void sub_80AFA5C(void); +void sub_80AFBA0(s16, s16, u8); void sub_80AFE30(void); void sub_80AFFE0(u8); void sub_80B0034(void); void sub_80B00C8(void); void sub_80B0324(void); +void sub_80B03A8(); void sub_80B0518(void); +u8 sub_80B09E4(); +void sub_80B0BC4(); +void sub_80B0CDC(); void sub_80B0D7C(void); void sub_80B1118(void); +void sub_80B114C(u8); +void sub_80B146C(); void sub_80B159C(void); +void sub_80B1710(); void sub_80B1B14(void); void sub_80B1BDC(void); +void sub_80B1FD0(); +void sub_80B20C4(void); u8 sub_80B214C(u8); void sub_80B2184(void); void sub_80B2280(void); void sub_80B25E4(); +u16 sub_80B2760(); +void sub_80B2790(); +void sub_80B28CC(); +void sub_80B28F0(); void sub_80B292C(void); +void sub_80B29B4(); void nullsub_89(u8 taskId) @@ -260,6 +330,7 @@ void sub_80AB398(void) for (i = 0; i < 4; i++) { shared19260.unk19260[i].unkB_0 = 0; + //shared19260.unk19260[i].unkB_1 = 0; shared19260.unk19260[i].unk13 = 0xFF; shared19260.unk19260[i].unk14 = 0xFF; } @@ -318,9 +389,9 @@ void sub_80AB47C(void) gMain.state++; break; case 2: - if (sub_80AB70C(shared19204.unk1925D) == 0) + if (sub_80AB70C(&shared19204.unk1925D) == 0) break; - shared19204.unk1925D[0] = 0; + shared19204.unk1925D = 0; gMain.state++; break; case 3: @@ -600,16 +671,6 @@ struct UnknownContestStruct2 extern struct UnknownContestStruct2 gUnknown_0203858E[]; extern const u8 gUnknown_083CA340[][4]; -/* -struct UnknownContestStruct3 -{ - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; -}; -extern const struct UnknownContestStruct3 gUnknown_083CA340[]; -*/ #ifdef NONMATCHING void sub_80ABCDC(u8 taskId) @@ -1036,9 +1097,568 @@ void sub_80AC284(u8 taskId) } } +u8 sub_80AE074(void); + +extern const u8 gUnknown_083CAFD7[]; +extern const u8 gUnknown_083CC103[]; +extern const u8 *const gUnknown_083CC330[]; + /* void sub_80AC2CC(u8 taskId) { - + u8 spriteId; // r5 + s32 r6; + u8 r7 = shared19204.unk19215; + + switch (gTasks[taskId].data[0]) + { + case 0: + //_080AC404 + { + //s32 r6; + + sub_80B0D7C(); + r6 = 0; + while (shared19204.unk19214 != shared19260.unk192D0[r6]) + r6++; + //_080AC42C + shared19204.unk19215 = r6; + r7 = shared19204.unk19215; // is r7 actually a variable? + if (gIsLinkContest & 1) + { + u8 taskId2; + + shared19204.unk1920B_2 = 1; + if (sub_80AE074() != 0) + sub_80B114C(shared19204.unk19215); + taskId2 = CreateTask(sub_80C8C80, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); + sub_80AF860(); + gTasks[taskId].data[0] = 1; + } + //_080AC498 + else + { + sub_80B114C(r7); + gTasks[taskId].data[0] = 2; + } + } + return; + case 1: + if (!shared19204.unk1920B_2) + gTasks[taskId].data[0] = 2; + return; + case 2: + //_080AC4D4 + // Come on, get this part to match! + if (shared19260.unk19260[r7].unkC_1 + || shared19260.unk19260[r7].unkC_2 + || shared19260.unk19260[r7].unkB_7) + { + gTasks[taskId].data[0] = 31; + } + else + { + sub_80AF138(); + sub_80B0CDC(r7, 0); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 3; + } + return; + case 3: + //_080AC534 + { + s32 i; + + for (i = 0; i < 4; i++) + gBattleMonForms[i] = 0; + memset(shared19260.unk19348, 0, 20); + sub_80B28F0(shared19204.unk19215); + spriteId = sub_80AE9FC( + gContestMons[shared19204.unk19215].species, + gContestMons[shared19204.unk19215].unk3C, + gContestMons[shared19204.unk19215].unk38); + gSprites[spriteId].pos2.x = 120; + gSprites[spriteId].callback = sub_80AD8FC; + gTasks[taskId].data[2] = spriteId; + gObjectBankIDs[gBankAttacker] = spriteId; + sub_80B0BC4(sub_80B09E4(shared19204.unk19215), 0); + gTasks[taskId].data[0] = 4; + } + return; + case 4: + //_080AC5E8 + spriteId = gTasks[taskId].data[2]; + if (gSprites[spriteId].callback == SpriteCallbackDummy + // && !shared19260.unk19348[r7].unk2_1) + && !(shared19260.unk19348[r7].unk2 & 2)) + gTasks[taskId].data[0] = 5; + return; + case 5: + //_080AC638 + if (shared19260.unk19260[r7].unkC_0) + { + gTasks[taskId].data[0] = 33; + } + //_080AC664 + else + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + if (shared19260.unk19260[r7].unk6 <= 354) + StringCopy(gStringVar2, gMoveNames[shared19260.unk19260[r7].unk6]); + else + StringCopy(gStringVar2, gUnknown_083CC330[shared19260.unk19260[r7].unkA]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 6; + } + return; + case 6: + //_080AC6F8 + if (sub_80037A0(&gMenuWindow) != 0) + { + shared19204.unk1925E = 0; + gTasks[taskId].data[0] = 7; + } + return; + case 7: + //_080AC730 + { + // doesn't match + u16 r4 = sub_80B2760(shared19260.unk19260[shared19204.unk19215].unk6); + + sub_80B2790(shared19204.unk19215); + sub_80B28F0(shared19204.unk19215); + sub_80B29B4(r4); + ExecuteMoveAnim(r4); + gTasks[taskId].data[0] = 8; + } + return; + case 8: + //_080AC77C + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_80B28CC(r7); + if (shared19204.unk1925E != 0) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 9; + } + else + { + if (!(shared19260.unk19260[r7].unk15 & 0x10)) + sub_80B03A8(r7); + sub_80B20C4(); + gTasks[taskId].data[0] = 23; + } + } + return; + case 9: + //_080AC7F4 + if (++gTasks[taskId].data[10] > 30) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 7; + } + return; + case 23: + //_080AC81E + gTasks[taskId].data[1] = 0; + if (shared19260.unk19260[r7].unk13 != 0xFF) + { + sub_80B146C(r7, shared19260.unk19260[r7].unk13); + shared19260.unk19260[r7].unk13 = 0xFF; + gTasks[taskId].data[0] = 24; + } + //_080AC85C + else + { + if (shared19260.unk19260[r7].unk14 != 0xFF) + { + //s32 r6 = 0; + + for (r6 = 0; r6 < 4; r6++) + { + if (r6 != r7 && shared19260.unk19260[r6].unk13 != 0xFF) + break; + } + //_080AC886 + if (r6 == 4) + { + sub_80B146C(r7, shared19260.unk19260[r7].unk14); + shared19260.unk19260[r7].unk14 = 0xFF; + gTasks[taskId].data[0] = 24; + } + //_080AC8B4 + else + { + gTasks[taskId].data[0] = 48; + } + } + //_080AC8C4 + else + { + gTasks[taskId].data[0] = 48; + } + } + return; + case 24: + //_080AC8CC + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 23; + return; + case 48: + //_080AC8F8 + if ((shared19260.unk19260[r7].unk11 & 3) == 1) + { + sub_80B1710(5); + gTasks[taskId].data[0] = 49; + } + else if ((shared19260.unk19260[r7].unk11 & 3) == 2) + { + sub_80B1710(6); + gTasks[taskId].data[0] = 49; + } + else if ((shared19260.unk19260[r7].unk11 & 3) == 3) + { + sub_80B1710(7); + gTasks[taskId].data[0] = 49; + } + else + { + gTasks[taskId].data[0] = 47; + } + return; + case 49: + //_080AC94C + if (!shared19204.unk1920A_4) + gTasks[taskId].data[0] = 47; + return; + case 47: + //_080AC96C + sub_80B1FD0(1); + gTasks[taskId].data[0] = 12; + return; + case 12: + //_080AC98C + sub_80AFBA0(0, shared19260.unk19260[r7].unk2, r7); + gTasks[taskId].data[0] = 13; + return; + case 13: + //_080AC9C0 + if (!(shared19260.unk19338[shared19204.unk19215].unk2 & 4)) + gTasks[taskId].data[0] = 35; + return; + case 35: + //_080AC9EC + if ((shared19260.unk19260[r7].unk10 & 0x30) == 0x10) + sub_80B1710(8); + gTasks[taskId].data[0] = 36; + return; + case 36: + //_080ACA24 + if (!shared19204.unk1920A_4) + gTasks[taskId].data[0] = 37; + return; + case 37: + //_080ACA44 + if (sub_80AEE54(r7, 1) != 0) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 38; + } + else + { + gTasks[taskId].data[0] = 50; + } + return; + case 38: + //_080ACA84 + if (++gTasks[taskId].data[10] > 20) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 50; + } + return; + case 50: + //_080ACAAE + if (sub_80AF038(r7) != 0) + PlaySE(SE_C_PASI); + gTasks[taskId].data[0] = 25; + return; + case 25: + //_080ACAD8 + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0] = 26; + return; + case 26: + //_080ACAEE + { + s8 r4 = 0; + s32 r2 = 0; + + // Is this variable reused? + r6 = gTasks[taskId].data[1]; + + // This part is really weird + while (r6 < 4) + { + r4 = 0; + r2 = 0; + + if (r4 != r7 && gUnknown_02038696[0] == r6 + && shared19260.unk19260[0].unk13 != 0xFF) + { + r4 = 1; + break; + } + //_080ACB2C + while (++r2 < 4) + { + if (r2 != r7 && gUnknown_02038696[0] == r6 + && shared19260.unk19260[r2].unk13 != 0xFF) + { + r4 = 1; + break; + } + } + //_080ACB4E + if (r4 != 0) + break; + } + //_080ACB58 + if (r4 != 0) + { + //_080ACB60 + gTasks[taskId].data[1] = gUnknown_02038696[r2]; + sub_80B146C(r2, shared19260.unk19260[r2].unk13); + shared19260.unk19260[r2].unk13 = 0xFF; + gTasks[taskId].data[0] = 27; + } + //_080ACB98 + else + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 51; + sub_80AF120(); + } + } + return; + case 27: + //_080ACBB0 + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 28; + return; + case 28: + //_080ACBDC + { + u8 r1; + + // check this later + r6 = 0; + while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) + r6++; + //_080ACC08 + r1 = shared19260.unk19260[r6].unkE; + sub_80AFBA0(shared19260.unk19260[r6].unk2 + r1, -r1, r6); + gTasks[taskId].data[0] = 29; + } + return; + case 29: + //_080ACC44 + r6 = 0; + while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) + r6++; + //_080ACC6C + if (!(shared19260.unk19338[r6].unk2 & 4)) + gTasks[taskId].data[0] = 39; + return; + case 39: + //_080ACC98 + r6 = 0; + while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) + r6++; + if (sub_80AEE54(r6, 1) != 0) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 40; + } + else + { + gTasks[taskId].data[0] = 30; + } + return; + case 40: + //_080ACD00 + if (++gTasks[taskId].data[10] > 20) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 30; + } + return; + case 30: + //_080ACD2A + r6 = 0; + while (r6 < 4 && gTasks[taskId].data[1] != gUnknown_02038696[r6]) + r6++; + //_080ACD5E + if (sub_80AF038(r6) != 0) + PlaySE(SE_C_PASI); + else + PlaySE(SE_C_SYU); + if (shared19260.unk19260[r6].unk15 & 0x20) + { + sub_80B03A8(r6); + shared19260.unk19260[r6].unk15 &= ~0x20; + } + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 26; + return; + case 51: + //_080ACDC8 + if (++gTasks[taskId].data[10] > 9) + { + gTasks[taskId].data[10] = 0; + if (shared19260.unk19260[r7].unkC_1 + || shared19260.unk19260[r7].unkC_2 + || (shared19260.unk19260[r7].unk11 & 4) + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC103); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + } + //_080ACE36 + gTasks[taskId].data[0] = 52; + } + return; + case 52: + //_080ACE64 + if (sub_80037A0(&gMenuWindow) != 0) + { + if (!(shared19260.unk19260[r7].unk15 & 0x40)) + gTasks[taskId].data[0] = 17; + else + gTasks[taskId].data[0] = 14; + } + return; + case 14: + //_080ACEC0 + { + s8 r4 = shared19260.unk19260[r7].unk16; + + if (r4 != 0) + { + sub_80AF138(); + if (r4 == 1) + sub_8002EB0(&gMenuWindow, gUnknown_083CBD79, 776, 1, 15); + else if (r4 == 2) + sub_8002EB0(&gMenuWindow, gUnknown_083CBD9D, 776, 1, 15); + else + sub_8002EB0(&gMenuWindow, gUnknown_083CBDC6, 776, 1, 15); + //_080ACF22 + sub_80B1710(3); + gTasks[taskId].data[10] = 0; + } + //_080ACF48 + else + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CBD52); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + sub_80B1710(2); + gTasks[taskId].data[10] = 0; + } + gTasks[taskId].data[0] = 45; // tail merge? + } + return; + case 45: + //_080ACFA8 + if (!shared19204.unk1920A_4) + { + sub_80B09B0(shared19204.unk19215); + gTasks[taskId].data[0] = 15; + } + return; + case 15: + //_080ACFD4 + if (sub_80037A0(&gMenuWindow) != 0) + { + if (++gTasks[taskId].data[10] > 50) + { + if (!(shared19260.unk19260[r7].unk15 & 0x10)) + { + sub_80AFBA0( + shared19260.unk19260[r7].unk2, + shared19260.unk19260[r7].unk17, + r7); + shared19260.unk19260[r7].unk2 += shared19260.unk19260[r7].unk17; + } + //_080AD02C + gTasks[taskId].data[0] = 16; + } + } + return; + case 16: + //_080AD040 + if (!(shared19260.unk19338[r7].unk2 & 4)) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 17; + } + return; + case 17: + //_080AD070 + if (shared19260.unk19260[r7].unk15 & 1) + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC075); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[10] = 0; + sub_80B1710(); + gTasks[taskId].data[0] = 46; + } + //_080AD0E8 + else + { + gTasks[taskId].data[0] = 41; + } + return; + case 46: + //_080AD0FA + if (!shared19204.unk1920A_4) + gTasks[taskId].data[0] = 19; + return; + case 19: + //_080AD11A + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80AFBA0( + shared19260.unk19260[r7].unk2, + -shared19260.unk19260[r7].unk18, + r7); + shared19260.unk19260[r7].unk2 -= shared19260.unk19260[r7].unk18; + gTasks[taskId].data[0] = 18; + } + return; + case 18: + //_080AD168 + sub_80B0D7C(); + if (!(shared19260.unk19338[r7].unk2 & 4)) + { + gTasks[taskId].data[10] = 0; + sub_80AF138(); + gTasks[taskId].data[0] = 41; + } + return; + case 41: + //_080AD1A4 + if (shared) + } } -*/ +*/ \ No newline at end of file -- cgit v1.2.3 From 106baf86747f89214f34f73db5048b25483e1647 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 15 Dec 2017 13:47:11 -0600 Subject: nonmatching sub_80AC2CC --- src/contest.c | 358 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 328 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 0bea38a04..83ebb4e8f 100644 --- a/src/contest.c +++ b/src/contest.c @@ -39,6 +39,7 @@ struct Shared19204 /*0x19204*/ u8 unk19204; /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; +#if 0 /*0x1920A*/ u16 unk1920A_0:4; u16 unk1920A_4:1; u16 unk1920A_5:1; @@ -46,12 +47,16 @@ struct Shared19204 u16 unk1920A_7:2; u16 unk1920B_1:1; u16 unk1920B_2:1; +#else + /*0x1920A*/ u8 unk1920A; + /*0x1920B*/ u8 unk1920B; +#endif /*0x1920C*/ u8 unk1920C; /*0x1920D*/ u8 filler1920D[0x14-0xD]; /*0x19214*/ u8 unk19214; /*0x19215*/ u8 unk19215; /*0x19216*/ u8 unk19216; - /*0x19217*/ u8 filler19217; + /*0x19217*/ s8 unk19217; /*0x19218*/ u8 unk19218[4]; /*0x1921C*/ u32 unk1921C; u8 filler19220[0x5D-0x20]; @@ -84,9 +89,9 @@ struct UnknownContestStruct1 u8 unk13; u8 unk14; u8 unk15; - u8 filler16; + u8 unk16; u8 unk17; - u8 filler18; + u8 unk18; u8 unk19; u8 filler1A[0x1C-0x1A]; }; @@ -110,9 +115,11 @@ struct UnknownContestStruct4 struct UnknownContestStruct5 { - u32 bits_0:8; - u32 bits_8:1; - u32 bits_9:3; + u16 bits_0:8; + u16 bits_8:1; + u16 bits_9:3; + s8 unk2; + u8 filler3; }; struct Shared19260 @@ -190,7 +197,10 @@ void sub_80AC284(u8); void sub_80AC2CC(u8); void sub_80AD8DC(u8); void sub_80AD8FC(struct Sprite *); +void sub_80AD92C(struct Sprite *); +void sub_80AD960(u8); void sub_80AE020(); +u8 sub_80AE074(void); u8 sub_80AE858(void); u8 sub_80AE8B4(void); u8 sub_80AE9FC(); @@ -211,9 +221,11 @@ void sub_80AFE30(void); void sub_80AFFE0(u8); void sub_80B0034(void); void sub_80B00C8(void); +void nullsub_18(); void sub_80B0324(void); void sub_80B03A8(); void sub_80B0518(void); +void sub_80B09B0(); u8 sub_80B09E4(); void sub_80B0BC4(); void sub_80B0CDC(); @@ -223,8 +235,12 @@ void sub_80B114C(u8); void sub_80B146C(); void sub_80B159C(void); void sub_80B1710(); +void sub_80B1928(void); void sub_80B1B14(void); void sub_80B1BDC(void); +void sub_80B1CBC(); +void sub_80B1DDC(void); +void sub_80B1EA8(); void sub_80B1FD0(); void sub_80B20C4(void); u8 sub_80B214C(u8); @@ -581,7 +597,8 @@ void sub_80AB9A0(u8 taskId) break; case 4: default: - if (shared19204.unk1920A_6) + //if (shared19204.unk1920A_6) + if (shared19204.unk1920A & 0x40) break; gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; @@ -1082,7 +1099,8 @@ void sub_80AC204(u8 taskId) void sub_80AC250(u8 taskId) { - if (!shared19204.unk1920A_6 && !shared19204.unk1920B_1) + //if (!shared19204.unk1920A_6 && !shared19204.unk1920B_1) + if (!(shared19204.unk1920A & 0x40) && !(shared19204.unk1920B & 2)) gTasks[taskId].func = sub_80AC284; } @@ -1097,10 +1115,21 @@ void sub_80AC284(u8 taskId) } } -u8 sub_80AE074(void); - extern const u8 gUnknown_083CAFD7[]; +extern const u8 gUnknown_083CB00D[]; +extern const u8 gUnknown_083CBD52[]; +extern const u8 gUnknown_083CBD79[]; +extern const u8 gUnknown_083CBD9D[]; +extern const u8 gUnknown_083CBDC6[]; +extern const u8 gUnknown_083CBF60[]; +extern const u8 gUnknown_083CC075[]; +extern const u8 gUnknown_083CC0A0[]; +extern const u8 gUnknown_083CC0BC[]; +extern const u8 gUnknown_083CC0E3[]; extern const u8 gUnknown_083CC103[]; +extern const u8 gUnknown_083CC14A[]; +extern const u8 gUnknown_083CC16E[]; +extern const u8 *const gUnknown_083CC2D8[]; extern const u8 *const gUnknown_083CC330[]; /* @@ -1109,14 +1138,14 @@ void sub_80AC2CC(u8 taskId) u8 spriteId; // r5 s32 r6; u8 r7 = shared19204.unk19215; - + switch (gTasks[taskId].data[0]) { case 0: //_080AC404 { //s32 r6; - + sub_80B0D7C(); r6 = 0; while (shared19204.unk19214 != shared19260.unk192D0[r6]) @@ -1127,8 +1156,9 @@ void sub_80AC2CC(u8 taskId) if (gIsLinkContest & 1) { u8 taskId2; - - shared19204.unk1920B_2 = 1; + + //shared19204.unk1920B_2 = 1; + shared19204.unk1920B |= 4; if (sub_80AE074() != 0) sub_80B114C(shared19204.unk19215); taskId2 = CreateTask(sub_80C8C80, 0); @@ -1145,7 +1175,8 @@ void sub_80AC2CC(u8 taskId) } return; case 1: - if (!shared19204.unk1920B_2) + //if (!shared19204.unk1920B_2) + if (!(shared19204.unk1920B & 4)) gTasks[taskId].data[0] = 2; return; case 2: @@ -1169,7 +1200,7 @@ void sub_80AC2CC(u8 taskId) //_080AC534 { s32 i; - + for (i = 0; i < 4; i++) gBattleMonForms[i] = 0; memset(shared19260.unk19348, 0, 20); @@ -1227,7 +1258,7 @@ void sub_80AC2CC(u8 taskId) { // doesn't match u16 r4 = sub_80B2760(shared19260.unk19260[shared19204.unk19215].unk6); - + sub_80B2790(shared19204.unk19215); sub_80B28F0(shared19204.unk19215); sub_80B29B4(r4); @@ -1278,7 +1309,7 @@ void sub_80AC2CC(u8 taskId) if (shared19260.unk19260[r7].unk14 != 0xFF) { //s32 r6 = 0; - + for (r6 = 0; r6 < 4; r6++) { if (r6 != r7 && shared19260.unk19260[r6].unk13 != 0xFF) @@ -1333,7 +1364,8 @@ void sub_80AC2CC(u8 taskId) return; case 49: //_080AC94C - if (!shared19204.unk1920A_4) + //if (!shared19204.unk1920A_4) + if (!(shared19204.unk1920A & 0x10)) gTasks[taskId].data[0] = 47; return; case 47: @@ -1359,7 +1391,8 @@ void sub_80AC2CC(u8 taskId) return; case 36: //_080ACA24 - if (!shared19204.unk1920A_4) + //if (!shared19204.unk1920A_4) + if (!(shared19204.unk1920A & 0x10)) gTasks[taskId].data[0] = 37; return; case 37: @@ -1398,16 +1431,16 @@ void sub_80AC2CC(u8 taskId) { s8 r4 = 0; s32 r2 = 0; - + // Is this variable reused? r6 = gTasks[taskId].data[1]; - + // This part is really weird while (r6 < 4) { r4 = 0; r2 = 0; - + if (r4 != r7 && gUnknown_02038696[0] == r6 && shared19260.unk19260[0].unk13 != 0xFF) { @@ -1456,7 +1489,7 @@ void sub_80AC2CC(u8 taskId) //_080ACBDC { u8 r1; - + // check this later r6 = 0; while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) @@ -1524,7 +1557,7 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[10] = 0; if (shared19260.unk19260[r7].unkC_1 || shared19260.unk19260[r7].unkC_2 - || (shared19260.unk19260[r7].unk11 & 4) + || (shared19260.unk19260[r7].unk11 & 4)) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); @@ -1549,7 +1582,7 @@ void sub_80AC2CC(u8 taskId) //_080ACEC0 { s8 r4 = shared19260.unk19260[r7].unk16; - + if (r4 != 0) { sub_80AF138(); @@ -1578,7 +1611,8 @@ void sub_80AC2CC(u8 taskId) return; case 45: //_080ACFA8 - if (!shared19204.unk1920A_4) + //if (!shared19204.unk1920A_4) + if (!(shared19204.unk1920A & 0x10)) { sub_80B09B0(shared19204.unk19215); gTasks[taskId].data[0] = 15; @@ -1631,7 +1665,8 @@ void sub_80AC2CC(u8 taskId) return; case 46: //_080AD0FA - if (!shared19204.unk1920A_4) + //if (!shared19204.unk1920A_4) + if (!(shared19204.unk1920A & 0x10)) gTasks[taskId].data[0] = 19; return; case 19: @@ -1658,7 +1693,270 @@ void sub_80AC2CC(u8 taskId) return; case 41: //_080AD1A4 - if (shared) + if (shared19260.unk19328.bits_8 && r7 != shared19260.unk19328.bits_9) + { + gTasks[taskId].data[0] = 57; + } + //_080AD1D0 + else + { + s8 r4 = shared19260.unk19328.bits_0; + + if (shared19260.unk19260[r7].unk11 & 0x10) + StringCopy(gStringVar3, gMoveNames[shared19260.unk19260[r7].unk6]); + else + StringCopy(gStringVar3, gUnknown_083CC2D8[gContestMoves[shared19260.unk19260[r7].unk6].contestCategory]); + //_080AD21E + if (r4 > 0 && (shared19260.unk19260[r7].unk15 & 1)) + r4 = 0; + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + shared19204.unk19217 += r4; + if (shared19204.unk19217 < 0) + shared19204.unk19217 = 0; + if (r4 == 0) + { + gTasks[taskId].data[0] = 55; + } + else + { + if (r4 < 0) + StringExpandPlaceholders(gStringVar4, gUnknown_083CC0BC); + else if (r4 > 0 && shared19204.unk19217 <= 4) + StringExpandPlaceholders(gStringVar4, gUnknown_083CC0A0); + else + StringExpandPlaceholders(gStringVar4, gUnknown_083CC0E3); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + if (r4 <= 0) + gTasks[taskId].data[0] = 53; + else + gTasks[taskId].data[0] = 54; + } + } + return; + case 53: + //_080AD316 + switch (gTasks[taskId].data[10]) + { + case 0: + sub_80B1EA8(-1, 1); + PlayFanfare(BGM_ME_ZANNEN); + gTasks[taskId].data[10]++; + break; + case 1: + //_080AD354 + if (!(shared19204.unk1920B & 1) && sub_80037A0(&gMenuWindow) != 0) + { + sub_80B1CBC(-1); + gTasks[taskId].data[10]++; + } + break; + case 2: + //_080AD37C + if (!(shared19204.unk1920A & 0x20)) + { + if (++gTasks[taskId].data[11] > 29) + gTasks[taskId].data[10]++; + } + break; + case 3: + //_080AD3B0 + if (!gPaletteFade.active) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[0] = 43; + } + break; + } + return; + case 54: + //_080AD3D0 + switch (gTasks[taskId].data[10]) + { + case 0: + //_080AD408 + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80B1EA8(0, 1); + gTasks[taskId].data[10]++; + } + break; + case 1: + //_080AD420 + if (!(shared19204.unk1920B & 1)) + { + sub_80B1DDC(); + PlaySE(SE_W227B); + sub_80B1CBC(); + gTasks[taskId].data[10]++; + } + break; + case 2: + //_080AD43E + if (!(shared19204.unk1920A & 0x20)) + { + if (++gTasks[taskId].data[11] > 29) + { + gTasks[taskId].data[11] = 0; + sub_80AFBA0(shared19260.unk19260[r7].unk2, shared19260.unk19328.unk2, r7); + shared19260.unk19260[r7].unk2 += shared19260.unk19328.unk2; + gTasks[taskId].data[10]++; + } + } + break; + case 3: + //_080AD4A0 + if (!(shared19260.unk19338[r7].unk2 & 4)) + { + if (!(shared19204.unk1920A & 0x80)) + { + sub_80B1EA8(1, -1); + gTasks[taskId].data[10]++; + } + } + break; + case 4: + //_080AD4EC + if (!gPaletteFade.active) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[0] = 43; + } + break; + } + return; + case 43: + //_080AD514 + if (!(shared19260.unk19338[r7].unk2 & 4)) + { + sub_80AF138(); + gTasks[taskId].data[0] = 55; + } + return; + case 57: + //_080AD53C + sub_80AF138(); + StringCopy(gStringVar3, gContestMons[shared19260.unk19328.bits_9].nickname); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringCopy(gStringVar2, gMoveNames[shared19260.unk19260[r7].unk6]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC14A); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 58; + return; + case 58: + //_080AD5D0 + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80AF138(); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC16E); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 59; + } + return; + case 59: + //_080AD624 + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80AF138(); + gTasks[taskId].data[0] = 55; + } + return; + case 33: + //_080AD648 + if (shared19260.unk19260[r7].unk15 & 0x10) + shared19260.unk19260[r7].unk15 &= ~0x10; + sub_80B09B0(r7); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringCopy(gStringVar2, gMoveNames[shared19260.unk19260[r7].unk6]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 34; + return; + case 34: + //_080AD6D8 + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 55; + return; + case 55: + //_080AD700 + sub_80B1BDC(); + gTasks[taskId].data[0] = 56; + return; + case 56: + //_080AD71C + if (!(shared19204.unk1920A & 0x40)) + { + if (shared19204.unk19217 > 4) + { + shared19204.unk19217 = 0; + sub_80B1928(); + } + gTasks[taskId].data[0] = 10; + } + return; + case 10: + //_080AD750 + spriteId = gTasks[taskId].data[2]; + gSprites[spriteId].callback = sub_80AD92C; + gTasks[taskId].data[0] = 11; + return; + case 11: + //_080AD77C + spriteId = gTasks[taskId].data[2]; + if (gSprites[spriteId].invisible) + { + FreeSpriteOamMatrix(&gSprites[spriteId]); + DestroySprite(&gSprites[spriteId]); + gTasks[taskId].data[0] = 20; + } + return; + case 20: + //_080AD7B8 + for (r6 = 0; r6 < 4; r6++) + sub_80B0CDC(r6, 1); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 21; + return; + case 31: + //_080AD7E8 + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CB00D); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 32; + return; + case 32: + //_080AD840 + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 21; + return; + case 21: + //_080AD868 + if (++gTasks[taskId].data[10] > 29) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 22; + } + return; + case 22: + //_080AD88C + if (++shared19204.unk19214 == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80AD960; + } + else + { + gTasks[taskId].data[0] = 0; + } + nullsub_18(0); + return; } } -*/ \ No newline at end of file +*/ -- cgit v1.2.3 From 1eb55b4b6da9470af8fafc39bc59aeeab54d369c Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 15 Dec 2017 18:17:27 -0600 Subject: hack some more on sub_80AC2CC --- src/contest.c | 1357 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 1208 insertions(+), 149 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 83ebb4e8f..06fea7959 100644 --- a/src/contest.c +++ b/src/contest.c @@ -73,13 +73,19 @@ struct UnknownContestStruct1 u16 unk6; // move u16 unk8; u8 unkA; // contest category + /* u8 unkB_0:2; u8 unkB_2:1; u8 unkB_3:4; u8 unkB_7:1; + */ + u8 unkB; + /* u8 unkC_0:1; u8 unkC_1:1; u8 unkC_2:1; + */ + u8 unkC; u8 fillerD; u8 unkE; u8 fillerF; @@ -113,11 +119,20 @@ struct UnknownContestStruct4 u8 filler3; }; +struct UnknownContestStruct5_alt +{ + u8 bits_0; + u8 unk1; + s8 unk2; + u8 filler3; +}; + struct UnknownContestStruct5 { u16 bits_0:8; u16 bits_8:1; u16 bits_9:3; + u16 bits_C:4; s8 unk2; u8 filler3; }; @@ -207,8 +222,8 @@ u8 sub_80AE9FC(); void sub_80AEB30(void); void sub_80AEBEC(u16); void sub_80AED58(void); -u8 sub_80AEE54(); -u8 sub_80AF038(); +u8 sub_80AEE54(u8, u8); +u8 sub_80AF038(u8); void sub_80AF120(void); void sub_80AF138(void); u16 sub_80AF15C(u8); @@ -228,11 +243,11 @@ void sub_80B0518(void); void sub_80B09B0(); u8 sub_80B09E4(); void sub_80B0BC4(); -void sub_80B0CDC(); +void sub_80B0CDC(u8, int); void sub_80B0D7C(void); void sub_80B1118(void); void sub_80B114C(u8); -void sub_80B146C(); +void sub_80B146C(u8, u8); void sub_80B159C(void); void sub_80B1710(); void sub_80B1928(void); @@ -240,7 +255,7 @@ void sub_80B1B14(void); void sub_80B1BDC(void); void sub_80B1CBC(); void sub_80B1DDC(void); -void sub_80B1EA8(); +void sub_80B1EA8(s8, s8); void sub_80B1FD0(); void sub_80B20C4(void); u8 sub_80B214C(u8); @@ -334,6 +349,8 @@ void sub_80AB350(void) FillPalette(0x7E3F, 0xF3, 2); } +// Can't figure out whether bitfields were used or not +/* void sub_80AB398(void) { s32 i; @@ -363,6 +380,120 @@ void sub_80AB398(void) } sub_80B159C(); } +*/ +__attribute__((naked)) +void sub_80AB398(void) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + ldr r4, _080AB468 @ =gSharedMem + 0x19204\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + movs r2, 0x5C\n\ + bl memset\n\ + movs r5, 0\n\ + adds r4, 0x2\n\ + movs r2, 0xFF\n\ +_080AB3AC:\n\ + adds r1, r5, r4\n\ + ldrb r0, [r1]\n\ + orrs r0, r2\n\ + strb r0, [r1]\n\ + adds r5, 0x1\n\ + cmp r5, 0x3\n\ + ble _080AB3AC\n\ + ldr r4, _080AB46C @ =gSharedMem + 0x19260\n\ + movs r5, 0x3\n\ +_080AB3BE:\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + movs r2, 0x1C\n\ + bl memset\n\ + adds r4, 0x1C\n\ + subs r5, 0x1\n\ + cmp r5, 0\n\ + bge _080AB3BE\n\ + ldr r4, _080AB470 @ =gSharedMem + 0x192D0\n\ + movs r6, 0x4\n\ + negs r6, r6\n\ + movs r3, 0xFF\n\ + adds r2, r4, 0\n\ + subs r2, 0x65\n\ + movs r5, 0x3\n\ +_080AB3DE:\n\ + ldrb r1, [r2]\n\ + adds r0, r6, 0\n\ + ands r0, r1\n\ + strb r0, [r2]\n\ + ldrb r0, [r2, 0x8]\n\ + orrs r0, r3\n\ + strb r0, [r2, 0x8]\n\ + ldrb r0, [r2, 0x9]\n\ + orrs r0, r3\n\ + strb r0, [r2, 0x9]\n\ + adds r2, 0x1C\n\ + subs r5, 0x1\n\ + cmp r5, 0\n\ + bge _080AB3DE\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + movs r2, 0x14\n\ + bl memset\n\ + adds r0, r4, 0\n\ + adds r0, 0x14\n\ + movs r1, 0\n\ + movs r2, 0x44\n\ + bl memset\n\ + adds r0, r4, 0\n\ + adds r0, 0x58\n\ + movs r1, 0\n\ + movs r2, 0x4\n\ + bl memset\n\ + adds r0, r4, 0\n\ + adds r0, 0x68\n\ + movs r1, 0\n\ + movs r2, 0x10\n\ + bl memset\n\ + ldr r0, _080AB474 @ =gIsLinkContest\n\ + ldrb r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080AB43A\n\ + movs r0, 0\n\ + bl sub_80B0F28\n\ +_080AB43A:\n\ + movs r5, 0\n\ + movs r6, 0xFF\n\ + adds r3, r4, 0\n\ + subs r3, 0xB8\n\ + adds r2, r4, 0\n\ + subs r2, 0x57\n\ + ldr r4, _080AB478 @ =gUnknown_02038696\n\ +_080AB448:\n\ + ldrb r0, [r2]\n\ + orrs r0, r6\n\ + strb r0, [r2]\n\ + adds r1, r3, r5\n\ + adds r0, r5, r4\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + adds r2, 0x1C\n\ + adds r5, 0x1\n\ + cmp r5, 0x3\n\ + ble _080AB448\n\ + bl sub_80B159C\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080AB468: .4byte gSharedMem + 0x19204\n\ +_080AB46C: .4byte gSharedMem + 0x19260\n\ +_080AB470: .4byte gSharedMem + 0x192D0\n\ +_080AB474: .4byte gIsLinkContest\n\ +_080AB478: .4byte gUnknown_02038696\n\ + .syntax divided\n"); +} void sub_80AB47C(void) { @@ -1132,10 +1263,11 @@ extern const u8 gUnknown_083CC16E[]; extern const u8 *const gUnknown_083CC2D8[]; extern const u8 *const gUnknown_083CC330[]; -/* +#if 0 void sub_80AC2CC(u8 taskId) { u8 spriteId; // r5 + //register s32 r6 asm("r6"); s32 r6; u8 r7 = shared19204.unk19215; @@ -1182,18 +1314,21 @@ void sub_80AC2CC(u8 taskId) case 2: //_080AC4D4 // Come on, get this part to match! - if (shared19260.unk19260[r7].unkC_1 - || shared19260.unk19260[r7].unkC_2 - || shared19260.unk19260[r7].unkB_7) - { - gTasks[taskId].data[0] = 31; - } - else { - sub_80AF138(); - sub_80B0CDC(r7, 0); - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 3; + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if ((s->unkC & 6) + || (s->unkB & 0x80)) + { + gTasks[taskId].data[0] = 31; + } + else + { + sub_80AF138(); + sub_80B0CDC(r7, 0); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 3; + } } return; case 3: @@ -1220,29 +1355,35 @@ void sub_80AC2CC(u8 taskId) case 4: //_080AC5E8 spriteId = gTasks[taskId].data[2]; - if (gSprites[spriteId].callback == SpriteCallbackDummy - // && !shared19260.unk19348[r7].unk2_1) - && !(shared19260.unk19348[r7].unk2 & 2)) - gTasks[taskId].data[0] = 5; + if (gSprites[spriteId].callback == SpriteCallbackDummy) + { + struct UnknownContestStruct4 *s = &shared19260.unk19338[r7]; + if (!(s->unk2 & 2)) + gTasks[taskId].data[0] = 5; + } return; case 5: //_080AC638 - if (shared19260.unk19260[r7].unkC_0) - { - gTasks[taskId].data[0] = 33; - } - //_080AC664 - else { - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - if (shared19260.unk19260[r7].unk6 <= 354) - StringCopy(gStringVar2, gMoveNames[shared19260.unk19260[r7].unk6]); + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if (s->unkC & 1) + { + gTasks[taskId].data[0] = 33; + } + //_080AC664 else - StringCopy(gStringVar2, gUnknown_083CC330[shared19260.unk19260[r7].unkA]); - StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[0] = 6; + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + if (s->unk6 <= 354) + StringCopy(gStringVar2, gMoveNames[s->unk6]); + else + StringCopy(gStringVar2, gUnknown_083CC330[s->unkA]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 6; + } } return; case 6: @@ -1256,8 +1397,9 @@ void sub_80AC2CC(u8 taskId) case 7: //_080AC730 { + struct UnknownContestStruct1 *s = &shared19260.unk19260[shared19204.unk19215]; // doesn't match - u16 r4 = sub_80B2760(shared19260.unk19260[shared19204.unk19215].unk6); + u16 r4 = sub_80B2760(s->unk6); sub_80B2790(shared19204.unk19215); sub_80B28F0(shared19204.unk19215); @@ -1279,7 +1421,9 @@ void sub_80AC2CC(u8 taskId) } else { - if (!(shared19260.unk19260[r7].unk15 & 0x10)) + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if (!(s->unk15 & 0x10)) sub_80B03A8(r7); sub_80B20C4(); gTasks[taskId].data[0] = 23; @@ -1296,43 +1440,48 @@ void sub_80AC2CC(u8 taskId) return; case 23: //_080AC81E - gTasks[taskId].data[1] = 0; - if (shared19260.unk19260[r7].unk13 != 0xFF) - { - sub_80B146C(r7, shared19260.unk19260[r7].unk13); - shared19260.unk19260[r7].unk13 = 0xFF; - gTasks[taskId].data[0] = 24; - } - //_080AC85C - else { - if (shared19260.unk19260[r7].unk14 != 0xFF) - { - //s32 r6 = 0; + struct UnknownContestStruct1 *s; // r6 - for (r6 = 0; r6 < 4; r6++) - { - if (r6 != r7 && shared19260.unk19260[r6].unk13 != 0xFF) - break; - } - //_080AC886 - if (r6 == 4) + gTasks[taskId].data[1] = 0; + s = &shared19260.unk19260[r7]; + if (s->unk13 != 0xFF) + { + sub_80B146C(r7, s->unk13); + shared19260.unk19260[r7].unk13 = 0xFF; + gTasks[taskId].data[0] = 24; + } + //_080AC85C + else + { + if (s->unk14 != 0xFF) { - sub_80B146C(r7, shared19260.unk19260[r7].unk14); - shared19260.unk19260[r7].unk14 = 0xFF; - gTasks[taskId].data[0] = 24; + //s32 r6 = 0; + + for (r6 = 0; r6 < 4; r6++) + { + if (r6 != r7 && shared19260.unk19260[r6].unk13 != 0xFF) + break; + } + //_080AC886 + if (r6 == 4) + { + sub_80B146C(r7, shared19260.unk19260[r7].unk14); + shared19260.unk19260[r7].unk14 = 0xFF; + gTasks[taskId].data[0] = 24; + } + //_080AC8B4 + else + { + gTasks[taskId].data[0] = 48; + } } - //_080AC8B4 + //_080AC8C4 else { gTasks[taskId].data[0] = 48; } } - //_080AC8C4 - else - { - gTasks[taskId].data[0] = 48; - } } return; case 24: @@ -1342,24 +1491,31 @@ void sub_80AC2CC(u8 taskId) return; case 48: //_080AC8F8 - if ((shared19260.unk19260[r7].unk11 & 3) == 1) - { - sub_80B1710(5); - gTasks[taskId].data[0] = 49; - } - else if ((shared19260.unk19260[r7].unk11 & 3) == 2) - { - sub_80B1710(6); - gTasks[taskId].data[0] = 49; - } - else if ((shared19260.unk19260[r7].unk11 & 3) == 3) - { - sub_80B1710(7); - gTasks[taskId].data[0] = 49; - } - else { - gTasks[taskId].data[0] = 47; + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if ((s->unk11 & 3) == 1) + { + sub_80B1710(5); + asm(""); + gTasks[taskId].data[0] = 49; + } + else if ((s->unk11 & 3) == 2) + { + sub_80B1710(6); + asm(""); + gTasks[taskId].data[0] = 49; + } + else if ((s->unk11 & 3) == 3) + { + sub_80B1710(7); + asm(""); + gTasks[taskId].data[0] = 49; + } + else + { + gTasks[taskId].data[0] = 47; + } } return; case 49: @@ -1375,19 +1531,31 @@ void sub_80AC2CC(u8 taskId) return; case 12: //_080AC98C - sub_80AFBA0(0, shared19260.unk19260[r7].unk2, r7); - gTasks[taskId].data[0] = 13; + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + sub_80AFBA0(0, s->unk2, r7); + gTasks[taskId].data[0] = 13; + } return; case 13: //_080AC9C0 - if (!(shared19260.unk19338[shared19204.unk19215].unk2 & 4)) - gTasks[taskId].data[0] = 35; + { + struct UnknownContestStruct4 *s = &shared19260.unk19338[shared19204.unk19215]; + + if (!(s->unk2 & 4)) + gTasks[taskId].data[0] = 35; + } return; case 35: //_080AC9EC - if ((shared19260.unk19260[r7].unk10 & 0x30) == 0x10) - sub_80B1710(8); - gTasks[taskId].data[0] = 36; + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if ((s->unk10 & 0x30) == 0x10) + sub_80B1710(8); + gTasks[taskId].data[0] = 36; + } return; case 36: //_080ACA24 @@ -1431,24 +1599,13 @@ void sub_80AC2CC(u8 taskId) { s8 r4 = 0; s32 r2 = 0; + u8 r2_; - // Is this variable reused? - r6 = gTasks[taskId].data[1]; - - // This part is really weird - while (r6 < 4) + for (r6 = gTasks[taskId].data[1]; r6 < 4; r6++) { + //_080ACB0A r4 = 0; - r2 = 0; - - if (r4 != r7 && gUnknown_02038696[0] == r6 - && shared19260.unk19260[0].unk13 != 0xFF) - { - r4 = 1; - break; - } - //_080ACB2C - while (++r2 < 4) + for (r2 = 0; r2 < 4; r2++) { if (r2 != r7 && gUnknown_02038696[0] == r6 && shared19260.unk19260[r2].unk13 != 0xFF) @@ -1465,9 +1622,13 @@ void sub_80AC2CC(u8 taskId) if (r4 != 0) { //_080ACB60 + struct UnknownContestStruct1 *s; + gTasks[taskId].data[1] = gUnknown_02038696[r2]; - sub_80B146C(r2, shared19260.unk19260[r2].unk13); - shared19260.unk19260[r2].unk13 = 0xFF; + r2_ = r2; + s = &shared19260.unk19260[r2_]; + sub_80B146C(r2_, s->unk13); + s->unk13 = 0xFF; gTasks[taskId].data[0] = 27; } //_080ACB98 @@ -1502,12 +1663,17 @@ void sub_80AC2CC(u8 taskId) return; case 29: //_080ACC44 - r6 = 0; - while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) - r6++; - //_080ACC6C - if (!(shared19260.unk19338[r6].unk2 & 4)) - gTasks[taskId].data[0] = 39; + { + struct UnknownContestStruct4 *s; + + r6 = 0; + while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) + r6++; + //_080ACC6C + s = &shared19260.unk19338[r6]; + if (!(s->unk2 & 4)) + gTasks[taskId].data[0] = 39; + } return; case 39: //_080ACC98 @@ -1534,30 +1700,40 @@ void sub_80AC2CC(u8 taskId) return; case 30: //_080ACD2A - r6 = 0; - while (r6 < 4 && gTasks[taskId].data[1] != gUnknown_02038696[r6]) - r6++; - //_080ACD5E - if (sub_80AF038(r6) != 0) - PlaySE(SE_C_PASI); - else - PlaySE(SE_C_SYU); - if (shared19260.unk19260[r6].unk15 & 0x20) { - sub_80B03A8(r6); - shared19260.unk19260[r6].unk15 &= ~0x20; + struct UnknownContestStruct1 *s; + + for (r6 = 0; r6 < 4; r6++) + { + if (gUnknown_02038696[r6] == gTasks[taskId].data[1]) + break; + } + //_080ACD5E + if (sub_80AF038(r6) != 0) + PlaySE(SE_C_PASI); + else + PlaySE(SE_C_SYU); + s = &shared19260.unk19260[r6]; + if (s->unk15 & 0x20) + { + sub_80B03A8(r6); + // Doesn't match, probably a bitfield + s->unk15 &= ~0x20; + } + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 26; } - gTasks[taskId].data[1]++; - gTasks[taskId].data[0] = 26; return; case 51: //_080ACDC8 if (++gTasks[taskId].data[10] > 9) { + struct UnknownContestStruct1 *s; + gTasks[taskId].data[10] = 0; - if (shared19260.unk19260[r7].unkC_1 - || shared19260.unk19260[r7].unkC_2 - || (shared19260.unk19260[r7].unk11 & 4)) + s = &shared19260.unk19260[r7]; + if ((s->unkC & 6) + || (s->unk11 & 4)) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); @@ -1572,7 +1748,9 @@ void sub_80AC2CC(u8 taskId) //_080ACE64 if (sub_80037A0(&gMenuWindow) != 0) { - if (!(shared19260.unk19260[r7].unk15 & 0x40)) + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if (!(s->unk15 & 0x40)) gTasks[taskId].data[0] = 17; else gTasks[taskId].data[0] = 14; @@ -1581,9 +1759,10 @@ void sub_80AC2CC(u8 taskId) case 14: //_080ACEC0 { - s8 r4 = shared19260.unk19260[r7].unk16; + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + s32 r4 = s->unk16; // what type is this? - if (r4 != 0) + if ((u8)r4 != 0) { sub_80AF138(); if (r4 == 1) @@ -1595,6 +1774,7 @@ void sub_80AC2CC(u8 taskId) //_080ACF22 sub_80B1710(3); gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 45; } //_080ACF48 else @@ -1605,8 +1785,8 @@ void sub_80AC2CC(u8 taskId) sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); sub_80B1710(2); gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 45; } - gTasks[taskId].data[0] = 45; // tail merge? } return; case 45: @@ -1639,28 +1819,907 @@ void sub_80AC2CC(u8 taskId) return; case 16: //_080AD040 - if (!(shared19260.unk19338[r7].unk2 & 4)) { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 17; + struct UnknownContestStruct4 *s = &shared19260.unk19338[r7]; + + if (!(s->unk2 & 4)) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 17; + } } return; case 17: //_080AD070 - if (shared19260.unk19260[r7].unk15 & 1) - { - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC075); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[10] = 0; - sub_80B1710(); - gTasks[taskId].data[0] = 46; - } - //_080AD0E8 - else { - gTasks[taskId].data[0] = 41; + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if (s->unk15 & 1) + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC075); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[10] = 0; + sub_80B1710(); + gTasks[taskId].data[0] = 46; + } + //_080AD0E8 + else + { + gTasks[taskId].data[0] = 41; + } + } + return; + case 46: + //_080AD0FA + //if (!shared19204.unk1920A_4) + if (!(shared19204.unk1920A & 0x10)) + gTasks[taskId].data[0] = 19; + return; + case 19: + //_080AD11A + if (sub_80037A0(&gMenuWindow) != 0) + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + sub_80AFBA0(s->unk2, -s->unk18, r7); + s->unk2 -= s->unk18; + gTasks[taskId].data[0] = 18; + } + return; + case 18: + //_080AD168 + { + struct UnknownContestStruct4 *s; + + sub_80B0D7C(); + s = &shared19260.unk19338[r7]; + if (!(s->unk2 & 4)) + { + gTasks[taskId].data[10] = 0; + sub_80AF138(); + gTasks[taskId].data[0] = 41; + } + } + return; + case 41: + //_080AD1A4 + { + struct UnknownContestStruct5 *s5 = &shared19260.unk19328; + + // WTF is this struct? + if ((((struct UnknownContestStruct5_alt *)s5)->unk1 & 1) + && r7 != s5->bits_9) + { + gTasks[taskId].data[0] = 57; + } + //_080AD1D0 + else + { + s8 r4 = s5->bits_0; + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if (s->unk11 & 0x10) + { + r4 = 1; + StringCopy(gStringVar3, gMoveNames[s->unk6]); + } + else + { + StringCopy(gStringVar3, gUnknown_083CC2D8[gContestMoves[s->unk6].contestCategory]); + } + //_080AD21E + if (r4 > 0) + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if (s->unk15 & 1) + r4 = 0; + } + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + shared19204.unk19217 += r4; + if (shared19204.unk19217 < 0) + shared19204.unk19217 = 0; + if (r4 == 0) + { + gTasks[taskId].data[0] = 55; + } + else + { + if (r4 < 0) + StringExpandPlaceholders(gStringVar4, gUnknown_083CC0BC); + else if (r4 > 0 && shared19204.unk19217 <= 4) + StringExpandPlaceholders(gStringVar4, gUnknown_083CC0A0); + else + StringExpandPlaceholders(gStringVar4, gUnknown_083CC0E3); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + if (r4 < 0) + gTasks[taskId].data[0] = 53; + else + gTasks[taskId].data[0] = 54; + } + } + } + return; + case 53: + //_080AD316 + switch (gTasks[taskId].data[10]) + { + case 0: + sub_80B1EA8(-1, 1); + PlayFanfare(BGM_ME_ZANNEN); + gTasks[taskId].data[10]++; + break; + case 1: + //_080AD354 + if (!(shared19204.unk1920B & 1) && sub_80037A0(&gMenuWindow) != 0) + { + sub_80B1CBC(-1); + gTasks[taskId].data[10]++; + } + break; + case 2: + //_080AD37C + if (!(shared19204.unk1920A & 0x20)) + { + if (gTasks[taskId].data[11]++ > 29) + { + gTasks[taskId].data[11] = 0; + sub_80B1EA8(-1, -1); + gTasks[taskId].data[10]++; + } + } + break; + case 3: + //_080AD3B0 + if (!gPaletteFade.active) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[0] = 43; + } + break; + } + return; + case 54: + //_080AD3D0 + switch (gTasks[taskId].data[10]) + { + case 0: + //_080AD408 + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80B1EA8(0, 1); + gTasks[taskId].data[10]++; + } + break; + case 1: + //_080AD420 + if (!(shared19204.unk1920B & 1)) + { + sub_80B1DDC(); + PlaySE(SE_W227B); + sub_80B1CBC(1); + gTasks[taskId].data[10]++; + } + break; + case 2: + //_080AD43E + if (!(shared19204.unk1920A & 0x20)) + { + if (gTasks[taskId].data[11]++ > 29) + { + struct UnknownContestStruct1 *s; + + gTasks[taskId].data[11] = 0; + s = &shared19260.unk19260[r7]; + sub_80AFBA0(s->unk2, shared19260.unk19328.unk2, r7); + s->unk2 += (s8)shared19260.unk19328.unk2; + gTasks[taskId].data[10]++; + } + } + break; + case 3: + //_080AD4A0 + { + struct UnknownContestStruct4 *s = &shared19260.unk19338[r7]; + + if (!(s->unk2 & 4)) + { + if (!(shared19204.unk1920A & 0x80)) + { + sub_80B1EA8(1, -1); + gTasks[taskId].data[10]++; + } + } + } + break; + case 4: + //_080AD4EC + if (!gPaletteFade.active) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[0] = 43; + } + break; + } + return; + case 43: + //_080AD514 + { + struct UnknownContestStruct4 *s = &shared19260.unk19338[r7]; + + if (!(s->unk2 & 4)) + { + sub_80AF138(); + gTasks[taskId].data[0] = 55; + } + } + return; + case 57: + //_080AD53C + { + sub_80AF138(); + StringCopy(gStringVar3, gContestMons[shared19260.unk19328.bits_9].nickname); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringCopy(gStringVar2, gMoveNames[shared19260.unk19260[r7].unk6]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC14A); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 58; + } + return; + case 58: + //_080AD5D0 + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80AF138(); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC16E); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 59; + } + return; + case 59: + //_080AD624 + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80AF138(); + gTasks[taskId].data[0] = 55; + } + return; + case 33: + //_080AD648 + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if (s->unk15 & 0x10) + s->unk15 &= ~0x10; // probably a bitfield + sub_80B09B0(r7); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringCopy(gStringVar2, gMoveNames[s->unk6]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 34; + } + return; + case 34: + //_080AD6D8 + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 55; + return; + case 55: + //_080AD700 + sub_80B1BDC(); + gTasks[taskId].data[0] = 56; + return; + case 56: + //_080AD71C + if (!(shared19204.unk1920A & 0x40)) + { + if (shared19204.unk19217 > 4) + { + shared19204.unk19217 = 0; + sub_80B1928(); + } + gTasks[taskId].data[0] = 10; + } + return; + case 10: + //_080AD750 + spriteId = gTasks[taskId].data[2]; + gSprites[spriteId].callback = sub_80AD92C; + gTasks[taskId].data[0] = 11; + return; + case 11: + //_080AD77C + spriteId = gTasks[taskId].data[2]; + if (gSprites[spriteId].invisible) + { + FreeSpriteOamMatrix(&gSprites[spriteId]); + DestroySprite(&gSprites[spriteId]); + gTasks[taskId].data[0] = 20; + } + return; + case 20: + //_080AD7B8 + for (r6 = 0; r6 < 4; r6++) + sub_80B0CDC(r6, 1); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 21; + return; + case 31: + //_080AD7E8 + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CB00D); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 32; + return; + case 32: + //_080AD840 + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 21; + return; + case 21: + //_080AD868 + if (++gTasks[taskId].data[10] > 29) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 22; + } + return; + case 22: + //_080AD88C + if (++shared19204.unk19214 == 4) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80AD960; + } + else + { + gTasks[taskId].data[0] = 0; + } + nullsub_18(0); + return; + } +} +#endif + +/* +void sub_80AC2CC(u8 taskId) +{ + u8 spriteId; // r5 + s32 r6; + u8 r7 = shared19204.unk19215; + + switch (gTasks[taskId].data[0]) + { + case 0: + //_080AC404 + { + //s32 r6; + + sub_80B0D7C(); + r6 = 0; + while (shared19204.unk19214 != shared19260.unk192D0[r6]) + r6++; + //_080AC42C + shared19204.unk19215 = r6; + r7 = shared19204.unk19215; // is r7 actually a variable? + if (gIsLinkContest & 1) + { + u8 taskId2; + + //shared19204.unk1920B_2 = 1; + shared19204.unk1920B |= 4; + if (sub_80AE074() != 0) + sub_80B114C(shared19204.unk19215); + taskId2 = CreateTask(sub_80C8C80, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); + sub_80AF860(); + gTasks[taskId].data[0] = 1; + } + //_080AC498 + else + { + sub_80B114C(r7); + gTasks[taskId].data[0] = 2; + } + } + return; + case 1: + //if (!shared19204.unk1920B_2) + if (!(shared19204.unk1920B & 4)) + gTasks[taskId].data[0] = 2; + return; + case 2: + //_080AC4D4 + // Come on, get this part to match! + if (shared19260.unk19260[r7].unkC_1 + || shared19260.unk19260[r7].unkC_2 + || shared19260.unk19260[r7].unkB_7) + { + gTasks[taskId].data[0] = 31; + } + else + { + sub_80AF138(); + sub_80B0CDC(r7, 0); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 3; + } + return; + case 3: + //_080AC534 + { + s32 i; + + for (i = 0; i < 4; i++) + gBattleMonForms[i] = 0; + memset(shared19260.unk19348, 0, 20); + sub_80B28F0(shared19204.unk19215); + spriteId = sub_80AE9FC( + gContestMons[shared19204.unk19215].species, + gContestMons[shared19204.unk19215].unk3C, + gContestMons[shared19204.unk19215].unk38); + gSprites[spriteId].pos2.x = 120; + gSprites[spriteId].callback = sub_80AD8FC; + gTasks[taskId].data[2] = spriteId; + gObjectBankIDs[gBankAttacker] = spriteId; + sub_80B0BC4(sub_80B09E4(shared19204.unk19215), 0); + gTasks[taskId].data[0] = 4; + } + return; + case 4: + //_080AC5E8 + spriteId = gTasks[taskId].data[2]; + if (gSprites[spriteId].callback == SpriteCallbackDummy + // && !shared19260.unk19348[r7].unk2_1) + && !(shared19260.unk19348[r7].unk2 & 2)) + gTasks[taskId].data[0] = 5; + return; + case 5: + //_080AC638 + if (shared19260.unk19260[r7].unkC_0) + { + gTasks[taskId].data[0] = 33; + } + //_080AC664 + else + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + if (shared19260.unk19260[r7].unk6 <= 354) + StringCopy(gStringVar2, gMoveNames[shared19260.unk19260[r7].unk6]); + else + StringCopy(gStringVar2, gUnknown_083CC330[shared19260.unk19260[r7].unkA]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 6; + } + return; + case 6: + //_080AC6F8 + if (sub_80037A0(&gMenuWindow) != 0) + { + shared19204.unk1925E = 0; + gTasks[taskId].data[0] = 7; + } + return; + case 7: + //_080AC730 + { + // doesn't match + u16 r4 = sub_80B2760(shared19260.unk19260[shared19204.unk19215].unk6); + + sub_80B2790(shared19204.unk19215); + sub_80B28F0(shared19204.unk19215); + sub_80B29B4(r4); + ExecuteMoveAnim(r4); + gTasks[taskId].data[0] = 8; + } + return; + case 8: + //_080AC77C + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_80B28CC(r7); + if (shared19204.unk1925E != 0) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 9; + } + else + { + if (!(shared19260.unk19260[r7].unk15 & 0x10)) + sub_80B03A8(r7); + sub_80B20C4(); + gTasks[taskId].data[0] = 23; + } + } + return; + case 9: + //_080AC7F4 + if (++gTasks[taskId].data[10] > 30) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 7; + } + return; + case 23: + //_080AC81E + gTasks[taskId].data[1] = 0; + if (shared19260.unk19260[r7].unk13 != 0xFF) + { + sub_80B146C(r7, shared19260.unk19260[r7].unk13); + shared19260.unk19260[r7].unk13 = 0xFF; + gTasks[taskId].data[0] = 24; + } + //_080AC85C + else + { + if (shared19260.unk19260[r7].unk14 != 0xFF) + { + //s32 r6 = 0; + + for (r6 = 0; r6 < 4; r6++) + { + if (r6 != r7 && shared19260.unk19260[r6].unk13 != 0xFF) + break; + } + //_080AC886 + if (r6 == 4) + { + sub_80B146C(r7, shared19260.unk19260[r7].unk14); + shared19260.unk19260[r7].unk14 = 0xFF; + gTasks[taskId].data[0] = 24; + } + //_080AC8B4 + else + { + gTasks[taskId].data[0] = 48; + } + } + //_080AC8C4 + else + { + gTasks[taskId].data[0] = 48; + } + } + return; + case 24: + //_080AC8CC + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 23; + return; + case 48: + //_080AC8F8 + if ((shared19260.unk19260[r7].unk11 & 3) == 1) + { + sub_80B1710(5); + gTasks[taskId].data[0] = 49; + } + else if ((shared19260.unk19260[r7].unk11 & 3) == 2) + { + sub_80B1710(6); + gTasks[taskId].data[0] = 49; + } + else if ((shared19260.unk19260[r7].unk11 & 3) == 3) + { + sub_80B1710(7); + gTasks[taskId].data[0] = 49; + } + else + { + gTasks[taskId].data[0] = 47; + } + return; + case 49: + //_080AC94C + //if (!shared19204.unk1920A_4) + if (!(shared19204.unk1920A & 0x10)) + gTasks[taskId].data[0] = 47; + return; + case 47: + //_080AC96C + sub_80B1FD0(1); + gTasks[taskId].data[0] = 12; + return; + case 12: + //_080AC98C + sub_80AFBA0(0, shared19260.unk19260[r7].unk2, r7); + gTasks[taskId].data[0] = 13; + return; + case 13: + //_080AC9C0 + if (!(shared19260.unk19338[shared19204.unk19215].unk2 & 4)) + gTasks[taskId].data[0] = 35; + return; + case 35: + //_080AC9EC + if ((shared19260.unk19260[r7].unk10 & 0x30) == 0x10) + sub_80B1710(8); + gTasks[taskId].data[0] = 36; + return; + case 36: + //_080ACA24 + //if (!shared19204.unk1920A_4) + if (!(shared19204.unk1920A & 0x10)) + gTasks[taskId].data[0] = 37; + return; + case 37: + //_080ACA44 + if (sub_80AEE54(r7, 1) != 0) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 38; + } + else + { + gTasks[taskId].data[0] = 50; + } + return; + case 38: + //_080ACA84 + if (++gTasks[taskId].data[10] > 20) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 50; + } + return; + case 50: + //_080ACAAE + if (sub_80AF038(r7) != 0) + PlaySE(SE_C_PASI); + gTasks[taskId].data[0] = 25; + return; + case 25: + //_080ACAD8 + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0] = 26; + return; + case 26: + //_080ACAEE + { + s8 r4 = 0; + s32 r2 = 0; + + // Is this variable reused? + r6 = gTasks[taskId].data[1]; + + // This part is really weird + while (r6 < 4) + { + r4 = 0; + r2 = 0; + + if (r4 != r7 && gUnknown_02038696[0] == r6 + && shared19260.unk19260[0].unk13 != 0xFF) + { + r4 = 1; + break; + } + //_080ACB2C + while (++r2 < 4) + { + if (r2 != r7 && gUnknown_02038696[0] == r6 + && shared19260.unk19260[r2].unk13 != 0xFF) + { + r4 = 1; + break; + } + } + //_080ACB4E + if (r4 != 0) + break; + } + //_080ACB58 + if (r4 != 0) + { + //_080ACB60 + gTasks[taskId].data[1] = gUnknown_02038696[r2]; + sub_80B146C(r2, shared19260.unk19260[r2].unk13); + shared19260.unk19260[r2].unk13 = 0xFF; + gTasks[taskId].data[0] = 27; + } + //_080ACB98 + else + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 51; + sub_80AF120(); + } + } + return; + case 27: + //_080ACBB0 + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 28; + return; + case 28: + //_080ACBDC + { + u8 r1; + + // check this later + r6 = 0; + while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) + r6++; + //_080ACC08 + r1 = shared19260.unk19260[r6].unkE; + sub_80AFBA0(shared19260.unk19260[r6].unk2 + r1, -r1, r6); + gTasks[taskId].data[0] = 29; + } + return; + case 29: + //_080ACC44 + r6 = 0; + while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) + r6++; + //_080ACC6C + if (!(shared19260.unk19338[r6].unk2 & 4)) + gTasks[taskId].data[0] = 39; + return; + case 39: + //_080ACC98 + r6 = 0; + while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) + r6++; + if (sub_80AEE54(r6, 1) != 0) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 40; + } + else + { + gTasks[taskId].data[0] = 30; + } + return; + case 40: + //_080ACD00 + if (++gTasks[taskId].data[10] > 20) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 30; + } + return; + case 30: + //_080ACD2A + r6 = 0; + while (r6 < 4 && gTasks[taskId].data[1] != gUnknown_02038696[r6]) + r6++; + //_080ACD5E + if (sub_80AF038(r6) != 0) + PlaySE(SE_C_PASI); + else + PlaySE(SE_C_SYU); + if (shared19260.unk19260[r6].unk15 & 0x20) + { + sub_80B03A8(r6); + shared19260.unk19260[r6].unk15 &= ~0x20; + } + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 26; + return; + case 51: + //_080ACDC8 + if (++gTasks[taskId].data[10] > 9) + { + gTasks[taskId].data[10] = 0; + if (shared19260.unk19260[r7].unkC_1 + || shared19260.unk19260[r7].unkC_2 + || (shared19260.unk19260[r7].unk11 & 4)) + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC103); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + } + //_080ACE36 + gTasks[taskId].data[0] = 52; + } + return; + case 52: + //_080ACE64 + if (sub_80037A0(&gMenuWindow) != 0) + { + if (!(shared19260.unk19260[r7].unk15 & 0x40)) + gTasks[taskId].data[0] = 17; + else + gTasks[taskId].data[0] = 14; + } + return; + case 14: + //_080ACEC0 + { + s8 r4 = shared19260.unk19260[r7].unk16; + + if (r4 != 0) + { + sub_80AF138(); + if (r4 == 1) + sub_8002EB0(&gMenuWindow, gUnknown_083CBD79, 776, 1, 15); + else if (r4 == 2) + sub_8002EB0(&gMenuWindow, gUnknown_083CBD9D, 776, 1, 15); + else + sub_8002EB0(&gMenuWindow, gUnknown_083CBDC6, 776, 1, 15); + //_080ACF22 + sub_80B1710(3); + gTasks[taskId].data[10] = 0; + } + //_080ACF48 + else + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CBD52); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + sub_80B1710(2); + gTasks[taskId].data[10] = 0; + } + gTasks[taskId].data[0] = 45; // tail merge? + } + return; + case 45: + //_080ACFA8 + //if (!shared19204.unk1920A_4) + if (!(shared19204.unk1920A & 0x10)) + { + sub_80B09B0(shared19204.unk19215); + gTasks[taskId].data[0] = 15; + } + return; + case 15: + //_080ACFD4 + if (sub_80037A0(&gMenuWindow) != 0) + { + if (++gTasks[taskId].data[10] > 50) + { + if (!(shared19260.unk19260[r7].unk15 & 0x10)) + { + sub_80AFBA0( + shared19260.unk19260[r7].unk2, + shared19260.unk19260[r7].unk17, + r7); + shared19260.unk19260[r7].unk2 += shared19260.unk19260[r7].unk17; + } + //_080AD02C + gTasks[taskId].data[0] = 16; + } + } + return; + case 16: + //_080AD040 + if (!(shared19260.unk19338[r7].unk2 & 4)) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 17; + } + return; + case 17: + //_080AD070 + if (shared19260.unk19260[r7].unk15 & 1) + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC075); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[10] = 0; + sub_80B1710(); + gTasks[taskId].data[0] = 46; + } + //_080AD0E8 + else + { + gTasks[taskId].data[0] = 41; } return; case 46: @@ -1959,4 +3018,4 @@ void sub_80AC2CC(u8 taskId) return; } } -*/ +*/ \ No newline at end of file -- cgit v1.2.3 From 4eaa3ed97fcc6752e13e7cbdb833895217dcf769 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 16 Dec 2017 17:19:43 -0600 Subject: get sub_80AC2CC closer --- src/contest.c | 3644 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 2722 insertions(+), 922 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 06fea7959..e4c68b11a 100644 --- a/src/contest.c +++ b/src/contest.c @@ -94,7 +94,11 @@ struct UnknownContestStruct1 u8 filler12; u8 unk13; u8 unk14; - u8 unk15; + u8 unk15_0:1; + u8 unk15_1:3; + u8 unk15_4:1; + u8 unk15_5:1; + u8 unk15_6:1; u8 unk16; u8 unk17; u8 unk18; @@ -238,7 +242,7 @@ void sub_80B0034(void); void sub_80B00C8(void); void nullsub_18(); void sub_80B0324(void); -void sub_80B03A8(); +void sub_80B03A8(u8); void sub_80B0518(void); void sub_80B09B0(); u8 sub_80B09E4(); @@ -362,8 +366,7 @@ void sub_80AB398(void) memset(&shared19260.unk19260[i], 0, sizeof(shared19260.unk19260[i])); for (i = 0; i < 4; i++) { - shared19260.unk19260[i].unkB_0 = 0; - //shared19260.unk19260[i].unkB_1 = 0; + shared19260.unk19260[i].unkB &= ~3; shared19260.unk19260[i].unk13 = 0xFF; shared19260.unk19260[i].unk14 = 0xFF; } @@ -381,6 +384,7 @@ void sub_80AB398(void) sub_80B159C(); } */ + __attribute__((naked)) void sub_80AB398(void) { @@ -1263,11 +1267,10 @@ extern const u8 gUnknown_083CC16E[]; extern const u8 *const gUnknown_083CC2D8[]; extern const u8 *const gUnknown_083CC330[]; -#if 0 +#ifdef NONMATCHING void sub_80AC2CC(u8 taskId) { u8 spriteId; // r5 - //register s32 r6 asm("r6"); s32 r6; u8 r7 = shared19204.unk19215; @@ -1275,47 +1278,41 @@ void sub_80AC2CC(u8 taskId) { case 0: //_080AC404 + sub_80B0D7C(); + // had to write the array index like this to match + for (r6 = 0; shared19204.unk19214 != r6[shared19260.unk192D0]; r6++) + ; + //_080AC42C + shared19204.unk19215 = r6; + r7 = shared19204.unk19215; // is r7 actually a variable? + if (gIsLinkContest & 1) { - //s32 r6; + u8 taskId2; - sub_80B0D7C(); - r6 = 0; - while (shared19204.unk19214 != shared19260.unk192D0[r6]) - r6++; - //_080AC42C - shared19204.unk19215 = r6; - r7 = shared19204.unk19215; // is r7 actually a variable? - if (gIsLinkContest & 1) - { - u8 taskId2; - - //shared19204.unk1920B_2 = 1; - shared19204.unk1920B |= 4; - if (sub_80AE074() != 0) - sub_80B114C(shared19204.unk19215); - taskId2 = CreateTask(sub_80C8C80, 0); - SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); - sub_80AF860(); - gTasks[taskId].data[0] = 1; - } - //_080AC498 - else - { - sub_80B114C(r7); - gTasks[taskId].data[0] = 2; - } + //shared19204.unk1920B_2 = 1; + shared19204.unk1920B |= 4; + if (sub_80AE074() != 0) + sub_80B114C(shared19204.unk19215); + taskId2 = CreateTask(sub_80C8C80, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); + sub_80AF860(); + gTasks[taskId].data[0] = 1; + } + //_080AC498 + else + { + sub_80B114C(shared19204.unk19215); + gTasks[taskId].data[0] = 2; } return; case 1: - //if (!shared19204.unk1920B_2) if (!(shared19204.unk1920B & 4)) gTasks[taskId].data[0] = 2; return; case 2: //_080AC4D4 - // Come on, get this part to match! { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; // r2 if ((s->unkC & 6) || (s->unkB & 0x80)) @@ -1333,24 +1330,21 @@ void sub_80AC2CC(u8 taskId) return; case 3: //_080AC534 - { - s32 i; - - for (i = 0; i < 4; i++) - gBattleMonForms[i] = 0; - memset(shared19260.unk19348, 0, 20); - sub_80B28F0(shared19204.unk19215); - spriteId = sub_80AE9FC( - gContestMons[shared19204.unk19215].species, - gContestMons[shared19204.unk19215].unk3C, - gContestMons[shared19204.unk19215].unk38); - gSprites[spriteId].pos2.x = 120; - gSprites[spriteId].callback = sub_80AD8FC; - gTasks[taskId].data[2] = spriteId; - gObjectBankIDs[gBankAttacker] = spriteId; - sub_80B0BC4(sub_80B09E4(shared19204.unk19215), 0); - gTasks[taskId].data[0] = 4; - } + // r6 optimized out + for (r6 = 0; r6 < 4; r6++) + gBattleMonForms[r6] = 0; + memset(shared19260.unk19348, 0, 20); + sub_80B28F0(shared19204.unk19215); + spriteId = sub_80AE9FC( + gContestMons[shared19204.unk19215].species, + gContestMons[shared19204.unk19215].unk3C, + gContestMons[shared19204.unk19215].unk38); + gSprites[spriteId].pos2.x = 120; + gSprites[spriteId].callback = sub_80AD8FC; + gTasks[taskId].data[2] = spriteId; + gObjectBankIDs[gBankAttacker] = spriteId; + sub_80B0BC4(sub_80B09E4(shared19204.unk19215), 0); + gTasks[taskId].data[0] = 4; return; case 4: //_080AC5E8 @@ -1423,7 +1417,8 @@ void sub_80AC2CC(u8 taskId) { struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - if (!(s->unk15 & 0x10)) + //if (!(s->unk15 & 0x10)) + if (!s->unk15_4) sub_80B03A8(r7); sub_80B20C4(); gTasks[taskId].data[0] = 23; @@ -1432,7 +1427,7 @@ void sub_80AC2CC(u8 taskId) return; case 9: //_080AC7F4 - if (++gTasks[taskId].data[10] > 30) + if (gTasks[taskId].data[10]++ > 30) { gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 7; @@ -1497,30 +1492,25 @@ void sub_80AC2CC(u8 taskId) if ((s->unk11 & 3) == 1) { sub_80B1710(5); - asm(""); - gTasks[taskId].data[0] = 49; } else if ((s->unk11 & 3) == 2) { sub_80B1710(6); - asm(""); - gTasks[taskId].data[0] = 49; } else if ((s->unk11 & 3) == 3) { sub_80B1710(7); - asm(""); - gTasks[taskId].data[0] = 49; } else { gTasks[taskId].data[0] = 47; + return; } + gTasks[taskId].data[0] = 49; } return; case 49: //_080AC94C - //if (!shared19204.unk1920A_4) if (!(shared19204.unk1920A & 0x10)) gTasks[taskId].data[0] = 47; return; @@ -1596,10 +1586,10 @@ void sub_80AC2CC(u8 taskId) return; case 26: //_080ACAEE + //asm_comment("case26"); { s8 r4 = 0; s32 r2 = 0; - u8 r2_; for (r6 = gTasks[taskId].data[1]; r6 < 4; r6++) { @@ -1607,7 +1597,7 @@ void sub_80AC2CC(u8 taskId) r4 = 0; for (r2 = 0; r2 < 4; r2++) { - if (r2 != r7 && gUnknown_02038696[0] == r6 + if (r2 != r7 && gUnknown_02038696[r2] == r6 && shared19260.unk19260[r2].unk13 != 0xFF) { r4 = 1; @@ -1618,15 +1608,17 @@ void sub_80AC2CC(u8 taskId) if (r4 != 0) break; } + r4 = r4; // This makes it shift for some reason //_080ACB58 - if (r4 != 0) + if (r4) { //_080ACB60 + u8 r2_; struct UnknownContestStruct1 *s; gTasks[taskId].data[1] = gUnknown_02038696[r2]; r2_ = r2; - s = &shared19260.unk19260[r2_]; + s = &shared19260.unk19260[r2]; sub_80B146C(r2_, s->unk13); s->unk13 = 0xFF; gTasks[taskId].data[0] = 27; @@ -1649,15 +1641,13 @@ void sub_80AC2CC(u8 taskId) case 28: //_080ACBDC { - u8 r1; + struct UnknownContestStruct1 *s; // r0 - // check this later - r6 = 0; - while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) - r6++; + for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) + ; //_080ACC08 - r1 = shared19260.unk19260[r6].unkE; - sub_80AFBA0(shared19260.unk19260[r6].unk2 + r1, -r1, r6); + s = &shared19260.unk19260[r6]; + sub_80AFBA0(s->unk2 + s->unkE, -s->unkE, r6); gTasks[taskId].data[0] = 29; } return; @@ -1666,9 +1656,8 @@ void sub_80AC2CC(u8 taskId) { struct UnknownContestStruct4 *s; - r6 = 0; - while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) - r6++; + for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) + ; //_080ACC6C s = &shared19260.unk19338[r6]; if (!(s->unk2 & 4)) @@ -1677,9 +1666,8 @@ void sub_80AC2CC(u8 taskId) return; case 39: //_080ACC98 - r6 = 0; - while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) - r6++; + for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) + ; if (sub_80AEE54(r6, 1) != 0) { gTasks[taskId].data[10] = 0; @@ -1714,11 +1702,11 @@ void sub_80AC2CC(u8 taskId) else PlaySE(SE_C_SYU); s = &shared19260.unk19260[r6]; - if (s->unk15 & 0x20) + //if (s->unk15 & 0x20) + if (s->unk15_5) { sub_80B03A8(r6); - // Doesn't match, probably a bitfield - s->unk15 &= ~0x20; + s->unk15_5 = 0; } gTasks[taskId].data[1]++; gTasks[taskId].data[0] = 26; @@ -1726,7 +1714,7 @@ void sub_80AC2CC(u8 taskId) return; case 51: //_080ACDC8 - if (++gTasks[taskId].data[10] > 9) + if (gTasks[taskId].data[10]++ > 9) { struct UnknownContestStruct1 *s; @@ -1750,7 +1738,7 @@ void sub_80AC2CC(u8 taskId) { struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - if (!(s->unk15 & 0x40)) + if (!s->unk15_6) gTasks[taskId].data[0] = 17; else gTasks[taskId].data[0] = 14; @@ -1760,9 +1748,9 @@ void sub_80AC2CC(u8 taskId) //_080ACEC0 { struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - s32 r4 = s->unk16; // what type is this? + s8 r4 = s->unk16; // what type is this? - if ((u8)r4 != 0) + if (s->unk16 != 0) { sub_80AF138(); if (r4 == 1) @@ -1804,7 +1792,9 @@ void sub_80AC2CC(u8 taskId) { if (++gTasks[taskId].data[10] > 50) { - if (!(shared19260.unk19260[r7].unk15 & 0x10)) + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + //if (!(shared19260.unk19260[r7].unk15 & 0x10)) + if (!s->unk15_4) { sub_80AFBA0( shared19260.unk19260[r7].unk2, @@ -1834,7 +1824,8 @@ void sub_80AC2CC(u8 taskId) { struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - if (s->unk15 & 1) + //if (s->unk15 & 1) + if (s->unk15_0) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); @@ -1885,12 +1876,12 @@ void sub_80AC2CC(u8 taskId) return; case 41: //_080AD1A4 + //asm_comment("case41"); { - struct UnknownContestStruct5 *s5 = &shared19260.unk19328; + //struct UnknownContestStruct5_alt *s5_alt = (struct UnknownContestStruct5_alt *)&shared19260.unk19328; // r2 + struct UnknownContestStruct5 *s5 = (struct UnknownContestStruct5 *)&shared19260.unk19328; // r1 - // WTF is this struct? - if ((((struct UnknownContestStruct5_alt *)s5)->unk1 & 1) - && r7 != s5->bits_9) + if (s5->bits_8 && r7 != s5->bits_9) { gTasks[taskId].data[0] = 57; } @@ -1898,7 +1889,8 @@ void sub_80AC2CC(u8 taskId) else { s8 r4 = s5->bits_0; - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + //struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + struct UnknownContestStruct1 *s = ((struct UnknownContestStruct1 *)(((u8 *)s5) - 0xC8)) + r7; if (s->unk11 & 0x10) { @@ -1914,7 +1906,8 @@ void sub_80AC2CC(u8 taskId) { struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - if (s->unk15 & 1) + //if (s->unk15 & 1) + if (s->unk15_0) r4 = 0; } sub_80AF138(); @@ -2008,19 +2001,39 @@ void sub_80AC2CC(u8 taskId) } break; case 2: + asm_comment("asdfasdf"); //_080AD43E if (!(shared19204.unk1920A & 0x20)) { if (gTasks[taskId].data[11]++ > 29) { struct UnknownContestStruct1 *s; + struct UnknownContestStruct5 *s5; + //register s16 r0 asm("r0"); + + gTasks[taskId].data[11] = 0; + s = &shared19260.unk19260[r7]; + s5 = &shared19260.unk19328; + sub_80AFBA0(s->unk2, s5->unk2, r7); + s->unk2 += s5->unk2; + gTasks[taskId].data[10]++; + } + /* + if (gTasks[taskId].data[11]++ > 29) + { + struct UnknownContestStruct1 *s; + struct UnknownContestStruct5 *s5; + register s16 r0 asm("r0"); gTasks[taskId].data[11] = 0; s = &shared19260.unk19260[r7]; - sub_80AFBA0(s->unk2, shared19260.unk19328.unk2, r7); - s->unk2 += (s8)shared19260.unk19328.unk2; + r0 = s->unk2; + s5 = &shared19260.unk19328; + sub_80AFBA0(r0, s5->unk2, r7); + s->unk2 += s5->unk2; gTasks[taskId].data[10]++; } + */ } break; case 3: @@ -2096,8 +2109,12 @@ void sub_80AC2CC(u8 taskId) { struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + /* if (s->unk15 & 0x10) s->unk15 &= ~0x10; // probably a bitfield + */ + if (s->unk15_4) + s->unk15_4 = 0; sub_80B09B0(r7); StringCopy(gStringVar1, gContestMons[r7].nickname); StringCopy(gStringVar2, gMoveNames[s->unk6]); @@ -2191,831 +2208,2614 @@ void sub_80AC2CC(u8 taskId) } #endif -/* +__attribute__((naked)) void sub_80AC2CC(u8 taskId) { - u8 spriteId; // r5 - s32 r6; - u8 r7 = shared19204.unk19215; - - switch (gTasks[taskId].data[0]) - { - case 0: - //_080AC404 - { - //s32 r6; - - sub_80B0D7C(); - r6 = 0; - while (shared19204.unk19214 != shared19260.unk192D0[r6]) - r6++; - //_080AC42C - shared19204.unk19215 = r6; - r7 = shared19204.unk19215; // is r7 actually a variable? - if (gIsLinkContest & 1) - { - u8 taskId2; - - //shared19204.unk1920B_2 = 1; - shared19204.unk1920B |= 4; - if (sub_80AE074() != 0) - sub_80B114C(shared19204.unk19215); - taskId2 = CreateTask(sub_80C8C80, 0); - SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); - sub_80AF860(); - gTasks[taskId].data[0] = 1; - } - //_080AC498 - else - { - sub_80B114C(r7); - gTasks[taskId].data[0] = 2; - } - } - return; - case 1: - //if (!shared19204.unk1920B_2) - if (!(shared19204.unk1920B & 4)) - gTasks[taskId].data[0] = 2; - return; - case 2: - //_080AC4D4 - // Come on, get this part to match! - if (shared19260.unk19260[r7].unkC_1 - || shared19260.unk19260[r7].unkC_2 - || shared19260.unk19260[r7].unkB_7) - { - gTasks[taskId].data[0] = 31; - } - else - { - sub_80AF138(); - sub_80B0CDC(r7, 0); - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 3; - } - return; - case 3: - //_080AC534 - { - s32 i; - - for (i = 0; i < 4; i++) - gBattleMonForms[i] = 0; - memset(shared19260.unk19348, 0, 20); - sub_80B28F0(shared19204.unk19215); - spriteId = sub_80AE9FC( - gContestMons[shared19204.unk19215].species, - gContestMons[shared19204.unk19215].unk3C, - gContestMons[shared19204.unk19215].unk38); - gSprites[spriteId].pos2.x = 120; - gSprites[spriteId].callback = sub_80AD8FC; - gTasks[taskId].data[2] = spriteId; - gObjectBankIDs[gBankAttacker] = spriteId; - sub_80B0BC4(sub_80B09E4(shared19204.unk19215), 0); - gTasks[taskId].data[0] = 4; - } - return; - case 4: - //_080AC5E8 - spriteId = gTasks[taskId].data[2]; - if (gSprites[spriteId].callback == SpriteCallbackDummy - // && !shared19260.unk19348[r7].unk2_1) - && !(shared19260.unk19348[r7].unk2 & 2)) - gTasks[taskId].data[0] = 5; - return; - case 5: - //_080AC638 - if (shared19260.unk19260[r7].unkC_0) - { - gTasks[taskId].data[0] = 33; - } - //_080AC664 - else - { - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - if (shared19260.unk19260[r7].unk6 <= 354) - StringCopy(gStringVar2, gMoveNames[shared19260.unk19260[r7].unk6]); - else - StringCopy(gStringVar2, gUnknown_083CC330[shared19260.unk19260[r7].unkA]); - StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[0] = 6; - } - return; - case 6: - //_080AC6F8 - if (sub_80037A0(&gMenuWindow) != 0) - { - shared19204.unk1925E = 0; - gTasks[taskId].data[0] = 7; - } - return; - case 7: - //_080AC730 - { - // doesn't match - u16 r4 = sub_80B2760(shared19260.unk19260[shared19204.unk19215].unk6); - - sub_80B2790(shared19204.unk19215); - sub_80B28F0(shared19204.unk19215); - sub_80B29B4(r4); - ExecuteMoveAnim(r4); - gTasks[taskId].data[0] = 8; - } - return; - case 8: - //_080AC77C - gAnimScriptCallback(); - if (!gAnimScriptActive) - { - sub_80B28CC(r7); - if (shared19204.unk1925E != 0) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 9; - } - else - { - if (!(shared19260.unk19260[r7].unk15 & 0x10)) - sub_80B03A8(r7); - sub_80B20C4(); - gTasks[taskId].data[0] = 23; - } - } - return; - case 9: - //_080AC7F4 - if (++gTasks[taskId].data[10] > 30) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 7; - } - return; - case 23: - //_080AC81E - gTasks[taskId].data[1] = 0; - if (shared19260.unk19260[r7].unk13 != 0xFF) - { - sub_80B146C(r7, shared19260.unk19260[r7].unk13); - shared19260.unk19260[r7].unk13 = 0xFF; - gTasks[taskId].data[0] = 24; - } - //_080AC85C - else - { - if (shared19260.unk19260[r7].unk14 != 0xFF) - { - //s32 r6 = 0; - - for (r6 = 0; r6 < 4; r6++) - { - if (r6 != r7 && shared19260.unk19260[r6].unk13 != 0xFF) - break; - } - //_080AC886 - if (r6 == 4) - { - sub_80B146C(r7, shared19260.unk19260[r7].unk14); - shared19260.unk19260[r7].unk14 = 0xFF; - gTasks[taskId].data[0] = 24; - } - //_080AC8B4 - else - { - gTasks[taskId].data[0] = 48; - } - } - //_080AC8C4 - else - { - gTasks[taskId].data[0] = 48; - } - } - return; - case 24: - //_080AC8CC - if (sub_80037A0(&gMenuWindow) != 0) - gTasks[taskId].data[0] = 23; - return; - case 48: - //_080AC8F8 - if ((shared19260.unk19260[r7].unk11 & 3) == 1) - { - sub_80B1710(5); - gTasks[taskId].data[0] = 49; - } - else if ((shared19260.unk19260[r7].unk11 & 3) == 2) - { - sub_80B1710(6); - gTasks[taskId].data[0] = 49; - } - else if ((shared19260.unk19260[r7].unk11 & 3) == 3) - { - sub_80B1710(7); - gTasks[taskId].data[0] = 49; - } - else - { - gTasks[taskId].data[0] = 47; - } - return; - case 49: - //_080AC94C - //if (!shared19204.unk1920A_4) - if (!(shared19204.unk1920A & 0x10)) - gTasks[taskId].data[0] = 47; - return; - case 47: - //_080AC96C - sub_80B1FD0(1); - gTasks[taskId].data[0] = 12; - return; - case 12: - //_080AC98C - sub_80AFBA0(0, shared19260.unk19260[r7].unk2, r7); - gTasks[taskId].data[0] = 13; - return; - case 13: - //_080AC9C0 - if (!(shared19260.unk19338[shared19204.unk19215].unk2 & 4)) - gTasks[taskId].data[0] = 35; - return; - case 35: - //_080AC9EC - if ((shared19260.unk19260[r7].unk10 & 0x30) == 0x10) - sub_80B1710(8); - gTasks[taskId].data[0] = 36; - return; - case 36: - //_080ACA24 - //if (!shared19204.unk1920A_4) - if (!(shared19204.unk1920A & 0x10)) - gTasks[taskId].data[0] = 37; - return; - case 37: - //_080ACA44 - if (sub_80AEE54(r7, 1) != 0) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 38; - } - else - { - gTasks[taskId].data[0] = 50; - } - return; - case 38: - //_080ACA84 - if (++gTasks[taskId].data[10] > 20) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 50; - } - return; - case 50: - //_080ACAAE - if (sub_80AF038(r7) != 0) - PlaySE(SE_C_PASI); - gTasks[taskId].data[0] = 25; - return; - case 25: - //_080ACAD8 - gTasks[taskId].data[1] = 0; - gTasks[taskId].data[0] = 26; - return; - case 26: - //_080ACAEE - { - s8 r4 = 0; - s32 r2 = 0; - - // Is this variable reused? - r6 = gTasks[taskId].data[1]; - - // This part is really weird - while (r6 < 4) - { - r4 = 0; - r2 = 0; - - if (r4 != r7 && gUnknown_02038696[0] == r6 - && shared19260.unk19260[0].unk13 != 0xFF) - { - r4 = 1; - break; - } - //_080ACB2C - while (++r2 < 4) - { - if (r2 != r7 && gUnknown_02038696[0] == r6 - && shared19260.unk19260[r2].unk13 != 0xFF) - { - r4 = 1; - break; - } - } - //_080ACB4E - if (r4 != 0) - break; - } - //_080ACB58 - if (r4 != 0) - { - //_080ACB60 - gTasks[taskId].data[1] = gUnknown_02038696[r2]; - sub_80B146C(r2, shared19260.unk19260[r2].unk13); - shared19260.unk19260[r2].unk13 = 0xFF; - gTasks[taskId].data[0] = 27; - } - //_080ACB98 - else - { - gTasks[taskId].data[1] = 0; - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 51; - sub_80AF120(); - } - } - return; - case 27: - //_080ACBB0 - if (sub_80037A0(&gMenuWindow) != 0) - gTasks[taskId].data[0] = 28; - return; - case 28: - //_080ACBDC - { - u8 r1; - - // check this later - r6 = 0; - while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) - r6++; - //_080ACC08 - r1 = shared19260.unk19260[r6].unkE; - sub_80AFBA0(shared19260.unk19260[r6].unk2 + r1, -r1, r6); - gTasks[taskId].data[0] = 29; - } - return; - case 29: - //_080ACC44 - r6 = 0; - while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) - r6++; - //_080ACC6C - if (!(shared19260.unk19338[r6].unk2 & 4)) - gTasks[taskId].data[0] = 39; - return; - case 39: - //_080ACC98 - r6 = 0; - while (gTasks[taskId].data[1] != gUnknown_02038696[r6]) - r6++; - if (sub_80AEE54(r6, 1) != 0) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 40; - } - else - { - gTasks[taskId].data[0] = 30; - } - return; - case 40: - //_080ACD00 - if (++gTasks[taskId].data[10] > 20) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 30; - } - return; - case 30: - //_080ACD2A - r6 = 0; - while (r6 < 4 && gTasks[taskId].data[1] != gUnknown_02038696[r6]) - r6++; - //_080ACD5E - if (sub_80AF038(r6) != 0) - PlaySE(SE_C_PASI); - else - PlaySE(SE_C_SYU); - if (shared19260.unk19260[r6].unk15 & 0x20) - { - sub_80B03A8(r6); - shared19260.unk19260[r6].unk15 &= ~0x20; - } - gTasks[taskId].data[1]++; - gTasks[taskId].data[0] = 26; - return; - case 51: - //_080ACDC8 - if (++gTasks[taskId].data[10] > 9) - { - gTasks[taskId].data[10] = 0; - if (shared19260.unk19260[r7].unkC_1 - || shared19260.unk19260[r7].unkC_2 - || (shared19260.unk19260[r7].unk11 & 4)) - { - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC103); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - } - //_080ACE36 - gTasks[taskId].data[0] = 52; - } - return; - case 52: - //_080ACE64 - if (sub_80037A0(&gMenuWindow) != 0) - { - if (!(shared19260.unk19260[r7].unk15 & 0x40)) - gTasks[taskId].data[0] = 17; - else - gTasks[taskId].data[0] = 14; - } - return; - case 14: - //_080ACEC0 - { - s8 r4 = shared19260.unk19260[r7].unk16; - - if (r4 != 0) - { - sub_80AF138(); - if (r4 == 1) - sub_8002EB0(&gMenuWindow, gUnknown_083CBD79, 776, 1, 15); - else if (r4 == 2) - sub_8002EB0(&gMenuWindow, gUnknown_083CBD9D, 776, 1, 15); - else - sub_8002EB0(&gMenuWindow, gUnknown_083CBDC6, 776, 1, 15); - //_080ACF22 - sub_80B1710(3); - gTasks[taskId].data[10] = 0; - } - //_080ACF48 - else - { - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CBD52); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - sub_80B1710(2); - gTasks[taskId].data[10] = 0; - } - gTasks[taskId].data[0] = 45; // tail merge? - } - return; - case 45: - //_080ACFA8 - //if (!shared19204.unk1920A_4) - if (!(shared19204.unk1920A & 0x10)) - { - sub_80B09B0(shared19204.unk19215); - gTasks[taskId].data[0] = 15; - } - return; - case 15: - //_080ACFD4 - if (sub_80037A0(&gMenuWindow) != 0) - { - if (++gTasks[taskId].data[10] > 50) - { - if (!(shared19260.unk19260[r7].unk15 & 0x10)) - { - sub_80AFBA0( - shared19260.unk19260[r7].unk2, - shared19260.unk19260[r7].unk17, - r7); - shared19260.unk19260[r7].unk2 += shared19260.unk19260[r7].unk17; - } - //_080AD02C - gTasks[taskId].data[0] = 16; - } - } - return; - case 16: - //_080AD040 - if (!(shared19260.unk19338[r7].unk2 & 4)) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 17; - } - return; - case 17: - //_080AD070 - if (shared19260.unk19260[r7].unk15 & 1) - { - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC075); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[10] = 0; - sub_80B1710(); - gTasks[taskId].data[0] = 46; - } - //_080AD0E8 - else - { - gTasks[taskId].data[0] = 41; - } - return; - case 46: - //_080AD0FA - //if (!shared19204.unk1920A_4) - if (!(shared19204.unk1920A & 0x10)) - gTasks[taskId].data[0] = 19; - return; - case 19: - //_080AD11A - if (sub_80037A0(&gMenuWindow) != 0) - { - sub_80AFBA0( - shared19260.unk19260[r7].unk2, - -shared19260.unk19260[r7].unk18, - r7); - shared19260.unk19260[r7].unk2 -= shared19260.unk19260[r7].unk18; - gTasks[taskId].data[0] = 18; - } - return; - case 18: - //_080AD168 - sub_80B0D7C(); - if (!(shared19260.unk19338[r7].unk2 & 4)) - { - gTasks[taskId].data[10] = 0; - sub_80AF138(); - gTasks[taskId].data[0] = 41; - } - return; - case 41: - //_080AD1A4 - if (shared19260.unk19328.bits_8 && r7 != shared19260.unk19328.bits_9) - { - gTasks[taskId].data[0] = 57; - } - //_080AD1D0 - else - { - s8 r4 = shared19260.unk19328.bits_0; - - if (shared19260.unk19260[r7].unk11 & 0x10) - StringCopy(gStringVar3, gMoveNames[shared19260.unk19260[r7].unk6]); - else - StringCopy(gStringVar3, gUnknown_083CC2D8[gContestMoves[shared19260.unk19260[r7].unk6].contestCategory]); - //_080AD21E - if (r4 > 0 && (shared19260.unk19260[r7].unk15 & 1)) - r4 = 0; - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - shared19204.unk19217 += r4; - if (shared19204.unk19217 < 0) - shared19204.unk19217 = 0; - if (r4 == 0) - { - gTasks[taskId].data[0] = 55; - } - else - { - if (r4 < 0) - StringExpandPlaceholders(gStringVar4, gUnknown_083CC0BC); - else if (r4 > 0 && shared19204.unk19217 <= 4) - StringExpandPlaceholders(gStringVar4, gUnknown_083CC0A0); - else - StringExpandPlaceholders(gStringVar4, gUnknown_083CC0E3); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11] = 0; - if (r4 <= 0) - gTasks[taskId].data[0] = 53; - else - gTasks[taskId].data[0] = 54; - } - } - return; - case 53: - //_080AD316 - switch (gTasks[taskId].data[10]) - { - case 0: - sub_80B1EA8(-1, 1); - PlayFanfare(BGM_ME_ZANNEN); - gTasks[taskId].data[10]++; - break; - case 1: - //_080AD354 - if (!(shared19204.unk1920B & 1) && sub_80037A0(&gMenuWindow) != 0) - { - sub_80B1CBC(-1); - gTasks[taskId].data[10]++; - } - break; - case 2: - //_080AD37C - if (!(shared19204.unk1920A & 0x20)) - { - if (++gTasks[taskId].data[11] > 29) - gTasks[taskId].data[10]++; - } - break; - case 3: - //_080AD3B0 - if (!gPaletteFade.active) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11] = 0; - gTasks[taskId].data[0] = 43; - } - break; - } - return; - case 54: - //_080AD3D0 - switch (gTasks[taskId].data[10]) - { - case 0: - //_080AD408 - if (sub_80037A0(&gMenuWindow) != 0) - { - sub_80B1EA8(0, 1); - gTasks[taskId].data[10]++; - } - break; - case 1: - //_080AD420 - if (!(shared19204.unk1920B & 1)) - { - sub_80B1DDC(); - PlaySE(SE_W227B); - sub_80B1CBC(); - gTasks[taskId].data[10]++; - } - break; - case 2: - //_080AD43E - if (!(shared19204.unk1920A & 0x20)) - { - if (++gTasks[taskId].data[11] > 29) - { - gTasks[taskId].data[11] = 0; - sub_80AFBA0(shared19260.unk19260[r7].unk2, shared19260.unk19328.unk2, r7); - shared19260.unk19260[r7].unk2 += shared19260.unk19328.unk2; - gTasks[taskId].data[10]++; - } - } - break; - case 3: - //_080AD4A0 - if (!(shared19260.unk19338[r7].unk2 & 4)) - { - if (!(shared19204.unk1920A & 0x80)) - { - sub_80B1EA8(1, -1); - gTasks[taskId].data[10]++; - } - } - break; - case 4: - //_080AD4EC - if (!gPaletteFade.active) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11] = 0; - gTasks[taskId].data[0] = 43; - } - break; - } - return; - case 43: - //_080AD514 - if (!(shared19260.unk19338[r7].unk2 & 4)) - { - sub_80AF138(); - gTasks[taskId].data[0] = 55; - } - return; - case 57: - //_080AD53C - sub_80AF138(); - StringCopy(gStringVar3, gContestMons[shared19260.unk19328.bits_9].nickname); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringCopy(gStringVar2, gMoveNames[shared19260.unk19260[r7].unk6]); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC14A); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[0] = 58; - return; - case 58: - //_080AD5D0 - if (sub_80037A0(&gMenuWindow) != 0) - { - sub_80AF138(); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC16E); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[0] = 59; - } - return; - case 59: - //_080AD624 - if (sub_80037A0(&gMenuWindow) != 0) - { - sub_80AF138(); - gTasks[taskId].data[0] = 55; - } - return; - case 33: - //_080AD648 - if (shared19260.unk19260[r7].unk15 & 0x10) - shared19260.unk19260[r7].unk15 &= ~0x10; - sub_80B09B0(r7); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringCopy(gStringVar2, gMoveNames[shared19260.unk19260[r7].unk6]); - StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[0] = 34; - return; - case 34: - //_080AD6D8 - if (sub_80037A0(&gMenuWindow) != 0) - gTasks[taskId].data[0] = 55; - return; - case 55: - //_080AD700 - sub_80B1BDC(); - gTasks[taskId].data[0] = 56; - return; - case 56: - //_080AD71C - if (!(shared19204.unk1920A & 0x40)) - { - if (shared19204.unk19217 > 4) - { - shared19204.unk19217 = 0; - sub_80B1928(); - } - gTasks[taskId].data[0] = 10; - } - return; - case 10: - //_080AD750 - spriteId = gTasks[taskId].data[2]; - gSprites[spriteId].callback = sub_80AD92C; - gTasks[taskId].data[0] = 11; - return; - case 11: - //_080AD77C - spriteId = gTasks[taskId].data[2]; - if (gSprites[spriteId].invisible) - { - FreeSpriteOamMatrix(&gSprites[spriteId]); - DestroySprite(&gSprites[spriteId]); - gTasks[taskId].data[0] = 20; - } - return; - case 20: - //_080AD7B8 - for (r6 = 0; r6 < 4; r6++) - sub_80B0CDC(r6, 1); - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 21; - return; - case 31: - //_080AD7E8 - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CB00D); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[0] = 32; - return; - case 32: - //_080AD840 - if (sub_80037A0(&gMenuWindow) != 0) - gTasks[taskId].data[0] = 21; - return; - case 21: - //_080AD868 - if (++gTasks[taskId].data[10] > 29) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 22; - } - return; - case 22: - //_080AD88C - if (++shared19204.unk19214 == 4) - { - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 0; - gTasks[taskId].data[2] = 0; - gTasks[taskId].func = sub_80AD960; - } - else - { - gTasks[taskId].data[0] = 0; - } - nullsub_18(0); - return; - } + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x8\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + ldr r2, _080AC308 @ =gSharedMem + 0x19204\n\ + ldrb r7, [r2, 0x11]\n\ + ldr r1, _080AC30C @ =gTasks\n\ + lsls r0, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r3, 0x8\n\ + ldrsh r0, [r0, r3]\n\ + adds r6, r2, 0\n\ + mov r12, r1\n\ + cmp r0, 0x3B\n\ + bls _080AC2FC\n\ + bl _080AD8CA\n\ +_080AC2FC:\n\ + lsls r0, 2\n\ + ldr r1, _080AC310 @ =_080AC314\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_080AC308: .4byte gSharedMem + 0x19204\n\ +_080AC30C: .4byte gTasks\n\ +_080AC310: .4byte _080AC314\n\ + .align 2, 0\n\ +_080AC314:\n\ + .4byte _080AC404\n\ + .4byte _080AC4B4\n\ + .4byte _080AC4D4\n\ + .4byte _080AC534\n\ + .4byte _080AC5E8\n\ + .4byte _080AC638\n\ + .4byte _080AC6F8\n\ + .4byte _080AC730\n\ + .4byte _080AC77C\n\ + .4byte _080AC7F4\n\ + .4byte _080AD750\n\ + .4byte _080AD77C\n\ + .4byte _080AC98C\n\ + .4byte _080AC9C0\n\ + .4byte _080ACEC0\n\ + .4byte _080ACFD4\n\ + .4byte _080AD040\n\ + .4byte _080AD070\n\ + .4byte _080AD168\n\ + .4byte _080AD11A\n\ + .4byte _080AD7B8\n\ + .4byte _080AD868\n\ + .4byte _080AD88C\n\ + .4byte _080AC81E\n\ + .4byte _080AC8CC\n\ + .4byte _080ACAD8\n\ + .4byte _080ACAEE\n\ + .4byte _080ACBB0\n\ + .4byte _080ACBDC\n\ + .4byte _080ACC44\n\ + .4byte _080ACD2A\n\ + .4byte _080AD7E8\n\ + .4byte _080AD840\n\ + .4byte _080AD648\n\ + .4byte _080AD6D8\n\ + .4byte _080AC9EC\n\ + .4byte _080ACA24\n\ + .4byte _080ACA44\n\ + .4byte _080ACA84\n\ + .4byte _080ACC98\n\ + .4byte _080ACD00\n\ + .4byte _080AD1A4\n\ + .4byte _080AD8CA\n\ + .4byte _080AD514\n\ + .4byte _080AD8CA\n\ + .4byte _080ACFA8\n\ + .4byte _080AD0FA\n\ + .4byte _080AC96C\n\ + .4byte _080AC8F8\n\ + .4byte _080AC94C\n\ + .4byte _080ACAAE\n\ + .4byte _080ACDC8\n\ + .4byte _080ACE64\n\ + .4byte _080AD316\n\ + .4byte _080AD3D0\n\ + .4byte _080AD700\n\ + .4byte _080AD71C\n\ + .4byte _080AD53C\n\ + .4byte _080AD5D0\n\ + .4byte _080AD624\n\ +_080AC404:\n\ + bl sub_80B0D7C\n\ + movs r6, 0\n\ + ldr r0, _080AC484 @ =gSharedMem + 0x19204\n\ + adds r1, r0, 0\n\ + adds r1, 0xCC\n\ + ldrb r0, [r0, 0x10]\n\ + mov r4, r8\n\ + lsls r4, 2\n\ + mov r9, r4\n\ + ldrb r5, [r1]\n\ + cmp r0, r5\n\ + beq _080AC42C\n\ + adds r2, r1, 0\n\ + adds r1, r0, 0\n\ +_080AC422:\n\ + adds r6, 0x1\n\ + adds r0, r6, r2\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _080AC422\n\ +_080AC42C:\n\ + ldr r4, _080AC484 @ =gSharedMem + 0x19204\n\ + strb r6, [r4, 0x11]\n\ + ldrb r7, [r4, 0x11]\n\ + ldr r0, _080AC488 @ =gIsLinkContest\n\ + ldrb r1, [r0]\n\ + movs r5, 0x1\n\ + adds r0, r5, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AC498\n\ + ldrb r0, [r4, 0x7]\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + strb r0, [r4, 0x7]\n\ + bl sub_80AE074\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080AC458\n\ + ldrb r0, [r4, 0x11]\n\ + bl sub_80B114C\n\ +_080AC458:\n\ + ldr r4, _080AC48C @ =sub_80C8C80\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + bl CreateTask\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldr r2, _080AC490 @ =sub_80AD8DC\n\ + adds r1, r4, 0\n\ + bl SetTaskFuncWithFollowupFunc\n\ + bl sub_80AF860\n\ + ldr r1, _080AC494 @ =gTasks\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC484: .4byte gSharedMem + 0x19204\n\ +_080AC488: .4byte gIsLinkContest\n\ +_080AC48C: .4byte sub_80C8C80\n\ +_080AC490: .4byte sub_80AD8DC\n\ +_080AC494: .4byte gTasks\n\ +_080AC498:\n\ + adds r0, r7, 0\n\ + bl sub_80B114C\n\ + ldr r0, _080AC4B0 @ =gTasks\n\ + mov r1, r9\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x2\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC4B0: .4byte gTasks\n\ +_080AC4B4:\n\ + ldrb r1, [r6, 0x7]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AC4C2\n\ + bl _080AD8CA\n\ +_080AC4C2:\n\ + mov r1, r8\n\ + lsls r0, r1, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x2\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ +_080AC4D4:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080AC508 @ =gSharedMem + 0x19260\n\ + adds r2, r0, r1\n\ + ldrb r1, [r2, 0xC]\n\ + movs r0, 0x6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080AC4F6\n\ + ldrb r1, [r2, 0xB]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0\n\ + beq _080AC50C\n\ +_080AC4F6:\n\ + mov r2, r8\n\ + lsls r0, r2, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x1F\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC508: .4byte gSharedMem + 0x19260\n\ +_080AC50C:\n\ + bl sub_80AF138\n\ + adds r0, r7, 0\n\ + movs r1, 0\n\ + bl sub_80B0CDC\n\ + ldr r0, _080AC530 @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + strh r6, [r1, 0x1C]\n\ + movs r0, 0x3\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC530: .4byte gTasks\n\ +_080AC534:\n\ + mov r4, r8\n\ + lsls r4, 2\n\ + mov r9, r4\n\ + ldr r4, _080AC5C4 @ =gSharedMem + 0x19348\n\ + ldr r1, _080AC5C8 @ =gBattleMonForms\n\ + movs r2, 0\n\ + adds r0, r1, 0x3\n\ +_080AC542:\n\ + strb r2, [r0]\n\ + subs r0, 0x1\n\ + cmp r0, r1\n\ + bge _080AC542\n\ + movs r6, 0x4\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + movs r2, 0x14\n\ + bl memset\n\ + ldr r5, _080AC5CC @ =0xfffffebc\n\ + adds r7, r4, r5\n\ + ldrb r0, [r7, 0x11]\n\ + bl sub_80B28F0\n\ + ldr r3, _080AC5D0 @ =gContestMons\n\ + ldrb r2, [r7, 0x11]\n\ + lsls r2, 6\n\ + adds r0, r2, r3\n\ + ldrh r0, [r0]\n\ + adds r1, r3, 0\n\ + adds r1, 0x3C\n\ + adds r1, r2, r1\n\ + ldr r1, [r1]\n\ + adds r3, 0x38\n\ + adds r2, r3\n\ + ldr r2, [r2]\n\ + bl sub_80AE9FC\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r2, _080AC5D4 @ =gSprites\n\ + lsls r0, r5, 4\n\ + adds r0, r5\n\ + lsls r0, 2\n\ + adds r3, r0, r2\n\ + movs r1, 0x78\n\ + strh r1, [r3, 0x24]\n\ + adds r2, 0x1C\n\ + adds r0, r2\n\ + ldr r1, _080AC5D8 @ =sub_80AD8FC\n\ + str r1, [r0]\n\ + ldr r0, _080AC5DC @ =gTasks\n\ + mov r4, r9\n\ + add r4, r8\n\ + lsls r4, 3\n\ + adds r4, r0\n\ + strh r5, [r4, 0xC]\n\ + ldr r1, _080AC5E0 @ =gObjectBankIDs\n\ + ldr r0, _080AC5E4 @ =gBankAttacker\n\ + ldrb r0, [r0]\n\ + adds r0, r1\n\ + strb r5, [r0]\n\ + ldrb r0, [r7, 0x11]\n\ + bl sub_80B09E4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + movs r1, 0\n\ + bl sub_80B0BC4\n\ + strh r6, [r4, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC5C4: .4byte gSharedMem + 0x19348\n\ +_080AC5C8: .4byte gBattleMonForms\n\ +_080AC5CC: .4byte 0xfffffebc\n\ +_080AC5D0: .4byte gContestMons\n\ +_080AC5D4: .4byte gSprites\n\ +_080AC5D8: .4byte sub_80AD8FC\n\ +_080AC5DC: .4byte gTasks\n\ +_080AC5E0: .4byte gObjectBankIDs\n\ +_080AC5E4: .4byte gBankAttacker\n\ +_080AC5E8:\n\ + mov r1, r8\n\ + lsls r0, r1, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + mov r3, r12\n\ + adds r2, r0, r3\n\ + ldrb r5, [r2, 0xC]\n\ + ldr r1, _080AC62C @ =gSprites\n\ + lsls r0, r5, 4\n\ + adds r0, r5\n\ + lsls r0, 2\n\ + adds r1, 0x1C\n\ + adds r0, r1\n\ + ldr r1, [r0]\n\ + ldr r0, _080AC630 @ =SpriteCallbackDummy\n\ + cmp r1, r0\n\ + beq _080AC60E\n\ + bl _080AD8CA\n\ +_080AC60E:\n\ + lsls r0, r7, 2\n\ + ldr r1, _080AC634 @ =gSharedMem + 0x19338\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x2]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AC622\n\ + bl _080AD8CA\n\ +_080AC622:\n\ + movs r0, 0x5\n\ + strh r0, [r2, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC62C: .4byte gSprites\n\ +_080AC630: .4byte SpriteCallbackDummy\n\ +_080AC634: .4byte gSharedMem + 0x19338\n\ +_080AC638:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080AC660 @ =gSharedMem + 0x19260\n\ + adds r5, r0, r1\n\ + ldrb r1, [r5, 0xC]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AC664\n\ + mov r4, r8\n\ + lsls r0, r4, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x21\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC660: .4byte gSharedMem + 0x19260\n\ +_080AC664:\n\ + bl sub_80AF138\n\ + ldr r0, _080AC690 @ =gStringVar1\n\ + lsls r1, r7, 6\n\ + ldr r2, _080AC694 @ =gContestMons + 0x2\n\ + adds r1, r2\n\ + bl StringCopy\n\ + ldrh r1, [r5, 0x6]\n\ + movs r0, 0xB1\n\ + lsls r0, 1\n\ + cmp r1, r0\n\ + bhi _080AC6A0\n\ + ldr r0, _080AC698 @ =gStringVar2\n\ + adds r2, r1, 0\n\ + movs r1, 0xD\n\ + muls r1, r2\n\ + ldr r2, _080AC69C @ =gMoveNames\n\ + adds r1, r2\n\ + bl StringCopy\n\ + b _080AC6B0\n\ + .align 2, 0\n\ +_080AC690: .4byte gStringVar1\n\ +_080AC694: .4byte gContestMons + 0x2\n\ +_080AC698: .4byte gStringVar2\n\ +_080AC69C: .4byte gMoveNames\n\ +_080AC6A0:\n\ + ldr r0, _080AC6E0 @ =gStringVar2\n\ + ldr r2, _080AC6E4 @ =gUnknown_083CC330\n\ + ldrb r1, [r5, 0xA]\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + ldr r1, [r1]\n\ + bl StringCopy\n\ +_080AC6B0:\n\ + ldr r4, _080AC6E8 @ =gStringVar4\n\ + ldr r1, _080AC6EC @ =gUnknown_083CAFD7\n\ + adds r0, r4, 0\n\ + bl StringExpandPlaceholders\n\ + ldr r0, _080AC6F0 @ =gMenuWindow\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r1, 0xF\n\ + str r1, [sp]\n\ + adds r1, r4, 0\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ + ldr r1, _080AC6F4 @ =gTasks\n\ + mov r5, r8\n\ + lsls r0, r5, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x6\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC6E0: .4byte gStringVar2\n\ +_080AC6E4: .4byte gUnknown_083CC330\n\ +_080AC6E8: .4byte gStringVar4\n\ +_080AC6EC: .4byte gUnknown_083CAFD7\n\ +_080AC6F0: .4byte gMenuWindow\n\ +_080AC6F4: .4byte gTasks\n\ +_080AC6F8:\n\ + ldr r0, _080AC724 @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080AC708\n\ + bl _080AD8CA\n\ +_080AC708:\n\ + ldr r0, _080AC728 @ =gSharedMem + 0x19204\n\ + adds r0, 0x5A\n\ + movs r1, 0\n\ + strb r1, [r0]\n\ + ldr r1, _080AC72C @ =gTasks\n\ + mov r2, r8\n\ + lsls r0, r2, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x7\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC724: .4byte gMenuWindow\n\ +_080AC728: .4byte gSharedMem + 0x19204\n\ +_080AC72C: .4byte gTasks\n\ +_080AC730:\n\ + ldrb r1, [r6, 0x11]\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + lsls r0, 2\n\ + adds r1, r6, 0\n\ + adds r1, 0x5C\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x6]\n\ + bl sub_80B2760\n\ + adds r4, r0, 0\n\ + lsls r4, 16\n\ + lsrs r4, 16\n\ + ldrb r0, [r6, 0x11]\n\ + bl sub_80B2790\n\ + ldrb r0, [r6, 0x11]\n\ + bl sub_80B28F0\n\ + adds r0, r4, 0\n\ + bl sub_80B29B4\n\ + adds r0, r4, 0\n\ + bl ExecuteMoveAnim\n\ + ldr r1, _080AC778 @ =gTasks\n\ + mov r3, r8\n\ + lsls r0, r3, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x8\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC778: .4byte gTasks\n\ +_080AC77C:\n\ + ldr r0, _080AC7B8 @ =gAnimScriptCallback\n\ + ldr r0, [r0]\n\ + bl _call_via_r0\n\ + ldr r0, _080AC7BC @ =gAnimScriptActive\n\ + ldrb r4, [r0]\n\ + cmp r4, 0\n\ + beq _080AC790\n\ + bl _080AD8CA\n\ +_080AC790:\n\ + adds r0, r7, 0\n\ + bl sub_80B28CC\n\ + ldr r1, _080AC7C0 @ =gSharedMem + 0x19204\n\ + adds r0, r1, 0\n\ + adds r0, 0x5A\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _080AC7C8\n\ + ldr r0, _080AC7C4 @ =gTasks\n\ + mov r5, r8\n\ + lsls r1, r5, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + strh r4, [r1, 0x1C]\n\ + movs r0, 0x9\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC7B8: .4byte gAnimScriptCallback\n\ +_080AC7BC: .4byte gAnimScriptActive\n\ +_080AC7C0: .4byte gSharedMem + 0x19204\n\ +_080AC7C4: .4byte gTasks\n\ +_080AC7C8:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + adds r1, 0x5C\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x15]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080AC7E2\n\ + adds r0, r7, 0\n\ + bl sub_80B03A8\n\ +_080AC7E2:\n\ + bl sub_80B20C4\n\ + ldr r0, _080AC7F0 @ =gTasks\n\ + mov r2, r8\n\ + lsls r1, r2, 2\n\ + b _080AC8E2\n\ + .align 2, 0\n\ +_080AC7F0: .4byte gTasks\n\ +_080AC7F4:\n\ + mov r3, r8\n\ + lsls r0, r3, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + mov r4, r12\n\ + adds r2, r0, r4\n\ + ldrh r0, [r2, 0x1C]\n\ + adds r1, r0, 0x1\n\ + strh r1, [r2, 0x1C]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x1E\n\ + bgt _080AC812\n\ + bl _080AD8CA\n\ +_080AC812:\n\ + movs r0, 0\n\ + strh r0, [r2, 0x1C]\n\ + movs r0, 0x7\n\ + strh r0, [r2, 0x8]\n\ + bl _080AD8CA\n\ +_080AC81E:\n\ + mov r5, r8\n\ + lsls r3, r5, 2\n\ + adds r0, r3, r5\n\ + lsls r0, 3\n\ + mov r1, r12\n\ + adds r4, r0, r1\n\ + movs r0, 0\n\ + strh r0, [r4, 0xA]\n\ + lsls r2, r7, 3\n\ + subs r0, r2, r7\n\ + lsls r0, 2\n\ + ldr r1, _080AC858 @ =gSharedMem + 0x19260\n\ + adds r6, r0, r1\n\ + ldrb r0, [r6, 0x13]\n\ + mov r9, r3\n\ + mov r10, r2\n\ + adds r3, r1, 0\n\ + cmp r0, 0xFF\n\ + beq _080AC85C\n\ + adds r1, r0, 0\n\ + adds r0, r7, 0\n\ + bl sub_80B146C\n\ + movs r0, 0xFF\n\ + strb r0, [r6, 0x13]\n\ + movs r0, 0x18\n\ + strh r0, [r4, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC858: .4byte gSharedMem + 0x19260\n\ +_080AC85C:\n\ + ldrb r0, [r6, 0x14]\n\ + cmp r0, 0xFF\n\ + beq _080AC8C4\n\ + movs r6, 0\n\ + cmp r6, r7\n\ + beq _080AC86E\n\ + ldrb r0, [r3, 0x13]\n\ + cmp r0, 0xFF\n\ + bne _080AC886\n\ +_080AC86E:\n\ + adds r6, 0x1\n\ + cmp r6, 0x3\n\ + bgt _080AC886\n\ + cmp r6, r7\n\ + beq _080AC86E\n\ + lsls r0, r6, 3\n\ + subs r0, r6\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldrb r0, [r0, 0x13]\n\ + cmp r0, 0xFF\n\ + beq _080AC86E\n\ +_080AC886:\n\ + cmp r6, 0x4\n\ + bne _080AC8B4\n\ + mov r2, r10\n\ + subs r4, r2, r7\n\ + lsls r4, 2\n\ + adds r4, r3\n\ + ldrb r1, [r4, 0x14]\n\ + adds r0, r7, 0\n\ + bl sub_80B146C\n\ + movs r0, 0xFF\n\ + strb r0, [r4, 0x14]\n\ + ldr r1, _080AC8B0 @ =gTasks\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x18\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC8B0: .4byte gTasks\n\ +_080AC8B4:\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x30\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ +_080AC8C4:\n\ + movs r0, 0x30\n\ + strh r0, [r4, 0x8]\n\ + bl _080AD8CA\n\ +_080AC8CC:\n\ + ldr r0, _080AC8F0 @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080AC8DC\n\ + bl _080AD8CA\n\ +_080AC8DC:\n\ + ldr r0, _080AC8F4 @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ +_080AC8E2:\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x17\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC8F0: .4byte gMenuWindow\n\ +_080AC8F4: .4byte gTasks\n\ +_080AC8F8:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080AC914 @ =gSharedMem + 0x19260\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x11]\n\ + movs r3, 0x3\n\ + ands r3, r0\n\ + cmp r3, 0x1\n\ + bne _080AC918\n\ + movs r0, 0x5\n\ + bl sub_80B1710\n\ + b _080AC934\n\ + .align 2, 0\n\ +_080AC914: .4byte gSharedMem + 0x19260\n\ +_080AC918:\n\ + cmp r3, 0x2\n\ + bne _080AC924\n\ + movs r0, 0x6\n\ + bl sub_80B1710\n\ + b _080AC934\n\ +_080AC924:\n\ + cmp r3, 0x3\n\ + beq _080AC92E\n\ + mov r4, r8\n\ + lsls r0, r4, 2\n\ + b _080AC95E\n\ +_080AC92E:\n\ + movs r0, 0x7\n\ + bl sub_80B1710\n\ +_080AC934:\n\ + ldr r0, _080AC948 @ =gTasks\n\ + mov r5, r8\n\ + lsls r1, r5, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x31\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC948: .4byte gTasks\n\ +_080AC94C:\n\ + ldrb r1, [r6, 0x6]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AC95A\n\ + bl _080AD8CA\n\ +_080AC95A:\n\ + mov r1, r8\n\ + lsls r0, r1, 2\n\ +_080AC95E:\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x2F\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ +_080AC96C:\n\ + movs r0, 0x1\n\ + bl sub_80B1FD0\n\ + ldr r0, _080AC988 @ =gTasks\n\ + mov r2, r8\n\ + lsls r1, r2, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0xC\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC988: .4byte gTasks\n\ +_080AC98C:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080AC9B8 @ =gSharedMem + 0x19260\n\ + adds r0, r1\n\ + movs r3, 0x2\n\ + ldrsh r1, [r0, r3]\n\ + movs r0, 0\n\ + adds r2, r7, 0\n\ + bl sub_80AFBA0\n\ + ldr r1, _080AC9BC @ =gTasks\n\ + mov r4, r8\n\ + lsls r0, r4, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0xD\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AC9B8: .4byte gSharedMem + 0x19260\n\ +_080AC9BC: .4byte gTasks\n\ +_080AC9C0:\n\ + ldrb r0, [r6, 0x11]\n\ + lsls r0, 2\n\ + movs r5, 0x9A\n\ + lsls r5, 1\n\ + adds r1, r6, r5\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x2]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AC9DA\n\ + bl _080AD8CA\n\ +_080AC9DA:\n\ + mov r1, r8\n\ + lsls r0, r1, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x23\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ +_080AC9EC:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080ACA1C @ =gSharedMem + 0x19260\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x10]\n\ + movs r0, 0x30\n\ + ands r0, r1\n\ + cmp r0, 0x10\n\ + bne _080ACA06\n\ + movs r0, 0x8\n\ + bl sub_80B1710\n\ +_080ACA06:\n\ + ldr r0, _080ACA20 @ =gTasks\n\ + mov r2, r8\n\ + lsls r1, r2, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x24\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACA1C: .4byte gSharedMem + 0x19260\n\ +_080ACA20: .4byte gTasks\n\ +_080ACA24:\n\ + ldrb r1, [r6, 0x6]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080ACA32\n\ + bl _080AD8CA\n\ +_080ACA32:\n\ + mov r3, r8\n\ + lsls r0, r3, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x25\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ +_080ACA44:\n\ + adds r0, r7, 0\n\ + movs r1, 0x1\n\ + bl sub_80AEE54\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080ACA70\n\ + ldr r1, _080ACA6C @ =gTasks\n\ + mov r4, r8\n\ + lsls r0, r4, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0\n\ + strh r1, [r0, 0x1C]\n\ + movs r1, 0x26\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACA6C: .4byte gTasks\n\ +_080ACA70:\n\ + ldr r0, _080ACA80 @ =gTasks\n\ + mov r5, r8\n\ + lsls r1, r5, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + b _080ACAA6\n\ + .align 2, 0\n\ +_080ACA80: .4byte gTasks\n\ +_080ACA84:\n\ + mov r1, r8\n\ + lsls r0, r1, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + mov r2, r12\n\ + adds r1, r0, r2\n\ + ldrh r0, [r1, 0x1C]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0x1C]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x14\n\ + bgt _080ACAA2\n\ + bl _080AD8CA\n\ +_080ACAA2:\n\ + movs r0, 0\n\ + strh r0, [r1, 0x1C]\n\ +_080ACAA6:\n\ + movs r0, 0x32\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ +_080ACAAE:\n\ + adds r0, r7, 0\n\ + bl sub_80AF038\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080ACAC0\n\ + movs r0, 0x63\n\ + bl PlaySE\n\ +_080ACAC0:\n\ + ldr r0, _080ACAD4 @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x19\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACAD4: .4byte gTasks\n\ +_080ACAD8:\n\ + mov r4, r8\n\ + lsls r0, r4, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0\n\ + strh r1, [r0, 0xA]\n\ + movs r1, 0x1A\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ +_080ACAEE:\n\ + movs r2, 0\n\ + movs r4, 0\n\ + mov r5, r8\n\ + lsls r1, r5, 2\n\ + adds r0, r1, r5\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r3, 0xA\n\ + ldrsh r6, [r0, r3]\n\ + mov r9, r1\n\ + cmp r6, 0x3\n\ + bgt _080ACB58\n\ + ldr r3, _080ACB24 @ =gUnknown_02038696\n\ + ldr r1, _080ACB28 @ =gSharedMem + 0x19260\n\ +_080ACB0A:\n\ + movs r4, 0\n\ + movs r2, 0\n\ + cmp r4, r7\n\ + beq _080ACB2C\n\ + ldrb r0, [r3]\n\ + cmp r0, r6\n\ + bne _080ACB2C\n\ + ldrb r0, [r1, 0x13]\n\ + cmp r0, 0xFF\n\ + beq _080ACB2C\n\ + movs r4, 0x1\n\ + b _080ACB60\n\ + .align 2, 0\n\ +_080ACB24: .4byte gUnknown_02038696\n\ +_080ACB28: .4byte gSharedMem + 0x19260\n\ +_080ACB2C:\n\ + adds r2, 0x1\n\ + cmp r2, 0x3\n\ + bgt _080ACB4E\n\ + cmp r2, r7\n\ + beq _080ACB2C\n\ + adds r0, r2, r3\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne _080ACB2C\n\ + lsls r0, r2, 3\n\ + subs r0, r2\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r0, [r0, 0x13]\n\ + cmp r0, 0xFF\n\ + beq _080ACB2C\n\ + movs r4, 0x1\n\ +_080ACB4E:\n\ + cmp r4, 0\n\ + bne _080ACB60\n\ + adds r6, 0x1\n\ + cmp r6, 0x3\n\ + ble _080ACB0A\n\ +_080ACB58:\n\ + lsls r0, r4, 24\n\ + asrs r1, r0, 24\n\ + cmp r1, 0\n\ + beq _080ACB98\n\ +_080ACB60:\n\ + mov r5, r9\n\ + add r5, r8\n\ + lsls r5, 3\n\ + add r5, r12\n\ + ldr r0, _080ACB90 @ =gUnknown_02038696\n\ + adds r0, r2, r0\n\ + ldrb r0, [r0]\n\ + strh r0, [r5, 0xA]\n\ + lsls r0, r2, 24\n\ + lsrs r0, 24\n\ + lsls r4, r2, 3\n\ + subs r4, r2\n\ + lsls r4, 2\n\ + ldr r1, _080ACB94 @ =gSharedMem + 0x19260\n\ + adds r4, r1\n\ + ldrb r1, [r4, 0x13]\n\ + bl sub_80B146C\n\ + movs r0, 0xFF\n\ + strb r0, [r4, 0x13]\n\ + movs r0, 0x1B\n\ + strh r0, [r5, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACB90: .4byte gUnknown_02038696\n\ +_080ACB94: .4byte gSharedMem + 0x19260\n\ +_080ACB98:\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + strh r1, [r0, 0xA]\n\ + strh r1, [r0, 0x1C]\n\ + movs r1, 0x33\n\ + strh r1, [r0, 0x8]\n\ + bl sub_80AF120\n\ + bl _080AD8CA\n\ +_080ACBB0:\n\ + ldr r0, _080ACBD4 @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080ACBC0\n\ + bl _080AD8CA\n\ +_080ACBC0:\n\ + ldr r0, _080ACBD8 @ =gTasks\n\ + mov r4, r8\n\ + lsls r1, r4, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x1C\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACBD4: .4byte gMenuWindow\n\ +_080ACBD8: .4byte gTasks\n\ +_080ACBDC:\n\ + movs r6, 0\n\ + mov r5, r8\n\ + lsls r0, r5, 2\n\ + adds r1, r0, r5\n\ + lsls r1, 3\n\ + add r1, r12\n\ + movs r3, 0xA\n\ + ldrsh r2, [r1, r3]\n\ + ldr r1, _080ACC38 @ =gUnknown_02038696\n\ + mov r9, r0\n\ + ldr r3, _080ACC3C @ =gSharedMem + 0x19260\n\ + adds r5, r1, 0\n\ + ldrb r4, [r5]\n\ + cmp r2, r4\n\ + beq _080ACC08\n\ + adds r1, r2, 0\n\ + adds r2, r5, 0\n\ +_080ACBFE:\n\ + adds r6, 0x1\n\ + adds r0, r6, r2\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _080ACBFE\n\ +_080ACC08:\n\ + lsls r0, r6, 3\n\ + subs r0, r6\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldrb r1, [r0, 0xE]\n\ + ldrh r0, [r0, 0x2]\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + negs r1, r1\n\ + lsls r2, r6, 24\n\ + lsrs r2, 24\n\ + bl sub_80AFBA0\n\ + ldr r1, _080ACC40 @ =gTasks\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x1D\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACC38: .4byte gUnknown_02038696\n\ +_080ACC3C: .4byte gSharedMem + 0x19260\n\ +_080ACC40: .4byte gTasks\n\ +_080ACC44:\n\ + movs r6, 0\n\ + mov r5, r8\n\ + lsls r0, r5, 2\n\ + adds r1, r0, r5\n\ + lsls r1, 3\n\ + add r1, r12\n\ + movs r2, 0xA\n\ + ldrsh r3, [r1, r2]\n\ + ldr r1, _080ACC90 @ =gUnknown_02038696\n\ + mov r9, r0\n\ + ldr r2, _080ACC94 @ =gSharedMem + 0x19338\n\ + adds r5, r1, 0\n\ + ldrb r4, [r5]\n\ + cmp r3, r4\n\ + beq _080ACC6C\n\ +_080ACC62:\n\ + adds r6, 0x1\n\ + adds r0, r6, r1\n\ + ldrb r0, [r0]\n\ + cmp r3, r0\n\ + bne _080ACC62\n\ +_080ACC6C:\n\ + lsls r0, r6, 2\n\ + adds r0, r2\n\ + ldrb r1, [r0, 0x2]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080ACC7E\n\ + bl _080AD8CA\n\ +_080ACC7E:\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x27\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACC90: .4byte gUnknown_02038696\n\ +_080ACC94: .4byte gSharedMem + 0x19338\n\ +_080ACC98:\n\ + movs r6, 0\n\ + mov r5, r8\n\ + lsls r0, r5, 2\n\ + adds r1, r0, r5\n\ + lsls r1, 3\n\ + add r1, r12\n\ + movs r3, 0xA\n\ + ldrsh r2, [r1, r3]\n\ + ldr r1, _080ACCE8 @ =gUnknown_02038696\n\ + mov r9, r0\n\ + adds r5, r1, 0\n\ + ldrb r4, [r5]\n\ + cmp r2, r4\n\ + beq _080ACCC2\n\ + adds r1, r2, 0\n\ + adds r2, r5, 0\n\ +_080ACCB8:\n\ + adds r6, 0x1\n\ + adds r0, r6, r2\n\ + ldrb r0, [r0]\n\ + cmp r1, r0\n\ + bne _080ACCB8\n\ +_080ACCC2:\n\ + lsls r0, r6, 24\n\ + lsrs r0, 24\n\ + movs r1, 0x1\n\ + bl sub_80AEE54\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080ACCF0\n\ + ldr r1, _080ACCEC @ =gTasks\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0\n\ + strh r1, [r0, 0x1C]\n\ + movs r1, 0x28\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACCE8: .4byte gUnknown_02038696\n\ +_080ACCEC: .4byte gTasks\n\ +_080ACCF0:\n\ + ldr r0, _080ACCFC @ =gTasks\n\ + mov r1, r9\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + b _080ACD22\n\ + .align 2, 0\n\ +_080ACCFC: .4byte gTasks\n\ +_080ACD00:\n\ + mov r5, r8\n\ + lsls r0, r5, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + mov r2, r12\n\ + adds r1, r0, r2\n\ + ldrh r0, [r1, 0x1C]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0x1C]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x14\n\ + bgt _080ACD1E\n\ + bl _080AD8CA\n\ +_080ACD1E:\n\ + movs r0, 0\n\ + strh r0, [r1, 0x1C]\n\ +_080ACD22:\n\ + movs r0, 0x1E\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ +_080ACD2A:\n\ + movs r6, 0\n\ + ldr r2, _080ACD78 @ =gUnknown_02038696\n\ + ldrb r3, [r2]\n\ + mov r4, r8\n\ + lsls r1, r4, 2\n\ + adds r0, r1, r4\n\ + lsls r0, 3\n\ + mov r5, r12\n\ + adds r4, r0, r5\n\ + movs r5, 0xA\n\ + ldrsh r0, [r4, r5]\n\ + mov r9, r1\n\ + adds r5, r2, 0\n\ + cmp r3, r0\n\ + beq _080ACD5E\n\ + adds r3, r5, 0\n\ + adds r2, r4, 0\n\ +_080ACD4C:\n\ + adds r6, 0x1\n\ + cmp r6, 0x3\n\ + bgt _080ACD5E\n\ + adds r0, r6, r3\n\ + ldrb r1, [r0]\n\ + movs r4, 0xA\n\ + ldrsh r0, [r2, r4]\n\ + cmp r1, r0\n\ + bne _080ACD4C\n\ +_080ACD5E:\n\ + lsls r4, r6, 24\n\ + lsrs r0, r4, 24\n\ + bl sub_80AF038\n\ + lsls r0, 24\n\ + adds r5, r4, 0\n\ + cmp r0, 0\n\ + beq _080ACD7C\n\ + movs r0, 0x63\n\ + bl PlaySE\n\ + b _080ACD82\n\ + .align 2, 0\n\ +_080ACD78: .4byte gUnknown_02038696\n\ +_080ACD7C:\n\ + movs r0, 0x64\n\ + bl PlaySE\n\ +_080ACD82:\n\ + lsls r0, r6, 3\n\ + subs r0, r6\n\ + lsls r0, 2\n\ + ldr r1, _080ACDC0 @ =gSharedMem + 0x19260\n\ + adds r4, r0, r1\n\ + ldrb r1, [r4, 0x15]\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080ACDA6\n\ + lsrs r0, r5, 24\n\ + bl sub_80B03A8\n\ + ldrb r1, [r4, 0x15]\n\ + movs r0, 0x21\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r4, 0x15]\n\ +_080ACDA6:\n\ + ldr r0, _080ACDC4 @ =gTasks\n\ + mov r1, r9\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldrh r0, [r1, 0xA]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0xA]\n\ + movs r0, 0x1A\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACDC0: .4byte gSharedMem + 0x19260\n\ +_080ACDC4: .4byte gTasks\n\ +_080ACDC8:\n\ + mov r5, r8\n\ + lsls r2, r5, 2\n\ + adds r0, r2, r5\n\ + lsls r0, 3\n\ + mov r1, r12\n\ + adds r3, r0, r1\n\ + ldrh r0, [r3, 0x1C]\n\ + adds r1, r0, 0x1\n\ + strh r1, [r3, 0x1C]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + mov r9, r2\n\ + cmp r0, 0x9\n\ + bgt _080ACDE8\n\ + bl _080AD8CA\n\ +_080ACDE8:\n\ + movs r0, 0\n\ + strh r0, [r3, 0x1C]\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080ACE48 @ =gSharedMem + 0x19260\n\ + adds r2, r0, r1\n\ + ldrb r1, [r2, 0xC]\n\ + movs r0, 0x6\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080ACE0A\n\ + ldrb r1, [r2, 0x11]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080ACE36\n\ +_080ACE0A:\n\ + bl sub_80AF138\n\ + ldr r0, _080ACE4C @ =gStringVar1\n\ + lsls r1, r7, 6\n\ + ldr r2, _080ACE50 @ =gContestMons + 0x2\n\ + adds r1, r2\n\ + bl StringCopy\n\ + ldr r4, _080ACE54 @ =gStringVar4\n\ + ldr r1, _080ACE58 @ =gUnknown_083CC103\n\ + adds r0, r4, 0\n\ + bl StringExpandPlaceholders\n\ + ldr r0, _080ACE5C @ =gMenuWindow\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r1, 0xF\n\ + str r1, [sp]\n\ + adds r1, r4, 0\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ +_080ACE36:\n\ + ldr r0, _080ACE60 @ =gTasks\n\ + mov r1, r9\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x34\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACE48: .4byte gSharedMem + 0x19260\n\ +_080ACE4C: .4byte gStringVar1\n\ +_080ACE50: .4byte gContestMons + 0x2\n\ +_080ACE54: .4byte gStringVar4\n\ +_080ACE58: .4byte gUnknown_083CC103\n\ +_080ACE5C: .4byte gMenuWindow\n\ +_080ACE60: .4byte gTasks\n\ +_080ACE64:\n\ + ldr r0, _080ACE9C @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080ACE74\n\ + bl _080AD8CA\n\ +_080ACE74:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080ACEA0 @ =gSharedMem + 0x19260\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x15]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080ACEA8\n\ + ldr r0, _080ACEA4 @ =gTasks\n\ + mov r2, r8\n\ + lsls r1, r2, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x11\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACE9C: .4byte gMenuWindow\n\ +_080ACEA0: .4byte gSharedMem + 0x19260\n\ +_080ACEA4: .4byte gTasks\n\ +_080ACEA8:\n\ + ldr r0, _080ACEBC @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0xE\n\ + strh r0, [r1, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACEBC: .4byte gTasks\n\ +_080ACEC0:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080ACEE4 @ =gSharedMem + 0x19260\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x16]\n\ + lsls r4, 24\n\ + lsrs r5, r4, 24\n\ + cmp r5, 0\n\ + beq _080ACF48\n\ + bl sub_80AF138\n\ + asrs r0, r4, 24\n\ + cmp r0, 0x1\n\ + bne _080ACEF0\n\ + ldr r0, _080ACEE8 @ =gMenuWindow\n\ + ldr r1, _080ACEEC @ =gUnknown_083CBD79\n\ + b _080ACEF8\n\ + .align 2, 0\n\ +_080ACEE4: .4byte gSharedMem + 0x19260\n\ +_080ACEE8: .4byte gMenuWindow\n\ +_080ACEEC: .4byte gUnknown_083CBD79\n\ +_080ACEF0:\n\ + cmp r0, 0x2\n\ + bne _080ACF10\n\ + ldr r0, _080ACF08 @ =gMenuWindow\n\ + ldr r1, _080ACF0C @ =gUnknown_083CBD9D\n\ +_080ACEF8:\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r3, 0xF\n\ + str r3, [sp]\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ + b _080ACF22\n\ + .align 2, 0\n\ +_080ACF08: .4byte gMenuWindow\n\ +_080ACF0C: .4byte gUnknown_083CBD9D\n\ +_080ACF10:\n\ + ldr r0, _080ACF3C @ =gMenuWindow\n\ + ldr r1, _080ACF40 @ =gUnknown_083CBDC6\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r3, 0xF\n\ + str r3, [sp]\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ +_080ACF22:\n\ + movs r0, 0x3\n\ + bl sub_80B1710\n\ + ldr r1, _080ACF44 @ =gTasks\n\ + mov r4, r8\n\ + lsls r0, r4, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0\n\ + strh r1, [r0, 0x1C]\n\ + b _080ACF88\n\ + .align 2, 0\n\ +_080ACF3C: .4byte gMenuWindow\n\ +_080ACF40: .4byte gUnknown_083CBDC6\n\ +_080ACF44: .4byte gTasks\n\ +_080ACF48:\n\ + bl sub_80AF138\n\ + ldr r0, _080ACF90 @ =gStringVar1\n\ + lsls r1, r7, 6\n\ + ldr r2, _080ACF94 @ =gContestMons + 0x2\n\ + adds r1, r2\n\ + bl StringCopy\n\ + ldr r4, _080ACF98 @ =gStringVar4\n\ + ldr r1, _080ACF9C @ =gUnknown_083CBD52\n\ + adds r0, r4, 0\n\ + bl StringExpandPlaceholders\n\ + ldr r0, _080ACFA0 @ =gMenuWindow\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r1, 0xF\n\ + str r1, [sp]\n\ + adds r1, r4, 0\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ + movs r0, 0x2\n\ + bl sub_80B1710\n\ + ldr r1, _080ACFA4 @ =gTasks\n\ + mov r2, r8\n\ + lsls r0, r2, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ +_080ACF88:\n\ + movs r1, 0x2D\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACF90: .4byte gStringVar1\n\ +_080ACF94: .4byte gContestMons + 0x2\n\ +_080ACF98: .4byte gStringVar4\n\ +_080ACF9C: .4byte gUnknown_083CBD52\n\ +_080ACFA0: .4byte gMenuWindow\n\ +_080ACFA4: .4byte gTasks\n\ +_080ACFA8:\n\ + ldrb r1, [r6, 0x6]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080ACFB6\n\ + bl _080AD8CA\n\ +_080ACFB6:\n\ + ldrb r0, [r6, 0x11]\n\ + bl sub_80B09B0\n\ + ldr r1, _080ACFD0 @ =gTasks\n\ + mov r3, r8\n\ + lsls r0, r3, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0xF\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080ACFD0: .4byte gTasks\n\ +_080ACFD4:\n\ + ldr r0, _080AD034 @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080ACFE4\n\ + bl _080AD8CA\n\ +_080ACFE4:\n\ + ldr r1, _080AD038 @ =gTasks\n\ + mov r4, r8\n\ + lsls r0, r4, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r4, r0, r1\n\ + ldrh r0, [r4, 0x1C]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x1C]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x32\n\ + bgt _080AD002\n\ + bl _080AD8CA\n\ +_080AD002:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080AD03C @ =gSharedMem + 0x19260\n\ + adds r6, r0, r1\n\ + ldrb r1, [r6, 0x15]\n\ + movs r5, 0x10\n\ + adds r0, r5, 0\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080AD02C\n\ + movs r1, 0x2\n\ + ldrsh r0, [r6, r1]\n\ + ldrb r1, [r6, 0x17]\n\ + adds r2, r7, 0\n\ + bl sub_80AFBA0\n\ + ldrh r0, [r6, 0x2]\n\ + ldrb r2, [r6, 0x17]\n\ + adds r0, r2\n\ + strh r0, [r6, 0x2]\n\ +_080AD02C:\n\ + strh r5, [r4, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AD034: .4byte gMenuWindow\n\ +_080AD038: .4byte gTasks\n\ +_080AD03C: .4byte gSharedMem + 0x19260\n\ +_080AD040:\n\ + lsls r0, r7, 2\n\ + ldr r1, _080AD06C @ =gSharedMem + 0x19338\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x2]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0\n\ + beq _080AD058\n\ + bl _080AD8CA\n\ +_080AD058:\n\ + mov r3, r8\n\ + lsls r0, r3, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + strh r1, [r0, 0x1C]\n\ + movs r1, 0x11\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AD06C: .4byte gSharedMem + 0x19338\n\ +_080AD070:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080AD0CC @ =gSharedMem + 0x19260\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x15]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AD0E8\n\ + bl sub_80AF138\n\ + ldr r0, _080AD0D0 @ =gStringVar1\n\ + lsls r1, r7, 6\n\ + ldr r2, _080AD0D4 @ =gContestMons + 0x2\n\ + adds r1, r2\n\ + bl StringCopy\n\ + ldr r4, _080AD0D8 @ =gStringVar4\n\ + ldr r1, _080AD0DC @ =gUnknown_083CC075\n\ + adds r0, r4, 0\n\ + bl StringExpandPlaceholders\n\ + ldr r0, _080AD0E0 @ =gMenuWindow\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r1, 0xF\n\ + str r1, [sp]\n\ + adds r1, r4, 0\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ + ldr r0, _080AD0E4 @ =gTasks\n\ + mov r5, r8\n\ + lsls r4, r5, 2\n\ + add r4, r8\n\ + lsls r4, 3\n\ + adds r4, r0\n\ + movs r0, 0\n\ + strh r0, [r4, 0x1C]\n\ + bl sub_80B1710\n\ + movs r0, 0x2E\n\ + strh r0, [r4, 0x8]\n\ + bl _080AD8CA\n\ + .align 2, 0\n\ +_080AD0CC: .4byte gSharedMem + 0x19260\n\ +_080AD0D0: .4byte gStringVar1\n\ +_080AD0D4: .4byte gContestMons + 0x2\n\ +_080AD0D8: .4byte gStringVar4\n\ +_080AD0DC: .4byte gUnknown_083CC075\n\ +_080AD0E0: .4byte gMenuWindow\n\ +_080AD0E4: .4byte gTasks\n\ +_080AD0E8:\n\ + mov r1, r8\n\ + lsls r0, r1, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x29\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ +_080AD0FA:\n\ + ldrb r1, [r6, 0x6]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AD108\n\ + bl _080AD8CA\n\ +_080AD108:\n\ + mov r2, r8\n\ + lsls r0, r2, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x13\n\ + strh r1, [r0, 0x8]\n\ + bl _080AD8CA\n\ +_080AD11A:\n\ + ldr r0, _080AD15C @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080AD12A\n\ + bl _080AD8CA\n\ +_080AD12A:\n\ + lsls r4, r7, 3\n\ + subs r4, r7\n\ + lsls r4, 2\n\ + ldr r0, _080AD160 @ =gSharedMem + 0x19260\n\ + adds r4, r0\n\ + movs r3, 0x2\n\ + ldrsh r0, [r4, r3]\n\ + ldrb r1, [r4, 0x18]\n\ + negs r1, r1\n\ + adds r2, r7, 0\n\ + bl sub_80AFBA0\n\ + ldrb r1, [r4, 0x18]\n\ + ldrh r0, [r4, 0x2]\n\ + subs r0, r1\n\ + strh r0, [r4, 0x2]\n\ + ldr r1, _080AD164 @ =gTasks\n\ + mov r4, r8\n\ + lsls r0, r4, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x12\n\ + strh r1, [r0, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD15C: .4byte gMenuWindow\n\ +_080AD160: .4byte gSharedMem + 0x19260\n\ +_080AD164: .4byte gTasks\n\ +_080AD168:\n\ + bl sub_80B0D7C\n\ + lsls r0, r7, 2\n\ + ldr r1, _080AD19C @ =gSharedMem + 0x19338\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x2]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0\n\ + beq _080AD182\n\ + b _080AD8CA\n\ +_080AD182:\n\ + ldr r0, _080AD1A0 @ =gTasks\n\ + mov r5, r8\n\ + lsls r4, r5, 2\n\ + add r4, r8\n\ + lsls r4, 3\n\ + adds r4, r0\n\ + strh r6, [r4, 0x1C]\n\ + bl sub_80AF138\n\ + movs r0, 0x29\n\ + strh r0, [r4, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD19C: .4byte gSharedMem + 0x19338\n\ +_080AD1A0: .4byte gTasks\n\ +_080AD1A4:\n\ + ldr r2, _080AD1CC @ =gSharedMem + 0x19328\n\ + ldrb r1, [r2, 0x1]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + adds r1, r2, 0\n\ + cmp r0, 0\n\ + beq _080AD1D0\n\ + ldr r0, [r1]\n\ + lsls r0, 20\n\ + lsrs r0, 29\n\ + cmp r7, r0\n\ + beq _080AD1D0\n\ + mov r1, r8\n\ + lsls r0, r1, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r1, 0x39\n\ + strh r1, [r0, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD1CC: .4byte gSharedMem + 0x19328\n\ +_080AD1D0:\n\ + ldrb r4, [r1]\n\ + lsls r2, r7, 3\n\ + subs r0, r2, r7\n\ + lsls r0, 2\n\ + subs r1, 0xC8\n\ + adds r5, r0, r1\n\ + ldrb r1, [r5, 0x11]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + mov r10, r2\n\ + cmp r0, 0\n\ + beq _080AD204\n\ + movs r4, 0x1\n\ + ldr r0, _080AD1FC @ =gStringVar3\n\ + ldrh r2, [r5, 0x6]\n\ + movs r1, 0xD\n\ + muls r1, r2\n\ + ldr r2, _080AD200 @ =gMoveNames\n\ + adds r1, r2\n\ + bl StringCopy\n\ + b _080AD21E\n\ + .align 2, 0\n\ +_080AD1FC: .4byte gStringVar3\n\ +_080AD200: .4byte gMoveNames\n\ +_080AD204:\n\ + ldr r0, _080AD270 @ =gStringVar3\n\ + ldr r3, _080AD274 @ =gUnknown_083CC2D8\n\ + ldr r2, _080AD278 @ =gContestMoves\n\ + ldrh r1, [r5, 0x6]\n\ + lsls r1, 3\n\ + adds r1, r2\n\ + ldrb r1, [r1, 0x1]\n\ + lsls r1, 29\n\ + lsrs r1, 27\n\ + adds r1, r3\n\ + ldr r1, [r1]\n\ + bl StringCopy\n\ +_080AD21E:\n\ + lsls r0, r4, 24\n\ + cmp r0, 0\n\ + ble _080AD23A\n\ + mov r2, r10\n\ + subs r0, r2, r7\n\ + lsls r0, 2\n\ + ldr r1, _080AD27C @ =gSharedMem + 0x19260\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x15]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AD23A\n\ + movs r4, 0\n\ +_080AD23A:\n\ + bl sub_80AF138\n\ + ldr r0, _080AD280 @ =gStringVar1\n\ + lsls r1, r7, 6\n\ + ldr r2, _080AD284 @ =gContestMons + 0x2\n\ + adds r1, r2\n\ + bl StringCopy\n\ + ldr r3, _080AD288 @ =gSharedMem + 0x19204\n\ + ldrb r0, [r3, 0x13]\n\ + lsls r1, r4, 24\n\ + asrs r2, r1, 24\n\ + adds r0, r2, r0\n\ + strb r0, [r3, 0x13]\n\ + lsls r0, 24\n\ + adds r4, r1, 0\n\ + cmp r0, 0\n\ + bge _080AD262\n\ + movs r0, 0\n\ + strb r0, [r3, 0x13]\n\ +_080AD262:\n\ + cmp r2, 0\n\ + bne _080AD290\n\ + ldr r0, _080AD28C @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ + b _080AD6EC\n\ + .align 2, 0\n\ +_080AD270: .4byte gStringVar3\n\ +_080AD274: .4byte gUnknown_083CC2D8\n\ +_080AD278: .4byte gContestMoves\n\ +_080AD27C: .4byte gSharedMem + 0x19260\n\ +_080AD280: .4byte gStringVar1\n\ +_080AD284: .4byte gContestMons + 0x2\n\ +_080AD288: .4byte gSharedMem + 0x19204\n\ +_080AD28C: .4byte gTasks\n\ +_080AD290:\n\ + cmp r2, 0\n\ + bge _080AD2A8\n\ + ldr r0, _080AD2A0 @ =gStringVar4\n\ + ldr r1, _080AD2A4 @ =gUnknown_083CC0BC\n\ + bl StringExpandPlaceholders\n\ + b _080AD2D0\n\ + .align 2, 0\n\ +_080AD2A0: .4byte gStringVar4\n\ +_080AD2A4: .4byte gUnknown_083CC0BC\n\ +_080AD2A8:\n\ + cmp r2, 0\n\ + ble _080AD2C8\n\ + movs r0, 0x13\n\ + ldrsb r0, [r3, r0]\n\ + cmp r0, 0x4\n\ + bgt _080AD2C8\n\ + ldr r0, _080AD2C0 @ =gStringVar4\n\ + ldr r1, _080AD2C4 @ =gUnknown_083CC0A0\n\ + bl StringExpandPlaceholders\n\ + b _080AD2D0\n\ + .align 2, 0\n\ +_080AD2C0: .4byte gStringVar4\n\ +_080AD2C4: .4byte gUnknown_083CC0A0\n\ +_080AD2C8:\n\ + ldr r0, _080AD300 @ =gStringVar4\n\ + ldr r1, _080AD304 @ =gUnknown_083CC0E3\n\ + bl StringExpandPlaceholders\n\ +_080AD2D0:\n\ + ldr r0, _080AD308 @ =gMenuWindow\n\ + ldr r1, _080AD300 @ =gStringVar4\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r3, 0xF\n\ + str r3, [sp]\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ + ldr r1, _080AD30C @ =gTasks\n\ + mov r5, r8\n\ + lsls r0, r5, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r1, r0, r1\n\ + movs r0, 0\n\ + strh r0, [r1, 0x1C]\n\ + strh r0, [r1, 0x1E]\n\ + cmp r4, 0\n\ + bge _080AD310\n\ + movs r0, 0x35\n\ + strh r0, [r1, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD300: .4byte gStringVar4\n\ +_080AD304: .4byte gUnknown_083CC0E3\n\ +_080AD308: .4byte gMenuWindow\n\ +_080AD30C: .4byte gTasks\n\ +_080AD310:\n\ + movs r0, 0x36\n\ + strh r0, [r1, 0x8]\n\ + b _080AD8CA\n\ +_080AD316:\n\ + mov r1, r8\n\ + lsls r0, r1, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + mov r2, r12\n\ + adds r4, r0, r2\n\ + movs r3, 0x1C\n\ + ldrsh r2, [r4, r3]\n\ + cmp r2, 0x1\n\ + beq _080AD354\n\ + cmp r2, 0x1\n\ + bgt _080AD334\n\ + cmp r2, 0\n\ + beq _080AD33E\n\ + b _080AD8CA\n\ +_080AD334:\n\ + cmp r2, 0x2\n\ + beq _080AD37C\n\ + cmp r2, 0x3\n\ + beq _080AD3B0\n\ + b _080AD8CA\n\ +_080AD33E:\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + movs r1, 0x1\n\ + bl sub_80B1EA8\n\ + ldr r0, _080AD350 @ =0x00000187\n\ + bl PlayFanfare\n\ + b _080AD3A8\n\ + .align 2, 0\n\ +_080AD350: .4byte 0x00000187\n\ +_080AD354:\n\ + ldrb r0, [r6, 0x7]\n\ + ands r2, r0\n\ + cmp r2, 0\n\ + beq _080AD35E\n\ + b _080AD8CA\n\ +_080AD35E:\n\ + ldr r0, _080AD378 @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080AD36C\n\ + b _080AD8CA\n\ +_080AD36C:\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + bl sub_80B1CBC\n\ + b _080AD3A8\n\ + .align 2, 0\n\ +_080AD378: .4byte gMenuWindow\n\ +_080AD37C:\n\ + ldrb r1, [r6, 0x6]\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r2, 0\n\ + beq _080AD38C\n\ + b _080AD8CA\n\ +_080AD38C:\n\ + ldrh r0, [r4, 0x1E]\n\ + adds r1, r0, 0x1\n\ + strh r1, [r4, 0x1E]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x1D\n\ + bgt _080AD39C\n\ + b _080AD8CA\n\ +_080AD39C:\n\ + strh r2, [r4, 0x1E]\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + adds r0, r1, 0\n\ + bl sub_80B1EA8\n\ +_080AD3A8:\n\ + ldrh r0, [r4, 0x1C]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x1C]\n\ + b _080AD8CA\n\ +_080AD3B0:\n\ + ldr r0, _080AD3CC @ =gPaletteFade\n\ + ldrb r1, [r0, 0x7]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0\n\ + beq _080AD3C2\n\ + b _080AD8CA\n\ +_080AD3C2:\n\ + strh r0, [r4, 0x1C]\n\ + strh r0, [r4, 0x1E]\n\ + movs r0, 0x2B\n\ + strh r0, [r4, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD3CC: .4byte gPaletteFade\n\ +_080AD3D0:\n\ + mov r4, r8\n\ + lsls r1, r4, 2\n\ + adds r0, r1, r4\n\ + lsls r0, 3\n\ + add r0, r12\n\ + movs r5, 0x1C\n\ + ldrsh r0, [r0, r5]\n\ + mov r9, r1\n\ + cmp r0, 0x4\n\ + bls _080AD3E6\n\ + b _080AD8CA\n\ +_080AD3E6:\n\ + lsls r0, 2\n\ + ldr r1, _080AD3F0 @ =_080AD3F4\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_080AD3F0: .4byte _080AD3F4\n\ + .align 2, 0\n\ +_080AD3F4:\n\ + .4byte _080AD408\n\ + .4byte _080AD420\n\ + .4byte _080AD43E\n\ + .4byte _080AD4A0\n\ + .4byte _080AD4EC\n\ +_080AD408:\n\ + ldr r0, _080AD41C @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080AD416\n\ + b _080AD8CA\n\ +_080AD416:\n\ + movs r0, 0x1\n\ + movs r1, 0x1\n\ + b _080AD4C8\n\ + .align 2, 0\n\ +_080AD41C: .4byte gMenuWindow\n\ +_080AD420:\n\ + ldrb r1, [r6, 0x7]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AD42C\n\ + b _080AD8CA\n\ +_080AD42C:\n\ + bl sub_80B1DDC\n\ + movs r0, 0xDF\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + bl sub_80B1CBC\n\ + b _080AD4CC\n\ +_080AD43E:\n\ + ldrb r1, [r6, 0x6]\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r2, 0\n\ + beq _080AD44E\n\ + b _080AD8CA\n\ +_080AD44E:\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + mov r1, r12\n\ + adds r3, r0, r1\n\ + ldrh r0, [r3, 0x1E]\n\ + adds r1, r0, 0x1\n\ + strh r1, [r3, 0x1E]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x1D\n\ + bgt _080AD468\n\ + b _080AD8CA\n\ +_080AD468:\n\ + strh r2, [r3, 0x1E]\n\ + lsls r4, r7, 3\n\ + subs r4, r7\n\ + lsls r4, 2\n\ + adds r0, r6, 0\n\ + adds r0, 0x5C\n\ + adds r4, r0\n\ + movs r2, 0x2\n\ + ldrsh r0, [r4, r2]\n\ + movs r1, 0x92\n\ + lsls r1, 1\n\ + adds r5, r6, r1\n\ + movs r1, 0x2\n\ + ldrsb r1, [r5, r1]\n\ + adds r2, r7, 0\n\ + str r3, [sp, 0x4]\n\ + bl sub_80AFBA0\n\ + movs r0, 0x2\n\ + ldrsb r0, [r5, r0]\n\ + ldrh r2, [r4, 0x2]\n\ + adds r0, r2\n\ + strh r0, [r4, 0x2]\n\ + ldr r3, [sp, 0x4]\n\ + ldrh r0, [r3, 0x1C]\n\ + adds r0, 0x1\n\ + strh r0, [r3, 0x1C]\n\ + b _080AD8CA\n\ +_080AD4A0:\n\ + lsls r0, r7, 2\n\ + ldr r2, _080AD4E0 @ =gSharedMem + 0x19338\n\ + adds r0, r2\n\ + ldrb r1, [r0, 0x2]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AD4B2\n\ + b _080AD8CA\n\ +_080AD4B2:\n\ + ldr r3, _080AD4E4 @ =0xfffffecc\n\ + adds r0, r2, r3\n\ + ldrb r1, [r0, 0x6]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AD4C2\n\ + b _080AD8CA\n\ +_080AD4C2:\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + movs r0, 0x1\n\ +_080AD4C8:\n\ + bl sub_80B1EA8\n\ +_080AD4CC:\n\ + ldr r0, _080AD4E8 @ =gTasks\n\ + mov r1, r9\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldrh r0, [r1, 0x1C]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0x1C]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD4E0: .4byte gSharedMem + 0x19338\n\ +_080AD4E4: .4byte 0xfffffecc\n\ +_080AD4E8: .4byte gTasks\n\ +_080AD4EC:\n\ + ldr r0, _080AD510 @ =gPaletteFade\n\ + ldrb r1, [r0, 0x7]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0\n\ + beq _080AD4FE\n\ + b _080AD8CA\n\ +_080AD4FE:\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + strh r1, [r0, 0x1C]\n\ + strh r1, [r0, 0x1E]\n\ + movs r1, 0x2B\n\ + strh r1, [r0, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD510: .4byte gPaletteFade\n\ +_080AD514:\n\ + lsls r0, r7, 2\n\ + ldr r1, _080AD534 @ =gSharedMem + 0x19338\n\ + adds r0, r1\n\ + ldrb r1, [r0, 0x2]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AD526\n\ + b _080AD8CA\n\ +_080AD526:\n\ + bl sub_80AF138\n\ + ldr r0, _080AD538 @ =gTasks\n\ + mov r4, r8\n\ + lsls r1, r4, 2\n\ + b _080AD6EC\n\ + .align 2, 0\n\ +_080AD534: .4byte gSharedMem + 0x19338\n\ +_080AD538: .4byte gTasks\n\ +_080AD53C:\n\ + bl sub_80AF138\n\ + ldr r0, _080AD5A8 @ =gStringVar3\n\ + ldr r4, _080AD5AC @ =gSharedMem + 0x19328\n\ + ldr r1, [r4]\n\ + lsls r1, 20\n\ + lsrs r1, 29\n\ + lsls r1, 6\n\ + ldr r5, _080AD5B0 @ =gContestMons + 0x2\n\ + adds r1, r5\n\ + bl StringCopy\n\ + ldr r0, _080AD5B4 @ =gStringVar1\n\ + lsls r1, r7, 6\n\ + adds r1, r5\n\ + bl StringCopy\n\ + ldr r0, _080AD5B8 @ =gStringVar2\n\ + lsls r1, r7, 3\n\ + subs r1, r7\n\ + lsls r1, 2\n\ + subs r4, 0xC8\n\ + adds r1, r4\n\ + ldrh r2, [r1, 0x6]\n\ + movs r1, 0xD\n\ + muls r1, r2\n\ + ldr r2, _080AD5BC @ =gMoveNames\n\ + adds r1, r2\n\ + bl StringCopy\n\ + ldr r4, _080AD5C0 @ =gStringVar4\n\ + ldr r1, _080AD5C4 @ =gUnknown_083CC14A\n\ + adds r0, r4, 0\n\ + bl StringExpandPlaceholders\n\ + ldr r0, _080AD5C8 @ =gMenuWindow\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r1, 0xF\n\ + str r1, [sp]\n\ + adds r1, r4, 0\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ + ldr r1, _080AD5CC @ =gTasks\n\ + mov r5, r8\n\ + lsls r0, r5, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x3A\n\ + strh r1, [r0, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD5A8: .4byte gStringVar3\n\ +_080AD5AC: .4byte gSharedMem + 0x19328\n\ +_080AD5B0: .4byte gContestMons + 0x2\n\ +_080AD5B4: .4byte gStringVar1\n\ +_080AD5B8: .4byte gStringVar2\n\ +_080AD5BC: .4byte gMoveNames\n\ +_080AD5C0: .4byte gStringVar4\n\ +_080AD5C4: .4byte gUnknown_083CC14A\n\ +_080AD5C8: .4byte gMenuWindow\n\ +_080AD5CC: .4byte gTasks\n\ +_080AD5D0:\n\ + ldr r5, _080AD614 @ =gMenuWindow\n\ + adds r0, r5, 0\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080AD5E0\n\ + b _080AD8CA\n\ +_080AD5E0:\n\ + bl sub_80AF138\n\ + ldr r4, _080AD618 @ =gStringVar4\n\ + ldr r1, _080AD61C @ =gUnknown_083CC16E\n\ + adds r0, r4, 0\n\ + bl StringExpandPlaceholders\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r0, 0xF\n\ + str r0, [sp]\n\ + adds r0, r5, 0\n\ + adds r1, r4, 0\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ + ldr r1, _080AD620 @ =gTasks\n\ + mov r2, r8\n\ + lsls r0, r2, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x3B\n\ + strh r1, [r0, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD614: .4byte gMenuWindow\n\ +_080AD618: .4byte gStringVar4\n\ +_080AD61C: .4byte gUnknown_083CC16E\n\ +_080AD620: .4byte gTasks\n\ +_080AD624:\n\ + ldr r0, _080AD640 @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080AD632\n\ + b _080AD8CA\n\ +_080AD632:\n\ + bl sub_80AF138\n\ + ldr r0, _080AD644 @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ + b _080AD6EC\n\ + .align 2, 0\n\ +_080AD640: .4byte gMenuWindow\n\ +_080AD644: .4byte gTasks\n\ +_080AD648:\n\ + lsls r0, r7, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + ldr r1, _080AD6B4 @ =gSharedMem + 0x19260\n\ + adds r4, r0, r1\n\ + ldrb r1, [r4, 0x15]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080AD664\n\ + movs r0, 0x11\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r4, 0x15]\n\ +_080AD664:\n\ + adds r0, r7, 0\n\ + bl sub_80B09B0\n\ + ldr r0, _080AD6B8 @ =gStringVar1\n\ + lsls r1, r7, 6\n\ + ldr r2, _080AD6BC @ =gContestMons + 0x2\n\ + adds r1, r2\n\ + bl StringCopy\n\ + ldr r0, _080AD6C0 @ =gStringVar2\n\ + ldrh r2, [r4, 0x6]\n\ + movs r1, 0xD\n\ + muls r1, r2\n\ + ldr r2, _080AD6C4 @ =gMoveNames\n\ + adds r1, r2\n\ + bl StringCopy\n\ + ldr r4, _080AD6C8 @ =gStringVar4\n\ + ldr r1, _080AD6CC @ =gUnknown_083CBF60\n\ + adds r0, r4, 0\n\ + bl StringExpandPlaceholders\n\ + ldr r0, _080AD6D0 @ =gMenuWindow\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r1, 0xF\n\ + str r1, [sp]\n\ + adds r1, r4, 0\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ + ldr r1, _080AD6D4 @ =gTasks\n\ + mov r4, r8\n\ + lsls r0, r4, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x22\n\ + strh r1, [r0, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD6B4: .4byte gSharedMem + 0x19260\n\ +_080AD6B8: .4byte gStringVar1\n\ +_080AD6BC: .4byte gContestMons + 0x2\n\ +_080AD6C0: .4byte gStringVar2\n\ +_080AD6C4: .4byte gMoveNames\n\ +_080AD6C8: .4byte gStringVar4\n\ +_080AD6CC: .4byte gUnknown_083CBF60\n\ +_080AD6D0: .4byte gMenuWindow\n\ +_080AD6D4: .4byte gTasks\n\ +_080AD6D8:\n\ + ldr r0, _080AD6F8 @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080AD6E6\n\ + b _080AD8CA\n\ +_080AD6E6:\n\ + ldr r0, _080AD6FC @ =gTasks\n\ + mov r5, r8\n\ + lsls r1, r5, 2\n\ +_080AD6EC:\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x37\n\ + strh r0, [r1, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD6F8: .4byte gMenuWindow\n\ +_080AD6FC: .4byte gTasks\n\ +_080AD700:\n\ + bl sub_80B1BDC\n\ + ldr r0, _080AD718 @ =gTasks\n\ + mov r2, r8\n\ + lsls r1, r2, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x38\n\ + strh r0, [r1, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD718: .4byte gTasks\n\ +_080AD71C:\n\ + ldrb r1, [r6, 0x6]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0\n\ + beq _080AD72C\n\ + b _080AD8CA\n\ +_080AD72C:\n\ + movs r0, 0x13\n\ + ldrsb r0, [r6, r0]\n\ + cmp r0, 0x4\n\ + ble _080AD73A\n\ + strb r1, [r6, 0x13]\n\ + bl sub_80B1928\n\ +_080AD73A:\n\ + ldr r0, _080AD74C @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0xA\n\ + strh r0, [r1, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD74C: .4byte gTasks\n\ +_080AD750:\n\ + mov r4, r8\n\ + lsls r2, r4, 2\n\ + add r2, r8\n\ + lsls r2, 3\n\ + add r2, r12\n\ + ldrb r5, [r2, 0xC]\n\ + ldr r1, _080AD774 @ =gSprites\n\ + lsls r0, r5, 4\n\ + adds r0, r5\n\ + lsls r0, 2\n\ + adds r1, 0x1C\n\ + adds r0, r1\n\ + ldr r1, _080AD778 @ =sub_80AD92C\n\ + str r1, [r0]\n\ + movs r0, 0xB\n\ + strh r0, [r2, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD774: .4byte gSprites\n\ +_080AD778: .4byte sub_80AD92C\n\ +_080AD77C:\n\ + mov r5, r8\n\ + lsls r0, r5, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + mov r1, r12\n\ + adds r4, r0, r1\n\ + ldrb r5, [r4, 0xC]\n\ + ldr r1, _080AD7B4 @ =gSprites\n\ + lsls r0, r5, 4\n\ + adds r0, r5\n\ + lsls r0, 2\n\ + adds r6, r0, r1\n\ + adds r0, r6, 0\n\ + adds r0, 0x3E\n\ + ldrb r0, [r0]\n\ + lsls r0, 29\n\ + cmp r0, 0\n\ + blt _080AD7A2\n\ + b _080AD8CA\n\ +_080AD7A2:\n\ + adds r0, r6, 0\n\ + bl FreeSpriteOamMatrix\n\ + adds r0, r6, 0\n\ + bl DestroySprite\n\ + movs r0, 0x14\n\ + strh r0, [r4, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD7B4: .4byte gSprites\n\ +_080AD7B8:\n\ + movs r6, 0\n\ + mov r2, r8\n\ + lsls r2, 2\n\ + mov r9, r2\n\ +_080AD7C0:\n\ + lsls r0, r6, 24\n\ + lsrs r0, 24\n\ + movs r1, 0x1\n\ + bl sub_80B0CDC\n\ + adds r6, 0x1\n\ + cmp r6, 0x3\n\ + ble _080AD7C0\n\ + ldr r1, _080AD7E4 @ =gTasks\n\ + mov r0, r9\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0\n\ + strh r1, [r0, 0x1C]\n\ + movs r1, 0x15\n\ + strh r1, [r0, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD7E4: .4byte gTasks\n\ +_080AD7E8:\n\ + bl sub_80AF138\n\ + ldr r0, _080AD828 @ =gStringVar1\n\ + lsls r1, r7, 6\n\ + ldr r2, _080AD82C @ =gContestMons + 0x2\n\ + adds r1, r2\n\ + bl StringCopy\n\ + ldr r4, _080AD830 @ =gStringVar4\n\ + ldr r1, _080AD834 @ =gUnknown_083CB00D\n\ + adds r0, r4, 0\n\ + bl StringExpandPlaceholders\n\ + ldr r0, _080AD838 @ =gMenuWindow\n\ + movs r2, 0xC2\n\ + lsls r2, 2\n\ + movs r1, 0xF\n\ + str r1, [sp]\n\ + adds r1, r4, 0\n\ + movs r3, 0x1\n\ + bl sub_8002EB0\n\ + ldr r1, _080AD83C @ =gTasks\n\ + mov r3, r8\n\ + lsls r0, r3, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x20\n\ + strh r1, [r0, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD828: .4byte gStringVar1\n\ +_080AD82C: .4byte gContestMons + 0x2\n\ +_080AD830: .4byte gStringVar4\n\ +_080AD834: .4byte gUnknown_083CB00D\n\ +_080AD838: .4byte gMenuWindow\n\ +_080AD83C: .4byte gTasks\n\ +_080AD840:\n\ + ldr r0, _080AD860 @ =gMenuWindow\n\ + bl sub_80037A0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080AD8CA\n\ + ldr r0, _080AD864 @ =gTasks\n\ + mov r4, r8\n\ + lsls r1, r4, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r0, 0x15\n\ + strh r0, [r1, 0x8]\n\ + b _080AD8CA\n\ + .align 2, 0\n\ +_080AD860: .4byte gMenuWindow\n\ +_080AD864: .4byte gTasks\n\ +_080AD868:\n\ + mov r5, r8\n\ + lsls r0, r5, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + mov r2, r12\n\ + adds r1, r0, r2\n\ + ldrh r0, [r1, 0x1C]\n\ + adds r0, 0x1\n\ + strh r0, [r1, 0x1C]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x1D\n\ + ble _080AD8CA\n\ + movs r0, 0\n\ + strh r0, [r1, 0x1C]\n\ + movs r0, 0x16\n\ + strh r0, [r1, 0x8]\n\ + b _080AD8CA\n\ +_080AD88C:\n\ + ldrb r0, [r6, 0x10]\n\ + adds r0, 0x1\n\ + movs r1, 0\n\ + strb r0, [r6, 0x10]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x4\n\ + bne _080AD8B8\n\ + mov r3, r8\n\ + lsls r0, r3, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + strh r1, [r0, 0x8]\n\ + strh r1, [r0, 0xA]\n\ + strh r1, [r0, 0xC]\n\ + ldr r1, _080AD8B4 @ =sub_80AD960\n\ + str r1, [r0]\n\ + b _080AD8C4\n\ + .align 2, 0\n\ +_080AD8B4: .4byte sub_80AD960\n\ +_080AD8B8:\n\ + mov r4, r8\n\ + lsls r0, r4, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + add r0, r12\n\ + strh r1, [r0, 0x8]\n\ +_080AD8C4:\n\ + movs r0, 0\n\ + bl nullsub_18\n\ +_080AD8CA:\n\ + add sp, 0x8\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); } -*/ \ No newline at end of file + -- cgit v1.2.3 From 35f79afbf39df0bbec528de97c7752f6757f5755 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 16 Dec 2017 21:15:44 -0600 Subject: decompile sub_80AD8DC - sub_80AE098 --- src/contest.c | 497 +++++++++++++++++++++++++++++++++++++++-- src/debug/matsuda_debug_menu.c | 2 +- 2 files changed, 484 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index e4c68b11a..2159ec68f 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/items.h" #include "constants/songs.h" #include "battle_anim.h" #include "contest.h" @@ -11,17 +12,21 @@ #include "main.h" #include "menu.h" #include "menu_cursor.h" +#include "overworld.h" #include "palette.h" #include "random.h" +#include "script.h" #include "sound.h" #include "sprite.h" #include "string_util.h" #include "task.h" #include "text.h" +#include "tv.h" #include "unknown_task.h" extern bool8 AreMovesContestCombo(u16, u16); extern void sub_80C8A38(u8); +extern void sub_80C8AD0(u8); extern void sub_80C8C80(u8); struct Shared18000 @@ -39,14 +44,14 @@ struct Shared19204 /*0x19204*/ u8 unk19204; /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; -#if 0 - /*0x1920A*/ u16 unk1920A_0:4; +#if 1 + /*0x1920A*/ u16 unk1920A_0:4; // probably a bitfield u16 unk1920A_4:1; u16 unk1920A_5:1; u16 unk1920A_6:1; u16 unk1920A_7:2; u16 unk1920B_1:1; - u16 unk1920B_2:1; + u16 unk1920B_2:1; // definitely a bitfield #else /*0x1920A*/ u8 unk1920A; /*0x1920B*/ u8 unk1920B; @@ -69,7 +74,7 @@ struct UnknownContestStruct1 { u8 filler0[2]; u16 unk2; // s16? - u8 filler4[2]; + u16 unk4; u16 unk6; // move u16 unk8; u8 unkA; // contest category @@ -103,7 +108,8 @@ struct UnknownContestStruct1 u8 unk17; u8 unk18; u8 unk19; - u8 filler1A[0x1C-0x1A]; + u8 unk1A; + u8 filler1B; }; struct UnknownContestStruct3 @@ -181,13 +187,18 @@ extern u16 gUnknown_030042A4; extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; extern u32 gUnknown_03005D28; + +extern u16 gUnknown_02038680[]; extern u8 gUnknown_02038696[]; +extern u8 gUnknown_0203869B; extern const u8 gUnknown_083CAF84[]; extern const u8 gUnknown_083CAFAE[]; extern const struct ContestMove gContestMoves[]; extern const u8 gUnknownText_UnknownFormatting2[]; extern const u8 gUnknownText_UnknownFormatting3[]; +extern const u8 gUnknown_083CB02C[]; +extern const u8 *const gUnknown_083CB2F0[]; void sub_80AB350(void); void sub_80AB5D4(u8); @@ -218,8 +229,28 @@ void sub_80AD8DC(u8); void sub_80AD8FC(struct Sprite *); void sub_80AD92C(struct Sprite *); void sub_80AD960(u8); -void sub_80AE020(); -u8 sub_80AE074(void); +void sub_80ADA1C(u8); +void sub_80ADA4C(u8); +void sub_80ADAD8(u8); +void sub_80ADB04(u8); +void sub_80ADB48(u8); +void sub_80ADB88(u8); +void sub_80ADC10(u8); +void sub_80ADC4C(u8); +void sub_80ADC84(u8); +void sub_80ADCB4(u8); +void sub_80ADD04(u8); +void sub_80ADD74(u8); +void sub_80ADDA4(u8); +void sub_80ADE54(u8); +void sub_80ADEAC(u8); +void sub_80ADEEC(u8); +void sub_80ADF4C(u8); +void sub_80ADF98(u8); +void sub_80ADFD8(u8); +void sub_80AE010(void); +void sub_80AE020(u8 *, s32); +bool8 sub_80AE074(void); u8 sub_80AE858(void); u8 sub_80AE8B4(void); u8 sub_80AE9FC(); @@ -232,11 +263,15 @@ void sub_80AF120(void); void sub_80AF138(void); u16 sub_80AF15C(u8); void sub_80AF1B8(void); +void sub_80AF2FC(void); +void sub_80AF3C0(void); u8 sub_80AF59C(u8); void sub_80AF860(void); void sub_80AFA5C(void); void sub_80AFBA0(s16, s16, u8); void sub_80AFE30(void); +void sub_80AFF10(void); +u8 sub_80AFF28(void); void sub_80AFFE0(u8); void sub_80B0034(void); void sub_80B00C8(void); @@ -265,6 +300,7 @@ void sub_80B20C4(void); u8 sub_80B214C(u8); void sub_80B2184(void); void sub_80B2280(void); +void sub_80B237C(u8); void sub_80B25E4(); u16 sub_80B2760(); void sub_80B2790(); @@ -732,8 +768,8 @@ void sub_80AB9A0(u8 taskId) break; case 4: default: - //if (shared19204.unk1920A_6) - if (shared19204.unk1920A & 0x40) + if (shared19204.unk1920A_6) + //if (shared19204.unk1920A & 0x40) break; gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; @@ -1234,8 +1270,8 @@ void sub_80AC204(u8 taskId) void sub_80AC250(u8 taskId) { - //if (!shared19204.unk1920A_6 && !shared19204.unk1920B_1) - if (!(shared19204.unk1920A & 0x40) && !(shared19204.unk1920B & 2)) + if (!shared19204.unk1920A_6 && !shared19204.unk1920B_1) + //if (!(shared19204.unk1920A & 0x40) && !(shared19204.unk1920B & 2)) gTasks[taskId].func = sub_80AC284; } @@ -1291,7 +1327,7 @@ void sub_80AC2CC(u8 taskId) //shared19204.unk1920B_2 = 1; shared19204.unk1920B |= 4; - if (sub_80AE074() != 0) + if (sub_80AE074()) sub_80B114C(shared19204.unk19215); taskId2 = CreateTask(sub_80C8C80, 0); SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); @@ -1337,8 +1373,8 @@ void sub_80AC2CC(u8 taskId) sub_80B28F0(shared19204.unk19215); spriteId = sub_80AE9FC( gContestMons[shared19204.unk19215].species, - gContestMons[shared19204.unk19215].unk3C, - gContestMons[shared19204.unk19215].unk38); + gContestMons[shared19204.unk19215].otId, + gContestMons[shared19204.unk19215].personality); gSprites[spriteId].pos2.x = 120; gSprites[spriteId].callback = sub_80AD8FC; gTasks[taskId].data[2] = spriteId; @@ -4819,3 +4855,436 @@ _080AD8CA:\n\ .syntax divided\n"); } +void sub_80AD8DC(u8 taskId) +{ + shared19204.unk1920B_2 = 0; + DestroyTask(taskId); +} + +void sub_80AD8FC(struct Sprite *sprite) +{ + if (sprite->pos2.x != 0) + { + sprite->pos2.x -= 2; + } + else + { + if (++sprite->data[0] == 31) + { + sprite->data[0] = 0; + sprite->callback = SpriteCallbackDummy; + } + } +} + +void sub_80AD92C(struct Sprite *sprite) +{ + sprite->pos2.x -= 6; + if (sprite->pos1.x + sprite->pos2.x < -32) + { + sprite->callback = SpriteCallbackDummy; + sprite->invisible = TRUE; + } +} + +void sub_80AD960(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (gIsLinkContest & 1) + { + u8 taskId2; + + shared19204.unk1920B_2 = 1; + if (sub_80AE074()) + { + sub_80AF2FC(); + sub_80AF3C0(); + } + taskId2 = CreateTask(sub_80C8C80, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); + sub_80AF860(); + gTasks[taskId].data[0] = 1; + } + //_080AD9E8 + else + { + sub_80AF2FC(); + sub_80AF3C0(); + gTasks[taskId].data[0] = 2; + } + break; + case 1: + if (!shared19204.unk1920B_2) + gTasks[taskId].data[0] = 2; + break; + case 2: + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80ADA1C; + break; + } +} + +void sub_80ADA1C(u8 taskId) +{ + sub_80B1FD0(0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80ADA4C; +} + +void sub_80ADA4C(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (++gTasks[taskId].data[1] > 20) + { + sub_80B25E4(2); + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + break; + case 1: + if (!shared19204.unk1920B_1) + { + if (++gTasks[taskId].data[1] > 20) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + } + break; + case 2: + sub_80AFF10(); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80ADAD8; + break; + } +} + +void sub_80ADAD8(u8 taskId) +{ + if (sub_80AFF28() != 0) + gTasks[taskId].func = sub_80ADB04; +} + +void sub_80ADB04(u8 taskId) +{ + { + void *src = shared18000.unk18204; + void *dest = gPlttBufferUnfaded; + DmaCopy32(3, src, dest, 0x400); + } + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 2; + gTasks[taskId].func = sub_80ADB48; +} + +void sub_80ADB48(u8 taskId) +{ + if (++gTasks[taskId].data[0] > 2) + { + gTasks[taskId].data[0] = 0; + if (--gTasks[taskId].data[1] == 0) + gTasks[taskId].func = sub_80ADB88; + } +} + +void sub_80ADB88(u8 taskId) +{ + struct UnknownContestStruct1 *s = &shared19260.unk19260[gContestPlayerMonIndex]; + u8 r4 = s->unk1A; + + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CB2F0[r4]); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].func = sub_80ADC10; +} + +void sub_80ADC10(u8 taskId) +{ + if (sub_80037A0(&gMenuWindow) == 1) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80ADC4C; + sub_80B0D7C(); + } +} + +void sub_80ADC4C(u8 taskId) +{ + if (gTasks[taskId].data[0]++ > 29) + { + gTasks[taskId].data[0] = 0; + sub_80AFF10(); + gTasks[taskId].func = sub_80ADC84; + } +} + +void sub_80ADC84(u8 taskId) +{ + if (sub_80AFF28() != 0) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80ADCB4; + } +} + +void sub_80ADCB4(u8 taskId) +{ + sub_80B2184(); + gTasks[taskId].func = sub_80B237C; +} + +void sub_80ADCDC(u8 taskId) +{ + sub_80B2280(); + gTasks[taskId].func = sub_80ADD04; +} + +void sub_80ADD04(u8 taskId) +{ + REG_BG0CNT_BITFIELD.priority = 0; + REG_BG2CNT_BITFIELD.priority = 0; + if (++shared19204.unk19205 == 5) + { + gTasks[taskId].func = sub_80ADDA4; + } + else + { + sub_80B1B14(); + gTasks[taskId].func = sub_80ADD74; + } +} + +void sub_80ADD74(u8 taskId) +{ + if (!shared19204.unk1920A_6) + gTasks[taskId].func = sub_80ABB70; +} + +void sub_80ADDA4(u8 taskId) +{ + s32 i; + struct UnknownContestStruct1 *s; + + gUnknown_030042A0 = 0; + gUnknown_03004280 = 0; + for (i = 0; i < 4; i++) + gUnknown_02038680[i] = shared19260.unk19260[i].unk4; + sub_80AF668(); + sub_80AF138(); + s = &shared19260.unk19260[gContestPlayerMonIndex]; + sub_80BE23C(s->unk8); + gUnknown_03005D28 = gRngValue; + StringExpandPlaceholders(gStringVar4, gUnknown_083CB02C); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80ADE54; +} + +void sub_80ADE54(u8 taskId) +{ + if (sub_80037A0(&gMenuWindow) == 1) + { + sub_80B2184(); + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 160; + PlaySE12WithPanning(SE_C_MAKU_D, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80ADEAC; + } +} + +void sub_80ADEAC(u8 taskId) +{ + gUnknown_030041B4 -= 7; + if (gUnknown_030041B4 < 0) + gUnknown_030041B4 = 0; + if (*(u16 *)&gUnknown_030041B4 == 0) // Why cast? + { + gTasks[taskId].func = sub_80ADEEC; + gTasks[taskId].data[0] = 0; + } +} + +void sub_80ADEEC(u8 taskId) +{ + if (gTasks[taskId].data[0]++ >= 50) + { + gTasks[taskId].data[0] = 0; + if (gIsLinkContest & 1) + { + gTasks[taskId].func = sub_80ADF4C; + } + else + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80ADFD8; + } + } +} + +void sub_80ADF4C(u8 taskId) +{ + u8 taskId2 = CreateTask(sub_80C8AD0, 0); + + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8AD0, sub_80ADF98); + gTasks[taskId].func = nullsub_89; + sub_80AF860(); + sub_80AFFE0(0); +} + +void sub_80ADF98(u8 taskId) +{ + DestroyTask(taskId); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[shared19204.unk1920C].func = sub_80ADFD8; +} + +void sub_80ADFD8(u8 taskId) +{ + if (!gPaletteFade.active) + { + DestroyTask(taskId); + gFieldCallback = sub_80AE010; + SetMainCallback2(c2_exit_to_overworld_2_switch); + } +} + +void sub_80AE010(void) +{ + // Why disable and re-enable again? + ScriptContext2_Disable(); + EnableBothScriptContexts(); +} + +void sub_80AE020(u8 *a, s32 b) +{ + while (1) + { + if (*a == EOS) + break; + if (*a == EXT_CTRL_CODE_BEGIN && *(a + 1) == 0) + { + u8 *end; + + end = ConvertIntToDecimalStringN(a, b, 0, 1); + *end = EOS; // ConvertIntToDecimalStringN already does this. + StringAppend(end, a + 2); + break; + } + a++; + } +} + +void sub_80AE054(void) +{ + if (!(gIsLinkContest & 1)) + gContestPlayerMonIndex = 3; +} + +bool8 sub_80AE074(void) +{ + if (gContestPlayerMonIndex == gUnknown_0203869B) + return TRUE; + else + return FALSE; +} + +// CreateContestMon +void sub_80AE098(u8 a) +{ + u8 name[20]; + u16 heldItem; + s16 cool; + s16 beauty; + s16 cute; + s16 smart; + s16 tough; + + StringCopy(name, gSaveBlock2.playerName); + StripExtCtrlCodes(name); + if (gIsLinkContest & 1) + { + u8 temp = name[5]; + + name[5] = EOS; + name[7] = temp; + } + memcpy(gContestMons[gContestPlayerMonIndex].trainerName, name, 8); + if (gSaveBlock2.playerGender == MALE) + gContestMons[gContestPlayerMonIndex].unk15 = 0xD8; + else + gContestMons[gContestPlayerMonIndex].unk15 = 0xD9; + gContestMons[gContestPlayerMonIndex].unk18 = 0; + gContestMons[gContestPlayerMonIndex].unk2C = 0; + gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); + GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, name); + StringGetEnd10(name); + if (gIsLinkContest & 1) + { + StripExtCtrlCodes(name); + if (GetMonData(&gPlayerParty[a], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE) + { + name[5] = EOS; + name[10] = EXT_CTRL_CODE_BEGIN; + } + else + { + u8 temp = name[5]; + + name[5] = EOS; + name[10] = temp; + } + } + memcpy(gContestMons[gContestPlayerMonIndex].nickname, name, 11); + gContestMons[gContestPlayerMonIndex].cool = GetMonData(&gPlayerParty[a], MON_DATA_COOL); + gContestMons[gContestPlayerMonIndex].beauty = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY); + gContestMons[gContestPlayerMonIndex].cute = GetMonData(&gPlayerParty[a], MON_DATA_CUTE); + gContestMons[gContestPlayerMonIndex].smart = GetMonData(&gPlayerParty[a], MON_DATA_SMART); + gContestMons[gContestPlayerMonIndex].tough = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH); + gContestMons[gContestPlayerMonIndex].sheen = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN); + gContestMons[gContestPlayerMonIndex].moves[0] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1); + gContestMons[gContestPlayerMonIndex].moves[1] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE2); + gContestMons[gContestPlayerMonIndex].moves[2] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE3); + gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE4); + gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); + gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); + + heldItem = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); + cool = gContestMons[gContestPlayerMonIndex].cool; + beauty = gContestMons[gContestPlayerMonIndex].beauty; + cute = gContestMons[gContestPlayerMonIndex].cute; + smart = gContestMons[gContestPlayerMonIndex].smart; + tough = gContestMons[gContestPlayerMonIndex].tough; + if (heldItem == ITEM_RED_SCARF) + cool += 20; + else if (heldItem == ITEM_BLUE_SCARF) + beauty += 20; + else if (heldItem == ITEM_PINK_SCARF) + cute += 20; + else if (heldItem == ITEM_GREEN_SCARF) + smart += 20; + else if (heldItem == ITEM_YELLOW_SCARF) + tough += 20; + if (cool > 255) + cool = 255; + if (beauty > 255) + beauty = 255; + if (cute > 255) + cute = 255; + if (smart > 255) + smart = 255; + if (tough > 255) + tough = 255; + gContestMons[gContestPlayerMonIndex].cool = cool; + gContestMons[gContestPlayerMonIndex].beauty = beauty; + gContestMons[gContestPlayerMonIndex].cute = cute; + gContestMons[gContestPlayerMonIndex].smart = smart; + gContestMons[gContestPlayerMonIndex].tough = tough; +} diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 0f77d2814..b99dfb831 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -18,7 +18,7 @@ #include "ewram.h" extern u8 gUnknown_0203856C; -extern u8 gUnknown_0203857D[][64]; +extern u8 gUnknown_0203857D[][64]; // TODO: This is actually part of gContestMons extern u16 gUnknown_02038670[]; extern u16 gUnknown_02038678[]; extern u16 gUnknown_02038680[]; -- cgit v1.2.3 From aafa9919cc7584dc30db3f5fd8b267759c47516e Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 17 Dec 2017 11:41:56 -0600 Subject: fix build --- src/contest.c | 15 +++------------ src/debug/matsuda_debug_menu.c | 12 +++--------- src/script_pokemon_util_80C4BF0.c | 18 +++++++++--------- 3 files changed, 15 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 2159ec68f..5f7bae53f 100644 --- a/src/contest.c +++ b/src/contest.c @@ -99,7 +99,7 @@ struct UnknownContestStruct1 u8 filler12; u8 unk13; u8 unk14; - u8 unk15_0:1; + u8 unk15_0:1; // Is this a bitfield or not? sub_80ABCDC says no. u8 unk15_1:3; u8 unk15_4:1; u8 unk15_5:1; @@ -850,14 +850,6 @@ void sub_80ABC70(u8 taskId) } } - -struct UnknownContestStruct2 -{ - u16 unk0[4]; - u8 filler8[56]; -}; -extern struct UnknownContestStruct2 gUnknown_0203858E[]; - extern const u8 gUnknown_083CA340[][4]; #ifdef NONMATCHING @@ -878,14 +870,13 @@ void sub_80ABCDC(u8 taskId) for (i = 0; i < 4; i++) { - u32 offset = i * 2 + gContestPlayerMonIndex * 64; - u16 r4 = *(u16 *)((u8 *)gUnknown_0203858E + offset); + u16 r4 = gContestMons[gContestPlayerMonIndex].moves[i]; u8 *r5 = sp8; if (shared19260.unk19260[gContestPlayerMonIndex].unk8 != 0 && sub_80B214C(gContestPlayerMonIndex) != 0 && AreMovesContestCombo(shared19260.unk19260[gContestPlayerMonIndex].unk8, r4) - && shared19260.unk19260[gContestPlayerMonIndex].unk15 & 0x10) + && shared19260.unk19260[gContestPlayerMonIndex].unk15_4) { r5 = StringCopy(sp8, gUnknownText_UnknownFormatting2); } diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index b99dfb831..b351784ba 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -18,7 +18,6 @@ #include "ewram.h" extern u8 gUnknown_0203856C; -extern u8 gUnknown_0203857D[][64]; // TODO: This is actually part of gContestMons extern u16 gUnknown_02038670[]; extern u16 gUnknown_02038678[]; extern u16 gUnknown_02038680[]; @@ -576,19 +575,14 @@ void sub_80AA280(u8 var) // no? FillWindowRect_DefaultPalette(&gMenuWindow, 0, 0, 0, 0x1E, 3); StringCopy(gSharedMem, gMatsudaDebugMenu_StartText); - StringAppend(gSharedMem, &gUnknown_0203857D[var][0]); + StringAppend(gSharedMem, gContestMons[var].trainerName); for (i = 0; i < 4; i++) { if (var == i) - { - sub_8003460(&gMenuWindow, gSharedMem, (10 * i + 2), gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); - } + sub_8003460(&gMenuWindow, gSharedMem, 10 * i + 2, gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); else - { - u8 *ptr = gUnknown_0203857D[i]; - sub_8003460(&gMenuWindow, ptr, (10 * i + 2), gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); - } + sub_8003460(&gMenuWindow, gContestMons[i].trainerName, 10 * i + 2, gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); } } diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 9d1aaa125..31065cb58 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -51,9 +51,9 @@ extern u16 gUnknown_02038678[]; void sub_80C4BF0(void) { - gSaveBlock1.vars[0x10] = gContestMons[0].unk16; - gSaveBlock1.vars[0x11] = gContestMons[1].unk16; - gSaveBlock1.vars[0x12] = gContestMons[2].unk16; + gSaveBlock1.vars[0x10] = gContestMons[0].unk15; + gSaveBlock1.vars[0x11] = gContestMons[1].unk15; + gSaveBlock1.vars[0x12] = gContestMons[2].unk15; } void sub_80C4C28(void) @@ -376,10 +376,10 @@ void ShowContestWinner(void) void sub_80C4F70(void) { - VarSet(0x4010, gContestMons[0].unk16); - VarSet(0x4011, gContestMons[1].unk16); - VarSet(0x4012, gContestMons[2].unk16); - VarSet(0x4013, gContestMons[3].unk16); + VarSet(0x4010, gContestMons[0].unk15); + VarSet(0x4011, gContestMons[1].unk15); + VarSet(0x4012, gContestMons[2].unk15); + VarSet(0x4013, gContestMons[3].unk15); } bool8 GiveMonArtistRibbon(void) @@ -421,8 +421,8 @@ void ShowContestEntryMonPic(void) MenuDrawTextWindow(left, top, 19, 13); species = gContestMons[gSpecialVar_0x8006].species; - var1 = gContestMons[gSpecialVar_0x8006].unk38; // v2 - var2 = gContestMons[gSpecialVar_0x8006].unk3C; // v3 + var1 = gContestMons[gSpecialVar_0x8006].personality; + var2 = gContestMons[gSpecialVar_0x8006].otId; taskId = CreateTask(sub_80C5190, 0x50); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = species; -- cgit v1.2.3 From 688ae64548d743a0f7bbed29511903c1695cb8b6 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 17 Dec 2017 16:15:30 -0600 Subject: decompile sub_80AE398 - sub_80AE9FC --- src/contest.c | 383 +++++++++++++++++++++++++++++++++++--- src/rom_8077ABC.c | 2 +- src/script_pokemon_util_80C4BF0.c | 14 +- 3 files changed, 367 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 5f7bae53f..483207d69 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1,5 +1,6 @@ #include "global.h" #include "constants/items.h" +#include "constants/map_objects.h" #include "constants/songs.h" #include "battle_anim.h" #include "contest.h" @@ -15,6 +16,7 @@ #include "overworld.h" #include "palette.h" #include "random.h" +#include "rom_8077ABC.h" #include "script.h" #include "sound.h" #include "sprite.h" @@ -164,6 +166,8 @@ struct Shared19260 #define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) #define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) +extern u16 gScriptContestCategory; +extern u16 gScriptContestRank; extern u8 gBattleMonForms[]; extern u8 gDisplayedStringBattle[]; extern u16 gBattleTypeFlags; @@ -189,9 +193,21 @@ extern u16 gUnknown_030042C4; extern u32 gUnknown_03005D28; extern u16 gUnknown_02038680[]; +extern u8 gUnknown_02038694; extern u8 gUnknown_02038696[]; extern u8 gUnknown_0203869B; - +extern u16 gUnknown_02038670[]; +extern struct SpriteTemplate gUnknown_02024E8C; + +#define gContestOpponents gUnknown_083C9408 +extern const struct ContestPokemon gContestOpponents[60]; +extern const u8 gUnknown_083CA308[][2]; +extern const u8 gUnknown_083CA310[][2]; +extern const struct CompressedSpriteSheet gUnknown_083CA4BC; +extern const struct SpriteTemplate gSpriteTemplate_83CA4A4; +extern const struct CompressedSpriteSheet gUnknown_083CA4C4; +extern const struct CompressedSpritePalette gUnknown_083CA4CC; +extern const struct SpriteTemplate gUnknown_083CA4D4; extern const u8 gUnknown_083CAF84[]; extern const u8 gUnknown_083CAFAE[]; extern const struct ContestMove gContestMoves[]; @@ -199,6 +215,7 @@ extern const u8 gUnknownText_UnknownFormatting2[]; extern const u8 gUnknownText_UnknownFormatting3[]; extern const u8 gUnknown_083CB02C[]; extern const u8 *const gUnknown_083CB2F0[]; +extern const u8 gUnknown_083CC59C[]; void sub_80AB350(void); void sub_80AB5D4(u8); @@ -251,9 +268,14 @@ void sub_80ADFD8(u8); void sub_80AE010(void); void sub_80AE020(u8 *, s32); bool8 sub_80AE074(void); +void sub_80AE5BC(u8); +void sub_80AE5D4(u8, u8); +void sub_80AE6CC(u8); +void sub_80AE6E4(u8, u8); u8 sub_80AE858(void); u8 sub_80AE8B4(void); -u8 sub_80AE9FC(); +u8 sub_80AE9FC(u16, u32, u32); +u8 sub_80AEB1C(u16); void sub_80AEB30(void); void sub_80AEBEC(u16); void sub_80AED58(void); @@ -303,6 +325,7 @@ void sub_80B2280(void); void sub_80B237C(u8); void sub_80B25E4(); u16 sub_80B2760(); +u16 sub_80B2778(u16); void sub_80B2790(); void sub_80B28CC(); void sub_80B28F0(); @@ -5187,8 +5210,8 @@ bool8 sub_80AE074(void) return FALSE; } -// CreateContestMon -void sub_80AE098(u8 a) +// CreatePlayerContestMon +void sub_80AE098(u8 index) { u8 name[20]; u16 heldItem; @@ -5209,18 +5232,18 @@ void sub_80AE098(u8 a) } memcpy(gContestMons[gContestPlayerMonIndex].trainerName, name, 8); if (gSaveBlock2.playerGender == MALE) - gContestMons[gContestPlayerMonIndex].unk15 = 0xD8; + gContestMons[gContestPlayerMonIndex].trainerGfxId = MAP_OBJ_GFX_LINK_BRENDAN; else - gContestMons[gContestPlayerMonIndex].unk15 = 0xD9; - gContestMons[gContestPlayerMonIndex].unk18 = 0; + gContestMons[gContestPlayerMonIndex].trainerGfxId = MAP_OBJ_GFX_LINK_MAY; + gContestMons[gContestPlayerMonIndex].flags = 0; gContestMons[gContestPlayerMonIndex].unk2C = 0; - gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); - GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, name); + gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[index], MON_DATA_SPECIES); + GetMonData(&gPlayerParty[index], MON_DATA_NICKNAME, name); StringGetEnd10(name); if (gIsLinkContest & 1) { StripExtCtrlCodes(name); - if (GetMonData(&gPlayerParty[a], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE) + if (GetMonData(&gPlayerParty[index], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE) { name[5] = EOS; name[10] = EXT_CTRL_CODE_BEGIN; @@ -5234,20 +5257,20 @@ void sub_80AE098(u8 a) } } memcpy(gContestMons[gContestPlayerMonIndex].nickname, name, 11); - gContestMons[gContestPlayerMonIndex].cool = GetMonData(&gPlayerParty[a], MON_DATA_COOL); - gContestMons[gContestPlayerMonIndex].beauty = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY); - gContestMons[gContestPlayerMonIndex].cute = GetMonData(&gPlayerParty[a], MON_DATA_CUTE); - gContestMons[gContestPlayerMonIndex].smart = GetMonData(&gPlayerParty[a], MON_DATA_SMART); - gContestMons[gContestPlayerMonIndex].tough = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH); - gContestMons[gContestPlayerMonIndex].sheen = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN); - gContestMons[gContestPlayerMonIndex].moves[0] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1); - gContestMons[gContestPlayerMonIndex].moves[1] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE2); - gContestMons[gContestPlayerMonIndex].moves[2] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE3); - gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE4); - gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); - gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); - - heldItem = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); + gContestMons[gContestPlayerMonIndex].cool = GetMonData(&gPlayerParty[index], MON_DATA_COOL); + gContestMons[gContestPlayerMonIndex].beauty = GetMonData(&gPlayerParty[index], MON_DATA_BEAUTY); + gContestMons[gContestPlayerMonIndex].cute = GetMonData(&gPlayerParty[index], MON_DATA_CUTE); + gContestMons[gContestPlayerMonIndex].smart = GetMonData(&gPlayerParty[index], MON_DATA_SMART); + gContestMons[gContestPlayerMonIndex].tough = GetMonData(&gPlayerParty[index], MON_DATA_TOUGH); + gContestMons[gContestPlayerMonIndex].sheen = GetMonData(&gPlayerParty[index], MON_DATA_SHEEN); + gContestMons[gContestPlayerMonIndex].moves[0] = GetMonData(&gPlayerParty[index], MON_DATA_MOVE1); + gContestMons[gContestPlayerMonIndex].moves[1] = GetMonData(&gPlayerParty[index], MON_DATA_MOVE2); + gContestMons[gContestPlayerMonIndex].moves[2] = GetMonData(&gPlayerParty[index], MON_DATA_MOVE3); + gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[index], MON_DATA_MOVE4); + gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[index], MON_DATA_PERSONALITY); + gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[index], MON_DATA_OT_ID); + + heldItem = GetMonData(&gPlayerParty[index], MON_DATA_HELD_ITEM); cool = gContestMons[gContestPlayerMonIndex].cool; beauty = gContestMons[gContestPlayerMonIndex].beauty; cute = gContestMons[gContestPlayerMonIndex].cute; @@ -5279,3 +5302,315 @@ void sub_80AE098(u8 a) gContestMons[gContestPlayerMonIndex].smart = smart; gContestMons[gContestPlayerMonIndex].tough = tough; } + +void sub_80AE398(u8 a, u8 b) +{ + s32 i; + u8 opponentsCount = 0; + u8 opponents[64]; + + sub_80AE054(); + + // Find all suitable opponents + for (i = 0; i < 60; i++) + { + if (b == gContestOpponents[i].unk1C_0) + { + if (a == 0 && gContestOpponents[i].unk1C_2) + opponents[opponentsCount++] = i; + else if (a == 1 && gContestOpponents[i].unk1C_3) + opponents[opponentsCount++] = i; + else if (a == 2 && gContestOpponents[i].unk1C_4) + opponents[opponentsCount++] = i; + else if (a == 3 && gContestOpponents[i].unk1C_5) + opponents[opponentsCount++] = i; + else if (a == 4 && gContestOpponents[i].unk1C_6) + opponents[opponentsCount++] = i; + } + } + opponents[opponentsCount] = 0xFF; + + // Choose three random opponents from the list + for (i = 0; i < 3; i++) + { + u16 rnd = Random() % opponentsCount; + s32 j; + + gContestMons[i] = gContestOpponents[opponents[rnd]]; + for (j = rnd; opponents[j] != 0xFF; j++) + opponents[j] = opponents[j + 1]; + opponentsCount--; + } + +#ifndef NONMATCHING + // Compiler, please put i in r5. Thanks. + asm(""::"r"(i)); + asm(""::"r"(i)); + asm(""::"r"(i)); + asm(""::"r"(i)); + asm(""::"r"(i)); +#endif + + sub_80AE098(gUnknown_02038694); +} + +// GetContestAvailability? +u8 sub_80AE47C(struct Pokemon *pkmn) +{ + u8 ribbon; + u8 retVal; + + if (GetMonData(pkmn, MON_DATA_IS_EGG)) + return 3; + if (GetMonData(pkmn, MON_DATA_HP) == 0) + return 4; + switch (gScriptContestCategory) + { + case 0: + ribbon = GetMonData(pkmn, MON_DATA_COOL_RIBBON); + break; + case 1: + ribbon = GetMonData(pkmn, MON_DATA_BEAUTY_RIBBON); + break; + case 2: + ribbon = GetMonData(pkmn, MON_DATA_CUTE_RIBBON); + break; + case 3: + ribbon = GetMonData(pkmn, MON_DATA_SMART_RIBBON); + break; + case 4: + ribbon = GetMonData(pkmn, MON_DATA_TOUGH_RIBBON); + break; + default: + return 0; + } + + // Couldn't get this to match any other way. + // Returns 2, 1, or 0 respectively if ribbon's rank is above, equal, or below + // the current contest rank. + if (ribbon > gScriptContestRank) + retVal = 2; + else if (ribbon >= gScriptContestRank) + retVal = 1; + else + retVal = 0; + return retVal; +} + +void sub_80AE514(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + FillWindowRect_DefaultPalette( + &gUnknown_03004210, + 0, + gUnknown_083CA308[gUnknown_02038696[i]][0], + gUnknown_083CA308[gUnknown_02038696[i]][1], + gUnknown_083CA310[gUnknown_02038696[i]][0] + 5, + gUnknown_083CA310[gUnknown_02038696[i]][1] + 1); + sub_80AE5BC(i); + sub_80AE6CC(i); + } +} + +u8 *sub_80AE598(u8 *dest, const u8 *b, u8 c) +{ + dest = StringCopy(dest, gUnknown_083CC59C); + *dest++ = c; + dest = StringCopy(dest, b); + return dest; +} + +void sub_80AE5BC(u8 a) +{ + sub_80AE5D4(a, a + 10); +} + +void sub_80AE5D4(u8 a, u8 b) +{ + u8 *str = gDisplayedStringBattle; + + str = sub_80AE598(str, gEmptyString_81E72B0, b); + str[0] = EXT_CTRL_CODE_BEGIN; + str[1] = 6; + str[2] = 4; + str += 3; + *str++ = CHAR_SLASH; + + if ((gIsLinkContest & 1) && gLinkPlayers[a].language == LANGUAGE_JAPANESE) + { + StringCopy(str, gLinkPlayers[a].name); + sub_8004D04( + &gUnknown_03004210, + gDisplayedStringBattle, + 592 + gUnknown_02038696[a] * 22, + 251 + gUnknown_083CA310[gUnknown_02038696[a]][0] * 8, + gUnknown_083CA310[gUnknown_02038696[a]][1] * 8, + 1); + } + else + { + StringCopy(str, gContestMons[a].trainerName); + sub_8003460( + &gUnknown_03004210, + gDisplayedStringBattle, + 592 + gUnknown_02038696[a] * 22, + gUnknown_083CA310[gUnknown_02038696[a]][0], + gUnknown_083CA310[gUnknown_02038696[a]][1]); + } +} + +void sub_80AE6CC(u8 a) +{ + sub_80AE6E4(a, a + 10); +} + +void sub_80AE6E4(u8 a, u8 b) +{ + u8 *str = gDisplayedStringBattle; + + str[0] = EXT_CTRL_CODE_BEGIN; + str[1] = 6; + str[2] = 4; + str += 3; + + str = sub_80AE598(str, gContestMons[a].nickname, b); + *str = EOS; + + sub_8004D04( + &gUnknown_03004210, + gDisplayedStringBattle, + 512 + gUnknown_02038696[a] * 20, + 253 + gUnknown_083CA308[gUnknown_02038696[a]][0] * 8, + gUnknown_083CA308[gUnknown_02038696[a]][1] * 8, + 1); +} + +u16 sub_80AE770(u8 a, u8 b) +{ + u8 r5; + u8 r4; + u8 r3; + + switch (b) + { + case 0: + r5 = gContestMons[a].cool; + r4 = gContestMons[a].tough; + r3 = gContestMons[a].beauty; + break; + case 1: + r5 = gContestMons[a].beauty; + r4 = gContestMons[a].cool; + r3 = gContestMons[a].cute; + break; + case 2: + r5 = gContestMons[a].cute; + r4 = gContestMons[a].beauty; + r3 = gContestMons[a].smart; + break; + case 3: + r5 = gContestMons[a].smart; + r4 = gContestMons[a].cute; + r3 = gContestMons[a].tough; + break; + case 4: + default: + r5 = gContestMons[a].tough; + r4 = gContestMons[a].smart; + r3 = gContestMons[a].cool; + break; + } + return r5 + (r4 + r3 + gContestMons[a].sheen) / 2; +} + +void sub_80AE82C(u8 a) +{ + u8 i; + + for (i = 0; i < 4; i++) + gUnknown_02038670[i] = sub_80AE770(i, a); +} + +u8 sub_80AE858(void) +{ + u8 spriteId; + + LoadCompressedObjectPic(&gUnknown_083CA4BC); + LoadCompressedPalette(gContest2Pal, 0x110, 32); + spriteId = CreateSprite(&gSpriteTemplate_83CA4A4, 112, 36, 30); + gSprites[spriteId].oam.paletteNum = 1; + gSprites[spriteId].callback = SpriteCallbackDummy; + return spriteId; +} + +u8 sub_80AE8B4(void) +{ + u8 spriteId; + + LoadCompressedObjectPic(&gUnknown_083CA4C4); + LoadCompressedObjectPalette(&gUnknown_083CA4CC); + spriteId = CreateSprite(&gUnknown_083CA4D4, 96, 10, 29); + gSprites[spriteId].invisible = TRUE; + gSprites[spriteId].data[0] = gSprites[spriteId].oam.tileNum; + return spriteId; +} + +u8 unref_sub_80AE908(void) +{ + u16 species = gContestMons[gContestPlayerMonIndex].species; + u8 spriteId; + + DecompressPicFromTable_2( + &gMonFrontPicTable[species], + gMonFrontPicCoords[species].coords, + gMonFrontPicCoords[species].y_offset, + (void *)0x02000000, + gUnknown_081FAF4C[1], + species); + LoadCompressedPalette(gMonPaletteTable[species].data, 0x110, 32); + GetMonSpriteTemplate_803C56C(gContestMons[gContestPlayerMonIndex].species, 1); + spriteId = CreateSprite( + &gUnknown_02024E8C, + 112, 80 + (8 - gMonFrontPicCoords[gContestMons[gContestPlayerMonIndex].species].coords) * 4, + 30); + gSprites[spriteId].oam.paletteNum = 1; + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E7C18; + StartSpriteAffineAnim(&gSprites[spriteId], 0); + return spriteId; +} + +u8 sub_80AE9FC(u16 species, u32 otId, u32 personality) +{ + const u8 *lzPaletteData; + u8 spriteId; + + species = sub_80B2778(species); + HandleLoadSpecialPokePic( + &gMonBackPicTable[species], + gMonBackPicCoords[species].coords, + gMonBackPicCoords[species].y_offset, + 0x02000000, + gUnknown_081FAF4C[0], + species, + personality); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personality); + LoadCompressedPalette(lzPaletteData, 0x120, 32); + GetMonSpriteTemplate_803C56C(species, 0); + spriteId = CreateSprite(&gUnknown_02024E8C, 112, sub_8077E44(2, species, 0), 30); + gSprites[spriteId].oam.paletteNum = 2; + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].subpriority = sub_8079E90(2); + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum; + gSprites[spriteId].data[2] = species; + if (sub_80AEB1C(species) != 0) + gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E7C18; + else + gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E7BEC; + StartSpriteAffineAnim(&gSprites[spriteId], 0); + return spriteId; +} diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 42f360b69..165e5e308 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -1742,7 +1742,7 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, sprite = CreateSprite(&gSpriteTemplate_837F5B0[a3], a4, a5 + gMonBackPicCoords[species].y_offset, a6); } if (NotInBattle()) { - gSprites[sprite].affineAnims = &gSpriteAffineAnimTable_81E7C18; + gSprites[sprite].affineAnims = gSpriteAffineAnimTable_81E7C18; StartSpriteAffineAnim(&gSprites[sprite], 0); } return sprite; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 31065cb58..dc48adc9b 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -51,9 +51,9 @@ extern u16 gUnknown_02038678[]; void sub_80C4BF0(void) { - gSaveBlock1.vars[0x10] = gContestMons[0].unk15; - gSaveBlock1.vars[0x11] = gContestMons[1].unk15; - gSaveBlock1.vars[0x12] = gContestMons[2].unk15; + gSaveBlock1.vars[0x10] = gContestMons[0].trainerGfxId; + gSaveBlock1.vars[0x11] = gContestMons[1].trainerGfxId; + gSaveBlock1.vars[0x12] = gContestMons[2].trainerGfxId; } void sub_80C4C28(void) @@ -376,10 +376,10 @@ void ShowContestWinner(void) void sub_80C4F70(void) { - VarSet(0x4010, gContestMons[0].unk15); - VarSet(0x4011, gContestMons[1].unk15); - VarSet(0x4012, gContestMons[2].unk15); - VarSet(0x4013, gContestMons[3].unk15); + VarSet(0x4010, gContestMons[0].trainerGfxId); + VarSet(0x4011, gContestMons[1].trainerGfxId); + VarSet(0x4012, gContestMons[2].trainerGfxId); + VarSet(0x4013, gContestMons[3].trainerGfxId); } bool8 GiveMonArtistRibbon(void) -- cgit v1.2.3 From 6415654584a586f48ede7e9e6f6de39b8c6ac9f0 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 17 Dec 2017 18:25:16 -0600 Subject: decompile sub_80AEB1C - sub_80AEFE8 --- src/contest.c | 280 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 273 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 483207d69..b7b37faae 100644 --- a/src/contest.c +++ b/src/contest.c @@ -2,6 +2,7 @@ #include "constants/items.h" #include "constants/map_objects.h" #include "constants/songs.h" +#include "constants/species.h" #include "battle_anim.h" #include "contest.h" #include "contest_link_80C857C.h" @@ -93,10 +94,11 @@ struct UnknownContestStruct1 u8 unkC_2:1; */ u8 unkC; - u8 fillerD; + s8 unkD; u8 unkE; u8 fillerF; - u8 unk10; // maybe a bitfield + u8 unk10_0:4; + u8 unk10_4:2; // definitely a bitfield u8 unk11; u8 filler12; u8 unk13; @@ -216,6 +218,8 @@ extern const u8 gUnknownText_UnknownFormatting3[]; extern const u8 gUnknown_083CB02C[]; extern const u8 *const gUnknown_083CB2F0[]; extern const u8 gUnknown_083CC59C[]; +extern const u8 gUnknown_083CC5A2[]; +extern const u8 *const gContestEffectStrings[]; void sub_80AB350(void); void sub_80AB5D4(u8); @@ -268,6 +272,7 @@ void sub_80ADFD8(u8); void sub_80AE010(void); void sub_80AE020(u8 *, s32); bool8 sub_80AE074(void); +void sub_80AEB4C(void *); void sub_80AE5BC(u8); void sub_80AE5D4(u8, u8); void sub_80AE6CC(u8); @@ -275,11 +280,11 @@ void sub_80AE6E4(u8, u8); u8 sub_80AE858(void); u8 sub_80AE8B4(void); u8 sub_80AE9FC(u16, u32, u32); -u8 sub_80AEB1C(u16); +bool8 sub_80AEB1C(u16); void sub_80AEB30(void); void sub_80AEBEC(u16); void sub_80AED58(void); -u8 sub_80AEE54(u8, u8); +bool8 sub_80AEE54(u8, u8); u8 sub_80AF038(u8); void sub_80AF120(void); void sub_80AF138(void); @@ -1605,7 +1610,7 @@ void sub_80AC2CC(u8 taskId) return; case 37: //_080ACA44 - if (sub_80AEE54(r7, 1) != 0) + if (sub_80AEE54(r7, 1)) { gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 38; @@ -1718,7 +1723,7 @@ void sub_80AC2CC(u8 taskId) //_080ACC98 for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) ; - if (sub_80AEE54(r6, 1) != 0) + if (sub_80AEE54(r6, 1)) { gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 40; @@ -5607,10 +5612,271 @@ u8 sub_80AE9FC(u16 species, u32 otId, u32 personality) gSprites[spriteId].callback = SpriteCallbackDummy; gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum; gSprites[spriteId].data[2] = species; - if (sub_80AEB1C(species) != 0) + if (sub_80AEB1C(species)) gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E7C18; else gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E7BEC; StartSpriteAffineAnim(&gSprites[spriteId], 0); return spriteId; } + +bool8 sub_80AEB1C(u16 species) +{ + if (species == SPECIES_UNOWN) + return FALSE; + else + return TRUE; +} + +void sub_80AEB30(void) +{ + sub_80AEB4C((void *)(VRAM + 0xC000)); + sub_80AEB4C((void *)(VRAM + 0xE000)); +} + +void sub_80AEB4C(void *a) +{ + void *src = a; + void *dest = (u8 *)a + 0x500; + DmaCopy16(3, src, dest, 0x280); +} + +u16 sub_80AEB68(u16 a, u8 b) +{ + u16 var; + + switch (gContestEffects[gContestMoves[a].effect].effectType) + { + case 0: + case 1: + case 8: + var = 0x9082; + break; + case 2: + case 3: + var = 0x9088; + break; + default: + var = 0x9086; + break; + } + var += 0x9000 + (b << 12); + return var; +} + +void sub_80AEBEC(u16 a) +{ + u8 category; + u16 categoryTile; + s32 i; + u8 numHearts; + + FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 11, 31, 16, 34); + + category = gContestMoves[a].contestCategory; + if (category == 0) + categoryTile = 0x4040; + else if (category == 1) + categoryTile = 0x4045; + else if (category == 2) + categoryTile = 0x404A; + else if (category == 3) + categoryTile = 0x406A; + else + categoryTile = 0x408A; + + for (i = 0; i < 5; i++) + { + *(u16 *)(VRAM + 0xC7D6 + i * 2) = categoryTile; + *(u16 *)(VRAM + 0xC816 + i * 2) = categoryTile + 16; + categoryTile++; + } + + if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF) + numHearts = 0; + else + numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10; + if (numHearts > 8) + numHearts = 8; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + *(u16 *)(VRAM + 0xC7EA + i * 2) = 0x5012; + else + *(u16 *)(VRAM + 0xC7EA + i * 2) = 0x5035; + } + + if (gContestEffects[gContestMoves[a].effect].jam == 0xFF) + numHearts = 0; + else + numHearts = gContestEffects[gContestMoves[a].effect].jam / 10; + if (numHearts > 8) + numHearts = 8; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + *(u16 *)(VRAM + 0xC82A + i * 2) = 0x5014; + else + *(u16 *)(VRAM + 0xC82A + i * 2) = 0x5036; + } + + sub_8003460(&gUnknown_03004210, gContestEffectStrings[gContestMoves[a].effect], 868, 11, 35); + sub_8003460(&gUnknown_03004210, gUnknown_083CC5A2, 866, 16, 31); +} + +void sub_80AED58(void) +{ + FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 11, 35, 28, 40); +} + +// unused +void sub_80AED7C(u16 a, u8 b) +{ + u8 r5 = gUnknown_02038696[b] * 5 + 2; + + if (sub_80AF59C(b) == 0 && a != 0) + { + u16 tile = sub_80AEB68(a, b); + + *(u16 *)(VRAM + 0xC028 + r5 * 64) = tile; + *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = tile + 1; + + *(u16 *)(VRAM + 0xC068 + r5 * 64) = tile + 16; + *(u16 *)(VRAM + 0xC068 + r5 * 64 + 2) = tile + 17; + + } + else + { + *(u16 *)(VRAM + 0xC028 + r5 * 64) = 0; + *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = 0; + + *(u16 *)(VRAM + 0xC068 + r5 * 64) = 0; + *(u16 *)(VRAM + 0xC068 + r5 * 64 + 2) = 0; + } +} + +void unref_sub_80AEE20(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[i]; + + sub_80AED7C(s->unk6, i); + } +} + +u16 sub_80AEE4C(u8 unused) +{ + return 0x2034; +} + +bool8 sub_80AEE54(u8 a, u8 b) +{ + struct UnknownContestStruct1 *s = &shared19260.unk19260[a]; + u8 r9; + u16 r8; + s32 r4; + + if (s->unk10_4 == 0) + return FALSE; + r9 = gUnknown_02038696[a] * 5 + 2; + if (s->unk10_4 == 1) + { + struct UnknownContestStruct1 *r5; + + r8 = sub_80AEE4C(a); + r4 = 0; + while (1) + { + r5 = &shared19260.unk19260[a]; + if (r5->unkD / 10 <= r4) + break; + *(u16 *)(VRAM + 0xC026 + (r9 + r4) * 64) = r8; + r4++; + } + if (b != 0) + { + PlaySE(SE_EXPMAX); + r5->unk10_4 = 0; + } + } + else + { + struct UnknownContestStruct1 *r5; + + r8 = 0; + r4 = 3; + while (1) + { + r5 = &shared19260.unk19260[a]; + if (r5->unkD / 10 >= r4) + break; + *(u16 *)(VRAM + 0xBFE6 + (r9 + r4) * 64) = r8; + r4--; + } + if (b != 0) + { + PlaySE(SE_FU_ZAKU2); + r5->unk10_4 = 0; + } + } + return TRUE; +} + +void sub_80AEF50(void) +{ + s32 i; + s32 r4; + + for (i = 0; i < 4; i++) + { + struct UnknownContestStruct1 *s; + u8 r8 = gUnknown_02038696[i] * 5 + 2; + u16 r6 = sub_80AEE4C(i); + + r4 = 0; + while (1) + { + s = &shared19260.unk19260[i]; + if (r4 >= s->unkD / 10) + break; + *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6; + r4++; + } + r6 = 0; + while (r4 < 3) + { + *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6; + r4++; + } + } +} + +u16 sub_80AEFE8(int unused, u8 b) +{ + u16 var = 0; + + switch (b) + { + case 0: + var = 0x80; + break; + case 1: + var = 0x84; + break; + case 2: + var = 0x86; + break; + case 3: + var = 0x88; + break; + case 4: + var = 0x82; + break; + } + var += 0x9000; + return var; +} + -- cgit v1.2.3 From d1a7e101bf8fc3ceb80e339cdec32682c2ff4ffe Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 17 Dec 2017 20:41:11 -0600 Subject: match some functions in contest.c --- src/contest.c | 3664 +++++---------------------------------------------------- 1 file changed, 297 insertions(+), 3367 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index b7b37faae..c4fd99e32 100644 --- a/src/contest.c +++ b/src/contest.c @@ -47,18 +47,14 @@ struct Shared19204 /*0x19204*/ u8 unk19204; /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; -#if 1 - /*0x1920A*/ u16 unk1920A_0:4; // probably a bitfield + /*0x1920A*/ u16 unk1920A_0:4; u16 unk1920A_4:1; u16 unk1920A_5:1; u16 unk1920A_6:1; - u16 unk1920A_7:2; + u16 unk1920A_7:1; + /*0x1920B*/ u16 unk1920B_0:1; u16 unk1920B_1:1; - u16 unk1920B_2:1; // definitely a bitfield -#else - /*0x1920A*/ u8 unk1920A; - /*0x1920B*/ u8 unk1920B; -#endif + u16 unk1920B_2:1; /*0x1920C*/ u8 unk1920C; /*0x1920D*/ u8 filler1920D[0x14-0xD]; /*0x19214*/ u8 unk19214; @@ -133,6 +129,7 @@ struct UnknownContestStruct4 u8 filler3; }; +/* struct UnknownContestStruct5_alt { u8 bits_0; @@ -140,6 +137,7 @@ struct UnknownContestStruct5_alt s8 unk2; u8 filler3; }; +*/ struct UnknownContestStruct5 { @@ -168,6 +166,13 @@ struct Shared19260 #define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) #define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) +// These are separate structs because sub_80AC2CC requires that to match. +#define shared19260_ ((struct UnknownContestStruct1 *)(gSharedMem + 0x19260)) +#define shared192D0 (gSharedMem + 0x192D0) +#define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328)) +#define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338)) +#define shared19348 ((struct UnknownContestStruct3 *)(gSharedMem + 0x19348)) + extern u16 gScriptContestCategory; extern u16 gScriptContestRank; extern u8 gBattleMonForms[]; @@ -212,6 +217,22 @@ extern const struct CompressedSpritePalette gUnknown_083CA4CC; extern const struct SpriteTemplate gUnknown_083CA4D4; extern const u8 gUnknown_083CAF84[]; extern const u8 gUnknown_083CAFAE[]; +extern const u8 gUnknown_083CAFD7[]; +extern const u8 gUnknown_083CB00D[]; +extern const u8 gUnknown_083CBD52[]; +extern const u8 gUnknown_083CBD79[]; +extern const u8 gUnknown_083CBD9D[]; +extern const u8 gUnknown_083CBDC6[]; +extern const u8 gUnknown_083CBF60[]; +extern const u8 gUnknown_083CC075[]; +extern const u8 gUnknown_083CC0A0[]; +extern const u8 gUnknown_083CC0BC[]; +extern const u8 gUnknown_083CC0E3[]; +extern const u8 gUnknown_083CC103[]; +extern const u8 gUnknown_083CC14A[]; +extern const u8 gUnknown_083CC16E[]; +extern const u8 *const gUnknown_083CC2D8[]; +extern const u8 *const gUnknown_083CC330[]; extern const struct ContestMove gContestMoves[]; extern const u8 gUnknownText_UnknownFormatting2[]; extern const u8 gUnknownText_UnknownFormatting3[]; @@ -221,6 +242,7 @@ extern const u8 gUnknown_083CC59C[]; extern const u8 gUnknown_083CC5A2[]; extern const u8 *const gContestEffectStrings[]; + void sub_80AB350(void); void sub_80AB5D4(u8); void sub_80AB604(u8); @@ -418,7 +440,7 @@ void sub_80AB350(void) } // Can't figure out whether bitfields were used or not -/* +#ifdef NONMATCHING void sub_80AB398(void) { s32 i; @@ -430,9 +452,14 @@ void sub_80AB398(void) memset(&shared19260.unk19260[i], 0, sizeof(shared19260.unk19260[i])); for (i = 0; i < 4; i++) { + /* shared19260.unk19260[i].unkB &= ~3; shared19260.unk19260[i].unk13 = 0xFF; shared19260.unk19260[i].unk14 = 0xFF; + */ + shared19260_[i].unkB &= ~3; + shared19260_[i].unk13 = 0xFF; + shared19260_[i].unk14 = 0xFF; } memset(&shared19260.unk192D0, 0, sizeof(shared19260.unk192D0)); memset(&shared19260.unk192E4, 0, sizeof(shared19260.unk192E4)); @@ -447,8 +474,7 @@ void sub_80AB398(void) } sub_80B159C(); } -*/ - +#else __attribute__((naked)) void sub_80AB398(void) { @@ -562,6 +588,7 @@ _080AB474: .4byte gIsLinkContest\n\ _080AB478: .4byte gUnknown_02038696\n\ .syntax divided\n"); } +#endif void sub_80AB47C(void) { @@ -797,7 +824,6 @@ void sub_80AB9A0(u8 taskId) case 4: default: if (shared19204.unk1920A_6) - //if (shared19204.unk1920A & 0x40) break; gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; @@ -880,7 +906,6 @@ void sub_80ABC70(u8 taskId) extern const u8 gUnknown_083CA340[][4]; -#ifdef NONMATCHING void sub_80ABCDC(u8 taskId) { u8 i; @@ -901,16 +926,16 @@ void sub_80ABCDC(u8 taskId) u16 r4 = gContestMons[gContestPlayerMonIndex].moves[i]; u8 *r5 = sp8; - if (shared19260.unk19260[gContestPlayerMonIndex].unk8 != 0 + if (shared19260_[gContestPlayerMonIndex].unk8 != 0 && sub_80B214C(gContestPlayerMonIndex) != 0 - && AreMovesContestCombo(shared19260.unk19260[gContestPlayerMonIndex].unk8, r4) - && shared19260.unk19260[gContestPlayerMonIndex].unk15_4) + && AreMovesContestCombo(shared19260_[gContestPlayerMonIndex].unk8, r4) + && shared19260_[gContestPlayerMonIndex].unk15_4) { r5 = StringCopy(sp8, gUnknownText_UnknownFormatting2); } //_080ABDA0 else if (r4 != 0 - && shared19260.unk19260[gContestPlayerMonIndex].unk8 == r4 + && shared19260_[gContestPlayerMonIndex].unk8 == r4 && gContestMoves[r4].effect != 3) { r5 = StringCopy(sp8, gUnknownText_UnknownFormatting3); @@ -932,216 +957,6 @@ void sub_80ABCDC(u8 taskId) sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.unk19204]); gTasks[taskId].func = sub_80ABEA0; } -#else -__attribute__((naked)) -void sub_80ABCDC(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x2C\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x28]\n\ - ldr r0, _080ABD80 @ =gUnknown_030042A0\n\ - movs r1, 0xA0\n\ - strh r1, [r0]\n\ - ldr r0, _080ABD84 @ =gUnknown_03004280\n\ - strh r1, [r0]\n\ - ldr r5, _080ABD88 @ =gUnknown_03004210\n\ - ldr r4, _080ABD8C @ =gUnknown_083CA340\n\ - ldrb r2, [r4]\n\ - ldrb r3, [r4, 0x1]\n\ - ldrb r0, [r4, 0x2]\n\ - str r0, [sp]\n\ - ldrb r0, [r4, 0x3]\n\ - str r0, [sp, 0x4]\n\ - adds r0, r5, 0\n\ - movs r1, 0\n\ - bl FillWindowRect_DefaultPalette\n\ - movs r6, 0\n\ - ldr r0, _080ABD90 @ =gContestPlayerMonIndex\n\ - mov r8, r0\n\ - ldr r7, _080ABD94 @ =gSharedMem + 0x19260\n\ - mov r9, r5\n\ - mov r10, r4\n\ -_080ABD1C:\n\ - lsls r1, r6, 1\n\ - mov r3, r8\n\ - ldrb r2, [r3]\n\ - lsls r0, r2, 6\n\ - adds r1, r0\n\ - ldr r0, _080ABD98 @ =gUnknown_0203858E\n\ - adds r1, r0\n\ - ldrh r4, [r1]\n\ - add r5, sp, 0x8\n\ - lsls r0, r2, 3\n\ - subs r0, r2\n\ - lsls r0, 2\n\ - adds r0, r7\n\ - ldrh r0, [r0, 0x8]\n\ - cmp r0, 0\n\ - beq _080ABDA0\n\ - adds r0, r2, 0\n\ - bl sub_80B214C\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080ABDA0\n\ - mov r2, r8\n\ - ldrb r1, [r2]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - lsls r0, 2\n\ - adds r0, r7\n\ - ldrh r0, [r0, 0x8]\n\ - adds r1, r4, 0\n\ - bl AreMovesContestCombo\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080ABDA0\n\ - mov r3, r8\n\ - ldrb r1, [r3]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - lsls r0, 2\n\ - adds r0, r7\n\ - ldrb r1, [r0, 0x15]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080ABDA0\n\ - add r0, sp, 0x8\n\ - ldr r1, _080ABD9C @ =gUnknownText_UnknownFormatting2\n\ - b _080ABDC6\n\ - .align 2, 0\n\ -_080ABD80: .4byte gUnknown_030042A0\n\ -_080ABD84: .4byte gUnknown_03004280\n\ -_080ABD88: .4byte gUnknown_03004210\n\ -_080ABD8C: .4byte gUnknown_083CA340\n\ -_080ABD90: .4byte gContestPlayerMonIndex\n\ -_080ABD94: .4byte gSharedMem + 0x19260\n\ -_080ABD98: .4byte gUnknown_0203858E\n\ -_080ABD9C: .4byte gUnknownText_UnknownFormatting2\n\ -_080ABDA0:\n\ - cmp r4, 0\n\ - beq _080ABDCC\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - lsls r1, r0, 3\n\ - subs r1, r0\n\ - lsls r1, 2\n\ - adds r1, r7\n\ - ldrh r0, [r1, 0x8]\n\ - cmp r0, r4\n\ - bne _080ABDCC\n\ - ldr r0, _080ABE74 @ =gContestMoves\n\ - lsls r1, r4, 3\n\ - adds r1, r0\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x3\n\ - beq _080ABDCC\n\ - add r0, sp, 0x8\n\ - ldr r1, _080ABE78 @ =gUnknownText_UnknownFormatting3\n\ -_080ABDC6:\n\ - bl StringCopy\n\ - adds r5, r0, 0\n\ -_080ABDCC:\n\ - movs r0, 0xD\n\ - adds r1, r4, 0\n\ - muls r1, r0\n\ - ldr r0, _080ABE7C @ =gMoveNames\n\ - adds r1, r0\n\ - adds r0, r5, 0\n\ - bl StringCopy\n\ - lsls r1, r6, 2\n\ - adds r2, r1, r6\n\ - lsls r2, 18\n\ - movs r3, 0xC2\n\ - lsls r3, 18\n\ - adds r2, r3\n\ - lsrs r2, 16\n\ - mov r3, r10\n\ - adds r0, r1, r3\n\ - ldrb r3, [r0]\n\ - lsls r3, 3\n\ - adds r3, 0x4\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - ldr r0, _080ABE80 @ =gUnknown_083CA340 + 0x1\n\ - adds r1, r0\n\ - ldrb r0, [r1]\n\ - lsls r0, 3\n\ - str r0, [sp]\n\ - movs r0, 0x1\n\ - str r0, [sp, 0x4]\n\ - mov r0, r9\n\ - add r1, sp, 0x8\n\ - bl sub_8002E4C\n\ - mov r0, r9\n\ - bl sub_8002F44\n\ - adds r0, r6, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - cmp r6, 0x3\n\ - bhi _080ABE20\n\ - b _080ABD1C\n\ -_080ABE20:\n\ - ldr r1, _080ABE84 @ =0x0000ffff\n\ - ldr r3, _080ABE88 @ =0x00002d9f\n\ - movs r0, 0x48\n\ - str r0, [sp]\n\ - movs r0, 0\n\ - movs r2, 0xC\n\ - bl sub_814A5C0\n\ - ldr r4, _080ABE8C @ =gSharedMem + 0x19204\n\ - movs r0, 0\n\ - ldrsb r0, [r4, r0]\n\ - bl sub_80AC0AC\n\ - ldr r2, _080ABE90 @ =gContestMons\n\ - ldrb r1, [r4]\n\ - lsls r1, 1\n\ - ldr r0, _080ABE94 @ =gContestPlayerMonIndex\n\ - ldrb r0, [r0]\n\ - lsls r0, 6\n\ - adds r1, r0\n\ - adds r2, 0x1E\n\ - adds r1, r2\n\ - ldrh r0, [r1]\n\ - bl sub_80AEBEC\n\ - ldr r1, _080ABE98 @ =gTasks\n\ - ldr r2, [sp, 0x28]\n\ - lsls r0, r2, 2\n\ - adds r0, r2\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldr r1, _080ABE9C @ =sub_80ABEA0\n\ - str r1, [r0]\n\ - add sp, 0x2C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080ABE74: .4byte gContestMoves\n\ -_080ABE78: .4byte gUnknownText_UnknownFormatting3\n\ -_080ABE7C: .4byte gMoveNames\n\ -_080ABE80: .4byte gUnknown_083CA340 + 0x1\n\ -_080ABE84: .4byte 0x0000ffff\n\ -_080ABE88: .4byte 0x00002d9f\n\ -_080ABE8C: .4byte gSharedMem + 0x19204\n\ -_080ABE90: .4byte gContestMons\n\ -_080ABE94: .4byte gContestPlayerMonIndex\n\ -_080ABE98: .4byte gTasks\n\ -_080ABE9C: .4byte sub_80ABEA0\n\ - .syntax divided\n"); -} -#endif void sub_80ABEA0(u8 taskId) { @@ -1232,10 +1047,9 @@ void sub_80AC0C8(u8 taskId) if (gIsLinkContest & 1) { u16 var = sub_80AF15C(gContestPlayerMonIndex); - struct UnknownContestStruct1 *s = &shared19260.unk19260[gContestPlayerMonIndex]; u8 taskId2; - s->unk6 = var; + shared19260_[gContestPlayerMonIndex].unk6 = var; taskId2 = CreateTask(sub_80C8A38, 0); SetTaskFuncWithFollowupFunc(taskId2, sub_80C8A38, sub_80AC15C); gTasks[taskId].func = nullsub_89; @@ -1305,47 +1119,26 @@ void sub_80AC284(u8 taskId) } } -extern const u8 gUnknown_083CAFD7[]; -extern const u8 gUnknown_083CB00D[]; -extern const u8 gUnknown_083CBD52[]; -extern const u8 gUnknown_083CBD79[]; -extern const u8 gUnknown_083CBD9D[]; -extern const u8 gUnknown_083CBDC6[]; -extern const u8 gUnknown_083CBF60[]; -extern const u8 gUnknown_083CC075[]; -extern const u8 gUnknown_083CC0A0[]; -extern const u8 gUnknown_083CC0BC[]; -extern const u8 gUnknown_083CC0E3[]; -extern const u8 gUnknown_083CC103[]; -extern const u8 gUnknown_083CC14A[]; -extern const u8 gUnknown_083CC16E[]; -extern const u8 *const gUnknown_083CC2D8[]; -extern const u8 *const gUnknown_083CC330[]; - -#ifdef NONMATCHING void sub_80AC2CC(u8 taskId) { - u8 spriteId; // r5 + u8 spriteId; s32 r6; u8 r7 = shared19204.unk19215; + s8 r4; switch (gTasks[taskId].data[0]) { case 0: - //_080AC404 sub_80B0D7C(); - // had to write the array index like this to match - for (r6 = 0; shared19204.unk19214 != r6[shared19260.unk192D0]; r6++) + for (r6 = 0; shared19204.unk19214 != shared192D0[r6]; r6++) ; - //_080AC42C shared19204.unk19215 = r6; - r7 = shared19204.unk19215; // is r7 actually a variable? + r7 = shared19204.unk19215; if (gIsLinkContest & 1) { u8 taskId2; - //shared19204.unk1920B_2 = 1; - shared19204.unk1920B |= 4; + shared19204.unk1920B_2 = 1; if (sub_80AE074()) sub_80B114C(shared19204.unk19215); taskId2 = CreateTask(sub_80C8C80, 0); @@ -1353,7 +1146,6 @@ void sub_80AC2CC(u8 taskId) sub_80AF860(); gTasks[taskId].data[0] = 1; } - //_080AC498 else { sub_80B114C(shared19204.unk19215); @@ -1361,34 +1153,27 @@ void sub_80AC2CC(u8 taskId) } return; case 1: - if (!(shared19204.unk1920B & 4)) + if (!shared19204.unk1920B_2) gTasks[taskId].data[0] = 2; return; case 2: - //_080AC4D4 + if ((shared19260_[r7].unkC & 6) + || (shared19260_[r7].unkB & 0x80)) { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; // r2 - - if ((s->unkC & 6) - || (s->unkB & 0x80)) - { - gTasks[taskId].data[0] = 31; - } - else - { - sub_80AF138(); - sub_80B0CDC(r7, 0); - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 3; - } + gTasks[taskId].data[0] = 31; + } + else + { + sub_80AF138(); + sub_80B0CDC(r7, 0); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 3; } return; case 3: - //_080AC534 - // r6 optimized out for (r6 = 0; r6 < 4; r6++) gBattleMonForms[r6] = 0; - memset(shared19260.unk19348, 0, 20); + memset(shared19348, 0, 20); sub_80B28F0(shared19204.unk19215); spriteId = sub_80AE9FC( gContestMons[shared19204.unk19215].species, @@ -1402,41 +1187,32 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 4; return; case 4: - //_080AC5E8 spriteId = gTasks[taskId].data[2]; if (gSprites[spriteId].callback == SpriteCallbackDummy) { - struct UnknownContestStruct4 *s = &shared19260.unk19338[r7]; - if (!(s->unk2 & 2)) + if (!(shared19338[r7].unk2 & 2)) gTasks[taskId].data[0] = 5; } return; case 5: - //_080AC638 + if (shared19260_[r7].unkC & 1) { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - - if (s->unkC & 1) - { - gTasks[taskId].data[0] = 33; - } - //_080AC664 + gTasks[taskId].data[0] = 33; + } + else + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + if (shared19260_[r7].unk6 < 355) + StringCopy(gStringVar2, gMoveNames[shared19260_[r7].unk6]); else - { - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - if (s->unk6 <= 354) - StringCopy(gStringVar2, gMoveNames[s->unk6]); - else - StringCopy(gStringVar2, gUnknown_083CC330[s->unkA]); - StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[0] = 6; - } + StringCopy(gStringVar2, gUnknown_083CC330[shared19260_[r7].unkA]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 6; } return; case 6: - //_080AC6F8 if (sub_80037A0(&gMenuWindow) != 0) { shared19204.unk1925E = 0; @@ -1444,21 +1220,17 @@ void sub_80AC2CC(u8 taskId) } return; case 7: - //_080AC730 { - struct UnknownContestStruct1 *s = &shared19260.unk19260[shared19204.unk19215]; - // doesn't match - u16 r4 = sub_80B2760(s->unk6); + u16 move = sub_80B2760(shared19260_[shared19204.unk19215].unk6); sub_80B2790(shared19204.unk19215); sub_80B28F0(shared19204.unk19215); - sub_80B29B4(r4); - ExecuteMoveAnim(r4); + sub_80B29B4(move); + ExecuteMoveAnim(move); gTasks[taskId].data[0] = 8; } return; case 8: - //_080AC77C gAnimScriptCallback(); if (!gAnimScriptActive) { @@ -1470,10 +1242,7 @@ void sub_80AC2CC(u8 taskId) } else { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - - //if (!(s->unk15 & 0x10)) - if (!s->unk15_4) + if (!shared19260_[r7].unk15_4) sub_80B03A8(r7); sub_80B20C4(); gTasks[taskId].data[0] = 23; @@ -1481,7 +1250,6 @@ void sub_80AC2CC(u8 taskId) } return; case 9: - //_080AC7F4 if (gTasks[taskId].data[10]++ > 30) { gTasks[taskId].data[10] = 0; @@ -1489,127 +1257,89 @@ void sub_80AC2CC(u8 taskId) } return; case 23: - //_080AC81E + gTasks[taskId].data[1] = 0; + if (shared19260_[r7].unk13 != 0xFF) { - struct UnknownContestStruct1 *s; // r6 - - gTasks[taskId].data[1] = 0; - s = &shared19260.unk19260[r7]; - if (s->unk13 != 0xFF) - { - sub_80B146C(r7, s->unk13); - shared19260.unk19260[r7].unk13 = 0xFF; - gTasks[taskId].data[0] = 24; - } - //_080AC85C - else + sub_80B146C(r7, shared19260_[r7].unk13); + shared19260_[r7].unk13 = 0xFF; + gTasks[taskId].data[0] = 24; + } + else + { + if (shared19260_[r7].unk14 != 0xFF) { - if (s->unk14 != 0xFF) + for (r6 = 0; r6 < 4; r6++) { - //s32 r6 = 0; - - for (r6 = 0; r6 < 4; r6++) - { - if (r6 != r7 && shared19260.unk19260[r6].unk13 != 0xFF) - break; - } - //_080AC886 - if (r6 == 4) - { - sub_80B146C(r7, shared19260.unk19260[r7].unk14); - shared19260.unk19260[r7].unk14 = 0xFF; - gTasks[taskId].data[0] = 24; - } - //_080AC8B4 - else - { - gTasks[taskId].data[0] = 48; - } + if (r6 != r7 && shared19260_[r6].unk13 != 0xFF) + break; + } + if (r6 == 4) + { + sub_80B146C(r7, shared19260_[r7].unk14); + shared19260_[r7].unk14 = 0xFF; + gTasks[taskId].data[0] = 24; } - //_080AC8C4 else { gTasks[taskId].data[0] = 48; } } + else + { + gTasks[taskId].data[0] = 48; + } } return; case 24: - //_080AC8CC if (sub_80037A0(&gMenuWindow) != 0) gTasks[taskId].data[0] = 23; return; case 48: - //_080AC8F8 + if ((shared19260_[r7].unk11 & 3) == 1) { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - - if ((s->unk11 & 3) == 1) - { - sub_80B1710(5); - } - else if ((s->unk11 & 3) == 2) - { - sub_80B1710(6); - } - else if ((s->unk11 & 3) == 3) - { - sub_80B1710(7); - } - else - { - gTasks[taskId].data[0] = 47; - return; - } - gTasks[taskId].data[0] = 49; + sub_80B1710(5); + } + else if ((shared19260_[r7].unk11 & 3) == 2) + { + sub_80B1710(6); + } + else if ((shared19260_[r7].unk11 & 3) == 3) + { + sub_80B1710(7); + } + else + { + gTasks[taskId].data[0] = 47; + return; } + gTasks[taskId].data[0] = 49; return; case 49: - //_080AC94C - if (!(shared19204.unk1920A & 0x10)) + if (!shared19204.unk1920A_4) gTasks[taskId].data[0] = 47; return; case 47: - //_080AC96C sub_80B1FD0(1); gTasks[taskId].data[0] = 12; return; case 12: - //_080AC98C - { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - - sub_80AFBA0(0, s->unk2, r7); - gTasks[taskId].data[0] = 13; - } + sub_80AFBA0(0, shared19260_[r7].unk2, r7); + gTasks[taskId].data[0] = 13; return; case 13: - //_080AC9C0 - { - struct UnknownContestStruct4 *s = &shared19260.unk19338[shared19204.unk19215]; - - if (!(s->unk2 & 4)) - gTasks[taskId].data[0] = 35; - } + if (!(shared19338[shared19204.unk19215].unk2 & 4)) + gTasks[taskId].data[0] = 35; return; case 35: - //_080AC9EC - { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - - if ((s->unk10 & 0x30) == 0x10) - sub_80B1710(8); - gTasks[taskId].data[0] = 36; - } + if (shared19260_[r7].unk10_4 == 1) + sub_80B1710(8); + gTasks[taskId].data[0] = 36; return; case 36: - //_080ACA24 - //if (!shared19204.unk1920A_4) - if (!(shared19204.unk1920A & 0x10)) + if (!shared19204.unk1920A_4) gTasks[taskId].data[0] = 37; return; case 37: - //_080ACA44 if (sub_80AEE54(r7, 1)) { gTasks[taskId].data[10] = 0; @@ -1621,7 +1351,6 @@ void sub_80AC2CC(u8 taskId) } return; case 38: - //_080ACA84 if (++gTasks[taskId].data[10] > 20) { gTasks[taskId].data[10] = 0; @@ -1629,56 +1358,41 @@ void sub_80AC2CC(u8 taskId) } return; case 50: - //_080ACAAE if (sub_80AF038(r7) != 0) PlaySE(SE_C_PASI); gTasks[taskId].data[0] = 25; return; case 25: - //_080ACAD8 gTasks[taskId].data[1] = 0; gTasks[taskId].data[0] = 26; return; case 26: - //_080ACAEE - //asm_comment("case26"); { - s8 r4 = 0; s32 r2 = 0; + r4 = 0; for (r6 = gTasks[taskId].data[1]; r6 < 4; r6++) { - //_080ACB0A r4 = 0; for (r2 = 0; r2 < 4; r2++) { if (r2 != r7 && gUnknown_02038696[r2] == r6 - && shared19260.unk19260[r2].unk13 != 0xFF) + && shared19260_[r2].unk13 != 0xFF) { r4 = 1; break; } } - //_080ACB4E if (r4 != 0) break; } - r4 = r4; // This makes it shift for some reason - //_080ACB58 if (r4) { - //_080ACB60 - u8 r2_; - struct UnknownContestStruct1 *s; - gTasks[taskId].data[1] = gUnknown_02038696[r2]; - r2_ = r2; - s = &shared19260.unk19260[r2]; - sub_80B146C(r2_, s->unk13); - s->unk13 = 0xFF; + sub_80B146C(r2, shared19260_[r2].unk13); + shared19260_[r2].unk13 = 0xFF; gTasks[taskId].data[0] = 27; } - //_080ACB98 else { gTasks[taskId].data[1] = 0; @@ -1689,38 +1403,22 @@ void sub_80AC2CC(u8 taskId) } return; case 27: - //_080ACBB0 if (sub_80037A0(&gMenuWindow) != 0) gTasks[taskId].data[0] = 28; return; case 28: - //_080ACBDC - { - struct UnknownContestStruct1 *s; // r0 - - for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) - ; - //_080ACC08 - s = &shared19260.unk19260[r6]; - sub_80AFBA0(s->unk2 + s->unkE, -s->unkE, r6); - gTasks[taskId].data[0] = 29; - } + for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) + ; + sub_80AFBA0(shared19260_[r6].unk2 + shared19260_[r6].unkE, -shared19260_[r6].unkE, r6); + gTasks[taskId].data[0] = 29; return; case 29: - //_080ACC44 - { - struct UnknownContestStruct4 *s; - - for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) - ; - //_080ACC6C - s = &shared19260.unk19338[r6]; - if (!(s->unk2 & 4)) - gTasks[taskId].data[0] = 39; - } + for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) + ; + if (!(shared19338[r6].unk2 & 4)) + gTasks[taskId].data[0] = 39; return; case 39: - //_080ACC98 for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) ; if (sub_80AEE54(r6, 1)) @@ -1734,7 +1432,6 @@ void sub_80AC2CC(u8 taskId) } return; case 40: - //_080ACD00 if (++gTasks[taskId].data[10] > 20) { gTasks[taskId].data[10] = 0; @@ -1742,259 +1439,191 @@ void sub_80AC2CC(u8 taskId) } return; case 30: - //_080ACD2A + for (r6 = 0; r6 < 4; r6++) { - struct UnknownContestStruct1 *s; - - for (r6 = 0; r6 < 4; r6++) - { - if (gUnknown_02038696[r6] == gTasks[taskId].data[1]) - break; - } - //_080ACD5E - if (sub_80AF038(r6) != 0) - PlaySE(SE_C_PASI); - else - PlaySE(SE_C_SYU); - s = &shared19260.unk19260[r6]; - //if (s->unk15 & 0x20) - if (s->unk15_5) - { - sub_80B03A8(r6); - s->unk15_5 = 0; - } - gTasks[taskId].data[1]++; - gTasks[taskId].data[0] = 26; + if (gUnknown_02038696[r6] == gTasks[taskId].data[1]) + break; + } + if (sub_80AF038(r6) != 0) + PlaySE(SE_C_PASI); + else + PlaySE(SE_C_SYU); + if (shared19260_[r6].unk15_5) + { + sub_80B03A8(r6); + shared19260_[r6].unk15_5 = 0; } + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 26; return; case 51: - //_080ACDC8 if (gTasks[taskId].data[10]++ > 9) { - struct UnknownContestStruct1 *s; - gTasks[taskId].data[10] = 0; - s = &shared19260.unk19260[r7]; - if ((s->unkC & 6) - || (s->unk11 & 4)) + if ((shared19260_[r7].unkC & 6) + || (shared19260_[r7].unk11 & 4)) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); StringExpandPlaceholders(gStringVar4, gUnknown_083CC103); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); } - //_080ACE36 gTasks[taskId].data[0] = 52; } return; case 52: - //_080ACE64 if (sub_80037A0(&gMenuWindow) != 0) { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - - if (!s->unk15_6) + if (!shared19260_[r7].unk15_6) gTasks[taskId].data[0] = 17; else gTasks[taskId].data[0] = 14; } return; case 14: - //_080ACEC0 + r4 = shared19260_[r7].unk16; + if (shared19260_[r7].unk16 != 0) { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - s8 r4 = s->unk16; // what type is this? - - if (s->unk16 != 0) - { - sub_80AF138(); - if (r4 == 1) - sub_8002EB0(&gMenuWindow, gUnknown_083CBD79, 776, 1, 15); - else if (r4 == 2) - sub_8002EB0(&gMenuWindow, gUnknown_083CBD9D, 776, 1, 15); - else - sub_8002EB0(&gMenuWindow, gUnknown_083CBDC6, 776, 1, 15); - //_080ACF22 - sub_80B1710(3); - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 45; - } - //_080ACF48 + sub_80AF138(); + if (r4 == 1) + sub_8002EB0(&gMenuWindow, gUnknown_083CBD79, 776, 1, 15); + else if (r4 == 2) + sub_8002EB0(&gMenuWindow, gUnknown_083CBD9D, 776, 1, 15); else - { - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CBD52); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - sub_80B1710(2); - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 45; - } + sub_8002EB0(&gMenuWindow, gUnknown_083CBDC6, 776, 1, 15); + sub_80B1710(3); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 45; + } + else + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CBD52); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + sub_80B1710(2); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 45; } return; case 45: - //_080ACFA8 - //if (!shared19204.unk1920A_4) - if (!(shared19204.unk1920A & 0x10)) + if (!shared19204.unk1920A_4) { sub_80B09B0(shared19204.unk19215); gTasks[taskId].data[0] = 15; } return; case 15: - //_080ACFD4 if (sub_80037A0(&gMenuWindow) != 0) { if (++gTasks[taskId].data[10] > 50) { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - //if (!(shared19260.unk19260[r7].unk15 & 0x10)) - if (!s->unk15_4) + if (!shared19260_[r7].unk15_4) { sub_80AFBA0( - shared19260.unk19260[r7].unk2, - shared19260.unk19260[r7].unk17, + shared19260_[r7].unk2, + shared19260_[r7].unk17, r7); - shared19260.unk19260[r7].unk2 += shared19260.unk19260[r7].unk17; + shared19260_[r7].unk2 += shared19260_[r7].unk17; } - //_080AD02C gTasks[taskId].data[0] = 16; } } return; case 16: - //_080AD040 + if (!(shared19338[r7].unk2 & 4)) { - struct UnknownContestStruct4 *s = &shared19260.unk19338[r7]; - - if (!(s->unk2 & 4)) - { - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[0] = 17; - } + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 17; } return; case 17: - //_080AD070 + if (shared19260_[r7].unk15_0) { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - - //if (s->unk15 & 1) - if (s->unk15_0) - { - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC075); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[10] = 0; - sub_80B1710(); - gTasks[taskId].data[0] = 46; - } - //_080AD0E8 - else - { - gTasks[taskId].data[0] = 41; - } + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC075); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[10] = 0; + sub_80B1710(); + gTasks[taskId].data[0] = 46; + } + else + { + gTasks[taskId].data[0] = 41; } return; case 46: - //_080AD0FA - //if (!shared19204.unk1920A_4) - if (!(shared19204.unk1920A & 0x10)) + if (!shared19204.unk1920A_4) gTasks[taskId].data[0] = 19; return; case 19: - //_080AD11A if (sub_80037A0(&gMenuWindow) != 0) { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - - sub_80AFBA0(s->unk2, -s->unk18, r7); - s->unk2 -= s->unk18; + sub_80AFBA0(shared19260_[r7].unk2, -shared19260_[r7].unk18, r7); + shared19260_[r7].unk2 -= shared19260_[r7].unk18; gTasks[taskId].data[0] = 18; } return; case 18: - //_080AD168 + sub_80B0D7C(); + if (!(shared19338[r7].unk2 & 4)) { - struct UnknownContestStruct4 *s; - - sub_80B0D7C(); - s = &shared19260.unk19338[r7]; - if (!(s->unk2 & 4)) - { - gTasks[taskId].data[10] = 0; - sub_80AF138(); - gTasks[taskId].data[0] = 41; - } + gTasks[taskId].data[10] = 0; + sub_80AF138(); + gTasks[taskId].data[0] = 41; } return; case 41: - //_080AD1A4 - //asm_comment("case41"); + if (shared19328.bits_8 && r7 != shared19328.bits_9) { - //struct UnknownContestStruct5_alt *s5_alt = (struct UnknownContestStruct5_alt *)&shared19260.unk19328; // r2 - struct UnknownContestStruct5 *s5 = (struct UnknownContestStruct5 *)&shared19260.unk19328; // r1 - - if (s5->bits_8 && r7 != s5->bits_9) + gTasks[taskId].data[0] = 57; + } + else + { + r4 = shared19328.bits_0; + if (shared19260_[r7].unk11 & 0x10) { - gTasks[taskId].data[0] = 57; + r4 = 1; + StringCopy(gStringVar3, gMoveNames[shared19260_[r7].unk6]); } - //_080AD1D0 else { - s8 r4 = s5->bits_0; - //struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - struct UnknownContestStruct1 *s = ((struct UnknownContestStruct1 *)(((u8 *)s5) - 0xC8)) + r7; - - if (s->unk11 & 0x10) - { - r4 = 1; - StringCopy(gStringVar3, gMoveNames[s->unk6]); - } - else - { - StringCopy(gStringVar3, gUnknown_083CC2D8[gContestMoves[s->unk6].contestCategory]); - } - //_080AD21E - if (r4 > 0) - { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - - //if (s->unk15 & 1) - if (s->unk15_0) - r4 = 0; - } - sub_80AF138(); - StringCopy(gStringVar1, gContestMons[r7].nickname); - shared19204.unk19217 += r4; - if (shared19204.unk19217 < 0) - shared19204.unk19217 = 0; - if (r4 == 0) - { - gTasks[taskId].data[0] = 55; - } - else - { - if (r4 < 0) - StringExpandPlaceholders(gStringVar4, gUnknown_083CC0BC); - else if (r4 > 0 && shared19204.unk19217 <= 4) - StringExpandPlaceholders(gStringVar4, gUnknown_083CC0A0); - else - StringExpandPlaceholders(gStringVar4, gUnknown_083CC0E3); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[10] = 0; - gTasks[taskId].data[11] = 0; - if (r4 < 0) - gTasks[taskId].data[0] = 53; - else - gTasks[taskId].data[0] = 54; - } + StringCopy(gStringVar3, gUnknown_083CC2D8[gContestMoves[shared19260_[r7].unk6].contestCategory]); } - } - return; - case 53: - //_080AD316 + if (r4 > 0) + { + if (shared19260_[r7].unk15_0) + r4 = 0; + } + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + shared19204.unk19217 += r4; + if (shared19204.unk19217 < 0) + shared19204.unk19217 = 0; + if (r4 == 0) + { + gTasks[taskId].data[0] = 55; + } + else + { + if (r4 < 0) + StringExpandPlaceholders(gStringVar4, gUnknown_083CC0BC); + else if (r4 > 0 && shared19204.unk19217 <= 4) + StringExpandPlaceholders(gStringVar4, gUnknown_083CC0A0); + else + StringExpandPlaceholders(gStringVar4, gUnknown_083CC0E3); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + if (r4 < 0) + gTasks[taskId].data[0] = 53; + else + gTasks[taskId].data[0] = 54; + } + } + return; + case 53: switch (gTasks[taskId].data[10]) { case 0: @@ -2003,16 +1632,14 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[10]++; break; case 1: - //_080AD354 - if (!(shared19204.unk1920B & 1) && sub_80037A0(&gMenuWindow) != 0) + if (!shared19204.unk1920B_0 && sub_80037A0(&gMenuWindow) != 0) { sub_80B1CBC(-1); gTasks[taskId].data[10]++; } break; case 2: - //_080AD37C - if (!(shared19204.unk1920A & 0x20)) + if (!shared19204.unk1920A_5) { if (gTasks[taskId].data[11]++ > 29) { @@ -2023,7 +1650,6 @@ void sub_80AC2CC(u8 taskId) } break; case 3: - //_080AD3B0 if (!gPaletteFade.active) { gTasks[taskId].data[10] = 0; @@ -2034,20 +1660,17 @@ void sub_80AC2CC(u8 taskId) } return; case 54: - //_080AD3D0 switch (gTasks[taskId].data[10]) { case 0: - //_080AD408 if (sub_80037A0(&gMenuWindow) != 0) { - sub_80B1EA8(0, 1); + sub_80B1EA8(1, 1); gTasks[taskId].data[10]++; } break; case 1: - //_080AD420 - if (!(shared19204.unk1920B & 1)) + if (!shared19204.unk1920B_0) { sub_80B1DDC(); PlaySE(SE_W227B); @@ -2056,58 +1679,28 @@ void sub_80AC2CC(u8 taskId) } break; case 2: - asm_comment("asdfasdf"); - //_080AD43E - if (!(shared19204.unk1920A & 0x20)) + if (!shared19204.unk1920A_5) { if (gTasks[taskId].data[11]++ > 29) { - struct UnknownContestStruct1 *s; - struct UnknownContestStruct5 *s5; - //register s16 r0 asm("r0"); - - gTasks[taskId].data[11] = 0; - s = &shared19260.unk19260[r7]; - s5 = &shared19260.unk19328; - sub_80AFBA0(s->unk2, s5->unk2, r7); - s->unk2 += s5->unk2; - gTasks[taskId].data[10]++; - } - /* - if (gTasks[taskId].data[11]++ > 29) - { - struct UnknownContestStruct1 *s; - struct UnknownContestStruct5 *s5; - register s16 r0 asm("r0"); - gTasks[taskId].data[11] = 0; - s = &shared19260.unk19260[r7]; - r0 = s->unk2; - s5 = &shared19260.unk19328; - sub_80AFBA0(r0, s5->unk2, r7); - s->unk2 += s5->unk2; + sub_80AFBA0(shared19260_[r7].unk2, shared19328.unk2, r7); + shared19260_[r7].unk2 += shared19328.unk2; gTasks[taskId].data[10]++; } - */ } break; case 3: - //_080AD4A0 + if (!(shared19338[r7].unk2 & 4)) { - struct UnknownContestStruct4 *s = &shared19260.unk19338[r7]; - - if (!(s->unk2 & 4)) + if (!shared19204.unk1920A_7) { - if (!(shared19204.unk1920A & 0x80)) - { - sub_80B1EA8(1, -1); - gTasks[taskId].data[10]++; - } + sub_80B1EA8(1, -1); + gTasks[taskId].data[10]++; } } break; case 4: - //_080AD4EC if (!gPaletteFade.active) { gTasks[taskId].data[10] = 0; @@ -2118,31 +1711,22 @@ void sub_80AC2CC(u8 taskId) } return; case 43: - //_080AD514 + if (!(shared19338[r7].unk2 & 4)) { - struct UnknownContestStruct4 *s = &shared19260.unk19338[r7]; - - if (!(s->unk2 & 4)) - { - sub_80AF138(); - gTasks[taskId].data[0] = 55; - } + sub_80AF138(); + gTasks[taskId].data[0] = 55; } return; case 57: - //_080AD53C - { - sub_80AF138(); - StringCopy(gStringVar3, gContestMons[shared19260.unk19328.bits_9].nickname); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringCopy(gStringVar2, gMoveNames[shared19260.unk19260[r7].unk6]); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC14A); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[0] = 58; - } + sub_80AF138(); + StringCopy(gStringVar3, gContestMons[shared19328.bits_9].nickname); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringCopy(gStringVar2, gMoveNames[shared19260_[r7].unk6]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC14A); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 58; return; case 58: - //_080AD5D0 if (sub_80037A0(&gMenuWindow) != 0) { sub_80AF138(); @@ -2152,7 +1736,6 @@ void sub_80AC2CC(u8 taskId) } return; case 59: - //_080AD624 if (sub_80037A0(&gMenuWindow) != 0) { sub_80AF138(); @@ -2160,37 +1743,25 @@ void sub_80AC2CC(u8 taskId) } return; case 33: - //_080AD648 - { - struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; - - /* - if (s->unk15 & 0x10) - s->unk15 &= ~0x10; // probably a bitfield - */ - if (s->unk15_4) - s->unk15_4 = 0; - sub_80B09B0(r7); - StringCopy(gStringVar1, gContestMons[r7].nickname); - StringCopy(gStringVar2, gMoveNames[s->unk6]); - StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); - gTasks[taskId].data[0] = 34; - } + if (shared19260_[r7].unk15_4) + shared19260_[r7].unk15_4 = 0; + sub_80B09B0(r7); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringCopy(gStringVar2, gMoveNames[shared19260_[r7].unk6]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 34; return; case 34: - //_080AD6D8 if (sub_80037A0(&gMenuWindow) != 0) gTasks[taskId].data[0] = 55; return; case 55: - //_080AD700 sub_80B1BDC(); gTasks[taskId].data[0] = 56; return; case 56: - //_080AD71C - if (!(shared19204.unk1920A & 0x40)) + if (!shared19204.unk1920A_6) { if (shared19204.unk19217 > 4) { @@ -2201,13 +1772,11 @@ void sub_80AC2CC(u8 taskId) } return; case 10: - //_080AD750 spriteId = gTasks[taskId].data[2]; gSprites[spriteId].callback = sub_80AD92C; gTasks[taskId].data[0] = 11; return; case 11: - //_080AD77C spriteId = gTasks[taskId].data[2]; if (gSprites[spriteId].invisible) { @@ -2217,14 +1786,12 @@ void sub_80AC2CC(u8 taskId) } return; case 20: - //_080AD7B8 for (r6 = 0; r6 < 4; r6++) sub_80B0CDC(r6, 1); gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 21; return; case 31: - //_080AD7E8 sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); StringExpandPlaceholders(gStringVar4, gUnknown_083CB00D); @@ -2232,12 +1799,10 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 32; return; case 32: - //_080AD840 if (sub_80037A0(&gMenuWindow) != 0) gTasks[taskId].data[0] = 21; return; case 21: - //_080AD868 if (++gTasks[taskId].data[10] > 29) { gTasks[taskId].data[10] = 0; @@ -2245,7 +1810,6 @@ void sub_80AC2CC(u8 taskId) } return; case 22: - //_080AD88C if (++shared19204.unk19214 == 4) { gTasks[taskId].data[0] = 0; @@ -2261,2618 +1825,6 @@ void sub_80AC2CC(u8 taskId) return; } } -#endif - -__attribute__((naked)) -void sub_80AC2CC(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x8\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - ldr r2, _080AC308 @ =gSharedMem + 0x19204\n\ - ldrb r7, [r2, 0x11]\n\ - ldr r1, _080AC30C @ =gTasks\n\ - lsls r0, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r3, 0x8\n\ - ldrsh r0, [r0, r3]\n\ - adds r6, r2, 0\n\ - mov r12, r1\n\ - cmp r0, 0x3B\n\ - bls _080AC2FC\n\ - bl _080AD8CA\n\ -_080AC2FC:\n\ - lsls r0, 2\n\ - ldr r1, _080AC310 @ =_080AC314\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080AC308: .4byte gSharedMem + 0x19204\n\ -_080AC30C: .4byte gTasks\n\ -_080AC310: .4byte _080AC314\n\ - .align 2, 0\n\ -_080AC314:\n\ - .4byte _080AC404\n\ - .4byte _080AC4B4\n\ - .4byte _080AC4D4\n\ - .4byte _080AC534\n\ - .4byte _080AC5E8\n\ - .4byte _080AC638\n\ - .4byte _080AC6F8\n\ - .4byte _080AC730\n\ - .4byte _080AC77C\n\ - .4byte _080AC7F4\n\ - .4byte _080AD750\n\ - .4byte _080AD77C\n\ - .4byte _080AC98C\n\ - .4byte _080AC9C0\n\ - .4byte _080ACEC0\n\ - .4byte _080ACFD4\n\ - .4byte _080AD040\n\ - .4byte _080AD070\n\ - .4byte _080AD168\n\ - .4byte _080AD11A\n\ - .4byte _080AD7B8\n\ - .4byte _080AD868\n\ - .4byte _080AD88C\n\ - .4byte _080AC81E\n\ - .4byte _080AC8CC\n\ - .4byte _080ACAD8\n\ - .4byte _080ACAEE\n\ - .4byte _080ACBB0\n\ - .4byte _080ACBDC\n\ - .4byte _080ACC44\n\ - .4byte _080ACD2A\n\ - .4byte _080AD7E8\n\ - .4byte _080AD840\n\ - .4byte _080AD648\n\ - .4byte _080AD6D8\n\ - .4byte _080AC9EC\n\ - .4byte _080ACA24\n\ - .4byte _080ACA44\n\ - .4byte _080ACA84\n\ - .4byte _080ACC98\n\ - .4byte _080ACD00\n\ - .4byte _080AD1A4\n\ - .4byte _080AD8CA\n\ - .4byte _080AD514\n\ - .4byte _080AD8CA\n\ - .4byte _080ACFA8\n\ - .4byte _080AD0FA\n\ - .4byte _080AC96C\n\ - .4byte _080AC8F8\n\ - .4byte _080AC94C\n\ - .4byte _080ACAAE\n\ - .4byte _080ACDC8\n\ - .4byte _080ACE64\n\ - .4byte _080AD316\n\ - .4byte _080AD3D0\n\ - .4byte _080AD700\n\ - .4byte _080AD71C\n\ - .4byte _080AD53C\n\ - .4byte _080AD5D0\n\ - .4byte _080AD624\n\ -_080AC404:\n\ - bl sub_80B0D7C\n\ - movs r6, 0\n\ - ldr r0, _080AC484 @ =gSharedMem + 0x19204\n\ - adds r1, r0, 0\n\ - adds r1, 0xCC\n\ - ldrb r0, [r0, 0x10]\n\ - mov r4, r8\n\ - lsls r4, 2\n\ - mov r9, r4\n\ - ldrb r5, [r1]\n\ - cmp r0, r5\n\ - beq _080AC42C\n\ - adds r2, r1, 0\n\ - adds r1, r0, 0\n\ -_080AC422:\n\ - adds r6, 0x1\n\ - adds r0, r6, r2\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - bne _080AC422\n\ -_080AC42C:\n\ - ldr r4, _080AC484 @ =gSharedMem + 0x19204\n\ - strb r6, [r4, 0x11]\n\ - ldrb r7, [r4, 0x11]\n\ - ldr r0, _080AC488 @ =gIsLinkContest\n\ - ldrb r1, [r0]\n\ - movs r5, 0x1\n\ - adds r0, r5, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AC498\n\ - ldrb r0, [r4, 0x7]\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r4, 0x7]\n\ - bl sub_80AE074\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080AC458\n\ - ldrb r0, [r4, 0x11]\n\ - bl sub_80B114C\n\ -_080AC458:\n\ - ldr r4, _080AC48C @ =sub_80C8C80\n\ - adds r0, r4, 0\n\ - movs r1, 0\n\ - bl CreateTask\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldr r2, _080AC490 @ =sub_80AD8DC\n\ - adds r1, r4, 0\n\ - bl SetTaskFuncWithFollowupFunc\n\ - bl sub_80AF860\n\ - ldr r1, _080AC494 @ =gTasks\n\ - mov r0, r9\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC484: .4byte gSharedMem + 0x19204\n\ -_080AC488: .4byte gIsLinkContest\n\ -_080AC48C: .4byte sub_80C8C80\n\ -_080AC490: .4byte sub_80AD8DC\n\ -_080AC494: .4byte gTasks\n\ -_080AC498:\n\ - adds r0, r7, 0\n\ - bl sub_80B114C\n\ - ldr r0, _080AC4B0 @ =gTasks\n\ - mov r1, r9\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x2\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC4B0: .4byte gTasks\n\ -_080AC4B4:\n\ - ldrb r1, [r6, 0x7]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AC4C2\n\ - bl _080AD8CA\n\ -_080AC4C2:\n\ - mov r1, r8\n\ - lsls r0, r1, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x2\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ -_080AC4D4:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080AC508 @ =gSharedMem + 0x19260\n\ - adds r2, r0, r1\n\ - ldrb r1, [r2, 0xC]\n\ - movs r0, 0x6\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080AC4F6\n\ - ldrb r1, [r2, 0xB]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - cmp r6, 0\n\ - beq _080AC50C\n\ -_080AC4F6:\n\ - mov r2, r8\n\ - lsls r0, r2, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x1F\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC508: .4byte gSharedMem + 0x19260\n\ -_080AC50C:\n\ - bl sub_80AF138\n\ - adds r0, r7, 0\n\ - movs r1, 0\n\ - bl sub_80B0CDC\n\ - ldr r0, _080AC530 @ =gTasks\n\ - mov r3, r8\n\ - lsls r1, r3, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - strh r6, [r1, 0x1C]\n\ - movs r0, 0x3\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC530: .4byte gTasks\n\ -_080AC534:\n\ - mov r4, r8\n\ - lsls r4, 2\n\ - mov r9, r4\n\ - ldr r4, _080AC5C4 @ =gSharedMem + 0x19348\n\ - ldr r1, _080AC5C8 @ =gBattleMonForms\n\ - movs r2, 0\n\ - adds r0, r1, 0x3\n\ -_080AC542:\n\ - strb r2, [r0]\n\ - subs r0, 0x1\n\ - cmp r0, r1\n\ - bge _080AC542\n\ - movs r6, 0x4\n\ - adds r0, r4, 0\n\ - movs r1, 0\n\ - movs r2, 0x14\n\ - bl memset\n\ - ldr r5, _080AC5CC @ =0xfffffebc\n\ - adds r7, r4, r5\n\ - ldrb r0, [r7, 0x11]\n\ - bl sub_80B28F0\n\ - ldr r3, _080AC5D0 @ =gContestMons\n\ - ldrb r2, [r7, 0x11]\n\ - lsls r2, 6\n\ - adds r0, r2, r3\n\ - ldrh r0, [r0]\n\ - adds r1, r3, 0\n\ - adds r1, 0x3C\n\ - adds r1, r2, r1\n\ - ldr r1, [r1]\n\ - adds r3, 0x38\n\ - adds r2, r3\n\ - ldr r2, [r2]\n\ - bl sub_80AE9FC\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldr r2, _080AC5D4 @ =gSprites\n\ - lsls r0, r5, 4\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r3, r0, r2\n\ - movs r1, 0x78\n\ - strh r1, [r3, 0x24]\n\ - adds r2, 0x1C\n\ - adds r0, r2\n\ - ldr r1, _080AC5D8 @ =sub_80AD8FC\n\ - str r1, [r0]\n\ - ldr r0, _080AC5DC @ =gTasks\n\ - mov r4, r9\n\ - add r4, r8\n\ - lsls r4, 3\n\ - adds r4, r0\n\ - strh r5, [r4, 0xC]\n\ - ldr r1, _080AC5E0 @ =gObjectBankIDs\n\ - ldr r0, _080AC5E4 @ =gBankAttacker\n\ - ldrb r0, [r0]\n\ - adds r0, r1\n\ - strb r5, [r0]\n\ - ldrb r0, [r7, 0x11]\n\ - bl sub_80B09E4\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - movs r1, 0\n\ - bl sub_80B0BC4\n\ - strh r6, [r4, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC5C4: .4byte gSharedMem + 0x19348\n\ -_080AC5C8: .4byte gBattleMonForms\n\ -_080AC5CC: .4byte 0xfffffebc\n\ -_080AC5D0: .4byte gContestMons\n\ -_080AC5D4: .4byte gSprites\n\ -_080AC5D8: .4byte sub_80AD8FC\n\ -_080AC5DC: .4byte gTasks\n\ -_080AC5E0: .4byte gObjectBankIDs\n\ -_080AC5E4: .4byte gBankAttacker\n\ -_080AC5E8:\n\ - mov r1, r8\n\ - lsls r0, r1, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - mov r3, r12\n\ - adds r2, r0, r3\n\ - ldrb r5, [r2, 0xC]\n\ - ldr r1, _080AC62C @ =gSprites\n\ - lsls r0, r5, 4\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r1, 0x1C\n\ - adds r0, r1\n\ - ldr r1, [r0]\n\ - ldr r0, _080AC630 @ =SpriteCallbackDummy\n\ - cmp r1, r0\n\ - beq _080AC60E\n\ - bl _080AD8CA\n\ -_080AC60E:\n\ - lsls r0, r7, 2\n\ - ldr r1, _080AC634 @ =gSharedMem + 0x19338\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x2]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AC622\n\ - bl _080AD8CA\n\ -_080AC622:\n\ - movs r0, 0x5\n\ - strh r0, [r2, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC62C: .4byte gSprites\n\ -_080AC630: .4byte SpriteCallbackDummy\n\ -_080AC634: .4byte gSharedMem + 0x19338\n\ -_080AC638:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080AC660 @ =gSharedMem + 0x19260\n\ - adds r5, r0, r1\n\ - ldrb r1, [r5, 0xC]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AC664\n\ - mov r4, r8\n\ - lsls r0, r4, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x21\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC660: .4byte gSharedMem + 0x19260\n\ -_080AC664:\n\ - bl sub_80AF138\n\ - ldr r0, _080AC690 @ =gStringVar1\n\ - lsls r1, r7, 6\n\ - ldr r2, _080AC694 @ =gContestMons + 0x2\n\ - adds r1, r2\n\ - bl StringCopy\n\ - ldrh r1, [r5, 0x6]\n\ - movs r0, 0xB1\n\ - lsls r0, 1\n\ - cmp r1, r0\n\ - bhi _080AC6A0\n\ - ldr r0, _080AC698 @ =gStringVar2\n\ - adds r2, r1, 0\n\ - movs r1, 0xD\n\ - muls r1, r2\n\ - ldr r2, _080AC69C @ =gMoveNames\n\ - adds r1, r2\n\ - bl StringCopy\n\ - b _080AC6B0\n\ - .align 2, 0\n\ -_080AC690: .4byte gStringVar1\n\ -_080AC694: .4byte gContestMons + 0x2\n\ -_080AC698: .4byte gStringVar2\n\ -_080AC69C: .4byte gMoveNames\n\ -_080AC6A0:\n\ - ldr r0, _080AC6E0 @ =gStringVar2\n\ - ldr r2, _080AC6E4 @ =gUnknown_083CC330\n\ - ldrb r1, [r5, 0xA]\n\ - lsls r1, 2\n\ - adds r1, r2\n\ - ldr r1, [r1]\n\ - bl StringCopy\n\ -_080AC6B0:\n\ - ldr r4, _080AC6E8 @ =gStringVar4\n\ - ldr r1, _080AC6EC @ =gUnknown_083CAFD7\n\ - adds r0, r4, 0\n\ - bl StringExpandPlaceholders\n\ - ldr r0, _080AC6F0 @ =gMenuWindow\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r1, 0xF\n\ - str r1, [sp]\n\ - adds r1, r4, 0\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ - ldr r1, _080AC6F4 @ =gTasks\n\ - mov r5, r8\n\ - lsls r0, r5, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x6\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC6E0: .4byte gStringVar2\n\ -_080AC6E4: .4byte gUnknown_083CC330\n\ -_080AC6E8: .4byte gStringVar4\n\ -_080AC6EC: .4byte gUnknown_083CAFD7\n\ -_080AC6F0: .4byte gMenuWindow\n\ -_080AC6F4: .4byte gTasks\n\ -_080AC6F8:\n\ - ldr r0, _080AC724 @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080AC708\n\ - bl _080AD8CA\n\ -_080AC708:\n\ - ldr r0, _080AC728 @ =gSharedMem + 0x19204\n\ - adds r0, 0x5A\n\ - movs r1, 0\n\ - strb r1, [r0]\n\ - ldr r1, _080AC72C @ =gTasks\n\ - mov r2, r8\n\ - lsls r0, r2, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x7\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC724: .4byte gMenuWindow\n\ -_080AC728: .4byte gSharedMem + 0x19204\n\ -_080AC72C: .4byte gTasks\n\ -_080AC730:\n\ - ldrb r1, [r6, 0x11]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - lsls r0, 2\n\ - adds r1, r6, 0\n\ - adds r1, 0x5C\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x6]\n\ - bl sub_80B2760\n\ - adds r4, r0, 0\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - ldrb r0, [r6, 0x11]\n\ - bl sub_80B2790\n\ - ldrb r0, [r6, 0x11]\n\ - bl sub_80B28F0\n\ - adds r0, r4, 0\n\ - bl sub_80B29B4\n\ - adds r0, r4, 0\n\ - bl ExecuteMoveAnim\n\ - ldr r1, _080AC778 @ =gTasks\n\ - mov r3, r8\n\ - lsls r0, r3, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x8\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC778: .4byte gTasks\n\ -_080AC77C:\n\ - ldr r0, _080AC7B8 @ =gAnimScriptCallback\n\ - ldr r0, [r0]\n\ - bl _call_via_r0\n\ - ldr r0, _080AC7BC @ =gAnimScriptActive\n\ - ldrb r4, [r0]\n\ - cmp r4, 0\n\ - beq _080AC790\n\ - bl _080AD8CA\n\ -_080AC790:\n\ - adds r0, r7, 0\n\ - bl sub_80B28CC\n\ - ldr r1, _080AC7C0 @ =gSharedMem + 0x19204\n\ - adds r0, r1, 0\n\ - adds r0, 0x5A\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080AC7C8\n\ - ldr r0, _080AC7C4 @ =gTasks\n\ - mov r5, r8\n\ - lsls r1, r5, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - strh r4, [r1, 0x1C]\n\ - movs r0, 0x9\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC7B8: .4byte gAnimScriptCallback\n\ -_080AC7BC: .4byte gAnimScriptActive\n\ -_080AC7C0: .4byte gSharedMem + 0x19204\n\ -_080AC7C4: .4byte gTasks\n\ -_080AC7C8:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - adds r1, 0x5C\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x15]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080AC7E2\n\ - adds r0, r7, 0\n\ - bl sub_80B03A8\n\ -_080AC7E2:\n\ - bl sub_80B20C4\n\ - ldr r0, _080AC7F0 @ =gTasks\n\ - mov r2, r8\n\ - lsls r1, r2, 2\n\ - b _080AC8E2\n\ - .align 2, 0\n\ -_080AC7F0: .4byte gTasks\n\ -_080AC7F4:\n\ - mov r3, r8\n\ - lsls r0, r3, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - mov r4, r12\n\ - adds r2, r0, r4\n\ - ldrh r0, [r2, 0x1C]\n\ - adds r1, r0, 0x1\n\ - strh r1, [r2, 0x1C]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x1E\n\ - bgt _080AC812\n\ - bl _080AD8CA\n\ -_080AC812:\n\ - movs r0, 0\n\ - strh r0, [r2, 0x1C]\n\ - movs r0, 0x7\n\ - strh r0, [r2, 0x8]\n\ - bl _080AD8CA\n\ -_080AC81E:\n\ - mov r5, r8\n\ - lsls r3, r5, 2\n\ - adds r0, r3, r5\n\ - lsls r0, 3\n\ - mov r1, r12\n\ - adds r4, r0, r1\n\ - movs r0, 0\n\ - strh r0, [r4, 0xA]\n\ - lsls r2, r7, 3\n\ - subs r0, r2, r7\n\ - lsls r0, 2\n\ - ldr r1, _080AC858 @ =gSharedMem + 0x19260\n\ - adds r6, r0, r1\n\ - ldrb r0, [r6, 0x13]\n\ - mov r9, r3\n\ - mov r10, r2\n\ - adds r3, r1, 0\n\ - cmp r0, 0xFF\n\ - beq _080AC85C\n\ - adds r1, r0, 0\n\ - adds r0, r7, 0\n\ - bl sub_80B146C\n\ - movs r0, 0xFF\n\ - strb r0, [r6, 0x13]\n\ - movs r0, 0x18\n\ - strh r0, [r4, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC858: .4byte gSharedMem + 0x19260\n\ -_080AC85C:\n\ - ldrb r0, [r6, 0x14]\n\ - cmp r0, 0xFF\n\ - beq _080AC8C4\n\ - movs r6, 0\n\ - cmp r6, r7\n\ - beq _080AC86E\n\ - ldrb r0, [r3, 0x13]\n\ - cmp r0, 0xFF\n\ - bne _080AC886\n\ -_080AC86E:\n\ - adds r6, 0x1\n\ - cmp r6, 0x3\n\ - bgt _080AC886\n\ - cmp r6, r7\n\ - beq _080AC86E\n\ - lsls r0, r6, 3\n\ - subs r0, r6\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - ldrb r0, [r0, 0x13]\n\ - cmp r0, 0xFF\n\ - beq _080AC86E\n\ -_080AC886:\n\ - cmp r6, 0x4\n\ - bne _080AC8B4\n\ - mov r2, r10\n\ - subs r4, r2, r7\n\ - lsls r4, 2\n\ - adds r4, r3\n\ - ldrb r1, [r4, 0x14]\n\ - adds r0, r7, 0\n\ - bl sub_80B146C\n\ - movs r0, 0xFF\n\ - strb r0, [r4, 0x14]\n\ - ldr r1, _080AC8B0 @ =gTasks\n\ - mov r0, r9\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x18\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC8B0: .4byte gTasks\n\ -_080AC8B4:\n\ - mov r0, r9\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x30\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ -_080AC8C4:\n\ - movs r0, 0x30\n\ - strh r0, [r4, 0x8]\n\ - bl _080AD8CA\n\ -_080AC8CC:\n\ - ldr r0, _080AC8F0 @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080AC8DC\n\ - bl _080AD8CA\n\ -_080AC8DC:\n\ - ldr r0, _080AC8F4 @ =gTasks\n\ - mov r3, r8\n\ - lsls r1, r3, 2\n\ -_080AC8E2:\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x17\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC8F0: .4byte gMenuWindow\n\ -_080AC8F4: .4byte gTasks\n\ -_080AC8F8:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080AC914 @ =gSharedMem + 0x19260\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x11]\n\ - movs r3, 0x3\n\ - ands r3, r0\n\ - cmp r3, 0x1\n\ - bne _080AC918\n\ - movs r0, 0x5\n\ - bl sub_80B1710\n\ - b _080AC934\n\ - .align 2, 0\n\ -_080AC914: .4byte gSharedMem + 0x19260\n\ -_080AC918:\n\ - cmp r3, 0x2\n\ - bne _080AC924\n\ - movs r0, 0x6\n\ - bl sub_80B1710\n\ - b _080AC934\n\ -_080AC924:\n\ - cmp r3, 0x3\n\ - beq _080AC92E\n\ - mov r4, r8\n\ - lsls r0, r4, 2\n\ - b _080AC95E\n\ -_080AC92E:\n\ - movs r0, 0x7\n\ - bl sub_80B1710\n\ -_080AC934:\n\ - ldr r0, _080AC948 @ =gTasks\n\ - mov r5, r8\n\ - lsls r1, r5, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x31\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC948: .4byte gTasks\n\ -_080AC94C:\n\ - ldrb r1, [r6, 0x6]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AC95A\n\ - bl _080AD8CA\n\ -_080AC95A:\n\ - mov r1, r8\n\ - lsls r0, r1, 2\n\ -_080AC95E:\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x2F\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ -_080AC96C:\n\ - movs r0, 0x1\n\ - bl sub_80B1FD0\n\ - ldr r0, _080AC988 @ =gTasks\n\ - mov r2, r8\n\ - lsls r1, r2, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0xC\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC988: .4byte gTasks\n\ -_080AC98C:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080AC9B8 @ =gSharedMem + 0x19260\n\ - adds r0, r1\n\ - movs r3, 0x2\n\ - ldrsh r1, [r0, r3]\n\ - movs r0, 0\n\ - adds r2, r7, 0\n\ - bl sub_80AFBA0\n\ - ldr r1, _080AC9BC @ =gTasks\n\ - mov r4, r8\n\ - lsls r0, r4, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0xD\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AC9B8: .4byte gSharedMem + 0x19260\n\ -_080AC9BC: .4byte gTasks\n\ -_080AC9C0:\n\ - ldrb r0, [r6, 0x11]\n\ - lsls r0, 2\n\ - movs r5, 0x9A\n\ - lsls r5, 1\n\ - adds r1, r6, r5\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x2]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AC9DA\n\ - bl _080AD8CA\n\ -_080AC9DA:\n\ - mov r1, r8\n\ - lsls r0, r1, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x23\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ -_080AC9EC:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080ACA1C @ =gSharedMem + 0x19260\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x10]\n\ - movs r0, 0x30\n\ - ands r0, r1\n\ - cmp r0, 0x10\n\ - bne _080ACA06\n\ - movs r0, 0x8\n\ - bl sub_80B1710\n\ -_080ACA06:\n\ - ldr r0, _080ACA20 @ =gTasks\n\ - mov r2, r8\n\ - lsls r1, r2, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x24\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACA1C: .4byte gSharedMem + 0x19260\n\ -_080ACA20: .4byte gTasks\n\ -_080ACA24:\n\ - ldrb r1, [r6, 0x6]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080ACA32\n\ - bl _080AD8CA\n\ -_080ACA32:\n\ - mov r3, r8\n\ - lsls r0, r3, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x25\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ -_080ACA44:\n\ - adds r0, r7, 0\n\ - movs r1, 0x1\n\ - bl sub_80AEE54\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080ACA70\n\ - ldr r1, _080ACA6C @ =gTasks\n\ - mov r4, r8\n\ - lsls r0, r4, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strh r1, [r0, 0x1C]\n\ - movs r1, 0x26\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACA6C: .4byte gTasks\n\ -_080ACA70:\n\ - ldr r0, _080ACA80 @ =gTasks\n\ - mov r5, r8\n\ - lsls r1, r5, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - b _080ACAA6\n\ - .align 2, 0\n\ -_080ACA80: .4byte gTasks\n\ -_080ACA84:\n\ - mov r1, r8\n\ - lsls r0, r1, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - mov r2, r12\n\ - adds r1, r0, r2\n\ - ldrh r0, [r1, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x1C]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x14\n\ - bgt _080ACAA2\n\ - bl _080AD8CA\n\ -_080ACAA2:\n\ - movs r0, 0\n\ - strh r0, [r1, 0x1C]\n\ -_080ACAA6:\n\ - movs r0, 0x32\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ -_080ACAAE:\n\ - adds r0, r7, 0\n\ - bl sub_80AF038\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080ACAC0\n\ - movs r0, 0x63\n\ - bl PlaySE\n\ -_080ACAC0:\n\ - ldr r0, _080ACAD4 @ =gTasks\n\ - mov r3, r8\n\ - lsls r1, r3, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x19\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACAD4: .4byte gTasks\n\ -_080ACAD8:\n\ - mov r4, r8\n\ - lsls r0, r4, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0\n\ - strh r1, [r0, 0xA]\n\ - movs r1, 0x1A\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ -_080ACAEE:\n\ - movs r2, 0\n\ - movs r4, 0\n\ - mov r5, r8\n\ - lsls r1, r5, 2\n\ - adds r0, r1, r5\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r3, 0xA\n\ - ldrsh r6, [r0, r3]\n\ - mov r9, r1\n\ - cmp r6, 0x3\n\ - bgt _080ACB58\n\ - ldr r3, _080ACB24 @ =gUnknown_02038696\n\ - ldr r1, _080ACB28 @ =gSharedMem + 0x19260\n\ -_080ACB0A:\n\ - movs r4, 0\n\ - movs r2, 0\n\ - cmp r4, r7\n\ - beq _080ACB2C\n\ - ldrb r0, [r3]\n\ - cmp r0, r6\n\ - bne _080ACB2C\n\ - ldrb r0, [r1, 0x13]\n\ - cmp r0, 0xFF\n\ - beq _080ACB2C\n\ - movs r4, 0x1\n\ - b _080ACB60\n\ - .align 2, 0\n\ -_080ACB24: .4byte gUnknown_02038696\n\ -_080ACB28: .4byte gSharedMem + 0x19260\n\ -_080ACB2C:\n\ - adds r2, 0x1\n\ - cmp r2, 0x3\n\ - bgt _080ACB4E\n\ - cmp r2, r7\n\ - beq _080ACB2C\n\ - adds r0, r2, r3\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne _080ACB2C\n\ - lsls r0, r2, 3\n\ - subs r0, r2\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x13]\n\ - cmp r0, 0xFF\n\ - beq _080ACB2C\n\ - movs r4, 0x1\n\ -_080ACB4E:\n\ - cmp r4, 0\n\ - bne _080ACB60\n\ - adds r6, 0x1\n\ - cmp r6, 0x3\n\ - ble _080ACB0A\n\ -_080ACB58:\n\ - lsls r0, r4, 24\n\ - asrs r1, r0, 24\n\ - cmp r1, 0\n\ - beq _080ACB98\n\ -_080ACB60:\n\ - mov r5, r9\n\ - add r5, r8\n\ - lsls r5, 3\n\ - add r5, r12\n\ - ldr r0, _080ACB90 @ =gUnknown_02038696\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - strh r0, [r5, 0xA]\n\ - lsls r0, r2, 24\n\ - lsrs r0, 24\n\ - lsls r4, r2, 3\n\ - subs r4, r2\n\ - lsls r4, 2\n\ - ldr r1, _080ACB94 @ =gSharedMem + 0x19260\n\ - adds r4, r1\n\ - ldrb r1, [r4, 0x13]\n\ - bl sub_80B146C\n\ - movs r0, 0xFF\n\ - strb r0, [r4, 0x13]\n\ - movs r0, 0x1B\n\ - strh r0, [r5, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACB90: .4byte gUnknown_02038696\n\ -_080ACB94: .4byte gSharedMem + 0x19260\n\ -_080ACB98:\n\ - mov r0, r9\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - strh r1, [r0, 0xA]\n\ - strh r1, [r0, 0x1C]\n\ - movs r1, 0x33\n\ - strh r1, [r0, 0x8]\n\ - bl sub_80AF120\n\ - bl _080AD8CA\n\ -_080ACBB0:\n\ - ldr r0, _080ACBD4 @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080ACBC0\n\ - bl _080AD8CA\n\ -_080ACBC0:\n\ - ldr r0, _080ACBD8 @ =gTasks\n\ - mov r4, r8\n\ - lsls r1, r4, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x1C\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACBD4: .4byte gMenuWindow\n\ -_080ACBD8: .4byte gTasks\n\ -_080ACBDC:\n\ - movs r6, 0\n\ - mov r5, r8\n\ - lsls r0, r5, 2\n\ - adds r1, r0, r5\n\ - lsls r1, 3\n\ - add r1, r12\n\ - movs r3, 0xA\n\ - ldrsh r2, [r1, r3]\n\ - ldr r1, _080ACC38 @ =gUnknown_02038696\n\ - mov r9, r0\n\ - ldr r3, _080ACC3C @ =gSharedMem + 0x19260\n\ - adds r5, r1, 0\n\ - ldrb r4, [r5]\n\ - cmp r2, r4\n\ - beq _080ACC08\n\ - adds r1, r2, 0\n\ - adds r2, r5, 0\n\ -_080ACBFE:\n\ - adds r6, 0x1\n\ - adds r0, r6, r2\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - bne _080ACBFE\n\ -_080ACC08:\n\ - lsls r0, r6, 3\n\ - subs r0, r6\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - ldrb r1, [r0, 0xE]\n\ - ldrh r0, [r0, 0x2]\n\ - adds r0, r1\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - negs r1, r1\n\ - lsls r2, r6, 24\n\ - lsrs r2, 24\n\ - bl sub_80AFBA0\n\ - ldr r1, _080ACC40 @ =gTasks\n\ - mov r0, r9\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x1D\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACC38: .4byte gUnknown_02038696\n\ -_080ACC3C: .4byte gSharedMem + 0x19260\n\ -_080ACC40: .4byte gTasks\n\ -_080ACC44:\n\ - movs r6, 0\n\ - mov r5, r8\n\ - lsls r0, r5, 2\n\ - adds r1, r0, r5\n\ - lsls r1, 3\n\ - add r1, r12\n\ - movs r2, 0xA\n\ - ldrsh r3, [r1, r2]\n\ - ldr r1, _080ACC90 @ =gUnknown_02038696\n\ - mov r9, r0\n\ - ldr r2, _080ACC94 @ =gSharedMem + 0x19338\n\ - adds r5, r1, 0\n\ - ldrb r4, [r5]\n\ - cmp r3, r4\n\ - beq _080ACC6C\n\ -_080ACC62:\n\ - adds r6, 0x1\n\ - adds r0, r6, r1\n\ - ldrb r0, [r0]\n\ - cmp r3, r0\n\ - bne _080ACC62\n\ -_080ACC6C:\n\ - lsls r0, r6, 2\n\ - adds r0, r2\n\ - ldrb r1, [r0, 0x2]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080ACC7E\n\ - bl _080AD8CA\n\ -_080ACC7E:\n\ - mov r0, r9\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x27\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACC90: .4byte gUnknown_02038696\n\ -_080ACC94: .4byte gSharedMem + 0x19338\n\ -_080ACC98:\n\ - movs r6, 0\n\ - mov r5, r8\n\ - lsls r0, r5, 2\n\ - adds r1, r0, r5\n\ - lsls r1, 3\n\ - add r1, r12\n\ - movs r3, 0xA\n\ - ldrsh r2, [r1, r3]\n\ - ldr r1, _080ACCE8 @ =gUnknown_02038696\n\ - mov r9, r0\n\ - adds r5, r1, 0\n\ - ldrb r4, [r5]\n\ - cmp r2, r4\n\ - beq _080ACCC2\n\ - adds r1, r2, 0\n\ - adds r2, r5, 0\n\ -_080ACCB8:\n\ - adds r6, 0x1\n\ - adds r0, r6, r2\n\ - ldrb r0, [r0]\n\ - cmp r1, r0\n\ - bne _080ACCB8\n\ -_080ACCC2:\n\ - lsls r0, r6, 24\n\ - lsrs r0, 24\n\ - movs r1, 0x1\n\ - bl sub_80AEE54\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080ACCF0\n\ - ldr r1, _080ACCEC @ =gTasks\n\ - mov r0, r9\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strh r1, [r0, 0x1C]\n\ - movs r1, 0x28\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACCE8: .4byte gUnknown_02038696\n\ -_080ACCEC: .4byte gTasks\n\ -_080ACCF0:\n\ - ldr r0, _080ACCFC @ =gTasks\n\ - mov r1, r9\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - b _080ACD22\n\ - .align 2, 0\n\ -_080ACCFC: .4byte gTasks\n\ -_080ACD00:\n\ - mov r5, r8\n\ - lsls r0, r5, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - mov r2, r12\n\ - adds r1, r0, r2\n\ - ldrh r0, [r1, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x1C]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x14\n\ - bgt _080ACD1E\n\ - bl _080AD8CA\n\ -_080ACD1E:\n\ - movs r0, 0\n\ - strh r0, [r1, 0x1C]\n\ -_080ACD22:\n\ - movs r0, 0x1E\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ -_080ACD2A:\n\ - movs r6, 0\n\ - ldr r2, _080ACD78 @ =gUnknown_02038696\n\ - ldrb r3, [r2]\n\ - mov r4, r8\n\ - lsls r1, r4, 2\n\ - adds r0, r1, r4\n\ - lsls r0, 3\n\ - mov r5, r12\n\ - adds r4, r0, r5\n\ - movs r5, 0xA\n\ - ldrsh r0, [r4, r5]\n\ - mov r9, r1\n\ - adds r5, r2, 0\n\ - cmp r3, r0\n\ - beq _080ACD5E\n\ - adds r3, r5, 0\n\ - adds r2, r4, 0\n\ -_080ACD4C:\n\ - adds r6, 0x1\n\ - cmp r6, 0x3\n\ - bgt _080ACD5E\n\ - adds r0, r6, r3\n\ - ldrb r1, [r0]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r2, r4]\n\ - cmp r1, r0\n\ - bne _080ACD4C\n\ -_080ACD5E:\n\ - lsls r4, r6, 24\n\ - lsrs r0, r4, 24\n\ - bl sub_80AF038\n\ - lsls r0, 24\n\ - adds r5, r4, 0\n\ - cmp r0, 0\n\ - beq _080ACD7C\n\ - movs r0, 0x63\n\ - bl PlaySE\n\ - b _080ACD82\n\ - .align 2, 0\n\ -_080ACD78: .4byte gUnknown_02038696\n\ -_080ACD7C:\n\ - movs r0, 0x64\n\ - bl PlaySE\n\ -_080ACD82:\n\ - lsls r0, r6, 3\n\ - subs r0, r6\n\ - lsls r0, 2\n\ - ldr r1, _080ACDC0 @ =gSharedMem + 0x19260\n\ - adds r4, r0, r1\n\ - ldrb r1, [r4, 0x15]\n\ - movs r0, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080ACDA6\n\ - lsrs r0, r5, 24\n\ - bl sub_80B03A8\n\ - ldrb r1, [r4, 0x15]\n\ - movs r0, 0x21\n\ - negs r0, r0\n\ - ands r0, r1\n\ - strb r0, [r4, 0x15]\n\ -_080ACDA6:\n\ - ldr r0, _080ACDC4 @ =gTasks\n\ - mov r1, r9\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldrh r0, [r1, 0xA]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0xA]\n\ - movs r0, 0x1A\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACDC0: .4byte gSharedMem + 0x19260\n\ -_080ACDC4: .4byte gTasks\n\ -_080ACDC8:\n\ - mov r5, r8\n\ - lsls r2, r5, 2\n\ - adds r0, r2, r5\n\ - lsls r0, 3\n\ - mov r1, r12\n\ - adds r3, r0, r1\n\ - ldrh r0, [r3, 0x1C]\n\ - adds r1, r0, 0x1\n\ - strh r1, [r3, 0x1C]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - mov r9, r2\n\ - cmp r0, 0x9\n\ - bgt _080ACDE8\n\ - bl _080AD8CA\n\ -_080ACDE8:\n\ - movs r0, 0\n\ - strh r0, [r3, 0x1C]\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080ACE48 @ =gSharedMem + 0x19260\n\ - adds r2, r0, r1\n\ - ldrb r1, [r2, 0xC]\n\ - movs r0, 0x6\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080ACE0A\n\ - ldrb r1, [r2, 0x11]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080ACE36\n\ -_080ACE0A:\n\ - bl sub_80AF138\n\ - ldr r0, _080ACE4C @ =gStringVar1\n\ - lsls r1, r7, 6\n\ - ldr r2, _080ACE50 @ =gContestMons + 0x2\n\ - adds r1, r2\n\ - bl StringCopy\n\ - ldr r4, _080ACE54 @ =gStringVar4\n\ - ldr r1, _080ACE58 @ =gUnknown_083CC103\n\ - adds r0, r4, 0\n\ - bl StringExpandPlaceholders\n\ - ldr r0, _080ACE5C @ =gMenuWindow\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r1, 0xF\n\ - str r1, [sp]\n\ - adds r1, r4, 0\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ -_080ACE36:\n\ - ldr r0, _080ACE60 @ =gTasks\n\ - mov r1, r9\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x34\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACE48: .4byte gSharedMem + 0x19260\n\ -_080ACE4C: .4byte gStringVar1\n\ -_080ACE50: .4byte gContestMons + 0x2\n\ -_080ACE54: .4byte gStringVar4\n\ -_080ACE58: .4byte gUnknown_083CC103\n\ -_080ACE5C: .4byte gMenuWindow\n\ -_080ACE60: .4byte gTasks\n\ -_080ACE64:\n\ - ldr r0, _080ACE9C @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080ACE74\n\ - bl _080AD8CA\n\ -_080ACE74:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080ACEA0 @ =gSharedMem + 0x19260\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x15]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080ACEA8\n\ - ldr r0, _080ACEA4 @ =gTasks\n\ - mov r2, r8\n\ - lsls r1, r2, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x11\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACE9C: .4byte gMenuWindow\n\ -_080ACEA0: .4byte gSharedMem + 0x19260\n\ -_080ACEA4: .4byte gTasks\n\ -_080ACEA8:\n\ - ldr r0, _080ACEBC @ =gTasks\n\ - mov r3, r8\n\ - lsls r1, r3, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0xE\n\ - strh r0, [r1, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACEBC: .4byte gTasks\n\ -_080ACEC0:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080ACEE4 @ =gSharedMem + 0x19260\n\ - adds r0, r1\n\ - ldrb r4, [r0, 0x16]\n\ - lsls r4, 24\n\ - lsrs r5, r4, 24\n\ - cmp r5, 0\n\ - beq _080ACF48\n\ - bl sub_80AF138\n\ - asrs r0, r4, 24\n\ - cmp r0, 0x1\n\ - bne _080ACEF0\n\ - ldr r0, _080ACEE8 @ =gMenuWindow\n\ - ldr r1, _080ACEEC @ =gUnknown_083CBD79\n\ - b _080ACEF8\n\ - .align 2, 0\n\ -_080ACEE4: .4byte gSharedMem + 0x19260\n\ -_080ACEE8: .4byte gMenuWindow\n\ -_080ACEEC: .4byte gUnknown_083CBD79\n\ -_080ACEF0:\n\ - cmp r0, 0x2\n\ - bne _080ACF10\n\ - ldr r0, _080ACF08 @ =gMenuWindow\n\ - ldr r1, _080ACF0C @ =gUnknown_083CBD9D\n\ -_080ACEF8:\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r3, 0xF\n\ - str r3, [sp]\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ - b _080ACF22\n\ - .align 2, 0\n\ -_080ACF08: .4byte gMenuWindow\n\ -_080ACF0C: .4byte gUnknown_083CBD9D\n\ -_080ACF10:\n\ - ldr r0, _080ACF3C @ =gMenuWindow\n\ - ldr r1, _080ACF40 @ =gUnknown_083CBDC6\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r3, 0xF\n\ - str r3, [sp]\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ -_080ACF22:\n\ - movs r0, 0x3\n\ - bl sub_80B1710\n\ - ldr r1, _080ACF44 @ =gTasks\n\ - mov r4, r8\n\ - lsls r0, r4, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strh r1, [r0, 0x1C]\n\ - b _080ACF88\n\ - .align 2, 0\n\ -_080ACF3C: .4byte gMenuWindow\n\ -_080ACF40: .4byte gUnknown_083CBDC6\n\ -_080ACF44: .4byte gTasks\n\ -_080ACF48:\n\ - bl sub_80AF138\n\ - ldr r0, _080ACF90 @ =gStringVar1\n\ - lsls r1, r7, 6\n\ - ldr r2, _080ACF94 @ =gContestMons + 0x2\n\ - adds r1, r2\n\ - bl StringCopy\n\ - ldr r4, _080ACF98 @ =gStringVar4\n\ - ldr r1, _080ACF9C @ =gUnknown_083CBD52\n\ - adds r0, r4, 0\n\ - bl StringExpandPlaceholders\n\ - ldr r0, _080ACFA0 @ =gMenuWindow\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r1, 0xF\n\ - str r1, [sp]\n\ - adds r1, r4, 0\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ - movs r0, 0x2\n\ - bl sub_80B1710\n\ - ldr r1, _080ACFA4 @ =gTasks\n\ - mov r2, r8\n\ - lsls r0, r2, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0x1C]\n\ -_080ACF88:\n\ - movs r1, 0x2D\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACF90: .4byte gStringVar1\n\ -_080ACF94: .4byte gContestMons + 0x2\n\ -_080ACF98: .4byte gStringVar4\n\ -_080ACF9C: .4byte gUnknown_083CBD52\n\ -_080ACFA0: .4byte gMenuWindow\n\ -_080ACFA4: .4byte gTasks\n\ -_080ACFA8:\n\ - ldrb r1, [r6, 0x6]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080ACFB6\n\ - bl _080AD8CA\n\ -_080ACFB6:\n\ - ldrb r0, [r6, 0x11]\n\ - bl sub_80B09B0\n\ - ldr r1, _080ACFD0 @ =gTasks\n\ - mov r3, r8\n\ - lsls r0, r3, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0xF\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080ACFD0: .4byte gTasks\n\ -_080ACFD4:\n\ - ldr r0, _080AD034 @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080ACFE4\n\ - bl _080AD8CA\n\ -_080ACFE4:\n\ - ldr r1, _080AD038 @ =gTasks\n\ - mov r4, r8\n\ - lsls r0, r4, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r4, r0, r1\n\ - ldrh r0, [r4, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x1C]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x32\n\ - bgt _080AD002\n\ - bl _080AD8CA\n\ -_080AD002:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080AD03C @ =gSharedMem + 0x19260\n\ - adds r6, r0, r1\n\ - ldrb r1, [r6, 0x15]\n\ - movs r5, 0x10\n\ - adds r0, r5, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080AD02C\n\ - movs r1, 0x2\n\ - ldrsh r0, [r6, r1]\n\ - ldrb r1, [r6, 0x17]\n\ - adds r2, r7, 0\n\ - bl sub_80AFBA0\n\ - ldrh r0, [r6, 0x2]\n\ - ldrb r2, [r6, 0x17]\n\ - adds r0, r2\n\ - strh r0, [r6, 0x2]\n\ -_080AD02C:\n\ - strh r5, [r4, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AD034: .4byte gMenuWindow\n\ -_080AD038: .4byte gTasks\n\ -_080AD03C: .4byte gSharedMem + 0x19260\n\ -_080AD040:\n\ - lsls r0, r7, 2\n\ - ldr r1, _080AD06C @ =gSharedMem + 0x19338\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x2]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0\n\ - beq _080AD058\n\ - bl _080AD8CA\n\ -_080AD058:\n\ - mov r3, r8\n\ - lsls r0, r3, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - strh r1, [r0, 0x1C]\n\ - movs r1, 0x11\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AD06C: .4byte gSharedMem + 0x19338\n\ -_080AD070:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080AD0CC @ =gSharedMem + 0x19260\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x15]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AD0E8\n\ - bl sub_80AF138\n\ - ldr r0, _080AD0D0 @ =gStringVar1\n\ - lsls r1, r7, 6\n\ - ldr r2, _080AD0D4 @ =gContestMons + 0x2\n\ - adds r1, r2\n\ - bl StringCopy\n\ - ldr r4, _080AD0D8 @ =gStringVar4\n\ - ldr r1, _080AD0DC @ =gUnknown_083CC075\n\ - adds r0, r4, 0\n\ - bl StringExpandPlaceholders\n\ - ldr r0, _080AD0E0 @ =gMenuWindow\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r1, 0xF\n\ - str r1, [sp]\n\ - adds r1, r4, 0\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ - ldr r0, _080AD0E4 @ =gTasks\n\ - mov r5, r8\n\ - lsls r4, r5, 2\n\ - add r4, r8\n\ - lsls r4, 3\n\ - adds r4, r0\n\ - movs r0, 0\n\ - strh r0, [r4, 0x1C]\n\ - bl sub_80B1710\n\ - movs r0, 0x2E\n\ - strh r0, [r4, 0x8]\n\ - bl _080AD8CA\n\ - .align 2, 0\n\ -_080AD0CC: .4byte gSharedMem + 0x19260\n\ -_080AD0D0: .4byte gStringVar1\n\ -_080AD0D4: .4byte gContestMons + 0x2\n\ -_080AD0D8: .4byte gStringVar4\n\ -_080AD0DC: .4byte gUnknown_083CC075\n\ -_080AD0E0: .4byte gMenuWindow\n\ -_080AD0E4: .4byte gTasks\n\ -_080AD0E8:\n\ - mov r1, r8\n\ - lsls r0, r1, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x29\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ -_080AD0FA:\n\ - ldrb r1, [r6, 0x6]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AD108\n\ - bl _080AD8CA\n\ -_080AD108:\n\ - mov r2, r8\n\ - lsls r0, r2, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x13\n\ - strh r1, [r0, 0x8]\n\ - bl _080AD8CA\n\ -_080AD11A:\n\ - ldr r0, _080AD15C @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080AD12A\n\ - bl _080AD8CA\n\ -_080AD12A:\n\ - lsls r4, r7, 3\n\ - subs r4, r7\n\ - lsls r4, 2\n\ - ldr r0, _080AD160 @ =gSharedMem + 0x19260\n\ - adds r4, r0\n\ - movs r3, 0x2\n\ - ldrsh r0, [r4, r3]\n\ - ldrb r1, [r4, 0x18]\n\ - negs r1, r1\n\ - adds r2, r7, 0\n\ - bl sub_80AFBA0\n\ - ldrb r1, [r4, 0x18]\n\ - ldrh r0, [r4, 0x2]\n\ - subs r0, r1\n\ - strh r0, [r4, 0x2]\n\ - ldr r1, _080AD164 @ =gTasks\n\ - mov r4, r8\n\ - lsls r0, r4, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x12\n\ - strh r1, [r0, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD15C: .4byte gMenuWindow\n\ -_080AD160: .4byte gSharedMem + 0x19260\n\ -_080AD164: .4byte gTasks\n\ -_080AD168:\n\ - bl sub_80B0D7C\n\ - lsls r0, r7, 2\n\ - ldr r1, _080AD19C @ =gSharedMem + 0x19338\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x2]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - cmp r6, 0\n\ - beq _080AD182\n\ - b _080AD8CA\n\ -_080AD182:\n\ - ldr r0, _080AD1A0 @ =gTasks\n\ - mov r5, r8\n\ - lsls r4, r5, 2\n\ - add r4, r8\n\ - lsls r4, 3\n\ - adds r4, r0\n\ - strh r6, [r4, 0x1C]\n\ - bl sub_80AF138\n\ - movs r0, 0x29\n\ - strh r0, [r4, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD19C: .4byte gSharedMem + 0x19338\n\ -_080AD1A0: .4byte gTasks\n\ -_080AD1A4:\n\ - ldr r2, _080AD1CC @ =gSharedMem + 0x19328\n\ - ldrb r1, [r2, 0x1]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - adds r1, r2, 0\n\ - cmp r0, 0\n\ - beq _080AD1D0\n\ - ldr r0, [r1]\n\ - lsls r0, 20\n\ - lsrs r0, 29\n\ - cmp r7, r0\n\ - beq _080AD1D0\n\ - mov r1, r8\n\ - lsls r0, r1, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r1, 0x39\n\ - strh r1, [r0, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD1CC: .4byte gSharedMem + 0x19328\n\ -_080AD1D0:\n\ - ldrb r4, [r1]\n\ - lsls r2, r7, 3\n\ - subs r0, r2, r7\n\ - lsls r0, 2\n\ - subs r1, 0xC8\n\ - adds r5, r0, r1\n\ - ldrb r1, [r5, 0x11]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - mov r10, r2\n\ - cmp r0, 0\n\ - beq _080AD204\n\ - movs r4, 0x1\n\ - ldr r0, _080AD1FC @ =gStringVar3\n\ - ldrh r2, [r5, 0x6]\n\ - movs r1, 0xD\n\ - muls r1, r2\n\ - ldr r2, _080AD200 @ =gMoveNames\n\ - adds r1, r2\n\ - bl StringCopy\n\ - b _080AD21E\n\ - .align 2, 0\n\ -_080AD1FC: .4byte gStringVar3\n\ -_080AD200: .4byte gMoveNames\n\ -_080AD204:\n\ - ldr r0, _080AD270 @ =gStringVar3\n\ - ldr r3, _080AD274 @ =gUnknown_083CC2D8\n\ - ldr r2, _080AD278 @ =gContestMoves\n\ - ldrh r1, [r5, 0x6]\n\ - lsls r1, 3\n\ - adds r1, r2\n\ - ldrb r1, [r1, 0x1]\n\ - lsls r1, 29\n\ - lsrs r1, 27\n\ - adds r1, r3\n\ - ldr r1, [r1]\n\ - bl StringCopy\n\ -_080AD21E:\n\ - lsls r0, r4, 24\n\ - cmp r0, 0\n\ - ble _080AD23A\n\ - mov r2, r10\n\ - subs r0, r2, r7\n\ - lsls r0, 2\n\ - ldr r1, _080AD27C @ =gSharedMem + 0x19260\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x15]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AD23A\n\ - movs r4, 0\n\ -_080AD23A:\n\ - bl sub_80AF138\n\ - ldr r0, _080AD280 @ =gStringVar1\n\ - lsls r1, r7, 6\n\ - ldr r2, _080AD284 @ =gContestMons + 0x2\n\ - adds r1, r2\n\ - bl StringCopy\n\ - ldr r3, _080AD288 @ =gSharedMem + 0x19204\n\ - ldrb r0, [r3, 0x13]\n\ - lsls r1, r4, 24\n\ - asrs r2, r1, 24\n\ - adds r0, r2, r0\n\ - strb r0, [r3, 0x13]\n\ - lsls r0, 24\n\ - adds r4, r1, 0\n\ - cmp r0, 0\n\ - bge _080AD262\n\ - movs r0, 0\n\ - strb r0, [r3, 0x13]\n\ -_080AD262:\n\ - cmp r2, 0\n\ - bne _080AD290\n\ - ldr r0, _080AD28C @ =gTasks\n\ - mov r3, r8\n\ - lsls r1, r3, 2\n\ - b _080AD6EC\n\ - .align 2, 0\n\ -_080AD270: .4byte gStringVar3\n\ -_080AD274: .4byte gUnknown_083CC2D8\n\ -_080AD278: .4byte gContestMoves\n\ -_080AD27C: .4byte gSharedMem + 0x19260\n\ -_080AD280: .4byte gStringVar1\n\ -_080AD284: .4byte gContestMons + 0x2\n\ -_080AD288: .4byte gSharedMem + 0x19204\n\ -_080AD28C: .4byte gTasks\n\ -_080AD290:\n\ - cmp r2, 0\n\ - bge _080AD2A8\n\ - ldr r0, _080AD2A0 @ =gStringVar4\n\ - ldr r1, _080AD2A4 @ =gUnknown_083CC0BC\n\ - bl StringExpandPlaceholders\n\ - b _080AD2D0\n\ - .align 2, 0\n\ -_080AD2A0: .4byte gStringVar4\n\ -_080AD2A4: .4byte gUnknown_083CC0BC\n\ -_080AD2A8:\n\ - cmp r2, 0\n\ - ble _080AD2C8\n\ - movs r0, 0x13\n\ - ldrsb r0, [r3, r0]\n\ - cmp r0, 0x4\n\ - bgt _080AD2C8\n\ - ldr r0, _080AD2C0 @ =gStringVar4\n\ - ldr r1, _080AD2C4 @ =gUnknown_083CC0A0\n\ - bl StringExpandPlaceholders\n\ - b _080AD2D0\n\ - .align 2, 0\n\ -_080AD2C0: .4byte gStringVar4\n\ -_080AD2C4: .4byte gUnknown_083CC0A0\n\ -_080AD2C8:\n\ - ldr r0, _080AD300 @ =gStringVar4\n\ - ldr r1, _080AD304 @ =gUnknown_083CC0E3\n\ - bl StringExpandPlaceholders\n\ -_080AD2D0:\n\ - ldr r0, _080AD308 @ =gMenuWindow\n\ - ldr r1, _080AD300 @ =gStringVar4\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r3, 0xF\n\ - str r3, [sp]\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ - ldr r1, _080AD30C @ =gTasks\n\ - mov r5, r8\n\ - lsls r0, r5, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r1, r0, r1\n\ - movs r0, 0\n\ - strh r0, [r1, 0x1C]\n\ - strh r0, [r1, 0x1E]\n\ - cmp r4, 0\n\ - bge _080AD310\n\ - movs r0, 0x35\n\ - strh r0, [r1, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD300: .4byte gStringVar4\n\ -_080AD304: .4byte gUnknown_083CC0E3\n\ -_080AD308: .4byte gMenuWindow\n\ -_080AD30C: .4byte gTasks\n\ -_080AD310:\n\ - movs r0, 0x36\n\ - strh r0, [r1, 0x8]\n\ - b _080AD8CA\n\ -_080AD316:\n\ - mov r1, r8\n\ - lsls r0, r1, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - mov r2, r12\n\ - adds r4, r0, r2\n\ - movs r3, 0x1C\n\ - ldrsh r2, [r4, r3]\n\ - cmp r2, 0x1\n\ - beq _080AD354\n\ - cmp r2, 0x1\n\ - bgt _080AD334\n\ - cmp r2, 0\n\ - beq _080AD33E\n\ - b _080AD8CA\n\ -_080AD334:\n\ - cmp r2, 0x2\n\ - beq _080AD37C\n\ - cmp r2, 0x3\n\ - beq _080AD3B0\n\ - b _080AD8CA\n\ -_080AD33E:\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - movs r1, 0x1\n\ - bl sub_80B1EA8\n\ - ldr r0, _080AD350 @ =0x00000187\n\ - bl PlayFanfare\n\ - b _080AD3A8\n\ - .align 2, 0\n\ -_080AD350: .4byte 0x00000187\n\ -_080AD354:\n\ - ldrb r0, [r6, 0x7]\n\ - ands r2, r0\n\ - cmp r2, 0\n\ - beq _080AD35E\n\ - b _080AD8CA\n\ -_080AD35E:\n\ - ldr r0, _080AD378 @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080AD36C\n\ - b _080AD8CA\n\ -_080AD36C:\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - bl sub_80B1CBC\n\ - b _080AD3A8\n\ - .align 2, 0\n\ -_080AD378: .4byte gMenuWindow\n\ -_080AD37C:\n\ - ldrb r1, [r6, 0x6]\n\ - movs r0, 0x20\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r2, 0\n\ - beq _080AD38C\n\ - b _080AD8CA\n\ -_080AD38C:\n\ - ldrh r0, [r4, 0x1E]\n\ - adds r1, r0, 0x1\n\ - strh r1, [r4, 0x1E]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x1D\n\ - bgt _080AD39C\n\ - b _080AD8CA\n\ -_080AD39C:\n\ - strh r2, [r4, 0x1E]\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - adds r0, r1, 0\n\ - bl sub_80B1EA8\n\ -_080AD3A8:\n\ - ldrh r0, [r4, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x1C]\n\ - b _080AD8CA\n\ -_080AD3B0:\n\ - ldr r0, _080AD3CC @ =gPaletteFade\n\ - ldrb r1, [r0, 0x7]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0\n\ - beq _080AD3C2\n\ - b _080AD8CA\n\ -_080AD3C2:\n\ - strh r0, [r4, 0x1C]\n\ - strh r0, [r4, 0x1E]\n\ - movs r0, 0x2B\n\ - strh r0, [r4, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD3CC: .4byte gPaletteFade\n\ -_080AD3D0:\n\ - mov r4, r8\n\ - lsls r1, r4, 2\n\ - adds r0, r1, r4\n\ - lsls r0, 3\n\ - add r0, r12\n\ - movs r5, 0x1C\n\ - ldrsh r0, [r0, r5]\n\ - mov r9, r1\n\ - cmp r0, 0x4\n\ - bls _080AD3E6\n\ - b _080AD8CA\n\ -_080AD3E6:\n\ - lsls r0, 2\n\ - ldr r1, _080AD3F0 @ =_080AD3F4\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080AD3F0: .4byte _080AD3F4\n\ - .align 2, 0\n\ -_080AD3F4:\n\ - .4byte _080AD408\n\ - .4byte _080AD420\n\ - .4byte _080AD43E\n\ - .4byte _080AD4A0\n\ - .4byte _080AD4EC\n\ -_080AD408:\n\ - ldr r0, _080AD41C @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080AD416\n\ - b _080AD8CA\n\ -_080AD416:\n\ - movs r0, 0x1\n\ - movs r1, 0x1\n\ - b _080AD4C8\n\ - .align 2, 0\n\ -_080AD41C: .4byte gMenuWindow\n\ -_080AD420:\n\ - ldrb r1, [r6, 0x7]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AD42C\n\ - b _080AD8CA\n\ -_080AD42C:\n\ - bl sub_80B1DDC\n\ - movs r0, 0xDF\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - bl sub_80B1CBC\n\ - b _080AD4CC\n\ -_080AD43E:\n\ - ldrb r1, [r6, 0x6]\n\ - movs r0, 0x20\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r2, 0\n\ - beq _080AD44E\n\ - b _080AD8CA\n\ -_080AD44E:\n\ - mov r0, r9\n\ - add r0, r8\n\ - lsls r0, 3\n\ - mov r1, r12\n\ - adds r3, r0, r1\n\ - ldrh r0, [r3, 0x1E]\n\ - adds r1, r0, 0x1\n\ - strh r1, [r3, 0x1E]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x1D\n\ - bgt _080AD468\n\ - b _080AD8CA\n\ -_080AD468:\n\ - strh r2, [r3, 0x1E]\n\ - lsls r4, r7, 3\n\ - subs r4, r7\n\ - lsls r4, 2\n\ - adds r0, r6, 0\n\ - adds r0, 0x5C\n\ - adds r4, r0\n\ - movs r2, 0x2\n\ - ldrsh r0, [r4, r2]\n\ - movs r1, 0x92\n\ - lsls r1, 1\n\ - adds r5, r6, r1\n\ - movs r1, 0x2\n\ - ldrsb r1, [r5, r1]\n\ - adds r2, r7, 0\n\ - str r3, [sp, 0x4]\n\ - bl sub_80AFBA0\n\ - movs r0, 0x2\n\ - ldrsb r0, [r5, r0]\n\ - ldrh r2, [r4, 0x2]\n\ - adds r0, r2\n\ - strh r0, [r4, 0x2]\n\ - ldr r3, [sp, 0x4]\n\ - ldrh r0, [r3, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x1C]\n\ - b _080AD8CA\n\ -_080AD4A0:\n\ - lsls r0, r7, 2\n\ - ldr r2, _080AD4E0 @ =gSharedMem + 0x19338\n\ - adds r0, r2\n\ - ldrb r1, [r0, 0x2]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AD4B2\n\ - b _080AD8CA\n\ -_080AD4B2:\n\ - ldr r3, _080AD4E4 @ =0xfffffecc\n\ - adds r0, r2, r3\n\ - ldrb r1, [r0, 0x6]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AD4C2\n\ - b _080AD8CA\n\ -_080AD4C2:\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - movs r0, 0x1\n\ -_080AD4C8:\n\ - bl sub_80B1EA8\n\ -_080AD4CC:\n\ - ldr r0, _080AD4E8 @ =gTasks\n\ - mov r1, r9\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldrh r0, [r1, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x1C]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD4E0: .4byte gSharedMem + 0x19338\n\ -_080AD4E4: .4byte 0xfffffecc\n\ -_080AD4E8: .4byte gTasks\n\ -_080AD4EC:\n\ - ldr r0, _080AD510 @ =gPaletteFade\n\ - ldrb r1, [r0, 0x7]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0\n\ - beq _080AD4FE\n\ - b _080AD8CA\n\ -_080AD4FE:\n\ - mov r0, r9\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - strh r1, [r0, 0x1C]\n\ - strh r1, [r0, 0x1E]\n\ - movs r1, 0x2B\n\ - strh r1, [r0, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD510: .4byte gPaletteFade\n\ -_080AD514:\n\ - lsls r0, r7, 2\n\ - ldr r1, _080AD534 @ =gSharedMem + 0x19338\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x2]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AD526\n\ - b _080AD8CA\n\ -_080AD526:\n\ - bl sub_80AF138\n\ - ldr r0, _080AD538 @ =gTasks\n\ - mov r4, r8\n\ - lsls r1, r4, 2\n\ - b _080AD6EC\n\ - .align 2, 0\n\ -_080AD534: .4byte gSharedMem + 0x19338\n\ -_080AD538: .4byte gTasks\n\ -_080AD53C:\n\ - bl sub_80AF138\n\ - ldr r0, _080AD5A8 @ =gStringVar3\n\ - ldr r4, _080AD5AC @ =gSharedMem + 0x19328\n\ - ldr r1, [r4]\n\ - lsls r1, 20\n\ - lsrs r1, 29\n\ - lsls r1, 6\n\ - ldr r5, _080AD5B0 @ =gContestMons + 0x2\n\ - adds r1, r5\n\ - bl StringCopy\n\ - ldr r0, _080AD5B4 @ =gStringVar1\n\ - lsls r1, r7, 6\n\ - adds r1, r5\n\ - bl StringCopy\n\ - ldr r0, _080AD5B8 @ =gStringVar2\n\ - lsls r1, r7, 3\n\ - subs r1, r7\n\ - lsls r1, 2\n\ - subs r4, 0xC8\n\ - adds r1, r4\n\ - ldrh r2, [r1, 0x6]\n\ - movs r1, 0xD\n\ - muls r1, r2\n\ - ldr r2, _080AD5BC @ =gMoveNames\n\ - adds r1, r2\n\ - bl StringCopy\n\ - ldr r4, _080AD5C0 @ =gStringVar4\n\ - ldr r1, _080AD5C4 @ =gUnknown_083CC14A\n\ - adds r0, r4, 0\n\ - bl StringExpandPlaceholders\n\ - ldr r0, _080AD5C8 @ =gMenuWindow\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r1, 0xF\n\ - str r1, [sp]\n\ - adds r1, r4, 0\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ - ldr r1, _080AD5CC @ =gTasks\n\ - mov r5, r8\n\ - lsls r0, r5, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x3A\n\ - strh r1, [r0, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD5A8: .4byte gStringVar3\n\ -_080AD5AC: .4byte gSharedMem + 0x19328\n\ -_080AD5B0: .4byte gContestMons + 0x2\n\ -_080AD5B4: .4byte gStringVar1\n\ -_080AD5B8: .4byte gStringVar2\n\ -_080AD5BC: .4byte gMoveNames\n\ -_080AD5C0: .4byte gStringVar4\n\ -_080AD5C4: .4byte gUnknown_083CC14A\n\ -_080AD5C8: .4byte gMenuWindow\n\ -_080AD5CC: .4byte gTasks\n\ -_080AD5D0:\n\ - ldr r5, _080AD614 @ =gMenuWindow\n\ - adds r0, r5, 0\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080AD5E0\n\ - b _080AD8CA\n\ -_080AD5E0:\n\ - bl sub_80AF138\n\ - ldr r4, _080AD618 @ =gStringVar4\n\ - ldr r1, _080AD61C @ =gUnknown_083CC16E\n\ - adds r0, r4, 0\n\ - bl StringExpandPlaceholders\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r0, 0xF\n\ - str r0, [sp]\n\ - adds r0, r5, 0\n\ - adds r1, r4, 0\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ - ldr r1, _080AD620 @ =gTasks\n\ - mov r2, r8\n\ - lsls r0, r2, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x3B\n\ - strh r1, [r0, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD614: .4byte gMenuWindow\n\ -_080AD618: .4byte gStringVar4\n\ -_080AD61C: .4byte gUnknown_083CC16E\n\ -_080AD620: .4byte gTasks\n\ -_080AD624:\n\ - ldr r0, _080AD640 @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080AD632\n\ - b _080AD8CA\n\ -_080AD632:\n\ - bl sub_80AF138\n\ - ldr r0, _080AD644 @ =gTasks\n\ - mov r3, r8\n\ - lsls r1, r3, 2\n\ - b _080AD6EC\n\ - .align 2, 0\n\ -_080AD640: .4byte gMenuWindow\n\ -_080AD644: .4byte gTasks\n\ -_080AD648:\n\ - lsls r0, r7, 3\n\ - subs r0, r7\n\ - lsls r0, 2\n\ - ldr r1, _080AD6B4 @ =gSharedMem + 0x19260\n\ - adds r4, r0, r1\n\ - ldrb r1, [r4, 0x15]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080AD664\n\ - movs r0, 0x11\n\ - negs r0, r0\n\ - ands r0, r1\n\ - strb r0, [r4, 0x15]\n\ -_080AD664:\n\ - adds r0, r7, 0\n\ - bl sub_80B09B0\n\ - ldr r0, _080AD6B8 @ =gStringVar1\n\ - lsls r1, r7, 6\n\ - ldr r2, _080AD6BC @ =gContestMons + 0x2\n\ - adds r1, r2\n\ - bl StringCopy\n\ - ldr r0, _080AD6C0 @ =gStringVar2\n\ - ldrh r2, [r4, 0x6]\n\ - movs r1, 0xD\n\ - muls r1, r2\n\ - ldr r2, _080AD6C4 @ =gMoveNames\n\ - adds r1, r2\n\ - bl StringCopy\n\ - ldr r4, _080AD6C8 @ =gStringVar4\n\ - ldr r1, _080AD6CC @ =gUnknown_083CBF60\n\ - adds r0, r4, 0\n\ - bl StringExpandPlaceholders\n\ - ldr r0, _080AD6D0 @ =gMenuWindow\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r1, 0xF\n\ - str r1, [sp]\n\ - adds r1, r4, 0\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ - ldr r1, _080AD6D4 @ =gTasks\n\ - mov r4, r8\n\ - lsls r0, r4, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x22\n\ - strh r1, [r0, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD6B4: .4byte gSharedMem + 0x19260\n\ -_080AD6B8: .4byte gStringVar1\n\ -_080AD6BC: .4byte gContestMons + 0x2\n\ -_080AD6C0: .4byte gStringVar2\n\ -_080AD6C4: .4byte gMoveNames\n\ -_080AD6C8: .4byte gStringVar4\n\ -_080AD6CC: .4byte gUnknown_083CBF60\n\ -_080AD6D0: .4byte gMenuWindow\n\ -_080AD6D4: .4byte gTasks\n\ -_080AD6D8:\n\ - ldr r0, _080AD6F8 @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080AD6E6\n\ - b _080AD8CA\n\ -_080AD6E6:\n\ - ldr r0, _080AD6FC @ =gTasks\n\ - mov r5, r8\n\ - lsls r1, r5, 2\n\ -_080AD6EC:\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x37\n\ - strh r0, [r1, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD6F8: .4byte gMenuWindow\n\ -_080AD6FC: .4byte gTasks\n\ -_080AD700:\n\ - bl sub_80B1BDC\n\ - ldr r0, _080AD718 @ =gTasks\n\ - mov r2, r8\n\ - lsls r1, r2, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x38\n\ - strh r0, [r1, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD718: .4byte gTasks\n\ -_080AD71C:\n\ - ldrb r1, [r6, 0x6]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0\n\ - beq _080AD72C\n\ - b _080AD8CA\n\ -_080AD72C:\n\ - movs r0, 0x13\n\ - ldrsb r0, [r6, r0]\n\ - cmp r0, 0x4\n\ - ble _080AD73A\n\ - strb r1, [r6, 0x13]\n\ - bl sub_80B1928\n\ -_080AD73A:\n\ - ldr r0, _080AD74C @ =gTasks\n\ - mov r3, r8\n\ - lsls r1, r3, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0xA\n\ - strh r0, [r1, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD74C: .4byte gTasks\n\ -_080AD750:\n\ - mov r4, r8\n\ - lsls r2, r4, 2\n\ - add r2, r8\n\ - lsls r2, 3\n\ - add r2, r12\n\ - ldrb r5, [r2, 0xC]\n\ - ldr r1, _080AD774 @ =gSprites\n\ - lsls r0, r5, 4\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r1, 0x1C\n\ - adds r0, r1\n\ - ldr r1, _080AD778 @ =sub_80AD92C\n\ - str r1, [r0]\n\ - movs r0, 0xB\n\ - strh r0, [r2, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD774: .4byte gSprites\n\ -_080AD778: .4byte sub_80AD92C\n\ -_080AD77C:\n\ - mov r5, r8\n\ - lsls r0, r5, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - mov r1, r12\n\ - adds r4, r0, r1\n\ - ldrb r5, [r4, 0xC]\n\ - ldr r1, _080AD7B4 @ =gSprites\n\ - lsls r0, r5, 4\n\ - adds r0, r5\n\ - lsls r0, 2\n\ - adds r6, r0, r1\n\ - adds r0, r6, 0\n\ - adds r0, 0x3E\n\ - ldrb r0, [r0]\n\ - lsls r0, 29\n\ - cmp r0, 0\n\ - blt _080AD7A2\n\ - b _080AD8CA\n\ -_080AD7A2:\n\ - adds r0, r6, 0\n\ - bl FreeSpriteOamMatrix\n\ - adds r0, r6, 0\n\ - bl DestroySprite\n\ - movs r0, 0x14\n\ - strh r0, [r4, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD7B4: .4byte gSprites\n\ -_080AD7B8:\n\ - movs r6, 0\n\ - mov r2, r8\n\ - lsls r2, 2\n\ - mov r9, r2\n\ -_080AD7C0:\n\ - lsls r0, r6, 24\n\ - lsrs r0, 24\n\ - movs r1, 0x1\n\ - bl sub_80B0CDC\n\ - adds r6, 0x1\n\ - cmp r6, 0x3\n\ - ble _080AD7C0\n\ - ldr r1, _080AD7E4 @ =gTasks\n\ - mov r0, r9\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strh r1, [r0, 0x1C]\n\ - movs r1, 0x15\n\ - strh r1, [r0, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD7E4: .4byte gTasks\n\ -_080AD7E8:\n\ - bl sub_80AF138\n\ - ldr r0, _080AD828 @ =gStringVar1\n\ - lsls r1, r7, 6\n\ - ldr r2, _080AD82C @ =gContestMons + 0x2\n\ - adds r1, r2\n\ - bl StringCopy\n\ - ldr r4, _080AD830 @ =gStringVar4\n\ - ldr r1, _080AD834 @ =gUnknown_083CB00D\n\ - adds r0, r4, 0\n\ - bl StringExpandPlaceholders\n\ - ldr r0, _080AD838 @ =gMenuWindow\n\ - movs r2, 0xC2\n\ - lsls r2, 2\n\ - movs r1, 0xF\n\ - str r1, [sp]\n\ - adds r1, r4, 0\n\ - movs r3, 0x1\n\ - bl sub_8002EB0\n\ - ldr r1, _080AD83C @ =gTasks\n\ - mov r3, r8\n\ - lsls r0, r3, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x20\n\ - strh r1, [r0, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD828: .4byte gStringVar1\n\ -_080AD82C: .4byte gContestMons + 0x2\n\ -_080AD830: .4byte gStringVar4\n\ -_080AD834: .4byte gUnknown_083CB00D\n\ -_080AD838: .4byte gMenuWindow\n\ -_080AD83C: .4byte gTasks\n\ -_080AD840:\n\ - ldr r0, _080AD860 @ =gMenuWindow\n\ - bl sub_80037A0\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080AD8CA\n\ - ldr r0, _080AD864 @ =gTasks\n\ - mov r4, r8\n\ - lsls r1, r4, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0x15\n\ - strh r0, [r1, 0x8]\n\ - b _080AD8CA\n\ - .align 2, 0\n\ -_080AD860: .4byte gMenuWindow\n\ -_080AD864: .4byte gTasks\n\ -_080AD868:\n\ - mov r5, r8\n\ - lsls r0, r5, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - mov r2, r12\n\ - adds r1, r0, r2\n\ - ldrh r0, [r1, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x1C]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x1D\n\ - ble _080AD8CA\n\ - movs r0, 0\n\ - strh r0, [r1, 0x1C]\n\ - movs r0, 0x16\n\ - strh r0, [r1, 0x8]\n\ - b _080AD8CA\n\ -_080AD88C:\n\ - ldrb r0, [r6, 0x10]\n\ - adds r0, 0x1\n\ - movs r1, 0\n\ - strb r0, [r6, 0x10]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x4\n\ - bne _080AD8B8\n\ - mov r3, r8\n\ - lsls r0, r3, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - strh r1, [r0, 0x8]\n\ - strh r1, [r0, 0xA]\n\ - strh r1, [r0, 0xC]\n\ - ldr r1, _080AD8B4 @ =sub_80AD960\n\ - str r1, [r0]\n\ - b _080AD8C4\n\ - .align 2, 0\n\ -_080AD8B4: .4byte sub_80AD960\n\ -_080AD8B8:\n\ - mov r4, r8\n\ - lsls r0, r4, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - add r0, r12\n\ - strh r1, [r0, 0x8]\n\ -_080AD8C4:\n\ - movs r0, 0\n\ - bl nullsub_18\n\ -_080AD8CA:\n\ - add sp, 0x8\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} void sub_80AD8DC(u8 taskId) { @@ -5014,8 +1966,7 @@ void sub_80ADB48(u8 taskId) void sub_80ADB88(u8 taskId) { - struct UnknownContestStruct1 *s = &shared19260.unk19260[gContestPlayerMonIndex]; - u8 r4 = s->unk1A; + u8 r4 = shared19260_[gContestPlayerMonIndex].unk1A; sub_80AF138(); StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname); @@ -5089,16 +2040,14 @@ void sub_80ADD74(u8 taskId) void sub_80ADDA4(u8 taskId) { s32 i; - struct UnknownContestStruct1 *s; gUnknown_030042A0 = 0; gUnknown_03004280 = 0; for (i = 0; i < 4; i++) - gUnknown_02038680[i] = shared19260.unk19260[i].unk4; + gUnknown_02038680[i] = shared19260_[i].unk4; sub_80AF668(); sub_80AF138(); - s = &shared19260.unk19260[gContestPlayerMonIndex]; - sub_80BE23C(s->unk8); + sub_80BE23C(shared19260_[gContestPlayerMonIndex].unk8); gUnknown_03005D28 = gRngValue; StringExpandPlaceholders(gStringVar4, gUnknown_083CB02C); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); @@ -5733,23 +2682,23 @@ void sub_80AED58(void) void sub_80AED7C(u16 a, u8 b) { u8 r5 = gUnknown_02038696[b] * 5 + 2; - + if (sub_80AF59C(b) == 0 && a != 0) { u16 tile = sub_80AEB68(a, b); - + *(u16 *)(VRAM + 0xC028 + r5 * 64) = tile; *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = tile + 1; - + *(u16 *)(VRAM + 0xC068 + r5 * 64) = tile + 16; *(u16 *)(VRAM + 0xC068 + r5 * 64 + 2) = tile + 17; - + } else { *(u16 *)(VRAM + 0xC028 + r5 * 64) = 0; *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = 0; - + *(u16 *)(VRAM + 0xC068 + r5 * 64) = 0; *(u16 *)(VRAM + 0xC068 + r5 * 64 + 2) = 0; } @@ -5758,13 +2707,9 @@ void sub_80AED7C(u16 a, u8 b) void unref_sub_80AEE20(void) { u8 i; - + for (i = 0; i < 4; i++) - { - struct UnknownContestStruct1 *s = &shared19260.unk19260[i]; - - sub_80AED7C(s->unk6, i); - } + sub_80AED7C(shared19260_[i].unk6, i); } u16 sub_80AEE4C(u8 unused) @@ -5774,52 +2719,41 @@ u16 sub_80AEE4C(u8 unused) bool8 sub_80AEE54(u8 a, u8 b) { - struct UnknownContestStruct1 *s = &shared19260.unk19260[a]; u8 r9; u16 r8; s32 r4; - - if (s->unk10_4 == 0) + + if (shared19260_[a].unk10_4 == 0) return FALSE; r9 = gUnknown_02038696[a] * 5 + 2; - if (s->unk10_4 == 1) + if (shared19260_[a].unk10_4 == 1) { - struct UnknownContestStruct1 *r5; - r8 = sub_80AEE4C(a); r4 = 0; - while (1) + while (shared19260_[a].unkD / 10 > r4) { - r5 = &shared19260.unk19260[a]; - if (r5->unkD / 10 <= r4) - break; *(u16 *)(VRAM + 0xC026 + (r9 + r4) * 64) = r8; r4++; } if (b != 0) { PlaySE(SE_EXPMAX); - r5->unk10_4 = 0; + shared19260_[a].unk10_4 = 0; } } else { - struct UnknownContestStruct1 *r5; - r8 = 0; r4 = 3; - while (1) + while (shared19260_[a].unkD / 10 < r4) { - r5 = &shared19260.unk19260[a]; - if (r5->unkD / 10 >= r4) - break; *(u16 *)(VRAM + 0xBFE6 + (r9 + r4) * 64) = r8; r4--; } if (b != 0) { PlaySE(SE_FU_ZAKU2); - r5->unk10_4 = 0; + shared19260_[a].unk10_4 = 0; } } return TRUE; @@ -5829,19 +2763,15 @@ void sub_80AEF50(void) { s32 i; s32 r4; - + for (i = 0; i < 4; i++) { - struct UnknownContestStruct1 *s; u8 r8 = gUnknown_02038696[i] * 5 + 2; u16 r6 = sub_80AEE4C(i); - + r4 = 0; - while (1) + while (r4 < shared19260_[i].unkD / 10) { - s = &shared19260.unk19260[i]; - if (r4 >= s->unkD / 10) - break; *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6; r4++; } @@ -5857,7 +2787,7 @@ void sub_80AEF50(void) u16 sub_80AEFE8(int unused, u8 b) { u16 var = 0; - + switch (b) { case 0: -- cgit v1.2.3 From 967cb5899f0d2f0b11569c2a19a694652628e438 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 17 Dec 2017 21:30:59 -0600 Subject: fix build --- src/contest.c | 86 +++++++++++++++++++++++++++++++++++++++++++----- src/pokemon/learn_move.c | 2 -- 2 files changed, 78 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index c4fd99e32..b0f7c6381 100644 --- a/src/contest.c +++ b/src/contest.c @@ -31,6 +31,8 @@ extern bool8 AreMovesContestCombo(u16, u16); extern void sub_80C8A38(u8); extern void sub_80C8AD0(u8); extern void sub_80C8C80(u8); +extern void sub_81288F4(); +extern u8 sub_8128944(void); struct Shared18000 { @@ -92,11 +94,12 @@ struct UnknownContestStruct1 u8 unkC; s8 unkD; u8 unkE; - u8 fillerF; - u8 unk10_0:4; + u8 unkF; + u8 unk10_0:2; + u8 unk10_2:2; u8 unk10_4:2; // definitely a bitfield u8 unk11; - u8 filler12; + u8 unk12; u8 unk13; u8 unk14; u8 unk15_0:1; // Is this a bitfield or not? sub_80ABCDC says no. @@ -233,14 +236,12 @@ extern const u8 gUnknown_083CC14A[]; extern const u8 gUnknown_083CC16E[]; extern const u8 *const gUnknown_083CC2D8[]; extern const u8 *const gUnknown_083CC330[]; -extern const struct ContestMove gContestMoves[]; extern const u8 gUnknownText_UnknownFormatting2[]; extern const u8 gUnknownText_UnknownFormatting3[]; extern const u8 gUnknown_083CB02C[]; extern const u8 *const gUnknown_083CB2F0[]; extern const u8 gUnknown_083CC59C[]; extern const u8 gUnknown_083CC5A2[]; -extern const u8 *const gContestEffectStrings[]; void sub_80AB350(void); @@ -307,7 +308,7 @@ void sub_80AEB30(void); void sub_80AEBEC(u16); void sub_80AED58(void); bool8 sub_80AEE54(u8, u8); -u8 sub_80AF038(u8); +bool8 sub_80AF038(u8); void sub_80AF120(void); void sub_80AF138(void); u16 sub_80AF15C(u8); @@ -1358,7 +1359,7 @@ void sub_80AC2CC(u8 taskId) } return; case 50: - if (sub_80AF038(r7) != 0) + if (sub_80AF038(r7)) PlaySE(SE_C_PASI); gTasks[taskId].data[0] = 25; return; @@ -1444,7 +1445,7 @@ void sub_80AC2CC(u8 taskId) if (gUnknown_02038696[r6] == gTasks[taskId].data[1]) break; } - if (sub_80AF038(r6) != 0) + if (sub_80AF038(r6)) PlaySE(SE_C_PASI); else PlaySE(SE_C_SYU); @@ -2810,3 +2811,72 @@ u16 sub_80AEFE8(int unused, u8 b) return var; } +bool8 sub_80AF038(u8 a) +{ + bool8 r5 = TRUE; + u16 r4 = 0; + u8 r6 = gUnknown_02038696[a] * 5 + 2; + + if (shared19260_[a].unk10_0 != 0 || shared19260_[a].unk12 != 0 || shared19260_[a].unkF != 0) + r4 = sub_80AEFE8(a, 0); + else if (shared19260_[a].unkC & 1) + r4 = sub_80AEFE8(a, 1); + else if ((shared19260_[a].unkC & 6) || (shared19260_[a].unkB & 0x80)) + r4 = sub_80AEFE8(a, 2); + else + r5 = FALSE; + if (r5) + { + *(u16 *)(VRAM + 0xC028 + r6 * 64) = r4; + *(u16 *)(VRAM + 0xC028 + r6 * 64 + 2) = r4 + 1; + *(u16 *)(VRAM + 0xC068 + r6 * 64) = r4 + 16; + *(u16 *)(VRAM + 0xC068 + r6 * 64 + 2) = r4 + 17; + } + else + { + *(u16 *)(VRAM + 0xC028 + r6 * 64) = 0; + *(u16 *)(VRAM + 0xC028 + r6 * 64 + 2) = 0; + *(u16 *)(VRAM + 0xC068 + r6 * 64) = 0; + *(u16 *)(VRAM + 0xC068 + r6 * 64 + 2) = 0; + } + return r5; +} + +void sub_80AF120(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + sub_80AF038(i); +} + +void sub_80AF138(void) +{ + FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 1, 15, 17, 18); +} + +u16 sub_80AF15C(u8 a) +{ + if (sub_80AF59C(a) != 0) + return 0; + if (a == gContestPlayerMonIndex) + { + return gContestMons[a].moves[shared19204.unk19204]; + } + else + { + u8 moveChoice; + + sub_81288F4(a); + moveChoice = sub_8128944(); + return gContestMons[a].moves[moveChoice]; + } +} + +void sub_80AF1B8(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + shared19260_[i].unk6 = sub_80AF15C(i); +} diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c index d2538decd..5eee45b23 100644 --- a/src/pokemon/learn_move.c +++ b/src/pokemon/learn_move.c @@ -25,8 +25,6 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u8 gTileBuffer[]; -extern const struct ContestMove gContestMoves[]; -extern const struct ContestEffect gContestEffects[]; extern const struct WindowConfig gWindowConfig_81E6CE4; extern const struct WindowConfig gWindowConfig_81E7240; extern const u8 *const gContestEffectStrings[]; -- cgit v1.2.3 From 03d266af21522fc1e273e7ee09546c5d836a39a2 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 17 Dec 2017 21:46:32 -0600 Subject: get sub_80AB398 to match --- src/contest.c | 151 +++++----------------------------------------------------- 1 file changed, 13 insertions(+), 138 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index b0f7c6381..ff460198f 100644 --- a/src/contest.c +++ b/src/contest.c @@ -79,13 +79,9 @@ struct UnknownContestStruct1 u16 unk6; // move u16 unk8; u8 unkA; // contest category - /* u8 unkB_0:2; - u8 unkB_2:1; - u8 unkB_3:4; + u8 unkB_2:5; u8 unkB_7:1; - */ - u8 unkB; /* u8 unkC_0:1; u8 unkC_1:1; @@ -172,6 +168,7 @@ struct Shared19260 // These are separate structs because sub_80AC2CC requires that to match. #define shared19260_ ((struct UnknownContestStruct1 *)(gSharedMem + 0x19260)) #define shared192D0 (gSharedMem + 0x192D0) +#define shared192E4 (gSharedMem + 0x192E4) #define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328)) #define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338)) #define shared19348 ((struct UnknownContestStruct3 *)(gSharedMem + 0x19348)) @@ -440,156 +437,34 @@ void sub_80AB350(void) FillPalette(0x7E3F, 0xF3, 2); } -// Can't figure out whether bitfields were used or not -#ifdef NONMATCHING void sub_80AB398(void) { s32 i; - memset(&shared19204, 0, sizeof(shared19204)); // TODO: How is this struct divided? + memset(&shared19204, 0, sizeof(shared19204)); for (i = 0; i < 4; i++) shared19204.unk19206[i] = 0xFF; for (i = 0; i < 4; i++) - memset(&shared19260.unk19260[i], 0, sizeof(shared19260.unk19260[i])); + memset(&shared19260_[i], 0, sizeof(shared19260_[i])); for (i = 0; i < 4; i++) { - /* - shared19260.unk19260[i].unkB &= ~3; - shared19260.unk19260[i].unk13 = 0xFF; - shared19260.unk19260[i].unk14 = 0xFF; - */ - shared19260_[i].unkB &= ~3; + shared19260_[i].unkB_0 = 0; shared19260_[i].unk13 = 0xFF; shared19260_[i].unk14 = 0xFF; } - memset(&shared19260.unk192D0, 0, sizeof(shared19260.unk192D0)); - memset(&shared19260.unk192E4, 0, sizeof(shared19260.unk192E4)); - memset(&shared19260.unk19328, 0, sizeof(shared19260.unk19328)); - memset(&shared19260.unk19338, 0, sizeof(shared19260.unk19338)); - if (!(gIsLinkContest & 1)) // wat? + memset(shared192D0, 0, 20 * sizeof(*shared192D0)); + memset(shared192E4, 0, 0x44 * sizeof(*shared192E4)); + memset(&shared19328, 0, sizeof(shared19328)); + memset(shared19338, 0, 4 * sizeof(*shared19338)); + if (!(gIsLinkContest & 1)) sub_80B0F28(0); for (i = 0; i < 4; i++) { - shared19260.unk19260[i].unk19 = 0xFF; + shared19260_[i].unk19 = 0xFF; shared19204.unk19218[i] = gUnknown_02038696[i]; } sub_80B159C(); } -#else -__attribute__((naked)) -void sub_80AB398(void) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r4, _080AB468 @ =gSharedMem + 0x19204\n\ - adds r0, r4, 0\n\ - movs r1, 0\n\ - movs r2, 0x5C\n\ - bl memset\n\ - movs r5, 0\n\ - adds r4, 0x2\n\ - movs r2, 0xFF\n\ -_080AB3AC:\n\ - adds r1, r5, r4\n\ - ldrb r0, [r1]\n\ - orrs r0, r2\n\ - strb r0, [r1]\n\ - adds r5, 0x1\n\ - cmp r5, 0x3\n\ - ble _080AB3AC\n\ - ldr r4, _080AB46C @ =gSharedMem + 0x19260\n\ - movs r5, 0x3\n\ -_080AB3BE:\n\ - adds r0, r4, 0\n\ - movs r1, 0\n\ - movs r2, 0x1C\n\ - bl memset\n\ - adds r4, 0x1C\n\ - subs r5, 0x1\n\ - cmp r5, 0\n\ - bge _080AB3BE\n\ - ldr r4, _080AB470 @ =gSharedMem + 0x192D0\n\ - movs r6, 0x4\n\ - negs r6, r6\n\ - movs r3, 0xFF\n\ - adds r2, r4, 0\n\ - subs r2, 0x65\n\ - movs r5, 0x3\n\ -_080AB3DE:\n\ - ldrb r1, [r2]\n\ - adds r0, r6, 0\n\ - ands r0, r1\n\ - strb r0, [r2]\n\ - ldrb r0, [r2, 0x8]\n\ - orrs r0, r3\n\ - strb r0, [r2, 0x8]\n\ - ldrb r0, [r2, 0x9]\n\ - orrs r0, r3\n\ - strb r0, [r2, 0x9]\n\ - adds r2, 0x1C\n\ - subs r5, 0x1\n\ - cmp r5, 0\n\ - bge _080AB3DE\n\ - adds r0, r4, 0\n\ - movs r1, 0\n\ - movs r2, 0x14\n\ - bl memset\n\ - adds r0, r4, 0\n\ - adds r0, 0x14\n\ - movs r1, 0\n\ - movs r2, 0x44\n\ - bl memset\n\ - adds r0, r4, 0\n\ - adds r0, 0x58\n\ - movs r1, 0\n\ - movs r2, 0x4\n\ - bl memset\n\ - adds r0, r4, 0\n\ - adds r0, 0x68\n\ - movs r1, 0\n\ - movs r2, 0x10\n\ - bl memset\n\ - ldr r0, _080AB474 @ =gIsLinkContest\n\ - ldrb r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080AB43A\n\ - movs r0, 0\n\ - bl sub_80B0F28\n\ -_080AB43A:\n\ - movs r5, 0\n\ - movs r6, 0xFF\n\ - adds r3, r4, 0\n\ - subs r3, 0xB8\n\ - adds r2, r4, 0\n\ - subs r2, 0x57\n\ - ldr r4, _080AB478 @ =gUnknown_02038696\n\ -_080AB448:\n\ - ldrb r0, [r2]\n\ - orrs r0, r6\n\ - strb r0, [r2]\n\ - adds r1, r3, r5\n\ - adds r0, r5, r4\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r2, 0x1C\n\ - adds r5, 0x1\n\ - cmp r5, 0x3\n\ - ble _080AB448\n\ - bl sub_80B159C\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080AB468: .4byte gSharedMem + 0x19204\n\ -_080AB46C: .4byte gSharedMem + 0x19260\n\ -_080AB470: .4byte gSharedMem + 0x192D0\n\ -_080AB474: .4byte gIsLinkContest\n\ -_080AB478: .4byte gUnknown_02038696\n\ - .syntax divided\n"); -} -#endif void sub_80AB47C(void) { @@ -1159,7 +1034,7 @@ void sub_80AC2CC(u8 taskId) return; case 2: if ((shared19260_[r7].unkC & 6) - || (shared19260_[r7].unkB & 0x80)) + || (shared19260_[r7].unkB_7)) { gTasks[taskId].data[0] = 31; } @@ -2821,7 +2696,7 @@ bool8 sub_80AF038(u8 a) r4 = sub_80AEFE8(a, 0); else if (shared19260_[a].unkC & 1) r4 = sub_80AEFE8(a, 1); - else if ((shared19260_[a].unkC & 6) || (shared19260_[a].unkB & 0x80)) + else if ((shared19260_[a].unkC & 6) || (shared19260_[a].unkB_7)) r4 = sub_80AEFE8(a, 2); else r5 = FALSE; -- cgit v1.2.3 From c47f80b4f25fb056ccc648eec72b825e6a647edd Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 17 Dec 2017 22:52:24 -0600 Subject: decompile sub_80AF1E4 - sub_80AF404 --- src/contest.c | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 142 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index ff460198f..afcc75743 100644 --- a/src/contest.c +++ b/src/contest.c @@ -73,9 +73,9 @@ struct Shared19204 struct UnknownContestStruct1 { - u8 filler0[2]; - u16 unk2; // s16? - u16 unk4; + u16 unk0; + s16 unk2; // s16? + s16 unk4; u16 unk6; // move u16 unk8; u8 unkA; // contest category @@ -210,6 +210,7 @@ extern struct SpriteTemplate gUnknown_02024E8C; extern const struct ContestPokemon gContestOpponents[60]; extern const u8 gUnknown_083CA308[][2]; extern const u8 gUnknown_083CA310[][2]; +extern const u8 gUnknown_083CA318[][2]; extern const struct CompressedSpriteSheet gUnknown_083CA4BC; extern const struct SpriteTemplate gSpriteTemplate_83CA4A4; extern const struct CompressedSpriteSheet gUnknown_083CA4C4; @@ -239,6 +240,7 @@ extern const u8 gUnknown_083CB02C[]; extern const u8 *const gUnknown_083CB2F0[]; extern const u8 gUnknown_083CC59C[]; extern const u8 gUnknown_083CC5A2[]; +extern const u8 gUnknownText_MissedTurn[]; void sub_80AB350(void); @@ -310,6 +312,7 @@ void sub_80AF120(void); void sub_80AF138(void); u16 sub_80AF15C(u8); void sub_80AF1B8(void); +void sub_80AF2A0(u8); void sub_80AF2FC(void); void sub_80AF3C0(void); u8 sub_80AF59C(u8); @@ -1754,7 +1757,6 @@ void sub_80AD960(u8 taskId) sub_80AF860(); gTasks[taskId].data[0] = 1; } - //_080AD9E8 else { sub_80AF2FC(); @@ -2755,3 +2757,139 @@ void sub_80AF1B8(void) for (i = 0; i < 4; i++) shared19260_[i].unk6 = sub_80AF15C(i); } + +void sub_80AF1E4(u8 a, u8 b) +{ + u8 r3; + + if (b == 0) + r3 = a + 10; + else + r3 = 14; + if (shared19260_[a].unk6 == 0) + sub_80AE598(gDisplayedStringBattle, gUnknownText_MissedTurn, r3); + else + sub_80AE598(gDisplayedStringBattle, gMoveNames[shared19260_[a].unk6], r3); + sub_80AF2A0(a); + sub_8003460( + &gUnknown_03004210, + gDisplayedStringBattle, + 696 + a * 20, + gUnknown_083CA318[a][0], + gUnknown_083CA318[a][1]); +} + +void unref_sub_80AF280(u8 a) +{ + u8 i; + + for (i = 0; i < 4; i++) + sub_80AF1E4(i, a); +} + +void sub_80AF2A0(u8 a) +{ + FillWindowRect_DefaultPalette( + &gUnknown_03004210, + 0, + gUnknown_083CA318[a][0], + gUnknown_083CA318[a][1], + gUnknown_083CA318[a][0] + 7, + gUnknown_083CA318[a][1] + 1); +} + +void unref_sub_80AF2E0(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + sub_80AF2A0(i); +} + +void sub_80AF2FC(void) +{ + u8 i; + u8 j; + s16 arr[4]; + + for (i = 0; i < 4; i++) + { + shared19260_[i].unk4 += shared19260_[i].unk2; + arr[i] = shared19260_[i].unk4; + } + for (i = 0; i < 3; i++) + { + for (j = 3; j > i; j--) + { + if (arr[j - 1] < arr[j]) + { + u16 temp = arr[j]; + + arr[j] = arr[j - 1]; + arr[j - 1] = temp; + } + } + } + for (i = 0; i < 4; i++) + { + for (j = 0; j < 4; j++) + { + if (shared19260_[i].unk4 == arr[j]) + { + shared19260_[i].unkB_0 = j; + break; + } + } + } + sub_80B0F28(1); + sub_80B159C(); +} + +void sub_80AF3C0(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + u8 var; + + if (shared19260_[i].unk6 == 0) + var = 5; + else if (shared19260_[i].unk2 <= 0) + var = 0; + else if (shared19260_[i].unk2 < 30) + var = 1; + else if (shared19260_[i].unk2 < 60) + var = 2; + else if (shared19260_[i].unk2 < 80) + var = 3; + else + var = 4; + + shared19260_[i].unk1A = var; + } +} + +bool8 sub_80AF404(u8 a) +{ + if ((shared19260_[a].unkC & 6) || shared19260_[a].unkB_7) + return FALSE; + else + return TRUE; +} + +/* +void sub_80AF438(void) +{ + u8 r5; + + for (r5 = 0; r5 < 4; r5++) + { + shared19260_[r5].unk2 = 0; + shared19260_[r5].unk0 = 0; + shared19260_[r5].unk12 = 0; + if (shared19260_[r5].unkC & 6) + + } +} +*/ \ No newline at end of file -- cgit v1.2.3 From 16f22f851658d423600af99787a343df6cab6254 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 18 Dec 2017 12:01:51 -0600 Subject: Decompile battle_anim bubble --- src/battle/anim/bubble.c | 102 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 src/battle/anim/bubble.c (limited to 'src') diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c new file mode 100644 index 000000000..5da0d9929 --- /dev/null +++ b/src/battle/anim/bubble.c @@ -0,0 +1,102 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "util.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D32E8(struct Sprite *sprite); +static void sub_80D3370(struct Sprite *sprite); +static void sub_80D3398(struct Sprite *sprite); + +// bubble (indidivual bubble that floats around) +// Used in Bubble and Bubblebeam + +void sub_80D31C8(struct Sprite* sprite) +{ + u8 newSpriteId; + + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) - gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3) + gBattleAnimArgs[1]; + } + + sprite->animPaused = 1; + + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + + sprite->data[0] = gBattleAnimArgs[6]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + + obj_translate_based_on_private_1_2_3_4(sprite); + + newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + sprite->data[5] = newSpriteId; + + sprite->pos1.x -= Sin((u8)gBattleAnimArgs[4], gBattleAnimArgs[2]); + sprite->pos1.y -= Cos((u8)gBattleAnimArgs[4], gBattleAnimArgs[3]); + + gSprites[newSpriteId].data[0] = gBattleAnimArgs[2]; + gSprites[newSpriteId].data[1] = gBattleAnimArgs[3]; + gSprites[newSpriteId].data[2] = gBattleAnimArgs[5]; + gSprites[newSpriteId].data[3] = (u8)gBattleAnimArgs[4] * 256; + gSprites[newSpriteId].data[4] = gBattleAnimArgs[6]; + + sprite->callback = sub_80D32E8; + sprite->callback(sprite); +} + +static void sub_80D32E8(struct Sprite *sprite) +{ + u8 spriteId = sprite->data[5]; + + u8 counter = gSprites[spriteId].data[4]; + u16 index = gSprites[spriteId].data[3]; + + sprite->data[0] = 1; + sub_8078B5C(sprite); + + sprite->pos2.x += Sin(index / 256, gSprites[spriteId].data[0]); + sprite->pos2.y += Cos(index / 256, gSprites[spriteId].data[1]); + + gSprites[spriteId].data[3] = gSprites[spriteId].data[2] + index; + + if (--counter != 0) + { + gSprites[spriteId].data[4] = counter; + } + else + { + sprite->callback = sub_80D3370; + DestroySprite(&gSprites[spriteId]); + } +} + +static void sub_80D3370(struct Sprite *sprite) +{ + sprite->animPaused = 0; + sprite->callback = sub_8078600; + StoreSpriteCallbackInData(sprite, sub_80D3398); +} + +static void sub_80D3398(struct Sprite *sprite) +{ + sprite->data[0] = 10; + sprite->callback = sub_80782D8; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); +} -- cgit v1.2.3 From 4ebb3fdcc56abfcacf4a78aa10a2ea74b0d1b4d0 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 18 Dec 2017 15:47:05 -0600 Subject: Start decompiling water --- src/battle/anim/love_bg.c | 7 - src/battle/anim/scary_face.c | 7 - src/battle/anim/water.c | 371 +++++++++++++++++++++++++++++++++++++++++++ src/rom_8077ABC.c | 6 - 4 files changed, 371 insertions(+), 20 deletions(-) create mode 100644 src/battle/anim/water.c (limited to 'src') diff --git a/src/battle/anim/love_bg.c b/src/battle/anim/love_bg.c index c5659463e..1e49b536c 100755 --- a/src/battle/anim/love_bg.c +++ b/src/battle/anim/love_bg.c @@ -6,13 +6,6 @@ #include "decompress.h" #include "palette.h" -struct Struct_sub_8078914 -{ - u8 *field_0; - u8 *field_4; - u8 field_8; -}; - extern s16 gBattleAnimArgs[]; extern u8 gBattleAnimBankAttacker; extern u8 gBattleAnimBankTarget; diff --git a/src/battle/anim/scary_face.c b/src/battle/anim/scary_face.c index 9f1dfd7d0..0c5056704 100755 --- a/src/battle/anim/scary_face.c +++ b/src/battle/anim/scary_face.c @@ -6,13 +6,6 @@ #include "decompress.h" #include "palette.h" -struct Struct_sub_8078914 -{ - u8 *field_0; - u8 *field_4; - u8 field_8; -}; - extern s16 gBattleAnimArgs[]; extern u8 gBattleAnimBankAttacker; extern u8 gBattleAnimBankTarget; diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c new file mode 100644 index 000000000..396a4637d --- /dev/null +++ b/src/battle/anim/water.c @@ -0,0 +1,371 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "util.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D3874(struct Sprite *); + +void sub_80D37FC(struct Sprite *sprite) +{ + sub_8078764(sprite, 1); + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4]; + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} + +void sub_80D3838(struct Sprite *sprite) +{ + if (gBattleAnimArgs[3] != 0) + { + sub_8078764(sprite, 1); + } + else + { + sub_80787B0(sprite, 1); + } + + sprite->data[7] = gBattleAnimArgs[2]; + sprite->callback = sub_80D3874; +} + +static void sub_80D3874(struct Sprite *sprite) +{ + sprite->data[0] = (sprite->data[0] + 11) & 0xFF; + sprite->pos2.x = Sin(sprite->data[0], 4); + + sprite->data[1] += 48; + sprite->pos2.y = -(sprite->data[1] >> 8); + + if (--sprite->data[7] == -1) + { + move_anim_8072740(sprite); + } +} + +__attribute__((naked)) +void sub_80D38BC(u8 taskId) +{ + asm(".syntax unified\n\ + .equ REG_BLDCNT, 0x4000050\n\ + .equ REG_BG1CNT, 0x400000A\n\ + .equ REG_BG1HOFS, 0x4000014\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ + ldr r1, _080D398C @ =REG_BLDCNT\n\ + ldr r2, _080D3990 @ =0x00003f42\n\ + adds r0, r2, 0\n\ + strh r0, [r1]\n\ + adds r1, 0x2\n\ + movs r3, 0x80\n\ + lsls r3, 5\n\ + adds r0, r3, 0\n\ + strh r0, [r1]\n\ + ldr r2, _080D3994 @ =REG_BG1CNT\n\ + ldrb r1, [r2]\n\ + movs r0, 0x4\n\ + negs r0, r0\n\ + ands r0, r1\n\ + movs r1, 0x1\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldrb r1, [r2, 0x1]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + movs r1, 0x40\n\ + orrs r0, r1\n\ + strb r0, [r2, 0x1]\n\ + mov r0, sp\n\ + bl sub_8078914\n\ + ldr r2, [sp]\n\ + movs r3, 0x80\n\ + lsls r3, 6\n\ + add r6, sp, 0x10\n\ + add r0, sp, 0xC\n\ + mov r12, r0\n\ + movs r5, 0\n\ + ldr r1, _080D3998 @ =0x040000d4\n\ + movs r4, 0x80\n\ + lsls r4, 5\n\ + mov r8, r6\n\ + ldr r7, _080D399C @ =0x85000400\n\ + movs r0, 0x85\n\ + lsls r0, 24\n\ + mov r9, r0\n\ +_080D3920:\n\ + str r5, [sp, 0x10]\n\ + mov r0, r8\n\ + str r0, [r1]\n\ + str r2, [r1, 0x4]\n\ + str r7, [r1, 0x8]\n\ + ldr r0, [r1, 0x8]\n\ + adds r2, r4\n\ + subs r3, r4\n\ + cmp r3, r4\n\ + bhi _080D3920\n\ + str r5, [sp, 0x10]\n\ + str r6, [r1]\n\ + str r2, [r1, 0x4]\n\ + lsrs r0, r3, 2\n\ + mov r2, r9\n\ + orrs r0, r2\n\ + str r0, [r1, 0x8]\n\ + ldr r0, [r1, 0x8]\n\ + movs r0, 0\n\ + mov r3, r12\n\ + strb r0, [r3]\n\ + strb r0, [r3]\n\ + ldr r1, [sp, 0x4]\n\ + movs r0, 0\n\ + str r0, [sp, 0x10]\n\ + ldr r0, _080D3998 @ =0x040000d4\n\ + str r6, [r0]\n\ + str r1, [r0, 0x4]\n\ + ldr r1, _080D399C @ =0x85000400\n\ + str r1, [r0, 0x8]\n\ + ldr r0, [r0, 0x8]\n\ + bl NotInBattle\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080D39B8\n\ + ldr r2, _080D3994 @ =REG_BG1CNT\n\ + ldrb r1, [r2]\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r1\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r0, _080D39A0 @ =gBattleAnimBankAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080D39A8\n\ + ldr r0, _080D39A4 @ =gUnknown_08E70968\n\ + b _080D39AA\n\ + .align 2, 0\n\ +_080D398C: .4byte REG_BLDCNT\n\ +_080D3990: .4byte 0x00003f42\n\ +_080D3994: .4byte REG_BG1CNT\n\ +_080D3998: .4byte 0x040000d4\n\ +_080D399C: .4byte 0x85000400\n\ +_080D39A0: .4byte gBattleAnimBankAttacker\n\ +_080D39A4: .4byte gUnknown_08E70968\n\ +_080D39A8:\n\ + ldr r0, _080D39B4 @ =gUnknown_08E70C38\n\ +_080D39AA:\n\ + ldr r1, [sp, 0x4]\n\ + bl LZDecompressVram\n\ + b _080D39CE\n\ + .align 2, 0\n\ +_080D39B4: .4byte gUnknown_08E70C38\n\ +_080D39B8:\n\ + ldr r0, _080D39F0 @ =gUnknown_08E70F0C\n\ + ldr r1, [sp, 0x4]\n\ + bl LZDecompressVram\n\ + mov r0, sp\n\ + ldrb r0, [r0, 0x8]\n\ + ldr r1, [sp, 0x4]\n\ + movs r2, 0\n\ + movs r3, 0x1\n\ + bl sub_80763FC\n\ +_080D39CE:\n\ + ldr r0, _080D39F4 @ =gBattleAnimBackgroundImage_Surf\n\ + ldr r1, [sp]\n\ + bl LZDecompressVram\n\ + ldr r0, _080D39F8 @ =gBattleAnimArgs\n\ + movs r1, 0\n\ + ldrsh r0, [r0, r1]\n\ + cmp r0, 0\n\ + bne _080D3A00\n\ + ldr r0, _080D39FC @ =gBattleAnimBackgroundPalette_Surf\n\ + mov r1, sp\n\ + ldrb r1, [r1, 0x8]\n\ + lsls r1, 4\n\ + movs r2, 0x20\n\ + bl LoadCompressedPalette\n\ + b _080D3A0E\n\ + .align 2, 0\n\ +_080D39F0: .4byte gUnknown_08E70F0C\n\ +_080D39F4: .4byte gBattleAnimBackgroundImage_Surf\n\ +_080D39F8: .4byte gBattleAnimArgs\n\ +_080D39FC: .4byte gBattleAnimBackgroundPalette_Surf\n\ +_080D3A00:\n\ + ldr r0, _080D3A78 @ =gBattleAnimBackgroundImageMuddyWater_Pal\n\ + mov r1, sp\n\ + ldrb r1, [r1, 0x8]\n\ + lsls r1, 4\n\ + movs r2, 0x20\n\ + bl LoadCompressedPalette\n\ +_080D3A0E:\n\ + ldr r0, _080D3A7C @ =sub_80D3D68\n\ + ldr r4, _080D3A80 @ =gTasks\n\ + mov r2, r10\n\ + lsls r5, r2, 2\n\ + adds r1, r5, r2\n\ + lsls r1, 3\n\ + adds r6, r1, r4\n\ + ldrb r1, [r6, 0x7]\n\ + adds r1, 0x1\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + bl CreateTask\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + movs r3, 0\n\ + mov r9, r3\n\ + mov r0, r8\n\ + strh r0, [r6, 0x26]\n\ + mov r1, r8\n\ + lsls r0, r1, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r7, r0, r4\n\ + mov r2, r9\n\ + strh r2, [r7, 0x8]\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + strh r0, [r7, 0xA]\n\ + strh r0, [r7, 0xC]\n\ + bl NotInBattle\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0\n\ + beq _080D3A94\n\ + ldr r3, _080D3A84 @ =0x0000ffb0\n\ + adds r0, r3, 0\n\ + ldr r1, _080D3A88 @ =gUnknown_030042C0\n\ + strh r0, [r1]\n\ + ldr r2, _080D3A8C @ =0x0000ffd0\n\ + adds r0, r2, 0\n\ + ldr r3, _080D3A90 @ =gUnknown_030041B4\n\ + strh r0, [r3]\n\ + movs r0, 0x2\n\ + strh r0, [r6, 0x8]\n\ + movs r0, 0x1\n\ + strh r0, [r6, 0xA]\n\ + mov r0, r9\n\ + strh r0, [r7, 0xE]\n\ + b _080D3AEE\n\ + .align 2, 0\n\ +_080D3A78: .4byte gBattleAnimBackgroundImageMuddyWater_Pal\n\ +_080D3A7C: .4byte sub_80D3D68\n\ +_080D3A80: .4byte gTasks\n\ +_080D3A84: .4byte 0x0000ffb0\n\ +_080D3A88: .4byte gUnknown_030042C0\n\ +_080D3A8C: .4byte 0x0000ffd0\n\ +_080D3A90: .4byte gUnknown_030041B4\n\ +_080D3A94:\n\ + ldr r0, _080D3AC4 @ =gBattleAnimBankAttacker\n\ + ldrb r0, [r0]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0x1\n\ + bne _080D3AD8\n\ + ldr r2, _080D3AC8 @ =0x0000ff20\n\ + adds r0, r2, 0\n\ + ldr r3, _080D3ACC @ =gUnknown_030042C0\n\ + strh r0, [r3]\n\ + movs r2, 0x80\n\ + lsls r2, 1\n\ + adds r0, r2, 0\n\ + ldr r3, _080D3AD0 @ =gUnknown_030041B4\n\ + strh r0, [r3]\n\ + movs r0, 0x2\n\ + strh r0, [r6, 0x8]\n\ + ldr r0, _080D3AD4 @ =0x0000ffff\n\ + strh r0, [r6, 0xA]\n\ + strh r1, [r7, 0xE]\n\ + b _080D3AEE\n\ + .align 2, 0\n\ +_080D3AC4: .4byte gBattleAnimBankAttacker\n\ +_080D3AC8: .4byte 0x0000ff20\n\ +_080D3ACC: .4byte gUnknown_030042C0\n\ +_080D3AD0: .4byte gUnknown_030041B4\n\ +_080D3AD4: .4byte 0x0000ffff\n\ +_080D3AD8:\n\ + ldr r0, _080D3B1C @ =gUnknown_030042C0\n\ + strh r4, [r0]\n\ + ldr r1, _080D3B20 @ =0x0000ffd0\n\ + adds r0, r1, 0\n\ + ldr r2, _080D3B24 @ =gUnknown_030041B4\n\ + strh r0, [r2]\n\ + ldr r0, _080D3B28 @ =0x0000fffe\n\ + strh r0, [r6, 0x8]\n\ + movs r0, 0x1\n\ + strh r0, [r6, 0xA]\n\ + strh r4, [r7, 0xE]\n\ +_080D3AEE:\n\ + ldr r1, _080D3B2C @ =REG_BG1HOFS\n\ + ldr r3, _080D3B1C @ =gUnknown_030042C0\n\ + ldrh r0, [r3]\n\ + strh r0, [r1]\n\ + adds r1, 0x2\n\ + ldr r2, _080D3B24 @ =gUnknown_030041B4\n\ + ldrh r0, [r2]\n\ + strh r0, [r1]\n\ + ldr r1, _080D3B30 @ =gTasks\n\ + mov r3, r8\n\ + lsls r0, r3, 2\n\ + add r0, r8\n\ + lsls r0, 3\n\ + adds r2, r0, r1\n\ + movs r3, 0xE\n\ + ldrsh r0, [r2, r3]\n\ + cmp r0, 0\n\ + bne _080D3B34\n\ + movs r0, 0x30\n\ + strh r0, [r2, 0x10]\n\ + movs r0, 0x70\n\ + b _080D3B38\n\ + .align 2, 0\n\ +_080D3B1C: .4byte gUnknown_030042C0\n\ +_080D3B20: .4byte 0x0000ffd0\n\ +_080D3B24: .4byte gUnknown_030041B4\n\ +_080D3B28: .4byte 0x0000fffe\n\ +_080D3B2C: .4byte REG_BG1HOFS\n\ +_080D3B30: .4byte gTasks\n\ +_080D3B34:\n\ + movs r0, 0\n\ + strh r0, [r2, 0x10]\n\ +_080D3B38:\n\ + strh r0, [r2, 0x12]\n\ + mov r2, r10\n\ + adds r0, r5, r2\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x1\n\ + strh r1, [r0, 0x14]\n\ + ldr r1, _080D3B5C @ =sub_80D3B60\n\ + str r1, [r0]\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080D3B5C: .4byte sub_80D3B60\n\ + .syntax divided\n"); +} diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 8fea7f710..ec7d5fdb8 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -70,12 +70,6 @@ struct Color { u16 b:5; }; -struct Struct_sub_8078914 { - u8 *field_0; - u8 *field_4; - u8 field_8; -}; - struct BGCnt { u16 priority:2; u16 charBase:2; -- cgit v1.2.3 From 66c2dccd72f7b0d00517bab91af61a2d58126059 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 18 Dec 2017 17:14:25 -0600 Subject: Decompile battle_anim noise --- src/battle/anim/noise.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/battle/anim/noise.c (limited to 'src') diff --git a/src/battle/anim/noise.c b/src/battle/anim/noise.c new file mode 100644 index 000000000..78953d96a --- /dev/null +++ b/src/battle/anim/noise.c @@ -0,0 +1,56 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D2E30(struct Sprite *); + +// noise (moving music note) +// Used in Uproar. + +void sub_80D2D68(struct Sprite* sprite) +{ + int var1; + u8 slot = gBattleAnimArgs[0] == 0 ? gBattleAnimBankAttacker : gBattleAnimBankTarget; + + if (GetBankSide(slot) == 1) + { + gBattleAnimArgs[1] *= -1; + } + + sprite->pos1.x = sub_8077ABC(slot, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = sub_8077ABC(slot, 3) + gBattleAnimArgs[2]; + sprite->data[0] = 0; + sprite->data[1] = (u16)sprite->pos1.x << 3; + sprite->data[2] = (u16)sprite->pos1.y << 3; + + var1 = gBattleAnimArgs[1] << 3; + if (var1 < 0) + var1 += 7; + sprite->data[3] = var1 >> 3; + + var1 = gBattleAnimArgs[2] << 3; + if (var1 < 0) + var1 += 7; + sprite->data[4] = var1 >> 3; + + sprite->oam.tileNum += gBattleAnimArgs[3] * 16; + sprite->callback = sub_80D2E30; +} + +static void sub_80D2E30(struct Sprite *sprite) +{ + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + + sprite->pos1.x = sprite->data[1] >> 3; + sprite->pos1.y = sprite->data[2] >> 3; + + if (++sprite->data[0] > 16) + { + move_anim_8072740(sprite); + } +} -- cgit v1.2.3 From e7a3951dafdf167f3e9d01a83320df701e81dda8 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 18 Dec 2017 20:46:26 -0600 Subject: Decompile battle_anim note_spin --- src/battle/anim/note_spin.c | 110 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 src/battle/anim/note_spin.c (limited to 'src') diff --git a/src/battle/anim/note_spin.c b/src/battle/anim/note_spin.c new file mode 100644 index 000000000..bdc0f4615 --- /dev/null +++ b/src/battle/anim/note_spin.c @@ -0,0 +1,110 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D2F80(struct Sprite *); +static void sub_80D2FA4(struct Sprite *); + +// note_spin (spins music notes around, and rotates them) +// Used in Perish Song. + +void sub_80D2E68(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->data[1] = 120 - gBattleAnimArgs[0]; + sprite->invisible = 1; + } + + if (++sprite->data[0] == sprite->data[1]) + { + sub_8079108(sprite->oam.paletteNum + 16, 0); + } + + if (sprite->data[0] == sprite->data[1] + 80) + { + move_anim_8072740(sprite); + } +} + +void sub_80D2EC8(struct Sprite *sprite) +{ + int index; + int var2; + + if (sprite->data[0] == 0) + { + sprite->pos1.x = 120; + sprite->pos1.y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15; + + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + + sprite->data[5] = 120; + sprite->data[3] = gBattleAnimArgs[2]; + } + + sprite->data[0]++; + + sprite->data[1] = (sprite->data[0] + ((u16)sprite->data[0] >> 31)) / 2; + index = ((sprite->data[0] * 3) + (u16)sprite->data[3]); + var2 = 0xFF; + sprite->data[6] = (sprite->data[6] + 10) & 0xFF; + + index &= var2; + sprite->pos2.x = Cos(index, 100); + + sprite->pos2.y = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4); + + if (sprite->data[0] > sprite->data[5]) + { + sprite->callback = sub_80D2F80; + + sprite->data[0] = 0; + oamt_add_pos2_onto_pos1(sprite); + sprite->data[2] = 5; + sprite->data[4] = 0; + sprite->data[3] = 0; + + StartSpriteAffineAnim(sprite, 1); + } +} + +static void sub_80D2F80(struct Sprite *sprite) +{ + if (++sprite->data[0] > 10) + { + sprite->data[0] = 0; + sprite->callback = sub_80D2FA4; + } +} + +static void sub_80D2FA4(struct Sprite *sprite) +{ + sprite->data[3] += sprite->data[2]; + sprite->pos2.y = sprite->data[3]; + + sprite->data[2]++; + + if (sprite->data[3] > 48 && sprite->data[2] > 0) + { + sprite->data[2] = sprite->data[4] - 5; + sprite->data[4]++; + } + + if (sprite->data[4] > 3) + { + int var1 = sprite->data[2]; + sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1); + move_anim_8072740(sprite); + } + + if (sprite->data[4] == 4) + { + move_anim_8072740(sprite); + } +} -- cgit v1.2.3 From 9d648402ebc070e9f3f0ab245d667e30bf8e54b2 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 18 Dec 2017 21:16:02 -0600 Subject: Decompile battle_anim guard --- src/battle/anim/guard.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/battle/anim/guard.c (limited to 'src') diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c new file mode 100644 index 000000000..4769db2e4 --- /dev/null +++ b/src/battle/anim/guard.c @@ -0,0 +1,34 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern u16 gBattleTypeFlags; + +// guard (moves guard rings upwards) +// Used in Safeguard. + +void sub_80D3014(struct Sprite *sprite) +{ + if ((gBattleTypeFlags & 1) && IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) + { + sub_807A3FC(gBattleAnimBankAttacker, 0, &sprite->pos1.x, &sprite->pos1.y); + sprite->pos1.y += 40; + + StartSpriteAffineAnim(sprite, 1); + } + else + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1) + 40; + } + + sprite->data[0] = 13; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y - 72; + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} -- cgit v1.2.3 From fa136a7ffbdeee5f8e1174b2d36c2e34c653a08a Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 18 Dec 2017 21:36:26 -0600 Subject: decompile sub_80AF438 - unref_sub_80B01B0 --- src/contest.c | 789 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 712 insertions(+), 77 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index afcc75743..c44b07dea 100644 --- a/src/contest.c +++ b/src/contest.c @@ -11,6 +11,7 @@ #include "ewram.h" #include "graphics.h" #include "link.h" +#include "m4a.h" #include "main.h" #include "menu.h" #include "menu_cursor.h" @@ -49,7 +50,9 @@ struct Shared19204 /*0x19204*/ u8 unk19204; /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; - /*0x1920A*/ u16 unk1920A_0:4; + /*0x1920A*/ u16 unk1920A_0:1; + /*0x1920A*/ u16 unk1920A_1:1; + /*0x1920A*/ u16 unk1920A_2:2; u16 unk1920A_4:1; u16 unk1920A_5:1; u16 unk1920A_6:1; @@ -58,19 +61,27 @@ struct Shared19204 u16 unk1920B_1:1; u16 unk1920B_2:1; /*0x1920C*/ u8 unk1920C; - /*0x1920D*/ u8 filler1920D[0x14-0xD]; + /*0x1920D*/ u8 unk1920D[0x14-0xD]; /*0x19214*/ u8 unk19214; /*0x19215*/ u8 unk19215; /*0x19216*/ u8 unk19216; /*0x19217*/ s8 unk19217; /*0x19218*/ u8 unk19218[4]; /*0x1921C*/ u32 unk1921C; - u8 filler19220[0x5D-0x20]; + u16 unk19220[2][4]; // unknown length + u8 filler19230[0x48-0x30]; + u8 unk19248[5][4]; + u8 unk1925C; /*0x1925D*/ u8 unk1925D; /*0x1925E*/ u8 unk1925E; /*0x1925F*/ u8 filler1925F; }; +#define static_assert(expr) \ + typedef char ____[(expr) ? 1 : -1] + +static_assert(offsetof(struct Shared19204, filler19230) == 0x19230 - 0x19204); + struct UnknownContestStruct1 { u16 unk0; @@ -82,24 +93,29 @@ struct UnknownContestStruct1 u8 unkB_0:2; u8 unkB_2:5; u8 unkB_7:1; - /* u8 unkC_0:1; - u8 unkC_1:1; - u8 unkC_2:1; - */ - u8 unkC; + u8 unkC_1:2; s8 unkD; u8 unkE; u8 unkF; - u8 unk10_0:2; - u8 unk10_2:2; - u8 unk10_4:2; // definitely a bitfield - u8 unk11; + u8 unk10_0:1; // * + u8 unk10_1:1; // * + u8 unk10_2:1; + u8 unk10_3:1; + u8 unk10_4:2; // * + u8 unk10_6:2; + u8 unk11_0:2; + u8 unk11_2:1; + u8 unk11_3:1; + u8 unk11_4:1; + u8 unk11_5:1; u8 unk12; u8 unk13; - u8 unk14; - u8 unk15_0:1; // Is this a bitfield or not? sub_80ABCDC says no. - u8 unk15_1:3; + u8 unk14; // s8? + u8 unk15_0:1; + u8 unk15_1:1; + u8 unk15_2:1; + u8 unk15_3:1; u8 unk15_4:1; u8 unk15_5:1; u8 unk15_6:1; @@ -123,20 +139,13 @@ struct UnknownContestStruct3 // possibly the same as UnknownContestStruct3? struct UnknownContestStruct4 { - u8 filler0[2]; - u8 unk2; // maybe a bitfield - u8 filler3; -}; - -/* -struct UnknownContestStruct5_alt -{ - u8 bits_0; + u8 unk0; u8 unk1; - s8 unk2; + u8 unk2_0:1; + u8 unk2_1:1; + u8 unk2_2:1; u8 filler3; }; -*/ struct UnknownContestStruct5 { @@ -148,6 +157,7 @@ struct UnknownContestStruct5 u8 filler3; }; +#if 0 struct Shared19260 { /*0x19260*/ struct UnknownContestStruct1 unk19260[4]; @@ -159,11 +169,12 @@ struct Shared19260 /*0x19338*/ struct UnknownContestStruct4 unk19338[4]; /*0x19348*/ struct UnknownContestStruct3 unk19348[5]; }; +#endif #define shared15800 (gSharedMem + 0x15800) #define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000)) #define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) -#define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) +//#define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) // These are separate structs because sub_80AC2CC requires that to match. #define shared19260_ ((struct UnknownContestStruct1 *)(gSharedMem + 0x19260)) @@ -173,6 +184,15 @@ struct Shared19260 #define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338)) #define shared19348 ((struct UnknownContestStruct3 *)(gSharedMem + 0x19348)) +struct UnknownContestStruct6 +{ + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; +}; + +extern struct MusicPlayerInfo gMPlay_SE1; extern u16 gScriptContestCategory; extern u16 gScriptContestRank; extern u8 gBattleMonForms[]; @@ -199,20 +219,39 @@ extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; extern u32 gUnknown_03005D28; -extern u16 gUnknown_02038680[]; +extern s16 gUnknown_02038680[]; +extern u16 gUnknown_02038688[]; extern u8 gUnknown_02038694; extern u8 gUnknown_02038696[]; extern u8 gUnknown_0203869B; -extern u16 gUnknown_02038670[]; +extern s16 gUnknown_02038670[]; +extern s16 gUnknown_02038678[]; +extern u8 gUnknown_02038690[]; extern struct SpriteTemplate gUnknown_02024E8C; + #define gContestOpponents gUnknown_083C9408 extern const struct ContestPokemon gContestOpponents[60]; extern const u8 gUnknown_083CA308[][2]; extern const u8 gUnknown_083CA310[][2]; extern const u8 gUnknown_083CA318[][2]; -extern const struct CompressedSpriteSheet gUnknown_083CA4BC; +extern const u8 gUnknown_083CA330[][2]; +extern const u8 gUnknown_083CA338[]; +extern const u8 gUnknown_083CA33C[]; +extern const struct CompressedSpriteSheet gUnknown_083CC3AC; +extern const struct CompressedSpritePalette gUnknown_083CC3B4[]; +extern const struct SpriteTemplate gSpriteTemplate_83CC454[]; +extern const struct SpriteSheet gUnknown_083CA350; +extern const struct SpriteTemplate gSpriteTemplate_83CA3AC; +extern const struct CompressedSpriteSheet gUnknown_083CA3C4[]; +extern const struct SpritePalette gUnknown_083CA3E4; +extern const struct SpriteTemplate gSpriteTemplate_83CA3F4[]; +extern const struct SubspriteTable gSubspriteTables_83CA464[]; +extern const struct CompressedSpriteSheet gUnknown_083CA46C; +extern const struct SpritePalette gUnknown_083CA474; +extern const struct SpriteTemplate gSpriteTemplate_83CA484; extern const struct SpriteTemplate gSpriteTemplate_83CA4A4; +extern const struct CompressedSpriteSheet gUnknown_083CA4BC; extern const struct CompressedSpriteSheet gUnknown_083CA4C4; extern const struct CompressedSpritePalette gUnknown_083CA4CC; extern const struct SpriteTemplate gUnknown_083CA4D4; @@ -225,6 +264,8 @@ extern const u8 gUnknown_083CBD79[]; extern const u8 gUnknown_083CBD9D[]; extern const u8 gUnknown_083CBDC6[]; extern const u8 gUnknown_083CBF60[]; +extern const u8 gUnknown_083CB02C[]; +extern const u8 *const gUnknown_083CB2F0[]; extern const u8 gUnknown_083CC075[]; extern const u8 gUnknown_083CC0A0[]; extern const u8 gUnknown_083CC0BC[]; @@ -236,11 +277,10 @@ extern const u8 *const gUnknown_083CC2D8[]; extern const u8 *const gUnknown_083CC330[]; extern const u8 gUnknownText_UnknownFormatting2[]; extern const u8 gUnknownText_UnknownFormatting3[]; -extern const u8 gUnknown_083CB02C[]; -extern const u8 *const gUnknown_083CB2F0[]; extern const u8 gUnknown_083CC59C[]; extern const u8 gUnknown_083CC5A2[]; extern const u8 gUnknownText_MissedTurn[]; +extern const u8 gUnknownText_LinkStandbyAndWinner[]; void sub_80AB350(void); @@ -315,20 +355,30 @@ void sub_80AF1B8(void); void sub_80AF2A0(u8); void sub_80AF2FC(void); void sub_80AF3C0(void); -u8 sub_80AF59C(u8); +bool8 sub_80AF59C(u8); +s16 sub_80AF688(u8); +void sub_80AF6A0(void); +bool8 sub_80AF828(s32, s32, struct UnknownContestStruct6 *); void sub_80AF860(void); +void sub_80AF94C(u8); void sub_80AFA5C(void); -void sub_80AFBA0(s16, s16, u8); +u16 sub_80AFB40(u8); +s8 sub_80AFB74(s16); +u8 sub_80AFBA0(s16, s16, u8); +void sub_80AFC74(u8); void sub_80AFE30(void); void sub_80AFF10(void); -u8 sub_80AFF28(void); -void sub_80AFFE0(u8); +bool8 sub_80AFF28(void); +void sub_80AFF60(struct Sprite *); +void sub_80AFFE0(bool8); void sub_80B0034(void); void sub_80B00C8(void); -void nullsub_18(); +void nullsub_18(int); +void sub_80B0238(struct Sprite *); void sub_80B0324(void); void sub_80B03A8(u8); void sub_80B0518(void); +void nullsub_19(); void sub_80B09B0(); u8 sub_80B09E4(); void sub_80B0BC4(); @@ -340,6 +390,7 @@ void sub_80B146C(u8, u8); void sub_80B159C(void); void sub_80B1710(); void sub_80B1928(void); +s8 contest_get_move_excitement(u16); void sub_80B1B14(void); void sub_80B1BDC(void); void sub_80B1CBC(); @@ -749,7 +800,7 @@ void sub_80ABB70(u8 taskId) void *dest = shared18000.unk18204; DmaCopy32(3, src, dest, 0x400); } - if (sub_80AF59C(gContestPlayerMonIndex) == 0) + if (!sub_80AF59C(gContestPlayerMonIndex)) StringCopy(gDisplayedStringBattle, gUnknown_083CAF84); else StringCopy(gDisplayedStringBattle, gUnknown_083CAFAE); @@ -771,9 +822,9 @@ void sub_80ABC70(u8 taskId) if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys == B_BUTTON)) { PlaySE(SE_SELECT); - if (sub_80AF59C(gContestPlayerMonIndex) == 0) + if (!sub_80AF59C(gContestPlayerMonIndex)) { - sub_80AFFE0(1); + sub_80AFFE0(TRUE); gTasks[taskId].func = sub_80ABCDC; } else @@ -812,7 +863,6 @@ void sub_80ABCDC(u8 taskId) { r5 = StringCopy(sp8, gUnknownText_UnknownFormatting2); } - //_080ABDA0 else if (r4 != 0 && shared19260_[gContestPlayerMonIndex].unk8 == r4 && gContestMoves[r4].effect != 3) @@ -861,7 +911,7 @@ void sub_80ABEA0(u8 taskId) case B_BUTTON: sub_814A904(); PlaySE(SE_SELECT); - sub_80AFFE0(0); + sub_80AFFE0(FALSE); FillWindowRect_DefaultPalette( &gUnknown_03004210, 0, @@ -869,7 +919,7 @@ void sub_80ABEA0(u8 taskId) gUnknown_083CA340[0][1], gUnknown_083CA340[0][2], gUnknown_083CA340[0][3]); - if (sub_80AF59C(gContestPlayerMonIndex) == 0) + if (!sub_80AF59C(gContestPlayerMonIndex)) StringCopy(gDisplayedStringBattle, gUnknown_083CAF84); else StringCopy(gDisplayedStringBattle, gUnknown_083CAFAE); @@ -933,7 +983,7 @@ void sub_80AC0C8(u8 taskId) SetTaskFuncWithFollowupFunc(taskId2, sub_80C8A38, sub_80AC15C); gTasks[taskId].func = nullsub_89; sub_80AF860(); - sub_80AFFE0(0); + sub_80AFFE0(FALSE); } else { @@ -953,7 +1003,7 @@ void sub_80AC188(u8 taskId) sub_80AF138(); gUnknown_030042A0 = 0; gUnknown_03004280 = 0; - sub_80AFFE0(0); + sub_80AFFE0(FALSE); { void *src = gPlttBufferFaded; void *dest = shared18000.unk18604; @@ -1036,8 +1086,8 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 2; return; case 2: - if ((shared19260_[r7].unkC & 6) - || (shared19260_[r7].unkB_7)) + if (shared19260_[r7].unkC_1 != 0 + || shared19260_[r7].unkB_7) { gTasks[taskId].data[0] = 31; } @@ -1069,12 +1119,12 @@ void sub_80AC2CC(u8 taskId) spriteId = gTasks[taskId].data[2]; if (gSprites[spriteId].callback == SpriteCallbackDummy) { - if (!(shared19338[r7].unk2 & 2)) + if (!shared19338[r7].unk2_1) gTasks[taskId].data[0] = 5; } return; case 5: - if (shared19260_[r7].unkC & 1) + if (shared19260_[r7].unkC_0) { gTasks[taskId].data[0] = 33; } @@ -1174,15 +1224,15 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 23; return; case 48: - if ((shared19260_[r7].unk11 & 3) == 1) + if (shared19260_[r7].unk11_0 == 1) { sub_80B1710(5); } - else if ((shared19260_[r7].unk11 & 3) == 2) + else if (shared19260_[r7].unk11_0 == 2) { sub_80B1710(6); } - else if ((shared19260_[r7].unk11 & 3) == 3) + else if (shared19260_[r7].unk11_0 == 3) { sub_80B1710(7); } @@ -1206,7 +1256,7 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 13; return; case 13: - if (!(shared19338[shared19204.unk19215].unk2 & 4)) + if (!shared19338[shared19204.unk19215].unk2_2) gTasks[taskId].data[0] = 35; return; case 35: @@ -1294,7 +1344,7 @@ void sub_80AC2CC(u8 taskId) case 29: for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) ; - if (!(shared19338[r6].unk2 & 4)) + if (!shared19338[r6].unk2_2) gTasks[taskId].data[0] = 39; return; case 39: @@ -1339,8 +1389,8 @@ void sub_80AC2CC(u8 taskId) if (gTasks[taskId].data[10]++ > 9) { gTasks[taskId].data[10] = 0; - if ((shared19260_[r7].unkC & 6) - || (shared19260_[r7].unk11 & 4)) + if (shared19260_[r7].unkC_1 != 0 + || shared19260_[r7].unk11_2) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); @@ -1410,7 +1460,7 @@ void sub_80AC2CC(u8 taskId) } return; case 16: - if (!(shared19338[r7].unk2 & 4)) + if (!shared19338[r7].unk2_2) { gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 17; @@ -1446,7 +1496,7 @@ void sub_80AC2CC(u8 taskId) return; case 18: sub_80B0D7C(); - if (!(shared19338[r7].unk2 & 4)) + if (!shared19338[r7].unk2_2) { gTasks[taskId].data[10] = 0; sub_80AF138(); @@ -1461,7 +1511,7 @@ void sub_80AC2CC(u8 taskId) else { r4 = shared19328.bits_0; - if (shared19260_[r7].unk11 & 0x10) + if (shared19260_[r7].unk11_4) { r4 = 1; StringCopy(gStringVar3, gMoveNames[shared19260_[r7].unk6]); @@ -1570,7 +1620,7 @@ void sub_80AC2CC(u8 taskId) } break; case 3: - if (!(shared19338[r7].unk2 & 4)) + if (!shared19338[r7].unk2_2) { if (!shared19204.unk1920A_7) { @@ -1590,7 +1640,7 @@ void sub_80AC2CC(u8 taskId) } return; case 43: - if (!(shared19338[r7].unk2 & 4)) + if (!shared19338[r7].unk2_2) { sub_80AF138(); gTasks[taskId].data[0] = 55; @@ -1816,7 +1866,7 @@ void sub_80ADA4C(u8 taskId) void sub_80ADAD8(u8 taskId) { - if (sub_80AFF28() != 0) + if (sub_80AFF28()) gTasks[taskId].func = sub_80ADB04; } @@ -1875,7 +1925,7 @@ void sub_80ADC4C(u8 taskId) void sub_80ADC84(u8 taskId) { - if (sub_80AFF28() != 0) + if (sub_80AFF28()) { gTasks[taskId].data[0] = 0; gTasks[taskId].func = sub_80ADCB4; @@ -1982,7 +2032,7 @@ void sub_80ADF4C(u8 taskId) SetTaskFuncWithFollowupFunc(taskId2, sub_80C8AD0, sub_80ADF98); gTasks[taskId].func = nullsub_89; sub_80AF860(); - sub_80AFFE0(0); + sub_80AFFE0(FALSE); } void sub_80ADF98(u8 taskId) @@ -2561,7 +2611,7 @@ void sub_80AED7C(u16 a, u8 b) { u8 r5 = gUnknown_02038696[b] * 5 + 2; - if (sub_80AF59C(b) == 0 && a != 0) + if (!sub_80AF59C(b) && a != 0) { u16 tile = sub_80AEB68(a, b); @@ -2694,11 +2744,11 @@ bool8 sub_80AF038(u8 a) u16 r4 = 0; u8 r6 = gUnknown_02038696[a] * 5 + 2; - if (shared19260_[a].unk10_0 != 0 || shared19260_[a].unk12 != 0 || shared19260_[a].unkF != 0) + if (shared19260_[a].unk10_0 != 0 || shared19260_[a].unk10_1 != 0 || shared19260_[a].unk12 != 0 || shared19260_[a].unkF != 0) r4 = sub_80AEFE8(a, 0); - else if (shared19260_[a].unkC & 1) + else if (shared19260_[a].unkC_0) r4 = sub_80AEFE8(a, 1); - else if ((shared19260_[a].unkC & 6) || (shared19260_[a].unkB_7)) + else if (shared19260_[a].unkC_1 != 0 || shared19260_[a].unkB_7) r4 = sub_80AEFE8(a, 2); else r5 = FALSE; @@ -2734,7 +2784,7 @@ void sub_80AF138(void) u16 sub_80AF15C(u8 a) { - if (sub_80AF59C(a) != 0) + if (sub_80AF59C(a)) return 0; if (a == gContestPlayerMonIndex) { @@ -2872,24 +2922,609 @@ void sub_80AF3C0(void) bool8 sub_80AF404(u8 a) { - if ((shared19260_[a].unkC & 6) || shared19260_[a].unkB_7) + if (shared19260_[a].unkC_1 != 0 || shared19260_[a].unkB_7) return FALSE; else return TRUE; } -/* void sub_80AF438(void) { + u8 i; + + for (i = 0; i < 4; i++) + { + // This is bitfield hell... + shared19260_[i].unk2 = 0; + shared19260_[i].unk0 = 0; + shared19260_[i].unk12 = 0; + if (shared19260_[i].unkC_1 > 0) + shared19260_[i].unkC_1--; + shared19260_[i].unkE = 0; + shared19260_[i].unk10_0 = 0; + shared19260_[i].unkF = 0; + shared19260_[i].unk10_1 = 0; + shared19260_[i].unk10_2 = 0; + shared19260_[i].unk10_3 = 0; + shared19260_[i].unkC_0 = 0; + shared19260_[i].unk13 = 0xFF; + shared19260_[i].unk14 = -1; + shared19260_[i].unk10_4 = 0; + shared19260_[i].unk15_2 = shared19260_[i].unk15_0; + shared19260_[i].unk15_0 = 0; + shared19260_[i].unk11_0 = 0; + shared19260_[i].unk11_5 = 0; + if (shared19260_[i].unk11_2) + { + shared19260_[i].unkC_1 = 1; + shared19260_[i].unk11_2 = 0; + } + if (shared19260_[i].unk11_3) + { + shared19260_[i].unkB_7 = 1; + shared19260_[i].unk11_3 = 0; + } + shared19260_[i].unk11_4 = 0; + } + for (i = 0; i < 4; i++) + { + shared19260_[i].unk8 = shared19260_[i].unk6; + shared19204.unk19220[shared19204.unk19205][i] = shared19260_[i].unk8; + shared19204.unk19248[shared19204.unk19205][i] = contest_get_move_excitement(shared19260_[i].unk6); + shared19260_[i].unk6 = 0; + } + shared19328.bits_8 = 0; +} + +bool8 sub_80AF59C(u8 a) +{ + if (shared19260_[a].unkC_1 != 0 || shared19260_[a].unkB_7) + return TRUE; + else + return FALSE; +} + +bool8 unref_sub_80AF5D0(u8 a, u8 b) +{ + u8 i; + + if (a != gContestPlayerMonIndex) + return TRUE; + for (i = 0; i < 4; i++) + { + if (b == 3) + { + shared19204.unk1920A_0 = 1; + return TRUE; + } + if (b == 4) + { + shared19204.unk1920A_1 = 1; + return TRUE; + } + if (shared19204.unk19206[i] == b) + return TRUE; + if (shared19204.unk19206[i] == 0xFF) + { + shared19204.unk19206[i] = b; + return TRUE; + } + } + return FALSE; +} + +void sub_80AF630(u8 a) +{ + gUnknown_02038688[a] = sub_80AF688(a); + gUnknown_02038678[a] = gUnknown_02038670[a] + gUnknown_02038688[a]; +} + +void sub_80AF668(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + sub_80AF630(i); + sub_80AF6A0(); +} + +s16 sub_80AF688(u8 a) +{ + return gUnknown_02038680[a] * 2; +} + +// Sorts something. Determines turn order, maybe? +void sub_80AF6A0(void) +{ + u16 sp0[4] = {0}; + struct UnknownContestStruct6 sp8[4]; + s32 i; + s32 j; + + for (i = 0; i < 4; i++) + { + s32 r2; + + sp0[i] = Random(); + for (r2 = 0; r2 < i; r2++) + { + if (sp0[i] == sp0[r2]) + { + i--; + break; + } + } + } + + for (i = 0; i < 4; i++) + { + sp8[i].unk0 = gUnknown_02038678[i]; + sp8[i].unk4 = gUnknown_02038670[i]; + sp8[i].unk8 = sp0[i]; + sp8[i].unkC = i; + } + + for (i = 0; i < 3; i++) + { + for (j = 3; j > i; j--) + { + if (sub_80AF828(j - 1, j, sp8)) + { + struct UnknownContestStruct6 temp; + + temp.unk0 = sp8[j - 1].unk0; + temp.unk4 = sp8[j - 1].unk4; + temp.unk8 = sp8[j - 1].unk8; + temp.unkC = sp8[j - 1].unkC; + + sp8[j - 1].unk0 = sp8[j].unk0; + sp8[j - 1].unk4 = sp8[j].unk4; + sp8[j - 1].unk8 = sp8[j].unk8; + sp8[j - 1].unkC = sp8[j].unkC; + + sp8[j].unk0 = temp.unk0; + sp8[j].unk4 = temp.unk4; + sp8[j].unk8 = temp.unk8; + sp8[j].unkC = temp.unkC; + } + } + } + + for (i = 0; i < 4; i++) + gUnknown_02038690[sp8[i].unkC] = i; +} + +bool8 sub_80AF828(s32 a, s32 b, struct UnknownContestStruct6 *c) +{ + bool8 retVal; + + if (c[a].unk0 < c[b].unk0) + retVal = TRUE; + else if (c[a].unk0 > c[b].unk0) + retVal = FALSE; + else if (c[a].unk4 < c[b].unk4) + retVal = TRUE; + else if (c[a].unk4 > c[b].unk4) + retVal = FALSE; + else if (c[a].unk8 < c[b].unk8) + retVal = TRUE; + else + retVal = FALSE; + return retVal; +} + +void sub_80AF860(void) +{ + gUnknown_030042A0 = 0; + gUnknown_03004280 = 0; + sub_80AF138(); + sub_8003460(&gMenuWindow, gUnknownText_LinkStandbyAndWinner, 776, 1, 15); +} + +u8 unref_sub_80AF89C(s16 a, s16 b, u8 c, u8 d) +{ + u8 taskId; u8 r5; + s8 r4; + u16 r0; + + shared19338[d].unk2_2 = 1; + taskId = CreateTask(sub_80AF94C, 20); + r5 = sub_80AFB74(a); + r4 = sub_80AFB74(a + b) - r5; + r0 = sub_80AFB40(d); + gTasks[taskId].data[0] = r5; + gTasks[taskId].data[1] = r4; + gTasks[taskId].data[2] = r0 + c; + gTasks[taskId].data[3] = d; + if (b < 0) + nullsub_19(d); + return taskId; +} + +void sub_80AF94C(u8 taskId) +{ + u8 r5 = gTasks[taskId].data[3]; + + if (gTasks[taskId].data[1] == 0) + { + nullsub_19(r5); + DestroyTask(taskId); + shared19338[r5].unk2_2 = 0; + } + else if (++gTasks[taskId].data[10] > 29) + { + u8 r6; + + gTasks[taskId].data[10] = 0; + if (gTasks[taskId].data[1] < 0) + { + r6 = gTasks[taskId].data[0]--; + gTasks[taskId].data[1]++; + PlaySE(SE_BOO); + } + else + { + r6 = ++gTasks[taskId].data[0]; + gTasks[taskId].data[1]--; + PlaySE(SE_PIN); + } + if ((u16)gTasks[taskId].data[2] != 0xFFFF) + { + RequestSpriteCopy( + &gTasks[taskId].data[2], + (void *)(VRAM + 0xC000 + (147 + r6 + r5 * 160) * 2), + 2); + } + else + { + u8 i; + + for (i = 0; i < 3; i++) + { + if (gTasks[taskId].data[i + 4] < 0) + { + RequestSpriteCopy( + &gTasks[taskId].data[i + 7], + (void *)(VRAM + 0xC000 + (147 + r6 + r5 * 160) * 2), + 2); + gTasks[taskId].data[i + 4]++; + break; + } + } + } + } +} + +void sub_80AFA5C(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + DmaClear16(3, (void *)(VRAM + 0xC000 + (86 + i * 160) * 2), 16); + DmaClear16(3, (void *)(VRAM + 0xC000 + (118 + i * 160) * 2), 16); + } +} + +void unref_sub_80AFAB8(s16 a, u8 b) +{ + u8 r5 = sub_80AFB74(a); + u16 r2; + u8 i; + u16 arr[9]; + + if (b == 0) + r2 = 0x50A2; + else if (b == 1) + r2 = 0x60A2; + else if (b == 2) + r2 = 0x70A2; + else + r2 = 0x80A2; - for (r5 = 0; r5 < 4; r5++) + for (i = 0; i < 9; i++) { - shared19260_[r5].unk2 = 0; - shared19260_[r5].unk0 = 0; - shared19260_[r5].unk12 = 0; - if (shared19260_[r5].unkC & 6) + if (i < r5) + arr[i] = r2; + else + arr[i] = 0; + } + + { + void *src = arr; + void *dest = (void *)(VRAM + 0xC000 + (148 + b * 160) * 2); + DmaCopy16(3, src, dest, sizeof(arr)); + } +} + +u16 sub_80AFB40(u8 a) +{ + u16 var; + + if (a == 0) + var = 0x5011; + else if (a == 1) + var = 0x6011; + else if (a == 2) + var = 0x7011; + else + var = 0x8011; + return var + 1; +} + +s8 sub_80AFB74(s16 a) +{ + s8 retVal = a / 10; + + if (retVal > 16) + retVal = 16; + else if (retVal < -16) + retVal = -16; + return retVal; +} + +u8 sub_80AFBA0(s16 a, s16 b, u8 c) +{ + u8 taskId; + s8 r4; + s8 r5; + + shared19338[c].unk2_2 = 1; + taskId = CreateTask(sub_80AFC74, 20); + r4 = sub_80AFB74(a); + r5 = sub_80AFB74(a + b) - r4; + sub_80AFB40(c); // unused return value + gTasks[taskId].data[0] = abs(r4); + gTasks[taskId].data[1] = r5; + if (r4 > 0 || (r4 == 0 && r5 > 0)) + gTasks[taskId].data[2] = 1; + else + gTasks[taskId].data[2] = -1; + gTasks[taskId].data[3] = c; + if (b < 0) + nullsub_19(c); + return taskId; +} + +void sub_80AFC74(u8 taskId) +{ + u8 r7 = gTasks[taskId].data[3]; + s16 r3 = gTasks[taskId].data[0]; + s16 r1 = gTasks[taskId].data[1]; + + if (++gTasks[taskId].data[10] > 14) + { + u16 r6; + u8 r5; + u8 r10; + + gTasks[taskId].data[10] = 0; + if (gTasks[taskId].data[1] == 0) + { + nullsub_19(r7); + DestroyTask(taskId); + shared19338[r7].unk2_2 = 0; + return; + } + else if (r3 == 0) + { + if (r1 < 0) + { + r6 = sub_80AFB40(r7) + 2; + gTasks[taskId].data[1]++; + } + else + { + r6 = sub_80AFB40(r7); + gTasks[taskId].data[1]--; + } + r5 = gTasks[taskId].data[0]++; + } + else + { + if (gTasks[taskId].data[2] < 0) + { + if (r1 < 0) + { + r5 = gTasks[taskId].data[0]++; + gTasks[taskId].data[1]++; + r6 = sub_80AFB40(r7) + 2; + } + else + { + r5 = --gTasks[taskId].data[0]; + r6 = 0; + gTasks[taskId].data[1]--; + } + } + else + { + if (r1 < 0) + { + r5 = --gTasks[taskId].data[0]; + r6 = 0; + gTasks[taskId].data[1]++; + } + else + { + r5 = gTasks[taskId].data[0]++; + gTasks[taskId].data[1]--; + r6 = sub_80AFB40(r7); + } + } + } + r10 = r5; + if (r5 > 7) + r5 += 24; + // Seriously, a 2-byte CpuFill? Why? + CpuFill16(r6, (void *)(VRAM + 0xC000 + (0x56 + r5 + gUnknown_02038696[r7] * 160) * 2), 2); + if (r1 > 0) + { + PlaySE(SE_C_GAJI); + m4aMPlayImmInit(&gMPlay_SE1); + m4aMPlayPitchControl(&gMPlay_SE1, 0xFFFF, r10 * 256); + } + else + { + PlaySE(SE_BOO); + } + if (r5 == 0 && r6 == 0) + gTasks[taskId].data[2] = -gTasks[taskId].data[2]; + } +} +void sub_80AFE30(void) +{ + s32 i; + + LoadSpriteSheet(&gUnknown_083CA350); + for (i = 0; i < 4; i++) + { + u8 y = gUnknown_083CA338[gUnknown_02038696[i]]; + + shared19338[i].unk0 = CreateSprite(&gSpriteTemplate_83CA3AC, 180, y, 1); } } -*/ \ No newline at end of file + +void sub_80AFE78(u8 a) +{ + u8 spriteId; + s16 r5; + + shared19338[a].unk2_0 = 1; + spriteId = shared19338[a].unk0; + r5 = shared19260_[a].unk4 / 10 * 2; + if (r5 > 56) + r5 = 56; + else if (r5 < 0) + r5 = 0; + gSprites[spriteId].invisible = FALSE; + gSprites[spriteId].data[0] = a; + gSprites[spriteId].data[1] = r5; + if (gSprites[spriteId].data[1] > gSprites[spriteId].pos2.x) + gSprites[spriteId].data[2] = 1; + else + gSprites[spriteId].data[2] = -1; + gSprites[spriteId].callback = sub_80AFF60; +} + +void sub_80AFF10(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + sub_80AFE78(i); +} + +bool8 sub_80AFF28(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (shared19338[i].unk2_0) + break; + } + if (i == 4) + return TRUE; + else + return FALSE; +} + +void sub_80AFF60(struct Sprite *sprite) +{ + if (sprite->pos2.x == sprite->data[1]) + { + shared19338[sprite->data[0]].unk2_0 = 0; + sprite->callback = SpriteCallbackDummy; + } + else + { + sprite->pos2.x += sprite->data[2]; + } +} + +void sub_80AFFA0(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + gSprites[shared19338[i].unk0].pos1.y = gUnknown_083CA338[gUnknown_02038696[i]]; +} + +void sub_80AFFE0(bool8 a) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (gUnknown_02038696[i] > 1) + { + if (!a) + gSprites[shared19338[i].unk0].pos1.x = 180; + else + gSprites[shared19338[i].unk0].pos1.x = 256; + } + } +} + +void sub_80B0034(void) +{ + s32 i; + + LoadSpritePalette(&gUnknown_083CA3E4); + for (i = 0; i < 4; i++) + { + LoadCompressedObjectPic(&gUnknown_083CA3C4[i]); + shared19338[i].unk1 = CreateSprite( + &gSpriteTemplate_83CA3F4[i], + 204, gUnknown_083CA33C[gUnknown_02038696[i]], + 0); + SetSubspriteTables(&gSprites[shared19338[i].unk1], gSubspriteTables_83CA464); + gSprites[shared19338[i].unk1].invisible = TRUE; + } +} + +void sub_80B00C8(void) +{ + u8 spriteId; + + LoadCompressedObjectPic(&gUnknown_083CA46C); + LoadSpritePalette(&gUnknown_083CA474); + spriteId = CreateSprite(&gSpriteTemplate_83CA484, 30, 44, 1); + gSprites[spriteId].invisible = TRUE; + shared19204.unk1925C = spriteId; +} + +void nullsub_18(int unused) +{ +} + +void unref_sub_80B011C(void) +{ + u8 i; + + LoadCompressedObjectPic(&gUnknown_083CC3AC); + for (i = 0; i < 4; i++) + LoadCompressedObjectPalette(&gUnknown_083CC3B4[i]); + for (i = 0; i < 4; i++) + { + u8 spriteId = CreateSprite( + &gSpriteTemplate_83CC454[i], + gUnknown_083CA330[i][0], gUnknown_083CA330[i][1], + 5); + + gSprites[spriteId].invisible = TRUE; + gSprites[spriteId].data[0] = i; + shared19204.unk1920D[i] = spriteId; + } +} + +void unref_sub_80B01B0(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + gSprites[shared19204.unk1920D[i]].callback = sub_80B0238; +} -- cgit v1.2.3 From 1e40c9572a59aa1a178ba634a5b130bb7b511a04 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Tue, 19 Dec 2017 10:01:24 -0600 Subject: Decompile battle_anim fury_cutter_count --- src/battle/anim/fury_cutter_count.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/battle/anim/fury_cutter_count.c (limited to 'src') diff --git a/src/battle/anim/fury_cutter_count.c b/src/battle/anim/fury_cutter_count.c new file mode 100644 index 000000000..17b084585 --- /dev/null +++ b/src/battle/anim/fury_cutter_count.c @@ -0,0 +1,20 @@ +#include "global.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 *gDisableStructMoveAnim; // TODO: this is declared with a different type in different files + +// fury_cutter (updates the direction and count of the fury cutter animation) +// Used in Fury Cutter. + +void UpdateFuryCutterAnimDirection(u8 taskId) +{ + gBattleAnimArgs[7] = gDisableStructMoveAnim[16] & 1; + DestroyAnimVisualTask(taskId); +} + +void UpdateFuryCutterAnimCount(u8 taskId) +{ + gBattleAnimArgs[7] = gDisableStructMoveAnim[16]; + DestroyAnimVisualTask(taskId); +} -- cgit v1.2.3 From 48d4388347e885038609766d044b8aaaad38dc5a Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Tue, 19 Dec 2017 10:26:58 -0600 Subject: Decompile battle_anim rain --- src/battle/anim/rain.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/battle/anim/rain.c (limited to 'src') diff --git a/src/battle/anim/rain.c b/src/battle/anim/rain.c new file mode 100644 index 000000000..b38233e3c --- /dev/null +++ b/src/battle/anim/rain.c @@ -0,0 +1,56 @@ +#include "global.h" +#include "battle_anim.h" +#include "random.h" +#include "sprite.h" +#include "task.h" + +extern s16 gBattleAnimArgs[8]; +extern const struct SpriteTemplate gSpriteTemplate_83D9130[]; + +static void MoveAnimRaindrop(struct Sprite *); + +// rain (spawns and animates raindrops) +// Used in Rain Dance and general rain animation. + +void CreateAnimRaindrops(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + } + + gTasks[taskId].data[0]++; + + if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1) + { + u8 x = Random() % 240; + u8 y = Random() % 80; + CreateSprite(gSpriteTemplate_83D9130, x, y, 4); + } + + if (gTasks[taskId].data[0] == gTasks[taskId].data[3]) + { + DestroyAnimVisualTask(taskId); + } +} + +void SetAnimRaindropCallback(struct Sprite *sprite) +{ + sprite->callback = MoveAnimRaindrop; +} + +static void MoveAnimRaindrop(struct Sprite *sprite) +{ + if (++sprite->data[0] <= 13) + { + sprite->pos2.x++; + sprite->pos2.y += 4; + } + + if (sprite->animEnded) + { + DestroySprite(sprite); + } +} -- cgit v1.2.3 From 652ea061a1795b78e9b066381df33a53292c8d9a Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Tue, 19 Dec 2017 11:53:13 -0600 Subject: Decompile battle_anim energy_wave --- src/battle/anim/energy_wave.c | 162 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 src/battle/anim/energy_wave.c (limited to 'src') diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c new file mode 100644 index 000000000..ffba5c300 --- /dev/null +++ b/src/battle/anim/energy_wave.c @@ -0,0 +1,162 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern const struct SpriteTemplate gSpriteTemplate_83D9130[]; + +static void sub_80D35DC(struct Sprite *); +static void sub_80D365C(u8); +static void sub_80D370C(struct Sprite *); + +// energy_wave (animates steady "waves" of energy) +// Used in Hydro Pump, Mud Shot, Signal Beam, Flamethrower, Psywave, and +// Hydro Cannon. + +void sub_80D3554(struct Sprite *sprite) +{ + sub_80787B0(sprite, 1); + + sprite->data[0] = 30; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + + obj_translate_based_on_private_1_2_3_4(sprite); + + sprite->data[5] = 0xD200 / sprite->data[0]; + sprite->data[7] = gBattleAnimArgs[3]; + + if (gBattleAnimArgs[7] > 127) + { + sprite->data[6] = (gBattleAnimArgs[7] - 127) << 8; + sprite->data[7] = -sprite->data[7]; + } + else + { + sprite->data[6] = gBattleAnimArgs[7] << 8; + } + + sprite->callback = sub_80D35DC; + sprite->callback(sprite); +} + +static void sub_80D35DC(struct Sprite *sprite) +{ + if (sub_8078B5C(sprite)) + { + move_anim_8072740(sprite); + } + + sprite->pos2.y += Sin(sprite->data[6] >> 8, sprite->data[7]); + if (((sprite->data[6] + sprite->data[5]) >> 8) > 127) + { + sprite->data[6] = 0; + sprite->data[7] = -sprite->data[7]; + } + else + { + sprite->data[6] += sprite->data[5]; + } +} + +void sub_80D3630(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gBattleAnimArgs[7] = 0; + gTasks[taskId].func = sub_80D365C; +} + +static void sub_80D365C(u8 taskId) +{ + gBattleAnimArgs[7] = (gBattleAnimArgs[7] + 3) & 0xFF; + if (--gTasks[taskId].data[0] == 0) + { + DestroyAnimVisualTask(taskId); + } +} + +void sub_80D3698(struct Sprite *sprite) +{ + u8 subpriority; + + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 0); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 1); + sprite->pos2.y = -10; + + subpriority = sub_8079E90(gBattleAnimBankAttacker); + + if (!NotInBattle()) + { + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + sprite->pos2.x = 10; + sprite->subpriority = subpriority + 2; + } + else + { + sprite->pos2.x = -10; + sprite->subpriority = subpriority - 2; + } + } + else + { + sprite->pos2.x = -10; + sprite->subpriority = subpriority + 2; + } + + sprite->callback = sub_80D370C; +} + +static void sub_80D370C(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + move_anim_8072740(sprite); + } +} + +void sub_80D3728(struct Sprite *sprite) +{ + int var1, var2; + + if (GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) + { + gBattleAnimArgs[0] *= -1; + + if (GetBankIdentity(gBattleAnimBankAttacker) == 0 || GetBankIdentity(gBattleAnimBankAttacker) == 1) + { + gBattleAnimArgs[0] *= -1; + } + + } + + if ((gBattleAnimArgs[5] & 0xFF00) == 0) + var1 = 1; + else + var1 = 0; + + if ((u8)gBattleAnimArgs[5] == 0) + var2 = 3; + else + var2 = 1; + + sub_80787B0(sprite, var1); + + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, var2) + gBattleAnimArgs[3]; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} -- cgit v1.2.3 From 5cdafb90dda83aa270b8fcf34051478da9ec82d9 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Tue, 19 Dec 2017 12:00:05 -0600 Subject: Decompile battle_anim sunlight --- src/battle/anim/sunlight.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/battle/anim/sunlight.c (limited to 'src') diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c new file mode 100644 index 000000000..f6cb8a077 --- /dev/null +++ b/src/battle/anim/sunlight.c @@ -0,0 +1,17 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" + +// sunlight (creates sunlight orbs) +// Used in Sunny Day + +void sub_80D517C(struct Sprite *sprite) +{ + sprite->pos1.x = 0; + sprite->pos1.y = 0; + sprite->data[0] = 60; + sprite->data[2] = 140; + sprite->data[4] = 80; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8072740); +} -- cgit v1.2.3 From 030611fd93070a802f581c0cbb882fc21d553307 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Tue, 19 Dec 2017 14:51:10 -0600 Subject: Decompile battle_anim heated_rock --- src/battle/anim/heated_rock.c | 205 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 src/battle/anim/heated_rock.c (limited to 'src') diff --git a/src/battle/anim/heated_rock.c b/src/battle/anim/heated_rock.c new file mode 100644 index 000000000..1d59669cf --- /dev/null +++ b/src/battle/anim/heated_rock.c @@ -0,0 +1,205 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern u16 gBattleTypeFlags; + +void sub_80D59B0(struct Sprite *); +static void sub_80D5A74(struct Sprite *); + +// heated_rock (moves heated rock sprites) +// Used in Eruption. + +void sub_80D58FC(struct Sprite *sprite) +{ + sub_80D59B0(sprite); + + if (sprite->invisible) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + DestroySprite(sprite); + } +} + +u16 sub_80D5940(u8 spriteId) +{ + u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY; + + if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + var1 = ((var1 << 16) + 0x4A0000) >> 16; + } + else + { + var1 = ((var1 << 16) + 0x2C0000) >> 16; + } + + return var1; +} + +void sub_80D5994(struct Sprite *sprite, s16 x, s16 y) +{ + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = (u16)sprite->pos1.x * 8; + sprite->data[3] = (u16)sprite->pos1.y * 8; + sprite->data[4] = x * 8; + sprite->data[5] = y * 8; +} + +#ifdef NONMATCHING +void sub_80D59B0(struct Sprite *sprite) +{ + int var1; + int var2; + + if (++sprite->data[0] > 2) + { + sprite->data[0] = 0; + ++sprite->data[1]; + sprite->data[3] += ((u16)sprite->data[1] * (u16)sprite->data[1]); + } + + var1 = (u16)sprite->data[4] + (u16)sprite->data[2]; + sprite->data[2] = var1; + var1 = (s16)var1 >> 3; + sprite->pos1.x = var1; + + var2 = (u16)sprite->data[5] + (u16)sprite->data[3]; + sprite->data[3] = var2; + var2 = (s16)var2 >> 3; + sprite->pos1.y = var2; + + if ((u32)((var1 + 8) << 16) > 0x1000000 || var2 < -8 || var2 > 120) + { + sprite->invisible = 1; + } +} +#else +__attribute__((naked)) +void sub_80D59B0(struct Sprite *sprite) +{ + asm(".syntax unified\n\ + push {lr}\n\ + adds r2, r0, 0\n\ + ldrh r0, [r2, 0x2E]\n\ + adds r0, 0x1\n\ + strh r0, [r2, 0x2E]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x2\n\ + ble _080D59DA\n\ + movs r0, 0\n\ + strh r0, [r2, 0x2E]\n\ + ldrh r0, [r2, 0x30]\n\ + adds r0, 0x1\n\ + strh r0, [r2, 0x30]\n\ + ldrh r0, [r2, 0x30]\n\ + adds r1, r0, 0\n\ + muls r1, r0\n\ + adds r0, r1, 0\n\ + ldrh r3, [r2, 0x34]\n\ + adds r0, r3\n\ + strh r0, [r2, 0x34]\n\ +_080D59DA:\n\ + ldrh r0, [r2, 0x36]\n\ + ldrh r1, [r2, 0x32]\n\ + adds r0, r1\n\ + strh r0, [r2, 0x32]\n\ + lsls r0, 16\n\ + asrs r0, 19\n\ + strh r0, [r2, 0x20]\n\ + ldrh r1, [r2, 0x38]\n\ + ldrh r3, [r2, 0x34]\n\ + adds r1, r3\n\ + strh r1, [r2, 0x34]\n\ + lsls r1, 16\n\ + asrs r3, r1, 19\n\ + strh r3, [r2, 0x22]\n\ + adds r0, 0x8\n\ + lsls r0, 16\n\ + movs r1, 0x80\n\ + lsls r1, 17\n\ + cmp r0, r1\n\ + bhi _080D5A10\n\ + adds r1, r3, 0\n\ + movs r0, 0x8\n\ + negs r0, r0\n\ + cmp r1, r0\n\ + blt _080D5A10\n\ + cmp r1, 0x78\n\ + ble _080D5A1C\n\ +_080D5A10:\n\ + adds r0, r2, 0\n\ + adds r0, 0x3E\n\ + ldrb r1, [r0]\n\ + movs r2, 0x4\n\ + orrs r1, r2\n\ + strb r1, [r0]\n\ +_080D5A1C:\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_80D5A20(struct Sprite *sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[6] = gBattleAnimArgs[2]; + sprite->data[7] = gBattleAnimArgs[3]; + + sprite->oam.tileNum += gBattleAnimArgs[4] * 16; + sprite->callback = sub_80D5A74; +} + +static void sub_80D5A74(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (sprite->data[6] != 0) + { + sprite->data[6]--; + return; + } + + sprite->data[0]++; + // fall through + case 1: + sprite->pos1.y += 8; + if (sprite->pos1.y >= sprite->data[7]) + { + sprite->pos1.y = sprite->data[7]; + sprite->data[0]++; + } + break; + case 2: + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + if ((++sprite->data[2] & 1) != 0) + { + sprite->pos2.y = -3; + } + else + { + sprite->pos2.y = 3; + } + } + + if (++sprite->data[3] > 16) + { + move_anim_8072740(sprite); + } + break; + } +} -- cgit v1.2.3 From f17a25cdc3a944be2a8ea5d8ec97f75047e99e2c Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Tue, 19 Dec 2017 15:44:14 -0600 Subject: Decompile battle_anim wisp_orb --- src/battle/anim/wisp_orb.c | 105 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 src/battle/anim/wisp_orb.c (limited to 'src') diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c new file mode 100644 index 000000000..0e13fa119 --- /dev/null +++ b/src/battle/anim/wisp_orb.c @@ -0,0 +1,105 @@ +#include "global.h" +#include "battle_anim.h" +#include "constants/songs.h" +#include "rom_8077ABC.h" +#include "sound.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern u16 gBattleTypeFlags; +extern u8 gUnknown_0202F7D2; + +static void sub_80D5C5C(struct Sprite *); + +// wisp_orb (animates the wisp orbs) +// Used in Will-O-Wisp + +void sub_80D5B0C(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sub_80787B0(sprite, 0); + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->data[7] = gBattleAnimArgs[2]; + + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->data[4] = 4; + } + else + { + sprite->data[4] = -4; + } + + sprite->oam.priority = sub_8079ED4(gBattleAnimBankTarget); + sprite->data[0]++; + break; + case 1: + sprite->data[1] += 192; + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos2.y = -(sprite->data[1] >> 8); + } + else + { + sprite->pos2.y = sprite->data[1] >> 8; + } + + sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]); + sprite->data[2] = (sprite->data[2] + 4) & 0xFF; + + if (++sprite->data[3] == 1) + { + sprite->data[3] = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]); + sprite->data[2] = (sprite->data[2] + 4) & 0xFF; + + if (++sprite->data[3] == 31) + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + + sprite->data[0] = 256; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3); + + sub_8078BD4(sprite); + sprite->callback = sub_80D5C5C; + } + break; + } +} + +static void sub_80D5C5C(struct Sprite *sprite) +{ + s16 initialData5; + s16 newData5; + + if (!sub_8078B5C(sprite)) + { + sprite->pos2.x += Sin(sprite->data[5], 16); + initialData5 = sprite->data[5]; + sprite->data[5] = (sprite->data[5] + 4) & 0xFF; + newData5 = sprite->data[5]; + + if ((initialData5 == 0 || initialData5 > 196) && newData5 > 0 && sprite->data[7] == 0) + { + PlaySE12WithPanning(SE_W172, gUnknown_0202F7D2); + } + } + else + { + move_anim_8072740(sprite); + } +} -- cgit v1.2.3 From 5f32e88a6abb90507ddcac68673e35de8b4d8c26 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Tue, 19 Dec 2017 20:43:18 -0600 Subject: Decompile battle_anim thunder --- src/battle/anim/thunder.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/battle/anim/thunder.c (limited to 'src') diff --git a/src/battle/anim/thunder.c b/src/battle/anim/thunder.c new file mode 100644 index 000000000..5064148ef --- /dev/null +++ b/src/battle/anim/thunder.c @@ -0,0 +1,36 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern u16 gBattleTypeFlags; + +static void sub_80D6218(struct Sprite *); + +// thunder (positions the lightning bolts) +// Used in Thunder, Thunder Punch, and Tri Attack. + +void sub_80D61C8(struct Sprite *sprite) +{ + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->callback = sub_80D6218; +} + +static void sub_80D6218(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + move_anim_8072740(sprite); + } +} -- cgit v1.2.3 From b2460cb232e328fe2b4bb354c2ad789d0e79c1f0 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 19 Dec 2017 23:25:04 -0600 Subject: decompile unref_sub_80B01E0 - sub_80B0F28 --- src/contest.c | 1029 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1009 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index c44b07dea..94369b87e 100644 --- a/src/contest.c +++ b/src/contest.c @@ -4,6 +4,7 @@ #include "constants/songs.h" #include "constants/species.h" #include "battle_anim.h" +#include "blend_palette.h" #include "contest.h" #include "contest_link_80C857C.h" #include "data2.h" @@ -27,6 +28,7 @@ #include "text.h" #include "tv.h" #include "unknown_task.h" +#include "util.h" extern bool8 AreMovesContestCombo(u16, u16); extern void sub_80C8A38(u8); @@ -51,8 +53,9 @@ struct Shared19204 /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; /*0x1920A*/ u16 unk1920A_0:1; - /*0x1920A*/ u16 unk1920A_1:1; - /*0x1920A*/ u16 unk1920A_2:2; + u16 unk1920A_1:1; + u16 unk1920A_2:1; + u16 unk1920A_3:1; u16 unk1920A_4:1; u16 unk1920A_5:1; u16 unk1920A_6:1; @@ -61,7 +64,10 @@ struct Shared19204 u16 unk1920B_1:1; u16 unk1920B_2:1; /*0x1920C*/ u8 unk1920C; - /*0x1920D*/ u8 unk1920D[0x14-0xD]; + /*0x1920D*/ u8 unk1920D[4]; + /*0x19211*/ u8 unk19211; + /*0x19212*/ u8 unk19212; + /*0x19213*/ u8 filler19213; /*0x19214*/ u8 unk19214; /*0x19215*/ u8 unk19215; /*0x19216*/ u8 unk19216; @@ -279,6 +285,7 @@ extern const u8 gUnknownText_UnknownFormatting2[]; extern const u8 gUnknownText_UnknownFormatting3[]; extern const u8 gUnknown_083CC59C[]; extern const u8 gUnknown_083CC5A2[]; +extern const u16 gUnknown_083CC5A4[]; extern const u8 gUnknownText_MissedTurn[]; extern const u8 gUnknownText_LinkStandbyAndWinner[]; @@ -375,13 +382,24 @@ void sub_80B0034(void); void sub_80B00C8(void); void nullsub_18(int); void sub_80B0238(struct Sprite *); +void sub_80B0280(struct Sprite *); +void sub_80B02A8(struct Sprite *); +void sub_80B02F4(struct Sprite *); void sub_80B0324(void); void sub_80B03A8(u8); +void sub_80B03D8(u8); +void sub_80B0458(u8); void sub_80B0518(void); -void nullsub_19(); -void sub_80B09B0(); -u8 sub_80B09E4(); -void sub_80B0BC4(); +void sub_80B0548(u8); +void sub_80B05A4(u8); +void nullsub_19(int); +void sub_80B05FC(u8); +void sub_80B0748(u8); +void sub_80B09B0(u8); +u8 sub_80B09E4(u8); +void sub_80B0BC4(u8, bool8); +void sub_80B0C5C(struct Sprite *); +void sub_80B0CB0(struct Sprite *); void sub_80B0CDC(u8, int); void sub_80B0D7C(void); void sub_80B1118(void); @@ -1112,7 +1130,7 @@ void sub_80AC2CC(u8 taskId) gSprites[spriteId].callback = sub_80AD8FC; gTasks[taskId].data[2] = spriteId; gObjectBankIDs[gBankAttacker] = spriteId; - sub_80B0BC4(sub_80B09E4(shared19204.unk19215), 0); + sub_80B0BC4(sub_80B09E4(shared19204.unk19215), FALSE); gTasks[taskId].data[0] = 4; return; case 4: @@ -3377,12 +3395,12 @@ void sub_80AFC74(u8 taskId) void sub_80AFE30(void) { s32 i; - + LoadSpriteSheet(&gUnknown_083CA350); for (i = 0; i < 4; i++) { u8 y = gUnknown_083CA338[gUnknown_02038696[i]]; - + shared19338[i].unk0 = CreateSprite(&gSpriteTemplate_83CA3AC, 180, y, 1); } } @@ -3391,7 +3409,7 @@ void sub_80AFE78(u8 a) { u8 spriteId; s16 r5; - + shared19338[a].unk2_0 = 1; spriteId = shared19338[a].unk0; r5 = shared19260_[a].unk4 / 10 * 2; @@ -3412,7 +3430,7 @@ void sub_80AFE78(u8 a) void sub_80AFF10(void) { s32 i; - + for (i = 0; i < 4; i++) sub_80AFE78(i); } @@ -3420,7 +3438,7 @@ void sub_80AFF10(void) bool8 sub_80AFF28(void) { s32 i; - + for (i = 0; i < 4; i++) { if (shared19338[i].unk2_0) @@ -3448,7 +3466,7 @@ void sub_80AFF60(struct Sprite *sprite) void sub_80AFFA0(void) { s32 i; - + for (i = 0; i < 4; i++) gSprites[shared19338[i].unk0].pos1.y = gUnknown_083CA338[gUnknown_02038696[i]]; } @@ -3456,7 +3474,7 @@ void sub_80AFFA0(void) void sub_80AFFE0(bool8 a) { s32 i; - + for (i = 0; i < 4; i++) { if (gUnknown_02038696[i] > 1) @@ -3472,7 +3490,7 @@ void sub_80AFFE0(bool8 a) void sub_80B0034(void) { s32 i; - + LoadSpritePalette(&gUnknown_083CA3E4); for (i = 0; i < 4; i++) { @@ -3489,7 +3507,7 @@ void sub_80B0034(void) void sub_80B00C8(void) { u8 spriteId; - + LoadCompressedObjectPic(&gUnknown_083CA46C); LoadSpritePalette(&gUnknown_083CA474); spriteId = CreateSprite(&gSpriteTemplate_83CA484, 30, 44, 1); @@ -3504,7 +3522,7 @@ void nullsub_18(int unused) void unref_sub_80B011C(void) { u8 i; - + LoadCompressedObjectPic(&gUnknown_083CC3AC); for (i = 0; i < 4; i++) LoadCompressedObjectPalette(&gUnknown_083CC3B4[i]); @@ -3514,7 +3532,7 @@ void unref_sub_80B011C(void) &gSpriteTemplate_83CC454[i], gUnknown_083CA330[i][0], gUnknown_083CA330[i][1], 5); - + gSprites[spriteId].invisible = TRUE; gSprites[spriteId].data[0] = i; shared19204.unk1920D[i] = spriteId; @@ -3524,7 +3542,978 @@ void unref_sub_80B011C(void) void unref_sub_80B01B0(void) { s32 i; - + for (i = 0; i < 4; i++) gSprites[shared19204.unk1920D[i]].callback = sub_80B0238; } + +bool8 unref_sub_80B01E0(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (gSprites[shared19204.unk1920D[i]].callback != SpriteCallbackDummy) + break; + } + if (i == 4) + return TRUE; + else + return FALSE; +} + +void sub_80B0238(struct Sprite *sprite) +{ + sprite->oam.affineMode = 1; + InitSpriteAffineAnim(sprite); + if (sprite->invisible) + { + sprite->callback = sub_80B02A8; + } + else + { + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_80B0280; + } +} + +void sub_80B0280(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + sprite->invisible = TRUE; + sprite->callback = sub_80B02A8; + } +} + +void sub_80B02A8(struct Sprite *sprite) +{ + sprite->invisible = FALSE; + StartSpriteAnim(sprite, shared19260_[sprite->data[0]].unkB_0); + StartSpriteAffineAnim(sprite, 2); + sprite->callback = sub_80B02F4; + PlaySE(SE_JYUNI); +} + +void sub_80B02F4(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + FreeSpriteOamMatrix(sprite); + sprite->oam.affineMode = 0; + sprite->callback = SpriteCallbackDummy; + } +} + +void sub_80B0324(void) +{ + u8 i; + u8 taskId = CreateTask(sub_80B0458, 30); + + shared19204.unk19211 = taskId; + for (i = 0; i < 4; i++) + gTasks[taskId].data[i * 4] = 0xFF; +} + +void sub_80B0368(u8 a) +{ + gTasks[shared19204.unk19211].data[a * 4 + 0] = 0; + gTasks[shared19204.unk19211].data[a * 4 + 1] = 0; +} + +void sub_80B03A8(u8 a) +{ + u8 taskId = CreateTask(sub_80B03D8, 31); + + gTasks[taskId].data[0] = a; +} + +void sub_80B03D8(u8 taskId) +{ + u8 r4 = gTasks[taskId].data[0]; + + if (gTasks[shared19204.unk19211].data[r4 * 4 + 0] == 0 + || gTasks[shared19204.unk19211].data[r4 * 4 + 0] == 0xFF) + { + gTasks[shared19204.unk19211].data[r4 * 4 + 0] = 0xFF; + gTasks[shared19204.unk19211].data[r4 * 4 + 1] = 0; + BlendPalette((shared19204.unk19218[r4] + 5) * 16 + 6, 2, 0, 0x4BFF); + DestroyTask(taskId); + } +} + +void sub_80B0458(u8 taskId) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + u8 r3 = i * 4; + + if (gTasks[taskId].data[r3 + 0] != 0xFF) + { + if (gTasks[taskId].data[r3 + 1] == 0) + gTasks[taskId].data[r3 + 0]++; + else + gTasks[taskId].data[r3 + 0]--; + + if (gTasks[taskId].data[r3 + 0] == 16 + || gTasks[taskId].data[r3 + 0] == 0) + gTasks[taskId].data[r3 + 1] ^= 1; + + BlendPalette( + (shared19204.unk19218[i] + 5) * 16 + 6, + 2, + gTasks[taskId].data[r3 + 0], + 0x4BFF); + } + } +} + +void sub_80B0518(void) +{ + u8 i; + + shared19204.unk19212 = CreateTask(sub_80B05FC, 30); + for (i = 0; i < 4; i++) + sub_80B0548(i); +} + +void sub_80B0548(u8 a) +{ + gTasks[shared19204.unk19212].data[a * 4 + 0] = 0xFF; + gTasks[shared19204.unk19212].data[a * 4 + 1] = 0; +} + +void sub_80B0588(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + sub_80B05A4(i); +} + +void sub_80B05A4(u8 a) +{ + u32 var; + u32 r0; + + sub_80B0548(a); + + // 2-byte DMA copy? Why? + + r0 = a + 5; + { + void *src = gPlttBufferUnfaded + r0 * 16 + 10; + void *dest = gPlttBufferFaded + r0 * 16 + 10; + DmaCopy16(3, src, dest, 2); + } + var = (a + 5) * 16 + 12 + a; + { + void *src = gPlttBufferUnfaded + var; + void *dest = gPlttBufferFaded + var; + DmaCopy16(3, src, dest, 2); + } +} + +void nullsub_19(int unused) +{ +} + +void sub_80B05FC(u8 taskId) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + u8 r3 = i * 4; + + if (gTasks[taskId].data[r3 + 0] != 0xFF) + { + if (++gTasks[taskId].data[r3 + 2] > 2) + { + gTasks[taskId].data[r3 + 2] = 0; + + if (gTasks[taskId].data[r3 + 1] == 0) + gTasks[taskId].data[r3 + 0]++; + else + gTasks[taskId].data[r3 + 0]--; + + if (gTasks[taskId].data[r3 + 0] == 16 + || gTasks[taskId].data[r3 + 0] == 0) + gTasks[taskId].data[r3 + 1] ^= 1; + + BlendPalette((i + 5) * 16 + 10, 1, gTasks[taskId].data[r3 + 0], 0x4BFF); + BlendPalette((i + 5) * 16 + 12 + i, 1, gTasks[taskId].data[r3 + 0], 0x4BFF); + } + } + } +} + +u8 unref_sub_80B06E0(u8 *a) +{ + u8 i; + u8 taskId = CreateTask(sub_80B0748, 10); + + for (i = 0; i < 4; i++) + { + u8 r0 = i * 4; + + gTasks[taskId].data[r0] = a[i]; + if (a[i] != 0) + shared19338[i].unk2_1 = 1; + } + return taskId; +} + +#ifdef NONMATCHING +void sub_80B0748(u8 taskId) +{ + u8 i; + u8 r4_2; + u8 r1; + u8 r7; + + for (i = 0; i < 4; i++) + { + //#define r4 r4_2 + r4 = gUnknown_02038696[i]; + r1 = r4 * 4; + r7 = gTasks[taskId].data[r1 + 0]; + + if (r7 != 0) + { + //_080B079C + u8 r8 = gTasks[taskId].data[r1 + 1]; + u8 r5 = gTasks[taskId].data[r1 + 2]; + u8 r6 = gTasks[taskId].data[r1 + 3]; + + if (r7 == 1) + { + r6++; + if (r6 == 1) + { + //_080B07D2 + r6 = 0; + BlendPalette((r4 + 5) * 16 + 1, 3, r5, 0x7FFF); + if (r5 == 0 && r8 == 4) + { + gTasks[taskId].data[r1 + 0] = 0; + //asm(""); + } + //_080B0800 + else + { + r5 += 2; + if (r5 > 13) + { + r5 = 0; + r8++; + } + } + } + //to _080B08EA + } + //_080B0818 + else if (r7 == 2 || r7 == 4) + { + r6++; + if (r6 == 3) + { + r6 = 0; + BlendPalette((r4 + 5) * 16 + 1, 3, r5, gUnknown_083CC5A4[r4]); + if (r5 == 0 && r8 == 2) + { + gTasks[taskId].data[r1 + 0] = 0; + } + //_080B0858 + else + { + r5 += 1; + if (r5 == 14) + { + r5 = 0; + r8++; + if (r7 == 4 && r8 == 1) + { + BlendPalette((r4 + 9) * 16 + 2, 1, 4, 0); + BlendPalette((r4 + 9) * 16 + 5, 1, 4, 0); + } + } + } + } + //to _080B08EA + } + //_080B0896 + else if (r7 == 3) + { + r6++; + if (r6 == 12) + { + r6 = 0; + BlendPalette((r4 + 5) * 16 + 1, 3, r5, 0); + r5 += 1; + if (r5 == 5) + { + // What the hell? These aren't pointers. + // This code would crash if run. + { + void *src = (void *)(u32)gPlttBufferFaded[(r4 + 5) * 16 + 1]; + void *dest = (void *)(u32)gPlttBufferUnfaded[(r4 + 5) * 16 + 1]; + u32 size = 6; + DmaCopy16(3, src, dest, size); + } + gTasks[taskId].data[r1 + 0] = 0; + } + } + } + //_080B08EA + gTasks[taskId].data[r1 + 1] = r8; + gTasks[taskId].data[r1 + 2] = r5; + gTasks[taskId].data[r1 + 3] = r6; + } + //_080B0910 + } + //_080B0920 + + #define i r4_2 + for (i = 0; i < 4; i++) // r4 is i + { + if (gTasks[taskId].data[i * 4 + 0] != 0) + break; + } + //_080B0958 + if (i == 4) + { + for (i = 0; i < 4; i++) + shared19338[i].unk2_2 = 0; + DestroyTask(taskId); + } + #undef i +} +#else +__attribute__((naked)) +void sub_80B0748(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x20\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + str r0, [sp, 0x4]\n\ + ldr r2, _080B07F4 @ =gTasks\n\ + movs r1, 0x8\n\ + adds r1, r2\n\ + mov r10, r1\n\ + ldr r3, [sp]\n\ + lsls r3, 2\n\ + str r3, [sp, 0x1C]\n\ + ldr r1, [sp]\n\ + adds r0, r3, r1\n\ + lsls r0, 3\n\ + str r0, [sp, 0xC]\n\ +_080B0774:\n\ + ldr r0, _080B07F8 @ =gUnknown_02038696\n\ + ldr r3, [sp, 0x4]\n\ + adds r0, r3, r0\n\ + ldrb r4, [r0]\n\ + lsls r0, r4, 26\n\ + lsrs r1, r0, 24\n\ + lsls r0, r1, 1\n\ + str r0, [sp, 0x8]\n\ + ldr r3, [sp]\n\ + lsls r0, r3, 2\n\ + adds r0, r3\n\ + lsls r6, r0, 3\n\ + ldr r3, [sp, 0x8]\n\ + adds r0, r3, r6\n\ + add r0, r10\n\ + mov r9, r0\n\ + ldrb r7, [r0]\n\ + cmp r7, 0\n\ + bne _080B079C\n\ + b _080B0910\n\ +_080B079C:\n\ + adds r3, r1, 0x1\n\ + lsls r0, r3, 1\n\ + adds r0, r6\n\ + add r0, r10\n\ + ldrb r0, [r0]\n\ + mov r8, r0\n\ + adds r2, r1, 0x2\n\ + lsls r0, r2, 1\n\ + adds r0, r6\n\ + add r0, r10\n\ + ldrb r5, [r0]\n\ + adds r1, 0x3\n\ + lsls r0, r1, 1\n\ + adds r0, r6\n\ + add r0, r10\n\ + ldrb r6, [r0]\n\ + str r3, [sp, 0x10]\n\ + str r2, [sp, 0x14]\n\ + str r1, [sp, 0x18]\n\ + cmp r7, 0x1\n\ + bne _080B0818\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0x1\n\ + beq _080B07D2\n\ + b _080B08EA\n\ +_080B07D2:\n\ + movs r6, 0\n\ + adds r0, r4, 0x5\n\ + lsls r0, 4\n\ + adds r0, 0x1\n\ + movs r1, 0x3\n\ + adds r2, r5, 0\n\ + ldr r3, _080B07FC @ =0x00007fff\n\ + bl BlendPalette\n\ + cmp r5, 0\n\ + bne _080B0800\n\ + mov r0, r8\n\ + cmp r0, 0x4\n\ + bne _080B0800\n\ + mov r1, r9\n\ + strh r6, [r1]\n\ + b _080B08EA\n\ + .align 2, 0\n\ +_080B07F4: .4byte gTasks\n\ +_080B07F8: .4byte gUnknown_02038696\n\ +_080B07FC: .4byte 0x00007fff\n\ +_080B0800:\n\ + adds r0, r5, 0x2\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0xD\n\ + bls _080B08EA\n\ + movs r5, 0\n\ + mov r0, r8\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + b _080B08EA\n\ +_080B0818:\n\ + cmp r7, 0x2\n\ + beq _080B0820\n\ + cmp r7, 0x4\n\ + bne _080B0896\n\ +_080B0820:\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0x3\n\ + bne _080B08EA\n\ + movs r6, 0\n\ + adds r0, r4, 0x5\n\ + lsls r0, 4\n\ + adds r0, 0x1\n\ + ldr r2, _080B0854 @ =gUnknown_083CC5A4\n\ + lsls r1, r4, 1\n\ + adds r1, r2\n\ + ldrh r3, [r1]\n\ + movs r1, 0x3\n\ + adds r2, r5, 0\n\ + bl BlendPalette\n\ + cmp r5, 0\n\ + bne _080B0858\n\ + mov r2, r8\n\ + cmp r2, 0x2\n\ + bne _080B0858\n\ + mov r3, r9\n\ + strh r6, [r3]\n\ + b _080B08EA\n\ + .align 2, 0\n\ +_080B0854: .4byte gUnknown_083CC5A4\n\ +_080B0858:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0xE\n\ + bne _080B08EA\n\ + movs r5, 0\n\ + mov r0, r8\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + cmp r7, 0x4\n\ + bne _080B08EA\n\ + cmp r0, 0x1\n\ + bne _080B08EA\n\ + adds r4, 0x9\n\ + lsls r4, 4\n\ + adds r0, r4, 0x2\n\ + movs r1, 0x1\n\ + movs r2, 0x4\n\ + movs r3, 0\n\ + bl BlendPalette\n\ + adds r4, 0x5\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + movs r2, 0x4\n\ + movs r3, 0\n\ + bl BlendPalette\n\ + b _080B08EA\n\ +_080B0896:\n\ + cmp r7, 0x3\n\ + bne _080B08EA\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0xC\n\ + bne _080B08EA\n\ + movs r6, 0\n\ + adds r0, r4, 0x5\n\ + lsls r0, 4\n\ + adds r4, r0, 0x1\n\ + adds r0, r4, 0\n\ + movs r1, 0x3\n\ + adds r2, r5, 0\n\ + movs r3, 0\n\ + bl BlendPalette\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x5\n\ + bne _080B08EA\n\ + ldr r0, _080B0930 @ =gPlttBufferFaded\n\ + lsls r1, r4, 1\n\ + adds r0, r1, r0\n\ + ldrh r2, [r0]\n\ + ldr r0, _080B0934 @ =gPlttBufferUnfaded\n\ + adds r1, r0\n\ + ldrh r0, [r1]\n\ + ldr r1, _080B0938 @ =0x040000d4\n\ + str r2, [r1]\n\ + str r0, [r1, 0x4]\n\ + movs r0, 0x80\n\ + lsls r0, 24\n\ + orrs r7, r0\n\ + str r7, [r1, 0x8]\n\ + ldr r0, [r1, 0x8]\n\ + ldr r1, [sp, 0x8]\n\ + ldr r2, [sp, 0xC]\n\ + adds r0, r1, r2\n\ + add r0, r10\n\ + strh r6, [r0]\n\ +_080B08EA:\n\ + ldr r3, [sp, 0x10]\n\ + lsls r0, r3, 1\n\ + ldr r1, [sp, 0xC]\n\ + adds r0, r1\n\ + add r0, r10\n\ + mov r2, r8\n\ + strh r2, [r0]\n\ + ldr r3, [sp, 0x14]\n\ + lsls r0, r3, 1\n\ + adds r0, r1\n\ + add r0, r10\n\ + strh r5, [r0]\n\ + ldr r1, [sp, 0x18]\n\ + lsls r0, r1, 1\n\ + ldr r2, [sp, 0xC]\n\ + adds r0, r2\n\ + add r0, r10\n\ + strh r6, [r0]\n\ + ldr r2, _080B093C @ =gTasks\n\ +_080B0910:\n\ + ldr r0, [sp, 0x4]\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x4]\n\ + cmp r0, 0x3\n\ + bhi _080B0920\n\ + b _080B0774\n\ +_080B0920:\n\ + movs r4, 0\n\ + ldr r3, [sp, 0x1C]\n\ + ldr r1, [sp]\n\ + adds r0, r3, r1\n\ + lsls r1, r0, 3\n\ + adds r2, 0x8\n\ + adds r0, r1, r2\n\ + b _080B0950\n\ + .align 2, 0\n\ +_080B0930: .4byte gPlttBufferFaded\n\ +_080B0934: .4byte gPlttBufferUnfaded\n\ +_080B0938: .4byte 0x040000d4\n\ +_080B093C: .4byte gTasks\n\ +_080B0940:\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0x3\n\ + bhi _080B0958\n\ + lsls r0, r4, 3\n\ + adds r0, r1\n\ + adds r0, r2\n\ +_080B0950:\n\ + movs r3, 0\n\ + ldrsh r0, [r0, r3]\n\ + cmp r0, 0\n\ + beq _080B0940\n\ +_080B0958:\n\ + cmp r4, 0x4\n\ + bne _080B0980\n\ + movs r4, 0\n\ + ldr r3, _080B0990 @ =gSharedMem + 0x19338\n\ + movs r5, 0x3\n\ + negs r5, r5\n\ +_080B0964:\n\ + lsls r1, r4, 2\n\ + adds r1, r3\n\ + ldrb r2, [r1, 0x2]\n\ + adds r0, r5, 0\n\ + ands r0, r2\n\ + strb r0, [r1, 0x2]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0x3\n\ + bls _080B0964\n\ + ldr r0, [sp]\n\ + bl DestroyTask\n\ +_080B0980:\n\ + add sp, 0x20\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080B0990: .4byte gSharedMem + 0x19338\n\ + .syntax divided\n"); +} +#endif + +void unref_sub_80B0994(u8 a) +{ + if (a != 0) + shared19204.unk1920A_2 = 1; +} + +void sub_80B09B0(u8 a) +{ + if (shared19260_[a].unk15_4) + sub_80B0368(a); + else + sub_80B03A8(a); +} + +extern const struct CompressedSpriteSheet gUnknown_083CC4B4[]; +extern const struct SpritePalette gUnknown_083CC4D4[]; +extern const struct SpriteTemplate gSpriteTemplate_83CC53C[]; + +u8 sub_80B09E4(u8 a) +{ + u8 r5 = gUnknown_02038696[a] * 40 + 32; + u8 r8; + u8 r6; + volatile u8 zero; + + LoadCompressedObjectPic(&gUnknown_083CC4B4[a]); + LoadSpritePalette(&gUnknown_083CC4D4[a]); + r8 = CreateSprite(&gSpriteTemplate_83CC53C[a], 184, r5, 29); + r6 = CreateSprite(&gSpriteTemplate_83CC53C[a], 248, r5, 29); + gSprites[r6].oam.tileNum += 64; + + CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gUnknown_02038696[a] * 5 * 64 + 0x26), (u8 *)(VRAM + 0x10000 + gSprites[r8].oam.tileNum * 32)); + CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gUnknown_02038696[a] * 5 * 64 + 0x36), (u8 *)(VRAM + 0x10000 + gSprites[r6].oam.tileNum * 32)); + + { + void *dest = (void *)(VRAM + 0x10000 + (0x28 + gSprites[r8].oam.tileNum) * 32); + u32 size = 0x300; + DmaFill32(3, 0, dest, size); + } + + // What is this? + zero = 0; + zero = 0; + + { + void *dest = (void *)(VRAM + 0x10000 + (0x28 + gSprites[r6].oam.tileNum) * 32); + u32 size = 0x300; + DmaFill32(3, 0, dest, size); + } + + gSprites[r8].data[0] = r6; + gSprites[r6].data[0] = r8; + gSprites[r8].data[1] = a; + gSprites[r6].data[1] = a; + return r8; +} + +void sub_80B0B5C(u8 spriteId) +{ + u8 spriteId2 = gSprites[spriteId].data[0]; + + FreeSpriteOamMatrix(&gSprites[spriteId2]); + DestroySprite(&gSprites[spriteId2]); + DestroySpriteAndFreeResources(&gSprites[spriteId]); +} + +void sub_80B0B98(void) +{ + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = 0x0907; +} + +void sub_80B0BB4(void) +{ + REG_BLDCNT = 0; + REG_BLDALPHA = 0; +} + +void sub_80B0BC4(u8 a, bool8 b) +{ + u8 r5; + + sub_80B0B98(); + shared19338[gSprites[a].data[1]].unk2_1 = 1; + r5 = gSprites[a].data[0]; + StartSpriteAffineAnim(&gSprites[a], 1); + StartSpriteAffineAnim(&gSprites[r5], 1); + gSprites[a].callback = sub_80B0C5C; + gSprites[r5].callback = SpriteCallbackDummy; + if (b == FALSE) + PlaySE(SE_C_PIKON); + else + PlaySE(SE_PC_LOGON); +} + +void sub_80B0C5C(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + u8 r1 = sprite->data[0]; + + if (gSprites[r1].affineAnimEnded) + { + sprite->invisible = TRUE; + gSprites[r1].invisible = TRUE; + sprite->callback = sub_80B0CB0; + } + } +} + +void sub_80B0CB0(struct Sprite *sprite) +{ + shared19338[sprite->data[1]].unk2_1 = 0; + sub_80B0B5C(sprite->data[0]); + sub_80B0BB4(); +} + +void sub_80B0CDC(u8 a, int unused) +{ + shared19338[a].unk2_1 = 0; +} + +void unref_sub_80B0CF4(void) +{ + //shared18000.unk18000 ^= 1; + gSharedMem[0x18000] ^= 1; + //if (shared18000.unk18000 == 0) + if (gSharedMem[0x18000] == 0) + { + u8 i; + + for (i = 0; i < 4; i++) + { + FillWindowRect_DefaultPalette( + &gUnknown_03004210, + 0, + gUnknown_083CA308[i][0], + gUnknown_083CA308[i][1], + gUnknown_083CA310[i][0] + 5, + gUnknown_083CA310[i][1] + 1); + } + sub_80AE514(); + sub_80AEB30(); + } + else + { + sub_80B0D7C(); + } +} + +void sub_80B0D7C(void) +{ + u8 r5 = 0; + u8 sp8[8]; + + if (gSharedMem[0x18000] != 0) + { + u8 i; + s16 r2; + + for (i = 0; i < 4; i++) + { + FillWindowRect_DefaultPalette( + &gUnknown_03004210, + 0, + gUnknown_083CA308[i][0], + gUnknown_083CA308[i][1], + gUnknown_083CA310[i][0] + 5, + gUnknown_083CA310[i][1] + 1); + } + for (i = 0; i < 4; i++) + { + r2 = shared19260_[i].unk4; + if (r2 < 0) + { + r2 = -r2; + sp8[0] = CHAR_HYPHEN; + r5++; + } + ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4); + sub_8003460( + &gUnknown_03004210, + sp8, + 592 + gUnknown_02038696[i] * 22, + gUnknown_083CA310[gUnknown_02038696[i]][0], + gUnknown_083CA310[gUnknown_02038696[i]][1]); + r5 = 0; + } + for (i = 0; i < 4; i++) + { + r2 = shared19260_[i].unk2; + if (r2 < 0) + { + r2 = -r2; + sp8[0] = CHAR_HYPHEN; + r5++; + } + ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4); + sub_8003460( + &gUnknown_03004210, + sp8, + 512 + gUnknown_02038696[i] * 20, + gUnknown_083CA308[gUnknown_02038696[i]][0], + gUnknown_083CA308[gUnknown_02038696[i]][1]); + r5 = 0; + } + sub_80AEB30(); + } +} + +void unref_sub_80B0EE8(s32 *a, s32 b) +{ + s32 i; + s32 j; + + for (i = 0; i < b - 1; i++) + { + for (j = b - 1; j > i; j--) + { + if (a[j - 1] > a[j]) + { + s32 temp = a[j]; + + a[j] = a[j - 1]; + a[j - 1] = temp; + } + } + } +} + +void sub_80B0F28(u8 a) +{ + u8 sp0[4]; + u16 sp4[4] = {0}; + s32 i; + s32 r2; + s32 r4; + + for (i = 0; i < 4; i++) + { + sp4[i] = Random(); + for (r2 = 0; r2 < i; r2++) + { + if (sp4[i] == sp4[r2]) + { + i--; + break; + } + } + } + + if (a == 0) + { + for (i = 0; i < 4; i++) //_080B0F9C + { + gUnknown_02038696[i] = i; + for (r4 = 0; r4 < i; r4++) //_080B0FC4 + { + if (gUnknown_02038670[gUnknown_02038696[r4]] < gUnknown_02038670[i] + || (gUnknown_02038670[gUnknown_02038696[r4]] == gUnknown_02038670[i] && sp4[gUnknown_02038696[r4]] < sp4[i])) + { + //_080B0FEC + for (r2 = i; r2 > r4; r2--) + gUnknown_02038696[r2] = gUnknown_02038696[r2 - 1]; + //_080B1004 + gUnknown_02038696[r4] = i; + break; + } + //_080B1010 + } + if (r4 == i) + gUnknown_02038696[i] = i; + } + memcpy(sp0, gUnknown_02038696, sizeof(sp0)); + for (i = 0; i < 4; i++) + gUnknown_02038696[sp0[i]] = i; + } + //_080B1050 + else + { + //u8 r2; + + memset(sp0, 0xFF, sizeof(sp0)); + for (i = 0; i < 4; i++) + { + u8 r2 = shared19260_[i].unkB_0; + + while (1) + { + u8 *ptr = &sp0[r2]; + if (*ptr == 0xFF) + { + *ptr = i; + //sp0[r2] = i; + gUnknown_02038696[i] = r2; + break; + } + r2++; + } + } + //_080B1098 + for (i = 0; i < 3; i++) + { + for (r4 = 3; r4 > i; r4--) + { + if (shared19260_[r4 - 1].unkB_0 == shared19260_[r4].unkB_0 + && gUnknown_02038696[r4 - 1] < gUnknown_02038696[r4] + && sp4[r4 - 1] < sp4[r4]) + { + u8 temp = gUnknown_02038696[r4]; + + gUnknown_02038696[r4] = gUnknown_02038696[r4 - 1]; + gUnknown_02038696[r4 - 1] = temp; + } + //_080B10F0 + } + } + } +} -- cgit v1.2.3 From ad33b833f35800ff2cfc13aaca09e2e57842703a Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Wed, 20 Dec 2017 11:25:54 -0600 Subject: Decompile battle_anim shock --- src/battle/anim/shock.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ src/engine/sprite.c | 8 ---- src/rom_8077ABC.c | 7 ---- 3 files changed, 106 insertions(+), 15 deletions(-) create mode 100644 src/battle/anim/shock.c (limited to 'src') diff --git a/src/battle/anim/shock.c b/src/battle/anim/shock.c new file mode 100644 index 000000000..35c380f23 --- /dev/null +++ b/src/battle/anim/shock.c @@ -0,0 +1,106 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; +extern struct OamMatrix gOamMatrices[]; + +extern void sub_80DA48C(struct Sprite *); + +// shock (moves the little electricity lines) +// Used in Shock. + +void sub_80D6294(struct Sprite *sprite) +{ + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3); + + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + sprite->pos1.y -= gBattleAnimArgs[1]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_8078114; +} + +void sub_80D6328(struct Sprite *sprite) +{ + u8 slot; + u32 matrixNum; + s16 sineVal; + + switch (gBattleAnimArgs[4]) + { + case 0: + slot = gBattleAnimBankAttacker; + break; + case 1: + default: + slot = gBattleAnimBankTarget; + break; + case 2: + if (!IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) + { + slot = gBattleAnimBankAttacker; + } + else + { + slot = gBattleAnimBankAttacker ^ 2; + } + break; + case 3: + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) + { + slot = gBattleAnimBankTarget ^ 2; + } + else + { + slot = gBattleAnimBankTarget; + } + break; + } + + if (gBattleAnimArgs[5] == 0) + { + sprite->pos1.x = sub_8077ABC(slot, 0); + sprite->pos1.y = sub_8077ABC(slot, 1); + } + else + { + sprite->pos1.x = sub_8077ABC(slot, 2); + sprite->pos1.y = sub_8077ABC(slot, 3); + } + + sprite->pos2.x = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8; + sprite->pos2.y = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8; + + if (gBattleAnimArgs[6] & 1) + { + sprite->oam.priority = sub_8079ED4(slot) + 1; + } + + matrixNum = sprite->oam.matrixNum; + sineVal = gSineTable[gBattleAnimArgs[2]]; + + gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[gBattleAnimArgs[2] + 64]; + gOamMatrices[matrixNum].b = sineVal; + gOamMatrices[matrixNum].c = -sineVal; + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->callback = sub_80DA48C; +} diff --git a/src/engine/sprite.c b/src/engine/sprite.c index 69fa860c1..c1bb36917 100644 --- a/src/engine/sprite.c +++ b/src/engine/sprite.c @@ -26,14 +26,6 @@ #define SPRITE_TILE_IS_ALLOCATED(n) ((gSpriteTileAllocBitmap[(n) / 8] >> ((n) % 8)) & 1) -struct OamMatrix -{ - s16 a; - s16 b; - s16 c; - s16 d; -}; - struct SpriteCopyRequest { const u8 *src; diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index ec7d5fdb8..0ecaa9dcb 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -51,13 +51,6 @@ struct Struct_gUnknown_0837F578 { u8 field_1; }; -struct OamMatrix { - s16 a; - s16 b; - s16 c; - s16 d; -}; - struct Struct_2017810 { u8 filler_0[6]; u8 field_6; -- cgit v1.2.3 From 5e6bfe67a87e041ebdc9e0b573d1ae1f22b79d59 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Wed, 20 Dec 2017 11:34:56 -0600 Subject: Decompile battle_anim beta_beat_up --- src/battle/anim/beta_beat_up.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/battle/anim/beta_beat_up.c (limited to 'src') diff --git a/src/battle/anim/beta_beat_up.c b/src/battle/anim/beta_beat_up.c new file mode 100644 index 000000000..499e52a80 --- /dev/null +++ b/src/battle/anim/beta_beat_up.c @@ -0,0 +1,34 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D6278(struct Sprite *); + +// beta_beat_up + +void sub_80D6234(struct Sprite *sprite) +{ + if (GetBankSide(gBattleAnimBankAttacker) != 0) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + } + + sprite->callback = sub_80D6278; +} + +static void sub_80D6278(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + move_anim_8074EE0(sprite); + } +} -- cgit v1.2.3 From a753c44277c050fb24aaf97a8947c7f54e0dacd7 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Wed, 20 Dec 2017 19:58:17 -0600 Subject: Use event script macro names from pokeemerald --- src/field/scrcmd.c | 102 ++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 51 deletions(-) (limited to 'src') diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index e6305d9c4..f0cafcf1a 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -483,7 +483,7 @@ bool8 ScrCmd_random(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_additem(struct ScriptContext *ctx) +bool8 ScrCmd_giveitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -492,7 +492,7 @@ bool8 ScrCmd_additem(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_removeitem(struct ScriptContext *ctx) +bool8 ScrCmd_takeitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -527,7 +527,7 @@ bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_addpcitem(struct ScriptContext *ctx) +bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -545,23 +545,23 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_adddecor(struct ScriptContext *ctx) +bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) { - u32 decorId = VarGet(ScriptReadHalfword(ctx)); + u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = IsThereStorageSpaceForDecoration(decorId); + gScriptResult = IsThereStorageSpaceForDecoration(decoration); return FALSE; } -bool8 ScrCmd_removedecor(struct ScriptContext *ctx) +bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) { - u32 decorId = VarGet(ScriptReadHalfword(ctx)); + u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = sub_81340A8(decorId); + gScriptResult = sub_81340A8(decoration); return FALSE; } -bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) +bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -569,7 +569,7 @@ bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_hasdecor(struct ScriptContext *ctx) +bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -601,14 +601,14 @@ bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_animdarklevel(struct ScriptContext *ctx) +bool8 ScrCmd_animateflash(struct ScriptContext *ctx) { sub_8081594(ScriptReadByte(ctx)); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_setdarklevel(struct ScriptContext *ctx) +bool8 ScrCmd_setflashradius(struct ScriptContext *ctx) { u16 flashLevel = VarGet(ScriptReadHalfword(ctx)); @@ -631,7 +631,7 @@ bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx) +bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) { u8 duration = ScriptReadByte(ctx); u8 delay = ScriptReadByte(ctx); @@ -702,7 +702,7 @@ bool8 ScrCmd_doweather(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_tileeffect(struct ScriptContext *ctx) +bool8 ScrCmd_setstepcallback(struct ScriptContext *ctx) { ActivatePerStepCallback(ScriptReadByte(ctx)); return FALSE; @@ -859,7 +859,7 @@ bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_countpokemon(struct ScriptContext *ctx) +bool8 ScrCmd_getpartysize(struct ScriptContext *ctx) { gScriptResult = CalculatePlayerPartyCount(); return FALSE; @@ -1073,7 +1073,7 @@ bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_showobject(struct ScriptContext *ctx) +bool8 ScrCmd_showobjectat(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1083,7 +1083,7 @@ bool8 ScrCmd_showobject(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_hideobject(struct ScriptContext *ctx) +bool8 ScrCmd_hideobjectat(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1267,7 +1267,7 @@ static bool8 WaitForAorBPress(void) return FALSE; } -bool8 ScrCmd_waitbutton(struct ScriptContext *ctx) +bool8 ScrCmd_waitbuttonpress(struct ScriptContext *ctx) { SetupNativeScript(ctx, WaitForAorBPress); return TRUE; @@ -1386,7 +1386,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) } } -bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx) +bool8 ScrCmd_drawmonpic(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 x = ScriptReadByte(ctx); @@ -1396,7 +1396,7 @@ bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_erasepokepic(struct ScriptContext *ctx) +bool8 ScrCmd_erasemonpic(struct ScriptContext *ctx) { bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); @@ -1441,7 +1441,7 @@ bool8 ScrCmd_vmessage(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx) +bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 species = VarGet(ScriptReadHalfword(ctx)); @@ -1450,7 +1450,7 @@ bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx) +bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); @@ -1461,7 +1461,7 @@ bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx) +bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -1471,7 +1471,7 @@ bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getitemname(struct ScriptContext *ctx) +bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1480,7 +1480,7 @@ bool8 ScrCmd_getitemname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getdecorname(struct ScriptContext *ctx) +bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -1489,7 +1489,7 @@ bool8 ScrCmd_getdecorname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getmovename(struct ScriptContext *ctx) +bool8 ScrCmd_buffermovename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 moveId = VarGet(ScriptReadHalfword(ctx)); @@ -1498,7 +1498,7 @@ bool8 ScrCmd_getmovename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx) +bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 v1 = VarGet(ScriptReadHalfword(ctx)); @@ -1508,7 +1508,7 @@ bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) +bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1517,7 +1517,7 @@ bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getstring(struct ScriptContext *ctx) +bool8 ScrCmd_bufferstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u8 *text = (u8 *)ScriptReadWord(ctx); @@ -1526,7 +1526,7 @@ bool8 ScrCmd_getstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_vloadword(struct ScriptContext *ctx) +bool8 ScrCmd_vloadptr(struct ScriptContext *ctx) { u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); @@ -1534,7 +1534,7 @@ bool8 ScrCmd_vloadword(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) +bool8 ScrCmd_vbufferstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u32 addr = ScriptReadWord(ctx); @@ -1545,7 +1545,7 @@ bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givepoke(struct ScriptContext *ctx) +bool8 ScrCmd_givemon(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 level = ScriptReadByte(ctx); @@ -1566,7 +1566,7 @@ bool8 ScrCmd_giveegg(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setpokemove(struct ScriptContext *ctx) +bool8 ScrCmd_setmonmove(struct ScriptContext *ctx) { u8 partyIndex = ScriptReadByte(ctx); u8 slot = ScriptReadByte(ctx); @@ -1576,13 +1576,13 @@ bool8 ScrCmd_setpokemove(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_checkpokemove(struct ScriptContext *ctx) +bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) { u8 i; u16 moveId = ScriptReadHalfword(ctx); gScriptResult = 6; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); if (!species) @@ -1692,19 +1692,19 @@ bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_battlebegin(struct ScriptContext *ctx) +bool8 ScrCmd_trainerbattlebegin(struct ScriptContext *ctx) { BattleSetup_StartTrainerBattle(); return TRUE; } -bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx) +bool8 ScrCmd_gotopostbattlescript(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); return FALSE; } -bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx) +bool8 ScrCmd_gotobeatenscript(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); return FALSE; @@ -1760,7 +1760,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) +bool8 ScrCmd_pokemartdecoration(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); @@ -1769,7 +1769,7 @@ bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_pokemartbp(struct ScriptContext *ctx) +bool8 ScrCmd_pokemartdecoration2(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); @@ -1787,7 +1787,7 @@ bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_plantberrytree(struct ScriptContext *ctx) +bool8 ScrCmd_setberrytree(struct ScriptContext *ctx) { u8 treeId = ScriptReadByte(ctx); u8 berry = ScriptReadByte(ctx); @@ -1808,7 +1808,7 @@ bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_choosecontestpkmn(struct ScriptContext *ctx) +bool8 ScrCmd_choosecontestmon(struct ScriptContext *ctx) { sub_80F99CC(); ScriptContext1_Stop(); @@ -1845,7 +1845,7 @@ bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setfieldeffect(struct ScriptContext *ctx) +bool8 ScrCmd_setfieldeffectargument(struct ScriptContext *ctx) { u8 argNum = ScriptReadByte(ctx); @@ -1868,7 +1868,7 @@ bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_sethealplace(struct ScriptContext *ctx) +bool8 ScrCmd_setrespawn(struct ScriptContext *ctx) { u16 healLocationId = VarGet(ScriptReadHalfword(ctx)); @@ -1882,7 +1882,7 @@ bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_playpokecry(struct ScriptContext *ctx) +bool8 ScrCmd_playmoncry(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u16 mode = VarGet(ScriptReadHalfword(ctx)); @@ -1891,25 +1891,25 @@ bool8 ScrCmd_playpokecry(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_waitpokecry(struct ScriptContext *ctx) +bool8 ScrCmd_waitmoncry(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsCryFinished); return TRUE; } -bool8 ScrCmd_setmaptile(struct ScriptContext *ctx) +bool8 ScrCmd_setmetatile(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - u16 tileId = VarGet(ScriptReadHalfword(ctx)); + u16 metatileId = VarGet(ScriptReadHalfword(ctx)); u16 v8 = VarGet(ScriptReadHalfword(ctx)); x += 7; y += 7; if (!v8) - MapGridSetMetatileIdAt(x, y, tileId); + MapGridSetMetatileIdAt(x, y, metatileId); else - MapGridSetMetatileIdAt(x, y, tileId | 0xC00); + MapGridSetMetatileIdAt(x, y, metatileId | 0xC00); return FALSE; } -- cgit v1.2.3 From 754e911b4e95205bafa5dc93242da9cee3f2c5c6 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 21 Dec 2017 11:40:26 -0600 Subject: Rename gScript* vars to gSpecialVar_* --- src/battle/battle_controller_player.c | 4 +- src/battle/battle_controller_safari.c | 4 +- src/battle/battle_controller_wally.c | 2 +- src/battle/battle_party_menu.c | 8 ++-- src/battle/battle_setup.c | 12 +++--- src/debug/matsuda_debug_menu.c | 32 +++++++-------- src/engine/cable_club.c | 26 ++++++------ src/engine/link.c | 2 +- src/field/battle_tower.c | 42 ++++++++++---------- src/field/berry.c | 8 ++-- src/field/berry_tag_screen.c | 14 +++---- src/field/daycare.c | 4 +- src/field/decoration.c | 4 +- src/field/dewford_trend.c | 6 +-- src/field/event_data.c | 6 +-- src/field/field_control_avatar.c | 14 +++---- src/field/field_poison.c | 6 +-- src/field/field_screen_effect.c | 6 +-- src/field/field_specials.c | 38 +++++++++--------- src/field/fldeff_decoration.c | 10 ++--- src/field/fldeff_secretpower.c | 2 +- src/field/fldeff_strength.c | 6 +-- src/field/item_menu.c | 70 ++++++++++++++++----------------- src/field/item_use.c | 52 ++++++++++++------------ src/field/lottery_corner.c | 8 ++-- src/field/map_obj_lock.c | 4 +- src/field/mauville_man.c | 24 ++++++------ src/field/party_menu.c | 4 +- src/field/pokeblock.c | 32 +++++++-------- src/field/safari_zone.c | 22 +++++------ src/field/scrcmd.c | 62 ++++++++++++++--------------- src/field/script_menu.c | 28 ++++++------- src/field/secret_base.c | 36 ++++++++--------- src/field/start_menu.c | 6 +-- src/field/starter_choose.c | 4 +- src/field/trader.c | 10 ++--- src/field/tv.c | 74 +++++++++++++++++------------------ src/field/use_pokeblock.c | 4 +- src/field/wild_encounter.c | 8 ++-- src/pokemon/pokeblock_feed.c | 4 +- src/pokemon/pokemon_menu.c | 34 ++++++++-------- src/pokemon/pokemon_size_record.c | 10 ++--- src/rom6.c | 4 +- src/scene/berry_blender.c | 12 +++--- src/script_pokemon_util_80C4BF0.c | 34 ++++++++-------- src/script_pokemon_util_80F99CC.c | 10 ++--- 46 files changed, 406 insertions(+), 406 deletions(-) (limited to 'src') diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 653f0938c..c2d34db0d 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -162,7 +162,7 @@ extern u8 gUnknown_0300434C[]; extern u8 gUnknown_0202E8F4; extern u8 gUnknown_0202E8F5; extern u8 gUnknown_02038470[]; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern u8 gDisplayedStringBattle[]; extern const u8 BattleText_LinkStandby[]; @@ -1522,7 +1522,7 @@ void sub_802E03C(void) { if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) { - Emitcmd35(1, gScriptItemId); + Emitcmd35(1, gSpecialVar_ItemId); PlayerBufferExecCompleted(); } } diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 3dcfca948..6f6286945 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -31,7 +31,7 @@ extern u8 gObjectBankIDs[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u16 gBattleTypeFlags; extern u32 gBattleExecBuffer; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern MainCallback gPreBattleCallback1; extern u8 gBankInMenu; extern u8 gHealthboxIDs[]; @@ -315,7 +315,7 @@ void sub_812B758(void) { if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) { - Emitcmd35(1, gScriptItemId); + Emitcmd35(1, gSpecialVar_ItemId); SafariBufferExecCompleted(); } } diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 0d698d9a5..d81c43381 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -367,7 +367,7 @@ void sub_81374FC(void) if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) { - Emitcmd35(1, gScriptItemId); + Emitcmd35(1, gSpecialVar_ItemId); WallyBufferExecCompleted(); } } diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c index 5decf8a7b..d4dcae0ca 100644 --- a/src/battle/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -426,7 +426,7 @@ bool8 SetUpBattlePartyMenu(void) case 10: if (gUnknown_02038473 == 3) { - if (GetItemEffectType(gScriptItemId) == 10) + if (GetItemEffectType(gSpecialVar_ItemId) == 10) ewram1B000.promptTextId = 0xFF; else ewram1B000.promptTextId = 3; @@ -464,9 +464,9 @@ void HandleBattlePartyMenu(u8 taskId) { if (!gPaletteFade.active) { - if (gUnknown_02038473 == 3 && GetItemEffectType(gScriptItemId) == 10) + if (gUnknown_02038473 == 3 && GetItemEffectType(gSpecialVar_ItemId) == 10) { - gUnknown_03004AE4(taskId, gScriptItemId, Task_80952E4); + gUnknown_03004AE4(taskId, gSpecialVar_ItemId, Task_80952E4); return; } @@ -480,7 +480,7 @@ void HandleBattlePartyMenu(u8 taskId) else { sub_806D5A4(); - gUnknown_03004AE4(taskId, gScriptItemId, Task_80952E4); + gUnknown_03004AE4(taskId, gSpecialVar_ItemId, Task_80952E4); } } else diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c index 6baf47dee..f71aad090 100644 --- a/src/battle/battle_setup.c +++ b/src/battle/battle_setup.c @@ -33,7 +33,7 @@ #include "text.h" #include "trainer.h" -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern void (*gFieldCallback)(void); @@ -48,7 +48,7 @@ EWRAM_DATA static u8 *sTrainerBattleScriptRetAddr = NULL; EWRAM_DATA static u8 *sTrainerBattleEndScript = NULL; extern u16 gBattleTypeFlags; -extern u16 gScriptLastTalked; +extern u16 gSpecialVar_LastTalked; extern u8 gBattleOutcome; extern struct MapObject gMapObjects[]; @@ -858,8 +858,8 @@ static void CB2_GiveStarter(void) { u16 starterPoke; - *GetVarPointer(0x4023) = gScriptResult; - starterPoke = GetStarterPokemon(gScriptResult); + *GetVarPointer(0x4023) = gSpecialVar_Result; + starterPoke = GetStarterPokemon(gSpecialVar_Result); ScriptGiveMon(starterPoke, 5, 0, 0, 0, 0); ResetTasks(); sub_80408BC(); @@ -980,7 +980,7 @@ static void battle_80801F0(void) { if (sTrainerMapObjectLocalId) { - gScriptLastTalked = sTrainerMapObjectLocalId; + gSpecialVar_LastTalked = sTrainerMapObjectLocalId; gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); } } @@ -1029,7 +1029,7 @@ u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data) void TrainerWantsBattle(u8 trainerMapObjId, u8 *trainerScript) { gSelectedMapObject = trainerMapObjId; - gScriptLastTalked = gMapObjects[trainerMapObjId].localId; + gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId; BattleSetup_ConfigureTrainerBattle(trainerScript + 1); ScriptContext1_SetupScript(gUnknown_0819F80B); ScriptContext2_Enable(); diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 0f77d2814..595491d5d 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -27,8 +27,8 @@ extern u8 gUnknown_02038694; extern u8 gIsLinkContest; extern u8 gUnknown_0203869B; extern u8 gContestPlayerMonIndex; -extern u16 gScriptContestCategory; -extern u16 gScriptContestRank; +extern u16 gSpecialVar_ContestCategory; +extern u16 gSpecialVar_ContestRank; extern u16 gUnknown_030042A4; extern u16 gUnknown_030042A0; @@ -360,7 +360,7 @@ static void sub_80A9D58(u8 taskId) dest[i] = gTasks[taskId].data[5 + i]; gUnknown_0203869B = sub_80C4B34(dest); - sub_80AE82C((u8)gScriptContestCategory); + sub_80AE82C((u8)gSpecialVar_ContestCategory); sub_80B0F28(0); SetTaskFuncWithFollowupFunc(taskId, sub_80C8EBC, sub_80A9DBC); } @@ -552,10 +552,10 @@ static void sub_80AA10C(void) gMatsudaDebugMenuContestTopLeft[i][1]); } - gScriptContestCategory = gScriptContestRank = 0; + gSpecialVar_ContestCategory = gSpecialVar_ContestRank = 0; zero = 0; // it's possible this was some assignment that matsuda used to quickly edit and test things without changing whats passed to the later functions. sub_80AA5BC(zero); - sub_80AA5E8(gScriptContestRank); + sub_80AA5E8(gSpecialVar_ContestRank); sub_8003460(&gMenuWindow, gMatsudaDebugMenu_GoBackText, 0xD6, 0x12, 0x12); sub_8003460(&gMenuWindow, gMatsudaDebugMenu_BattlePointsText, 0xDC, zero, 0xC); LoadSpriteSheet(gUnknown_083C92B4); @@ -873,8 +873,8 @@ void sub_80AABF0(struct Sprite *sprite, s8 var2) r4 = 4; sub_80AA5BC(r4); sprite->data[3] = r4; - gScriptContestCategory = sprite->data[3]; - sub_80AE398(sprite->data[3], gScriptContestRank); + gSpecialVar_ContestCategory = sprite->data[3]; + sub_80AE398(sprite->data[3], gSpecialVar_ContestRank); sub_80AA280(sprite->data[2]); sub_80AA658(sprite->data[2]); } @@ -882,13 +882,13 @@ void sub_80AABF0(struct Sprite *sprite, s8 var2) void sub_80AAC5C(struct Sprite *sprite, s8 var2) { if (var2 > 0) - gScriptContestRank++; - else if (gScriptContestRank != 0) - gScriptContestRank--; - if (gScriptContestRank > 3) - gScriptContestRank = 3; - sub_80AA5E8(gScriptContestRank); - sub_80AE398(gScriptContestCategory, gScriptContestRank); + gSpecialVar_ContestRank++; + else if (gSpecialVar_ContestRank != 0) + gSpecialVar_ContestRank--; + if (gSpecialVar_ContestRank > 3) + gSpecialVar_ContestRank = 3; + sub_80AA5E8(gSpecialVar_ContestRank); + sub_80AE398(gSpecialVar_ContestCategory, gSpecialVar_ContestRank); sub_80AA280(sprite->data[2]); sub_80AA658(sprite->data[2]); } @@ -923,7 +923,7 @@ void sub_80AAD44(struct Sprite *sprite, s8 var2) SetDebugMonForContest(); for (i = 0; i < 4; i++) - gUnknown_02038670[i] = sub_80AE770(i, gScriptContestCategory); + gUnknown_02038670[i] = sub_80AE770(i, gSpecialVar_ContestCategory); SetMainCallback2(sub_805469C); } } @@ -1204,7 +1204,7 @@ u8 MatsudaDebugMenu_SetArtMuseumItems(void) sub_80AE098(0); for (i = 3; i > -1; i--) gUnknown_02038690[i] = 3 - i; - for (gScriptContestCategory = 0; gScriptContestCategory < 5; gScriptContestCategory++) + for (gSpecialVar_ContestCategory = 0; gSpecialVar_ContestCategory < 5; gSpecialVar_ContestCategory++) sub_80B2A7C(0xFF); CloseMenu(); return 1; diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 4dda372f4..3187de7ed 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -23,7 +23,7 @@ #include "text.h" #include "trainer_card.h" -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern struct TrainerCard gTrainerCards[4]; extern u8 gUnknown_03004860; extern u8 gFieldLinkPlayerCount; @@ -343,8 +343,8 @@ static void sub_8083188(u8 taskId) } else { - gScriptResult = sub_8082D9C(local1, local2); - if (gScriptResult != 0) + gSpecialVar_Result = sub_8082D9C(local1, local2); + if (gSpecialVar_Result != 0) gTasks[taskId].func = sub_8083288; } } @@ -360,10 +360,10 @@ void sub_80831F8(u8 taskId) || sub_8082DF4(taskId) == TRUE) return; - gScriptResult = sub_8082D9C(local1, local2); - if (gScriptResult == 0) + gSpecialVar_Result = sub_8082D9C(local1, local2); + if (gSpecialVar_Result == 0) return; - if (gScriptResult == 3) + if (gSpecialVar_Result == 3) { sub_800832C(); HideFieldMessageBox(); @@ -384,7 +384,7 @@ static void sub_8083288(u8 taskId) if (sub_8082DF4(taskId) == TRUE) return; - if (gScriptResult == 3) + if (gSpecialVar_Result == 3) { sub_800832C(); HideFieldMessageBox(); @@ -425,7 +425,7 @@ static void sub_8083314(u8 taskId) ResetBlockReceivedFlags(); HideFieldMessageBox(); - if (gScriptResult == 1) + if (gSpecialVar_Result == 1) { #if ENGLISH u16 linkType; @@ -461,7 +461,7 @@ static void sub_80833C4(u8 taskId) static void sub_80833EC(u8 taskId) { - gScriptResult = 5; + gSpecialVar_Result = 5; sub_8082D4C(); HideFieldMessageBox(); EnableBothScriptContexts(); @@ -470,7 +470,7 @@ static void sub_80833EC(u8 taskId) static void sub_8083418(u8 taskId) { - gScriptResult = 6; + gSpecialVar_Result = 6; sub_8082D4C(); HideFieldMessageBox(); EnableBothScriptContexts(); @@ -523,7 +523,7 @@ void sub_80834E4(void) void sub_808350C(void) { - gScriptResult = 0; + gSpecialVar_Result = 0; gLinkType = 0x3311; gBattleTypeFlags = 0; sub_8082CD4(2, 4); @@ -537,14 +537,14 @@ static void sub_808353C(u8 taskId) switch (gTasks[taskId].data[0]) { case 0: - if (gScriptResult == 1) + if (gSpecialVar_Result == 1) { playerCount = GetLinkPlayerCount(); for (i = 0; i < playerCount; i++) { if (gLinkPlayers[i].language == LANGUAGE_JAPANESE) { - gScriptResult = 7; + gSpecialVar_Result = 7; sub_8008480(); gTasks[taskId].data[0] = 1; return; diff --git a/src/engine/link.c b/src/engine/link.c index 27afef937..28323207c 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -635,7 +635,7 @@ static void BuildSendCmd(u16 code) break; case 0xAAAB: gSendCmd[0] = 0xAAAB; - gSendCmd[1] = gScriptItemId; + gSendCmd[1] = gSpecialVar_ItemId; break; case 0xCCCC: gSendCmd[0] = 0xCCCC; diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index db822f71b..6b6064c16 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -350,7 +350,7 @@ bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak) ValidateEReaderTrainer(); - if (gScriptResult != 0 || gSaveBlock2.battleTower.ereaderTrainer.winStreak != winStreak) + if (gSpecialVar_Result != 0 || gSaveBlock2.battleTower.ereaderTrainer.winStreak != winStreak) { return FALSE; } @@ -1516,7 +1516,7 @@ void CheckPartyBattleTowerBanlist(void) level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); - CheckMonBattleTowerBanlist(species2, heldItem, hp, gScriptResult, level, validPartySpecies, validPartyHeldItems, &counter); + CheckMonBattleTowerBanlist(species2, heldItem, hp, gSpecialVar_Result, level, validPartySpecies, validPartyHeldItems, &counter); } if (counter < 3) @@ -1549,7 +1549,7 @@ void CheckPartyBattleTowerBanlist(void) else { gSpecialVar_0x8004 = 0; - gSaveBlock2.battleTower.battleTowerLevelType = gScriptResult; + gSaveBlock2.battleTower.battleTowerLevelType = gSpecialVar_Result; } } @@ -1700,7 +1700,7 @@ void sub_8135668(void) gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]++; sub_8135A3C(); - gScriptResult = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; + gSpecialVar_Result = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; gStringVar1[0] = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1; gStringVar1[1] = 0xFF; @@ -1712,7 +1712,7 @@ void sub_8135668(void) } sub_8135A3C(); - gScriptResult = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; + gSpecialVar_Result = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; break; case 8: gSaveBlock2.battleTower.unk_554 = gSpecialVar_0x8005; @@ -1747,29 +1747,29 @@ void sub_81358A4(void) switch (gSpecialVar_0x8004) { case 0: - gScriptResult = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType]; + gSpecialVar_Result = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType]; break; case 1: - gScriptResult = gSaveBlock2.battleTower.battleTowerLevelType; + gSpecialVar_Result = gSaveBlock2.battleTower.battleTowerLevelType; break; case 2: - gScriptResult = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; + gSpecialVar_Result = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; break; case 3: - gScriptResult = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; + gSpecialVar_Result = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; break; case 4: - gScriptResult = gSaveBlock2.battleTower.battleTowerTrainerId; + gSpecialVar_Result = gSaveBlock2.battleTower.battleTowerTrainerId; break; case 5: case 6: case 7: break; case 8: - gScriptResult = gSaveBlock2.battleTower.unk_554; + gSpecialVar_Result = gSaveBlock2.battleTower.unk_554; break; case 9: - gScriptResult = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + gSpecialVar_Result = GetCurrentBattleTowerWinStreak(battleTowerLevelType); break; case 10: SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2.battleTower.bestBattleTowerWinStreak); @@ -2149,11 +2149,11 @@ void GiveBattleTowerPrize(void) if (AddBagItem(gSaveBlock2.battleTower.prizeItem, 1) == TRUE) { CopyItemName(gSaveBlock2.battleTower.prizeItem, gStringVar1); - gScriptResult = 1; + gSpecialVar_Result = 1; } else { - gScriptResult = 0; + gSpecialVar_Result = 0; gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = 6; } } @@ -2172,7 +2172,7 @@ void AwardBattleTowerRibbons(void) ribbonType = MON_DATA_VICTORY_RIBBON; } - gScriptResult = 0; + gSpecialVar_Result = 0; if (GetCurrentBattleTowerWinStreak(battleTowerLevelType) > 55) { @@ -2182,13 +2182,13 @@ void AwardBattleTowerRibbons(void) pokemon = &gPlayerParty[partyIndex]; if (!GetMonData(pokemon, ribbonType)) { - gScriptResult = 1; - SetMonData(pokemon, ribbonType, &gScriptResult); + gSpecialVar_Result = 1; + SetMonData(pokemon, ribbonType, &gSpecialVar_Result); } } } - if (gScriptResult != 0) + if (gSpecialVar_Result != 0) { IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); } @@ -2266,7 +2266,7 @@ void ValidateEReaderTrainer(void) u32 checksum; struct BattleTowerEReaderTrainer *ereaderTrainer; - gScriptResult = 0; + gSpecialVar_Result = 0; ereaderTrainer = &gSaveBlock2.battleTower.ereaderTrainer; checksum = 0; @@ -2277,7 +2277,7 @@ void ValidateEReaderTrainer(void) if (checksum == 0) { - gScriptResult = 1; + gSpecialVar_Result = 1; return; } @@ -2290,7 +2290,7 @@ void ValidateEReaderTrainer(void) if (gSaveBlock2.battleTower.ereaderTrainer.checksum != checksum) { ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer); - gScriptResult = 1; + gSpecialVar_Result = 1; } } diff --git a/src/field/berry.c b/src/field/berry.c index 874a60aa7..088267ad0 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -981,7 +981,7 @@ const struct Berry gBerries[] = static const struct BerryTree gBlankBerryTree = {0}; extern u8 S_BerryTree[]; -extern u16 gScriptLastTalked; +extern u16 gSpecialVar_LastTalked; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; @@ -1368,7 +1368,7 @@ void FieldObjectInteractionGetBerryTreeData(void) id = FieldObjectGetBerryTreeId(gSelectedMapObject); berry = GetBerryTypeByBerryTreeId(id); ResetBerryTreeSparkleFlag(id); - localId = gScriptLastTalked; + localId = gSpecialVar_LastTalked; num = gSaveBlock1.location.mapNum; group = gSaveBlock1.location.mapGroup; if (IsBerryTreeSparkling(localId, num, group)) @@ -1392,7 +1392,7 @@ void Berry_FadeAndGoToBerryBagMenu(void) void FieldObjectInteractionPlantBerryTree(void) { - u8 berry = ItemIdToBerryType(gScriptItemId); + u8 berry = ItemIdToBerryType(gSpecialVar_ItemId); PlantBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject), berry, 1, TRUE); FieldObjectInteractionGetBerryTreeData(); @@ -1409,7 +1409,7 @@ void FieldObjectInteractionPickBerryTree(void) void FieldObjectInteractionRemoveBerryTree(void) { RemoveBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject)); - sub_8060288(gScriptLastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + sub_8060288(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); } bool8 PlayerHasBerries(void) diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index 694599680..2abbac287 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -133,12 +133,12 @@ static bool8 sub_8146058(void) gMain.state += 1; break; case 8: - berry = gScriptItemId + OFFSET_7B; + berry = gSpecialVar_ItemId + OFFSET_7B; gUnknown_0203932C = CreateBerrySprite(berry, 56, 64); gMain.state += 1; break; case 9: - sub_8146600(gScriptItemId + OFFSET_7B); + sub_8146600(gSpecialVar_ItemId + OFFSET_7B); gMain.state += 1; break; case 10: @@ -277,9 +277,9 @@ static void sub_81464E4(void) u8 buffer[16]; #endif - berryInfo = GetBerryInfo(gScriptItemId + OFFSET_7B + 1); + berryInfo = GetBerryInfo(gSpecialVar_ItemId + OFFSET_7B + 1); - ConvertIntToDecimalStringN(gStringVar1, gScriptItemId - FIRST_BERRY + 1, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_ItemId - FIRST_BERRY + 1, STR_CONV_MODE_LEADING_ZEROS, 2); MenuPrint(gStringVar1, 12, 4); #if ENGLISH @@ -437,7 +437,7 @@ static void sub_8146810(s8 berry) gBagPocketScrollStates[berryPocket].cursorPos += berry; } } - gScriptItemId = gCurrentBagPocketItemSlots[gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos].itemId; + gSpecialVar_ItemId = gCurrentBagPocketItemSlots[gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos].itemId; DestroySprite(&gSprites[gUnknown_0203932C]); sub_81466A0(); sub_80A7DD4(); @@ -449,7 +449,7 @@ static void sub_81468BC(void) sub_81464E4(); // center of berry sprite - gUnknown_0203932C = CreateBerrySprite(gScriptItemId + OFFSET_7B, 56, 64); + gUnknown_0203932C = CreateBerrySprite(gSpecialVar_ItemId + OFFSET_7B, 56, 64); - sub_8146600(gScriptItemId + OFFSET_7B); + sub_8146600(gSpecialVar_ItemId + OFFSET_7B); } diff --git a/src/field/daycare.c b/src/field/daycare.c index 9ac63b3c7..c28bc65ca 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -1758,7 +1758,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - gLastFieldPokeMenuOpened = gScriptResult = gTasks[taskId].data[0]; + gLastFieldPokeMenuOpened = gSpecialVar_Result = gTasks[taskId].data[0]; DestroyTask(taskId); MenuZeroFillWindowRect(15, 6, 29, 13); EnableBothScriptContexts(); @@ -1766,7 +1766,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) else if (gMain.newKeys & B_BUTTON) { HandleDestroyMenuCursors(); - gLastFieldPokeMenuOpened = gScriptResult = 2; + gLastFieldPokeMenuOpened = gSpecialVar_Result = 2; DestroyTask(taskId); MenuZeroFillWindowRect(15, 6, 29, 13); EnableBothScriptContexts(); diff --git a/src/field/decoration.c b/src/field/decoration.c index c36c10a08..8b774afc3 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -3647,10 +3647,10 @@ void sub_8100A7C(void) { u16 i; gSpecialVar_0x8005 = 0; - gScriptResult = 0; + gSpecialVar_Result = 0; if (gSpecialVar_0x8004 == gUnknown_02039234) { - gScriptResult = 1; + gSpecialVar_Result = 1; } else if (gDecorations[ewram_1f000.items[gUnknown_020391B4[gSpecialVar_0x8004].decorId]].permission == DECORPERM_SOLID_MAT) { gSpecialVar_0x8005 = gUnknown_020391B4[gSpecialVar_0x8004].flagId; diff --git a/src/field/dewford_trend.c b/src/field/dewford_trend.c index b36459655..b67f3a2bd 100644 --- a/src/field/dewford_trend.c +++ b/src/field/dewford_trend.c @@ -8,7 +8,7 @@ #include "text.h" #include "ewram.h" -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u16 gSpecialVar_0x8004; static void sub_80FA46C(struct EasyChatPair *s, u16 b, u8 c); @@ -219,12 +219,12 @@ void sub_80FA5E4(void) if (!gSaveBlock1.easyChatPairs[0].unk1_6 && gSaveBlock1.easyChatPairs[1].unk1_6) result = 1; } - gScriptResult = result; + gSpecialVar_Result = result; } void sub_80FA648(void) { - gScriptResult = (gSaveBlock1.easyChatPairs[0].words[0] + gSaveBlock1.easyChatPairs[0].words[1]) & 7; + gSpecialVar_Result = (gSaveBlock1.easyChatPairs[0].words[0] + gSaveBlock1.easyChatPairs[0].words[1]) & 7; } static bool8 sub_80FA670(struct EasyChatPair *a, struct EasyChatPair *b, u8 c) diff --git a/src/field/event_data.c b/src/field/event_data.c index 3b3ac7bca..587da8138 100644 --- a/src/field/event_data.c +++ b/src/field/event_data.c @@ -18,9 +18,9 @@ EWRAM_DATA u16 gSpecialVar_0x8008 = 0; EWRAM_DATA u16 gSpecialVar_0x8009 = 0; EWRAM_DATA u16 gSpecialVar_0x800A = 0; EWRAM_DATA u16 gSpecialVar_0x800B = 0; -EWRAM_DATA u16 gScriptResult = 0; -EWRAM_DATA u16 gScriptLastTalked = 0; -EWRAM_DATA u16 gScriptFacing = 0; +EWRAM_DATA u16 gSpecialVar_Result = 0; +EWRAM_DATA u16 gSpecialVar_LastTalked = 0; +EWRAM_DATA u16 gSpecialVar_Facing = 0; EWRAM_DATA u8 gUnknown_0202E8E2[16] = {0}; extern u16 *gSpecialVars[]; diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index dd29e9df5..cd7d3a2e2 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -30,8 +30,8 @@ struct Coords32 s32 y; }; -extern u16 gScriptLastTalked; -extern u16 gScriptFacing; +extern u16 gSpecialVar_LastTalked; +extern u16 gSpecialVar_Facing; extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; @@ -295,8 +295,8 @@ u8 *sub_80682A8(struct MapPosition *position, u8 unused, u8 c) return NULL; } gSelectedMapObject = r3; - gScriptLastTalked = gMapObjects[r3].localId; - gScriptFacing = c; + gSpecialVar_LastTalked = gMapObjects[r3].localId; + gSpecialVar_Facing = c; return GetFieldObjectScriptPointerByFieldObjectId(r3); } @@ -316,10 +316,10 @@ static u8 *sub_8068364(struct MapPosition *position, u8 b, u8 c) } //_080683E8 gSelectedMapObject = r3; - gScriptLastTalked = gMapObjects[r3].localId; - gScriptFacing = c; + gSpecialVar_LastTalked = gMapObjects[r3].localId; + gSpecialVar_Facing = c; script = GetFieldObjectScriptPointerByFieldObjectId(r3); - script = GetRamScript(gScriptLastTalked, script); + script = GetRamScript(gSpecialVar_LastTalked, script); return script; } diff --git a/src/field/field_poison.c b/src/field/field_poison.c index 74d70cb36..49678f269 100644 --- a/src/field/field_poison.c +++ b/src/field/field_poison.c @@ -9,7 +9,7 @@ #include "task.h" #include "text.h" -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u8 fieldPoisonText_PokemonFainted[]; bool32 CheckMonIsValid(struct Pokemon *pkmn) @@ -93,9 +93,9 @@ void Task_WhiteOut(u8 taskId) break; case 2: //Done checking Pokemon if (AllMonsFainted()) - gScriptResult = 1; + gSpecialVar_Result = 1; else - gScriptResult = 0; + gSpecialVar_Result = 0; EnableBothScriptContexts(); DestroyTask(taskId); break; diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index a18190809..a472d5a9c 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -283,17 +283,17 @@ void sub_80818A4(void) u8 taskId = CreateTask(sub_80816A8, 80); s16 *data = gTasks[taskId].data; - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { data[1] = 0; data[2] = 104; } - else if (gScriptResult == 1) + else if (gSpecialVar_Result == 1) { data[1] = 1; data[2] = 104; } - else if (gScriptResult == 2) + else if (gSpecialVar_Result == 2) { data[1] = 0; data[2] = 120; diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 78c60c94e..87a9e2d5d 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -46,7 +46,7 @@ extern struct WarpData gUnknown_020297F0; extern u8 gBattleOutcome; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u8 *const gUnknown_083D1464[3]; @@ -169,7 +169,7 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1) } - gScriptResult = result; + gSpecialVar_Result = result; } void FinishCyclingRoadChallenge(void) { @@ -1112,17 +1112,17 @@ void sub_810E984(u8 taskId) saved_warp2_set_2(0, gUnknown_03000760[gUnknown_0203925B].var1, gUnknown_03000760[gUnknown_0203925B].var2, -1, 2, 1); if (gSpecialVar_0x8005 == gUnknown_0203925B) { - gScriptResult = 0; + gSpecialVar_Result = 0; PlaySE(SE_SELECT); MenuZeroFillWindowRect(0, 0, 29, 12); sub_810EC9C(taskId); } else { - gScriptResult = 1; + gSpecialVar_Result = 1; gSpecialVar_0x8005 = gUnknown_0203925B; sub_810EBEC(); - FieldObjectTurnByLocalIdAndMap(gScriptLastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH); + FieldObjectTurnByLocalIdAndMap(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH); sub_810EEDC(); MenuZeroFillScreen(); DestroyTask(taskId); @@ -1130,7 +1130,7 @@ void sub_810E984(u8 taskId) } else if (gMain.newKeys & B_BUTTON) { - gScriptResult = 0; + gSpecialVar_Result = 0; PlaySE(SE_SELECT); sub_810EEDC(); MenuZeroFillWindowRect(0, 0, 29, 12); @@ -1516,12 +1516,12 @@ void IsGrassTypeInParty(void) species = GetMonData(pokemon, MON_DATA_SPECIES); if (gBaseStats[species].type1 == TYPE_GRASS || gBaseStats[species].type2 == TYPE_GRASS) { - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; return; } } } - gScriptResult = FALSE; + gSpecialVar_Result = FALSE; } const u8 *const gUnknown_083F83C0[] = { @@ -1579,7 +1579,7 @@ void sub_810F118(u8 taskId) if (gMain.newKeys & A_BUTTON) { HandleDestroyMenuCursors(); - gScriptResult = gUnknown_0203925B; + gSpecialVar_Result = gUnknown_0203925B; PlaySE(SE_SELECT); sub_810EEDC(); MenuZeroFillWindowRect(0, 0, 29, 12); @@ -1588,7 +1588,7 @@ void sub_810F118(u8 taskId) if (gMain.newKeys & B_BUTTON) { HandleDestroyMenuCursors(); - gScriptResult = 0x7f; + gSpecialVar_Result = 0x7f; PlaySE(SE_SELECT); sub_810EEDC(); MenuZeroFillWindowRect(0, 0, 29, 12); @@ -2077,27 +2077,27 @@ bool8 sub_810F96C(void) void sub_810F9AC(void) { - if (gScriptResult >= 10000) + if (gSpecialVar_Result >= 10000) { - sub_80BF088(0, gScriptResult); + sub_80BF088(0, gSpecialVar_Result); } - else if (gScriptResult >= 1000) + else if (gSpecialVar_Result >= 1000) { gStringVar1[0] = CHAR_0; - ConvertIntToDecimalStringN(gStringVar1 + 1, gScriptResult, 0, sub_80BF0B8(gScriptResult)); + ConvertIntToDecimalStringN(gStringVar1 + 1, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result)); } - else if (gScriptResult >= 100) + else if (gSpecialVar_Result >= 100) { gStringVar1[0] = CHAR_0; gStringVar1[1] = CHAR_0; - ConvertIntToDecimalStringN(gStringVar1 + 2, gScriptResult, 0, sub_80BF0B8(gScriptResult)); + ConvertIntToDecimalStringN(gStringVar1 + 2, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result)); } - else if (gScriptResult >= 10) + else if (gSpecialVar_Result >= 10) { gStringVar1[0] = CHAR_0; gStringVar1[1] = CHAR_0; gStringVar1[2] = CHAR_0; - ConvertIntToDecimalStringN(gStringVar1 + 3, gScriptResult, 0, sub_80BF0B8(gScriptResult)); + ConvertIntToDecimalStringN(gStringVar1 + 3, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result)); } else { @@ -2105,7 +2105,7 @@ void sub_810F9AC(void) gStringVar1[1] = CHAR_0; gStringVar1[2] = CHAR_0; gStringVar1[3] = CHAR_0; - ConvertIntToDecimalStringN(gStringVar1 + 4, gScriptResult, 0, sub_80BF0B8(gScriptResult)); + ConvertIntToDecimalStringN(gStringVar1 + 4, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result)); } } diff --git a/src/field/fldeff_decoration.c b/src/field/fldeff_decoration.c index 7c8ff44db..37f024b9f 100644 --- a/src/field/fldeff_decoration.c +++ b/src/field/fldeff_decoration.c @@ -344,21 +344,21 @@ void GetShieldToyTVDecorationInfo(void) case 822: ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEFT_ALIGN, 3); StringCopy(gStringVar2, gSecretBaseText_GoldRank); - gScriptResult = 0; + gSpecialVar_Result = 0; break; case 734: ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2); StringCopy(gStringVar2, gSecretBaseText_SilverRank); - gScriptResult = 0; + gSpecialVar_Result = 0; break; case 756: - gScriptResult = 1; + gSpecialVar_Result = 1; break; case 757: - gScriptResult = 2; + gSpecialVar_Result = 2; break; case 758: - gScriptResult = 3; + gSpecialVar_Result = 3; break; } } diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c index 9bcfaa8c4..bf8e98403 100644 --- a/src/field/fldeff_secretpower.c +++ b/src/field/fldeff_secretpower.c @@ -249,7 +249,7 @@ bool8 SetUpFieldMove_SecretPower(void) sub_80BB63C(); - if (gScriptResult == 1 || player_get_direction_lower_nybble() != DIR_NORTH) + if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != DIR_NORTH) return FALSE; GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y); diff --git a/src/field/fldeff_strength.c b/src/field/fldeff_strength.c index d9603d094..565ac1651 100644 --- a/src/field/fldeff_strength.c +++ b/src/field/fldeff_strength.c @@ -14,7 +14,7 @@ static void sub_811AA38(void); static void sub_811AA9C(void); extern u8 gLastFieldPokeMenuOpened; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern void (*gFieldCallback)(void); extern void (*gUnknown_03005CE4)(void); @@ -24,7 +24,7 @@ bool8 SetUpFieldMove_Strength(void) { if (ShouldDoBrailleStrengthEffect()) { - gScriptResult = gLastFieldPokeMenuOpened; + gSpecialVar_Result = gLastFieldPokeMenuOpened; gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_811AA38; } @@ -32,7 +32,7 @@ bool8 SetUpFieldMove_Strength(void) { if (npc_before_player_of_type(87) != TRUE) return 0; - gScriptResult = gLastFieldPokeMenuOpened; + gSpecialVar_Result = gLastFieldPokeMenuOpened; gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_811AA18; } diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 8f7cb3d90..4e283ffe9 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -138,7 +138,7 @@ EWRAM_DATA static s8 sCurrentBagPocket = 0; EWRAM_DATA static u8 gUnknown_0203855A = 0; EWRAM_DATA static s8 gUnknown_0203855B = 0; EWRAM_DATA static s8 gUnknown_0203855C = 0; -EWRAM_DATA u16 gScriptItemId = 0; +EWRAM_DATA u16 gSpecialVar_ItemId = 0; EWRAM_DATA u8 gUnknown_02038560 = 0; EWRAM_DATA u8 gUnknown_02038561 = 0; EWRAM_DATA static u8 gUnknown_02038562 = 0; @@ -1662,7 +1662,7 @@ static void sub_80A4BF0(u16 *a) const u8 *text; if (i == 0) - text = sub_80A4B90(gScriptItemId); + text = sub_80A4B90(gSpecialVar_ItemId); else text = sItemPopupMenuActions[sPopupMenuActionList[i]].text; MenuPrint(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2); @@ -1849,7 +1849,7 @@ static void sub_80A50C8(u8 taskId) { if (r5[10] == 0) { - gScriptItemId = 0; + gSpecialVar_ItemId = 0; gUnknown_083C16BC[sReturnLocation].onBagClose(taskId); } else @@ -1864,7 +1864,7 @@ static void sub_80A50C8(u8 taskId) { PlaySE(SE_SELECT); gUnknown_02038560 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; - gScriptItemId = gCurrentBagPocketItemSlots[gUnknown_02038560].itemId; + gSpecialVar_ItemId = gCurrentBagPocketItemSlots[gUnknown_02038560].itemId; gUnknown_083C16BC[sReturnLocation].onItemSelect(taskId); sub_80F98A4(0); sub_80F98A4(1); @@ -1887,7 +1887,7 @@ static void sub_80A50C8(u8 taskId) { if (sReturnLocation != RETURN_TO_FIELD_5) { - gScriptItemId = 0; + gSpecialVar_ItemId = 0; gUnknown_083C16BC[sReturnLocation].onBagClose(taskId); } } @@ -2527,7 +2527,7 @@ static void sub_80A57C4(void) gUnknown_02038564 = 1; r5 = 9; } - else if (sub_80F92F4(gScriptItemId) == 0) + else if (sub_80F92F4(gSpecialVar_ItemId) == 0) { sPopupMenuActionList = gUnknown_083C16AE[4]; gUnknown_02038564 = 1; @@ -2654,10 +2654,10 @@ void sub_80A5B40(void) static void HandlePopupMenuAction_UseOnField(u8 taskId) { - if (ItemId_GetFieldFunc(gScriptItemId) != NULL) + if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL) { PlaySE(SE_SELECT); - if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gScriptItemId) == 1) + if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1) { sub_80A5BF8(taskId); } @@ -2665,7 +2665,7 @@ static void HandlePopupMenuAction_UseOnField(u8 taskId) { gTasks[taskId].data[2] = 0; if (sCurrentBagPocket != BAG_POCKET_BERRIES) - ItemId_GetFieldFunc(gScriptItemId)(taskId); + ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); else sub_80C9C7C(taskId); } @@ -2793,7 +2793,7 @@ static void sub_80A5EA0(u8 taskId) if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - sub_80A5DA0(gScriptItemId, gTasks[taskId].data[1]); + sub_80A5DA0(gSpecialVar_ItemId, gTasks[taskId].data[1]); DoYesNoFuncWithChoice(taskId, &gUnknown_083C16F4); } else if (gMain.newKeys & B_BUTTON) @@ -2827,7 +2827,7 @@ static void sub_80A5F80(u8 taskId) static void HandlePopupMenuAction_Register(u8 taskId) { PlaySE(SE_SELECT); - if (gSaveBlock1.registeredItem == gScriptItemId) + if (gSaveBlock1.registeredItem == gSpecialVar_ItemId) { // Un-register the registered item RemoveSelectIconFromRegisteredItem(); @@ -2836,7 +2836,7 @@ static void HandlePopupMenuAction_Register(u8 taskId) else { AddSelectIconToRegisteredItem(); - gSaveBlock1.registeredItem = gScriptItemId; + gSaveBlock1.registeredItem = gSpecialVar_ItemId; } sub_80A7528(0); sub_80A41D4(taskId); @@ -2865,7 +2865,7 @@ static void sub_80A6024(u8 taskId) static void DisplayCannotBeHeldMessage(u8 taskId) { sub_80A73FC(); - CopyItemName(gScriptItemId, gStringVar1); + CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_CantBeHeld); sub_80A7590(); DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6024, 1); @@ -2874,13 +2874,13 @@ static void DisplayCannotBeHeldMessage(u8 taskId) static void HandlePopupMenuAction_Give(u8 taskId) { PlaySE(SE_SELECT); - if (sub_80F931C(gScriptItemId) == 0) + if (sub_80F931C(gSpecialVar_ItemId) == 0) { sub_80A73FC(); sub_80A7590(); DisplayCannotUseItemMessage(taskId, gOtherText_CantWriteMail, sub_80A6024, 1); } - else if (ItemId_GetImportance(gScriptItemId) == 0) + else if (ItemId_GetImportance(gSpecialVar_ItemId) == 0) { if (CalculatePlayerPartyCount() == 0) { @@ -2931,21 +2931,21 @@ static void OnItemSelect_PkmnList(u8 taskId) { u8 r6 = sCurrentBagPocket + 1; - if (sub_80F931C(gScriptItemId) == 0) + if (sub_80F931C(gSpecialVar_ItemId) == 0) { sub_80A73FC(); sub_80A7590(); DisplayCannotUseItemMessage(taskId, gOtherText_CantWriteMail, sub_80A6024, 1); } - else if (sub_80F92F4(gScriptItemId) == 0) + else if (sub_80F92F4(gSpecialVar_ItemId) == 0) { sub_80A73FC(); - CopyItemName(gScriptItemId, gStringVar1); + CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_CantBeHeldHere); sub_80A7590(); DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6024, 1); } - else if (r6 != 5 && ItemId_GetImportance(gScriptItemId) == 0) + else if (r6 != 5 && ItemId_GetImportance(gSpecialVar_ItemId) == 0) { gTasks[taskId].data[8] = (u32)sub_808A3F8 >> 16; gTasks[taskId].data[9] = (u32)sub_808A3F8; @@ -2983,8 +2983,8 @@ static void OnItemSelect_Shop(u8 taskId) gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); sub_80A73FC(); - CopyItemName(gScriptItemId, gStringVar2); - if (ItemId_GetPrice(gScriptItemId) == 0) + CopyItemName(gSpecialVar_ItemId, gStringVar2); + if (ItemId_GetPrice(gSpecialVar_ItemId) == 0) { StringExpandPlaceholders(gStringVar4, gOtherText_CantBuyThat); DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6444, 1); @@ -3025,7 +3025,7 @@ static void sub_80A648C(u8 taskId) sub_80A418C(1, 1, 1, 11, 3); else sub_80A418C(1, 1, 1, 11, 2); - BuyMenuDisplayMessage(gScriptItemId, 1); + BuyMenuDisplayMessage(gSpecialVar_ItemId, 1); sub_80A683C(); } @@ -3047,7 +3047,7 @@ static void sub_80A6548(u8 taskId) static void sub_80A6574(u8 taskId) { PlaySE(SE_REGI); - sub_80A6870(gScriptItemId, gTasks[taskId].data[1]); + sub_80A6870(gSpecialVar_ItemId, gTasks[taskId].data[1]); gTasks[taskId].func = sub_80A6548; } @@ -3055,7 +3055,7 @@ static void sub_80A65AC(u8 taskId) { MenuZeroFillWindowRect(7, 6, 13, 12); sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6); - CopyItemName(gScriptItemId, gStringVar2); + CopyItemName(gSpecialVar_ItemId, gStringVar2); StringExpandPlaceholders(gStringVar4, gOtherText_SoldItem); DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6574, 1); sub_80A3D5C(taskId); @@ -3079,14 +3079,14 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId) if (sub_80A5350(taskId) == TRUE) { MenuZeroFillWindowRect(6, 11, 12, 11); - BuyMenuDisplayMessage(gScriptItemId, gTasks[taskId].data[1]); + BuyMenuDisplayMessage(gSpecialVar_ItemId, gTasks[taskId].data[1]); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); MenuZeroFillWindowRect(0, 10, 13, 13); sub_80A36B8(gBGTilemapBuffers[1], 0, 10, 13, 3); - ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(gScriptItemId) / 2 * gTasks[taskId].data[1], STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(gSpecialVar_ItemId) / 2 * gTasks[taskId].data[1], STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gOtherText_CanPay); DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6650, 1); } @@ -3227,7 +3227,7 @@ static void sub_80A6A84(u8 taskId) s16 *taskData = gTasks[taskId].data; sub_80A4DA4(gBGTilemapBuffers[1]); - CopyItemName(gScriptItemId, gStringVar1); + CopyItemName(gSpecialVar_ItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, taskData[1], STR_CONV_MODE_LEFT_ALIGN, 3); MenuZeroFillWindowRect(7, 6, 11, 13); sub_80A7528(7); @@ -3250,14 +3250,14 @@ static void sub_80A6B64(u8 taskId) { s16 *taskData = gTasks[taskId].data; - if (ItemId_GetImportance(gScriptItemId) == 2) + if (ItemId_GetImportance(gSpecialVar_ItemId) == 2) { gTasks[taskId].func = sub_80A6B00; sub_80A7528(9); } else { - if (AddPCItem(gScriptItemId, taskData[1]) == TRUE) + if (AddPCItem(gSpecialVar_ItemId, taskData[1]) == TRUE) { sub_80A6A84(taskId); } @@ -3325,7 +3325,7 @@ bool32 sub_80A6D1C(void) FreezeMapObjects(); sub_80594C0(); sub_80597F4(); - gScriptItemId = gSaveBlock1.registeredItem; + gSpecialVar_ItemId = gSaveBlock1.registeredItem; taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1.registeredItem), 8); gTasks[taskId].data[2] = 1; return TRUE; @@ -3415,7 +3415,7 @@ static const u8 gUnknown_083C170A[] = {5, 0}; static void sub_80A6FDC(void) { - if (ItemId_GetBattleUsage(gScriptItemId) != 0) + if (ItemId_GetBattleUsage(gSpecialVar_ItemId) != 0) { sPopupMenuActionList = gUnknown_083C1708; gUnknown_02038564 = 2; @@ -3454,10 +3454,10 @@ static void OnBagClose_Battle(u8 taskId) static void HandlePopupMenuAction_UseInBattle(u8 taskId) { - if (ItemId_GetBattleFunc(gScriptItemId) != NULL) + if (ItemId_GetBattleFunc(gSpecialVar_ItemId) != NULL) { PlaySE(SE_SELECT); - ItemId_GetBattleFunc(gScriptItemId)(taskId); + ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId); } } @@ -3525,7 +3525,7 @@ static void sub_80A7230(u8 taskId) PlaySE(SE_SELECT); sub_80F98A4(2); sub_80F98A4(3); - gScriptItemId = ITEM_POKE_BALL; + gSpecialVar_ItemId = ITEM_POKE_BALL; sPopupMenuActionList = gUnknown_083C1708; gUnknown_02038564 = 2; gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; @@ -3824,7 +3824,7 @@ static void sub_80A7768(void) int var; if (r4->unk1 == 1) - text = sub_80A4B90(gScriptItemId); + text = sub_80A4B90(gSpecialVar_ItemId); else text = sItemPopupMenuActions[sPopupMenuActionList[r4->unk1 - 1]].text; var = r4->unk1 - 1; diff --git a/src/field/item_use.c b/src/field/item_use.c index c2e71070c..37cd8ba78 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -80,10 +80,10 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId) { u8 taskData; - if (gScriptItemId == 0xAF) + if (gSpecialVar_ItemId == 0xAF) taskData = gTasks[taskId].data[15] - 1; else - taskData = ItemId_GetType(gScriptItemId) - 1; + taskData = ItemId_GetType(gSpecialVar_ItemId) - 1; gTasks[taskId].data[8] = (u32)gExitToOverworldFuncList[taskData] >> 16; gTasks[taskId].data[9] = (u32)gExitToOverworldFuncList[taskData]; @@ -157,7 +157,7 @@ void ItemMenu_ReadMail(u8 taskId) if (!gPaletteFade.active) { - mailStruct.itemId = gScriptItemId; + mailStruct.itemId = gSpecialVar_ItemId; HandleReadMail(&mailStruct, sub_80A5D04, 0); DestroyTask(taskId); } @@ -199,9 +199,9 @@ void ItemUseOutOfBattle_Bike(u8 taskId) void ItemUseOnFieldCB_Bike(u8 taskId) { - if (ItemId_GetSecondaryId(gScriptItemId) == 0) + if (ItemId_GetSecondaryId(gSpecialVar_ItemId) == 0) GetOnOffBike(2); - if (ItemId_GetSecondaryId(gScriptItemId) == 1) + if (ItemId_GetSecondaryId(gSpecialVar_ItemId) == 1) GetOnOffBike(4); sub_8064E2C(); @@ -252,7 +252,7 @@ void ItemUseOutOfBattle_Rod(u8 taskId) void ItemUseOnFieldCB_Rod(u8 taskId) { - StartFishing(ItemId_GetSecondaryId(gScriptItemId)); + StartFishing(ItemId_GetSecondaryId(gSpecialVar_ItemId)); DestroyTask(taskId); } @@ -770,11 +770,11 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId) if (gTasks[taskId].data[2] == 0) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BB8, 1); + DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gSpecialVar_ItemId)], sub_80C9BB8, 1); } else { - DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BD8, 0); + DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gSpecialVar_ItemId)], sub_80C9BD8, 0); } } @@ -791,13 +791,13 @@ void sub_80C9C7C(u8 taskId) } else { - ItemId_GetFieldFunc(gScriptItemId)(taskId); + ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); } } void sub_80C9D00(u8 taskId) { - RemoveBagItem(gScriptItemId, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); ScriptContext2_Enable(); ScriptContext1_SetupScript(gUnknown_081A1654); DestroyTask(taskId); @@ -876,7 +876,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if (gScriptItemId >= ITEM_HM01) + if (gSpecialVar_ItemId >= ITEM_HM01) DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM else DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM @@ -892,7 +892,7 @@ void sub_80C9F10(u8 taskId) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { - StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gScriptItemId)]); + StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_ItemId)]); StringExpandPlaceholders(gStringVar4, gOtherText_ContainsMove); DisplayItemMessageOnField(taskId, gStringVar4, sub_80C9F80, 1); } @@ -913,9 +913,9 @@ void sub_80C9FC0(u8 var) static void PrepareItemUseMessage(void) { - RemoveBagItem(gScriptItemId, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); sub_80A3E0C(); - CopyItemName(gScriptItemId, gStringVar2); + CopyItemName(gSpecialVar_ItemId, gStringVar2); StringExpandPlaceholders(gStringVar4, gOtherText_UsedItem); } @@ -923,7 +923,7 @@ void ItemUseOutOfBattle_Repel(u8 var) { if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE) { - VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gScriptItemId)); + VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId)); PrepareItemUseMessage(); DisplayItemMessageOnField(var, gStringVar4, CleanUpItemMenuMessage, 1); } @@ -936,7 +936,7 @@ void ItemUseOutOfBattle_Repel(u8 var) void sub_80CA07C(void) { sub_80A3E0C(); - CopyItemName(gScriptItemId, gStringVar2); + CopyItemName(gSpecialVar_ItemId, gStringVar2); } void sub_80CA098(u8 taskId) @@ -950,7 +950,7 @@ void sub_80CA098(u8 taskId) void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) { - if (gScriptItemId == ITEM_WHITE_FLUTE) + if (gSpecialVar_ItemId == ITEM_WHITE_FLUTE) { FlagSet(FLAG_SYS_ENC_UP_ITEM); FlagClear(FLAG_SYS_ENC_DOWN_ITEM); @@ -959,7 +959,7 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) gTasks[taskId].func = sub_80CA098; gTasks[taskId].data[15] = 0; } - else if (gScriptItemId == ITEM_BLACK_FLUTE) + else if (gSpecialVar_ItemId == ITEM_BLACK_FLUTE) { FlagSet(FLAG_SYS_ENC_DOWN_ITEM); FlagClear(FLAG_SYS_ENC_UP_ITEM); @@ -1016,7 +1016,7 @@ void ItemUseInBattle_PokeBall(u8 var) { if (PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? { - RemoveBagItem(gScriptItemId, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); sub_80A7094(var); } else @@ -1037,8 +1037,8 @@ void sub_80CA2BC(u8 taskId) if(++gTasks[taskId].data[15] > 7) { PlaySE(SE_KAIFUKU); - RemoveBagItem(gScriptItemId, 1); - DisplayItemMessageOnField(taskId, sub_803F378(gScriptItemId), sub_80CA294, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); + DisplayItemMessageOnField(taskId, sub_803F378(gSpecialVar_ItemId), sub_80CA294, 1); } } @@ -1048,7 +1048,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId) MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE) + if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE) { DisplayItemMessageOnField(taskId, gOtherText_WontHaveAnyEffect, CleanUpItemMenuMessage, 1); } @@ -1097,9 +1097,9 @@ void unref_sub_80CA448(u8 var) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if (ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE) + if (ExecuteTableBasedItemEffect__(0, gSpecialVar_ItemId, 0) == FALSE) { - RemoveBagItem(gScriptItemId, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); GetMonNickname(&gPlayerParty[0], gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion); DisplayItemMessageOnField(var, gStringVar4, sub_80A7094, 1); @@ -1127,7 +1127,7 @@ void ItemUseInBattle_Escape(u8 taskId) void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) { - switch (GetItemEffectType(gScriptItemId) - 1) + switch (GetItemEffectType(gSpecialVar_ItemId) - 1) { case 1: case 2: @@ -1170,7 +1170,7 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) void ItemUseInBattle_EnigmaBerry(u8 taskId) { - switch (GetItemEffectType(gScriptItemId)) + switch (GetItemEffectType(gSpecialVar_ItemId)) { case 0: ItemUseInBattle_StatIncrease(taskId); diff --git a/src/field/lottery_corner.c b/src/field/lottery_corner.c index 2cfdb7f88..83febc56e 100644 --- a/src/field/lottery_corner.c +++ b/src/field/lottery_corner.c @@ -7,7 +7,7 @@ #include "string_util.h" #include "text.h" -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u16 gSpecialVar_0x8004; extern struct PokemonStorage gPokemonStorage; extern u16 gSpecialVar_0x8005; @@ -46,7 +46,7 @@ void SetRandomLotteryNumber(u16 i) void RetrieveLotteryNumber(void) { u16 lottoNumber = GetLotteryNumber(); - gScriptResult = lottoNumber; + gSpecialVar_Result = lottoNumber; } void PickLotteryCornerTicket(void) @@ -70,7 +70,7 @@ void PickLotteryCornerTicket(void) if (!GetMonData(pkmn, MON_DATA_IS_EGG)) { u32 otId = GetMonData(pkmn, MON_DATA_OT_ID); - u8 numMatchingDigits = GetMatchingDigits(gScriptResult, otId); + u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_Result, otId); if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1) { @@ -97,7 +97,7 @@ void PickLotteryCornerTicket(void) !GetBoxMonData(pkmn, MON_DATA_IS_EGG)) { u32 otId = GetBoxMonData(pkmn, MON_DATA_OT_ID); - u8 numMatchingDigits = GetMatchingDigits(gScriptResult, otId); + u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_Result, otId); if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1) { diff --git a/src/field/map_obj_lock.c b/src/field/map_obj_lock.c index 91feaf177..954fcb446 100644 --- a/src/field/map_obj_lock.c +++ b/src/field/map_obj_lock.c @@ -6,7 +6,7 @@ #include "script_movement.h" #include "task.h" -extern u16 gScriptFacing; +extern u16 gSpecialVar_Facing; bool8 walkrun_is_standing_still(void) { @@ -109,7 +109,7 @@ void unref_sub_8064E5C(void) void sub_8064EAC(void) { - FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject], gScriptFacing); + FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject], gSpecialVar_Facing); } void sub_8064ED4(void) diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index fad6674db..30f6f5233 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -21,7 +21,7 @@ extern struct MusicPlayerInfo gMPlay_SE2; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u16 gSpecialVar_0x8004; extern const u8 gTextStoryteller_Story1Title[]; @@ -258,12 +258,12 @@ static u8 GetCurrentMauvilleOldMan(void) void ScrSpecial_GetCurrentMauvilleMan(void) { - gScriptResult = GetCurrentMauvilleOldMan(); + gSpecialVar_Result = GetCurrentMauvilleOldMan(); } void ScrSpecial_HasBardSongBeenChanged(void) { - u16 *scriptResult = &gScriptResult; // why?? + u16 *scriptResult = &gSpecialVar_Result; // why?? struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; *scriptResult = bard->hasChangedSong; @@ -350,7 +350,7 @@ void ScrSpecial_PlayBardSong(void) void ScrSpecial_GetHipsterSpokenFlag(void) { - u16 *scriptResult = &gScriptResult; // again?? + u16 *scriptResult = &gSpecialVar_Result; // again?? struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster; *scriptResult = hipster->alreadySpoken; @@ -369,12 +369,12 @@ void ScrSpecial_HipsterTeachWord(void) if (var == 0xFFFF) { - gScriptResult = FALSE; + gSpecialVar_Result = FALSE; } else { EasyChat_GetWordText(gStringVar1, var); - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; } } @@ -384,12 +384,12 @@ void ScrSpecial_GiddyShouldTellAnotherTale(void) if (giddy->taleCounter == 10) { - gScriptResult = FALSE; + gSpecialVar_Result = FALSE; giddy->taleCounter = 0; } else { - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; } } @@ -421,7 +421,7 @@ void ScrSpecial_GenerateGiddyLine(void) else giddy->taleCounter++; - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; } #ifdef NONMATCHING @@ -1251,11 +1251,11 @@ static void Task_StoryListMenu(u8 taskId) break; if (selection == -1 || selection == GetFreeStorySlot()) { - gScriptResult = 0; + gSpecialVar_Result = 0; } else { - gScriptResult = 1; + gSpecialVar_Result = 1; gUnknown_03000748 = selection; } HandleDestroyMenuCursors(); @@ -1266,7 +1266,7 @@ static void Task_StoryListMenu(u8 taskId) } } -// Sets gScriptResult to TRUE if player selected a story +// Sets gSpecialVar_Result to TRUE if player selected a story void ScrSpecial_StorytellerStoryListMenu(void) { CreateTask(Task_StoryListMenu, 0x50); diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7d21c365a..089f93f9e 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -4314,7 +4314,7 @@ void TaughtMove(u8 taskId) u16 r4; gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, gScriptItemId, sub_808B508); + sub_806E8D0(taskId, gSpecialVar_ItemId, sub_808B508); moveIndex = sub_809FA30(); r4 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + moveIndex); GetMonNickname(ewram1C000.pokemon, gStringVar1); @@ -4340,7 +4340,7 @@ void StopTryingToTeachMove_806F588(u8 taskId) if (!gPaletteFade.active) { gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, gScriptItemId, sub_808B508); + sub_806E8D0(taskId, gSpecialVar_ItemId, sub_808B508); StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); sub_806E834(gStringVar4, 1); diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 3b70e7d76..4a904fbb1 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -664,7 +664,7 @@ static void sub_810BF7C(u8 taskId) PlaySE(SE_SELECT); if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 == gUnknown_02039248.unk2) { - gScriptResult = 0xffff; + gSpecialVar_Result = 0xffff; sub_810C31C(taskId); } else @@ -675,7 +675,7 @@ static void sub_810BF7C(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - gScriptResult = 0xffff; + gSpecialVar_Result = 0xffff; sub_810C31C(taskId); } } @@ -800,7 +800,7 @@ static void sub_810C31C(u8 taskId) BeginNormalPaletteFade(-1, 0, 0, 16, 0); if (gUnknown_02039244 > 1) { - gScriptItemId = ITEM_NONE; + gSpecialVar_ItemId = ITEM_NONE; } gTasks[taskId].func = sub_810C2C8; } @@ -816,7 +816,7 @@ static void sub_810C368(u8 taskId) MenuDrawTextWindow(7, v0 + 4, 13, 11); PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); - gScriptItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; + gSpecialVar_ItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; gTasks[taskId].func = sub_810C40C; } @@ -855,7 +855,7 @@ static void sub_810C4C4(u8 taskId) if (!gPaletteFade.active) { sub_810C2B0(); - sub_8136130(&gSaveBlock1.pokeblocks[gScriptItemId], sub_810B96C); + sub_8136130(&gSaveBlock1.pokeblocks[gSpecialVar_ItemId], sub_810B96C); DestroyTask(taskId); } } @@ -939,21 +939,21 @@ static void sub_810C748(u8 taskId) static void sub_810C788(u8 taskId) { - s16 v0 = PokeblockGetGain(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]); - StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); - PokeblockClearIfExists(gScriptItemId); - gScriptItemId = gSaveBlock1.pokeblocks[gScriptItemId].color << 8; + s16 v0 = PokeblockGetGain(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gSpecialVar_ItemId]); + StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gSpecialVar_ItemId].color]); + PokeblockClearIfExists(gSpecialVar_ItemId); + gSpecialVar_ItemId = gSaveBlock1.pokeblocks[gSpecialVar_ItemId].color << 8; if (v0 == 0) { - gScriptItemId += 1; + gSpecialVar_ItemId += 1; } if (v0 > 0) { - gScriptItemId += 2; + gSpecialVar_ItemId += 2; } if (v0 < 0) { - gScriptItemId += 3; + gSpecialVar_ItemId += 3; } BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_810C2C8; @@ -961,10 +961,10 @@ static void sub_810C788(u8 taskId) static void sub_810C854(u8 taskId) { - SafariZoneActivatePokeblockFeeder(gScriptItemId); - StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); - gScriptResult = gScriptItemId; - PokeblockClearIfExists(gScriptItemId); + SafariZoneActivatePokeblockFeeder(gSpecialVar_ItemId); + StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gSpecialVar_ItemId].color]); + gSpecialVar_Result = gSpecialVar_ItemId; + PokeblockClearIfExists(gSpecialVar_ItemId); BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_810C2C8; } diff --git a/src/field/safari_zone.c b/src/field/safari_zone.c index 73fb01f3e..e9ca3a9f9 100644 --- a/src/field/safari_zone.c +++ b/src/field/safari_zone.c @@ -37,7 +37,7 @@ extern u8 gUnknown_081C3448; extern u8 gUnknown_081C3459; extern u8 *gPokeblockNames[]; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; bool32 GetSafariZoneFlag(void) { @@ -137,13 +137,13 @@ void SafariZoneGetPokeblockNameInFeeder(void) && gPokeblockFeeders[i].x == x && gPokeblockFeeders[i].y == y) { - gScriptResult = i; + gSpecialVar_Result = i; StringCopy(gStringVar1, gPokeblockNames[gPokeblockFeeders[i].pokeblock.color]); return; } } - gScriptResult = -1; + gSpecialVar_Result = -1; } static void GetPokeblockFeederWithinRange(void) @@ -166,23 +166,23 @@ static void GetPokeblockFeederWithinRange(void) y *= -1; if ((x + y) <= 5) { - gScriptResult = i; + gSpecialVar_Result = i; return; } } } - gScriptResult = -1; + gSpecialVar_Result = -1; } struct Pokeblock *unref_sub_80C8418(void) { SafariZoneGetPokeblockNameInFeeder(); - if (gScriptResult == 0xFFFF) + if (gSpecialVar_Result == 0xFFFF) return NULL; else - return &gPokeblockFeeders[gScriptResult].pokeblock; + return &gPokeblockFeeders[gSpecialVar_Result].pokeblock; } @@ -190,10 +190,10 @@ struct Pokeblock *SafariZoneGetActivePokeblock(void) { GetPokeblockFeederWithinRange(); - if (gScriptResult == 0xFFFF) + if (gSpecialVar_Result == 0xFFFF) return NULL; else - return &gPokeblockFeeders[gScriptResult].pokeblock; + return &gPokeblockFeeders[gSpecialVar_Result].pokeblock; } @@ -240,13 +240,13 @@ bool8 unref_sub_80C853C(void) { SafariZoneGetPokeblockNameInFeeder(); - if (gScriptResult == 0xFFFF) + if (gSpecialVar_Result == 0xFFFF) { return FALSE; } ConvertIntToDecimalStringN(gStringVar2, - gPokeblockFeeders[gScriptResult].stepCounter, + gPokeblockFeeders[gSpecialVar_Result].stepCounter, STR_CONV_MODE_LEADING_ZEROS, 3); return TRUE; diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index f0cafcf1a..d5fc56e8d 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -61,9 +61,9 @@ extern u16 gSpecialVar_0x8001; extern u16 gSpecialVar_0x8002; extern u16 gSpecialVar_0x8004; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; -extern u16 gScriptContestCategory; +extern u16 gSpecialVar_ContestCategory; extern SpecialFunc gSpecials[]; extern u8 *gStdScripts[]; @@ -479,7 +479,7 @@ bool8 ScrCmd_random(struct ScriptContext *ctx) { u16 max = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = Random() % max; + gSpecialVar_Result = Random() % max; return FALSE; } @@ -488,7 +488,7 @@ bool8 ScrCmd_giveitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = AddBagItem(itemId, (u8)quantity); + gSpecialVar_Result = AddBagItem(itemId, (u8)quantity); return FALSE; } @@ -497,7 +497,7 @@ bool8 ScrCmd_takeitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = RemoveBagItem(itemId, (u8)quantity); + gSpecialVar_Result = RemoveBagItem(itemId, (u8)quantity); return FALSE; } @@ -506,7 +506,7 @@ bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = CheckBagHasSpace(itemId, (u8)quantity); + gSpecialVar_Result = CheckBagHasSpace(itemId, (u8)quantity); return FALSE; } @@ -515,7 +515,7 @@ bool8 ScrCmd_checkitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = CheckBagHasItem(itemId, (u8)quantity); + gSpecialVar_Result = CheckBagHasItem(itemId, (u8)quantity); return FALSE; } @@ -523,7 +523,7 @@ bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = GetPocketByItemId(itemId); + gSpecialVar_Result = GetPocketByItemId(itemId); return FALSE; } @@ -532,7 +532,7 @@ bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = AddPCItem(itemId, quantity); + gSpecialVar_Result = AddPCItem(itemId, quantity); return FALSE; } @@ -541,7 +541,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = CheckPCHasItem(itemId, quantity); + gSpecialVar_Result = CheckPCHasItem(itemId, quantity); return FALSE; } @@ -549,7 +549,7 @@ bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) { u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = IsThereStorageSpaceForDecoration(decoration); + gSpecialVar_Result = IsThereStorageSpaceForDecoration(decoration); return FALSE; } @@ -557,7 +557,7 @@ bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) { u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = sub_81340A8(decoration); + gSpecialVar_Result = sub_81340A8(decoration); return FALSE; } @@ -565,7 +565,7 @@ bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = sub_8134074(decorId); + gSpecialVar_Result = sub_8134074(decorId); return FALSE; } @@ -573,7 +573,7 @@ bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = sub_8133FE4(decorId); + gSpecialVar_Result = sub_8133FE4(decorId); return FALSE; } @@ -641,7 +641,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) return TRUE; } -bool8 s28_pause_asm() +bool8 RunPauseTimer() { sPauseCounter--; @@ -654,7 +654,7 @@ bool8 s28_pause_asm() bool8 ScrCmd_delay(struct ScriptContext *ctx) { sPauseCounter = ScriptReadHalfword(ctx); - SetupNativeScript(ctx, s28_pause_asm); + SetupNativeScript(ctx, RunPauseTimer); return TRUE; } @@ -861,7 +861,7 @@ bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) bool8 ScrCmd_getpartysize(struct ScriptContext *ctx) { - gScriptResult = CalculatePlayerPartyCount(); + gSpecialVar_Result = CalculatePlayerPartyCount(); return FALSE; } @@ -871,7 +871,7 @@ bool8 ScrCmd_playse(struct ScriptContext *ctx) return FALSE; } -static bool8 WaitForSoundEffectFinish() +static bool8 WaitForSoundEffectFinish(void) { if (!IsSEPlaying()) return TRUE; @@ -891,7 +891,7 @@ bool8 ScrCmd_playfanfare(struct ScriptContext *ctx) return FALSE; } -static bool8 WaitForFanfareFinish() +static bool8 WaitForFanfareFinish(void) { return IsFanfareTaskInactive(); } @@ -1554,7 +1554,7 @@ bool8 ScrCmd_givemon(struct ScriptContext *ctx) u32 unkParam2 = ScriptReadWord(ctx); u8 unkParam3 = ScriptReadByte(ctx); - gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); + gSpecialVar_Result = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); return FALSE; } @@ -1562,7 +1562,7 @@ bool8 ScrCmd_giveegg(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = ScriptGiveEgg(species); + gSpecialVar_Result = ScriptGiveEgg(species); return FALSE; } @@ -1581,7 +1581,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) u8 i; u16 moveId = ScriptReadHalfword(ctx); - gScriptResult = 6; + gSpecialVar_Result = 6; for (i = 0; i < PARTY_SIZE; i++) { u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); @@ -1590,7 +1590,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) // UB: GetMonData() arguments don't match function definition if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && pokemon_has_move(&gPlayerParty[i], moveId) == TRUE) { - gScriptResult = i; + gSpecialVar_Result = i; gSpecialVar_0x8004 = species; break; } @@ -1624,7 +1624,7 @@ bool8 ScrCmd_checkmoney(struct ScriptContext *ctx) u8 ignore = ScriptReadByte(ctx); if (!ignore) - gScriptResult = IsEnoughMoney(gSaveBlock1.money, amount); + gSpecialVar_Result = IsEnoughMoney(gSaveBlock1.money, amount); return FALSE; } @@ -1804,7 +1804,7 @@ bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = GetPriceReduction(value); + gSpecialVar_Result = GetPriceReduction(value); return FALSE; } @@ -1831,7 +1831,7 @@ bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx) bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx) { - sub_80C4980(gScriptContestCategory); + sub_80C4980(gSpecialVar_ContestCategory); ScriptContext1_Stop(); return TRUE; } @@ -1878,7 +1878,7 @@ bool8 ScrCmd_setrespawn(struct ScriptContext *ctx) bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) { - gScriptResult = gSaveBlock2.playerGender; + gSpecialVar_Result = gSaveBlock2.playerGender; return FALSE; } @@ -2002,9 +2002,9 @@ bool8 ScrCmd_givecoins(struct ScriptContext *ctx) u16 coins = VarGet(ScriptReadHalfword(ctx)); if (GiveCoins(coins) == TRUE) - gScriptResult = 0; + gSpecialVar_Result = 0; else - gScriptResult = 1; + gSpecialVar_Result = 1; return FALSE; } @@ -2013,8 +2013,8 @@ bool8 ScrCmd_takecoins(struct ScriptContext *ctx) u16 coins = VarGet(ScriptReadHalfword(ctx)); if (TakeCoins(coins) == TRUE) - gScriptResult = 0; + gSpecialVar_Result = 0; else - gScriptResult = 1; + gSpecialVar_Result = 1; return FALSE; } diff --git a/src/field/script_menu.c b/src/field/script_menu.c index 1f8c2c45e..9f3ab75cc 100644 --- a/src/field/script_menu.c +++ b/src/field/script_menu.c @@ -580,7 +580,7 @@ const u8 *const gUnknown_083CE048[] = extern u8 gPCText_WhichPCShouldBeAccessed[]; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; static void Task_HandleMultichoiceInput(u8); static void Task_HandleYesNoInput(u8); @@ -599,7 +599,7 @@ bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress) } else { - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, 0); return TRUE; } @@ -613,7 +613,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ig } else { - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, defaultChoice); return TRUE; } @@ -698,11 +698,11 @@ static void Task_HandleMultichoiceInput(u8 taskId) if (gTasks[taskId].tIgnoreBPress) return; PlaySE(SE_SELECT); - gScriptResult = 127; + gSpecialVar_Result = 127; } else { - gScriptResult = selection; + gSpecialVar_Result = selection; } HandleDestroyMenuCursors(); MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); @@ -720,7 +720,7 @@ bool8 Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress) } else { - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; sub_80B53B4(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress); return TRUE; } @@ -760,7 +760,7 @@ bool8 ScriptMenu_YesNo(u8 left, u8 top) } else { - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; DisplayYesNoMenu(left, top, 1); taskId = CreateTask(Task_HandleYesNoInput, 0x50); gTasks[taskId].tLeft = left; @@ -772,7 +772,7 @@ bool8 ScriptMenu_YesNo(u8 left, u8 top) // unused bool8 IsScriptActive(void) { - if (gScriptResult == 0xFF) + if (gSpecialVar_Result == 0xFF) return FALSE; else return TRUE; @@ -795,10 +795,10 @@ static void Task_HandleYesNoInput(u8 taskId) case -1: case 1: PlaySE(SE_SELECT); - gScriptResult = 0; + gSpecialVar_Result = 0; break; case 0: - gScriptResult = 1; + gSpecialVar_Result = 1; break; } @@ -823,7 +823,7 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPr u8 taskId; u8 width; - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; sub_807274C(left, top, gMultichoiceLists[multichoiceId].count, 0, gMultichoiceLists[multichoiceId].list, columnCount, 0); @@ -860,11 +860,11 @@ static void Task_HandleMultichoiceGridInput(u8 taskId) if (gTasks[taskId].tIgnoreBPress) return; PlaySE(SE_SELECT); - gScriptResult = 127; + gSpecialVar_Result = 127; } else { - gScriptResult = selection; + gSpecialVar_Result = selection; } HandleDestroyMenuCursors(); MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); @@ -888,7 +888,7 @@ bool8 ScrSpecial_CreatePCMenu(void) } else { - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; ScriptMenu_CreatePCMenu(); return TRUE; } diff --git a/src/field/secret_base.c b/src/field/secret_base.c index bb7716190..7589ab1e3 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -175,11 +175,11 @@ void sub_80BB5D0(void) void sub_80BB5E4(void) { u16 i; - gScriptResult = 0; + gSpecialVar_Result = 0; for (i = 0; i < MAX_SECRET_BASES; i++) { if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId) continue; - gScriptResult = 1; + gSpecialVar_Result = 1; VarSet(VAR_0x4054, i); break; } @@ -188,9 +188,9 @@ void sub_80BB5E4(void) void sub_80BB63C(void) // 80bb63c { if (gSaveBlock1.secretBases[0].secretBaseId) - gScriptResult = 1; + gSpecialVar_Result = 1; else - gScriptResult = 0; + gSpecialVar_Result = 0; } u8 sub_80BB66C(void) // 80bb66c @@ -462,13 +462,13 @@ void sub_80BBDD0(void) gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE) { - gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20; - VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); - gScriptResult = gMapHeader.events->mapObjects[objid].localId; + gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20; + VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]); + gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId; FlagClear(gSpecialVar_0x8004 + 0xAE); - show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); - sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); gSpecialVar_0x8004 ++; } } @@ -504,7 +504,7 @@ bool8 sub_80BC050(void) { sub_80BB5D0(); sub_80BB5E4(); - if (gScriptResult == 1) + if (gSpecialVar_Result == 1) return FALSE; return TRUE; } @@ -539,9 +539,9 @@ void sub_80BC0F8(void) { void sub_80BC114(void) { if (gSaveBlock1.secretBases[0].secretBaseId != gUnknown_020387DC) - gScriptResult = 1; + gSpecialVar_Result = 1; else - gScriptResult = 0; + gSpecialVar_Result = 0; } u8 sub_80BC14C(u8 sbid) @@ -862,15 +862,15 @@ void sub_80BC56C(void) u8 secretBaseIndex = sub_80BC14C(gUnknown_020387DC); if (sub_80BC268(secretBaseIndex) == TRUE) { - gScriptResult = 1; + gSpecialVar_Result = 1; } else if (sub_80BC538() > 9) { - gScriptResult = 2; + gSpecialVar_Result = 2; } else { - gScriptResult = 0; + gSpecialVar_Result = 0; } } @@ -1237,7 +1237,7 @@ void sub_80BCE1C(void) void sub_80BCE4C() { - gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gScriptResult; + gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gSpecialVar_Result; } void sub_80BCE90() @@ -1257,7 +1257,7 @@ void sub_80BCE90() } gSpecialVar_0x8004 = sub_80BCCA4(curBaseIndex); - gScriptResult = gSaveBlock1.secretBases[curBaseIndex].sbr_field_1_5; + gSpecialVar_Result = gSaveBlock1.secretBases[curBaseIndex].sbr_field_1_5; } void sub_80BCF1C(u8 taskId) diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 9f4eacd09..dccf1714e 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -50,7 +50,7 @@ static bool8 savingComplete; extern bool8 gDifferentSaveFile; extern u16 gSaveFileStatus; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u8 gUnknown_03004860; @@ -528,10 +528,10 @@ static void Task_SaveDialog(u8 taskId) { case SAVE_CANCELED: case SAVE_ERROR: - gScriptResult = 0; + gSpecialVar_Result = 0; break; case SAVE_SUCCESS: - gScriptResult = status; + gSpecialVar_Result = status; break; case SAVE_IN_PROGRESS: return; diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 149eaa03d..701d4087a 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -16,7 +16,7 @@ #include "trig.h" #include "unknown_task.h" -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern struct SpriteTemplate gUnknown_02024E8C; //-------------------------------------------------- @@ -439,7 +439,7 @@ static void Task_StarterChoose5(u8 taskId) { case 0: // YES //Return the starter choice and exit. - gScriptResult = gTasks[taskId].tStarterSelection; + gSpecialVar_Result = gTasks[taskId].tStarterSelection; SetMainCallback2(gMain.savedCallback); break; case 1: // NO diff --git a/src/field/trader.c b/src/field/trader.c index c4fe73ba1..61cb0b4a2 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -179,7 +179,7 @@ void Task_HandleGetDecorationMenuInput(u8 taskId) void ScrSpecial_GetTraderTradedFlag(void) { struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; - gScriptResult = trader->alreadyTraded; + gSpecialVar_Result = trader->alreadyTraded; } void ScrSpecial_DoesPlayerHaveNoDecorations(void) @@ -190,21 +190,21 @@ void ScrSpecial_DoesPlayerHaveNoDecorations(void) { if (sub_8134194(i)) { - gScriptResult = FALSE; + gSpecialVar_Result = FALSE; return; } } - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; } void ScrSpecial_IsDecorationFull(void) { - gScriptResult = FALSE; + gSpecialVar_Result = FALSE; if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category && sub_8133F9C(gDecorations[gSpecialVar_0x8004].category) == -1) { sub_80FE7D4(gStringVar2, gDecorations[gSpecialVar_0x8004].category); - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; } } diff --git a/src/field/tv.c b/src/field/tv.c index db96775e3..1d5bf929c 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -68,10 +68,10 @@ extern struct TVSaleItem gUnknown_02038724[3]; struct UnkTvStruct gUnknown_03005D38; -extern u16 gScriptLastTalked; +extern u16 gSpecialVar_LastTalked; -extern u8 gScriptContestCategory; -extern u8 gScriptContestRank; +extern u8 gSpecialVar_ContestCategory; +extern u8 gSpecialVar_ContestRank; extern u8 gUnknown_03004316[11]; extern u8 gBattleOutcome; @@ -447,8 +447,8 @@ void ClearTVShowData(void) bool8 sub_80BF1B4(u8); void sub_80BF20C(void); -extern u8 gScriptContestCategory; -extern u8 gScriptContestRank; +extern u8 gSpecialVar_ContestCategory; +extern u8 gSpecialVar_ContestRank; extern u8 gUnknown_03004316[11]; extern u8 gBattleOutcome; @@ -983,8 +983,8 @@ void sub_80BE284(u8 a0) if (gUnknown_03005D38.var0 != -1) { bravoTrainer->contestResult = a0; - bravoTrainer->contestCategory = gScriptContestCategory; - bravoTrainer->contestRank = gScriptContestRank; + bravoTrainer->contestCategory = gSpecialVar_ContestCategory; + bravoTrainer->contestRank = gSpecialVar_ContestRank; bravoTrainer->species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, bravoTrainer->pokemonNickname); } @@ -1047,7 +1047,7 @@ void sub_80BE3BC(void) void sub_80BE478(void) { sub_80BF478(); - if (gScriptResult == 1) + if (gSpecialVar_Result == 1) return; GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); @@ -1414,7 +1414,7 @@ void sub_80BECE8(void) arg0 = sub_80BECA0(); if (arg0 == 0xff) { - gScriptResult = 0; + gSpecialVar_Result = 0; return; } if (gSaveBlock1.unknown_2ABC[arg0].val2 == 0) @@ -1433,7 +1433,7 @@ void sub_80BECE8(void) gSaveBlock1.unknown_2ABC[arg0].val1 = 0; ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.unknown_2ABC[arg0].val0]); } - gScriptResult = 1; + gSpecialVar_Result = 1; } bool8 GetPriceReduction(u8 arg0) @@ -1462,7 +1462,7 @@ bool8 IsPriceDiscounted(u8 arg0) case 1: if (gSaveBlock1.location.mapGroup == MAP_GROUP(SLATEPORT_CITY) && gSaveBlock1.location.mapNum == MAP_NUM(SLATEPORT_CITY) - && gScriptLastTalked == 0x1a) + && gSpecialVar_LastTalked == 0x1a) return TRUE; else return FALSE; @@ -1660,7 +1660,7 @@ void sub_80BF25C(u8 showType) { if(gSaveBlock1.tvShows[i].common.var01 == 1) { - gScriptResult = 1; + gSpecialVar_Result = 1; } else { @@ -1676,7 +1676,7 @@ void sub_80BF25C(u8 showType) void sub_80BF2C4(void) { - gScriptResult = 0; + gSpecialVar_Result = 0; switch (gSpecialVar_0x8005) { case TVSHOW_FAN_CLUB_LETTER: @@ -1708,7 +1708,7 @@ void sub_80BF334(void) struct TVShowFanClubLetter *fanclubLetter; sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter; @@ -1721,7 +1721,7 @@ void sub_80BF3A4(void) struct TVShowRecentHappenings *recentHappenings; sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings; sub_80EB6FC(recentHappenings->var04, 6); @@ -1733,7 +1733,7 @@ void sub_80BF3DC(void) struct TVShowFanclubOpinions *fanclubOpinions; sub_80BF25C(TVSHOW_PKMN_FAN_CLUB_OPINIONS); - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); @@ -1745,7 +1745,7 @@ void sub_80BF3DC(void) void sub_80BF46C(void) { - gScriptResult = 1; + gSpecialVar_Result = 1; } void sub_80BF478(void) @@ -1758,7 +1758,7 @@ void sub_80BF484(void) struct TVShowBravoTrainerPokemonProfiles *bravoTrainer; sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { bravoTrainer = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer; sub_80EB6FC(bravoTrainer->var04, 2); @@ -1770,7 +1770,7 @@ void sub_80BF4BC(void) struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower; sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower; sub_80EB6FC(bravoTrainerTower->var18, 1); // wrong struct ident, fix later @@ -1898,9 +1898,9 @@ void sub_80BF6D8(void) gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); gSpecialVar_0x8006 = gUnknown_03005D38.var0; if (gUnknown_03005D38.var0 == -1) - gScriptResult = 1; + gSpecialVar_Result = 1; else - gScriptResult = 0; + gSpecialVar_Result = 0; } s8 sub_80BF720(TVShow tvShow[]) @@ -2095,9 +2095,9 @@ void sub_80BFAE0(void) void sub_80BFB10(void) { if (GetPlayerTrainerId() == GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_OT_ID, 0)) - gScriptResult = 0; + gSpecialVar_Result = 0; else - gScriptResult = 1; + gSpecialVar_Result = 1; } u8 sub_80BFB54(u8 arg0) @@ -2869,7 +2869,7 @@ void DoTVShowBravoTrainerPokemonProfile(void) struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainer; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch(state) { @@ -2940,7 +2940,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void) struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainerTower; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch(state) { @@ -3029,7 +3029,7 @@ void DoTVShowTodaysSmartShopper(void) struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gSpecialVar_0x8004].smartshopperShow; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch(state) { @@ -3117,7 +3117,7 @@ void DoTVShowTheNameRaterShow(void) struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004].nameRaterShow; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3213,7 +3213,7 @@ void DoTVShowPokemonTodaySuccessfulCapture(void) struct TVShowPokemonToday *pokemonToday = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonToday; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3282,7 +3282,7 @@ void DoTVShowPokemonTodayFailedCapture(void) struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonTodayFailed; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3327,7 +3327,7 @@ void DoTVShowPokemonFanClubLetter(void) u8 state; u16 rval; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3379,7 +3379,7 @@ void DoTVShowRecentHappenings(void) struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gSpecialVar_0x8004].recentHappenings; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3413,7 +3413,7 @@ void DoTVShowPokemonFanClubOpinions(void) struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gSpecialVar_0x8004].fanclubOpinions; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3459,7 +3459,7 @@ void DoTVShowInSearchOfTrainers(void) { u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3501,7 +3501,7 @@ void DoTVShowInSearchOfTrainers(void) EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); - gScriptResult = 1; + gSpecialVar_Result = 1; gUnknown_020387E8 = 0;; TakeTVShowInSearchOfTrainersOffTheAir(); break; @@ -3514,7 +3514,7 @@ void DoTVShowPokemonAngler(void) struct TVShowPokemonAngler *pokemonAngler = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonAngler; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; if (pokemonAngler->var02 < pokemonAngler->var03) gUnknown_020387E8 = 0; else @@ -3543,7 +3543,7 @@ void DoTVShowTheWorldOfMasters(void) struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[gSpecialVar_0x8004].worldOfMasters; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3571,7 +3571,7 @@ void DoTVShowTheWorldOfMasters(void) void TVShowDone(void) { - gScriptResult = 1; + gSpecialVar_Result = 1; gUnknown_020387E8 = 0; gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0; } diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 8155b4216..7253ac901 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -105,7 +105,7 @@ EWRAM_DATA u8 gPokeblockMonID = 0; EWRAM_DATA s16 gPokeblockGain = 0; extern u16 gKeyRepeatStartDelay; -extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock +extern u16 gSpecialVar_ItemId; // FIXME: remove after merge of #349 Pokeblock static void launch_c3_walk_stairs_and_run_once(void (*const)(void)); static void sub_81361E4(void); @@ -574,7 +574,7 @@ static void sub_81369CC(void) case 5: if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8136D00()) { - PokeblockClearIfExists((u8)gScriptItemId); + PokeblockClearIfExists((u8)gSpecialVar_ItemId); launch_c3_walk_stairs_and_run_once(sub_8136B44); } break; diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index cc4468728..4bf83cad8 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -3695,7 +3695,7 @@ const u16 gRoute119WaterTileData[] = 0x5C, 0x8B, 0x12A, }; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u8 S_RepelWoreOff[]; EWRAM_DATA static u8 sWildEncountersDisabled = 0; @@ -4167,18 +4167,18 @@ void ScrSpecial_RockSmashWildEncounter(void) if (wildPokemonInfo == NULL) { - gScriptResult = 0; + gSpecialVar_Result = 0; return; } else if (DoWildEncounterTest(wildPokemonInfo->encounterRate, 1) == TRUE && GenerateWildMon(wildPokemonInfo, 2, TRUE) == TRUE) { BattleSetup_StartWildBattle(); - gScriptResult = 1; + gSpecialVar_Result = 1; return; } } - gScriptResult = 0; + gSpecialVar_Result = 0; return; } diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c index 389c4bb25..8e3adda12 100644 --- a/src/pokemon/pokeblock_feed.c +++ b/src/pokemon/pokeblock_feed.c @@ -645,7 +645,7 @@ static bool8 sub_8147B20(struct Pokemon* mon) ewram1FFFF++; break; case 5: - SetPokeblockFeedSpritePal(gScriptItemId); + SetPokeblockFeedSpritePal(gSpecialVar_ItemId); LoadCompressedObjectPalette(&sPokeblockFeedSpritePal); ewram1FFFF++; break; @@ -722,7 +722,7 @@ static void Task_WaitForAtePokeblockText(u8 taskID) static void Task_PrintAtePokeblockText(u8 taskID) { struct Pokemon* mon = &gPlayerParty[gPokeblockMonID]; - struct Pokeblock* pokeblock = &gSaveBlock1.pokeblocks[gScriptItemId]; + struct Pokeblock* pokeblock = &gSaveBlock1.pokeblocks[gSpecialVar_ItemId]; gPokeblockGain = PokeblockGetGain(GetNature(mon), pokeblock); GetMonNickname(mon, gStringVar1); diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index f6f5e24e7..d2a5197a0 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -435,7 +435,7 @@ static void sub_808A1E0(u8 taskID) static void sub_808A228(u8 taskID) { - if (ItemIsMail(gScriptItemId) && gUnknown_0202E8F4 != 0) + if (ItemIsMail(gSpecialVar_ItemId) && gUnknown_0202E8F4 != 0) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskID].func = sub_808A180; @@ -451,7 +451,7 @@ static void sub_808A228(u8 taskID) static void sub_808A2AC(u8 taskID) { if (!gPaletteFade.active) - PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808A228); + PartyMenuTryGiveMonHeldItem(taskID, gSpecialVar_ItemId, sub_808A228); } static void sub_808A2DC(u8 taskID) @@ -463,7 +463,7 @@ static void sub_808A2DC(u8 taskID) static void sub_808A330(u8 taskID) { - PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808A2DC); + PartyMenuTryGiveMonHeldItem(taskID, gSpecialVar_ItemId, sub_808A2DC); } static void sub_808A34C(void) @@ -507,7 +507,7 @@ static void sub_808A3A4(void) void sub_808A3F8(void) { - if (ItemIsMail(gScriptItemId)) + if (ItemIsMail(gSpecialVar_ItemId)) { u8 taskID = CreateTask(sub_808A330, 0); gPaletteFade.bufferTransferDisabled = 1; @@ -523,7 +523,7 @@ void sub_808A3F8(void) DestroyTask(taskID); } gPaletteFade.bufferTransferDisabled = 1; - if (gScriptItemId) + if (gSpecialVar_ItemId) { SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0xFF, sub_808A2AC, 0xFF); SetMainCallback2(sub_808A358); @@ -554,7 +554,7 @@ static void sub_808A4D4(void) void sub_808A520(void) { gPaletteFade.bufferTransferDisabled = 1; - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { if (gUnknown_0202E8F8) RemoveBagItem(gUnknown_0202E8F8, 1); @@ -572,7 +572,7 @@ static void sub_808A5BC(u8 taskID) { if (!gPaletteFade.active) { - DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gScriptItemId, 0); + DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gSpecialVar_ItemId, 0); gTasks[taskID].func = sub_808A1E0; } } @@ -915,7 +915,7 @@ static bool8 SetUpFieldMove_Waterfall(void) static void sub_808AE8C(void) { u8 i; - u8 arg = gScriptItemId - 33; + u8 arg = gSpecialVar_ItemId - 33; for (i = 0; i < 6; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) @@ -923,7 +923,7 @@ static void sub_808AE8C(void) sub_806D668(i); if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg)) sub_806BC3C(i, 0x9A); - else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gScriptItemId))) + else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gSpecialVar_ItemId))) sub_806BC3C(i, 0xA8); else sub_806BC3C(i, 0x8C); @@ -938,7 +938,7 @@ static void sub_808AF20(void) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) { - if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !GetEvolutionTargetSpecies(&gPlayerParty[i], 3, gScriptItemId)) + if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !GetEvolutionTargetSpecies(&gPlayerParty[i], 3, gSpecialVar_ItemId)) { sub_806D668(i); sub_806BC3C(i, 0); @@ -955,7 +955,7 @@ static void sub_808AF80(void) { if (gUnknown_02038561 == 0) { - switch (CheckIfItemIsTMHMOrEvolutionStone(gScriptItemId)) + switch (CheckIfItemIsTMHMOrEvolutionStone(gSpecialVar_ItemId)) { case 1: sub_808AE8C(); @@ -983,7 +983,7 @@ void sub_808B020(void) switch (gUnknown_02038561) { case 0: - if (CheckIfItemIsTMHMOrEvolutionStone(gScriptItemId) == 1) + if (CheckIfItemIsTMHMOrEvolutionStone(gSpecialVar_ItemId) == 1) SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B0C0, 20); else SetPartyMenuSettings(PARTY_MENU_TYPE_STANDARD, 0, sub_808B0C0, 3); @@ -1013,11 +1013,11 @@ void sub_808B0C0(u8 taskID) { sub_806D5A4(); if (gUnknown_02038561 == 0) - gUnknown_03004AE4(taskID, gScriptItemId, sub_808B224); + gUnknown_03004AE4(taskID, gSpecialVar_ItemId, sub_808B224); if (gUnknown_02038561 == 1) { PlaySE(SE_SELECT); - PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808B2EC); + PartyMenuTryGiveMonHeldItem(taskID, gSpecialVar_ItemId, sub_808B2EC); } if (gUnknown_02038561 == 3) { @@ -1042,7 +1042,7 @@ void sub_808B0C0(u8 taskID) static void sub_808B1EC(u8 taskID) { if (!gPaletteFade.active) - gUnknown_03004AE4(taskID, gScriptItemId, sub_808B224); + gUnknown_03004AE4(taskID, gSpecialVar_ItemId, sub_808B224); } static void sub_808B224(u8 taskID) @@ -1120,7 +1120,7 @@ static void sub_808B3EC(void) IntrCallback callback; gPaletteFade.bufferTransferDisabled = 1; - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { if (gUnknown_0202E8F8) RemoveBagItem(gUnknown_0202E8F8, 1); @@ -1143,7 +1143,7 @@ static void sub_808B4A4(u8 taskID) { if (!gPaletteFade.active) { - DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gScriptItemId, 1); + DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gSpecialVar_ItemId, 1); gTasks[taskID].func = sub_808B4EC; } } diff --git a/src/pokemon/pokemon_size_record.c b/src/pokemon/pokemon_size_record.c index 2ab289416..f92a95bfb 100644 --- a/src/pokemon/pokemon_size_record.c +++ b/src/pokemon/pokemon_size_record.c @@ -15,7 +15,7 @@ struct UnknownStruct u16 unk4; }; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; static const struct UnknownStruct sBigMonSizeTable[] = { @@ -104,13 +104,13 @@ static void FormatMonSizeRecord(u8 *string, u32 size) static u8 CompareMonSize(u16 species, u16 *sizeRecord) { - if (gScriptResult == 0xFF) + if (gSpecialVar_Result == 0xFF) { return 0; } else { - struct Pokemon *pkmn = &gPlayerParty[gScriptResult]; + struct Pokemon *pkmn = &gPlayerParty[gSpecialVar_Result]; // UB: Too few arguments for function 'GetMonData' if (GetMonData(pkmn, MON_DATA_IS_EGG) == TRUE || GetMonData(pkmn, MON_DATA_SPECIES) != species) @@ -169,7 +169,7 @@ void CompareShroomishSize(void) { u16 *sizeRecord = GetVarPointer(VAR_SHROOMISH_SIZE_RECORD); - gScriptResult = CompareMonSize(SPECIES_SHROOMISH, sizeRecord); + gSpecialVar_Result = CompareMonSize(SPECIES_SHROOMISH, sizeRecord); } void InitBarboachSizeRecord(void) @@ -188,7 +188,7 @@ void CompareBarboachSize(void) { u16 *sizeRecord = GetVarPointer(VAR_BARBOACH_SIZE_RECORD); - gScriptResult = CompareMonSize(SPECIES_BARBOACH, sizeRecord); + gSpecialVar_Result = CompareMonSize(SPECIES_BARBOACH, sizeRecord); } void GiveGiftRibbonToParty(u8 index, u8 ribbonId) diff --git a/src/rom6.c b/src/rom6.c index c25f0f9f5..e71484b0a 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -13,7 +13,7 @@ #include "sprite.h" #include "task.h" -extern u16 gScriptLastTalked; +extern u16 gSpecialVar_LastTalked; extern void (*gFieldCallback)(void); extern u8 gLastFieldPokeMenuOpened; extern void (*gUnknown_03005CE4)(void); @@ -43,7 +43,7 @@ bool8 npc_before_player_of_type(u8 a) } else { - gScriptLastTalked = gMapObjects[mapObjId].localId; + gSpecialVar_LastTalked = gMapObjects[mapObjId].localId; return TRUE; } } diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 47ed314a8..d147d11ce 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -208,7 +208,7 @@ extern void de_sub_8073110(); extern struct MusicPlayerInfo gMPlay_SE2; extern struct MusicPlayerInfo gMPlay_BGM; -extern u16 gScriptItemId; +extern u16 gSpecialVar_ItemId; extern u8 gUnknown_020297ED; extern u8 byte_3002A68; @@ -1192,7 +1192,7 @@ static void sub_804E9F8(void) case 8: gBerryBlenderData->field_0++; gBerryBlenderData->field_13C = 0; - Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId); + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gSpecialVar_ItemId); memcpy(gBlockSendBuffer, &gBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry)); sub_80084A4(); gBerryBlenderData->framesToWait = 0; @@ -1438,9 +1438,9 @@ static void sub_804F378(void) { case 0: sub_804F0F4(); - Blender_SetBankBerryData(0, gScriptItemId); - Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId); - sub_804F1BC(gScriptItemId, gBerryBlenderData->playersNo, &gBerryBlenderData->blendedBerries[0]); + Blender_SetBankBerryData(0, gSpecialVar_ItemId); + Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gSpecialVar_ItemId); + sub_804F1BC(gSpecialVar_ItemId, gBerryBlenderData->playersNo, &gBerryBlenderData->blendedBerries[0]); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { gBerryBlenderData->field_70[i] = 0; @@ -3431,7 +3431,7 @@ static bool8 Blender_PrintBlendingResults(void) Blender_PrintMadePokeblockString(&pokeblock, gBerryBlenderData->stringVar); CreateTask(sub_8052BD0, 6); MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15); - RemoveBagItem(gScriptItemId, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); sub_810CA34(&pokeblock); gBerryBlenderData->field_0++; break; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 9d1aaa125..3ac2dc7a7 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -38,9 +38,9 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; -extern u16 gScriptContestCategory; -extern u16 gScriptContestRank; -extern u16 gScriptResult; +extern u16 gSpecialVar_ContestCategory; +extern u16 gSpecialVar_ContestRank; +extern u16 gSpecialVar_Result; extern u32 gUnknown_03005D28; @@ -91,7 +91,7 @@ void sub_80C4C78(void) u16 var; u16 returnVar; - switch(gScriptContestCategory) + switch(gSpecialVar_ContestCategory) { case 0: var = 8; @@ -127,7 +127,7 @@ void sub_80C4CEC(void) void sub_80C4CF8(void) { if(!gUnknown_02038690[gContestPlayerMonIndex] - && gScriptContestRank == 3 + && gSpecialVar_ContestRank == 3 && (s16)gUnknown_02038678[gContestPlayerMonIndex] >= 800) { gSpecialVar_0x8004 = 1; @@ -388,7 +388,7 @@ bool8 GiveMonArtistRibbon(void) if(ribbon == FALSE && gUnknown_02038690[gContestPlayerMonIndex] == 0 - && gScriptContestRank == 3 + && gSpecialVar_ContestRank == 3 && (s16)gUnknown_02038678[gContestPlayerMonIndex] >= 800) { ribbon = TRUE; @@ -488,9 +488,9 @@ void sub_80C5190(u8 taskId) void ScriptGetMultiplayerId(void) { if(gIsLinkContest & 1) - gScriptResult = GetMultiplayerId(); + gSpecialVar_Result = GetMultiplayerId(); else - gScriptResult = 4; + gSpecialVar_Result = 4; } void ScriptRandom(void) @@ -502,11 +502,11 @@ void ScriptRandom(void) { gUnknown_03005D28 = 1103515245 * gUnknown_03005D28 + 24691; random = gUnknown_03005D28 >> 16; - scriptPtr = &gScriptResult; + scriptPtr = &gSpecialVar_Result; } else { - scriptPtr = &gScriptResult; + scriptPtr = &gSpecialVar_Result; random = Random(); } *scriptPtr = random % *scriptPtr; @@ -587,13 +587,13 @@ void CheckForAlivePartyMons(void) switch(var) { case 1: - gScriptResult = var; + gSpecialVar_Result = var; break; case 0: - gScriptResult = var; + gSpecialVar_Result = var; break; case 2: - gScriptResult = var; + gSpecialVar_Result = var; break; } } @@ -657,10 +657,10 @@ void sub_80C5580(void) switch(var) { case 0: - gScriptResult = 0; + gSpecialVar_Result = 0; break; default: - gScriptResult = 1; + gSpecialVar_Result = 1; break; } @@ -681,11 +681,11 @@ void SetBattleTowerPlayerParty(void) { case 0: // player quit battle tower? LoadPlayerParty(); - gScriptResult = 0; + gSpecialVar_Result = 0; break; default: // load battle tower. ReducePlayerPartyToThree(); - gScriptResult = 1; + gSpecialVar_Result = 1; break; } diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index aed11bb7e..33e7620f7 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -23,7 +23,7 @@ extern u8 gPlayerPartyCount; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u8 gUnknown_02038694; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern void (*gFieldCallback)(void); @@ -281,11 +281,11 @@ void ScrSpecial_CountPokemonMoves(void) // count pokemon moves { u8 i; - gScriptResult = 0; + gSpecialVar_Result = 0; for (i = 0; i < 4; i++) // checks MOVE1-MOVE4 if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + i)) - gScriptResult++; + gSpecialVar_Result++; } void ScrSpecial_GetPokemonNicknameAndMoveName(void) @@ -437,8 +437,8 @@ void sub_80FA0DC(void) void sub_80FA148(void) { struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004]; - gScriptResult = 0; + gSpecialVar_Result = 0; if (GetMonData(party, MON_DATA_IS_EGG)) - gScriptResult = 1; + gSpecialVar_Result = 1; } -- cgit v1.2.3 From cb4bb3fbd53b92efebaa27a0cdf4f763d58a9488 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 21 Dec 2017 18:32:44 -0600 Subject: decompile sub_80B1118 - sub_80B1EA8 --- src/contest.c | 647 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 605 insertions(+), 42 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 94369b87e..9ffe5e20e 100644 --- a/src/contest.c +++ b/src/contest.c @@ -52,7 +52,7 @@ struct Shared19204 /*0x19204*/ u8 unk19204; /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; - /*0x1920A*/ u16 unk1920A_0:1; + /*0x1920A*/ u16 unk1920A_0:1; // Task active flags? u16 unk1920A_1:1; u16 unk1920A_2:1; u16 unk1920A_3:1; @@ -70,14 +70,14 @@ struct Shared19204 /*0x19213*/ u8 filler19213; /*0x19214*/ u8 unk19214; /*0x19215*/ u8 unk19215; - /*0x19216*/ u8 unk19216; + /*0x19216*/ u8 unk19216; // sprite ID /*0x19217*/ s8 unk19217; /*0x19218*/ u8 unk19218[4]; /*0x1921C*/ u32 unk1921C; u16 unk19220[2][4]; // unknown length u8 filler19230[0x48-0x30]; u8 unk19248[5][4]; - u8 unk1925C; + u8 unk1925C; // sprite ID /*0x1925D*/ u8 unk1925D; /*0x1925E*/ u8 unk1925E; /*0x1925F*/ u8 filler1925F; @@ -86,29 +86,29 @@ struct Shared19204 #define static_assert(expr) \ typedef char ____[(expr) ? 1 : -1] -static_assert(offsetof(struct Shared19204, filler19230) == 0x19230 - 0x19204); - + // Appeal, maybe struct UnknownContestStruct1 { - u16 unk0; - s16 unk2; // s16? + s16 unk0; + s16 unk2; s16 unk4; - u16 unk6; // move - u16 unk8; + u16 unk6; // move 1 + u16 unk8; // move 2 u8 unkA; // contest category u8 unkB_0:2; - u8 unkB_2:5; + u8 unkB_2:2; + u8 unkB_4:3; u8 unkB_7:1; u8 unkC_0:1; u8 unkC_1:2; s8 unkD; u8 unkE; u8 unkF; - u8 unk10_0:1; // * - u8 unk10_1:1; // * + u8 unk10_0:1; + u8 unk10_1:1; u8 unk10_2:1; u8 unk10_3:1; - u8 unk10_4:2; // * + u8 unk10_4:2; u8 unk10_6:2; u8 unk11_0:2; u8 unk11_2:1; @@ -117,7 +117,7 @@ struct UnknownContestStruct1 u8 unk11_5:1; u8 unk12; u8 unk13; - u8 unk14; // s8? + u8 unk14; u8 unk15_0:1; u8 unk15_1:1; u8 unk15_2:1; @@ -130,7 +130,7 @@ struct UnknownContestStruct1 u8 unk18; u8 unk19; u8 unk1A; - u8 filler1B; + u8 unk1B; }; struct UnknownContestStruct3 @@ -155,14 +155,25 @@ struct UnknownContestStruct4 struct UnknownContestStruct5 { - u16 bits_0:8; - u16 bits_8:1; - u16 bits_9:3; - u16 bits_C:4; + s8 bits_0; // excitement? + u8 bits_8:1; + u8 bits_9:3; + u8 bits_C:4; s8 unk2; u8 filler3; }; +struct UnknownContestStruct7 +{ + u8 unk0[4]; + u16 unk4; + u16 unk6; + u8 filler8[0xD-8]; + u8 unkD[4]; + u8 unk11; + u8 filler12[2]; +}; + #if 0 struct Shared19260 { @@ -178,13 +189,17 @@ struct Shared19260 #endif #define shared15800 (gSharedMem + 0x15800) +#define shared16800 (gSharedMem + 0x16800) #define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000)) #define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) //#define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) +#define shared18004 ((u16 *)(gSharedMem + 0x18004)) + // These are separate structs because sub_80AC2CC requires that to match. #define shared19260_ ((struct UnknownContestStruct1 *)(gSharedMem + 0x19260)) #define shared192D0 (gSharedMem + 0x192D0) +#define shared192D0_ (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0)) #define shared192E4 (gSharedMem + 0x192E4) #define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328)) #define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338)) @@ -279,7 +294,14 @@ extern const u8 gUnknown_083CC0E3[]; extern const u8 gUnknown_083CC103[]; extern const u8 gUnknown_083CC14A[]; extern const u8 gUnknown_083CC16E[]; +extern const u8 *const gUnknown_083CC188[]; +extern const u8 gUnknown_083CC280[]; +extern const u8 gUnknown_083CC288[]; +extern const u8 gUnknown_083CC290[]; +extern const u8 gUnknown_083CC299[]; +extern const u8 gUnknown_083CC2A3[]; extern const u8 *const gUnknown_083CC2D8[]; +extern const u8 gUnknown_083CC2EC[]; extern const u8 *const gUnknown_083CC330[]; extern const u8 gUnknownText_UnknownFormatting2[]; extern const u8 gUnknownText_UnknownFormatting3[]; @@ -288,7 +310,8 @@ extern const u8 gUnknown_083CC5A2[]; extern const u16 gUnknown_083CC5A4[]; extern const u8 gUnknownText_MissedTurn[]; extern const u8 gUnknownText_LinkStandbyAndWinner[]; - +extern void (*const gContestEffectFuncs[])(void); +extern const s8 gContestExcitementTable[][5]; void sub_80AB350(void); void sub_80AB5D4(u8); @@ -380,7 +403,7 @@ void sub_80AFF60(struct Sprite *); void sub_80AFFE0(bool8); void sub_80B0034(void); void sub_80B00C8(void); -void nullsub_18(int); +void nullsub_18(s8); void sub_80B0238(struct Sprite *); void sub_80B0280(struct Sprite *); void sub_80B02A8(struct Sprite *); @@ -406,14 +429,21 @@ void sub_80B1118(void); void sub_80B114C(u8); void sub_80B146C(u8, u8); void sub_80B159C(void); -void sub_80B1710(); +void sub_80B1710(u8); void sub_80B1928(void); s8 contest_get_move_excitement(u16); +u8 sub_80B1A2C(void); +void c3_08130B10(u8); void sub_80B1B14(void); +void sub_80B1B68(u8); void sub_80B1BDC(void); -void sub_80B1CBC(); +void sub_80B1C34(u8); +void sub_80B1CBC(s8); +void sub_80B1CFC(u8); void sub_80B1DDC(void); +void sub_80B1DFC(u8); void sub_80B1EA8(s8, s8); +void sub_80B1F4C(u8); void sub_80B1FD0(); void sub_80B20C4(void); u8 sub_80B214C(u8); @@ -524,7 +554,8 @@ void sub_80AB398(void) shared19260_[i].unk13 = 0xFF; shared19260_[i].unk14 = 0xFF; } - memset(shared192D0, 0, 20 * sizeof(*shared192D0)); + //memset(shared192D0, 0, 20 * sizeof(*shared192D0)); + memset(&shared192D0_, 0, sizeof(shared192D0_)); memset(shared192E4, 0, 0x44 * sizeof(*shared192E4)); memset(&shared19328, 0, sizeof(shared19328)); memset(shared19338, 0, 4 * sizeof(*shared19338)); @@ -1077,7 +1108,7 @@ void sub_80AC2CC(u8 taskId) { case 0: sub_80B0D7C(); - for (r6 = 0; shared19204.unk19214 != shared192D0[r6]; r6++) + for (r6 = 0; shared19204.unk19214 != shared192D0_.unk0[r6]; r6++) ; shared19204.unk19215 = r6; r7 = shared19204.unk19215; @@ -1492,7 +1523,7 @@ void sub_80AC2CC(u8 taskId) StringExpandPlaceholders(gStringVar4, gUnknown_083CC075); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[10] = 0; - sub_80B1710(); + sub_80B1710(0); gTasks[taskId].data[0] = 46; } else @@ -2569,13 +2600,13 @@ void sub_80AEBEC(u16 a) FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 11, 31, 16, 34); category = gContestMoves[a].contestCategory; - if (category == 0) + if (category == CONTEST_CATEGORY_COOL) categoryTile = 0x4040; - else if (category == 1) + else if (category == CONTEST_CATEGORY_BEAUTY) categoryTile = 0x4045; - else if (category == 2) + else if (category == CONTEST_CATEGORY_CUTE) categoryTile = 0x404A; - else if (category == 3) + else if (category == CONTEST_CATEGORY_SMART) categoryTile = 0x406A; else categoryTile = 0x408A; @@ -3515,7 +3546,7 @@ void sub_80B00C8(void) shared19204.unk1925C = spriteId; } -void nullsub_18(int unused) +void nullsub_18(s8 unused) { } @@ -4451,22 +4482,19 @@ void sub_80B0F28(u8 a) if (a == 0) { - for (i = 0; i < 4; i++) //_080B0F9C + for (i = 0; i < 4; i++) { gUnknown_02038696[i] = i; - for (r4 = 0; r4 < i; r4++) //_080B0FC4 + for (r4 = 0; r4 < i; r4++) { if (gUnknown_02038670[gUnknown_02038696[r4]] < gUnknown_02038670[i] || (gUnknown_02038670[gUnknown_02038696[r4]] == gUnknown_02038670[i] && sp4[gUnknown_02038696[r4]] < sp4[i])) { - //_080B0FEC for (r2 = i; r2 > r4; r2--) gUnknown_02038696[r2] = gUnknown_02038696[r2 - 1]; - //_080B1004 gUnknown_02038696[r4] = i; break; } - //_080B1010 } if (r4 == i) gUnknown_02038696[i] = i; @@ -4475,11 +4503,8 @@ void sub_80B0F28(u8 a) for (i = 0; i < 4; i++) gUnknown_02038696[sp0[i]] = i; } - //_080B1050 else { - //u8 r2; - memset(sp0, 0xFF, sizeof(sp0)); for (i = 0; i < 4; i++) { @@ -4491,14 +4516,12 @@ void sub_80B0F28(u8 a) if (*ptr == 0xFF) { *ptr = i; - //sp0[r2] = i; gUnknown_02038696[i] = r2; break; } r2++; } } - //_080B1098 for (i = 0; i < 3; i++) { for (r4 = 3; r4 > i; r4--) @@ -4512,8 +4535,548 @@ void sub_80B0F28(u8 a) gUnknown_02038696[r4] = gUnknown_02038696[r4 - 1]; gUnknown_02038696[r4 - 1] = temp; } - //_080B10F0 } } } } + +void sub_80B1118(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + //LoadPalette(shared18000.unk18004[5 + i], (gUnknown_02038696[i] + 5) * 16, 32); + LoadPalette(shared18004 + (i + 5) * 16, (gUnknown_02038696[i] + 5) * 16, 32); + } + sub_80AE514(); +} + +void sub_80B114C(u8 a) +{ + bool8 r8; + s32 i; + + shared19260_[a].unk2 = 0; + shared19260_[a].unk0 = 0; + r8 = sub_80AF404(a); + if (r8) + { + u16 r0 = shared19260_[a].unk6; + u8 effect = gContestMoves[r0].effect; + u8 rnd; + + shared19260_[a].unkA = gContestMoves[shared19260_[a].unk6].contestCategory; + if (shared19260_[a].unk6 == shared19260_[a].unk8 && shared19260_[a].unk6 != 0) + { + shared19260_[a].unk15_0 = 1; + shared19260_[a].unkB_4++; + } + else + { + shared19260_[a].unkB_4 = 0; + } + shared19260_[a].unk0 = gContestEffects[effect].appeal; + shared19260_[a].unk2 = gContestEffects[effect].appeal; + shared192D0_.unk4 = gContestEffects[effect].jam; + shared192D0_.unk6 = gContestEffects[effect].jam; + shared192D0_.unk11 = a; + for (i = 0; i < 4; i++) + { + shared19260_[i].unkE = 0; + shared192D0_.unkD[i] = 0; + } + if (shared19260_[a].unk15_4 && !AreMovesContestCombo(shared19260_[a].unk8, shared19260_[a].unk6)) + shared19260_[a].unk15_4 = 0; + gContestEffectFuncs[effect](); + if (shared19260_[a].unk10_4 == 1) + shared19260_[a].unk2 += shared19260_[a].unkD - 10; + else if (shared19260_[a].unk11_5) + shared19260_[a].unk2 += shared19260_[a].unkD * 3; + else + shared19260_[a].unk2 += shared19260_[a].unkD; + shared19260_[a].unk16 = 0; + shared19260_[a].unk15_6 = 0; + if (sub_80B214C(a) != 0) + { + bool8 r2 = AreMovesContestCombo(shared19260_[a].unk8, shared19260_[a].unk6); + + if (r2 && shared19260_[a].unk15_4) + { + shared19260_[a].unk16 = r2; + shared19260_[a].unk15_6 = 1; + shared19260_[a].unk15_4 = 0; + shared19260_[a].unk17 = shared19260_[a].unk0 * shared19260_[a].unk16; + shared19260_[a].unk15_3 = 1; + } + else + { + if (gContestMoves[shared19260_[a].unk6].comboStarterId != 0) + { + shared19260_[a].unk15_4 = 1; + shared19260_[a].unk15_6 = 1; + } + else + { + shared19260_[a].unk15_4 = 0; + } + } + } + if (shared19260_[a].unk15_0) + shared19260_[a].unk18 = (shared19260_[a].unkB_4 + 1) * 10; + if (shared19260_[a].unkC_0) + { + shared19260_[a].unk15_4 = 0; + shared19260_[a].unk2 = 0; + shared19260_[a].unk0 = 0; + } + shared19328.bits_0 = contest_get_move_excitement(shared19260_[a].unk6); + if (shared19260_[a].unk11_4) + shared19328.bits_0 = 1; + if (shared19328.bits_0 > 0) + { + if (shared19204.unk19217 + shared19328.bits_0 > 4) + shared19328.unk2 = 60; + else + shared19328.unk2 = 10; + } + else + { + shared19328.unk2 = 0; + } + + rnd = Random() % 3; + for (i = 0; i < 4; i++) + { + if (i != a) + { + if (rnd == 0) + break; + rnd--; + } + } + shared19260_[a].unk1B = i; + } +} + +void sub_80B13EC(u8 a, u8 b) +{ + shared19260_[a].unk13 = b; +} + +void sub_80B1404(u8 a, u8 b) +{ + shared19260_[a].unk14 = b; +} + +void sub_80B141C(u8 a, u8 b) +{ + if (b >= 60) + sub_80B13EC(a, 53); + else if (b >= 40) + sub_80B13EC(a, 52); + else if (b >= 30) + sub_80B13EC(a, 51); + else if (b >= 20) + sub_80B13EC(a, 50); + else if (b >= 10) + sub_80B13EC(a, 49); +} + +void sub_80B146C(u8 a, u8 b) +{ + StringCopy(gStringVar1, gContestMons[a].nickname); + StringCopy(gStringVar2, gMoveNames[shared19260_[a].unk6]); + if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_COOL) + StringCopy(gStringVar3, gUnknown_083CC280); + else if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_BEAUTY) + StringCopy(gStringVar3, gUnknown_083CC288); + else if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_CUTE) + StringCopy(gStringVar3, gUnknown_083CC290); + else if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_SMART) + StringCopy(gStringVar3, gUnknown_083CC299); + else + StringCopy(gStringVar3, gUnknown_083CC2A3); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC188[b]); + sub_80AF138(); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); +} + +void sub_80B157C(u8 a) +{ + shared19260_[a].unkC_0 = 1; + shared19260_[a].unk6 = 0; +} + +void sub_80B159C(void) +{ + u8 r12 = 0; + s32 i; + s32 j; + u8 sp0[4]; + u8 sp4[4]; + + for (i = 0; i < 4; i++) + { + sp0[i] = gUnknown_02038696[i]; + sp4[i] = 0; + } + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 4; j++) + { + if (shared19260_[j].unk19 == i) + { + sp0[j] = i; + sp4[j] = 1; + break; + } + } + if (j == 4) + { + for (j = 0; j < 4; j++) + { + if (sp4[j] == 0 && shared19260_[j].unk19 == 0xFF) + { + r12 = j; + j++; + break; + } + } + for (; j < 4; j++) + { + if (sp4[j] == 0 && shared19260_[j].unk19 == 0xFF + && gUnknown_02038696[r12] > gUnknown_02038696[j]) + r12 = j; + } + sp0[r12] = i; + sp4[r12] = 1; + } + } + + for (i = 0; i < 4; i++) + { + shared192D0_.unk0[i] = sp0[i]; + shared19260_[i].unk19 = 0xFF; + shared19260_[i].unk10_6 = 0; + gUnknown_02038696[i] = sp0[i]; + } +} + +void sub_80B16D0(struct Sprite *sprite) +{ + if (sprite->data[1]++ > 84) + { + sprite->data[1] = 0; + sprite->invisible = TRUE; + sprite->callback = SpriteCallbackDummy; + shared19204.unk1920A_4 = 0; + } +} + +void sub_80B1710(u8 a) +{ + u8 spriteId = shared19204.unk19216; + + switch (a) + { + case 0: + case 1: + gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0]; + PlaySE(SE_HAZURE); + break; + case 2: + gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 4; + PlaySE(SE_SEIKAI); + break; + case 3: + gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 8; + PlaySE(SE_SEIKAI); + break; + case 4: + gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 12; + PlaySE(SE_TK_WARPIN); + break; + case 5: // exactly the same as case 4 + gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 12; + PlaySE(SE_TK_WARPIN); + break; + case 6: + gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 16; + PlaySE(SE_TK_WARPIN); + break; + case 8: + gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 24; + PlaySE(SE_W215); + break; + case 7: + default: + gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 20; + PlaySE(SE_TK_WARPIN); + break; + } + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].invisible = FALSE; + gSprites[spriteId].callback = sub_80B16D0; + shared19204.unk1920A_4 = 1; +} + +void sub_80B1928(void) +{ + s32 i; + + for (i = 0; i < 5; i++) + { + const u8 *src; + + if (i < shared19204.unk19217) + src = gContestApplauseMeterGfx + 64; + else + src = gContestApplauseMeterGfx; + CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[shared19204.unk1925C].oam.tileNum + 17 + i) * 32), 32); + CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[shared19204.unk1925C].oam.tileNum + 25 + i) * 32), 32); + if (shared19204.unk19217 > 4) + sub_80B1A2C(); + } +} + +void unref_sub_80B19D0(void) +{ + u8 str[20]; + StringCopy(str, gUnknown_083CC2EC); + sub_8003460(&gUnknown_03004210, str, 680, 0, 0); +} + +s8 contest_get_move_excitement(u16 move) +{ + return gContestExcitementTable[gScriptContestCategory][gContestMoves[move].contestCategory]; +} + +u8 sub_80B1A2C(void) +{ + u8 taskId = CreateTask(c3_08130B10, 10); + + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x0ABE2); + return taskId; +} + +void c3_08130B10(u8 taskId) +{ + if (++gTasks[taskId].data[0] == 1) + { + gTasks[taskId].data[0] = 0; + if (gTasks[taskId].data[3] == 0) + gTasks[taskId].data[4]++; + else + gTasks[taskId].data[4]--; + BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], 0x7FFF); + if (gTasks[taskId].data[4] == 0 || gTasks[taskId].data[4] == 16) + { + gTasks[taskId].data[3] ^= 1; + if (shared19204.unk19217 <= 4) + { + BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, 31); + DestroyTask(taskId); + } + } + } +} + +void sub_80B1B14(void) +{ + CreateTask(sub_80B1B68, 10); + gSprites[shared19204.unk1925C].pos2.x = -70; + gSprites[shared19204.unk1925C].invisible = FALSE; + shared19204.unk1920A_6 = 1; +} + +void sub_80B1B68(u8 taskId) +{ + struct Sprite *sprite = &gSprites[shared19204.unk1925C]; + + gTasks[taskId].data[10] += 1664; + sprite->pos2.x += gTasks[taskId].data[10] >> 8; + gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF; + if (sprite->pos2.x > 0) + sprite->pos2.x = 0; + if (sprite->pos2.x == 0) + { + shared19204.unk1920A_6 = 0; + DestroyTask(taskId); + } +} + +void sub_80B1BDC(void) +{ + if (gSprites[shared19204.unk1925C].invisible == TRUE) + { + shared19204.unk1920A_6 = 0; + } + else + { + CreateTask(sub_80B1C34, 10); + gSprites[shared19204.unk1925C].pos2.x = 0; + shared19204.unk1920A_6 = 1; + } +} + +void sub_80B1C34(u8 taskId) +{ + struct Sprite *sprite = &gSprites[shared19204.unk1925C]; + + gTasks[taskId].data[10] += 1664; + sprite->pos2.x -= gTasks[taskId].data[10] >> 8; + gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF; + if (sprite->pos2.x < -70) + sprite->pos2.x = -70; + if (sprite->pos2.x == -70) + { + sprite->invisible = TRUE; + shared19204.unk1920A_6 = 0; + DestroyTask(taskId); + } +} + +void sub_80B1CBC(s8 a) +{ + u8 taskId = CreateTask(sub_80B1CFC, 5); + + gTasks[taskId].data[0] = a; + shared19204.unk1920A_5 = 1; +} + +void sub_80B1CFC(u8 taskId) +{ + switch (gTasks[taskId].data[10]) + { + case 0: + sub_80B1B14(); + gTasks[taskId].data[10]++; + break; + case 1: + if (!shared19204.unk1920A_6) + { + nullsub_18(gTasks[taskId].data[0]); + gTasks[taskId].data[10]++; + } + break; + case 2: + if (gTasks[taskId].data[11]++ > 20) + { + gTasks[taskId].data[11] = 0; + sub_80B1928(); + shared19204.unk1920A_5 = 0; + DestroyTask(taskId); + } + break; + } +} + +void unref_sub_80B1D84(void) +{ + gSprites[shared19204.unk1925C].pos2.x = 0; + gSprites[shared19204.unk1925C].invisible = FALSE; +} + +void unref_sub_80B1DB8(void) +{ + gSprites[shared19204.unk1925C].invisible = TRUE; +} + +void sub_80B1DDC(void) +{ + CreateTask(sub_80B1DFC, 15); + shared19204.unk1920A_7 = 1; +} + +void sub_80B1DFC(u8 taskId) +{ + if (gTasks[taskId].data[10]++ > 6) + { + register struct Task *task asm("r0"); + register u32 r4 asm("r4") = taskId * 4; + + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[10] = 0; + if (gTasks[taskId].data[11] == 0) + { + { + void *src = shared16800; + void *dest = (void *)(VRAM + 0x2000); + u32 size = 0x1000; + DmaCopy32(3, src, dest, size); + } + } + else + { + { + void *src = shared15800; + void *dest = (void *)(VRAM + 0x2000); + u32 size = 0x1000; + DmaCopy32(3, src, dest, size); + } + gTasks[taskId].data[12]++; + } + + // Why won't this match the normal way? + asm("add %0, %1, #0\n\t" + "add %0, %3\n\t" + "lsl %0, #3\n\t" + "add %0, %2\n\t" + : "=r"(task):"r"(r4),"r"(gTasks),"r"(taskId)); + + //gTasks[taskId].data[11] ^= 1; + task->data[11] ^= 1; + + //if (gTasks[taskId].data[12] == 9) + if (task->data[12] == 9) + { + shared19204.unk1920A_7 = 0; + DestroyTask(taskId); + } + } +} + +void sub_80B1EA8(s8 a, s8 b) +{ + u8 taskId = CreateTask(sub_80B1F4C, 10); + u16 r7; + u8 r5; + u8 r3; + + if (a > 0) + { + r7 = 0x237E; + if (b > 0) + { + r5 = 0; + r3 = shared19204.unk19217 * 3; + } + else + { + r5 = shared19204.unk19217 * 3; + r3 = 0; + } + } + else + { + r7 = 0; + if (b > 0) + { + r5 = 0; + r3 = 12; + } + else + { + r5 = 12; + r3 = 0; + } + } + gTasks[taskId].data[0] = r7; + gTasks[taskId].data[1] = r5; + gTasks[taskId].data[2] = b; + gTasks[taskId].data[3] = r3; + shared19204.unk1920B_0 = 0; +} -- cgit v1.2.3 From 71d3e605290b2069d3571478a3736b04d658decb Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 22 Dec 2017 00:22:48 -0600 Subject: save work --- src/battle/reshow_battle_screen.c | 10 +- src/contest.c | 566 +++++++++++++++++++++++++++++++++++--- src/scene/new_game.c | 3 +- 3 files changed, 539 insertions(+), 40 deletions(-) (limited to 'src') diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 14f465352..03b5660fe 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -198,15 +198,9 @@ static void CB2_ReshowBattleScreenAfterMenu(void) static void sub_807B06C(void) { - struct BGCntrlBitfield *regBgcnt1, *regBgcnt2; - sub_800D6D4(); - - regBgcnt1 = (void*)(®_BG1CNT); - regBgcnt1->charBaseBlock = 0; - - regBgcnt2 = (void*)(®_BG2CNT); - regBgcnt2->charBaseBlock = 0; + ((vBgCnt *)®_BG1CNT)->charBaseBlock = 0; + ((vBgCnt *)®_BG2CNT)->charBaseBlock = 0; } static bool8 LoadAppropiateBankSprite(u8 bank) diff --git a/src/contest.c b/src/contest.c index 9ffe5e20e..210d09548 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3,6 +3,7 @@ #include "constants/map_objects.h" #include "constants/songs.h" #include "constants/species.h" +#include "battle.h" #include "battle_anim.h" #include "blend_palette.h" #include "contest.h" @@ -128,14 +129,15 @@ struct UnknownContestStruct1 u8 unk16; u8 unk17; u8 unk18; - u8 unk19; + u8 unk19; // turn number u8 unk1A; u8 unk1B; }; struct UnknownContestStruct3 { - u8 filler0[2]; + u8 unk0; + u8 unk1; //u8 unk2_0:1; //u8 unk2_1:1; u8 unk2; // maybe a bitfield @@ -145,8 +147,8 @@ struct UnknownContestStruct3 // possibly the same as UnknownContestStruct3? struct UnknownContestStruct4 { - u8 unk0; - u8 unk1; + u8 unk0; // sprite ID + u8 unk1; // sprite ID u8 unk2_0:1; u8 unk2_1:1; u8 unk2_2:1; @@ -174,6 +176,18 @@ struct UnknownContestStruct7 u8 filler12[2]; }; +struct UnknownContestStruct8 +{ + u16 unk0; + u16 unk2; + u8 unk4_0:1; + u8 unk5; + u8 filler6[2]; + u32 unk8; + u32 unkC; + u32 unk10; +}; + #if 0 struct Shared19260 { @@ -189,6 +203,7 @@ struct Shared19260 #endif #define shared15800 (gSharedMem + 0x15800) +#define shared15DE0 (*(struct ContestWinner *)(gSharedMem + 0x15DE0)) #define shared16800 (gSharedMem + 0x16800) #define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000)) #define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) @@ -198,12 +213,13 @@ struct Shared19260 // These are separate structs because sub_80AC2CC requires that to match. #define shared19260_ ((struct UnknownContestStruct1 *)(gSharedMem + 0x19260)) -#define shared192D0 (gSharedMem + 0x192D0) +//#define shared192D0 (gSharedMem + 0x192D0) #define shared192D0_ (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0)) #define shared192E4 (gSharedMem + 0x192E4) #define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328)) #define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338)) -#define shared19348 ((struct UnknownContestStruct3 *)(gSharedMem + 0x19348)) +//#define shared19348 ((struct UnknownContestStruct3 *)(gSharedMem + 0x19348)) +#define shared19348_ (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348)) struct UnknownContestStruct6 { @@ -444,20 +460,27 @@ void sub_80B1DDC(void); void sub_80B1DFC(u8); void sub_80B1EA8(s8, s8); void sub_80B1F4C(u8); -void sub_80B1FD0(); +void sub_80B1FD0(bool8); +const u8 *sub_80B208C(u8); void sub_80B20C4(void); -u8 sub_80B214C(u8); +bool8 sub_80B214C(u8); void sub_80B2184(void); void sub_80B2280(void); void sub_80B237C(u8); -void sub_80B25E4(); -u16 sub_80B2760(); +void sub_80B23BC(u8); +void sub_80B2400(u8); +void sub_80B253C(u8); +void sub_80B25A4(u8); +void sub_80B25E4(u8); +void sub_80B26C8(u8); +u16 sub_80B2760(u16); u16 sub_80B2778(u16); -void sub_80B2790(); -void sub_80B28CC(); -void sub_80B28F0(); +void sub_80B2790(u8); +void sub_80B28CC(int); +void sub_80B28F0(u8); void sub_80B292C(void); -void sub_80B29B4(); +void sub_80B2968(void); +void sub_80B29B4(u16); void nullsub_89(u8 taskId) @@ -469,6 +492,7 @@ void ResetLinkContestBoolean(void) gIsLinkContest = FALSE; } +// Contest_ResetGpuRegs void sub_80AB1BC(void) { u16 savedIme; @@ -539,6 +563,7 @@ void sub_80AB350(void) FillPalette(0x7E3F, 0xF3, 2); } +// ClearContestVars void sub_80AB398(void) { s32 i; @@ -569,6 +594,7 @@ void sub_80AB398(void) sub_80B159C(); } +// CB2_StartContest void sub_80AB47C(void) { switch (gMain.state) @@ -906,7 +932,7 @@ void sub_80ABCDC(u8 taskId) u8 *r5 = sp8; if (shared19260_[gContestPlayerMonIndex].unk8 != 0 - && sub_80B214C(gContestPlayerMonIndex) != 0 + && sub_80B214C(gContestPlayerMonIndex) && AreMovesContestCombo(shared19260_[gContestPlayerMonIndex].unk8, r4) && shared19260_[gContestPlayerMonIndex].unk15_4) { @@ -1151,7 +1177,7 @@ void sub_80AC2CC(u8 taskId) case 3: for (r6 = 0; r6 < 4; r6++) gBattleMonForms[r6] = 0; - memset(shared19348, 0, 20); + memset(&shared19348_, 0, sizeof(shared19348_)); sub_80B28F0(shared19204.unk19215); spriteId = sub_80AE9FC( gContestMons[shared19204.unk19215].species, @@ -1297,7 +1323,7 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 47; return; case 47: - sub_80B1FD0(1); + sub_80B1FD0(TRUE); gTasks[taskId].data[0] = 12; return; case 12: @@ -1876,7 +1902,7 @@ void sub_80AD960(u8 taskId) void sub_80ADA1C(u8 taskId) { - sub_80B1FD0(0); + sub_80B1FD0(FALSE); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; gTasks[taskId].func = sub_80ADA4C; @@ -2761,7 +2787,7 @@ void sub_80AEF50(void) } } -u16 sub_80AEFE8(int unused, u8 b) +u16 sub_80AEFE8(u8 unused, u8 b) { u16 var = 0; @@ -3724,6 +3750,7 @@ void sub_80B0588(void) sub_80B05A4(i); } +// TODO: Try to write this better void sub_80B05A4(u8 a) { u32 var; @@ -4459,6 +4486,7 @@ void unref_sub_80B0EE8(s32 *a, s32 b) } } +// something to do with contest NPC opponents, I think. void sub_80B0F28(u8 a) { u8 sp0[4]; @@ -4597,7 +4625,7 @@ void sub_80B114C(u8 a) shared19260_[a].unk2 += shared19260_[a].unkD; shared19260_[a].unk16 = 0; shared19260_[a].unk15_6 = 0; - if (sub_80B214C(a) != 0) + if (sub_80B214C(a)) { bool8 r2 = AreMovesContestCombo(shared19260_[a].unk8, shared19260_[a].unk6); @@ -4998,7 +5026,6 @@ void sub_80B1DFC(u8 taskId) register struct Task *task asm("r0"); register u32 r4 asm("r4") = taskId * 4; - gTasks[taskId].data[10] = 0; gTasks[taskId].data[10] = 0; if (gTasks[taskId].data[11] == 0) { @@ -5039,44 +5066,521 @@ void sub_80B1DFC(u8 taskId) } } +#define tBlendColor data[0] +#define tBlendCoeff data[1] + void sub_80B1EA8(s8 a, s8 b) { u8 taskId = CreateTask(sub_80B1F4C, 10); - u16 r7; - u8 r5; + u16 blendColor; + u8 blendCoeff; u8 r3; if (a > 0) { - r7 = 0x237E; + blendColor = RGB(30, 27, 8); if (b > 0) { - r5 = 0; + blendCoeff = 0; r3 = shared19204.unk19217 * 3; } else { - r5 = shared19204.unk19217 * 3; + blendCoeff = shared19204.unk19217 * 3; r3 = 0; } } else { - r7 = 0; + blendColor = 0; if (b > 0) { - r5 = 0; + blendCoeff = 0; r3 = 12; } else { - r5 = 12; + blendCoeff = 12; r3 = 0; } } - gTasks[taskId].data[0] = r7; - gTasks[taskId].data[1] = r5; + gTasks[taskId].tBlendColor = blendColor; + gTasks[taskId].tBlendCoeff = blendCoeff; gTasks[taskId].data[2] = b; gTasks[taskId].data[3] = r3; shared19204.unk1920B_0 = 0; } + +void sub_80B1F4C(u8 taskId) +{ + if (gTasks[taskId].data[10]++ >= 0) + { + gTasks[taskId].data[10] = 0; + if (gTasks[taskId].data[2] > 0) + gTasks[taskId].tBlendCoeff++; + else + gTasks[taskId].tBlendCoeff--; + BlendPalette(17, 1, gTasks[taskId].tBlendCoeff, gTasks[taskId].tBlendColor); + BlendPalette(26, 1, gTasks[taskId].tBlendCoeff, gTasks[taskId].tBlendColor); + if (gTasks[taskId].tBlendCoeff == gTasks[taskId].data[3]) + { + DestroyTask(taskId); + shared19204.unk1920B_0 = 0; + } + } +} + +#undef tBlendColor +#undef tBlendCoeff + +void sub_80B1FD0(bool8 a) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (shared19260_[i].unk10_6 != 0 && a) + { + CpuCopy32( + sub_80B208C(i), + (void *)(VRAM + 0x10000 + (gSprites[shared19338[i].unk1].oam.tileNum + 5) * 32), + 64); + gSprites[shared19338[i].unk1].pos1.y = gUnknown_083CA33C[gUnknown_02038696[i]]; + gSprites[shared19338[i].unk1].invisible = FALSE; + } + else + { + gSprites[shared19338[i].unk1].invisible = TRUE; + } + } +} + +// GetTurnNumberGfx +const u8 *sub_80B208C(u8 a) +{ + if (shared19260_[a].unk10_6 != 1) + return gContestNextTurnRandomGfx; + else + return gContestNextTurnNumbersGfx + shared19260_[a].unk19 * 64; +} + +void sub_80B20C4(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (shared192D0_.unkD[i] != 0 && !sub_80AF59C(i)) + { + u8 r4 = gUnknown_02038696[i] * 5 + 2; + u16 r0 = sub_80AEFE8(i, 3); + + *(u16 *)(VRAM + 0xC000 + r4 * 64 + 0x28) = r0; + *(u16 *)(VRAM + 0xC000 + r4 * 64 + 0x2A) = r0 + 1; + *(u16 *)(VRAM + 0xC000 + (r4 + 1) * 64 + 0x28) = r0 + 16; + *(u16 *)(VRAM + 0xC000 + (r4 + 1) * 64 + 0x2A) = r0 + 17; + PlaySE(SE_C_PASI); + } + } +} + +bool8 sub_80B214C(u8 a) +{ + if (shared19260_[a].unk15_0 || shared19260_[a].unkC_0) + return FALSE; + else + return TRUE; +} + +void sub_80B2184(void) +{ + s32 i; + + ((vBgCnt *)®_BG1CNT)->priority = 0; + ((vBgCnt *)®_BG1CNT)->screenSize = 1; + ((vBgCnt *)®_BG1CNT)->areaOverflowMode = 0; + + gUnknown_030042C0 = DISPLAY_WIDTH; + gUnknown_030041B4 = DISPLAY_HEIGHT; + REG_BG1HOFS = DISPLAY_WIDTH; + REG_BG1VOFS = DISPLAY_HEIGHT; + + DmaClear32(3, (void *)(VRAM + 0xF000), 0x1000); + LZDecompressVram(gUnknown_08D17C3C, (void *)(VRAM + 0xF000)); + + ((vBgCnt *)®_BG1CNT)->charBaseBlock = 0; + + for (i = 0; i < 4; i++) + { + gSprites[shared19338[i].unk0].oam.priority = 1; + gSprites[shared19338[i].unk1].oam.priority = 1; + } + + ((vBgCnt *)®_BG2CNT)->priority = 1; + ((vBgCnt *)®_BG0CNT)->priority = 1; + ((vBgCnt *)®_BG1CNT)->screenSize = 2; +} + +void sub_80B2280(void) +{ + s32 i; + + DmaClearLarge32(3, (void *)(VRAM + 0x8000), 0x2000, 0x1000); + DmaClear32(3, (void *)(VRAM + 0xF000), 0x1000); + + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + + ((vBgCnt *)®_BG1CNT)->priority = 1; + ((vBgCnt *)®_BG1CNT)->screenSize = 0; + ((vBgCnt *)®_BG1CNT)->areaOverflowMode = 0; + ((vBgCnt *)®_BG1CNT)->charBaseBlock = 2; + + for (i = 0; i < 4; i++) + { + gSprites[shared19338[i].unk0].oam.priority = 0; + gSprites[shared19338[i].unk1].oam.priority = 0; + } +} + +void sub_80B237C(u8 taskId) +{ + gUnknown_030042C0 = 0; + gUnknown_030041B4 = DISPLAY_HEIGHT; + PlaySE12WithPanning(SE_C_MAKU_D, 0); + gTasks[taskId].func = sub_80B23BC; +} + +void sub_80B23BC(u8 taskId) +{ + gUnknown_030041B4 -= 7; + if (gUnknown_030041B4 < 0) + gUnknown_030041B4 = 0; + if (*(u16 *)&gUnknown_030041B4 == 0) // Why cast? + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80B2400; + } +} + +void sub_80B2400(u8 taskId) +{ + s32 i; + + switch (gTasks[taskId].data[0]) + { + case 0: + for (i = 0; i < 4; i++) + shared19204.unk19218[i] = gUnknown_02038696[i]; + sub_80AFA5C(); + sub_80B0588(); + sub_80AEF50(); + sub_80B1118(); + sub_80B1FD0(TRUE); + sub_80AFFA0(); + gTasks[taskId].data[0] = 1; + break; + case 1: + if (gIsLinkContest & 1) + { + u8 taskId2; + + shared19204.unk1920B_2 = 1; + if (sub_80AE074()) + sub_80AF438(); + taskId2 = CreateTask(sub_80C8C80, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); + sub_80AF860(); + gTasks[taskId].data[0] = 2; + } + else + { + sub_80AF438(); + gTasks[taskId].data[0] = 3; + } + break; + case 2: + if (!shared19204.unk1920B_2) + gTasks[taskId].data[0] = 3; + break; + case 3: + sub_80AF120(); + sub_80AEB30(); + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80B253C; + break; + } +} + +void sub_80B2508(u8 taskId) +{ + gUnknown_030041B4 += 7; + if (gUnknown_030041B4 > DISPLAY_HEIGHT) + gTasks[taskId].func = sub_80ADCDC; +} + +void sub_80B253C(u8 taskId) +{ + if (gTasks[taskId].data[2] < 10) + { + gTasks[taskId].data[2]++; + } + else + { + if (gTasks[taskId].data[1] == 0) + { + if (gTasks[taskId].data[0] == 16) + gTasks[taskId].data[1]++; + else + gTasks[taskId].data[0]++; + } + else + { + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80B25A4; + } + else + { + gTasks[taskId].data[0]--; + } + } + } +} + +void sub_80B25A4(u8 taskId) +{ + if (gTasks[taskId].data[2] < 10) + { + gTasks[taskId].data[2]++; + } + else + { + gTasks[taskId].data[2] = 0; + PlaySE12WithPanning(SE_C_MAKU_U, 0); + gTasks[taskId].func = sub_80B2508; + } +} + +void sub_80B25E4(u8 a) +{ + s32 i; + u8 taskId; + + for (i = 0; i < 4; i++) + { + gSprites[shared19338[i].unk0].oam.matrixNum = AllocOamMatrix(); + gSprites[shared19338[i].unk0].oam.affineMode = 1; + StartSpriteAffineAnim(&gSprites[shared19338[i].unk0], a); + if (a == 2) + { + AnimateSprite(&gSprites[shared19338[i].unk0]); + gSprites[shared19338[i].unk0].invisible = FALSE; + } + } + taskId = CreateTask(sub_80B26C8, 5); + gTasks[taskId].data[0] = a; + shared19204.unk1920B_1 = 1; +} + +void sub_80B26C8(u8 taskId) +{ + s32 i; + + if (gSprites[shared19338[0].unk0].affineAnimEnded) + { + if ((u8)gTasks[taskId].data[0] == 1) + { + for (i = 0; i < 4; i++) + gSprites[shared19338[i].unk0].invisible = TRUE; + } + for (i = 0; i < 4; i++) + FreeSpriteOamMatrix(&gSprites[shared19338[i].unk0]); + shared19204.unk1920B_1 = 0; + DestroyTask(taskId); + } +} + +// SanitizeMove +u16 sub_80B2760(u16 a) +{ + if (a > 354) + a = 1; + return a; +} + +// SanitizeSpecies +u16 sub_80B2778(u16 species) +{ + if (species >= NUM_SPECIES) + species = SPECIES_NONE; + return species; +} + +void sub_80B2790(u8 a) +{ + s32 i; + u16 r5 = sub_80B2760(shared19260_[a].unk6); + u16 r7 = sub_80B2778(gContestMons[a].species); + u8 r5_2; + + memset(&shared19348_, 0, sizeof(shared19348_)); + battle_anim_clear_some_data(); + for (i = 0; i < 4; i++) + gBattleMonForms[i] = 0; + switch (r5) + { + case 0xAE: + if (gBaseStats[r7].type1 == 7 || gBaseStats[r7].type2 == 7) + gUnknown_0202F7C4 = 0; + else + gUnknown_0202F7C4 = 1; + break; + case 0x90: + case 0x110: + r5_2 = shared19260_[a].unk1B; + shared19348_.unk2 = sub_80B2778(gContestMons[r5_2].species); + shared19348_.unk10 = gContestMons[r5_2].personality; + shared19348_.unk4_0 = 1; + break; + case 0xD8: + gHappinessMoveAnim = 0xFF; + break; + case 0xDA: + gHappinessMoveAnim = 0; + break; + case 0x4C: + case 0xD: + case 0x82: + case 0x8F: + if (shared19204.unk1925E == 0) + { + shared19204.unk1925E = 2; + gUnknown_0202F7C4 = 0; + } + else + { + gUnknown_0202F7C4 = 1; + } + break; + } + sub_80B2968(); +} + +void sub_80B28CC(int unused) +{ + memset(&shared19348_, 0, sizeof(shared19348_)); + if (shared19204.unk1925E != 0) + shared19204.unk1925E--; +} + +void sub_80B28F0(u8 a) +{ + shared19348_.unk5 = a; + shared19348_.unk0 = sub_80B2778(gContestMons[a].species); + shared19348_.unk8 = gContestMons[a].personality; + shared19348_.unkC = gContestMons[a].otId; +} + +void sub_80B292C(void) +{ + gObjectBankIDs[3] = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); + InitSpriteAffineAnim(&gSprites[gObjectBankIDs[gBankTarget]]); + sub_80B2968(); +} + +void sub_80B2968(void) +{ + struct Sprite *sprite = &gSprites[gObjectBankIDs[3]]; + + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->pos1.x = sub_8077ABC(3, 0); + sprite->pos1.y = sub_8077ABC(3, 1); + sprite->invisible = TRUE; +} + +void sub_80B29B4(u16 a) +{ + switch (gBattleMoves[a].target) + { + case F_TARGET_UNK2: + case F_TARGET_USER: + gBankTarget = 2; + break; + case F_TARGET_SELECTED_POKEMON: + case F_TARGET_RANDOM: + case F_TARGET_BOTH_ENEMIES: + case F_TARGET_ALL_EXCEPT_USER: + default: + gBankTarget = 3; + break; + } +} + +// SaveContestWinner +bool8 sub_80B2A7C(u8 a) +{ + s32 i; + u8 r7 = Random() % 3; + + for (i = 0; i < 3; i++) + { + if (gUnknown_02038690[i] == 0) + break; + } + if (a == 0xFF && i != gContestPlayerMonIndex) + return FALSE; + //_080B2AD0 + switch (gScriptContestCategory) + { + case 0: + r7 += 0; + break; + case 1: + r7 += 3; + break; + case 2: + r7 += 6; + break; + case 3: + r7 += 9; + break; + case 4: + r7 += 12; + break; + } + //_080B2B16 + if (a != 0xFE) + { + u8 r4 = sub_80B2C4C(a, 1); + + gSaveBlock1.contestWinners[r4].personality = gContestMons[i].personality; + gSaveBlock1.contestWinners[r4].species = gContestMons[i].species; + gSaveBlock1.contestWinners[r4].otId = gContestMons[i].otId; + StringCopy(gSaveBlock1.contestWinners[r4].nickname, gContestMons[i].nickname); + StringCopy(gSaveBlock1.contestWinners[r4].trainerName, gContestMons[i].trainerName); + if (a != 0xFF) + gSaveBlock1.contestWinners[r4].contestCategory = gScriptContestCategory; + else + gSaveBlock1.contestWinners[r4].contestCategory = r7; + } + //_080B2BC4 + else + { + shared15DE0.personality = gContestMons[i].personality; + shared15DE0.otId = gContestMons[i].otId; + shared15DE0.unk8 = gContestMons[i].species; + StringCopy(shared15DE0.nickname, gContestMons[i].nickname); + if (gIsLinkContest & 1) + StringCopy(shared15DE0.trainerName, gLinkPlayers[i].name); + else + StringCopy(shared15DE0.trainerName, gContestMons[i].trainerName); + shared15DE0.contestCategory = r7; + } + return TRUE; +} diff --git a/src/scene/new_game.c b/src/scene/new_game.c index ee042a0de..e3d6996ac 100644 --- a/src/scene/new_game.c +++ b/src/scene/new_game.c @@ -89,7 +89,8 @@ void sub_8052DA8(void) sub_80B2D1C(); for (i = 0; i < 5; i++) - gSaveBlock1.sbStruct.unkSB1.sb1_2EFC_struct[i] = gUnknown_08216604; + gSaveBlock1.contestWinners[i] = gUnknown_08216604; + //gSaveBlock1.sbStruct.unkSB1.sb1_2EFC_struct[i] = gUnknown_08216604; } void ZeroBattleTowerData(void) -- cgit v1.2.3 From 2415720ea6760217355f286da83b9955c881bf1b Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 22 Dec 2017 00:57:31 -0600 Subject: fix 0x2DFC in SaveBlock1 --- src/contest.c | 2 +- src/scene/new_game.c | 14 +++++--------- src/script_pokemon_util_80C4BF0.c | 4 ++-- 3 files changed, 8 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 210d09548..cd7efee7a 100644 --- a/src/contest.c +++ b/src/contest.c @@ -5574,7 +5574,7 @@ bool8 sub_80B2A7C(u8 a) { shared15DE0.personality = gContestMons[i].personality; shared15DE0.otId = gContestMons[i].otId; - shared15DE0.unk8 = gContestMons[i].species; + shared15DE0.species = gContestMons[i].species; StringCopy(shared15DE0.nickname, gContestMons[i].nickname); if (gIsLinkContest & 1) StringCopy(shared15DE0.trainerName, gLinkPlayers[i].name); diff --git a/src/scene/new_game.c b/src/scene/new_game.c index e3d6996ac..98ef0853d 100644 --- a/src/scene/new_game.c +++ b/src/scene/new_game.c @@ -24,6 +24,7 @@ #include "rtc.h" #include "script.h" #include "secret_base.h" +#include "text.h" #include "tv.h" EWRAM_DATA u8 gDifferentSaveFile = 0; @@ -35,14 +36,10 @@ extern u16 gSaveFileStatus; extern u8 gUnknown_0819FA81[]; -const struct SB1_2EFC_Struct gUnknown_08216604 = +static const struct ContestWinner sEmptyContestWinner = { - 0x0000, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } + .nickname = {EOS}, + .trainerName = {EOS}, }; void write_word_to_mem(u32 var, u8 *dataPtr) @@ -89,8 +86,7 @@ void sub_8052DA8(void) sub_80B2D1C(); for (i = 0; i < 5; i++) - gSaveBlock1.contestWinners[i] = gUnknown_08216604; - //gSaveBlock1.sbStruct.unkSB1.sb1_2EFC_struct[i] = gUnknown_08216604; + gSaveBlock1.contestWinners[8 + i] = sEmptyContestWinner; } void ZeroBattleTowerData(void) diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index dc48adc9b..1128e386d 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -111,7 +111,7 @@ void sub_80C4C78(void) break; } - returnVar = gSaveBlock1.sbStruct.unkSB2.sb1_2EFC_struct2[var].var; + returnVar = gSaveBlock1.contestWinners[var].species; if(returnVar == 0) gSpecialVar_0x8004 = returnVar; @@ -144,7 +144,7 @@ u8 sub_80C4D50(void) int i; for (i = 0; i < 5; i++) - if (gSaveBlock1.sbStruct.unkSB2.sb1_2EFC_struct2[i + 8].var) + if (gSaveBlock1.contestWinners[i + 8].species != 0) retVar++; return retVar; -- cgit v1.2.3 From d108f8dbe7f5fb08557d9ea82a0a9710532cac54 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 22 Dec 2017 01:57:16 -0600 Subject: finish decompiling contest.s --- src/contest.c | 53 ++++++++++++++++++++++++++++++++++++--- src/scene/new_game.c | 4 +-- src/script_pokemon_util_80C4BF0.c | 2 +- 3 files changed, 53 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index cd7efee7a..a712edf8a 100644 --- a/src/contest.c +++ b/src/contest.c @@ -324,6 +324,7 @@ extern const u8 gUnknownText_UnknownFormatting3[]; extern const u8 gUnknown_083CC59C[]; extern const u8 gUnknown_083CC5A2[]; extern const u16 gUnknown_083CC5A4[]; +extern const struct ContestWinner gUnknown_083CC5D0[]; extern const u8 gUnknownText_MissedTurn[]; extern const u8 gUnknownText_LinkStandbyAndWinner[]; extern void (*const gContestEffectFuncs[])(void); @@ -5535,7 +5536,6 @@ bool8 sub_80B2A7C(u8 a) } if (a == 0xFF && i != gContestPlayerMonIndex) return FALSE; - //_080B2AD0 switch (gScriptContestCategory) { case 0: @@ -5554,7 +5554,6 @@ bool8 sub_80B2A7C(u8 a) r7 += 12; break; } - //_080B2B16 if (a != 0xFE) { u8 r4 = sub_80B2C4C(a, 1); @@ -5569,7 +5568,6 @@ bool8 sub_80B2A7C(u8 a) else gSaveBlock1.contestWinners[r4].contestCategory = r7; } - //_080B2BC4 else { shared15DE0.personality = gContestMons[i].personality; @@ -5584,3 +5582,52 @@ bool8 sub_80B2A7C(u8 a) } return TRUE; } + +u8 sub_80B2C4C(u8 a, u8 b) +{ + s32 i; + + switch (a) + { + case 0: + case 1: + return a; + case 2: + if (b != 0) + { + for (i = 4; i >= 3; i--) + memcpy(&gSaveBlock1.contestWinners[i], &gSaveBlock1.contestWinners[i - 1], sizeof(struct ContestWinner)); + } + return 2; + case 3: + if (b != 0) + { + for (i = 7; i >= 6; i--) + memcpy(&gSaveBlock1.contestWinners[i], &gSaveBlock1.contestWinners[i - 1], sizeof(struct ContestWinner)); + } + return 5; + default: + switch (gScriptContestCategory) + { + case 0: + return 8; + case 1: + return 9; + case 2: + return 10; + case 3: + return 11; + case 4: + default: + return 12; + } + } +} + +void sub_80B2D1C(void) +{ + s32 i; + + for (i = 0; i < 8; i++) + gSaveBlock1.contestWinners[i] = gUnknown_083CC5D0[i]; +} diff --git a/src/scene/new_game.c b/src/scene/new_game.c index 98ef0853d..1a3d40e0c 100644 --- a/src/scene/new_game.c +++ b/src/scene/new_game.c @@ -36,7 +36,7 @@ extern u16 gSaveFileStatus; extern u8 gUnknown_0819FA81[]; -static const struct ContestWinner sEmptyContestWinner = +static const struct ContestWinner sEmptyMuseumPortrait = { .nickname = {EOS}, .trainerName = {EOS}, @@ -86,7 +86,7 @@ void sub_8052DA8(void) sub_80B2D1C(); for (i = 0; i < 5; i++) - gSaveBlock1.contestWinners[8 + i] = sEmptyContestWinner; + gSaveBlock1.museumPortraits[i] = sEmptyMuseumPortrait; } void ZeroBattleTowerData(void) diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 1128e386d..c555a88bf 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -144,7 +144,7 @@ u8 sub_80C4D50(void) int i; for (i = 0; i < 5; i++) - if (gSaveBlock1.contestWinners[i + 8].species != 0) + if (gSaveBlock1.museumPortraits[i].species != 0) retVar++; return retVar; -- cgit v1.2.3 From ce74d72c31a3ebda26adc6ae888700213f64b113 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 22 Dec 2017 14:19:09 -0600 Subject: label and clean up some things in contest.c --- src/contest.c | 463 ++++++++++++++++++----------------------- src/debug/matsuda_debug_menu.c | 10 +- src/scene/new_game.c | 6 +- 3 files changed, 210 insertions(+), 269 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index a712edf8a..6eb684526 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1,6 +1,7 @@ #include "global.h" #include "constants/items.h" #include "constants/map_objects.h" +#include "constants/moves.h" #include "constants/songs.h" #include "constants/species.h" #include "battle.h" @@ -50,9 +51,9 @@ struct Shared18000 struct Shared19204 { - /*0x19204*/ u8 unk19204; - /*0x19205*/ u8 unk19205; - /*0x19206*/ u8 unk19206[4]; + /*0x19204*/ u8 playerMoveChoice; + /*0x19205*/ u8 turnNumber; + /*0x19206*/ u8 unk19206[4]; // seems to only be used by an unref function /*0x1920A*/ u16 unk1920A_0:1; // Task active flags? u16 unk1920A_1:1; u16 unk1920A_2:1; @@ -64,7 +65,7 @@ struct Shared19204 /*0x1920B*/ u16 unk1920B_0:1; u16 unk1920B_1:1; u16 unk1920B_2:1; - /*0x1920C*/ u8 unk1920C; + /*0x1920C*/ u8 mainTaskId; /*0x1920D*/ u8 unk1920D[4]; /*0x19211*/ u8 unk19211; /*0x19212*/ u8 unk19212; @@ -74,27 +75,22 @@ struct Shared19204 /*0x19216*/ u8 unk19216; // sprite ID /*0x19217*/ s8 unk19217; /*0x19218*/ u8 unk19218[4]; - /*0x1921C*/ u32 unk1921C; - u16 unk19220[2][4]; // unknown length - u8 filler19230[0x48-0x30]; - u8 unk19248[5][4]; - u8 unk1925C; // sprite ID + /*0x1921C*/ u32 unk1921C; // saved RNG value? + u16 unk19220[5][4]; + u8 unk19248[5][4]; // excitement history + u8 applauseMeterSpriteId; // sprite ID /*0x1925D*/ u8 unk1925D; /*0x1925E*/ u8 unk1925E; - /*0x1925F*/ u8 filler1925F; }; -#define static_assert(expr) \ - typedef char ____[(expr) ? 1 : -1] - // Appeal, maybe struct UnknownContestStruct1 { s16 unk0; s16 unk2; s16 unk4; - u16 unk6; // move 1 - u16 unk8; // move 2 + u16 currMove; // move 1 + u16 prevMove; // move 2 u8 unkA; // contest category u8 unkB_0:2; u8 unkB_2:2; @@ -130,7 +126,7 @@ struct UnknownContestStruct1 u8 unk17; u8 unk18; u8 unk19; // turn number - u8 unk1A; + u8 unk1A; // stand out amount - attention level u8 unk1B; }; @@ -188,47 +184,27 @@ struct UnknownContestStruct8 u32 unk10; }; -#if 0 -struct Shared19260 -{ - /*0x19260*/ struct UnknownContestStruct1 unk19260[4]; - /*0x192D0*/ u8 unk192D0[0x14]; - /*0x192E4*/ u8 unk192E4[0x44]; - ///*0x19328*/ u8 unk19328[4]; - /*0x19328*/ struct UnknownContestStruct5 unk19328; - /*0x1932C*/ u8 filler1932C[0x38-0x2C]; - /*0x19338*/ struct UnknownContestStruct4 unk19338[4]; - /*0x19348*/ struct UnknownContestStruct3 unk19348[5]; +struct UnknownContestStruct6 +{ + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; }; -#endif #define shared15800 (gSharedMem + 0x15800) #define shared15DE0 (*(struct ContestWinner *)(gSharedMem + 0x15DE0)) #define shared16800 (gSharedMem + 0x16800) #define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000)) -#define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) -//#define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) - #define shared18004 ((u16 *)(gSharedMem + 0x18004)) - -// These are separate structs because sub_80AC2CC requires that to match. +#define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) #define shared19260_ ((struct UnknownContestStruct1 *)(gSharedMem + 0x19260)) -//#define shared192D0 (gSharedMem + 0x192D0) #define shared192D0_ (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0)) #define shared192E4 (gSharedMem + 0x192E4) #define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328)) #define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338)) -//#define shared19348 ((struct UnknownContestStruct3 *)(gSharedMem + 0x19348)) #define shared19348_ (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348)) -struct UnknownContestStruct6 -{ - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; -}; - extern struct MusicPlayerInfo gMPlay_SE1; extern u16 gScriptContestCategory; extern u16 gScriptContestRank; @@ -267,7 +243,6 @@ extern u8 gUnknown_02038690[]; extern struct SpriteTemplate gUnknown_02024E8C; -#define gContestOpponents gUnknown_083C9408 extern const struct ContestPokemon gContestOpponents[60]; extern const u8 gUnknown_083CA308[][2]; extern const u8 gUnknown_083CA310[][2]; @@ -275,9 +250,7 @@ extern const u8 gUnknown_083CA318[][2]; extern const u8 gUnknown_083CA330[][2]; extern const u8 gUnknown_083CA338[]; extern const u8 gUnknown_083CA33C[]; -extern const struct CompressedSpriteSheet gUnknown_083CC3AC; -extern const struct CompressedSpritePalette gUnknown_083CC3B4[]; -extern const struct SpriteTemplate gSpriteTemplate_83CC454[]; +extern const u8 gUnknown_083CA340[][4]; extern const struct SpriteSheet gUnknown_083CA350; extern const struct SpriteTemplate gSpriteTemplate_83CA3AC; extern const struct CompressedSpriteSheet gUnknown_083CA3C4[]; @@ -292,8 +265,11 @@ extern const struct CompressedSpriteSheet gUnknown_083CA4BC; extern const struct CompressedSpriteSheet gUnknown_083CA4C4; extern const struct CompressedSpritePalette gUnknown_083CA4CC; extern const struct SpriteTemplate gUnknown_083CA4D4; -extern const u8 gUnknown_083CAF84[]; -extern const u8 gUnknown_083CAFAE[]; +extern const struct CompressedSpriteSheet gUnknown_083CC3AC; +extern const struct CompressedSpritePalette gUnknown_083CC3B4[]; +extern const struct SpriteTemplate gSpriteTemplate_83CC454[]; +extern const u8 gText_Contest_WhichMoveWillBePlayed[]; +extern const u8 gText_Contest_ButItCantParticipate[]; extern const u8 gUnknown_083CAFD7[]; extern const u8 gUnknown_083CB00D[]; extern const u8 gUnknown_083CBD52[]; @@ -302,7 +278,7 @@ extern const u8 gUnknown_083CBD9D[]; extern const u8 gUnknown_083CBDC6[]; extern const u8 gUnknown_083CBF60[]; extern const u8 gUnknown_083CB02C[]; -extern const u8 *const gUnknown_083CB2F0[]; +extern const u8 *const gContestStandOutStrings[]; extern const u8 gUnknown_083CC075[]; extern const u8 gUnknown_083CC0A0[]; extern const u8 gUnknown_083CC0BC[]; @@ -316,7 +292,7 @@ extern const u8 gUnknown_083CC288[]; extern const u8 gUnknown_083CC290[]; extern const u8 gUnknown_083CC299[]; extern const u8 gUnknown_083CC2A3[]; -extern const u8 *const gUnknown_083CC2D8[]; +extern const u8 *const gContestCategoryStrings[]; extern const u8 gUnknown_083CC2EC[]; extern const u8 *const gUnknown_083CC330[]; extern const u8 gUnknownText_UnknownFormatting2[]; @@ -339,8 +315,8 @@ void sub_80AB6B4(u8); u8 sub_80AB70C(u8 *); void sub_80AB960(u8); void sub_80AB9A0(u8); -void sub_80ABAAC(void); -void sub_80ABAC4(void); +void ContestMainCallback2(void); +void ContestVBlankCallback(void); void sub_80ABB70(u8); void sub_80ABC3C(u8); void sub_80ABC70(u8); @@ -379,14 +355,14 @@ void sub_80ADF4C(u8); void sub_80ADF98(u8); void sub_80ADFD8(u8); void sub_80AE010(void); -void sub_80AE020(u8 *, s32); +void InsertStringDigit(u8 *, s32); bool8 sub_80AE074(void); void sub_80AEB4C(void *); void sub_80AE5BC(u8); void sub_80AE5D4(u8, u8); void sub_80AE6CC(u8); void sub_80AE6E4(u8, u8); -u8 sub_80AE858(void); +u8 CreateJudgeSprite(void); u8 sub_80AE8B4(void); u8 sub_80AE9FC(u16, u32, u32); bool8 sub_80AEB1C(u16); @@ -397,12 +373,12 @@ bool8 sub_80AEE54(u8, u8); bool8 sub_80AF038(u8); void sub_80AF120(void); void sub_80AF138(void); -u16 sub_80AF15C(u8); +u16 GetChosenMove(u8); void sub_80AF1B8(void); void sub_80AF2A0(u8); void sub_80AF2FC(void); void sub_80AF3C0(void); -bool8 sub_80AF59C(u8); +bool8 Contest_IsMonsTurnDisabled(u8); s16 sub_80AF688(u8); void sub_80AF6A0(void); bool8 sub_80AF828(s32, s32, struct UnknownContestStruct6 *); @@ -419,7 +395,7 @@ bool8 sub_80AFF28(void); void sub_80AFF60(struct Sprite *); void sub_80AFFE0(bool8); void sub_80B0034(void); -void sub_80B00C8(void); +void CreateApplauseMeterSprite(void); void nullsub_18(s8); void sub_80B0238(struct Sprite *); void sub_80B0280(struct Sprite *); @@ -448,7 +424,7 @@ void sub_80B146C(u8, u8); void sub_80B159C(void); void sub_80B1710(u8); void sub_80B1928(void); -s8 contest_get_move_excitement(u16); +s8 Contest_GetMoveExcitement(u16); u8 sub_80B1A2C(void); void c3_08130B10(u8); void sub_80B1B14(void); @@ -474,14 +450,14 @@ void sub_80B253C(u8); void sub_80B25A4(u8); void sub_80B25E4(u8); void sub_80B26C8(u8); -u16 sub_80B2760(u16); -u16 sub_80B2778(u16); +u16 SanitizeMove(u16); +u16 SanitizeSpecies(u16); void sub_80B2790(u8); void sub_80B28CC(int); void sub_80B28F0(u8); void sub_80B292C(void); void sub_80B2968(void); -void sub_80B29B4(u16); +void SelectContestMoveBankTarget(u16); void nullsub_89(u8 taskId) @@ -580,7 +556,6 @@ void sub_80AB398(void) shared19260_[i].unk13 = 0xFF; shared19260_[i].unk14 = 0xFF; } - //memset(shared192D0, 0, 20 * sizeof(*shared192D0)); memset(&shared192D0_, 0, sizeof(shared192D0_)); memset(shared192E4, 0, 0x44 * sizeof(*shared192E4)); memset(&shared19328, 0, sizeof(shared19328)); @@ -595,8 +570,7 @@ void sub_80AB398(void) sub_80B159C(); } -// CB2_StartContest -void sub_80AB47C(void) +void CB2_StartContest(void) { switch (gMain.state) { @@ -607,21 +581,7 @@ void sub_80AB47C(void) dp12_8087EA4(); ResetPaletteFade(); gPaletteFade.bufferTransferDisabled = TRUE; - { - u8 *dest = (void *)VRAM; - u32 size = 0x18000; - while (1) - { - DmaFill32(3, 0, dest, 0x1000); - dest += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, dest, size); - break; - } - } - } + DmaClearLarge32(3, (void *)VRAM, VRAM_SIZE, 0x1000); ResetSpriteData(); ResetTasks(); FreeAllSpritePalettes(); @@ -648,9 +608,9 @@ void sub_80AB47C(void) gUnknown_030041B4 = 0; BeginFastPaletteFade(2); gPaletteFade.bufferTransferDisabled = FALSE; - SetVBlankCallback(sub_80ABAC4); - shared19204.unk1920C = CreateTask(sub_80AB5D4, 10); - SetMainCallback2(sub_80ABAAC); + SetVBlankCallback(ContestVBlankCallback); + shared19204.mainTaskId = CreateTask(sub_80AB5D4, 10); + SetMainCallback2(ContestMainCallback2); break; } } @@ -663,7 +623,7 @@ void sub_80AB5D4(u8 taskId) void sub_80AB604(u8 taskId) { - if (gIsLinkContest & 1) // wat? + if (gIsLinkContest & 1) { if (!gPaletteFade.active) { @@ -699,7 +659,7 @@ void sub_80AB6B4(u8 taskId) { GetMultiplayerId(); // unused return value DestroyTask(taskId); - gTasks[shared19204.unk1920C].func = sub_80AB960; + gTasks[shared19204.mainTaskId].func = sub_80AB960; gRngValue = gUnknown_03005D28; } } @@ -713,21 +673,7 @@ u8 sub_80AB70C(u8 *a) { case 0: gPaletteFade.bufferTransferDisabled = TRUE; - { - u8 *dest = (void *)VRAM; - u32 size = 0x18000; - while (1) - { - DmaFill32(3, 0, dest, 0x1000); - dest += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, dest, size); - break; - } - } - } + DmaClearLarge32(3, (void *)VRAM, VRAM_SIZE, 0x1000); break; case 1: LZDecompressVram(gContestMiscGfx, (void *)VRAM); @@ -741,11 +687,7 @@ u8 sub_80AB70C(u8 *a) break; case 4: LZDecompressVram(gUnknown_08D17424, (void *)(VRAM + 0xE000)); - { - void *src = (void *)(VRAM + 0xE000); - void *dest = shared18000.unk18A04; - DmaCopy32(3, src, dest, 0x800); - } + DmaCopy32Defvars(3, (void *)(VRAM + 0xE000), shared18000.unk18A04, 0x800); break; case 5: LoadCompressedPalette(gUnknown_08D17144, 0, 0x200); @@ -767,7 +709,7 @@ u8 sub_80AB70C(u8 *a) shared19204.unk19216 = sub_80AE8B4(); sub_80AFE30(); sub_80B0034(); - sub_80B00C8(); + CreateApplauseMeterSprite(); sub_80B0324(); sub_80B0518(); gBanksBySide[0] = 0; @@ -777,7 +719,7 @@ u8 sub_80AB70C(u8 *a) gBattleTypeFlags = 0; gBankAttacker = 2; gBankTarget = 3; - gObjectBankIDs[gBankAttacker] = sub_80AE858(); + gObjectBankIDs[gBankAttacker] = CreateJudgeSprite(); sub_80B292C(); break; default: @@ -838,7 +780,7 @@ void sub_80AB9A0(u8 taskId) } } -void sub_80ABAAC(void) +void ContestMainCallback2(void) { AnimateSprites(); RunTasks(); @@ -846,7 +788,7 @@ void sub_80ABAAC(void) UpdatePaletteFade(); } -void sub_80ABAC4(void) +void ContestVBlankCallback(void) { REG_BG0HOFS = gUnknown_030042A4; REG_BG0VOFS = gUnknown_030042A0; @@ -876,11 +818,11 @@ void sub_80ABB70(u8 taskId) void *dest = shared18000.unk18204; DmaCopy32(3, src, dest, 0x400); } - if (!sub_80AF59C(gContestPlayerMonIndex)) - StringCopy(gDisplayedStringBattle, gUnknown_083CAF84); + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) + StringCopy(gDisplayedStringBattle, gText_Contest_WhichMoveWillBePlayed); else - StringCopy(gDisplayedStringBattle, gUnknown_083CAFAE); - sub_80AE020(gDisplayedStringBattle, shared19204.unk19205 + 1); + StringCopy(gDisplayedStringBattle, gText_Contest_ButItCantParticipate); + InsertStringDigit(gDisplayedStringBattle, shared19204.turnNumber + 1); sub_80AF138(); StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); @@ -898,7 +840,7 @@ void sub_80ABC70(u8 taskId) if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys == B_BUTTON)) { PlaySE(SE_SELECT); - if (!sub_80AF59C(gContestPlayerMonIndex)) + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) { sub_80AFFE0(TRUE); gTasks[taskId].func = sub_80ABCDC; @@ -910,8 +852,7 @@ void sub_80ABC70(u8 taskId) } } -extern const u8 gUnknown_083CA340[][4]; - +// Print the move list void sub_80ABCDC(u8 taskId) { u8 i; @@ -929,23 +870,24 @@ void sub_80ABCDC(u8 taskId) for (i = 0; i < 4; i++) { - u16 r4 = gContestMons[gContestPlayerMonIndex].moves[i]; + u16 move = gContestMons[gContestPlayerMonIndex].moves[i]; u8 *r5 = sp8; - if (shared19260_[gContestPlayerMonIndex].unk8 != 0 + if (shared19260_[gContestPlayerMonIndex].prevMove != MOVE_NONE && sub_80B214C(gContestPlayerMonIndex) - && AreMovesContestCombo(shared19260_[gContestPlayerMonIndex].unk8, r4) + && AreMovesContestCombo(shared19260_[gContestPlayerMonIndex].prevMove, move) && shared19260_[gContestPlayerMonIndex].unk15_4) { r5 = StringCopy(sp8, gUnknownText_UnknownFormatting2); } - else if (r4 != 0 - && shared19260_[gContestPlayerMonIndex].unk8 == r4 - && gContestMoves[r4].effect != 3) + else if (move != 0 + && shared19260_[gContestPlayerMonIndex].prevMove == move + && gContestMoves[move].effect != CONTEST_EFFECT_REPEATABLE) { + // Gray the text because it is a repeated move r5 = StringCopy(sp8, gUnknownText_UnknownFormatting3); } - r5 = StringCopy(r5, gMoveNames[r4]); + r5 = StringCopy(r5, gMoveNames[move]); sub_8002E4C( &gUnknown_03004210, @@ -958,20 +900,20 @@ void sub_80ABCDC(u8 taskId) } sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 72); - sub_80AC0AC(shared19204.unk19204); - sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.unk19204]); + sub_80AC0AC(shared19204.playerMoveChoice); + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.playerMoveChoice]); gTasks[taskId].func = sub_80ABEA0; } void sub_80ABEA0(u8 taskId) { - u8 r6 = 0; + u8 numMoves = 0; s32 i; for (i = 0; i < 4; i++) { - if (gContestMons[gContestPlayerMonIndex].moves[i] != 0) - r6++; + if (gContestMons[gContestPlayerMonIndex].moves[i] != MOVE_NONE) + numMoves++; } if (gMain.newKeys & A_BUTTON) @@ -995,11 +937,11 @@ void sub_80ABEA0(u8 taskId) gUnknown_083CA340[0][1], gUnknown_083CA340[0][2], gUnknown_083CA340[0][3]); - if (!sub_80AF59C(gContestPlayerMonIndex)) - StringCopy(gDisplayedStringBattle, gUnknown_083CAF84); + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) + StringCopy(gDisplayedStringBattle, gText_Contest_WhichMoveWillBePlayed); else - StringCopy(gDisplayedStringBattle, gUnknown_083CAFAE); - sub_80AE020(gDisplayedStringBattle, shared19204.unk19205 + 1); + StringCopy(gDisplayedStringBattle, gText_Contest_ButItCantParticipate); + InsertStringDigit(gDisplayedStringBattle, shared19204.turnNumber + 1); sub_80AF138(); StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); sub_8003460(&gMenuWindow, gStringVar4, 776, 1, 15); @@ -1011,27 +953,27 @@ void sub_80ABEA0(u8 taskId) case DPAD_RIGHT: break; case DPAD_UP: - nullsub_17(shared19204.unk19204); - if (shared19204.unk19204 == 0) - shared19204.unk19204 = r6 - 1; + nullsub_17(shared19204.playerMoveChoice); + if (shared19204.playerMoveChoice == 0) + shared19204.playerMoveChoice = numMoves - 1; else - shared19204.unk19204--; - sub_80AC0AC(shared19204.unk19204); + shared19204.playerMoveChoice--; + sub_80AC0AC(shared19204.playerMoveChoice); sub_80AED58(); - sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.unk19204]); - if (r6 > 1) + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.playerMoveChoice]); + if (numMoves > 1) PlaySE(SE_SELECT); break; case DPAD_DOWN: - nullsub_17(shared19204.unk19204); - if (shared19204.unk19204 == r6 - 1) - shared19204.unk19204 = 0; + nullsub_17(shared19204.playerMoveChoice); + if (shared19204.playerMoveChoice == numMoves - 1) + shared19204.playerMoveChoice = 0; else - shared19204.unk19204++; - sub_80AC0AC(shared19204.unk19204); + shared19204.playerMoveChoice++; + sub_80AC0AC(shared19204.playerMoveChoice); sub_80AED58(); - sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.unk19204]); - if (r6 > 1) + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.playerMoveChoice]); + if (numMoves > 1) PlaySE(SE_SELECT); break; } @@ -1051,10 +993,10 @@ void sub_80AC0C8(u8 taskId) { if (gIsLinkContest & 1) { - u16 var = sub_80AF15C(gContestPlayerMonIndex); + u16 var = GetChosenMove(gContestPlayerMonIndex); u8 taskId2; - shared19260_[gContestPlayerMonIndex].unk6 = var; + shared19260_[gContestPlayerMonIndex].currMove = var; taskId2 = CreateTask(sub_80C8A38, 0); SetTaskFuncWithFollowupFunc(taskId2, sub_80C8A38, sub_80AC15C); gTasks[taskId].func = nullsub_89; @@ -1071,7 +1013,7 @@ void sub_80AC0C8(u8 taskId) void sub_80AC15C(u8 taskId) { DestroyTask(taskId); - gTasks[shared19204.unk1920C].func = sub_80AC188; + gTasks[shared19204.mainTaskId].func = sub_80AC188; } void sub_80AC188(u8 taskId) @@ -1208,8 +1150,8 @@ void sub_80AC2CC(u8 taskId) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); - if (shared19260_[r7].unk6 < 355) - StringCopy(gStringVar2, gMoveNames[shared19260_[r7].unk6]); + if (shared19260_[r7].currMove < NUM_MOVES) + StringCopy(gStringVar2, gMoveNames[shared19260_[r7].currMove]); else StringCopy(gStringVar2, gUnknown_083CC330[shared19260_[r7].unkA]); StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); @@ -1226,11 +1168,11 @@ void sub_80AC2CC(u8 taskId) return; case 7: { - u16 move = sub_80B2760(shared19260_[shared19204.unk19215].unk6); + u16 move = SanitizeMove(shared19260_[shared19204.unk19215].currMove); sub_80B2790(shared19204.unk19215); sub_80B28F0(shared19204.unk19215); - sub_80B29B4(move); + SelectContestMoveBankTarget(move); ExecuteMoveAnim(move); gTasks[taskId].data[0] = 8; } @@ -1590,11 +1532,11 @@ void sub_80AC2CC(u8 taskId) if (shared19260_[r7].unk11_4) { r4 = 1; - StringCopy(gStringVar3, gMoveNames[shared19260_[r7].unk6]); + StringCopy(gStringVar3, gMoveNames[shared19260_[r7].currMove]); } else { - StringCopy(gStringVar3, gUnknown_083CC2D8[gContestMoves[shared19260_[r7].unk6].contestCategory]); + StringCopy(gStringVar3, gContestCategoryStrings[gContestMoves[shared19260_[r7].currMove].contestCategory]); } if (r4 > 0) { @@ -1726,7 +1668,7 @@ void sub_80AC2CC(u8 taskId) sub_80AF138(); StringCopy(gStringVar3, gContestMons[shared19328.bits_9].nickname); StringCopy(gStringVar1, gContestMons[r7].nickname); - StringCopy(gStringVar2, gMoveNames[shared19260_[r7].unk6]); + StringCopy(gStringVar2, gMoveNames[shared19260_[r7].currMove]); StringExpandPlaceholders(gStringVar4, gUnknown_083CC14A); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 58; @@ -1752,7 +1694,7 @@ void sub_80AC2CC(u8 taskId) shared19260_[r7].unk15_4 = 0; sub_80B09B0(r7); StringCopy(gStringVar1, gContestMons[r7].nickname); - StringCopy(gStringVar2, gMoveNames[shared19260_[r7].unk6]); + StringCopy(gStringVar2, gMoveNames[shared19260_[r7].currMove]); StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 34; @@ -1974,7 +1916,7 @@ void sub_80ADB88(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CB2F0[r4]); + StringExpandPlaceholders(gStringVar4, gContestStandOutStrings[r4]); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].func = sub_80ADC10; } @@ -2024,7 +1966,7 @@ void sub_80ADD04(u8 taskId) { REG_BG0CNT_BITFIELD.priority = 0; REG_BG2CNT_BITFIELD.priority = 0; - if (++shared19204.unk19205 == 5) + if (++shared19204.turnNumber == 5) { gTasks[taskId].func = sub_80ADDA4; } @@ -2051,7 +1993,7 @@ void sub_80ADDA4(u8 taskId) gUnknown_02038680[i] = shared19260_[i].unk4; sub_80AF668(); sub_80AF138(); - sub_80BE23C(shared19260_[gContestPlayerMonIndex].unk8); + sub_80BE23C(shared19260_[gContestPlayerMonIndex].prevMove); gUnknown_03005D28 = gRngValue; StringExpandPlaceholders(gStringVar4, gUnknown_083CB02C); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); @@ -2115,7 +2057,7 @@ void sub_80ADF98(u8 taskId) { DestroyTask(taskId); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[shared19204.unk1920C].func = sub_80ADFD8; + gTasks[shared19204.mainTaskId].func = sub_80ADFD8; } void sub_80ADFD8(u8 taskId) @@ -2135,22 +2077,24 @@ void sub_80AE010(void) EnableBothScriptContexts(); } -void sub_80AE020(u8 *a, s32 b) +// Expands a one-digit number in the string +void InsertStringDigit(u8 *str, s32 n) { while (1) { - if (*a == EOS) + if (*str == EOS) break; - if (*a == EXT_CTRL_CODE_BEGIN && *(a + 1) == 0) + // Find the EXT_CTRL_CODE_BEGIN, 0 sequence, and place the number there + if (*str == EXT_CTRL_CODE_BEGIN && *(str + 1) == 0) { u8 *end; - end = ConvertIntToDecimalStringN(a, b, 0, 1); + end = ConvertIntToDecimalStringN(str, n, STR_CONV_MODE_LEFT_ALIGN, 1); *end = EOS; // ConvertIntToDecimalStringN already does this. - StringAppend(end, a + 2); + StringAppend(end, str + 2); // Shift the rest of the string over. break; } - a++; + str++; } } @@ -2168,8 +2112,7 @@ bool8 sub_80AE074(void) return FALSE; } -// CreatePlayerContestMon -void sub_80AE098(u8 index) +void CreatePlayerContestMon(u8 partyIndex) { u8 name[20]; u16 heldItem; @@ -2195,13 +2138,13 @@ void sub_80AE098(u8 index) gContestMons[gContestPlayerMonIndex].trainerGfxId = MAP_OBJ_GFX_LINK_MAY; gContestMons[gContestPlayerMonIndex].flags = 0; gContestMons[gContestPlayerMonIndex].unk2C = 0; - gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[index], MON_DATA_SPECIES); - GetMonData(&gPlayerParty[index], MON_DATA_NICKNAME, name); + gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES); + GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, name); StringGetEnd10(name); if (gIsLinkContest & 1) { StripExtCtrlCodes(name); - if (GetMonData(&gPlayerParty[index], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE) + if (GetMonData(&gPlayerParty[partyIndex], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE) { name[5] = EOS; name[10] = EXT_CTRL_CODE_BEGIN; @@ -2215,20 +2158,20 @@ void sub_80AE098(u8 index) } } memcpy(gContestMons[gContestPlayerMonIndex].nickname, name, 11); - gContestMons[gContestPlayerMonIndex].cool = GetMonData(&gPlayerParty[index], MON_DATA_COOL); - gContestMons[gContestPlayerMonIndex].beauty = GetMonData(&gPlayerParty[index], MON_DATA_BEAUTY); - gContestMons[gContestPlayerMonIndex].cute = GetMonData(&gPlayerParty[index], MON_DATA_CUTE); - gContestMons[gContestPlayerMonIndex].smart = GetMonData(&gPlayerParty[index], MON_DATA_SMART); - gContestMons[gContestPlayerMonIndex].tough = GetMonData(&gPlayerParty[index], MON_DATA_TOUGH); - gContestMons[gContestPlayerMonIndex].sheen = GetMonData(&gPlayerParty[index], MON_DATA_SHEEN); - gContestMons[gContestPlayerMonIndex].moves[0] = GetMonData(&gPlayerParty[index], MON_DATA_MOVE1); - gContestMons[gContestPlayerMonIndex].moves[1] = GetMonData(&gPlayerParty[index], MON_DATA_MOVE2); - gContestMons[gContestPlayerMonIndex].moves[2] = GetMonData(&gPlayerParty[index], MON_DATA_MOVE3); - gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[index], MON_DATA_MOVE4); - gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[index], MON_DATA_PERSONALITY); - gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[index], MON_DATA_OT_ID); - - heldItem = GetMonData(&gPlayerParty[index], MON_DATA_HELD_ITEM); + gContestMons[gContestPlayerMonIndex].cool = GetMonData(&gPlayerParty[partyIndex], MON_DATA_COOL); + gContestMons[gContestPlayerMonIndex].beauty = GetMonData(&gPlayerParty[partyIndex], MON_DATA_BEAUTY); + gContestMons[gContestPlayerMonIndex].cute = GetMonData(&gPlayerParty[partyIndex], MON_DATA_CUTE); + gContestMons[gContestPlayerMonIndex].smart = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SMART); + gContestMons[gContestPlayerMonIndex].tough = GetMonData(&gPlayerParty[partyIndex], MON_DATA_TOUGH); + gContestMons[gContestPlayerMonIndex].sheen = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SHEEN); + gContestMons[gContestPlayerMonIndex].moves[0] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE1); + gContestMons[gContestPlayerMonIndex].moves[1] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE2); + gContestMons[gContestPlayerMonIndex].moves[2] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE3); + gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE4); + gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY); + gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID); + + heldItem = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HELD_ITEM); cool = gContestMons[gContestPlayerMonIndex].cool; beauty = gContestMons[gContestPlayerMonIndex].beauty; cute = gContestMons[gContestPlayerMonIndex].cute; @@ -2309,7 +2252,7 @@ void sub_80AE398(u8 a, u8 b) asm(""::"r"(i)); #endif - sub_80AE098(gUnknown_02038694); + CreatePlayerContestMon(gUnknown_02038694); } // GetContestAvailability? @@ -2492,7 +2435,7 @@ void sub_80AE82C(u8 a) gUnknown_02038670[i] = sub_80AE770(i, a); } -u8 sub_80AE858(void) +u8 CreateJudgeSprite(void) { u8 spriteId; @@ -2546,7 +2489,7 @@ u8 sub_80AE9FC(u16 species, u32 otId, u32 personality) const u8 *lzPaletteData; u8 spriteId; - species = sub_80B2778(species); + species = SanitizeSpecies(species); HandleLoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -2594,11 +2537,11 @@ void sub_80AEB4C(void *a) DmaCopy16(3, src, dest, 0x280); } -u16 sub_80AEB68(u16 a, u8 b) +u16 sub_80AEB68(u16 move, u8 b) { u16 var; - switch (gContestEffects[gContestMoves[a].effect].effectType) + switch (gContestEffects[gContestMoves[move].effect].effectType) { case 0: case 1: @@ -2683,13 +2626,13 @@ void sub_80AED58(void) } // unused -void sub_80AED7C(u16 a, u8 b) +void sub_80AED7C(u16 move, u8 b) { u8 r5 = gUnknown_02038696[b] * 5 + 2; - if (!sub_80AF59C(b) && a != 0) + if (!Contest_IsMonsTurnDisabled(b) && move != MOVE_NONE) { - u16 tile = sub_80AEB68(a, b); + u16 tile = sub_80AEB68(move, b); *(u16 *)(VRAM + 0xC028 + r5 * 64) = tile; *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = tile + 1; @@ -2713,7 +2656,7 @@ void unref_sub_80AEE20(void) u8 i; for (i = 0; i < 4; i++) - sub_80AED7C(shared19260_[i].unk6, i); + sub_80AED7C(shared19260_[i].currMove, i); } u16 sub_80AEE4C(u8 unused) @@ -2858,13 +2801,13 @@ void sub_80AF138(void) FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 1, 15, 17, 18); } -u16 sub_80AF15C(u8 a) +u16 GetChosenMove(u8 a) { - if (sub_80AF59C(a)) + if (Contest_IsMonsTurnDisabled(a)) return 0; if (a == gContestPlayerMonIndex) { - return gContestMons[a].moves[shared19204.unk19204]; + return gContestMons[a].moves[shared19204.playerMoveChoice]; } else { @@ -2881,7 +2824,7 @@ void sub_80AF1B8(void) u8 i; for (i = 0; i < 4; i++) - shared19260_[i].unk6 = sub_80AF15C(i); + shared19260_[i].currMove = GetChosenMove(i); } void sub_80AF1E4(u8 a, u8 b) @@ -2892,10 +2835,10 @@ void sub_80AF1E4(u8 a, u8 b) r3 = a + 10; else r3 = 14; - if (shared19260_[a].unk6 == 0) + if (shared19260_[a].currMove == MOVE_NONE) sub_80AE598(gDisplayedStringBattle, gUnknownText_MissedTurn, r3); else - sub_80AE598(gDisplayedStringBattle, gMoveNames[shared19260_[a].unk6], r3); + sub_80AE598(gDisplayedStringBattle, gMoveNames[shared19260_[a].currMove], r3); sub_80AF2A0(a); sub_8003460( &gUnknown_03004210, @@ -2979,7 +2922,7 @@ void sub_80AF3C0(void) { u8 var; - if (shared19260_[i].unk6 == 0) + if (shared19260_[i].currMove == MOVE_NONE) var = 5; else if (shared19260_[i].unk2 <= 0) var = 0; @@ -3044,15 +2987,15 @@ void sub_80AF438(void) } for (i = 0; i < 4; i++) { - shared19260_[i].unk8 = shared19260_[i].unk6; - shared19204.unk19220[shared19204.unk19205][i] = shared19260_[i].unk8; - shared19204.unk19248[shared19204.unk19205][i] = contest_get_move_excitement(shared19260_[i].unk6); - shared19260_[i].unk6 = 0; + shared19260_[i].prevMove = shared19260_[i].currMove; + shared19204.unk19220[shared19204.turnNumber][i] = shared19260_[i].prevMove; + shared19204.unk19248[shared19204.turnNumber][i] = Contest_GetMoveExcitement(shared19260_[i].currMove); + shared19260_[i].currMove = MOVE_NONE; } shared19328.bits_8 = 0; } -bool8 sub_80AF59C(u8 a) +bool8 Contest_IsMonsTurnDisabled(u8 a) { if (shared19260_[a].unkC_1 != 0 || shared19260_[a].unkB_7) return TRUE; @@ -3562,7 +3505,7 @@ void sub_80B0034(void) } } -void sub_80B00C8(void) +void CreateApplauseMeterSprite(void) { u8 spriteId; @@ -3570,7 +3513,7 @@ void sub_80B00C8(void) LoadSpritePalette(&gUnknown_083CA474); spriteId = CreateSprite(&gSpriteTemplate_83CA484, 30, 44, 1); gSprites[spriteId].invisible = TRUE; - shared19204.unk1925C = spriteId; + shared19204.applauseMeterSpriteId = spriteId; } void nullsub_18(s8 unused) @@ -4591,12 +4534,12 @@ void sub_80B114C(u8 a) r8 = sub_80AF404(a); if (r8) { - u16 r0 = shared19260_[a].unk6; - u8 effect = gContestMoves[r0].effect; + u16 move = shared19260_[a].currMove; + u8 effect = gContestMoves[move].effect; u8 rnd; - shared19260_[a].unkA = gContestMoves[shared19260_[a].unk6].contestCategory; - if (shared19260_[a].unk6 == shared19260_[a].unk8 && shared19260_[a].unk6 != 0) + shared19260_[a].unkA = gContestMoves[shared19260_[a].currMove].contestCategory; + if (shared19260_[a].currMove == shared19260_[a].prevMove && shared19260_[a].currMove != MOVE_NONE) { shared19260_[a].unk15_0 = 1; shared19260_[a].unkB_4++; @@ -4615,7 +4558,7 @@ void sub_80B114C(u8 a) shared19260_[i].unkE = 0; shared192D0_.unkD[i] = 0; } - if (shared19260_[a].unk15_4 && !AreMovesContestCombo(shared19260_[a].unk8, shared19260_[a].unk6)) + if (shared19260_[a].unk15_4 && !AreMovesContestCombo(shared19260_[a].prevMove, shared19260_[a].currMove)) shared19260_[a].unk15_4 = 0; gContestEffectFuncs[effect](); if (shared19260_[a].unk10_4 == 1) @@ -4628,7 +4571,7 @@ void sub_80B114C(u8 a) shared19260_[a].unk15_6 = 0; if (sub_80B214C(a)) { - bool8 r2 = AreMovesContestCombo(shared19260_[a].unk8, shared19260_[a].unk6); + bool8 r2 = AreMovesContestCombo(shared19260_[a].prevMove, shared19260_[a].currMove); if (r2 && shared19260_[a].unk15_4) { @@ -4640,7 +4583,7 @@ void sub_80B114C(u8 a) } else { - if (gContestMoves[shared19260_[a].unk6].comboStarterId != 0) + if (gContestMoves[shared19260_[a].currMove].comboStarterId != 0) { shared19260_[a].unk15_4 = 1; shared19260_[a].unk15_6 = 1; @@ -4659,7 +4602,7 @@ void sub_80B114C(u8 a) shared19260_[a].unk2 = 0; shared19260_[a].unk0 = 0; } - shared19328.bits_0 = contest_get_move_excitement(shared19260_[a].unk6); + shared19328.bits_0 = Contest_GetMoveExcitement(shared19260_[a].currMove); if (shared19260_[a].unk11_4) shared19328.bits_0 = 1; if (shared19328.bits_0 > 0) @@ -4715,14 +4658,14 @@ void sub_80B141C(u8 a, u8 b) void sub_80B146C(u8 a, u8 b) { StringCopy(gStringVar1, gContestMons[a].nickname); - StringCopy(gStringVar2, gMoveNames[shared19260_[a].unk6]); - if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_COOL) + StringCopy(gStringVar2, gMoveNames[shared19260_[a].currMove]); + if (gContestMoves[shared19260_[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_COOL) StringCopy(gStringVar3, gUnknown_083CC280); - else if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_BEAUTY) + else if (gContestMoves[shared19260_[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY) StringCopy(gStringVar3, gUnknown_083CC288); - else if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_CUTE) + else if (gContestMoves[shared19260_[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_CUTE) StringCopy(gStringVar3, gUnknown_083CC290); - else if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_SMART) + else if (gContestMoves[shared19260_[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_SMART) StringCopy(gStringVar3, gUnknown_083CC299); else StringCopy(gStringVar3, gUnknown_083CC2A3); @@ -4734,7 +4677,7 @@ void sub_80B146C(u8 a, u8 b) void sub_80B157C(u8 a) { shared19260_[a].unkC_0 = 1; - shared19260_[a].unk6 = 0; + shared19260_[a].currMove = MOVE_NONE; } void sub_80B159C(void) @@ -4863,8 +4806,8 @@ void sub_80B1928(void) src = gContestApplauseMeterGfx + 64; else src = gContestApplauseMeterGfx; - CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[shared19204.unk1925C].oam.tileNum + 17 + i) * 32), 32); - CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[shared19204.unk1925C].oam.tileNum + 25 + i) * 32), 32); + CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[shared19204.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32); + CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[shared19204.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32); if (shared19204.unk19217 > 4) sub_80B1A2C(); } @@ -4877,7 +4820,7 @@ void unref_sub_80B19D0(void) sub_8003460(&gUnknown_03004210, str, 680, 0, 0); } -s8 contest_get_move_excitement(u16 move) +s8 Contest_GetMoveExcitement(u16 move) { return gContestExcitementTable[gScriptContestCategory][gContestMoves[move].contestCategory]; } @@ -4916,14 +4859,14 @@ void c3_08130B10(u8 taskId) void sub_80B1B14(void) { CreateTask(sub_80B1B68, 10); - gSprites[shared19204.unk1925C].pos2.x = -70; - gSprites[shared19204.unk1925C].invisible = FALSE; + gSprites[shared19204.applauseMeterSpriteId].pos2.x = -70; + gSprites[shared19204.applauseMeterSpriteId].invisible = FALSE; shared19204.unk1920A_6 = 1; } void sub_80B1B68(u8 taskId) { - struct Sprite *sprite = &gSprites[shared19204.unk1925C]; + struct Sprite *sprite = &gSprites[shared19204.applauseMeterSpriteId]; gTasks[taskId].data[10] += 1664; sprite->pos2.x += gTasks[taskId].data[10] >> 8; @@ -4939,21 +4882,21 @@ void sub_80B1B68(u8 taskId) void sub_80B1BDC(void) { - if (gSprites[shared19204.unk1925C].invisible == TRUE) + if (gSprites[shared19204.applauseMeterSpriteId].invisible == TRUE) { shared19204.unk1920A_6 = 0; } else { CreateTask(sub_80B1C34, 10); - gSprites[shared19204.unk1925C].pos2.x = 0; + gSprites[shared19204.applauseMeterSpriteId].pos2.x = 0; shared19204.unk1920A_6 = 1; } } void sub_80B1C34(u8 taskId) { - struct Sprite *sprite = &gSprites[shared19204.unk1925C]; + struct Sprite *sprite = &gSprites[shared19204.applauseMeterSpriteId]; gTasks[taskId].data[10] += 1664; sprite->pos2.x -= gTasks[taskId].data[10] >> 8; @@ -5005,13 +4948,13 @@ void sub_80B1CFC(u8 taskId) void unref_sub_80B1D84(void) { - gSprites[shared19204.unk1925C].pos2.x = 0; - gSprites[shared19204.unk1925C].invisible = FALSE; + gSprites[shared19204.applauseMeterSpriteId].pos2.x = 0; + gSprites[shared19204.applauseMeterSpriteId].invisible = FALSE; } void unref_sub_80B1DB8(void) { - gSprites[shared19204.unk1925C].invisible = TRUE; + gSprites[shared19204.applauseMeterSpriteId].invisible = TRUE; } void sub_80B1DDC(void) @@ -5171,7 +5114,7 @@ void sub_80B20C4(void) for (i = 0; i < 4; i++) { - if (shared192D0_.unkD[i] != 0 && !sub_80AF59C(i)) + if (shared192D0_.unkD[i] != 0 && !Contest_IsMonsTurnDisabled(i)) { u8 r4 = gUnknown_02038696[i] * 5 + 2; u16 r0 = sub_80AEFE8(i, 3); @@ -5406,16 +5349,14 @@ void sub_80B26C8(u8 taskId) } } -// SanitizeMove -u16 sub_80B2760(u16 a) +u16 SanitizeMove(u16 move) { - if (a > 354) - a = 1; - return a; + if (move >= NUM_MOVES) + move = MOVE_POUND; + return move; } -// SanitizeSpecies -u16 sub_80B2778(u16 species) +u16 SanitizeSpecies(u16 species) { if (species >= NUM_SPECIES) species = SPECIES_NONE; @@ -5425,39 +5366,39 @@ u16 sub_80B2778(u16 species) void sub_80B2790(u8 a) { s32 i; - u16 r5 = sub_80B2760(shared19260_[a].unk6); - u16 r7 = sub_80B2778(gContestMons[a].species); + u16 move = SanitizeMove(shared19260_[a].currMove); + u16 species = SanitizeSpecies(gContestMons[a].species); u8 r5_2; memset(&shared19348_, 0, sizeof(shared19348_)); battle_anim_clear_some_data(); for (i = 0; i < 4; i++) gBattleMonForms[i] = 0; - switch (r5) + switch (move) { - case 0xAE: - if (gBaseStats[r7].type1 == 7 || gBaseStats[r7].type2 == 7) + case MOVE_CURSE: + if (gBaseStats[species].type1 == TYPE_GHOST || gBaseStats[species].type2 == TYPE_GHOST) gUnknown_0202F7C4 = 0; else gUnknown_0202F7C4 = 1; break; - case 0x90: - case 0x110: + case MOVE_TRANSFORM: + case MOVE_ROLE_PLAY: r5_2 = shared19260_[a].unk1B; - shared19348_.unk2 = sub_80B2778(gContestMons[r5_2].species); + shared19348_.unk2 = SanitizeSpecies(gContestMons[r5_2].species); shared19348_.unk10 = gContestMons[r5_2].personality; shared19348_.unk4_0 = 1; break; - case 0xD8: + case MOVE_RETURN: gHappinessMoveAnim = 0xFF; break; - case 0xDA: + case MOVE_FRUSTRATION: gHappinessMoveAnim = 0; break; - case 0x4C: - case 0xD: - case 0x82: - case 0x8F: + case MOVE_SOLAR_BEAM: + case MOVE_RAZOR_WIND: + case MOVE_SKULL_BASH: + case MOVE_SKY_ATTACK: if (shared19204.unk1925E == 0) { shared19204.unk1925E = 2; @@ -5482,7 +5423,7 @@ void sub_80B28CC(int unused) void sub_80B28F0(u8 a) { shared19348_.unk5 = a; - shared19348_.unk0 = sub_80B2778(gContestMons[a].species); + shared19348_.unk0 = SanitizeSpecies(gContestMons[a].species); shared19348_.unk8 = gContestMons[a].personality; shared19348_.unkC = gContestMons[a].otId; } @@ -5505,9 +5446,9 @@ void sub_80B2968(void) sprite->invisible = TRUE; } -void sub_80B29B4(u16 a) +void SelectContestMoveBankTarget(u16 move) { - switch (gBattleMoves[a].target) + switch (gBattleMoves[move].target) { case F_TARGET_UNK2: case F_TARGET_USER: @@ -5624,7 +5565,7 @@ u8 sub_80B2C4C(u8 a, u8 b) } } -void sub_80B2D1C(void) +void Contest_ResetWinners(void) { s32 i; diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index b351784ba..246d2895c 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -320,7 +320,7 @@ u8 MatsudaDebugMenu_CommTest(void) static void sub_80A9C98(u8 taskId) { - sub_80AE098(0); + CreatePlayerContestMon(0); SetTaskFuncWithFollowupFunc(taskId, sub_80C8734, sub_80A9CC0); } @@ -542,7 +542,7 @@ static void sub_80AA10C(void) if (!(gContestMons[0].nickname[0])) sub_80AE398(0, 0); - sub_80AE098(gUnknown_02038694); + CreatePlayerContestMon(gUnknown_02038694); for (i = 0; i < 6; i++) { @@ -895,7 +895,7 @@ void sub_80AACC4(void) SetDebugMonForContest(); if (!(gIsLinkContest & 1)) sub_80AE82C(eMatsudaDebugVar); - SetMainCallback2(sub_80AB47C); + SetMainCallback2(CB2_StartContest); } } @@ -1149,7 +1149,7 @@ void sub_80AAF30(void) gUnknown_0203856C = 1; gContestPlayerMonIndex = 3; - sub_80AE098(0); + CreatePlayerContestMon(0); for (i = 3; i > -1; i--) gUnknown_02038690[i] = 3 - i; @@ -1195,7 +1195,7 @@ u8 MatsudaDebugMenu_SetArtMuseumItems(void) s32 i; gContestPlayerMonIndex = 3; - sub_80AE098(0); + CreatePlayerContestMon(0); for (i = 3; i > -1; i--) gUnknown_02038690[i] = 3 - i; for (gScriptContestCategory = 0; gScriptContestCategory < 5; gScriptContestCategory++) diff --git a/src/scene/new_game.c b/src/scene/new_game.c index 1a3d40e0c..0279f99c6 100644 --- a/src/scene/new_game.c +++ b/src/scene/new_game.c @@ -80,11 +80,11 @@ void ClearPokedexFlags(void) memset(&gSaveBlock2.pokedex.seen, 0, sizeof(gSaveBlock2.pokedex.seen)); } -void sub_8052DA8(void) +void ResetContestAndMuseumWinners(void) { s32 i; - sub_80B2D1C(); + Contest_ResetWinners(); for (i = 0; i < 5; i++) gSaveBlock1.museumPortraits[i] = sEmptyMuseumPortrait; } @@ -139,7 +139,7 @@ void NewGameInitData(void) gSaveBlock1.money = 3000; ResetLinkContestBoolean(); ResetGameStats(); - sub_8052DA8(); + ResetContestAndMuseumWinners(); InitLinkBattleRecords(); InitShroomishSizeRecord(); InitBarboachSizeRecord(); -- cgit v1.2.3 From 255f0d4ee4327c2eac59d55d5e50dccbb353370d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 22 Dec 2017 17:42:05 -0600 Subject: clean up and label more of contest.c --- src/contest.c | 992 ++++++++++++++++++-------------------- src/debug/matsuda_debug_menu.c | 24 +- src/script_pokemon_util_80C4BF0.c | 10 +- 3 files changed, 497 insertions(+), 529 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 10f02642b..3aa3c8f59 100644 --- a/src/contest.c +++ b/src/contest.c @@ -32,7 +32,7 @@ #include "unknown_task.h" #include "util.h" -extern bool8 AreMovesContestCombo(u16, u16); +extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool extern void sub_80C8A38(u8); extern void sub_80C8AD0(u8); extern void sub_80C8C80(u8); @@ -49,7 +49,7 @@ struct Shared18000 /*0x18A04*/ u8 unk18A04[0x800]; }; -struct Shared19204 +struct Contest { /*0x19204*/ u8 playerMoveChoice; /*0x19205*/ u8 turnNumber; @@ -73,29 +73,28 @@ struct Shared19204 /*0x19214*/ u8 unk19214; /*0x19215*/ u8 unk19215; /*0x19216*/ u8 unk19216; // sprite ID - /*0x19217*/ s8 unk19217; + /*0x19217*/ s8 applauseLevel; /*0x19218*/ u8 unk19218[4]; /*0x1921C*/ u32 unk1921C; // saved RNG value? - u16 unk19220[5][4]; + u16 unk19220[5][4]; // move history? u8 unk19248[5][4]; // excitement history u8 applauseMeterSpriteId; // sprite ID /*0x1925D*/ u8 unk1925D; /*0x1925E*/ u8 unk1925E; }; - // Appeal, maybe -struct UnknownContestStruct1 +struct ContestantStatus { - s16 unk0; - s16 unk2; + s16 appeal1; // move appeal? + s16 appeal2; // final appeal after end of turn, maybe? s16 unk4; - u16 currMove; // move 1 - u16 prevMove; // move 2 - u8 unkA; // contest category + u16 currMove; + u16 prevMove; + u8 moveCategory; u8 unkB_0:2; u8 unkB_2:2; - u8 unkB_4:3; - u8 unkB_7:1; + u8 moveRepeatCount:3; + u8 unkB_7:1; // used a one-time move? u8 unkC_0:1; u8 unkC_1:2; s8 unkD; @@ -113,9 +112,9 @@ struct UnknownContestStruct1 u8 unk11_4:1; u8 unk11_5:1; u8 unk12; - u8 unk13; + u8 unk13; // status action? u8 unk14; - u8 unk15_0:1; + u8 disappointedRepeat:1; u8 unk15_1:1; u8 unk15_2:1; u8 unk15_3:1; @@ -125,8 +124,8 @@ struct UnknownContestStruct1 u8 unk16; u8 unk17; u8 unk18; - u8 unk19; // turn number - u8 unk1A; // stand out amount - attention level + u8 unk19; // turn position + u8 attentionLevel; // How much the Pokemon "stood out" u8 unk1B; }; @@ -153,7 +152,7 @@ struct UnknownContestStruct4 struct UnknownContestStruct5 { - s8 bits_0; // excitement? + s8 bits_0; // current move excitement? u8 bits_8:1; u8 bits_9:3; u8 bits_C:4; @@ -197,8 +196,8 @@ struct UnknownContestStruct6 #define shared16800 (gSharedMem + 0x16800) #define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000)) #define shared18004 ((u16 *)(gSharedMem + 0x18004)) -#define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) -#define shared19260_ ((struct UnknownContestStruct1 *)(gSharedMem + 0x19260)) +#define sContest (*(struct Contest *)(gSharedMem + 0x19204)) +#define sContestantStatus ((struct ContestantStatus *)(gSharedMem + 0x19260)) #define shared192D0_ (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0)) #define shared192E4 (gSharedMem + 0x192E4) #define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328)) @@ -230,7 +229,7 @@ extern u16 gUnknown_030042A0; extern u16 gUnknown_030042A4; extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; -extern u32 gUnknown_03005D28; +extern u32 gUnknown_03005D28; // saved RNG value extern s16 gUnknown_02038680[]; extern u16 gUnknown_02038688[]; @@ -239,7 +238,7 @@ extern u8 gUnknown_02038696[]; extern u8 gUnknown_0203869B; extern s16 gUnknown_02038670[]; extern s16 gUnknown_02038678[]; -extern u8 gUnknown_02038690[]; +extern u8 gContestFinalStandings[]; // What "place" each participant came in. extern struct SpriteTemplate gUnknown_02024E8C; @@ -272,26 +271,26 @@ extern const u8 gText_Contest_WhichMoveWillBePlayed[]; extern const u8 gText_Contest_ButItCantParticipate[]; extern const u8 gUnknown_083CAFD7[]; extern const u8 gUnknown_083CB00D[]; -extern const u8 gUnknown_083CBD52[]; -extern const u8 gUnknown_083CBD79[]; -extern const u8 gUnknown_083CBD9D[]; -extern const u8 gUnknown_083CBDC6[]; +extern const u8 ContestString_JudgeExpectantly2[]; +extern const u8 ContestString_WentOverWell[]; +extern const u8 ContestString_WentOverVeryWell[]; +extern const u8 ContestString_AppealComboExcellently[]; extern const u8 gUnknown_083CBF60[]; extern const u8 gUnknown_083CB02C[]; extern const u8 *const gContestStandOutStrings[]; -extern const u8 gUnknown_083CC075[]; -extern const u8 gUnknown_083CC0A0[]; -extern const u8 gUnknown_083CC0BC[]; -extern const u8 gUnknown_083CC0E3[]; -extern const u8 gUnknown_083CC103[]; -extern const u8 gUnknown_083CC14A[]; -extern const u8 gUnknown_083CC16E[]; +extern const u8 ContestString_DissapointedRepeat[]; +extern const u8 ContestString_WentOverGreat[]; +extern const u8 ContestString_DidntGoWell[]; +extern const u8 ContestString_GotCrowdGoing[]; +extern const u8 ContestString_CantAppealNextTurn[]; +extern const u8 ContestString_CrowdWatches[]; +extern const u8 ContestString_Ignored2[]; extern const u8 *const gUnknown_083CC188[]; -extern const u8 gUnknown_083CC280[]; -extern const u8 gUnknown_083CC288[]; -extern const u8 gUnknown_083CC290[]; -extern const u8 gUnknown_083CC299[]; -extern const u8 gUnknown_083CC2A3[]; +extern const u8 gText_Contest_Shyness[]; +extern const u8 gText_Contest_Anxiety[]; +extern const u8 gText_Contest_Laziness[]; +extern const u8 gText_Contest_Hesitancy[]; +extern const u8 gText_Contest_Fear[]; extern const u8 *const gContestCategoryStrings[]; extern const u8 gUnknown_083CC2EC[]; extern const u8 *const gUnknown_083CC330[]; @@ -380,7 +379,7 @@ void sub_80AF2FC(void); void sub_80AF3C0(void); bool8 Contest_IsMonsTurnDisabled(u8); s16 sub_80AF688(u8); -void sub_80AF6A0(void); +void DetermineFinalStandings(void); bool8 sub_80AF828(s32, s32, struct UnknownContestStruct6 *); void sub_80AF860(void); void sub_80AF94C(u8); @@ -438,7 +437,7 @@ void sub_80B1DFC(u8); void sub_80B1EA8(s8, s8); void sub_80B1F4C(u8); void sub_80B1FD0(bool8); -const u8 *sub_80B208C(u8); +const u8 *GetTurnOrderNumberGfx(u8); void sub_80B20C4(void); bool8 sub_80B214C(u8); void sub_80B2184(void); @@ -469,8 +468,7 @@ void ResetLinkContestBoolean(void) gIsLinkContest = FALSE; } -// Contest_ResetGpuRegs -void sub_80AB1BC(void) +void ResetContestGpuRegs(void) { u16 savedIme; @@ -522,7 +520,7 @@ void sub_80AB2AC(void) } } -void sub_80AB320(void) +void SetUpContestWindow(void) { SetUpWindowConfig(&gWindowConfig_81E6FD8); InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6FD8); @@ -540,22 +538,23 @@ void sub_80AB350(void) FillPalette(0x7E3F, 0xF3, 2); } -// ClearContestVars -void sub_80AB398(void) +void ClearContestVars(void) { s32 i; - memset(&shared19204, 0, sizeof(shared19204)); + memset(&sContest, 0, sizeof(sContest)); for (i = 0; i < 4; i++) - shared19204.unk19206[i] = 0xFF; + sContest.unk19206[i] = 0xFF; + for (i = 0; i < 4; i++) - memset(&shared19260_[i], 0, sizeof(shared19260_[i])); + memset(&sContestantStatus[i], 0, sizeof(sContestantStatus[i])); for (i = 0; i < 4; i++) { - shared19260_[i].unkB_0 = 0; - shared19260_[i].unk13 = 0xFF; - shared19260_[i].unk14 = 0xFF; + sContestantStatus[i].unkB_0 = 0; + sContestantStatus[i].unk13 = 0xFF; + sContestantStatus[i].unk14 = 0xFF; } + memset(&shared192D0_, 0, sizeof(shared192D0_)); memset(shared192E4, 0, 0x44 * sizeof(*shared192E4)); memset(&shared19328, 0, sizeof(shared19328)); @@ -564,8 +563,8 @@ void sub_80AB398(void) sub_80B0F28(0); for (i = 0; i < 4; i++) { - shared19260_[i].unk19 = 0xFF; - shared19204.unk19218[i] = gUnknown_02038696[i]; + sContestantStatus[i].unk19 = 0xFF; + sContest.unk19218[i] = gUnknown_02038696[i]; } sub_80B159C(); } @@ -576,8 +575,8 @@ void CB2_StartContest(void) { case 0: SetVBlankCallback(NULL); - sub_80AB320(); - sub_80AB1BC(); + SetUpContestWindow(); + ResetContestGpuRegs(); dp12_8087EA4(); ResetPaletteFade(); gPaletteFade.bufferTransferDisabled = TRUE; @@ -589,7 +588,7 @@ void CB2_StartContest(void) //shared18000.unk18000 = 0; gSharedMem[0x18000] = 0; ClearBattleMonForms(); - sub_80AB398(); + ClearContestVars(); gMain.state++; break; case 1: @@ -597,9 +596,9 @@ void CB2_StartContest(void) gMain.state++; break; case 2: - if (sub_80AB70C(&shared19204.unk1925D) == 0) + if (sub_80AB70C(&sContest.unk1925D) == 0) break; - shared19204.unk1925D = 0; + sContest.unk1925D = 0; gMain.state++; break; case 3: @@ -609,7 +608,7 @@ void CB2_StartContest(void) BeginFastPaletteFade(2); gPaletteFade.bufferTransferDisabled = FALSE; SetVBlankCallback(ContestVBlankCallback); - shared19204.mainTaskId = CreateTask(sub_80AB5D4, 10); + sContest.mainTaskId = CreateTask(sub_80AB5D4, 10); SetMainCallback2(ContestMainCallback2); break; } @@ -659,7 +658,7 @@ void sub_80AB6B4(u8 taskId) { GetMultiplayerId(); // unused return value DestroyTask(taskId); - gTasks[shared19204.mainTaskId].func = sub_80AB960; + gTasks[sContest.mainTaskId].func = sub_80AB960; gRngValue = gUnknown_03005D28; } } @@ -695,18 +694,14 @@ u8 sub_80AB70C(u8 *a) CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, sp20, 16 * sizeof(u16)); CpuCopy32(sp20, gPlttBufferUnfaded + 128, 16 * sizeof(u16)); CpuCopy32(sp0, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16)); - { - void *src = gPlttBufferUnfaded; - void *dest = shared18000.unk18004; - DmaCopy32(3, src, dest, 0x200); - } + DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18004, 0x200); sub_80AB350(); break; case 6: sub_80B1118(); sub_80AFA5C(); sub_80AEB30(); - shared19204.unk19216 = sub_80AE8B4(); + sContest.unk19216 = sub_80AE8B4(); sub_80AFE30(); sub_80B0034(); CreateApplauseMeterSprite(); @@ -771,7 +766,7 @@ void sub_80AB9A0(u8 taskId) break; case 4: default: - if (shared19204.unk1920A_6) + if (sContest.unk1920A_6) break; gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; @@ -813,16 +808,12 @@ void sub_80ABB70(u8 taskId) gUnknown_030042A0 = 0; gUnknown_03004280 = 0; sub_80B0D7C(); - { - void *src = gPlttBufferUnfaded; - void *dest = shared18000.unk18204; - DmaCopy32(3, src, dest, 0x400); - } + DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400); if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) StringCopy(gDisplayedStringBattle, gText_Contest_WhichMoveWillBePlayed); else StringCopy(gDisplayedStringBattle, gText_Contest_ButItCantParticipate); - InsertStringDigit(gDisplayedStringBattle, shared19204.turnNumber + 1); + InsertStringDigit(gDisplayedStringBattle, sContest.turnNumber + 1); sub_80AF138(); StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); @@ -873,15 +864,15 @@ void sub_80ABCDC(u8 taskId) u16 move = gContestMons[gContestPlayerMonIndex].moves[i]; u8 *r5 = sp8; - if (shared19260_[gContestPlayerMonIndex].prevMove != MOVE_NONE + if (sContestantStatus[gContestPlayerMonIndex].prevMove != MOVE_NONE && sub_80B214C(gContestPlayerMonIndex) - && AreMovesContestCombo(shared19260_[gContestPlayerMonIndex].prevMove, move) - && shared19260_[gContestPlayerMonIndex].unk15_4) + && AreMovesContestCombo(sContestantStatus[gContestPlayerMonIndex].prevMove, move) != 0 + && sContestantStatus[gContestPlayerMonIndex].unk15_4) { r5 = StringCopy(sp8, gUnknownText_UnknownFormatting2); } else if (move != 0 - && shared19260_[gContestPlayerMonIndex].prevMove == move + && sContestantStatus[gContestPlayerMonIndex].prevMove == move && gContestMoves[move].effect != CONTEST_EFFECT_REPEATABLE) { // Gray the text because it is a repeated move @@ -900,11 +891,12 @@ void sub_80ABCDC(u8 taskId) } sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 72); - sub_80AC0AC(shared19204.playerMoveChoice); - sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.playerMoveChoice]); + sub_80AC0AC(sContest.playerMoveChoice); + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]); gTasks[taskId].func = sub_80ABEA0; } +// Handle move selection input void sub_80ABEA0(u8 taskId) { u8 numMoves = 0; @@ -941,7 +933,7 @@ void sub_80ABEA0(u8 taskId) StringCopy(gDisplayedStringBattle, gText_Contest_WhichMoveWillBePlayed); else StringCopy(gDisplayedStringBattle, gText_Contest_ButItCantParticipate); - InsertStringDigit(gDisplayedStringBattle, shared19204.turnNumber + 1); + InsertStringDigit(gDisplayedStringBattle, sContest.turnNumber + 1); sub_80AF138(); StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); sub_8003460(&gMenuWindow, gStringVar4, 776, 1, 15); @@ -953,26 +945,26 @@ void sub_80ABEA0(u8 taskId) case DPAD_RIGHT: break; case DPAD_UP: - nullsub_17(shared19204.playerMoveChoice); - if (shared19204.playerMoveChoice == 0) - shared19204.playerMoveChoice = numMoves - 1; + nullsub_17(sContest.playerMoveChoice); + if (sContest.playerMoveChoice == 0) + sContest.playerMoveChoice = numMoves - 1; else - shared19204.playerMoveChoice--; - sub_80AC0AC(shared19204.playerMoveChoice); + sContest.playerMoveChoice--; + sub_80AC0AC(sContest.playerMoveChoice); sub_80AED58(); - sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.playerMoveChoice]); + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]); if (numMoves > 1) PlaySE(SE_SELECT); break; case DPAD_DOWN: - nullsub_17(shared19204.playerMoveChoice); - if (shared19204.playerMoveChoice == numMoves - 1) - shared19204.playerMoveChoice = 0; + nullsub_17(sContest.playerMoveChoice); + if (sContest.playerMoveChoice == numMoves - 1) + sContest.playerMoveChoice = 0; else - shared19204.playerMoveChoice++; - sub_80AC0AC(shared19204.playerMoveChoice); + sContest.playerMoveChoice++; + sub_80AC0AC(sContest.playerMoveChoice); sub_80AED58(); - sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[shared19204.playerMoveChoice]); + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]); if (numMoves > 1) PlaySE(SE_SELECT); break; @@ -996,7 +988,7 @@ void sub_80AC0C8(u8 taskId) u16 var = GetChosenMove(gContestPlayerMonIndex); u8 taskId2; - shared19260_[gContestPlayerMonIndex].currMove = var; + sContestantStatus[gContestPlayerMonIndex].currMove = var; taskId2 = CreateTask(sub_80C8A38, 0); SetTaskFuncWithFollowupFunc(taskId2, sub_80C8A38, sub_80AC15C); gTasks[taskId].func = nullsub_89; @@ -1013,7 +1005,7 @@ void sub_80AC0C8(u8 taskId) void sub_80AC15C(u8 taskId) { DestroyTask(taskId); - gTasks[shared19204.mainTaskId].func = sub_80AC188; + gTasks[sContest.mainTaskId].func = sub_80AC188; } void sub_80AC188(u8 taskId) @@ -1022,12 +1014,7 @@ void sub_80AC188(u8 taskId) gUnknown_030042A0 = 0; gUnknown_03004280 = 0; sub_80AFFE0(FALSE); - { - void *src = gPlttBufferFaded; - void *dest = shared18000.unk18604; - u32 size = 0x400; - DmaCopy32(3, src, dest, size); - } + DmaCopy32Defvars(3, gPlttBufferFaded, shared18000.unk18604, 0x400); LoadPalette(shared18000.unk18204, 0, 0x400); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; @@ -1050,8 +1037,7 @@ void sub_80AC204(u8 taskId) void sub_80AC250(u8 taskId) { - if (!shared19204.unk1920A_6 && !shared19204.unk1920B_1) - //if (!(shared19204.unk1920A & 0x40) && !(shared19204.unk1920B & 2)) + if (!sContest.unk1920A_6 && !sContest.unk1920B_1) gTasks[taskId].func = sub_80AC284; } @@ -1059,8 +1045,8 @@ void sub_80AC284(u8 taskId) { if (++gTasks[taskId].data[0] > 19) { - shared19204.unk19214 = 0; - shared19204.unk1921C = gRngValue; + sContest.unk19214 = 0; + sContest.unk1921C = gRngValue; gTasks[taskId].data[0] = 0; gTasks[taskId].func = sub_80AC2CC; } @@ -1069,25 +1055,25 @@ void sub_80AC284(u8 taskId) void sub_80AC2CC(u8 taskId) { u8 spriteId; - s32 r6; - u8 r7 = shared19204.unk19215; + s32 i; + u8 r7 = sContest.unk19215; s8 r4; switch (gTasks[taskId].data[0]) { case 0: sub_80B0D7C(); - for (r6 = 0; shared19204.unk19214 != shared192D0_.unk0[r6]; r6++) + for (i = 0; sContest.unk19214 != shared192D0_.unk0[i]; i++) ; - shared19204.unk19215 = r6; - r7 = shared19204.unk19215; + sContest.unk19215 = i; + r7 = sContest.unk19215; if (gIsLinkContest & 1) { u8 taskId2; - shared19204.unk1920B_2 = 1; + sContest.unk1920B_2 = 1; if (sub_80AE074()) - sub_80B114C(shared19204.unk19215); + sub_80B114C(sContest.unk19215); taskId2 = CreateTask(sub_80C8C80, 0); SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); sub_80AF860(); @@ -1095,17 +1081,17 @@ void sub_80AC2CC(u8 taskId) } else { - sub_80B114C(shared19204.unk19215); + sub_80B114C(sContest.unk19215); gTasks[taskId].data[0] = 2; } return; case 1: - if (!shared19204.unk1920B_2) + if (!sContest.unk1920B_2) gTasks[taskId].data[0] = 2; return; case 2: - if (shared19260_[r7].unkC_1 != 0 - || shared19260_[r7].unkB_7) + if (sContestantStatus[r7].unkC_1 != 0 + || sContestantStatus[r7].unkB_7) { gTasks[taskId].data[0] = 31; } @@ -1118,19 +1104,19 @@ void sub_80AC2CC(u8 taskId) } return; case 3: - for (r6 = 0; r6 < 4; r6++) - gBattleMonForms[r6] = 0; + for (i = 0; i < 4; i++) + gBattleMonForms[i] = 0; memset(&shared19348_, 0, sizeof(shared19348_)); - sub_80B28F0(shared19204.unk19215); + sub_80B28F0(sContest.unk19215); spriteId = sub_80AE9FC( - gContestMons[shared19204.unk19215].species, - gContestMons[shared19204.unk19215].otId, - gContestMons[shared19204.unk19215].personality); + gContestMons[sContest.unk19215].species, + gContestMons[sContest.unk19215].otId, + gContestMons[sContest.unk19215].personality); gSprites[spriteId].pos2.x = 120; gSprites[spriteId].callback = sub_80AD8FC; gTasks[taskId].data[2] = spriteId; gObjectBankIDs[gBankAttacker] = spriteId; - sub_80B0BC4(sub_80B09E4(shared19204.unk19215), FALSE); + sub_80B0BC4(sub_80B09E4(sContest.unk19215), FALSE); gTasks[taskId].data[0] = 4; return; case 4: @@ -1142,7 +1128,7 @@ void sub_80AC2CC(u8 taskId) } return; case 5: - if (shared19260_[r7].unkC_0) + if (sContestantStatus[r7].unkC_0) { gTasks[taskId].data[0] = 33; } @@ -1150,10 +1136,10 @@ void sub_80AC2CC(u8 taskId) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); - if (shared19260_[r7].currMove < NUM_MOVES) - StringCopy(gStringVar2, gMoveNames[shared19260_[r7].currMove]); + if (sContestantStatus[r7].currMove < NUM_MOVES) + StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]); else - StringCopy(gStringVar2, gUnknown_083CC330[shared19260_[r7].unkA]); + StringCopy(gStringVar2, gUnknown_083CC330[sContestantStatus[r7].moveCategory]); StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 6; @@ -1162,16 +1148,16 @@ void sub_80AC2CC(u8 taskId) case 6: if (sub_80037A0(&gMenuWindow) != 0) { - shared19204.unk1925E = 0; + sContest.unk1925E = 0; gTasks[taskId].data[0] = 7; } return; case 7: { - u16 move = SanitizeMove(shared19260_[shared19204.unk19215].currMove); + u16 move = SanitizeMove(sContestantStatus[sContest.unk19215].currMove); - sub_80B2790(shared19204.unk19215); - sub_80B28F0(shared19204.unk19215); + sub_80B2790(sContest.unk19215); + sub_80B28F0(sContest.unk19215); SelectContestMoveBankTarget(move); ExecuteMoveAnim(move); gTasks[taskId].data[0] = 8; @@ -1182,14 +1168,14 @@ void sub_80AC2CC(u8 taskId) if (!gAnimScriptActive) { sub_80B28CC(r7); - if (shared19204.unk1925E != 0) + if (sContest.unk1925E != 0) { gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 9; } else { - if (!shared19260_[r7].unk15_4) + if (!sContestantStatus[r7].unk15_4) sub_80B03A8(r7); sub_80B20C4(); gTasks[taskId].data[0] = 23; @@ -1205,25 +1191,25 @@ void sub_80AC2CC(u8 taskId) return; case 23: gTasks[taskId].data[1] = 0; - if (shared19260_[r7].unk13 != 0xFF) + if (sContestantStatus[r7].unk13 != 0xFF) { - sub_80B146C(r7, shared19260_[r7].unk13); - shared19260_[r7].unk13 = 0xFF; + sub_80B146C(r7, sContestantStatus[r7].unk13); + sContestantStatus[r7].unk13 = 0xFF; gTasks[taskId].data[0] = 24; } else { - if (shared19260_[r7].unk14 != 0xFF) + if (sContestantStatus[r7].unk14 != 0xFF) { - for (r6 = 0; r6 < 4; r6++) + for (i = 0; i < 4; i++) { - if (r6 != r7 && shared19260_[r6].unk13 != 0xFF) + if (i != r7 && sContestantStatus[i].unk13 != 0xFF) break; } - if (r6 == 4) + if (i == 4) { - sub_80B146C(r7, shared19260_[r7].unk14); - shared19260_[r7].unk14 = 0xFF; + sub_80B146C(r7, sContestantStatus[r7].unk14); + sContestantStatus[r7].unk14 = 0xFF; gTasks[taskId].data[0] = 24; } else @@ -1242,15 +1228,15 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 23; return; case 48: - if (shared19260_[r7].unk11_0 == 1) + if (sContestantStatus[r7].unk11_0 == 1) { sub_80B1710(5); } - else if (shared19260_[r7].unk11_0 == 2) + else if (sContestantStatus[r7].unk11_0 == 2) { sub_80B1710(6); } - else if (shared19260_[r7].unk11_0 == 3) + else if (sContestantStatus[r7].unk11_0 == 3) { sub_80B1710(7); } @@ -1262,7 +1248,7 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 49; return; case 49: - if (!shared19204.unk1920A_4) + if (!sContest.unk1920A_4) gTasks[taskId].data[0] = 47; return; case 47: @@ -1270,20 +1256,20 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 12; return; case 12: - sub_80AFBA0(0, shared19260_[r7].unk2, r7); + sub_80AFBA0(0, sContestantStatus[r7].appeal2, r7); gTasks[taskId].data[0] = 13; return; case 13: - if (!shared19338[shared19204.unk19215].unk2_2) + if (!shared19338[sContest.unk19215].unk2_2) gTasks[taskId].data[0] = 35; return; case 35: - if (shared19260_[r7].unk10_4 == 1) + if (sContestantStatus[r7].unk10_4 == 1) sub_80B1710(8); gTasks[taskId].data[0] = 36; return; case 36: - if (!shared19204.unk1920A_4) + if (!sContest.unk1920A_4) gTasks[taskId].data[0] = 37; return; case 37: @@ -1318,13 +1304,13 @@ void sub_80AC2CC(u8 taskId) s32 r2 = 0; r4 = 0; - for (r6 = gTasks[taskId].data[1]; r6 < 4; r6++) + for (i = gTasks[taskId].data[1]; i < 4; i++) { r4 = 0; for (r2 = 0; r2 < 4; r2++) { - if (r2 != r7 && gUnknown_02038696[r2] == r6 - && shared19260_[r2].unk13 != 0xFF) + if (r2 != r7 && gUnknown_02038696[r2] == i + && sContestantStatus[r2].unk13 != 0xFF) { r4 = 1; break; @@ -1336,8 +1322,8 @@ void sub_80AC2CC(u8 taskId) if (r4) { gTasks[taskId].data[1] = gUnknown_02038696[r2]; - sub_80B146C(r2, shared19260_[r2].unk13); - shared19260_[r2].unk13 = 0xFF; + sub_80B146C(r2, sContestantStatus[r2].unk13); + sContestantStatus[r2].unk13 = 0xFF; gTasks[taskId].data[0] = 27; } else @@ -1354,21 +1340,21 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 28; return; case 28: - for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) + for (i = 0; gTasks[taskId].data[1] != gUnknown_02038696[i]; i++) ; - sub_80AFBA0(shared19260_[r6].unk2 + shared19260_[r6].unkE, -shared19260_[r6].unkE, r6); + sub_80AFBA0(sContestantStatus[i].appeal2 + sContestantStatus[i].unkE, -sContestantStatus[i].unkE, i); gTasks[taskId].data[0] = 29; return; case 29: - for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) + for (i = 0; gTasks[taskId].data[1] != gUnknown_02038696[i]; i++) ; - if (!shared19338[r6].unk2_2) + if (!shared19338[i].unk2_2) gTasks[taskId].data[0] = 39; return; case 39: - for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) + for (i = 0; gTasks[taskId].data[1] != gUnknown_02038696[i]; i++) ; - if (sub_80AEE54(r6, 1)) + if (sub_80AEE54(i, 1)) { gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 40; @@ -1386,19 +1372,19 @@ void sub_80AC2CC(u8 taskId) } return; case 30: - for (r6 = 0; r6 < 4; r6++) + for (i = 0; i < 4; i++) { - if (gUnknown_02038696[r6] == gTasks[taskId].data[1]) + if (gUnknown_02038696[i] == gTasks[taskId].data[1]) break; } - if (sub_80AF038(r6)) + if (sub_80AF038(i)) PlaySE(SE_C_PASI); else PlaySE(SE_C_SYU); - if (shared19260_[r6].unk15_5) + if (sContestantStatus[i].unk15_5) { - sub_80B03A8(r6); - shared19260_[r6].unk15_5 = 0; + sub_80B03A8(i); + sContestantStatus[i].unk15_5 = 0; } gTasks[taskId].data[1]++; gTasks[taskId].data[0] = 26; @@ -1407,12 +1393,12 @@ void sub_80AC2CC(u8 taskId) if (gTasks[taskId].data[10]++ > 9) { gTasks[taskId].data[10] = 0; - if (shared19260_[r7].unkC_1 != 0 - || shared19260_[r7].unk11_2) + if (sContestantStatus[r7].unkC_1 != 0 + || sContestantStatus[r7].unk11_2) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC103); + StringExpandPlaceholders(gStringVar4, ContestString_CantAppealNextTurn); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); } gTasks[taskId].data[0] = 52; @@ -1421,23 +1407,23 @@ void sub_80AC2CC(u8 taskId) case 52: if (sub_80037A0(&gMenuWindow) != 0) { - if (!shared19260_[r7].unk15_6) + if (!sContestantStatus[r7].unk15_6) gTasks[taskId].data[0] = 17; else gTasks[taskId].data[0] = 14; } return; case 14: - r4 = shared19260_[r7].unk16; - if (shared19260_[r7].unk16 != 0) + r4 = sContestantStatus[r7].unk16; + if (sContestantStatus[r7].unk16 != 0) { sub_80AF138(); if (r4 == 1) - sub_8002EB0(&gMenuWindow, gUnknown_083CBD79, 776, 1, 15); + sub_8002EB0(&gMenuWindow, ContestString_WentOverWell, 776, 1, 15); else if (r4 == 2) - sub_8002EB0(&gMenuWindow, gUnknown_083CBD9D, 776, 1, 15); + sub_8002EB0(&gMenuWindow, ContestString_WentOverVeryWell, 776, 1, 15); else - sub_8002EB0(&gMenuWindow, gUnknown_083CBDC6, 776, 1, 15); + sub_8002EB0(&gMenuWindow, ContestString_AppealComboExcellently, 776, 1, 15); sub_80B1710(3); gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 45; @@ -1446,7 +1432,7 @@ void sub_80AC2CC(u8 taskId) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CBD52); + StringExpandPlaceholders(gStringVar4, ContestString_JudgeExpectantly2); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); sub_80B1710(2); gTasks[taskId].data[10] = 0; @@ -1454,9 +1440,9 @@ void sub_80AC2CC(u8 taskId) } return; case 45: - if (!shared19204.unk1920A_4) + if (!sContest.unk1920A_4) { - sub_80B09B0(shared19204.unk19215); + sub_80B09B0(sContest.unk19215); gTasks[taskId].data[0] = 15; } return; @@ -1465,13 +1451,13 @@ void sub_80AC2CC(u8 taskId) { if (++gTasks[taskId].data[10] > 50) { - if (!shared19260_[r7].unk15_4) + if (!sContestantStatus[r7].unk15_4) { sub_80AFBA0( - shared19260_[r7].unk2, - shared19260_[r7].unk17, + sContestantStatus[r7].appeal2, + sContestantStatus[r7].unk17, r7); - shared19260_[r7].unk2 += shared19260_[r7].unk17; + sContestantStatus[r7].appeal2 += sContestantStatus[r7].unk17; } gTasks[taskId].data[0] = 16; } @@ -1485,11 +1471,11 @@ void sub_80AC2CC(u8 taskId) } return; case 17: - if (shared19260_[r7].unk15_0) + if (sContestantStatus[r7].disappointedRepeat) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC075); + StringExpandPlaceholders(gStringVar4, ContestString_DissapointedRepeat); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[10] = 0; sub_80B1710(0); @@ -1501,14 +1487,14 @@ void sub_80AC2CC(u8 taskId) } return; case 46: - if (!shared19204.unk1920A_4) + if (!sContest.unk1920A_4) gTasks[taskId].data[0] = 19; return; case 19: if (sub_80037A0(&gMenuWindow) != 0) { - sub_80AFBA0(shared19260_[r7].unk2, -shared19260_[r7].unk18, r7); - shared19260_[r7].unk2 -= shared19260_[r7].unk18; + sub_80AFBA0(sContestantStatus[r7].appeal2, -sContestantStatus[r7].unk18, r7); + sContestantStatus[r7].appeal2 -= sContestantStatus[r7].unk18; gTasks[taskId].data[0] = 18; } return; @@ -1529,25 +1515,25 @@ void sub_80AC2CC(u8 taskId) else { r4 = shared19328.bits_0; - if (shared19260_[r7].unk11_4) + if (sContestantStatus[r7].unk11_4) { r4 = 1; - StringCopy(gStringVar3, gMoveNames[shared19260_[r7].currMove]); + StringCopy(gStringVar3, gMoveNames[sContestantStatus[r7].currMove]); } else { - StringCopy(gStringVar3, gContestCategoryStrings[gContestMoves[shared19260_[r7].currMove].contestCategory]); + StringCopy(gStringVar3, gContestCategoryStrings[gContestMoves[sContestantStatus[r7].currMove].contestCategory]); } if (r4 > 0) { - if (shared19260_[r7].unk15_0) + if (sContestantStatus[r7].disappointedRepeat) r4 = 0; } sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); - shared19204.unk19217 += r4; - if (shared19204.unk19217 < 0) - shared19204.unk19217 = 0; + sContest.applauseLevel += r4; + if (sContest.applauseLevel < 0) + sContest.applauseLevel = 0; if (r4 == 0) { gTasks[taskId].data[0] = 55; @@ -1555,11 +1541,11 @@ void sub_80AC2CC(u8 taskId) else { if (r4 < 0) - StringExpandPlaceholders(gStringVar4, gUnknown_083CC0BC); - else if (r4 > 0 && shared19204.unk19217 <= 4) - StringExpandPlaceholders(gStringVar4, gUnknown_083CC0A0); + StringExpandPlaceholders(gStringVar4, ContestString_DidntGoWell); + else if (r4 > 0 && sContest.applauseLevel <= 4) + StringExpandPlaceholders(gStringVar4, ContestString_WentOverGreat); else - StringExpandPlaceholders(gStringVar4, gUnknown_083CC0E3); + StringExpandPlaceholders(gStringVar4, ContestString_GotCrowdGoing); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] = 0; @@ -1579,14 +1565,14 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[10]++; break; case 1: - if (!shared19204.unk1920B_0 && sub_80037A0(&gMenuWindow) != 0) + if (!sContest.unk1920B_0 && sub_80037A0(&gMenuWindow) != 0) { sub_80B1CBC(-1); gTasks[taskId].data[10]++; } break; case 2: - if (!shared19204.unk1920A_5) + if (!sContest.unk1920A_5) { if (gTasks[taskId].data[11]++ > 29) { @@ -1617,7 +1603,7 @@ void sub_80AC2CC(u8 taskId) } break; case 1: - if (!shared19204.unk1920B_0) + if (!sContest.unk1920B_0) { sub_80B1DDC(); PlaySE(SE_W227B); @@ -1626,13 +1612,13 @@ void sub_80AC2CC(u8 taskId) } break; case 2: - if (!shared19204.unk1920A_5) + if (!sContest.unk1920A_5) { if (gTasks[taskId].data[11]++ > 29) { gTasks[taskId].data[11] = 0; - sub_80AFBA0(shared19260_[r7].unk2, shared19328.unk2, r7); - shared19260_[r7].unk2 += shared19328.unk2; + sub_80AFBA0(sContestantStatus[r7].appeal2, shared19328.unk2, r7); + sContestantStatus[r7].appeal2 += shared19328.unk2; gTasks[taskId].data[10]++; } } @@ -1640,7 +1626,7 @@ void sub_80AC2CC(u8 taskId) case 3: if (!shared19338[r7].unk2_2) { - if (!shared19204.unk1920A_7) + if (!sContest.unk1920A_7) { sub_80B1EA8(1, -1); gTasks[taskId].data[10]++; @@ -1668,8 +1654,8 @@ void sub_80AC2CC(u8 taskId) sub_80AF138(); StringCopy(gStringVar3, gContestMons[shared19328.bits_9].nickname); StringCopy(gStringVar1, gContestMons[r7].nickname); - StringCopy(gStringVar2, gMoveNames[shared19260_[r7].currMove]); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC14A); + StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]); + StringExpandPlaceholders(gStringVar4, ContestString_CrowdWatches); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 58; return; @@ -1677,7 +1663,7 @@ void sub_80AC2CC(u8 taskId) if (sub_80037A0(&gMenuWindow) != 0) { sub_80AF138(); - StringExpandPlaceholders(gStringVar4, gUnknown_083CC16E); + StringExpandPlaceholders(gStringVar4, ContestString_Ignored2); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 59; } @@ -1690,11 +1676,11 @@ void sub_80AC2CC(u8 taskId) } return; case 33: - if (shared19260_[r7].unk15_4) - shared19260_[r7].unk15_4 = 0; + if (sContestantStatus[r7].unk15_4) + sContestantStatus[r7].unk15_4 = 0; sub_80B09B0(r7); StringCopy(gStringVar1, gContestMons[r7].nickname); - StringCopy(gStringVar2, gMoveNames[shared19260_[r7].currMove]); + StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]); StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 34; @@ -1708,11 +1694,11 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 56; return; case 56: - if (!shared19204.unk1920A_6) + if (!sContest.unk1920A_6) { - if (shared19204.unk19217 > 4) + if (sContest.applauseLevel > 4) { - shared19204.unk19217 = 0; + sContest.applauseLevel = 0; sub_80B1928(); } gTasks[taskId].data[0] = 10; @@ -1733,8 +1719,8 @@ void sub_80AC2CC(u8 taskId) } return; case 20: - for (r6 = 0; r6 < 4; r6++) - sub_80B0CDC(r6, 1); + for (i = 0; i < 4; i++) + sub_80B0CDC(i, 1); gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 21; return; @@ -1757,7 +1743,7 @@ void sub_80AC2CC(u8 taskId) } return; case 22: - if (++shared19204.unk19214 == 4) + if (++sContest.unk19214 == 4) { gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; @@ -1775,7 +1761,7 @@ void sub_80AC2CC(u8 taskId) void sub_80AD8DC(u8 taskId) { - shared19204.unk1920B_2 = 0; + sContest.unk1920B_2 = 0; DestroyTask(taskId); } @@ -1814,7 +1800,7 @@ void sub_80AD960(u8 taskId) { u8 taskId2; - shared19204.unk1920B_2 = 1; + sContest.unk1920B_2 = 1; if (sub_80AE074()) { sub_80AF2FC(); @@ -1833,7 +1819,7 @@ void sub_80AD960(u8 taskId) } break; case 1: - if (!shared19204.unk1920B_2) + if (!sContest.unk1920B_2) gTasks[taskId].data[0] = 2; break; case 2: @@ -1864,7 +1850,7 @@ void sub_80ADA4C(u8 taskId) } break; case 1: - if (!shared19204.unk1920B_1) + if (!sContest.unk1920B_1) { if (++gTasks[taskId].data[1] > 20) { @@ -1890,11 +1876,7 @@ void sub_80ADAD8(u8 taskId) void sub_80ADB04(u8 taskId) { - { - void *src = shared18000.unk18204; - void *dest = gPlttBufferUnfaded; - DmaCopy32(3, src, dest, 0x400); - } + DmaCopy32Defvars(3, shared18000.unk18204, gPlttBufferUnfaded, 0x400); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 2; gTasks[taskId].func = sub_80ADB48; @@ -1912,7 +1894,7 @@ void sub_80ADB48(u8 taskId) void sub_80ADB88(u8 taskId) { - u8 r4 = shared19260_[gContestPlayerMonIndex].unk1A; + u8 r4 = sContestantStatus[gContestPlayerMonIndex].attentionLevel; sub_80AF138(); StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname); @@ -1966,7 +1948,7 @@ void sub_80ADD04(u8 taskId) { REG_BG0CNT_BITFIELD.priority = 0; REG_BG2CNT_BITFIELD.priority = 0; - if (++shared19204.turnNumber == 5) + if (++sContest.turnNumber == 5) { gTasks[taskId].func = sub_80ADDA4; } @@ -1979,7 +1961,7 @@ void sub_80ADD04(u8 taskId) void sub_80ADD74(u8 taskId) { - if (!shared19204.unk1920A_6) + if (!sContest.unk1920A_6) gTasks[taskId].func = sub_80ABB70; } @@ -1990,10 +1972,10 @@ void sub_80ADDA4(u8 taskId) gUnknown_030042A0 = 0; gUnknown_03004280 = 0; for (i = 0; i < 4; i++) - gUnknown_02038680[i] = shared19260_[i].unk4; + gUnknown_02038680[i] = sContestantStatus[i].unk4; sub_80AF668(); sub_80AF138(); - sub_80BE23C(shared19260_[gContestPlayerMonIndex].prevMove); + sub_80BE23C(sContestantStatus[gContestPlayerMonIndex].prevMove); gUnknown_03005D28 = gRngValue; StringExpandPlaceholders(gStringVar4, gUnknown_083CB02C); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); @@ -2057,7 +2039,7 @@ void sub_80ADF98(u8 taskId) { DestroyTask(taskId); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[shared19204.mainTaskId].func = sub_80ADFD8; + gTasks[sContest.mainTaskId].func = sub_80ADFD8; } void sub_80ADFD8(u8 taskId) @@ -2112,7 +2094,7 @@ bool8 sub_80AE074(void) return FALSE; } -void CreatePlayerContestMon(u8 partyIndex) +void Contest_CreatePlayerMon(u8 partyIndex) { u8 name[20]; u16 heldItem; @@ -2204,7 +2186,7 @@ void CreatePlayerContestMon(u8 partyIndex) gContestMons[gContestPlayerMonIndex].tough = tough; } -void sub_80AE398(u8 a, u8 b) +void Contest_InitAllPokemon(u8 a, u8 b) { s32 i; u8 opponentsCount = 0; @@ -2252,7 +2234,7 @@ void sub_80AE398(u8 a, u8 b) asm(""::"r"(i)); #endif - CreatePlayerContestMon(gUnknown_02038694); + Contest_CreatePlayerMon(gUnknown_02038694); } // GetContestAvailability? @@ -2267,19 +2249,19 @@ u8 sub_80AE47C(struct Pokemon *pkmn) return 4; switch (gSpecialVar_ContestCategory) { - case 0: + case CONTEST_CATEGORY_COOL: ribbon = GetMonData(pkmn, MON_DATA_COOL_RIBBON); break; - case 1: + case CONTEST_CATEGORY_BEAUTY: ribbon = GetMonData(pkmn, MON_DATA_BEAUTY_RIBBON); break; - case 2: + case CONTEST_CATEGORY_CUTE: ribbon = GetMonData(pkmn, MON_DATA_CUTE_RIBBON); break; - case 3: + case CONTEST_CATEGORY_SMART: ribbon = GetMonData(pkmn, MON_DATA_SMART_RIBBON); break; - case 4: + case CONTEST_CATEGORY_TOUGH: ribbon = GetMonData(pkmn, MON_DATA_TOUGH_RIBBON); break; default: @@ -2329,7 +2311,7 @@ void sub_80AE5BC(u8 a) sub_80AE5D4(a, a + 10); } -void sub_80AE5D4(u8 a, u8 b) +void sub_80AE5D4(u8 p, u8 b) { u8 *str = gDisplayedStringBattle; @@ -2338,28 +2320,29 @@ void sub_80AE5D4(u8 a, u8 b) str[1] = 6; str[2] = 4; str += 3; + *str++ = CHAR_SLASH; - if ((gIsLinkContest & 1) && gLinkPlayers[a].language == LANGUAGE_JAPANESE) + if ((gIsLinkContest & 1) && gLinkPlayers[p].language == LANGUAGE_JAPANESE) { - StringCopy(str, gLinkPlayers[a].name); + StringCopy(str, gLinkPlayers[p].name); sub_8004D04( &gUnknown_03004210, gDisplayedStringBattle, - 592 + gUnknown_02038696[a] * 22, - 251 + gUnknown_083CA310[gUnknown_02038696[a]][0] * 8, - gUnknown_083CA310[gUnknown_02038696[a]][1] * 8, + 592 + gUnknown_02038696[p] * 22, + 251 + gUnknown_083CA310[gUnknown_02038696[p]][0] * 8, + gUnknown_083CA310[gUnknown_02038696[p]][1] * 8, 1); } else { - StringCopy(str, gContestMons[a].trainerName); + StringCopy(str, gContestMons[p].trainerName); sub_8003460( &gUnknown_03004210, gDisplayedStringBattle, - 592 + gUnknown_02038696[a] * 22, - gUnknown_083CA310[gUnknown_02038696[a]][0], - gUnknown_083CA310[gUnknown_02038696[a]][1]); + 592 + gUnknown_02038696[p] * 22, + gUnknown_083CA310[gUnknown_02038696[p]][0], + gUnknown_083CA310[gUnknown_02038696[p]][1]); } } @@ -2532,9 +2515,7 @@ void sub_80AEB30(void) void sub_80AEB4C(void *a) { - void *src = a; - void *dest = (u8 *)a + 0x500; - DmaCopy16(3, src, dest, 0x280); + DmaCopy16Defvars(3, a, (u8 *)a + 0x500, 0x280); } u16 sub_80AEB68(u16 move, u8 b) @@ -2656,7 +2637,7 @@ void unref_sub_80AEE20(void) u8 i; for (i = 0; i < 4; i++) - sub_80AED7C(shared19260_[i].currMove, i); + sub_80AED7C(sContestantStatus[i].currMove, i); } u16 sub_80AEE4C(u8 unused) @@ -2670,14 +2651,14 @@ bool8 sub_80AEE54(u8 a, u8 b) u16 r8; s32 r4; - if (shared19260_[a].unk10_4 == 0) + if (sContestantStatus[a].unk10_4 == 0) return FALSE; r9 = gUnknown_02038696[a] * 5 + 2; - if (shared19260_[a].unk10_4 == 1) + if (sContestantStatus[a].unk10_4 == 1) { r8 = sub_80AEE4C(a); r4 = 0; - while (shared19260_[a].unkD / 10 > r4) + while (sContestantStatus[a].unkD / 10 > r4) { *(u16 *)(VRAM + 0xC026 + (r9 + r4) * 64) = r8; r4++; @@ -2685,14 +2666,14 @@ bool8 sub_80AEE54(u8 a, u8 b) if (b != 0) { PlaySE(SE_EXPMAX); - shared19260_[a].unk10_4 = 0; + sContestantStatus[a].unk10_4 = 0; } } else { r8 = 0; r4 = 3; - while (shared19260_[a].unkD / 10 < r4) + while (sContestantStatus[a].unkD / 10 < r4) { *(u16 *)(VRAM + 0xBFE6 + (r9 + r4) * 64) = r8; r4--; @@ -2700,7 +2681,7 @@ bool8 sub_80AEE54(u8 a, u8 b) if (b != 0) { PlaySE(SE_FU_ZAKU2); - shared19260_[a].unk10_4 = 0; + sContestantStatus[a].unk10_4 = 0; } } return TRUE; @@ -2717,7 +2698,7 @@ void sub_80AEF50(void) u16 r6 = sub_80AEE4C(i); r4 = 0; - while (r4 < shared19260_[i].unkD / 10) + while (r4 < sContestantStatus[i].unkD / 10) { *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6; r4++; @@ -2763,11 +2744,11 @@ bool8 sub_80AF038(u8 a) u16 r4 = 0; u8 r6 = gUnknown_02038696[a] * 5 + 2; - if (shared19260_[a].unk10_0 != 0 || shared19260_[a].unk10_1 != 0 || shared19260_[a].unk12 != 0 || shared19260_[a].unkF != 0) + if (sContestantStatus[a].unk10_0 != 0 || sContestantStatus[a].unk10_1 != 0 || sContestantStatus[a].unk12 != 0 || sContestantStatus[a].unkF != 0) r4 = sub_80AEFE8(a, 0); - else if (shared19260_[a].unkC_0) + else if (sContestantStatus[a].unkC_0) r4 = sub_80AEFE8(a, 1); - else if (shared19260_[a].unkC_1 != 0 || shared19260_[a].unkB_7) + else if (sContestantStatus[a].unkC_1 != 0 || sContestantStatus[a].unkB_7) r4 = sub_80AEFE8(a, 2); else r5 = FALSE; @@ -2807,7 +2788,7 @@ u16 GetChosenMove(u8 a) return 0; if (a == gContestPlayerMonIndex) { - return gContestMons[a].moves[shared19204.playerMoveChoice]; + return gContestMons[a].moves[sContest.playerMoveChoice]; } else { @@ -2824,7 +2805,7 @@ void sub_80AF1B8(void) u8 i; for (i = 0; i < 4; i++) - shared19260_[i].currMove = GetChosenMove(i); + sContestantStatus[i].currMove = GetChosenMove(i); } void sub_80AF1E4(u8 a, u8 b) @@ -2835,10 +2816,10 @@ void sub_80AF1E4(u8 a, u8 b) r3 = a + 10; else r3 = 14; - if (shared19260_[a].currMove == MOVE_NONE) + if (sContestantStatus[a].currMove == MOVE_NONE) sub_80AE598(gDisplayedStringBattle, gUnknownText_MissedTurn, r3); else - sub_80AE598(gDisplayedStringBattle, gMoveNames[shared19260_[a].currMove], r3); + sub_80AE598(gDisplayedStringBattle, gMoveNames[sContestantStatus[a].currMove], r3); sub_80AF2A0(a); sub_8003460( &gUnknown_03004210, @@ -2883,8 +2864,8 @@ void sub_80AF2FC(void) for (i = 0; i < 4; i++) { - shared19260_[i].unk4 += shared19260_[i].unk2; - arr[i] = shared19260_[i].unk4; + sContestantStatus[i].unk4 += sContestantStatus[i].appeal2; + arr[i] = sContestantStatus[i].unk4; } for (i = 0; i < 3; i++) { @@ -2903,9 +2884,9 @@ void sub_80AF2FC(void) { for (j = 0; j < 4; j++) { - if (shared19260_[i].unk4 == arr[j]) + if (sContestantStatus[i].unk4 == arr[j]) { - shared19260_[i].unkB_0 = j; + sContestantStatus[i].unkB_0 = j; break; } } @@ -2920,28 +2901,28 @@ void sub_80AF3C0(void) for (i = 0; i < 4; i++) { - u8 var; - - if (shared19260_[i].currMove == MOVE_NONE) - var = 5; - else if (shared19260_[i].unk2 <= 0) - var = 0; - else if (shared19260_[i].unk2 < 30) - var = 1; - else if (shared19260_[i].unk2 < 60) - var = 2; - else if (shared19260_[i].unk2 < 80) - var = 3; + u8 attentionLevel; + + if (sContestantStatus[i].currMove == MOVE_NONE) + attentionLevel = 5; + else if (sContestantStatus[i].appeal2 <= 0) + attentionLevel = 0; + else if (sContestantStatus[i].appeal2 < 30) + attentionLevel = 1; + else if (sContestantStatus[i].appeal2 < 60) + attentionLevel = 2; + else if (sContestantStatus[i].appeal2 < 80) + attentionLevel = 3; else - var = 4; + attentionLevel = 4; - shared19260_[i].unk1A = var; + sContestantStatus[i].attentionLevel = attentionLevel; } } bool8 sub_80AF404(u8 a) { - if (shared19260_[a].unkC_1 != 0 || shared19260_[a].unkB_7) + if (sContestantStatus[a].unkC_1 != 0 || sContestantStatus[a].unkB_7) return FALSE; else return TRUE; @@ -2954,50 +2935,50 @@ void sub_80AF438(void) for (i = 0; i < 4; i++) { // This is bitfield hell... - shared19260_[i].unk2 = 0; - shared19260_[i].unk0 = 0; - shared19260_[i].unk12 = 0; - if (shared19260_[i].unkC_1 > 0) - shared19260_[i].unkC_1--; - shared19260_[i].unkE = 0; - shared19260_[i].unk10_0 = 0; - shared19260_[i].unkF = 0; - shared19260_[i].unk10_1 = 0; - shared19260_[i].unk10_2 = 0; - shared19260_[i].unk10_3 = 0; - shared19260_[i].unkC_0 = 0; - shared19260_[i].unk13 = 0xFF; - shared19260_[i].unk14 = -1; - shared19260_[i].unk10_4 = 0; - shared19260_[i].unk15_2 = shared19260_[i].unk15_0; - shared19260_[i].unk15_0 = 0; - shared19260_[i].unk11_0 = 0; - shared19260_[i].unk11_5 = 0; - if (shared19260_[i].unk11_2) - { - shared19260_[i].unkC_1 = 1; - shared19260_[i].unk11_2 = 0; - } - if (shared19260_[i].unk11_3) - { - shared19260_[i].unkB_7 = 1; - shared19260_[i].unk11_3 = 0; - } - shared19260_[i].unk11_4 = 0; + sContestantStatus[i].appeal2 = 0; + sContestantStatus[i].appeal1 = 0; + sContestantStatus[i].unk12 = 0; + if (sContestantStatus[i].unkC_1 > 0) + sContestantStatus[i].unkC_1--; + sContestantStatus[i].unkE = 0; + sContestantStatus[i].unk10_0 = 0; + sContestantStatus[i].unkF = 0; + sContestantStatus[i].unk10_1 = 0; + sContestantStatus[i].unk10_2 = 0; + sContestantStatus[i].unk10_3 = 0; + sContestantStatus[i].unkC_0 = 0; + sContestantStatus[i].unk13 = 0xFF; + sContestantStatus[i].unk14 = -1; + sContestantStatus[i].unk10_4 = 0; + sContestantStatus[i].unk15_2 = sContestantStatus[i].disappointedRepeat; + sContestantStatus[i].disappointedRepeat = FALSE; + sContestantStatus[i].unk11_0 = 0; + sContestantStatus[i].unk11_5 = 0; + if (sContestantStatus[i].unk11_2) + { + sContestantStatus[i].unkC_1 = 1; + sContestantStatus[i].unk11_2 = 0; + } + if (sContestantStatus[i].unk11_3) + { + sContestantStatus[i].unkB_7 = 1; + sContestantStatus[i].unk11_3 = 0; + } + sContestantStatus[i].unk11_4 = 0; } for (i = 0; i < 4; i++) { - shared19260_[i].prevMove = shared19260_[i].currMove; - shared19204.unk19220[shared19204.turnNumber][i] = shared19260_[i].prevMove; - shared19204.unk19248[shared19204.turnNumber][i] = Contest_GetMoveExcitement(shared19260_[i].currMove); - shared19260_[i].currMove = MOVE_NONE; + sContestantStatus[i].prevMove = sContestantStatus[i].currMove; + sContest.unk19220[sContest.turnNumber][i] = sContestantStatus[i].prevMove; + sContest.unk19248[sContest.turnNumber][i] = Contest_GetMoveExcitement(sContestantStatus[i].currMove); + sContestantStatus[i].currMove = MOVE_NONE; } shared19328.bits_8 = 0; } bool8 Contest_IsMonsTurnDisabled(u8 a) { - if (shared19260_[a].unkC_1 != 0 || shared19260_[a].unkB_7) + if (sContestantStatus[a].unkC_1 != 0 || sContestantStatus[a].unkB_7) return TRUE; else return FALSE; @@ -3013,19 +2994,19 @@ bool8 unref_sub_80AF5D0(u8 a, u8 b) { if (b == 3) { - shared19204.unk1920A_0 = 1; + sContest.unk1920A_0 = 1; return TRUE; } if (b == 4) { - shared19204.unk1920A_1 = 1; + sContest.unk1920A_1 = 1; return TRUE; } - if (shared19204.unk19206[i] == b) + if (sContest.unk19206[i] == b) return TRUE; - if (shared19204.unk19206[i] == 0xFF) + if (sContest.unk19206[i] == 0xFF) { - shared19204.unk19206[i] = b; + sContest.unk19206[i] = b; return TRUE; } } @@ -3044,7 +3025,7 @@ void sub_80AF668(void) for (i = 0; i < 4; i++) sub_80AF630(i); - sub_80AF6A0(); + DetermineFinalStandings(); } s16 sub_80AF688(u8 a) @@ -3052,8 +3033,8 @@ s16 sub_80AF688(u8 a) return gUnknown_02038680[a] * 2; } -// Sorts something. Determines turn order, maybe? -void sub_80AF6A0(void) +// Determines standing order? +void DetermineFinalStandings(void) { u16 sp0[4] = {0}; struct UnknownContestStruct6 sp8[4]; @@ -3110,7 +3091,7 @@ void sub_80AF6A0(void) } for (i = 0; i < 4; i++) - gUnknown_02038690[sp8[i].unkC] = i; + gContestFinalStandings[sp8[i].unkC] = i; } bool8 sub_80AF828(s32 a, s32 b, struct UnknownContestStruct6 *c) @@ -3250,11 +3231,7 @@ void unref_sub_80AFAB8(s16 a, u8 b) arr[i] = 0; } - { - void *src = arr; - void *dest = (void *)(VRAM + 0xC000 + (148 + b * 160) * 2); - DmaCopy16(3, src, dest, sizeof(arr)); - } + DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xC000 + (148 + b * 160) * 2), sizeof(arr)); } u16 sub_80AFB40(u8 a) @@ -3413,7 +3390,7 @@ void sub_80AFE78(u8 a) shared19338[a].unk2_0 = 1; spriteId = shared19338[a].unk0; - r5 = shared19260_[a].unk4 / 10 * 2; + r5 = sContestantStatus[a].unk4 / 10 * 2; if (r5 > 56) r5 = 56; else if (r5 < 0) @@ -3513,7 +3490,7 @@ void CreateApplauseMeterSprite(void) LoadSpritePalette(&gUnknown_083CA474); spriteId = CreateSprite(&gSpriteTemplate_83CA484, 30, 44, 1); gSprites[spriteId].invisible = TRUE; - shared19204.applauseMeterSpriteId = spriteId; + sContest.applauseMeterSpriteId = spriteId; } void nullsub_18(s8 unused) @@ -3536,7 +3513,7 @@ void unref_sub_80B011C(void) gSprites[spriteId].invisible = TRUE; gSprites[spriteId].data[0] = i; - shared19204.unk1920D[i] = spriteId; + sContest.unk1920D[i] = spriteId; } } @@ -3545,7 +3522,7 @@ void unref_sub_80B01B0(void) s32 i; for (i = 0; i < 4; i++) - gSprites[shared19204.unk1920D[i]].callback = sub_80B0238; + gSprites[sContest.unk1920D[i]].callback = sub_80B0238; } bool8 unref_sub_80B01E0(void) @@ -3554,7 +3531,7 @@ bool8 unref_sub_80B01E0(void) for (i = 0; i < 4; i++) { - if (gSprites[shared19204.unk1920D[i]].callback != SpriteCallbackDummy) + if (gSprites[sContest.unk1920D[i]].callback != SpriteCallbackDummy) break; } if (i == 4) @@ -3590,7 +3567,7 @@ void sub_80B0280(struct Sprite *sprite) void sub_80B02A8(struct Sprite *sprite) { sprite->invisible = FALSE; - StartSpriteAnim(sprite, shared19260_[sprite->data[0]].unkB_0); + StartSpriteAnim(sprite, sContestantStatus[sprite->data[0]].unkB_0); StartSpriteAffineAnim(sprite, 2); sprite->callback = sub_80B02F4; PlaySE(SE_JYUNI); @@ -3611,15 +3588,15 @@ void sub_80B0324(void) u8 i; u8 taskId = CreateTask(sub_80B0458, 30); - shared19204.unk19211 = taskId; + sContest.unk19211 = taskId; for (i = 0; i < 4; i++) gTasks[taskId].data[i * 4] = 0xFF; } void sub_80B0368(u8 a) { - gTasks[shared19204.unk19211].data[a * 4 + 0] = 0; - gTasks[shared19204.unk19211].data[a * 4 + 1] = 0; + gTasks[sContest.unk19211].data[a * 4 + 0] = 0; + gTasks[sContest.unk19211].data[a * 4 + 1] = 0; } void sub_80B03A8(u8 a) @@ -3633,12 +3610,12 @@ void sub_80B03D8(u8 taskId) { u8 r4 = gTasks[taskId].data[0]; - if (gTasks[shared19204.unk19211].data[r4 * 4 + 0] == 0 - || gTasks[shared19204.unk19211].data[r4 * 4 + 0] == 0xFF) + if (gTasks[sContest.unk19211].data[r4 * 4 + 0] == 0 + || gTasks[sContest.unk19211].data[r4 * 4 + 0] == 0xFF) { - gTasks[shared19204.unk19211].data[r4 * 4 + 0] = 0xFF; - gTasks[shared19204.unk19211].data[r4 * 4 + 1] = 0; - BlendPalette((shared19204.unk19218[r4] + 5) * 16 + 6, 2, 0, 0x4BFF); + gTasks[sContest.unk19211].data[r4 * 4 + 0] = 0xFF; + gTasks[sContest.unk19211].data[r4 * 4 + 1] = 0; + BlendPalette((sContest.unk19218[r4] + 5) * 16 + 6, 2, 0, 0x4BFF); DestroyTask(taskId); } } @@ -3663,7 +3640,7 @@ void sub_80B0458(u8 taskId) gTasks[taskId].data[r3 + 1] ^= 1; BlendPalette( - (shared19204.unk19218[i] + 5) * 16 + 6, + (sContest.unk19218[i] + 5) * 16 + 6, 2, gTasks[taskId].data[r3 + 0], 0x4BFF); @@ -3675,15 +3652,15 @@ void sub_80B0518(void) { u8 i; - shared19204.unk19212 = CreateTask(sub_80B05FC, 30); + sContest.unk19212 = CreateTask(sub_80B05FC, 30); for (i = 0; i < 4; i++) sub_80B0548(i); } void sub_80B0548(u8 a) { - gTasks[shared19204.unk19212].data[a * 4 + 0] = 0xFF; - gTasks[shared19204.unk19212].data[a * 4 + 1] = 0; + gTasks[sContest.unk19212].data[a * 4 + 0] = 0xFF; + gTasks[sContest.unk19212].data[a * 4 + 1] = 0; } void sub_80B0588(void) @@ -3705,17 +3682,18 @@ void sub_80B05A4(u8 a) // 2-byte DMA copy? Why? r0 = a + 5; - { - void *src = gPlttBufferUnfaded + r0 * 16 + 10; - void *dest = gPlttBufferFaded + r0 * 16 + 10; - DmaCopy16(3, src, dest, 2); - } + DmaCopy16Defvars( + 3, + gPlttBufferUnfaded + r0 * 16 + 10, + gPlttBufferFaded + r0 * 16 + 10, + 2); + var = (a + 5) * 16 + 12 + a; - { - void *src = gPlttBufferUnfaded + var; - void *dest = gPlttBufferFaded + var; - DmaCopy16(3, src, dest, 2); - } + DmaCopy16Defvars( + 3, + gPlttBufferUnfaded + var, + gPlttBufferFaded + var, + 2); } void nullsub_19(int unused) @@ -4203,12 +4181,12 @@ _080B0990: .4byte gSharedMem + 0x19338\n\ void unref_sub_80B0994(u8 a) { if (a != 0) - shared19204.unk1920A_2 = 1; + sContest.unk1920A_2 = 1; } void sub_80B09B0(u8 a) { - if (shared19260_[a].unk15_4) + if (sContestantStatus[a].unk15_4) sub_80B0368(a); else sub_80B03A8(a); @@ -4372,7 +4350,7 @@ void sub_80B0D7C(void) } for (i = 0; i < 4; i++) { - r2 = shared19260_[i].unk4; + r2 = sContestantStatus[i].unk4; if (r2 < 0) { r2 = -r2; @@ -4390,7 +4368,7 @@ void sub_80B0D7C(void) } for (i = 0; i < 4; i++) { - r2 = shared19260_[i].unk2; + r2 = sContestantStatus[i].appeal2; if (r2 < 0) { r2 = -r2; @@ -4480,7 +4458,7 @@ void sub_80B0F28(u8 a) memset(sp0, 0xFF, sizeof(sp0)); for (i = 0; i < 4; i++) { - u8 r2 = shared19260_[i].unkB_0; + u8 r2 = sContestantStatus[i].unkB_0; while (1) { @@ -4498,7 +4476,7 @@ void sub_80B0F28(u8 a) { for (r4 = 3; r4 > i; r4--) { - if (shared19260_[r4 - 1].unkB_0 == shared19260_[r4].unkB_0 + if (sContestantStatus[r4 - 1].unkB_0 == sContestantStatus[r4].unkB_0 && gUnknown_02038696[r4 - 1] < gUnknown_02038696[r4] && sp4[r4 - 1] < sp4[r4]) { @@ -4524,90 +4502,90 @@ void sub_80B1118(void) sub_80AE514(); } -void sub_80B114C(u8 a) +void sub_80B114C(u8 contestant) { bool8 r8; s32 i; - shared19260_[a].unk2 = 0; - shared19260_[a].unk0 = 0; - r8 = sub_80AF404(a); + sContestantStatus[contestant].appeal2 = 0; + sContestantStatus[contestant].appeal1 = 0; + r8 = sub_80AF404(contestant); if (r8) { - u16 move = shared19260_[a].currMove; + u16 move = sContestantStatus[contestant].currMove; u8 effect = gContestMoves[move].effect; u8 rnd; - shared19260_[a].unkA = gContestMoves[shared19260_[a].currMove].contestCategory; - if (shared19260_[a].currMove == shared19260_[a].prevMove && shared19260_[a].currMove != MOVE_NONE) + sContestantStatus[contestant].moveCategory = gContestMoves[sContestantStatus[contestant].currMove].contestCategory; + if (sContestantStatus[contestant].currMove == sContestantStatus[contestant].prevMove && sContestantStatus[contestant].currMove != MOVE_NONE) { - shared19260_[a].unk15_0 = 1; - shared19260_[a].unkB_4++; + sContestantStatus[contestant].disappointedRepeat = TRUE; + sContestantStatus[contestant].moveRepeatCount++; } else { - shared19260_[a].unkB_4 = 0; + sContestantStatus[contestant].moveRepeatCount = 0; } - shared19260_[a].unk0 = gContestEffects[effect].appeal; - shared19260_[a].unk2 = gContestEffects[effect].appeal; + sContestantStatus[contestant].appeal1 = gContestEffects[effect].appeal; + sContestantStatus[contestant].appeal2 = gContestEffects[effect].appeal; shared192D0_.unk4 = gContestEffects[effect].jam; shared192D0_.unk6 = gContestEffects[effect].jam; - shared192D0_.unk11 = a; + shared192D0_.unk11 = contestant; for (i = 0; i < 4; i++) { - shared19260_[i].unkE = 0; + sContestantStatus[i].unkE = 0; shared192D0_.unkD[i] = 0; } - if (shared19260_[a].unk15_4 && !AreMovesContestCombo(shared19260_[a].prevMove, shared19260_[a].currMove)) - shared19260_[a].unk15_4 = 0; + if (sContestantStatus[contestant].unk15_4 && AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove) == 0) + sContestantStatus[contestant].unk15_4 = 0; gContestEffectFuncs[effect](); - if (shared19260_[a].unk10_4 == 1) - shared19260_[a].unk2 += shared19260_[a].unkD - 10; - else if (shared19260_[a].unk11_5) - shared19260_[a].unk2 += shared19260_[a].unkD * 3; + if (sContestantStatus[contestant].unk10_4 == 1) + sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].unkD - 10; + else if (sContestantStatus[contestant].unk11_5) + sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].unkD * 3; else - shared19260_[a].unk2 += shared19260_[a].unkD; - shared19260_[a].unk16 = 0; - shared19260_[a].unk15_6 = 0; - if (sub_80B214C(a)) + sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].unkD; + sContestantStatus[contestant].unk16 = 0; + sContestantStatus[contestant].unk15_6 = 0; + if (sub_80B214C(contestant)) { - bool8 r2 = AreMovesContestCombo(shared19260_[a].prevMove, shared19260_[a].currMove); + u8 r2 = AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove); - if (r2 && shared19260_[a].unk15_4) + if (r2 != 0 && sContestantStatus[contestant].unk15_4) { - shared19260_[a].unk16 = r2; - shared19260_[a].unk15_6 = 1; - shared19260_[a].unk15_4 = 0; - shared19260_[a].unk17 = shared19260_[a].unk0 * shared19260_[a].unk16; - shared19260_[a].unk15_3 = 1; + sContestantStatus[contestant].unk16 = r2; + sContestantStatus[contestant].unk15_6 = 1; + sContestantStatus[contestant].unk15_4 = 0; + sContestantStatus[contestant].unk17 = sContestantStatus[contestant].appeal1 * sContestantStatus[contestant].unk16; + sContestantStatus[contestant].unk15_3 = 1; } else { - if (gContestMoves[shared19260_[a].currMove].comboStarterId != 0) + if (gContestMoves[sContestantStatus[contestant].currMove].comboStarterId != 0) { - shared19260_[a].unk15_4 = 1; - shared19260_[a].unk15_6 = 1; + sContestantStatus[contestant].unk15_4 = 1; + sContestantStatus[contestant].unk15_6 = 1; } else { - shared19260_[a].unk15_4 = 0; + sContestantStatus[contestant].unk15_4 = 0; } } } - if (shared19260_[a].unk15_0) - shared19260_[a].unk18 = (shared19260_[a].unkB_4 + 1) * 10; - if (shared19260_[a].unkC_0) + if (sContestantStatus[contestant].disappointedRepeat) + sContestantStatus[contestant].unk18 = (sContestantStatus[contestant].moveRepeatCount + 1) * 10; + if (sContestantStatus[contestant].unkC_0) { - shared19260_[a].unk15_4 = 0; - shared19260_[a].unk2 = 0; - shared19260_[a].unk0 = 0; + sContestantStatus[contestant].unk15_4 = 0; + sContestantStatus[contestant].appeal2 = 0; + sContestantStatus[contestant].appeal1 = 0; } - shared19328.bits_0 = Contest_GetMoveExcitement(shared19260_[a].currMove); - if (shared19260_[a].unk11_4) + shared19328.bits_0 = Contest_GetMoveExcitement(sContestantStatus[contestant].currMove); + if (sContestantStatus[contestant].unk11_4) shared19328.bits_0 = 1; if (shared19328.bits_0 > 0) { - if (shared19204.unk19217 + shared19328.bits_0 > 4) + if (sContest.applauseLevel + shared19328.bits_0 > 4) shared19328.unk2 = 60; else shared19328.unk2 = 10; @@ -4620,25 +4598,25 @@ void sub_80B114C(u8 a) rnd = Random() % 3; for (i = 0; i < 4; i++) { - if (i != a) + if (i != contestant) { if (rnd == 0) break; rnd--; } } - shared19260_[a].unk1B = i; + sContestantStatus[contestant].unk1B = i; } } void sub_80B13EC(u8 a, u8 b) { - shared19260_[a].unk13 = b; + sContestantStatus[a].unk13 = b; } void sub_80B1404(u8 a, u8 b) { - shared19260_[a].unk14 = b; + sContestantStatus[a].unk14 = b; } void sub_80B141C(u8 a, u8 b) @@ -4658,28 +4636,29 @@ void sub_80B141C(u8 a, u8 b) void sub_80B146C(u8 a, u8 b) { StringCopy(gStringVar1, gContestMons[a].nickname); - StringCopy(gStringVar2, gMoveNames[shared19260_[a].currMove]); - if (gContestMoves[shared19260_[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_COOL) - StringCopy(gStringVar3, gUnknown_083CC280); - else if (gContestMoves[shared19260_[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY) - StringCopy(gStringVar3, gUnknown_083CC288); - else if (gContestMoves[shared19260_[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_CUTE) - StringCopy(gStringVar3, gUnknown_083CC290); - else if (gContestMoves[shared19260_[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_SMART) - StringCopy(gStringVar3, gUnknown_083CC299); + StringCopy(gStringVar2, gMoveNames[sContestantStatus[a].currMove]); + if (gContestMoves[sContestantStatus[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_COOL) + StringCopy(gStringVar3, gText_Contest_Shyness); + else if (gContestMoves[sContestantStatus[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY) + StringCopy(gStringVar3, gText_Contest_Anxiety); + else if (gContestMoves[sContestantStatus[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_CUTE) + StringCopy(gStringVar3, gText_Contest_Laziness); + else if (gContestMoves[sContestantStatus[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_SMART) + StringCopy(gStringVar3, gText_Contest_Hesitancy); else - StringCopy(gStringVar3, gUnknown_083CC2A3); + StringCopy(gStringVar3, gText_Contest_Fear); StringExpandPlaceholders(gStringVar4, gUnknown_083CC188[b]); sub_80AF138(); sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); } -void sub_80B157C(u8 a) +void sub_80B157C(u8 p) { - shared19260_[a].unkC_0 = 1; - shared19260_[a].currMove = MOVE_NONE; + sContestantStatus[p].unkC_0 = 1; + sContestantStatus[p].currMove = MOVE_NONE; } +// Determines turn order? void sub_80B159C(void) { u8 r12 = 0; @@ -4698,7 +4677,7 @@ void sub_80B159C(void) { for (j = 0; j < 4; j++) { - if (shared19260_[j].unk19 == i) + if (sContestantStatus[j].unk19 == i) { sp0[j] = i; sp4[j] = 1; @@ -4709,7 +4688,7 @@ void sub_80B159C(void) { for (j = 0; j < 4; j++) { - if (sp4[j] == 0 && shared19260_[j].unk19 == 0xFF) + if (sp4[j] == 0 && sContestantStatus[j].unk19 == 0xFF) { r12 = j; j++; @@ -4718,7 +4697,7 @@ void sub_80B159C(void) } for (; j < 4; j++) { - if (sp4[j] == 0 && shared19260_[j].unk19 == 0xFF + if (sp4[j] == 0 && sContestantStatus[j].unk19 == 0xFF && gUnknown_02038696[r12] > gUnknown_02038696[j]) r12 = j; } @@ -4730,8 +4709,8 @@ void sub_80B159C(void) for (i = 0; i < 4; i++) { shared192D0_.unk0[i] = sp0[i]; - shared19260_[i].unk19 = 0xFF; - shared19260_[i].unk10_6 = 0; + sContestantStatus[i].unk19 = 0xFF; + sContestantStatus[i].unk10_6 = 0; gUnknown_02038696[i] = sp0[i]; } } @@ -4743,13 +4722,13 @@ void sub_80B16D0(struct Sprite *sprite) sprite->data[1] = 0; sprite->invisible = TRUE; sprite->callback = SpriteCallbackDummy; - shared19204.unk1920A_4 = 0; + sContest.unk1920A_4 = 0; } } void sub_80B1710(u8 a) { - u8 spriteId = shared19204.unk19216; + u8 spriteId = sContest.unk19216; switch (a) { @@ -4791,7 +4770,7 @@ void sub_80B1710(u8 a) gSprites[spriteId].data[1] = 0; gSprites[spriteId].invisible = FALSE; gSprites[spriteId].callback = sub_80B16D0; - shared19204.unk1920A_4 = 1; + sContest.unk1920A_4 = 1; } void sub_80B1928(void) @@ -4802,13 +4781,13 @@ void sub_80B1928(void) { const u8 *src; - if (i < shared19204.unk19217) + if (i < sContest.applauseLevel) src = gContestApplauseMeterGfx + 64; else src = gContestApplauseMeterGfx; - CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[shared19204.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32); - CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[shared19204.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32); - if (shared19204.unk19217 > 4) + CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[sContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32); + CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[sContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32); + if (sContest.applauseLevel > 4) sub_80B1A2C(); } } @@ -4825,6 +4804,7 @@ s8 Contest_GetMoveExcitement(u16 move) return gContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory]; } +// Launches crowd movement task, maybe u8 sub_80B1A2C(void) { u8 taskId = CreateTask(c3_08130B10, 10); @@ -4847,7 +4827,7 @@ void c3_08130B10(u8 taskId) if (gTasks[taskId].data[4] == 0 || gTasks[taskId].data[4] == 16) { gTasks[taskId].data[3] ^= 1; - if (shared19204.unk19217 <= 4) + if (sContest.applauseLevel < 5) { BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, 31); DestroyTask(taskId); @@ -4859,14 +4839,14 @@ void c3_08130B10(u8 taskId) void sub_80B1B14(void) { CreateTask(sub_80B1B68, 10); - gSprites[shared19204.applauseMeterSpriteId].pos2.x = -70; - gSprites[shared19204.applauseMeterSpriteId].invisible = FALSE; - shared19204.unk1920A_6 = 1; + gSprites[sContest.applauseMeterSpriteId].pos2.x = -70; + gSprites[sContest.applauseMeterSpriteId].invisible = FALSE; + sContest.unk1920A_6 = 1; } void sub_80B1B68(u8 taskId) { - struct Sprite *sprite = &gSprites[shared19204.applauseMeterSpriteId]; + struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId]; gTasks[taskId].data[10] += 1664; sprite->pos2.x += gTasks[taskId].data[10] >> 8; @@ -4875,28 +4855,28 @@ void sub_80B1B68(u8 taskId) sprite->pos2.x = 0; if (sprite->pos2.x == 0) { - shared19204.unk1920A_6 = 0; + sContest.unk1920A_6 = 0; DestroyTask(taskId); } } void sub_80B1BDC(void) { - if (gSprites[shared19204.applauseMeterSpriteId].invisible == TRUE) + if (gSprites[sContest.applauseMeterSpriteId].invisible == TRUE) { - shared19204.unk1920A_6 = 0; + sContest.unk1920A_6 = 0; } else { CreateTask(sub_80B1C34, 10); - gSprites[shared19204.applauseMeterSpriteId].pos2.x = 0; - shared19204.unk1920A_6 = 1; + gSprites[sContest.applauseMeterSpriteId].pos2.x = 0; + sContest.unk1920A_6 = 1; } } void sub_80B1C34(u8 taskId) { - struct Sprite *sprite = &gSprites[shared19204.applauseMeterSpriteId]; + struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId]; gTasks[taskId].data[10] += 1664; sprite->pos2.x -= gTasks[taskId].data[10] >> 8; @@ -4906,7 +4886,7 @@ void sub_80B1C34(u8 taskId) if (sprite->pos2.x == -70) { sprite->invisible = TRUE; - shared19204.unk1920A_6 = 0; + sContest.unk1920A_6 = 0; DestroyTask(taskId); } } @@ -4916,7 +4896,7 @@ void sub_80B1CBC(s8 a) u8 taskId = CreateTask(sub_80B1CFC, 5); gTasks[taskId].data[0] = a; - shared19204.unk1920A_5 = 1; + sContest.unk1920A_5 = 1; } void sub_80B1CFC(u8 taskId) @@ -4928,7 +4908,7 @@ void sub_80B1CFC(u8 taskId) gTasks[taskId].data[10]++; break; case 1: - if (!shared19204.unk1920A_6) + if (!sContest.unk1920A_6) { nullsub_18(gTasks[taskId].data[0]); gTasks[taskId].data[10]++; @@ -4939,7 +4919,7 @@ void sub_80B1CFC(u8 taskId) { gTasks[taskId].data[11] = 0; sub_80B1928(); - shared19204.unk1920A_5 = 0; + sContest.unk1920A_5 = 0; DestroyTask(taskId); } break; @@ -4948,19 +4928,19 @@ void sub_80B1CFC(u8 taskId) void unref_sub_80B1D84(void) { - gSprites[shared19204.applauseMeterSpriteId].pos2.x = 0; - gSprites[shared19204.applauseMeterSpriteId].invisible = FALSE; + gSprites[sContest.applauseMeterSpriteId].pos2.x = 0; + gSprites[sContest.applauseMeterSpriteId].invisible = FALSE; } void unref_sub_80B1DB8(void) { - gSprites[shared19204.applauseMeterSpriteId].invisible = TRUE; + gSprites[sContest.applauseMeterSpriteId].invisible = TRUE; } void sub_80B1DDC(void) { CreateTask(sub_80B1DFC, 15); - shared19204.unk1920A_7 = 1; + sContest.unk1920A_7 = 1; } void sub_80B1DFC(u8 taskId) @@ -4973,21 +4953,11 @@ void sub_80B1DFC(u8 taskId) gTasks[taskId].data[10] = 0; if (gTasks[taskId].data[11] == 0) { - { - void *src = shared16800; - void *dest = (void *)(VRAM + 0x2000); - u32 size = 0x1000; - DmaCopy32(3, src, dest, size); - } + DmaCopy32Defvars(3, shared16800, (void *)(VRAM + 0x2000), 0x1000); } else { - { - void *src = shared15800; - void *dest = (void *)(VRAM + 0x2000); - u32 size = 0x1000; - DmaCopy32(3, src, dest, size); - } + DmaCopy32Defvars(3, shared15800, (void *)(VRAM + 0x2000), 0x1000); gTasks[taskId].data[12]++; } @@ -5004,7 +4974,7 @@ void sub_80B1DFC(u8 taskId) //if (gTasks[taskId].data[12] == 9) if (task->data[12] == 9) { - shared19204.unk1920A_7 = 0; + sContest.unk1920A_7 = 0; DestroyTask(taskId); } } @@ -5026,11 +4996,11 @@ void sub_80B1EA8(s8 a, s8 b) if (b > 0) { blendCoeff = 0; - r3 = shared19204.unk19217 * 3; + r3 = sContest.applauseLevel * 3; } else { - blendCoeff = shared19204.unk19217 * 3; + blendCoeff = sContest.applauseLevel * 3; r3 = 0; } } @@ -5052,7 +5022,7 @@ void sub_80B1EA8(s8 a, s8 b) gTasks[taskId].tBlendCoeff = blendCoeff; gTasks[taskId].data[2] = b; gTasks[taskId].data[3] = r3; - shared19204.unk1920B_0 = 0; + sContest.unk1920B_0 = 0; } void sub_80B1F4C(u8 taskId) @@ -5069,7 +5039,7 @@ void sub_80B1F4C(u8 taskId) if (gTasks[taskId].tBlendCoeff == gTasks[taskId].data[3]) { DestroyTask(taskId); - shared19204.unk1920B_0 = 0; + sContest.unk1920B_0 = 0; } } } @@ -5083,10 +5053,10 @@ void sub_80B1FD0(bool8 a) for (i = 0; i < 4; i++) { - if (shared19260_[i].unk10_6 != 0 && a) + if (sContestantStatus[i].unk10_6 != 0 && a) { CpuCopy32( - sub_80B208C(i), + GetTurnOrderNumberGfx(i), (void *)(VRAM + 0x10000 + (gSprites[shared19338[i].unk1].oam.tileNum + 5) * 32), 64); gSprites[shared19338[i].unk1].pos1.y = gUnknown_083CA33C[gUnknown_02038696[i]]; @@ -5099,13 +5069,12 @@ void sub_80B1FD0(bool8 a) } } -// GetTurnNumberGfx -const u8 *sub_80B208C(u8 a) +const u8 *GetTurnOrderNumberGfx(u8 contestant) { - if (shared19260_[a].unk10_6 != 1) + if (sContestantStatus[contestant].unk10_6 != 1) return gContestNextTurnRandomGfx; else - return gContestNextTurnNumbersGfx + shared19260_[a].unk19 * 64; + return gContestNextTurnNumbersGfx + sContestantStatus[contestant].unk19 * 64; } void sub_80B20C4(void) @@ -5130,7 +5099,7 @@ void sub_80B20C4(void) bool8 sub_80B214C(u8 a) { - if (shared19260_[a].unk15_0 || shared19260_[a].unkC_0) + if (sContestantStatus[a].disappointedRepeat || sContestantStatus[a].unkC_0) return FALSE; else return TRUE; @@ -5217,7 +5186,7 @@ void sub_80B2400(u8 taskId) { case 0: for (i = 0; i < 4; i++) - shared19204.unk19218[i] = gUnknown_02038696[i]; + sContest.unk19218[i] = gUnknown_02038696[i]; sub_80AFA5C(); sub_80B0588(); sub_80AEF50(); @@ -5231,7 +5200,7 @@ void sub_80B2400(u8 taskId) { u8 taskId2; - shared19204.unk1920B_2 = 1; + sContest.unk1920B_2 = 1; if (sub_80AE074()) sub_80AF438(); taskId2 = CreateTask(sub_80C8C80, 0); @@ -5246,7 +5215,7 @@ void sub_80B2400(u8 taskId) } break; case 2: - if (!shared19204.unk1920B_2) + if (!sContest.unk1920B_2) gTasks[taskId].data[0] = 3; break; case 3: @@ -5328,7 +5297,7 @@ void sub_80B25E4(u8 a) } taskId = CreateTask(sub_80B26C8, 5); gTasks[taskId].data[0] = a; - shared19204.unk1920B_1 = 1; + sContest.unk1920B_1 = 1; } void sub_80B26C8(u8 taskId) @@ -5344,7 +5313,7 @@ void sub_80B26C8(u8 taskId) } for (i = 0; i < 4; i++) FreeSpriteOamMatrix(&gSprites[shared19338[i].unk0]); - shared19204.unk1920B_1 = 0; + sContest.unk1920B_1 = 0; DestroyTask(taskId); } } @@ -5366,7 +5335,7 @@ u16 SanitizeSpecies(u16 species) void sub_80B2790(u8 a) { s32 i; - u16 move = SanitizeMove(shared19260_[a].currMove); + u16 move = SanitizeMove(sContestantStatus[a].currMove); u16 species = SanitizeSpecies(gContestMons[a].species); u8 r5_2; @@ -5384,7 +5353,7 @@ void sub_80B2790(u8 a) break; case MOVE_TRANSFORM: case MOVE_ROLE_PLAY: - r5_2 = shared19260_[a].unk1B; + r5_2 = sContestantStatus[a].unk1B; shared19348_.unk2 = SanitizeSpecies(gContestMons[r5_2].species); shared19348_.unk10 = gContestMons[r5_2].personality; shared19348_.unk4_0 = 1; @@ -5399,9 +5368,9 @@ void sub_80B2790(u8 a) case MOVE_RAZOR_WIND: case MOVE_SKULL_BASH: case MOVE_SKY_ATTACK: - if (shared19204.unk1925E == 0) + if (sContest.unk1925E == 0) { - shared19204.unk1925E = 2; + sContest.unk1925E = 2; gUnknown_0202F7C4 = 0; } else @@ -5416,8 +5385,8 @@ void sub_80B2790(u8 a) void sub_80B28CC(int unused) { memset(&shared19348_, 0, sizeof(shared19348_)); - if (shared19204.unk1925E != 0) - shared19204.unk1925E--; + if (sContest.unk1925E != 0) + sContest.unk1925E--; } void sub_80B28F0(u8 a) @@ -5464,34 +5433,33 @@ void SelectContestMoveBankTarget(u16 move) } } -// SaveContestWinner -bool8 sub_80B2A7C(u8 a) +bool8 Contest_SaveWinner(u8 a) { s32 i; u8 r7 = Random() % 3; for (i = 0; i < 3; i++) { - if (gUnknown_02038690[i] == 0) + if (gContestFinalStandings[i] == 0) break; } if (a == 0xFF && i != gContestPlayerMonIndex) return FALSE; switch (gSpecialVar_ContestCategory) { - case 0: + case CONTEST_CATEGORY_COOL: r7 += 0; break; - case 1: + case CONTEST_CATEGORY_BEAUTY: r7 += 3; break; - case 2: + case CONTEST_CATEGORY_CUTE: r7 += 6; break; - case 3: + case CONTEST_CATEGORY_SMART: r7 += 9; break; - case 4: + case CONTEST_CATEGORY_TOUGH: r7 += 12; break; } @@ -5527,7 +5495,7 @@ bool8 sub_80B2A7C(u8 a) u8 sub_80B2C4C(u8 a, u8 b) { s32 i; - + switch (a) { case 0: @@ -5550,15 +5518,15 @@ u8 sub_80B2C4C(u8 a, u8 b) default: switch (gSpecialVar_ContestCategory) { - case 0: + case CONTEST_CATEGORY_COOL: return 8; - case 1: + case CONTEST_CATEGORY_BEAUTY: return 9; - case 2: + case CONTEST_CATEGORY_CUTE: return 10; - case 3: + case CONTEST_CATEGORY_SMART: return 11; - case 4: + case CONTEST_CATEGORY_TOUGH: default: return 12; } @@ -5568,7 +5536,7 @@ u8 sub_80B2C4C(u8 a, u8 b) void Contest_ResetWinners(void) { s32 i; - + for (i = 0; i < 8; i++) gSaveBlock1.contestWinners[i] = gUnknown_083CC5D0[i]; } diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 036925c7f..728562b81 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -21,7 +21,7 @@ extern u8 gUnknown_0203856C; extern u16 gUnknown_02038670[]; extern u16 gUnknown_02038678[]; extern u16 gUnknown_02038680[]; -extern u8 gUnknown_02038690[]; +extern u8 gContestFinalStandings[]; extern u8 gUnknown_02038694; extern u8 gIsLinkContest; extern u8 gUnknown_0203869B; @@ -320,7 +320,7 @@ u8 MatsudaDebugMenu_CommTest(void) static void sub_80A9C98(u8 taskId) { - CreatePlayerContestMon(0); + Contest_CreatePlayerMon(0); SetTaskFuncWithFollowupFunc(taskId, sub_80C8734, sub_80A9CC0); } @@ -540,9 +540,9 @@ static void sub_80AA10C(void) gUnknown_02038694 = 0; if (!(gContestMons[0].nickname[0])) - sub_80AE398(0, 0); + Contest_InitAllPokemon(0, 0); - CreatePlayerContestMon(gUnknown_02038694); + Contest_CreatePlayerMon(gUnknown_02038694); for (i = 0; i < 6; i++) { @@ -868,7 +868,7 @@ void sub_80AABF0(struct Sprite *sprite, s8 var2) sub_80AA5BC(r4); sprite->data[3] = r4; gSpecialVar_ContestCategory = sprite->data[3]; - sub_80AE398(sprite->data[3], gSpecialVar_ContestRank); + Contest_InitAllPokemon(sprite->data[3], gSpecialVar_ContestRank); sub_80AA280(sprite->data[2]); sub_80AA658(sprite->data[2]); } @@ -882,7 +882,7 @@ void sub_80AAC5C(struct Sprite *sprite, s8 var2) if (gSpecialVar_ContestRank > 3) gSpecialVar_ContestRank = 3; sub_80AA5E8(gSpecialVar_ContestRank); - sub_80AE398(gSpecialVar_ContestCategory, gSpecialVar_ContestRank); + Contest_InitAllPokemon(gSpecialVar_ContestCategory, gSpecialVar_ContestRank); sub_80AA280(sprite->data[2]); sub_80AA658(sprite->data[2]); } @@ -1149,10 +1149,10 @@ void sub_80AAF30(void) gUnknown_0203856C = 1; gContestPlayerMonIndex = 3; - CreatePlayerContestMon(0); + Contest_CreatePlayerMon(0); for (i = 3; i > -1; i--) - gUnknown_02038690[i] = 3 - i; + gContestFinalStandings[i] = 3 - i; for (i = 0; i < 3; i++) { @@ -1165,7 +1165,7 @@ void sub_80AAF30(void) gUnknown_02038670[3] = 0x12C; gUnknown_02038680[3] = 0x190; gUnknown_02038678[3] = 0x190; - sub_80B2A7C(0xFE); + Contest_SaveWinner(0xFE); } u8 MatsudaDebugMenu_SetHighScore(void) @@ -1195,11 +1195,11 @@ u8 MatsudaDebugMenu_SetArtMuseumItems(void) s32 i; gContestPlayerMonIndex = 3; - CreatePlayerContestMon(0); + Contest_CreatePlayerMon(0); for (i = 3; i > -1; i--) - gUnknown_02038690[i] = 3 - i; + gContestFinalStandings[i] = 3 - i; for (gSpecialVar_ContestCategory = 0; gSpecialVar_ContestCategory < 5; gSpecialVar_ContestCategory++) - sub_80B2A7C(0xFF); + Contest_SaveWinner(0xFF); CloseMenu(); return 1; } diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 0c82448bd..164d71cb5 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -46,7 +46,7 @@ extern u32 gUnknown_03005D28; extern u8 gUnknown_02038694; extern u8 gUnknown_0203856C; -extern u8 gUnknown_02038690[]; +extern u8 gContestFinalStandings[]; extern u16 gUnknown_02038678[]; void sub_80C4BF0(void) @@ -121,12 +121,12 @@ void sub_80C4C78(void) void sub_80C4CEC(void) { - sub_80B2A7C(0xFF); + Contest_SaveWinner(0xFF); } void sub_80C4CF8(void) { - if(!gUnknown_02038690[gContestPlayerMonIndex] + if(!gContestFinalStandings[gContestPlayerMonIndex] && gSpecialVar_ContestRank == 3 && (s16)gUnknown_02038678[gContestPlayerMonIndex] >= 800) { @@ -367,7 +367,7 @@ void ShowContestWinner(void) sub_80AAF30(); BATTLE_STRUCT->unk15DDF = 1; BATTLE_STRUCT->unk15DDE = sub_80B2C4C(254, 0); - sub_80B2A7C(3); + Contest_SaveWinner(3); gUnknown_0203856C = 0; } SetMainCallback2(CB2_ContestPainting); @@ -387,7 +387,7 @@ bool8 GiveMonArtistRibbon(void) u8 ribbon = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_ARTIST_RIBBON); if(ribbon == FALSE - && gUnknown_02038690[gContestPlayerMonIndex] == 0 + && gContestFinalStandings[gContestPlayerMonIndex] == 0 && gSpecialVar_ContestRank == 3 && (s16)gUnknown_02038678[gContestPlayerMonIndex] >= 800) { -- cgit v1.2.3