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 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 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 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