diff options
author | camthesaxman <cameronghall@cox.net> | 2017-12-15 18:17:27 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-12-15 18:17:27 -0600 |
commit | 1eb55b4b6da9470af8fafc39bc59aeeab54d369c (patch) | |
tree | 896ae6f56901283efa8262c45d202d55a0725cb4 /src | |
parent | 106baf86747f89214f34f73db5048b25483e1647 (diff) |
hack some more on sub_80AC2CC
Diffstat (limited to 'src')
-rw-r--r-- | src/contest.c | 1071 |
1 files changed, 1065 insertions, 6 deletions
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,6 +1263,934 @@ 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; + + 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! + { + 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: + //_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) + { + struct UnknownContestStruct4 *s = &shared19260.unk19338[r7]; + if (!(s->unk2 & 2)) + gTasks[taskId].data[0] = 5; + } + return; + case 5: + //_080AC638 + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if (s->unkC & 1) + { + gTasks[taskId].data[0] = 33; + } + //_080AC664 + 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; + } + } + return; + case 6: + //_080AC6F8 + if (sub_80037A0(&gMenuWindow) != 0) + { + shared19204.unk1925E = 0; + gTasks[taskId].data[0] = 7; + } + return; + case 7: + //_080AC730 + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[shared19204.unk19215]; + // doesn't match + u16 r4 = sub_80B2760(s->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 + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if (!(s->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 + { + 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 + { + if (s->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 + { + 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: + //_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 + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + sub_80AFBA0(0, s->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; + } + return; + case 35: + //_080AC9EC + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + + if ((s->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; + u8 r2_; + + for (r6 = gTasks[taskId].data[1]; r6 < 4; r6++) + { + //_080ACB0A + r4 = 0; + for (r2 = 0; r2 < 4; r2++) + { + 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 + struct UnknownContestStruct1 *s; + + gTasks[taskId].data[1] = gUnknown_02038696[r2]; + r2_ = r2; + s = &shared19260.unk19260[r2_]; + sub_80B146C(r2_, s->unk13); + s->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 + { + 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 + 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 + { + 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; + } + 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)) + { + 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 & 0x40)) + gTasks[taskId].data[0] = 17; + else + gTasks[taskId].data[0] = 14; + } + return; + case 14: + //_080ACEC0 + { + struct UnknownContestStruct1 *s = &shared19260.unk19260[r7]; + s32 r4 = s->unk16; // what type is this? + + if ((u8)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; + gTasks[taskId].data[0] = 45; + } + //_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; + } + } + 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 + { + struct UnknownContestStruct4 *s = &shared19260.unk19338[r7]; + + if (!(s->unk2 & 4)) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 17; + } + } + return; + case 17: + //_080AD070 + { + 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) { @@ -1959,4 +3018,4 @@ void sub_80AC2CC(u8 taskId) return; } } -*/ +*/
\ No newline at end of file |