diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/matsuda_debug_menu.c | 724 |
1 files changed, 694 insertions, 30 deletions
diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c index 9c20b4078..18f644cbb 100644 --- a/src/matsuda_debug_menu.c +++ b/src/matsuda_debug_menu.c @@ -12,7 +12,7 @@ extern u8 gUnknown_0203869A; extern u8 gUnknown_0203869B; -extern u8 gUnknown_02038695; +extern u8 gContestPlayerMonIndex; extern u16 gScriptContestCategory; extern u16 gScriptContestRank; extern u8 (*gCallback_03004AE8)(void); @@ -39,9 +39,7 @@ extern void sub_805469C(void); extern void sub_80AE398(u8, u8); extern void sub_80AE098(u8); extern void sub_80AA5BC(u8); -extern void sub_80AA5E8(u16); -extern void sub_80AA658(u8); -extern void sub_80AA614(u8, u8); +extern u32 sub_80AE770(u8, u8); extern struct Window gMenuWindow; @@ -74,24 +72,27 @@ extern u8 gMoveNames[][13]; extern u8 gMatsudaDebugMenu_UnknownByteArray[]; extern u32 gMatsudaDebugMenuTextList1[]; +extern u32 gMatsudaDebugMenuTextList2[]; +extern u32 gMatsudaDebugMenuTextList3[]; extern u8 gMatsudaDebugMenuContestTopLeft[][2]; -struct UnknownStruct -{ - u8 text[2]; - u8 unk2; - u8 filler3[27]; - u16 unk1E[4]; - u8 unk26; - u8 unk27; - u8 unk28; - u8 unk29; - u8 unk2A; - u8 unk2B; - u8 filler2C[20]; +struct ContestPokemon +{ + /* 0x00 */ u16 species; + /* 0x02 */ u8 nickname[POKEMON_NAME_LENGTH]; + /* 0x0D */ u8 trainerName[8]; + /* 0x15 */ u8 filler15[9]; + /* 0x1E */ u16 moves[4]; // moves + /* 0x26 */ u8 cool; // cool + /* 0x27 */ u8 beauty; // beauty + /* 0x28 */ u8 cute; // cute + /* 0x29 */ u8 smart; // smart + /* 0x2A */ u8 tough; // tough + /* 0x2B */ u8 sheen; // sheen + /* 0x2C */ u8 filler2C[20]; }; -extern struct UnknownStruct gUnknown_02038570[]; +extern struct ContestPokemon gContestMons[]; extern bool8 gReceivedRemoteLinkPlayers; extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; @@ -111,6 +112,9 @@ void sub_80A9E3C(u8 taskId); void sub_80A9ED8(u8); void sub_80A9E80(u8); void sub_80AA280(u8); +void sub_80AA5E8(u8); +void sub_80AA614(u8, u8); +void sub_80AA658(u8); u8 unref_sub_80A9B28(void) { @@ -303,7 +307,7 @@ void sub_80A9F10(u8 taskId) { if(gReceivedRemoteLinkPlayers) { - gUnknown_02038695 = GetMultiplayerId(); + gContestPlayerMonIndex = GetMultiplayerId(); if(GetLinkPlayerCount() == 4) { gUnknown_0203869A = 1; @@ -406,7 +410,7 @@ void sub_80AA10C(void) gPaletteFade.bufferTransferDisabled = 0; gUnknown_02038694 = 0; - if(!(gUnknown_02038570[0].unk2)) + if(!(gContestMons[0].nickname[0])) sub_80AE398(0, 0); sub_80AE098(gUnknown_02038694); @@ -419,9 +423,9 @@ void sub_80AA10C(void) } gScriptContestCategory = gScriptContestRank = 0; - zero = 0; + zero = 0; // it's possible this was some assignment that matsuda used to quickly edit and test things without changing whats passed to the later functions. sub_80AA5BC(zero); - sub_80AA5E8((u8)gScriptContestRank); + sub_80AA5E8(gScriptContestRank); sub_8003460(&gMenuWindow, gMatsudaDebugMenu_GoBackText, 0xD6, 0x12, 0x12); sub_8003460(&gMenuWindow, gMatsudaDebugMenu_BattlePointsText, 0xDC, zero, 0xC); LoadSpriteSheet(gUnknown_083C92B4); @@ -460,44 +464,704 @@ void sub_80AA280(u8 var) void sub_80AA340(u8 var) { - ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk26, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].cool, STR_CONV_MODE_RIGHT_ALIGN, 3); sub_8003460(&gMenuWindow, unk_2000000, 0x66, gUnknown_083C9282[0], gUnknown_083C9282[1]); } void sub_80AA388(u8 var) { - ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk28, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].cute, STR_CONV_MODE_RIGHT_ALIGN, 3); sub_8003460(&gMenuWindow, unk_2000000, 0x6C, gUnknown_083C9282[2], gUnknown_083C9282[3]); } void sub_80AA3D0(u8 var) { - ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk27, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].beauty, STR_CONV_MODE_RIGHT_ALIGN, 3); sub_8003460(&gMenuWindow, unk_2000000, 0x72, gUnknown_083C9282[4], gUnknown_083C9282[5]); } void sub_80AA418(u8 var) { - ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk29, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].smart, STR_CONV_MODE_RIGHT_ALIGN, 3); sub_8003460(&gMenuWindow, unk_2000000, 0x78, gUnknown_083C9282[6], gUnknown_083C9282[7]); } void sub_80AA460(u8 var) { - ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk2A, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].tough, STR_CONV_MODE_RIGHT_ALIGN, 3); sub_8003460(&gMenuWindow, unk_2000000, 0x7E, gUnknown_083C9282[8], gUnknown_083C9282[9]); } void sub_80AA4A8(u8 var) { - ConvertIntToDecimalStringN(unk_2000000, gUnknown_02038570[var].unk2B, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(unk_2000000, gContestMons[var].sheen, STR_CONV_MODE_RIGHT_ALIGN, 3); sub_8003460(&gMenuWindow, unk_2000000, 0x84, gUnknown_083C9282[10], gUnknown_083C9282[11]); } void sub_80AA4F0(u8 var1, u8 var2) { FillWindowRect_DefaultPalette(&gMenuWindow, 0, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1], gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1] + 1); - sub_8003460(&gMenuWindow, gMoveNames[gUnknown_02038570[var1].unk1E[var2]], 0x8A + var2 * 14, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1]); - ConvertIntToDecimalStringN(gStringVar1, gUnknown_02038570[var1].unk1E[var2], STR_CONV_MODE_LEADING_ZEROS, 3); + sub_8003460(&gMenuWindow, gMoveNames[gContestMons[var1].moves[var2]], 0x8A + var2 * 14, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1]); + ConvertIntToDecimalStringN(gStringVar1, gContestMons[var1].moves[var2], STR_CONV_MODE_LEADING_ZEROS, 3); sub_8003460(&gMenuWindow, gStringVar1, 0xFA + var2 * 6, gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1]); } + +void sub_80AA5BC(u8 var) +{ + sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList2[var], 0xC2, 3, 0x12); +} + +void sub_80AA5E8(u8 var) +{ + sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList3[var], 0xE8, 3, 4); +} + +void sub_80AA614(u8 var1, u8 var2) +{ + u16 var = sub_80AE770(var1, var2); + + ConvertIntToDecimalStringN(unk_2000000, var, STR_CONV_MODE_RIGHT_ALIGN, 3); + sub_8003460(&gMenuWindow, unk_2000000, 0xE2, 3, 0xC); +} + +void sub_80AA658(u8 var) +{ + u8 i; + + sub_80AA340(var); + sub_80AA388(var); + sub_80AA3D0(var); + sub_80AA418(var); + sub_80AA460(var); + sub_80AA4A8(var); + + for(i = 0; i < 4; i++) + sub_80AA4F0(var, i); +} + +void SetDebugMonForContest(void) +{ + SetMonData(&gPlayerParty, MON_DATA_COOL, &gContestMons[gContestPlayerMonIndex].cool); + SetMonData(&gPlayerParty, MON_DATA_CUTE, &gContestMons[gContestPlayerMonIndex].cute); + SetMonData(&gPlayerParty, MON_DATA_BEAUTY, &gContestMons[gContestPlayerMonIndex].beauty); + SetMonData(&gPlayerParty, MON_DATA_SMART, &gContestMons[gContestPlayerMonIndex].smart); + SetMonData(&gPlayerParty, MON_DATA_TOUGH, &gContestMons[gContestPlayerMonIndex].tough); + SetMonData(&gPlayerParty, MON_DATA_SHEEN, &gContestMons[gContestPlayerMonIndex].sheen); + SetMonData(&gPlayerParty, MON_DATA_MOVE1, &gContestMons[gContestPlayerMonIndex].moves[0]); + SetMonData(&gPlayerParty, MON_DATA_MOVE2, &gContestMons[gContestPlayerMonIndex].moves[1]); + SetMonData(&gPlayerParty, MON_DATA_MOVE3, &gContestMons[gContestPlayerMonIndex].moves[2]); + SetMonData(&gPlayerParty, MON_DATA_MOVE4, &gContestMons[gContestPlayerMonIndex].moves[3]); +} + +// too complicated +__attribute__((naked)) +void sub_80AA754(struct Sprite *sprite) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + adds r4, r0, 0\n\ + ldr r0, _080AA774 @ =gMain\n\ + ldrh r1, [r0, 0x30]\n\ + cmp r1, 0x20\n\ + beq _080AA7A2\n\ + cmp r1, 0x20\n\ + bgt _080AA782\n\ + cmp r1, 0x2\n\ + beq _080AA7F8\n\ + cmp r1, 0x2\n\ + bgt _080AA778\n\ + cmp r1, 0x1\n\ + beq _080AA7D8\n\ + b _080AA870\n\ + .align 2, 0\n\ +_080AA774: .4byte gMain\n\ +_080AA778:\n\ + cmp r1, 0x8\n\ + beq _080AA868\n\ + cmp r1, 0x10\n\ + beq _080AA7A2\n\ + b _080AA870\n\ +_080AA782:\n\ + cmp r1, 0x80\n\ + beq _080AA7C2\n\ + cmp r1, 0x80\n\ + bgt _080AA790\n\ + cmp r1, 0x40\n\ + beq _080AA7AC\n\ + b _080AA870\n\ +_080AA790:\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + cmp r1, r0\n\ + beq _080AA814\n\ + movs r0, 0x80\n\ + lsls r0, 2\n\ + cmp r1, r0\n\ + beq _080AA834\n\ + b _080AA870\n\ +_080AA7A2:\n\ + ldrh r0, [r4, 0x2E]\n\ + movs r1, 0x1\n\ + eors r0, r1\n\ + strh r0, [r4, 0x2E]\n\ + b _080AA870\n\ +_080AA7AC:\n\ + ldrh r1, [r4, 0x30]\n\ + movs r2, 0x30\n\ + ldrsh r0, [r4, r2]\n\ + cmp r0, 0\n\ + bne _080AA7BC\n\ + movs r0, 0x8\n\ + strh r0, [r4, 0x30]\n\ + b _080AA870\n\ +_080AA7BC:\n\ + subs r0, r1, 0x1\n\ + strh r0, [r4, 0x30]\n\ + b _080AA870\n\ +_080AA7C2:\n\ + ldrh r1, [r4, 0x30]\n\ + movs r3, 0x30\n\ + ldrsh r0, [r4, r3]\n\ + cmp r0, 0x8\n\ + bne _080AA7D2\n\ + movs r0, 0\n\ + strh r0, [r4, 0x30]\n\ + b _080AA870\n\ +_080AA7D2:\n\ + adds r0, r1, 0x1\n\ + strh r0, [r4, 0x30]\n\ + b _080AA870\n\ +_080AA7D8:\n\ + ldr r2, _080AA7F4 @ =gUnknown_083C92E4\n\ + movs r1, 0x2E\n\ + ldrsh r0, [r4, r1]\n\ + lsls r0, 2\n\ + movs r3, 0x30\n\ + ldrsh r1, [r4, r3]\n\ + lsls r1, 3\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldr r2, [r0]\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + b _080AA84E\n\ + .align 2, 0\n\ +_080AA7F4: .4byte gUnknown_083C92E4\n\ +_080AA7F8:\n\ + ldr r1, _080AA810 @ =gUnknown_083C92E4\n\ + movs r0, 0x2E\n\ + ldrsh r2, [r4, r0]\n\ + lsls r2, 2\n\ + movs r3, 0x30\n\ + ldrsh r0, [r4, r3]\n\ + lsls r0, 3\n\ + adds r2, r0\n\ + adds r2, r1\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + b _080AA84A\n\ + .align 2, 0\n\ +_080AA810: .4byte gUnknown_083C92E4\n\ +_080AA814:\n\ + ldr r2, _080AA830 @ =gUnknown_083C92E4\n\ + movs r1, 0x2E\n\ + ldrsh r0, [r4, r1]\n\ + lsls r0, 2\n\ + movs r3, 0x30\n\ + ldrsh r1, [r4, r3]\n\ + lsls r1, 3\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldr r2, [r0]\n\ + adds r0, r4, 0\n\ + movs r1, 0xA\n\ + b _080AA84E\n\ + .align 2, 0\n\ +_080AA830: .4byte gUnknown_083C92E4\n\ +_080AA834:\n\ + ldr r1, _080AA864 @ =gUnknown_083C92E4\n\ + movs r0, 0x2E\n\ + ldrsh r2, [r4, r0]\n\ + lsls r2, 2\n\ + movs r3, 0x30\n\ + ldrsh r0, [r4, r3]\n\ + lsls r0, 3\n\ + adds r2, r0\n\ + adds r2, r1\n\ + movs r1, 0xA\n\ + negs r1, r1\n\ +_080AA84A:\n\ + ldr r2, [r2]\n\ + adds r0, r4, 0\n\ +_080AA84E:\n\ + bl _call_via_r2\n\ + ldrh r0, [r4, 0x32]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldrh r1, [r4, 0x34]\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + bl sub_80AA614\n\ + b _080AA870\n\ + .align 2, 0\n\ +_080AA864: .4byte gUnknown_083C92E4\n\ +_080AA868:\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + bl sub_80AAD08\n\ +_080AA870:\n\ + ldr r2, _080AA898 @ =gUnknown_083C9296\n\ + movs r0, 0x2E\n\ + ldrsh r1, [r4, r0]\n\ + movs r3, 0x30\n\ + ldrsh r0, [r4, r3]\n\ + lsls r0, 1\n\ + adds r1, r0\n\ + adds r1, r2\n\ + ldrb r0, [r1]\n\ + strh r0, [r4, 0x20]\n\ + ldr r1, _080AA89C @ =gUnknown_083C92A8\n\ + movs r2, 0x30\n\ + ldrsh r0, [r4, r2]\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + strh r0, [r4, 0x22]\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080AA898: .4byte gUnknown_083C9296\n\ +_080AA89C: .4byte gUnknown_083C92A8\n\ + .syntax divided"); +} + +void sub_80AA8A0(struct Sprite *sprite, s8 var1, u8 var2) +{ + if(var1 == 1) + { + sprite->data2 = var2; + sub_80AA280(var2); + sub_80AA658(sprite->data2); + } +} + +void sub_80AA8C8(struct Sprite *sprite, s8 var1) +{ + sub_80AA8A0(sprite, var1, 0); +} + +void sub_80AA8D8(struct Sprite *sprite, s8 var1) +{ + sub_80AA8A0(sprite, var1, 1); +} + +void sub_80AA8E8(struct Sprite *sprite, s8 var1) +{ + sub_80AA8A0(sprite, var1, 2); +} + +void sub_80AA8F8(struct Sprite *sprite, s8 var1) +{ + sub_80AA8A0(sprite, var1, 3); +} + +u8 sub_80AA908(u32 a1, u8 a2, s8 a3) // first param is unused. +{ + s16 val = a2 + a3; + + if (val > 255) + val = 255; + else if (val < 0) + val = 0; + + return val; +} + +void sub_80AA930(struct Sprite *sprite, u8 var2) +{ + u8 val = sprite->data2; + + gContestMons[sprite->data2].cool = sub_80AA908(val, gContestMons[sprite->data2].cool, var2); + sub_80AA340(sprite->data2); +} + +void sub_80AA974(struct Sprite *sprite, u8 var2) +{ + u8 val = sprite->data2; + + gContestMons[sprite->data2].cute = sub_80AA908(val, gContestMons[sprite->data2].cute, var2); + sub_80AA388(sprite->data2); +} + +void sub_80AA9B8(struct Sprite *sprite, u8 var2) +{ + u8 val = sprite->data2; + + gContestMons[sprite->data2].beauty = sub_80AA908(val, gContestMons[sprite->data2].beauty, var2); + sub_80AA3D0(sprite->data2); +} + +void sub_80AA9FC(struct Sprite *sprite, u8 var2) +{ + u8 val = sprite->data2; + + gContestMons[sprite->data2].smart = sub_80AA908(val, gContestMons[sprite->data2].smart, var2); + sub_80AA418(sprite->data2); +} + +void sub_80AAA40(struct Sprite *sprite, u8 var2) +{ + u8 val = sprite->data2; + + gContestMons[sprite->data2].tough = sub_80AA908(val, gContestMons[sprite->data2].tough, var2); + sub_80AA460(sprite->data2); +} + +void sub_80AAA84(struct Sprite *sprite, u8 var2) +{ + u8 val = sprite->data2; + + gContestMons[sprite->data2].sheen = sub_80AA908(val, gContestMons[sprite->data2].sheen, var2); + sub_80AA4A8(sprite->data2); +} + +// a similar function is at 0x80AA908, however, it apparently returns the wrong type (u8 vs u16). +u16 sub_80AAAC8(u32 a1, u16 a2, s8 a3) // first param is unused. +{ + s16 val = a2 + a3; + + if (val > 354) + val = 1; + else if (val < 0) + val = 354; + + return val; +} + +void sub_80AAAF0(struct Sprite *sprite, u8 var2) +{ + u8 val = sprite->data2; + + gContestMons[sprite->data2].moves[0] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[0], var2); + sub_80AA4F0(sprite->data2, 0); +} + +void sub_80AAB30(struct Sprite *sprite, u8 var2) +{ + u8 val = sprite->data2; + + gContestMons[sprite->data2].moves[1] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[1], var2); + sub_80AA4F0(sprite->data2, 1); +} + +void sub_80AAB70(struct Sprite *sprite, u8 var2) +{ + u8 val = sprite->data2; + + gContestMons[sprite->data2].moves[2] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[2], var2); + sub_80AA4F0(sprite->data2, 2); +} + +void sub_80AABB0(struct Sprite *sprite, u8 var2) +{ + u8 val = sprite->data2; + + gContestMons[sprite->data2].moves[3] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[3], var2); + sub_80AA4F0(sprite->data2, 3); +} + +// hard/weird function #2 +__attribute__((naked)) +void sub_80AABF0(struct Sprite *sprite, u8 var2) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + adds r5, r0, 0\n\ + lsls r1, 24\n\ + movs r0, 0xFF\n\ + cmp r1, 0\n\ + ble _080AABFE\n\ + movs r0, 0x1\n\ +_080AABFE:\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + ldrh r1, [r5, 0x34]\n\ + adds r0, r1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + asrs r0, 24\n\ + cmp r0, 0\n\ + bge _080AAC14\n\ + movs r4, 0\n\ + b _080AAC1A\n\ +_080AAC14:\n\ + cmp r0, 0x4\n\ + ble _080AAC1A\n\ + movs r4, 0x4\n\ +_080AAC1A:\n\ + lsls r4, 24\n\ + lsrs r0, r4, 24\n\ + bl sub_80AA5BC\n\ + asrs r4, 24\n\ + strh r4, [r5, 0x34]\n\ + ldr r0, _080AAC54 @ =gScriptContestCategory\n\ + strh r4, [r0]\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + ldr r0, _080AAC58 @ =gScriptContestRank\n\ + ldrb r1, [r0]\n\ + adds r0, r4, 0\n\ + bl sub_80AE398\n\ + ldrh r0, [r5, 0x32]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + bl sub_80AA280\n\ + ldrh r0, [r5, 0x32]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + bl sub_80AA658\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080AAC54: .4byte gScriptContestCategory\n\ +_080AAC58: .4byte gScriptContestRank\n\ + .syntax divided"); +} + +/* + thumb_func_start sub_80AABF0 +sub_80AABF0: @ 80AABF0 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + movs r0, 0xFF + cmp r1, 0 + ble _080AABFE + movs r0, 0x1 +_080AABFE: + lsls r0, 24 + asrs r0, 24 + ldrh r1, [r5, 0x34] + adds r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + asrs r0, 24 + cmp r0, 0 + bge _080AAC14 + movs r4, 0 + b _080AAC1A +_080AAC14: + cmp r0, 0x4 + ble _080AAC1A + movs r4, 0x4 +_080AAC1A: + lsls r4, 24 + lsrs r0, r4, 24 + bl sub_80AA5BC + asrs r4, 24 + strh r4, [r5, 0x34] + ldr r0, _080AAC54 @ =gScriptContestCategory + strh r4, [r0] + lsls r4, 24 + lsrs r4, 24 + ldr r0, _080AAC58 @ =gScriptContestRank + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_80AE398 + ldrh r0, [r5, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_80AA280 + ldrh r0, [r5, 0x32] + lsls r0, 24 + lsrs r0, 24 + bl sub_80AA658 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080AAC54: .4byte gScriptContestCategory +_080AAC58: .4byte gScriptContestRank + thumb_func_end sub_80AABF0 +*/ + +/* + thumb_func_start sub_80AA754 +sub_80AA754: @ 80AA754 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080AA774 @ =gMain + ldrh r1, [r0, 0x30] + cmp r1, 0x20 + beq _080AA7A2 + cmp r1, 0x20 + bgt _080AA782 + cmp r1, 0x2 + beq _080AA7F8 + cmp r1, 0x2 + bgt _080AA778 + cmp r1, 0x1 + beq _080AA7D8 + b _080AA870 + .align 2, 0 +_080AA774: .4byte gMain +_080AA778: + cmp r1, 0x8 + beq _080AA868 + cmp r1, 0x10 + beq _080AA7A2 + b _080AA870 +_080AA782: + cmp r1, 0x80 + beq _080AA7C2 + cmp r1, 0x80 + bgt _080AA790 + cmp r1, 0x40 + beq _080AA7AC + b _080AA870 +_080AA790: + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + beq _080AA814 + movs r0, 0x80 + lsls r0, 2 + cmp r1, r0 + beq _080AA834 + b _080AA870 +_080AA7A2: + ldrh r0, [r4, 0x2E] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x2E] + b _080AA870 +_080AA7AC: + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080AA7BC + movs r0, 0x8 + strh r0, [r4, 0x30] + b _080AA870 +_080AA7BC: + subs r0, r1, 0x1 + strh r0, [r4, 0x30] + b _080AA870 +_080AA7C2: + ldrh r1, [r4, 0x30] + movs r3, 0x30 + ldrsh r0, [r4, r3] + cmp r0, 0x8 + bne _080AA7D2 + movs r0, 0 + strh r0, [r4, 0x30] + b _080AA870 +_080AA7D2: + adds r0, r1, 0x1 + strh r0, [r4, 0x30] + b _080AA870 +_080AA7D8: + ldr r2, _080AA7F4 @ =gUnknown_083C92E4 + movs r1, 0x2E + ldrsh r0, [r4, r1] + lsls r0, 2 + movs r3, 0x30 + ldrsh r1, [r4, r3] + lsls r1, 3 + adds r0, r1 + adds r0, r2 + ldr r2, [r0] + adds r0, r4, 0 + movs r1, 0x1 + b _080AA84E + .align 2, 0 +_080AA7F4: .4byte gUnknown_083C92E4 +_080AA7F8: + ldr r1, _080AA810 @ =gUnknown_083C92E4 + movs r0, 0x2E + ldrsh r2, [r4, r0] + lsls r2, 2 + movs r3, 0x30 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r2, r0 + adds r2, r1 + movs r1, 0x1 + negs r1, r1 + b _080AA84A + .align 2, 0 +_080AA810: .4byte gUnknown_083C92E4 +_080AA814: + ldr r2, _080AA830 @ =gUnknown_083C92E4 + movs r1, 0x2E + ldrsh r0, [r4, r1] + lsls r0, 2 + movs r3, 0x30 + ldrsh r1, [r4, r3] + lsls r1, 3 + adds r0, r1 + adds r0, r2 + ldr r2, [r0] + adds r0, r4, 0 + movs r1, 0xA + b _080AA84E + .align 2, 0 +_080AA830: .4byte gUnknown_083C92E4 +_080AA834: + ldr r1, _080AA864 @ =gUnknown_083C92E4 + movs r0, 0x2E + ldrsh r2, [r4, r0] + lsls r2, 2 + movs r3, 0x30 + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r2, r0 + adds r2, r1 + movs r1, 0xA + negs r1, r1 +_080AA84A: + ldr r2, [r2] + adds r0, r4, 0 +_080AA84E: + bl _call_via_r2 + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x34] + lsls r1, 24 + lsrs r1, 24 + bl sub_80AA614 + b _080AA870 + .align 2, 0 +_080AA864: .4byte gUnknown_083C92E4 +_080AA868: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80AAD08 +_080AA870: + ldr r2, _080AA898 @ =gUnknown_083C9296 + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r3, 0x30 + ldrsh r0, [r4, r3] + lsls r0, 1 + adds r1, r0 + adds r1, r2 + ldrb r0, [r1] + strh r0, [r4, 0x20] + ldr r1, _080AA89C @ =gUnknown_083C92A8 + movs r2, 0x30 + ldrsh r0, [r4, r2] + adds r0, r1 + ldrb r0, [r0] + strh r0, [r4, 0x22] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AA898: .4byte gUnknown_083C9296 +_080AA89C: .4byte gUnknown_083C92A8 + thumb_func_end sub_80AA754 +*/ |