diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2017-12-22 17:58:40 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-22 17:58:40 -0600 |
commit | aa13f45ebb79aed62171fbfe654d8b542fc9aa6c (patch) | |
tree | 89d4bc15a468733180a0d76041f73ee5364e5d89 | |
parent | 62bdd4d480ced306b85791c828ee8497e9fa2acc (diff) | |
parent | 7bf8a1c67fb373854673e870b15ba5170e7b0243 (diff) |
Merge pull request #490 from camthesaxman/decompile_contest
decompile contest.s
36 files changed, 5885 insertions, 16006 deletions
diff --git a/asm-de/contest_link_80C2020.s b/asm-de/contest_link_80C2020.s index 0c07937f8..209a1bb24 100644 --- a/asm-de/contest_link_80C2020.s +++ b/asm-de/contest_link_80C2020.s @@ -1086,7 +1086,7 @@ _080C2904: adds r1, r0 lsls r1, 3 adds r1, r7 - ldr r0, _080C2934 @ =gUnknown_02038690 + ldr r0, _080C2934 @ =gContestFinalStandings adds r0, r4, r0 ldrb r0, [r0] strh r0, [r1, 0x8] @@ -1098,7 +1098,7 @@ _080C2904: .align 2, 0 _080C292C: .4byte gTasks _080C2930: .4byte sub_80C3A5C -_080C2934: .4byte gUnknown_02038690 +_080C2934: .4byte gContestFinalStandings _080C2938: ldr r0, _080C2990 @ =gSharedMem + 0x18000 ldrb r0, [r0, 0x5] @@ -1128,7 +1128,7 @@ _080C295A: adds r0, 0x1 strh r0, [r4, 0x8] movs r4, 0 - ldr r1, _080C2998 @ =gUnknown_02038690 + ldr r1, _080C2998 @ =gContestFinalStandings ldrb r0, [r1] cmp r0, 0 beq _080C2984 @@ -1149,7 +1149,7 @@ _080C2984: .align 2, 0 _080C2990: .4byte gSharedMem + 0x18000 _080C2994: .4byte sub_80C3B30 -_080C2998: .4byte gUnknown_02038690 +_080C2998: .4byte gContestFinalStandings _080C299C: lsls r1, r5, 2 adds r0, r1, r5 @@ -1166,7 +1166,7 @@ _080C299C: movs r0, 0 strh r0, [r2, 0xA] movs r4, 0 - ldr r2, _080C29F4 @ =gUnknown_02038690 + ldr r2, _080C29F4 @ =gContestFinalStandings ldrb r0, [r2] ldr r1, _080C29F8 @ =gIsLinkContest ldr r3, _080C29FC @ =gStringVar1 @@ -1196,7 +1196,7 @@ _080C29D4: lsls r4, 6 b _080C2A10 .align 2, 0 -_080C29F4: .4byte gUnknown_02038690 +_080C29F4: .4byte gContestFinalStandings _080C29F8: .4byte gIsLinkContest _080C29FC: .4byte gStringVar1 _080C2A00: .4byte gLinkPlayers + 0x8 @@ -1310,7 +1310,7 @@ _080C2ADC: adds r0, r3, 0 strh r0, [r1] movs r1, 0 - ldr r3, _080C2BD0 @ =gUnknown_02038690 + ldr r3, _080C2BD0 @ =gContestFinalStandings ldrb r0, [r3] lsls r4, r7, 2 mov r10, r4 @@ -1416,7 +1416,7 @@ _080C2B14: _080C2BC4: .4byte gUnknown_030042C4 _080C2BC8: .4byte gUnknown_03004240 _080C2BCC: .4byte 0x00005050 -_080C2BD0: .4byte gUnknown_02038690 +_080C2BD0: .4byte gContestFinalStandings _080C2BD4: .4byte gContestMons _080C2BD8: .4byte gMonFrontPicTable _080C2BDC: .4byte gMonFrontPicCoords @@ -1705,7 +1705,7 @@ sub_80C2E14: @ 80C2E14 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r1, _080C2E80 @ =gUnknown_02038690 + ldr r1, _080C2E80 @ =gContestFinalStandings ldr r0, _080C2E84 @ =gContestPlayerMonIndex ldrb r0, [r0] adds r0, r1 @@ -1715,9 +1715,9 @@ sub_80C2E14: @ 80C2E14 bl sub_810FB10 ldr r0, _080C2E88 @ =gSpecialVar_ContestRank ldrb r0, [r0] - bl sub_80B2A7C + bl Contest_SaveWinner movs r0, 0xFE - bl sub_80B2A7C + bl Contest_SaveWinner ldr r4, _080C2E8C @ =gSharedMem ldr r0, _080C2E90 @ =0x00015ddf adds r1, r4, r0 @@ -1748,7 +1748,7 @@ sub_80C2E14: @ 80C2E14 pop {r0} bx r0 .align 2, 0 -_080C2E80: .4byte gUnknown_02038690 +_080C2E80: .4byte gContestFinalStandings _080C2E84: .4byte gContestPlayerMonIndex _080C2E88: .4byte gSpecialVar_ContestRank _080C2E8C: .4byte gSharedMem @@ -3444,7 +3444,7 @@ sub_80C3B30: @ 80C3B30 lsrs r0, 24 mov r12, r0 movs r5, 0 - ldr r1, _080C3BC0 @ =gUnknown_02038690 + ldr r1, _080C3BC0 @ =gContestFinalStandings ldrb r0, [r1] ldr r2, _080C3BC4 @ =gTasks mov r10, r2 @@ -3512,7 +3512,7 @@ _080C3B82: pop {r0} bx r0 .align 2, 0 -_080C3BC0: .4byte gUnknown_02038690 +_080C3BC0: .4byte gContestFinalStandings _080C3BC4: .4byte gTasks _080C3BC8: .4byte 0x00000fff _080C3BCC: .4byte 0x0600e100 @@ -4117,7 +4117,7 @@ _080C403A: negs r0, r0 _080C4060: strb r0, [r5, 0x12] - ldr r0, _080C40A8 @ =gUnknown_02038690 + ldr r0, _080C40A8 @ =gContestFinalStandings add r0, r8 ldrb r0, [r0] cmp r0, 0 @@ -4150,7 +4150,7 @@ _080C4098: .4byte gUnknown_02038678 _080C409C: .4byte gUnknown_02038670 _080C40A0: .4byte gSharedMem + 0x18018 _080C40A4: .4byte gUnknown_02038688 -_080C40A8: .4byte gUnknown_02038690 +_080C40A8: .4byte gContestFinalStandings _080C40AC: cmp r2, 0 ble _080C40B4 @@ -4608,7 +4608,7 @@ sub_80C43F4: @ 80C43F4 ldrb r0, [r4] ldr r1, _080C4438 @ =gSpecialVar_ContestRank ldrb r1, [r1] - bl sub_80AE398 + bl Contest_InitAllPokemon ldrb r0, [r4] bl sub_80AE82C _080C4422: @@ -4695,7 +4695,7 @@ _080C44BC: .4byte gSpecialVar_ContestRank sub_80C44C0: @ 80C44C0 push {r4-r7,lr} sub sp, 0x4 - ldr r1, _080C44E8 @ =gUnknown_02038690 + ldr r1, _080C44E8 @ =gContestFinalStandings ldr r0, _080C44EC @ =gContestPlayerMonIndex ldrb r0, [r0] adds r0, r1 @@ -4716,7 +4716,7 @@ _080C44DE: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080C44E8: .4byte gUnknown_02038690 +_080C44E8: .4byte gContestFinalStandings _080C44EC: .4byte gContestPlayerMonIndex _080C44F0: .4byte gSpecialVar_ContestCategory _080C44F4: .4byte _080C44F8 @@ -5075,7 +5075,7 @@ _080C47BC: .4byte gSpecialVar_0x8006 sub_80C47C0: @ 80C47C0 push {lr} movs r1, 0 - ldr r2, _080C47E8 @ =gUnknown_02038690 + ldr r2, _080C47E8 @ =gContestFinalStandings ldrb r0, [r2] ldr r3, _080C47EC @ =gSpecialVar_0x8005 cmp r0, 0 @@ -5095,7 +5095,7 @@ _080C47E0: pop {r0} bx r0 .align 2, 0 -_080C47E8: .4byte gUnknown_02038690 +_080C47E8: .4byte gContestFinalStandings _080C47EC: .4byte gSpecialVar_0x8005 thumb_func_end sub_80C47C0 @@ -5103,7 +5103,7 @@ _080C47EC: .4byte gSpecialVar_0x8005 sub_80C47F0: @ 80C47F0 push {r4,lr} movs r2, 0 - ldr r3, _080C4830 @ =gUnknown_02038690 + ldr r3, _080C4830 @ =gContestFinalStandings ldrb r0, [r3] ldr r1, _080C4834 @ =gIsLinkContest ldr r4, _080C4838 @ =gStringVar3 @@ -5134,7 +5134,7 @@ _080C4812: bl sub_80C4674 b _080C484C .align 2, 0 -_080C4830: .4byte gUnknown_02038690 +_080C4830: .4byte gContestFinalStandings _080C4834: .4byte gIsLinkContest _080C4838: .4byte gStringVar3 _080C483C: .4byte gLinkPlayers + 0x8 @@ -5156,7 +5156,7 @@ _080C4854: .4byte gUnknown_0203857D sub_80C4858: @ 80C4858 push {lr} movs r1, 0 - ldr r2, _080C4884 @ =gUnknown_02038690 + ldr r2, _080C4884 @ =gContestFinalStandings ldrb r0, [r2] ldr r3, _080C4888 @ =gStringVar1 cmp r0, 0 @@ -5177,19 +5177,19 @@ _080C4878: pop {r0} bx r0 .align 2, 0 -_080C4884: .4byte gUnknown_02038690 +_080C4884: .4byte gContestFinalStandings _080C4888: .4byte gStringVar1 thumb_func_end sub_80C4858 thumb_func_start sub_80C488C sub_80C488C: @ 80C488C push {lr} - ldr r0, _080C4898 @ =sub_80AB47C + ldr r0, _080C4898 @ =CB2_StartContest bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_080C4898: .4byte sub_80AB47C +_080C4898: .4byte CB2_StartContest thumb_func_end sub_80C488C thumb_func_start sub_80C489C @@ -5352,7 +5352,7 @@ sub_80C49C4: @ 80C49C4 lsrs r4, 24 ldr r0, _080C49E4 @ =gUnknown_02038694 ldrb r0, [r0] - bl sub_80AE098 + bl Contest_CreatePlayerMon ldr r1, _080C49E8 @ =sub_80C8734 ldr r2, _080C49EC @ =sub_80C49F0 adds r0, r4, 0 diff --git a/asm-de/contest_link_80C857C.s b/asm-de/contest_link_80C857C.s index cf1ef216d..e3a8b674d 100644 --- a/asm-de/contest_link_80C857C.s +++ b/asm-de/contest_link_80C857C.s @@ -924,18 +924,18 @@ _080C8C18: lsls r0, 24 cmp r0, 0 beq _080C8C7A - ldr r0, _080C8C2C @ =gUnknown_02038690 + ldr r0, _080C8C2C @ =gContestFinalStandings movs r1, 0x4 bl sub_80C857C b _080C8C4C .align 2, 0 -_080C8C2C: .4byte gUnknown_02038690 +_080C8C2C: .4byte gContestFinalStandings _080C8C30: bl sub_80C85D8 lsls r0, 24 cmp r0, 0 beq _080C8C7A - ldr r0, _080C8C60 @ =gUnknown_02038690 + ldr r0, _080C8C60 @ =gContestFinalStandings ldr r1, _080C8C64 @ =gUnknown_0203869B ldrb r1, [r1] lsls r1, 8 @@ -955,7 +955,7 @@ _080C8C4C: strh r1, [r0, 0x8] b _080C8C7A .align 2, 0 -_080C8C60: .4byte gUnknown_02038690 +_080C8C60: .4byte gContestFinalStandings _080C8C64: .4byte gUnknown_0203869B _080C8C68: .4byte gBlockRecvBuffer _080C8C6C: .4byte gTasks diff --git a/asm/contest.s b/asm/contest.s deleted file mode 100644 index 391dd3f43..000000000 --- a/asm/contest.s +++ /dev/null @@ -1,15731 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_89 -nullsub_89: @ 80AB1AC - bx lr - thumb_func_end nullsub_89 - - thumb_func_start ResetLinkContestBoolean -ResetLinkContestBoolean: @ 80AB1B0 - ldr r1, _080AB1B8 @ =gIsLinkContest - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_080AB1B8: .4byte gIsLinkContest - thumb_func_end ResetLinkContestBoolean - - thumb_func_start sub_80AB1BC -sub_80AB1BC: @ 80AB1BC - push {r4-r6,lr} - movs r6, 0x80 - lsls r6, 19 - movs r0, 0x40 - strh r0, [r6] - ldr r4, _080AB260 @ =0x04000208 - ldrh r3, [r4] - movs r2, 0 - strh r2, [r4] - ldr r5, _080AB264 @ =0x04000200 - ldrh r0, [r5] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r5] - strh r3, [r4] - ldr r1, _080AB268 @ =REG_DISPSTAT - movs r0, 0x8 - strh r0, [r1] - adds r1, 0x4 - movs r3, 0x98 - lsls r3, 8 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080AB26C @ =0x00009e09 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - movs r3, 0x9C - lsls r3, 8 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080AB270 @ =0x00003a03 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _080AB274 @ =REG_BLDCNT - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - subs r0, 0xC - ldr r3, _080AB278 @ =0x00003f3f - adds r1, r3, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldrh r0, [r6] - movs r3, 0xFE - lsls r3, 7 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r6] - ldr r0, _080AB27C @ =gUnknown_030042A4 - strh r2, [r0] - ldr r0, _080AB280 @ =gUnknown_030042A0 - strh r2, [r0] - ldr r0, _080AB284 @ =gUnknown_030042C0 - strh r2, [r0] - ldr r0, _080AB288 @ =gUnknown_030041B4 - strh r2, [r0] - ldr r0, _080AB28C @ =gUnknown_03004288 - strh r2, [r0] - ldr r0, _080AB290 @ =gUnknown_03004280 - strh r2, [r0] - ldr r0, _080AB294 @ =gUnknown_030041B0 - strh r2, [r0] - ldr r0, _080AB298 @ =gUnknown_030041B8 - strh r2, [r0] - ldr r0, _080AB29C @ =gUnknown_030042C4 - strh r2, [r0] - ldr r0, _080AB2A0 @ =gUnknown_03004240 - strh r2, [r0] - ldr r0, _080AB2A4 @ =gUnknown_03004200 - strh r2, [r0] - ldr r0, _080AB2A8 @ =gUnknown_03004244 - strh r2, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AB260: .4byte 0x04000208 -_080AB264: .4byte 0x04000200 -_080AB268: .4byte REG_DISPSTAT -_080AB26C: .4byte 0x00009e09 -_080AB270: .4byte 0x00003a03 -_080AB274: .4byte REG_BLDCNT -_080AB278: .4byte 0x00003f3f -_080AB27C: .4byte gUnknown_030042A4 -_080AB280: .4byte gUnknown_030042A0 -_080AB284: .4byte gUnknown_030042C0 -_080AB288: .4byte gUnknown_030041B4 -_080AB28C: .4byte gUnknown_03004288 -_080AB290: .4byte gUnknown_03004280 -_080AB294: .4byte gUnknown_030041B0 -_080AB298: .4byte gUnknown_030041B8 -_080AB29C: .4byte gUnknown_030042C4 -_080AB2A0: .4byte gUnknown_03004240 -_080AB2A4: .4byte gUnknown_03004200 -_080AB2A8: .4byte gUnknown_03004244 - thumb_func_end sub_80AB1BC - - thumb_func_start sub_80AB2AC -sub_80AB2AC: @ 80AB2AC - push {r4,r5,lr} - ldr r0, _080AB300 @ =gContestMiscGfx - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - ldr r0, _080AB304 @ =gContestAudienceGfx - ldr r1, _080AB308 @ =0x06002000 - bl LZDecompressVram - ldr r0, _080AB30C @ =gUnknown_08D1725C - ldr r1, _080AB310 @ =0x0600d000 - bl LZDecompressVram - ldr r0, _080AB314 @ =gUnknown_08D17144 - movs r2, 0x80 - lsls r2, 2 - movs r1, 0 - bl LoadCompressedPalette - bl sub_80AB350 - movs r4, 0 - movs r5, 0xA0 -_080AB2DC: - ldr r0, _080AB318 @ =gSharedMem + 0x18004 - adds r0, r5, r0 - ldr r1, _080AB31C @ =gUnknown_02038696 - adds r1, r4, r1 - ldrb r1, [r1] - adds r1, 0x5 - lsls r1, 4 - movs r2, 0x20 - bl LoadPalette - adds r5, 0x20 - adds r4, 0x1 - cmp r4, 0x3 - ble _080AB2DC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AB300: .4byte gContestMiscGfx -_080AB304: .4byte gContestAudienceGfx -_080AB308: .4byte 0x06002000 -_080AB30C: .4byte gUnknown_08D1725C -_080AB310: .4byte 0x0600d000 -_080AB314: .4byte gUnknown_08D17144 -_080AB318: .4byte gSharedMem + 0x18004 -_080AB31C: .4byte gUnknown_02038696 - thumb_func_end sub_80AB2AC - - thumb_func_start sub_80AB320 -sub_80AB320: @ 80AB320 - push {r4,lr} - ldr r4, _080AB340 @ =gWindowConfig_81E6FD8 - adds r0, r4, 0 - bl SetUpWindowConfig - ldr r0, _080AB344 @ =gUnknown_03004210 - adds r1, r4, 0 - bl InitWindowFromConfig - ldr r0, _080AB348 @ =gMenuWindow - ldr r1, _080AB34C @ =gWindowConfig_81E6FF4 - bl InitWindowFromConfig - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AB340: .4byte gWindowConfig_81E6FD8 -_080AB344: .4byte gUnknown_03004210 -_080AB348: .4byte gMenuWindow -_080AB34C: .4byte gWindowConfig_81E6FF4 - thumb_func_end sub_80AB320 - - thumb_func_start sub_80AB350 -sub_80AB350: @ 80AB350 - push {r4,lr} - ldr r0, _080AB38C @ =gWindowConfig_81E6FD8 - bl LoadFontDefaultPalette - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - bl FillPalette - movs r4, 0xA -_080AB364: - adds r1, r4, 0 - adds r1, 0xF0 - ldr r0, _080AB390 @ =gPlttBufferUnfaded + 0x1E2 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xD - bls _080AB364 - ldr r0, _080AB394 @ =0x00007e3f - movs r1, 0xF3 - movs r2, 0x2 - bl FillPalette - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AB38C: .4byte gWindowConfig_81E6FD8 -_080AB390: .4byte gPlttBufferUnfaded + 0x1E2 -_080AB394: .4byte 0x00007e3f - thumb_func_end sub_80AB350 - - thumb_func_start sub_80AB398 -sub_80AB398: @ 80AB398 - push {r4-r6,lr} - ldr r4, _080AB468 @ =gSharedMem + 0x19204 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x5C - bl memset - movs r5, 0 - adds r4, 0x2 - movs r2, 0xFF -_080AB3AC: - adds r1, r5, r4 - ldrb r0, [r1] - orrs r0, r2 - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x3 - ble _080AB3AC - ldr r4, _080AB46C @ =gSharedMem + 0x19260 - movs r5, 0x3 -_080AB3BE: - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x1C - bl memset - adds r4, 0x1C - subs r5, 0x1 - cmp r5, 0 - bge _080AB3BE - ldr r4, _080AB470 @ =gSharedMem + 0x192D0 - movs r6, 0x4 - negs r6, r6 - movs r3, 0xFF - adds r2, r4, 0 - subs r2, 0x65 - movs r5, 0x3 -_080AB3DE: - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r2, 0x8] - orrs r0, r3 - strb r0, [r2, 0x8] - ldrb r0, [r2, 0x9] - orrs r0, r3 - strb r0, [r2, 0x9] - adds r2, 0x1C - subs r5, 0x1 - cmp r5, 0 - bge _080AB3DE - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x14 - bl memset - adds r0, r4, 0 - adds r0, 0x14 - movs r1, 0 - movs r2, 0x44 - bl memset - adds r0, r4, 0 - adds r0, 0x58 - movs r1, 0 - movs r2, 0x4 - bl memset - adds r0, r4, 0 - adds r0, 0x68 - movs r1, 0 - movs r2, 0x10 - bl memset - ldr r0, _080AB474 @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080AB43A - movs r0, 0 - bl sub_80B0F28 -_080AB43A: - movs r5, 0 - movs r6, 0xFF - adds r3, r4, 0 - subs r3, 0xB8 - adds r2, r4, 0 - subs r2, 0x57 - ldr r4, _080AB478 @ =gUnknown_02038696 -_080AB448: - ldrb r0, [r2] - orrs r0, r6 - strb r0, [r2] - adds r1, r3, r5 - adds r0, r5, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1C - adds r5, 0x1 - cmp r5, 0x3 - ble _080AB448 - bl sub_80B159C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AB468: .4byte gSharedMem + 0x19204 -_080AB46C: .4byte gSharedMem + 0x19260 -_080AB470: .4byte gSharedMem + 0x192D0 -_080AB474: .4byte gIsLinkContest -_080AB478: .4byte gUnknown_02038696 - thumb_func_end sub_80AB398 - - thumb_func_start sub_80AB47C -sub_80AB47C: @ 80AB47C - push {r4-r7,lr} - sub sp, 0x4 - ldr r0, _080AB498 @ =gMain - ldr r1, _080AB49C @ =0x0000043c - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0x1 - beq _080AB554 - cmp r0, 0x1 - bgt _080AB4A0 - cmp r0, 0 - beq _080AB4AA - b _080AB5AE - .align 2, 0 -_080AB498: .4byte gMain -_080AB49C: .4byte 0x0000043c -_080AB4A0: - cmp r0, 0x2 - beq _080AB55A - cmp r0, 0x3 - beq _080AB578 - b _080AB5AE -_080AB4AA: - movs r0, 0 - bl SetVBlankCallback - bl sub_80AB320 - bl sub_80AB1BC - bl dp12_8087EA4 - bl ResetPaletteFade - ldr r0, _080AB538 @ =gPaletteFade - ldrb r1, [r0, 0x8] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0, 0x8] - movs r2, 0xC0 - lsls r2, 19 - movs r3, 0xC0 - lsls r3, 9 - movs r5, 0 - ldr r1, _080AB53C @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - ldr r6, _080AB540 @ =0x85000400 - movs r7, 0x85 - lsls r7, 24 -_080AB4E0: - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080AB4E0 - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetSpriteData - bl ResetTasks - bl FreeAllSpritePalettes - ldr r1, _080AB544 @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, _080AB548 @ =gSharedMem - movs r1, 0xC0 - lsls r1, 9 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - bl ClearBattleMonForms - bl sub_80AB398 - ldr r1, _080AB54C @ =gMain - ldr r0, _080AB550 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080AB5AE - .align 2, 0 -_080AB538: .4byte gPaletteFade -_080AB53C: .4byte 0x040000d4 -_080AB540: .4byte 0x85000400 -_080AB544: .4byte gReservedSpritePaletteCount -_080AB548: .4byte gSharedMem -_080AB54C: .4byte gMain -_080AB550: .4byte 0x0000043c -_080AB554: - bl sub_80AB350 - b _080AB56C -_080AB55A: - ldr r5, _080AB574 @ =gSharedMem + 0x1925D - adds r0, r5, 0 - bl sub_80AB70C - lsls r0, 24 - cmp r0, 0 - beq _080AB5AE - movs r0, 0 - strb r0, [r5] -_080AB56C: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _080AB5AE - .align 2, 0 -_080AB574: .4byte gSharedMem + 0x1925D -_080AB578: - bl sub_80B2184 - ldr r0, _080AB5B8 @ =gUnknown_030042C0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080AB5BC @ =gUnknown_030041B4 - strh r1, [r0] - movs r0, 0x2 - bl BeginFastPaletteFade - ldr r2, _080AB5C0 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, _080AB5C4 @ =sub_80ABAC4 - bl SetVBlankCallback - ldr r0, _080AB5C8 @ =sub_80AB5D4 - movs r1, 0xA - bl CreateTask - ldr r1, _080AB5CC @ =gSharedMem + 0x19204 - strb r0, [r1, 0x8] - ldr r0, _080AB5D0 @ =sub_80ABAAC - bl SetMainCallback2 -_080AB5AE: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AB5B8: .4byte gUnknown_030042C0 -_080AB5BC: .4byte gUnknown_030041B4 -_080AB5C0: .4byte gPaletteFade -_080AB5C4: .4byte sub_80ABAC4 -_080AB5C8: .4byte sub_80AB5D4 -_080AB5CC: .4byte gSharedMem + 0x19204 -_080AB5D0: .4byte sub_80ABAAC - thumb_func_end sub_80AB47C - - thumb_func_start sub_80AB5D4 -sub_80AB5D4: @ 80AB5D4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080AB5F8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080AB5F4 - ldr r0, _080AB5FC @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _080AB600 @ =sub_80AB604 - str r0, [r1] -_080AB5F4: - pop {r0} - bx r0 - .align 2, 0 -_080AB5F8: .4byte gPaletteFade -_080AB5FC: .4byte gTasks -_080AB600: .4byte sub_80AB604 - thumb_func_end sub_80AB5D4 - - thumb_func_start sub_80AB604 -sub_80AB604: @ 80AB604 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080AB648 @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AB65C - ldr r2, _080AB64C @ =gPaletteFade - ldrb r1, [r2, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080AB66A - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - bl sub_80AF860 - ldr r0, _080AB650 @ =sub_80AB678 - movs r1, 0 - bl CreateTask - ldr r1, _080AB654 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080AB658 @ =nullsub_89 - str r1, [r0] - b _080AB66A - .align 2, 0 -_080AB648: .4byte gIsLinkContest -_080AB64C: .4byte gPaletteFade -_080AB650: .4byte sub_80AB678 -_080AB654: .4byte gTasks -_080AB658: .4byte nullsub_89 -_080AB65C: - ldr r0, _080AB670 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080AB674 @ =sub_80AB960 - str r0, [r1] -_080AB66A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AB670: .4byte gTasks -_080AB674: .4byte sub_80AB960 - thumb_func_end sub_80AB604 - - thumb_func_start sub_80AB678 -sub_80AB678: @ 80AB678 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080AB68C @ =sub_80C89DC - ldr r2, _080AB690 @ =sub_80AB694 - bl SetTaskFuncWithFollowupFunc - pop {r0} - bx r0 - .align 2, 0 -_080AB68C: .4byte sub_80C89DC -_080AB690: .4byte sub_80AB694 - thumb_func_end sub_80AB678 - - thumb_func_start sub_80AB694 -sub_80AB694: @ 80AB694 - lsls r0, 24 - lsrs r0, 24 - movs r3, 0x1 - ldr r2, _080AB6AC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r3, [r1, 0x8] - ldr r0, _080AB6B0 @ =sub_80AB6B4 - str r0, [r1] - bx lr - .align 2, 0 -_080AB6AC: .4byte gTasks -_080AB6B0: .4byte sub_80AB6B4 - thumb_func_end sub_80AB694 - - thumb_func_start sub_80AB6B4 -sub_80AB6B4: @ 80AB6B4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _080AB6F8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r5 - ldrh r1, [r0, 0x8] - subs r1, 0x1 - strh r1, [r0, 0x8] - lsls r1, 16 - cmp r1, 0 - bgt _080AB6F2 - bl GetMultiplayerId - adds r0, r4, 0 - bl DestroyTask - ldr r0, _080AB6FC @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x8] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - ldr r1, _080AB700 @ =sub_80AB960 - str r1, [r0] - ldr r1, _080AB704 @ =gRngValue - ldr r0, _080AB708 @ =gUnknown_03005D28 - ldr r0, [r0] - str r0, [r1] -_080AB6F2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AB6F8: .4byte gTasks -_080AB6FC: .4byte gSharedMem + 0x19204 -_080AB700: .4byte sub_80AB960 -_080AB704: .4byte gRngValue -_080AB708: .4byte gUnknown_03005D28 - thumb_func_end sub_80AB6B4 - - thumb_func_start sub_80AB70C -sub_80AB70C: @ 80AB70C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x44 - mov r10, r0 - ldrb r0, [r0] - cmp r0, 0x6 - bls _080AB722 - b _080AB93C -_080AB722: - lsls r0, 2 - ldr r1, _080AB72C @ =_080AB730 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AB72C: .4byte _080AB730 - .align 2, 0 -_080AB730: - .4byte _080AB74C - .4byte _080AB7A0 - .4byte _080AB7B0 - .4byte _080AB800 - .4byte _080AB814 - .4byte _080AB844 - .4byte _080AB8CC -_080AB74C: - ldr r0, _080AB794 @ =gPaletteFade - ldrb r1, [r0, 0x8] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0, 0x8] - movs r2, 0xC0 - lsls r2, 19 - movs r3, 0xC0 - lsls r3, 9 - add r5, sp, 0x40 - movs r6, 0 - ldr r1, _080AB798 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r8, r5 - ldr r7, _080AB79C @ =0x85000400 - movs r0, 0x85 - lsls r0, 24 - mov r9, r0 -_080AB772: - str r6, [sp, 0x40] - mov r0, r8 - str r0, [r1] - str r2, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080AB772 - str r6, [sp, 0x40] - str r5, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r9 - orrs r0, r2 - b _080AB7E6 - .align 2, 0 -_080AB794: .4byte gPaletteFade -_080AB798: .4byte 0x040000d4 -_080AB79C: .4byte 0x85000400 -_080AB7A0: - ldr r0, _080AB7AC @ =gContestMiscGfx - movs r1, 0xC0 - lsls r1, 19 - bl LZDecompressVram - b _080AB946 - .align 2, 0 -_080AB7AC: .4byte gContestMiscGfx -_080AB7B0: - ldr r0, _080AB7EC @ =gContestAudienceGfx - ldr r4, _080AB7F0 @ =0x06002000 - adds r1, r4, 0 - bl LZDecompressVram - ldr r3, _080AB7F4 @ =gSharedMem + 0x15800 - movs r5, 0x80 - lsls r5, 6 - ldr r1, _080AB7F8 @ =0x040000d4 - ldr r6, _080AB7FC @ =0x84000400 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x84 - lsls r7, 24 -_080AB7CC: - str r4, [r1] - str r3, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r4, r2 - adds r3, r2 - subs r5, r2 - cmp r5, r2 - bhi _080AB7CC - str r4, [r1] - str r3, [r1, 0x4] - lsrs r0, r5, 2 - orrs r0, r7 -_080AB7E6: - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - b _080AB946 - .align 2, 0 -_080AB7EC: .4byte gContestAudienceGfx -_080AB7F0: .4byte 0x06002000 -_080AB7F4: .4byte gSharedMem + 0x15800 -_080AB7F8: .4byte 0x040000d4 -_080AB7FC: .4byte 0x84000400 -_080AB800: - ldr r0, _080AB80C @ =gUnknown_08D1725C - ldr r1, _080AB810 @ =0x0600d000 - bl LZDecompressVram - b _080AB946 - .align 2, 0 -_080AB80C: .4byte gUnknown_08D1725C -_080AB810: .4byte 0x0600d000 -_080AB814: - ldr r0, _080AB830 @ =gUnknown_08D17424 - ldr r4, _080AB834 @ =0x0600e000 - adds r1, r4, 0 - bl LZDecompressVram - ldr r1, _080AB838 @ =gSharedMem + 0x18A04 - ldr r0, _080AB83C @ =0x040000d4 - str r4, [r0] - str r1, [r0, 0x4] - ldr r1, _080AB840 @ =0x84000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _080AB946 - .align 2, 0 -_080AB830: .4byte gUnknown_08D17424 -_080AB834: .4byte 0x0600e000 -_080AB838: .4byte gSharedMem + 0x18A04 -_080AB83C: .4byte 0x040000d4 -_080AB840: .4byte 0x84000200 -_080AB844: - ldr r0, _080AB8AC @ =gUnknown_08D17144 - movs r2, 0x80 - lsls r2, 2 - movs r1, 0 - bl LoadCompressedPalette - ldr r5, _080AB8B0 @ =gPlttBufferUnfaded + 0x100 - ldr r6, _080AB8B4 @ =REG_BG0CNT - adds r0, r5, 0 - mov r1, sp - adds r2, r6, 0 - bl CpuSet - ldr r0, _080AB8B8 @ =gContestPlayerMonIndex - mov r9, r0 - ldrb r0, [r0] - adds r0, 0x5 - lsls r0, 5 - ldr r1, _080AB8BC @ =0xffffff00 - adds r1, r5 - mov r8, r1 - add r0, r8 - add r4, sp, 0x20 - adds r1, r4, 0 - adds r2, r6, 0 - bl CpuSet - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl CpuSet - mov r2, r9 - ldrb r1, [r2] - adds r1, 0x5 - lsls r1, 5 - add r1, r8 - mov r0, sp - adds r2, r6, 0 - bl CpuSet - ldr r1, _080AB8C0 @ =gSharedMem + 0x18004 - ldr r0, _080AB8C4 @ =0x040000d4 - mov r2, r8 - str r2, [r0] - str r1, [r0, 0x4] - ldr r1, _080AB8C8 @ =0x84000080 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - bl sub_80AB350 - b _080AB946 - .align 2, 0 -_080AB8AC: .4byte gUnknown_08D17144 -_080AB8B0: .4byte gPlttBufferUnfaded + 0x100 -_080AB8B4: .4byte REG_BG0CNT -_080AB8B8: .4byte gContestPlayerMonIndex -_080AB8BC: .4byte 0xffffff00 -_080AB8C0: .4byte gSharedMem + 0x18004 -_080AB8C4: .4byte 0x040000d4 -_080AB8C8: .4byte 0x84000080 -_080AB8CC: - bl sub_80B1118 - bl sub_80AFA5C - bl sub_80AEB30 - bl sub_80AE8B4 - ldr r1, _080AB924 @ =gSharedMem + 0x19204 - movs r4, 0 - strb r0, [r1, 0x12] - bl sub_80AFE30 - bl sub_80B0034 - bl sub_80B00C8 - bl sub_80B0324 - bl sub_80B0518 - ldr r1, _080AB928 @ =gBanksBySide - strb r4, [r1] - movs r0, 0x1 - strb r0, [r1, 0x1] - movs r3, 0x3 - strb r3, [r1, 0x2] - movs r2, 0x2 - strb r2, [r1, 0x3] - ldr r0, _080AB92C @ =gBattleTypeFlags - strh r4, [r0] - ldr r4, _080AB930 @ =gBankAttacker - strb r2, [r4] - ldr r0, _080AB934 @ =gBankTarget - strb r3, [r0] - bl sub_80AE858 - ldr r2, _080AB938 @ =gObjectBankIDs - ldrb r1, [r4] - adds r1, r2 - strb r0, [r1] - bl sub_80B292C - b _080AB946 - .align 2, 0 -_080AB924: .4byte gSharedMem + 0x19204 -_080AB928: .4byte gBanksBySide -_080AB92C: .4byte gBattleTypeFlags -_080AB930: .4byte gBankAttacker -_080AB934: .4byte gBankTarget -_080AB938: .4byte gObjectBankIDs -_080AB93C: - movs r0, 0 - mov r1, r10 - strb r0, [r1] - movs r0, 0x1 - b _080AB950 -_080AB946: - mov r2, r10 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - movs r0, 0 -_080AB950: - add sp, 0x44 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80AB70C - - thumb_func_start sub_80AB960 -sub_80AB960: @ 80AB960 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _080AB994 @ =gPaletteFade - ldrb r2, [r1, 0x8] - movs r0, 0x7F - ands r0, r2 - strb r0, [r1, 0x8] - ldrb r1, [r1, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080AB990 - ldr r0, _080AB998 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - strh r2, [r1, 0x8] - strh r2, [r1, 0xA] - ldr r0, _080AB99C @ =sub_80AB9A0 - str r0, [r1] -_080AB990: - pop {r0} - bx r0 - .align 2, 0 -_080AB994: .4byte gPaletteFade -_080AB998: .4byte gTasks -_080AB99C: .4byte sub_80AB9A0 - thumb_func_end sub_80AB960 - - thumb_func_start sub_80AB9A0 -sub_80AB9A0: @ 80AB9A0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080AB9C4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bhi _080ABA7C - lsls r0, 2 - ldr r1, _080AB9C8 @ =_080AB9CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AB9C4: .4byte gTasks -_080AB9C8: .4byte _080AB9CC - .align 2, 0 -_080AB9CC: - .4byte _080AB9E0 - .4byte _080ABA0A - .4byte _080ABA28 - .4byte _080ABA44 - .4byte _080ABA7C -_080AB9E0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0xA] - adds r1, r0, 0x1 - strh r1, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080ABA9C - movs r0, 0 - strh r0, [r4, 0xA] - movs r0, 0x61 - movs r1, 0 - bl PlaySE12WithPanning - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080ABA9C -_080ABA0A: - ldr r1, _080ABA24 @ =gUnknown_030041B4 - ldrh r0, [r1] - adds r0, 0x7 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA0 - ble _080ABA9C - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r2 - b _080ABA68 - .align 2, 0 -_080ABA24: .4byte gUnknown_030041B4 -_080ABA28: - bl sub_80B2280 - ldr r0, _080ABA40 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080ABA9C - .align 2, 0 -_080ABA40: .4byte gTasks -_080ABA44: - ldr r3, _080ABA70 @ =REG_BG0CNT - ldrb r2, [r3] - movs r1, 0x4 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3] - ldr r2, _080ABA74 @ =REG_BG2CNT - ldrb r0, [r2] - ands r1, r0 - strb r1, [r2] - bl sub_80B1B14 - ldr r1, _080ABA78 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 -_080ABA68: - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _080ABA9C - .align 2, 0 -_080ABA70: .4byte REG_BG0CNT -_080ABA74: .4byte REG_BG2CNT -_080ABA78: .4byte gTasks -_080ABA7C: - ldr r0, _080ABAA4 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x6] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080ABA9C - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r2 - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - ldr r1, _080ABAA8 @ =sub_80ABB70 - str r1, [r0] -_080ABA9C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ABAA4: .4byte gSharedMem + 0x19204 -_080ABAA8: .4byte sub_80ABB70 - thumb_func_end sub_80AB9A0 - - thumb_func_start sub_80ABAAC -sub_80ABAAC: @ 80ABAAC - push {lr} - bl AnimateSprites - bl RunTasks - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80ABAAC - - thumb_func_start sub_80ABAC4 -sub_80ABAC4: @ 80ABAC4 - push {lr} - ldr r1, _080ABB3C @ =REG_BG0HOFS - ldr r0, _080ABB40 @ =gUnknown_030042A4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080ABB44 @ =gUnknown_030042A0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080ABB48 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080ABB4C @ =gUnknown_030041B4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080ABB50 @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080ABB54 @ =gUnknown_03004280 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080ABB58 @ =gUnknown_030041B0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080ABB5C @ =gUnknown_030041B8 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x22 - ldr r0, _080ABB60 @ =gUnknown_030042C4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x4 - ldr r0, _080ABB64 @ =gUnknown_03004240 - ldrh r0, [r0] - strh r0, [r1] - subs r1, 0x2 - ldr r0, _080ABB68 @ =gUnknown_03004200 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x4 - ldr r0, _080ABB6C @ =gUnknown_03004244 - ldrh r0, [r0] - strh r0, [r1] - bl TransferPlttBuffer - bl LoadOam - bl ProcessSpriteCopyRequests - bl sub_8089668 - pop {r0} - bx r0 - .align 2, 0 -_080ABB3C: .4byte REG_BG0HOFS -_080ABB40: .4byte gUnknown_030042A4 -_080ABB44: .4byte gUnknown_030042A0 -_080ABB48: .4byte gUnknown_030042C0 -_080ABB4C: .4byte gUnknown_030041B4 -_080ABB50: .4byte gUnknown_03004288 -_080ABB54: .4byte gUnknown_03004280 -_080ABB58: .4byte gUnknown_030041B0 -_080ABB5C: .4byte gUnknown_030041B8 -_080ABB60: .4byte gUnknown_030042C4 -_080ABB64: .4byte gUnknown_03004240 -_080ABB68: .4byte gUnknown_03004200 -_080ABB6C: .4byte gUnknown_03004244 - thumb_func_end sub_80ABAC4 - - thumb_func_start sub_80ABB70 -sub_80ABB70: @ 80ABB70 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080ABBB0 @ =gUnknown_030042A0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080ABBB4 @ =gUnknown_03004280 - strh r1, [r0] - bl sub_80B0D7C - ldr r1, _080ABBB8 @ =gPlttBufferUnfaded - ldr r2, _080ABBBC @ =gSharedMem + 0x18204 - ldr r0, _080ABBC0 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _080ABBC4 @ =0x84000100 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _080ABBC8 @ =gContestPlayerMonIndex - ldrb r0, [r0] - bl sub_80AF59C - lsls r0, 24 - cmp r0, 0 - bne _080ABBD4 - ldr r0, _080ABBCC @ =gDisplayedStringBattle - ldr r1, _080ABBD0 @ =gUnknown_083CAF84 - bl StringCopy - b _080ABBDC - .align 2, 0 -_080ABBB0: .4byte gUnknown_030042A0 -_080ABBB4: .4byte gUnknown_03004280 -_080ABBB8: .4byte gPlttBufferUnfaded -_080ABBBC: .4byte gSharedMem + 0x18204 -_080ABBC0: .4byte 0x040000d4 -_080ABBC4: .4byte 0x84000100 -_080ABBC8: .4byte gContestPlayerMonIndex -_080ABBCC: .4byte gDisplayedStringBattle -_080ABBD0: .4byte gUnknown_083CAF84 -_080ABBD4: - ldr r0, _080ABC20 @ =gDisplayedStringBattle - ldr r1, _080ABC24 @ =gUnknown_083CAFAE - bl StringCopy -_080ABBDC: - ldr r5, _080ABC20 @ =gDisplayedStringBattle - ldr r0, _080ABC28 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x1] - adds r1, 0x1 - adds r0, r5, 0 - bl sub_80AE020 - bl sub_80AF138 - ldr r4, _080ABC2C @ =gStringVar4 - adds r0, r4, 0 - adds r1, r5, 0 - bl StringExpandPlaceholders - ldr r0, _080ABC30 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080ABC34 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ABC38 @ =sub_80ABC3C - str r1, [r0] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080ABC20: .4byte gDisplayedStringBattle -_080ABC24: .4byte gUnknown_083CAFAE -_080ABC28: .4byte gSharedMem + 0x19204 -_080ABC2C: .4byte gStringVar4 -_080ABC30: .4byte gMenuWindow -_080ABC34: .4byte gTasks -_080ABC38: .4byte sub_80ABC3C - thumb_func_end sub_80ABB70 - - thumb_func_start sub_80ABC3C -sub_80ABC3C: @ 80ABC3C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080ABC64 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080ABC5E - ldr r0, _080ABC68 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ABC6C @ =sub_80ABC70 - str r0, [r1] -_080ABC5E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ABC64: .4byte gMenuWindow -_080ABC68: .4byte gTasks -_080ABC6C: .4byte sub_80ABC70 - thumb_func_end sub_80ABC3C - - thumb_func_start sub_80ABC70 -sub_80ABC70: @ 80ABC70 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - ldr r0, _080ABCB0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080ABC88 - cmp r1, 0x2 - bne _080ABCCE -_080ABC88: - movs r0, 0x5 - bl PlaySE - ldr r0, _080ABCB4 @ =gContestPlayerMonIndex - ldrb r0, [r0] - bl sub_80AF59C - lsls r0, 24 - cmp r0, 0 - bne _080ABCC0 - movs r0, 0x1 - bl sub_80AFFE0 - ldr r0, _080ABCB8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ABCBC @ =sub_80ABCDC - b _080ABCCC - .align 2, 0 -_080ABCB0: .4byte gMain -_080ABCB4: .4byte gContestPlayerMonIndex -_080ABCB8: .4byte gTasks -_080ABCBC: .4byte sub_80ABCDC -_080ABCC0: - ldr r0, _080ABCD4 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ABCD8 @ =sub_80AC0C8 -_080ABCCC: - str r0, [r1] -_080ABCCE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ABCD4: .4byte gTasks -_080ABCD8: .4byte sub_80AC0C8 - thumb_func_end sub_80ABC70 - - thumb_func_start sub_80ABCDC -sub_80ABCDC: @ 80ABCDC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x28] - ldr r0, _080ABD80 @ =gUnknown_030042A0 - movs r1, 0xA0 - strh r1, [r0] - ldr r0, _080ABD84 @ =gUnknown_03004280 - strh r1, [r0] - ldr r5, _080ABD88 @ =gUnknown_03004210 - ldr r4, _080ABD8C @ =gUnknown_083CA340 - ldrb r2, [r4] - ldrb r3, [r4, 0x1] - ldrb r0, [r4, 0x2] - str r0, [sp] - ldrb r0, [r4, 0x3] - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0 - bl FillWindowRect_DefaultPalette - movs r6, 0 - ldr r0, _080ABD90 @ =gContestPlayerMonIndex - mov r8, r0 - ldr r7, _080ABD94 @ =gSharedMem + 0x19260 - mov r9, r5 - mov r10, r4 -_080ABD1C: - lsls r1, r6, 1 - mov r3, r8 - ldrb r2, [r3] - lsls r0, r2, 6 - adds r1, r0 - ldr r0, _080ABD98 @ =gUnknown_0203858E - adds r1, r0 - ldrh r4, [r1] - add r5, sp, 0x8 - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r7 - ldrh r0, [r0, 0x8] - cmp r0, 0 - beq _080ABDA0 - adds r0, r2, 0 - bl sub_80B214C - lsls r0, 24 - cmp r0, 0 - beq _080ABDA0 - mov r2, r8 - ldrb r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrh r0, [r0, 0x8] - adds r1, r4, 0 - bl AreMovesContestCombo - lsls r0, 24 - cmp r0, 0 - beq _080ABDA0 - mov r3, r8 - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - ldrb r1, [r0, 0x15] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080ABDA0 - add r0, sp, 0x8 - ldr r1, _080ABD9C @ =gUnknownText_UnknownFormatting2 - b _080ABDC6 - .align 2, 0 -_080ABD80: .4byte gUnknown_030042A0 -_080ABD84: .4byte gUnknown_03004280 -_080ABD88: .4byte gUnknown_03004210 -_080ABD8C: .4byte gUnknown_083CA340 -_080ABD90: .4byte gContestPlayerMonIndex -_080ABD94: .4byte gSharedMem + 0x19260 -_080ABD98: .4byte gUnknown_0203858E -_080ABD9C: .4byte gUnknownText_UnknownFormatting2 -_080ABDA0: - cmp r4, 0 - beq _080ABDCC - mov r1, r8 - ldrb r0, [r1] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r7 - ldrh r0, [r1, 0x8] - cmp r0, r4 - bne _080ABDCC - ldr r0, _080ABE74 @ =gContestMoves - lsls r1, r4, 3 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x3 - beq _080ABDCC - add r0, sp, 0x8 - ldr r1, _080ABE78 @ =gUnknownText_UnknownFormatting3 -_080ABDC6: - bl StringCopy - adds r5, r0, 0 -_080ABDCC: - movs r0, 0xD - adds r1, r4, 0 - muls r1, r0 - ldr r0, _080ABE7C @ =gMoveNames - adds r1, r0 - adds r0, r5, 0 - bl StringCopy - lsls r1, r6, 2 - adds r2, r1, r6 - lsls r2, 18 - movs r3, 0xC2 - lsls r3, 18 - adds r2, r3 - lsrs r2, 16 - mov r3, r10 - adds r0, r1, r3 - ldrb r3, [r0] - lsls r3, 3 - adds r3, 0x4 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _080ABE80 @ =gUnknown_083CA340 + 0x1 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 3 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - mov r0, r9 - add r1, sp, 0x8 - bl sub_8002E4C - mov r0, r9 - bl sub_8002F44 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _080ABE20 - b _080ABD1C -_080ABE20: - ldr r1, _080ABE84 @ =0x0000ffff - ldr r3, _080ABE88 @ =0x00002d9f - movs r0, 0x48 - str r0, [sp] - movs r0, 0 - movs r2, 0xC - bl sub_814A5C0 - ldr r4, _080ABE8C @ =gSharedMem + 0x19204 - movs r0, 0 - ldrsb r0, [r4, r0] - bl sub_80AC0AC - ldr r2, _080ABE90 @ =gContestMons - ldrb r1, [r4] - lsls r1, 1 - ldr r0, _080ABE94 @ =gContestPlayerMonIndex - ldrb r0, [r0] - lsls r0, 6 - adds r1, r0 - adds r2, 0x1E - adds r1, r2 - ldrh r0, [r1] - bl sub_80AEBEC - ldr r1, _080ABE98 @ =gTasks - ldr r2, [sp, 0x28] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ABE9C @ =sub_80ABEA0 - str r1, [r0] - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080ABE74: .4byte gContestMoves -_080ABE78: .4byte gUnknownText_UnknownFormatting3 -_080ABE7C: .4byte gMoveNames -_080ABE80: .4byte gUnknown_083CA340 + 0x1 -_080ABE84: .4byte 0x0000ffff -_080ABE88: .4byte 0x00002d9f -_080ABE8C: .4byte gSharedMem + 0x19204 -_080ABE90: .4byte gContestMons -_080ABE94: .4byte gContestPlayerMonIndex -_080ABE98: .4byte gTasks -_080ABE9C: .4byte sub_80ABEA0 - thumb_func_end sub_80ABCDC - - thumb_func_start sub_80ABEA0 -sub_80ABEA0: @ 80ABEA0 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 - ldr r3, _080ABEF4 @ =gMain - ldr r1, _080ABEF8 @ =gContestMons - ldr r0, _080ABEFC @ =gContestPlayerMonIndex - ldrb r0, [r0] - lsls r0, 6 - adds r1, 0x1E - adds r1, r0, r1 - movs r2, 0x3 -_080ABEBA: - ldrh r0, [r1] - cmp r0, 0 - beq _080ABEC6 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_080ABEC6: - adds r1, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _080ABEBA - ldrh r0, [r3, 0x2E] - movs r5, 0x1 - ands r5, r0 - cmp r5, 0 - beq _080ABF08 - bl DestroyMenuCursor - movs r0, 0x5 - bl PlaySE - ldr r0, _080ABF00 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ABF04 @ =sub_80AC0C8 - str r0, [r1] - b _080AC098 - .align 2, 0 -_080ABEF4: .4byte gMain -_080ABEF8: .4byte gContestMons -_080ABEFC: .4byte gContestPlayerMonIndex -_080ABF00: .4byte gTasks -_080ABF04: .4byte sub_80AC0C8 -_080ABF08: - ldrh r0, [r3, 0x30] - cmp r0, 0x20 - bne _080ABF10 - b _080AC098 -_080ABF10: - cmp r0, 0x20 - bgt _080ABF1A - cmp r0, 0x2 - beq _080ABF26 - b _080AC098 -_080ABF1A: - cmp r0, 0x40 - beq _080ABFEC - cmp r0, 0x80 - bne _080ABF24 - b _080AC048 -_080ABF24: - b _080AC098 -_080ABF26: - bl sub_814A904 - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl sub_80AFFE0 - ldr r0, _080ABF64 @ =gUnknown_03004210 - ldr r1, _080ABF68 @ =gUnknown_083CA340 - ldrb r2, [r1] - ldrb r3, [r1, 0x1] - ldrb r4, [r1, 0x2] - str r4, [sp] - ldrb r1, [r1, 0x3] - str r1, [sp, 0x4] - movs r1, 0 - bl FillWindowRect_DefaultPalette - ldr r0, _080ABF6C @ =gContestPlayerMonIndex - ldrb r0, [r0] - bl sub_80AF59C - lsls r0, 24 - cmp r0, 0 - bne _080ABF78 - ldr r0, _080ABF70 @ =gDisplayedStringBattle - ldr r1, _080ABF74 @ =gUnknown_083CAF84 - bl StringCopy - b _080ABF80 - .align 2, 0 -_080ABF64: .4byte gUnknown_03004210 -_080ABF68: .4byte gUnknown_083CA340 -_080ABF6C: .4byte gContestPlayerMonIndex -_080ABF70: .4byte gDisplayedStringBattle -_080ABF74: .4byte gUnknown_083CAF84 -_080ABF78: - ldr r0, _080ABFC8 @ =gDisplayedStringBattle - ldr r1, _080ABFCC @ =gUnknown_083CAFAE - bl StringCopy -_080ABF80: - ldr r5, _080ABFC8 @ =gDisplayedStringBattle - ldr r0, _080ABFD0 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x1] - adds r1, 0x1 - adds r0, r5, 0 - bl sub_80AE020 - bl sub_80AF138 - ldr r4, _080ABFD4 @ =gStringVar4 - adds r0, r4, 0 - adds r1, r5, 0 - bl StringExpandPlaceholders - ldr r0, _080ABFD8 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8003460 - ldr r0, _080ABFDC @ =gUnknown_030042A0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080ABFE0 @ =gUnknown_03004280 - strh r1, [r0] - ldr r1, _080ABFE4 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ABFE8 @ =sub_80ABC70 - str r1, [r0] - b _080AC098 - .align 2, 0 -_080ABFC8: .4byte gDisplayedStringBattle -_080ABFCC: .4byte gUnknown_083CAFAE -_080ABFD0: .4byte gSharedMem + 0x19204 -_080ABFD4: .4byte gStringVar4 -_080ABFD8: .4byte gMenuWindow -_080ABFDC: .4byte gUnknown_030042A0 -_080ABFE0: .4byte gUnknown_03004280 -_080ABFE4: .4byte gTasks -_080ABFE8: .4byte sub_80ABC70 -_080ABFEC: - ldr r4, _080AC000 @ =gSharedMem + 0x19204 - movs r0, 0 - ldrsb r0, [r4, r0] - bl nullsub_17 - ldrb r0, [r4] - cmp r0, 0 - bne _080AC004 - subs r0, r6, 0x1 - b _080AC006 - .align 2, 0 -_080AC000: .4byte gSharedMem + 0x19204 -_080AC004: - subs r0, 0x1 -_080AC006: - strb r0, [r4] - ldr r4, _080AC03C @ =gSharedMem + 0x19204 - movs r0, 0 - ldrsb r0, [r4, r0] - bl sub_80AC0AC - bl sub_80AED58 - ldr r2, _080AC040 @ =gContestMons - ldrb r1, [r4] - lsls r1, 1 - ldr r0, _080AC044 @ =gContestPlayerMonIndex - ldrb r0, [r0] - lsls r0, 6 - adds r1, r0 - adds r2, 0x1E - adds r1, r2 - ldrh r0, [r1] - bl sub_80AEBEC - cmp r6, 0x1 - bls _080AC098 - movs r0, 0x5 - bl PlaySE - b _080AC098 - .align 2, 0 -_080AC03C: .4byte gSharedMem + 0x19204 -_080AC040: .4byte gContestMons -_080AC044: .4byte gContestPlayerMonIndex -_080AC048: - ldr r4, _080AC060 @ =gSharedMem + 0x19204 - movs r0, 0 - ldrsb r0, [r4, r0] - bl nullsub_17 - ldrb r1, [r4] - subs r0, r6, 0x1 - cmp r1, r0 - bne _080AC064 - strb r5, [r4] - b _080AC068 - .align 2, 0 -_080AC060: .4byte gSharedMem + 0x19204 -_080AC064: - adds r0, r1, 0x1 - strb r0, [r4] -_080AC068: - ldr r4, _080AC0A0 @ =gSharedMem + 0x19204 - movs r0, 0 - ldrsb r0, [r4, r0] - bl sub_80AC0AC - bl sub_80AED58 - ldr r2, _080AC0A4 @ =gContestMons - ldrb r1, [r4] - lsls r1, 1 - ldr r0, _080AC0A8 @ =gContestPlayerMonIndex - ldrb r0, [r0] - lsls r0, 6 - adds r1, r0 - adds r2, 0x1E - adds r1, r2 - ldrh r0, [r1] - bl sub_80AEBEC - cmp r6, 0x1 - bls _080AC098 - movs r0, 0x5 - bl PlaySE -_080AC098: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AC0A0: .4byte gSharedMem + 0x19204 -_080AC0A4: .4byte gContestMons -_080AC0A8: .4byte gContestPlayerMonIndex - thumb_func_end sub_80ABEA0 - - thumb_func_start sub_80AC0AC -sub_80AC0AC: @ 80AC0AC - push {lr} - adds r1, r0, 0 - lsls r1, 28 - movs r0, 0xB0 - lsls r0, 23 - adds r1, r0 - lsrs r1, 24 - movs r0, 0x4 - bl sub_814A880 - pop {r0} - bx r0 - thumb_func_end sub_80AC0AC - - thumb_func_start nullsub_17 -nullsub_17: @ 80AC0C4 - bx lr - thumb_func_end nullsub_17 - - thumb_func_start sub_80AC0C8 -sub_80AC0C8: @ 80AC0C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080AC120 @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AC13C - ldr r4, _080AC124 @ =gContestPlayerMonIndex - ldrb r0, [r4] - bl sub_80AF15C - ldrb r2, [r4] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r2, _080AC128 @ =gSharedMem + 0x19260 - adds r1, r2 - strh r0, [r1, 0x6] - ldr r4, _080AC12C @ =sub_80C8A38 - adds r0, r4, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AC130 @ =sub_80AC15C - adds r1, r4, 0 - bl SetTaskFuncWithFollowupFunc - ldr r1, _080AC134 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080AC138 @ =nullsub_89 - str r1, [r0] - bl sub_80AF860 - movs r0, 0 - bl sub_80AFFE0 - b _080AC14E - .align 2, 0 -_080AC120: .4byte gIsLinkContest -_080AC124: .4byte gContestPlayerMonIndex -_080AC128: .4byte gSharedMem + 0x19260 -_080AC12C: .4byte sub_80C8A38 -_080AC130: .4byte sub_80AC15C -_080AC134: .4byte gTasks -_080AC138: .4byte nullsub_89 -_080AC13C: - bl sub_80AF1B8 - ldr r0, _080AC154 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080AC158 @ =sub_80AC188 - str r0, [r1] -_080AC14E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AC154: .4byte gTasks -_080AC158: .4byte sub_80AC188 - thumb_func_end sub_80AC0C8 - - thumb_func_start sub_80AC15C -sub_80AC15C: @ 80AC15C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r2, _080AC17C @ =gTasks - ldr r0, _080AC180 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x8] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _080AC184 @ =sub_80AC188 - str r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_080AC17C: .4byte gTasks -_080AC180: .4byte gSharedMem + 0x19204 -_080AC184: .4byte sub_80AC188 - thumb_func_end sub_80AC15C - - thumb_func_start sub_80AC188 -sub_80AC188: @ 80AC188 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - bl sub_80AF138 - ldr r0, _080AC1E4 @ =gUnknown_030042A0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080AC1E8 @ =gUnknown_03004280 - strh r1, [r0] - movs r0, 0 - bl sub_80AFFE0 - ldr r1, _080AC1EC @ =gPlttBufferFaded - ldr r0, _080AC1F0 @ =gSharedMem + 0x18604 - movs r2, 0x80 - lsls r2, 3 - ldr r4, _080AC1F4 @ =0x040000d4 - str r1, [r4] - str r0, [r4, 0x4] - lsrs r1, r2, 2 - movs r3, 0x84 - lsls r3, 24 - orrs r1, r3 - str r1, [r4, 0x8] - ldr r1, [r4, 0x8] - ldr r1, _080AC1F8 @ =0xfffffc00 - adds r0, r1 - movs r1, 0 - bl LoadPalette - ldr r1, _080AC1FC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - ldr r1, _080AC200 @ =sub_80AC204 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AC1E4: .4byte gUnknown_030042A0 -_080AC1E8: .4byte gUnknown_03004280 -_080AC1EC: .4byte gPlttBufferFaded -_080AC1F0: .4byte gSharedMem + 0x18604 -_080AC1F4: .4byte 0x040000d4 -_080AC1F8: .4byte 0xfffffc00 -_080AC1FC: .4byte gTasks -_080AC200: .4byte sub_80AC204 - thumb_func_end sub_80AC188 - - thumb_func_start sub_80AC204 -sub_80AC204: @ 80AC204 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AC248 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080AC242 - movs r0, 0 - strh r0, [r4, 0x8] - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _080AC242 - bl sub_80B1BDC - movs r0, 0x1 - bl sub_80B25E4 - ldr r0, _080AC24C @ =sub_80AC250 - str r0, [r4] -_080AC242: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AC248: .4byte gTasks -_080AC24C: .4byte sub_80AC250 - thumb_func_end sub_80AC204 - - thumb_func_start sub_80AC250 -sub_80AC250: @ 80AC250 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080AC278 @ =gSharedMem + 0x19204 - ldrh r1, [r0, 0x6] - movs r0, 0x90 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - bne _080AC272 - ldr r0, _080AC27C @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _080AC280 @ =sub_80AC284 - str r0, [r1] -_080AC272: - pop {r0} - bx r0 - .align 2, 0 -_080AC278: .4byte gSharedMem + 0x19204 -_080AC27C: .4byte gTasks -_080AC280: .4byte sub_80AC284 - thumb_func_end sub_80AC250 - - thumb_func_start sub_80AC284 -sub_80AC284: @ 80AC284 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AC2BC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r2, r1, r2 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080AC2B6 - ldr r1, _080AC2C0 @ =gSharedMem + 0x19204 - movs r0, 0 - strb r0, [r1, 0x10] - ldr r0, _080AC2C4 @ =gRngValue - ldr r0, [r0] - str r0, [r1, 0x18] - movs r0, 0 - strh r0, [r2, 0x8] - ldr r0, _080AC2C8 @ =sub_80AC2CC - str r0, [r2] -_080AC2B6: - pop {r0} - bx r0 - .align 2, 0 -_080AC2BC: .4byte gTasks -_080AC2C0: .4byte gSharedMem + 0x19204 -_080AC2C4: .4byte gRngValue -_080AC2C8: .4byte sub_80AC2CC - thumb_func_end sub_80AC284 - - thumb_func_start sub_80AC2CC -sub_80AC2CC: @ 80AC2CC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r2, _080AC308 @ =gSharedMem + 0x19204 - ldrb r7, [r2, 0x11] - ldr r1, _080AC30C @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r3, 0x8 - ldrsh r0, [r0, r3] - adds r6, r2, 0 - mov r12, r1 - cmp r0, 0x3B - bls _080AC2FC - bl _080AD8CA -_080AC2FC: - lsls r0, 2 - ldr r1, _080AC310 @ =_080AC314 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AC308: .4byte gSharedMem + 0x19204 -_080AC30C: .4byte gTasks -_080AC310: .4byte _080AC314 - .align 2, 0 -_080AC314: - .4byte _080AC404 - .4byte _080AC4B4 - .4byte _080AC4D4 - .4byte _080AC534 - .4byte _080AC5E8 - .4byte _080AC638 - .4byte _080AC6F8 - .4byte _080AC730 - .4byte _080AC77C - .4byte _080AC7F4 - .4byte _080AD750 - .4byte _080AD77C - .4byte _080AC98C - .4byte _080AC9C0 - .4byte _080ACEC0 - .4byte _080ACFD4 - .4byte _080AD040 - .4byte _080AD070 - .4byte _080AD168 - .4byte _080AD11A - .4byte _080AD7B8 - .4byte _080AD868 - .4byte _080AD88C - .4byte _080AC81E - .4byte _080AC8CC - .4byte _080ACAD8 - .4byte _080ACAEE - .4byte _080ACBB0 - .4byte _080ACBDC - .4byte _080ACC44 - .4byte _080ACD2A - .4byte _080AD7E8 - .4byte _080AD840 - .4byte _080AD648 - .4byte _080AD6D8 - .4byte _080AC9EC - .4byte _080ACA24 - .4byte _080ACA44 - .4byte _080ACA84 - .4byte _080ACC98 - .4byte _080ACD00 - .4byte _080AD1A4 - .4byte _080AD8CA - .4byte _080AD514 - .4byte _080AD8CA - .4byte _080ACFA8 - .4byte _080AD0FA - .4byte _080AC96C - .4byte _080AC8F8 - .4byte _080AC94C - .4byte _080ACAAE - .4byte _080ACDC8 - .4byte _080ACE64 - .4byte _080AD316 - .4byte _080AD3D0 - .4byte _080AD700 - .4byte _080AD71C - .4byte _080AD53C - .4byte _080AD5D0 - .4byte _080AD624 -_080AC404: - bl sub_80B0D7C - movs r6, 0 - ldr r0, _080AC484 @ =gSharedMem + 0x19204 - adds r1, r0, 0 - adds r1, 0xCC - ldrb r0, [r0, 0x10] - mov r4, r8 - lsls r4, 2 - mov r9, r4 - ldrb r5, [r1] - cmp r0, r5 - beq _080AC42C - adds r2, r1, 0 - adds r1, r0, 0 -_080AC422: - adds r6, 0x1 - adds r0, r6, r2 - ldrb r0, [r0] - cmp r1, r0 - bne _080AC422 -_080AC42C: - ldr r4, _080AC484 @ =gSharedMem + 0x19204 - strb r6, [r4, 0x11] - ldrb r7, [r4, 0x11] - ldr r0, _080AC488 @ =gIsLinkContest - ldrb r1, [r0] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080AC498 - ldrb r0, [r4, 0x7] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4, 0x7] - bl sub_80AE074 - lsls r0, 24 - cmp r0, 0 - beq _080AC458 - ldrb r0, [r4, 0x11] - bl sub_80B114C -_080AC458: - ldr r4, _080AC48C @ =sub_80C8C80 - adds r0, r4, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AC490 @ =sub_80AD8DC - adds r1, r4, 0 - bl SetTaskFuncWithFollowupFunc - bl sub_80AF860 - ldr r1, _080AC494 @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC484: .4byte gSharedMem + 0x19204 -_080AC488: .4byte gIsLinkContest -_080AC48C: .4byte sub_80C8C80 -_080AC490: .4byte sub_80AD8DC -_080AC494: .4byte gTasks -_080AC498: - adds r0, r7, 0 - bl sub_80B114C - ldr r0, _080AC4B0 @ =gTasks - mov r1, r9 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x2 - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC4B0: .4byte gTasks -_080AC4B4: - ldrb r1, [r6, 0x7] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080AC4C2 - bl _080AD8CA -_080AC4C2: - mov r1, r8 - lsls r0, r1, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x2 - strh r1, [r0, 0x8] - bl _080AD8CA -_080AC4D4: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080AC508 @ =gSharedMem + 0x19260 - adds r2, r0, r1 - ldrb r1, [r2, 0xC] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - bne _080AC4F6 - ldrb r1, [r2, 0xB] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _080AC50C -_080AC4F6: - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x1F - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC508: .4byte gSharedMem + 0x19260 -_080AC50C: - bl sub_80AF138 - adds r0, r7, 0 - movs r1, 0 - bl sub_80B0CDC - ldr r0, _080AC530 @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - strh r6, [r1, 0x1C] - movs r0, 0x3 - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC530: .4byte gTasks -_080AC534: - mov r4, r8 - lsls r4, 2 - mov r9, r4 - ldr r4, _080AC5C4 @ =gSharedMem + 0x19348 - ldr r1, _080AC5C8 @ =gBattleMonForms - movs r2, 0 - adds r0, r1, 0x3 -_080AC542: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _080AC542 - movs r6, 0x4 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x14 - bl memset - ldr r5, _080AC5CC @ =0xfffffebc - adds r7, r4, r5 - ldrb r0, [r7, 0x11] - bl sub_80B28F0 - ldr r3, _080AC5D0 @ =gContestMons - ldrb r2, [r7, 0x11] - lsls r2, 6 - adds r0, r2, r3 - ldrh r0, [r0] - adds r1, r3, 0 - adds r1, 0x3C - adds r1, r2, r1 - ldr r1, [r1] - adds r3, 0x38 - adds r2, r3 - ldr r2, [r2] - bl sub_80AE9FC - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _080AC5D4 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r3, r0, r2 - movs r1, 0x78 - strh r1, [r3, 0x24] - adds r2, 0x1C - adds r0, r2 - ldr r1, _080AC5D8 @ =sub_80AD8FC - str r1, [r0] - ldr r0, _080AC5DC @ =gTasks - mov r4, r9 - add r4, r8 - lsls r4, 3 - adds r4, r0 - strh r5, [r4, 0xC] - ldr r1, _080AC5E0 @ =gObjectBankIDs - ldr r0, _080AC5E4 @ =gBankAttacker - ldrb r0, [r0] - adds r0, r1 - strb r5, [r0] - ldrb r0, [r7, 0x11] - bl sub_80B09E4 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_80B0BC4 - strh r6, [r4, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC5C4: .4byte gSharedMem + 0x19348 -_080AC5C8: .4byte gBattleMonForms -_080AC5CC: .4byte 0xfffffebc -_080AC5D0: .4byte gContestMons -_080AC5D4: .4byte gSprites -_080AC5D8: .4byte sub_80AD8FC -_080AC5DC: .4byte gTasks -_080AC5E0: .4byte gObjectBankIDs -_080AC5E4: .4byte gBankAttacker -_080AC5E8: - mov r1, r8 - lsls r0, r1, 2 - add r0, r8 - lsls r0, 3 - mov r3, r12 - adds r2, r0, r3 - ldrb r5, [r2, 0xC] - ldr r1, _080AC62C @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, [r0] - ldr r0, _080AC630 @ =SpriteCallbackDummy - cmp r1, r0 - beq _080AC60E - bl _080AD8CA -_080AC60E: - lsls r0, r7, 2 - ldr r1, _080AC634 @ =gSharedMem + 0x19338 - adds r0, r1 - ldrb r1, [r0, 0x2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080AC622 - bl _080AD8CA -_080AC622: - movs r0, 0x5 - strh r0, [r2, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC62C: .4byte gSprites -_080AC630: .4byte SpriteCallbackDummy -_080AC634: .4byte gSharedMem + 0x19338 -_080AC638: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080AC660 @ =gSharedMem + 0x19260 - adds r5, r0, r1 - ldrb r1, [r5, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AC664 - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x21 - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC660: .4byte gSharedMem + 0x19260 -_080AC664: - bl sub_80AF138 - ldr r0, _080AC690 @ =gStringVar1 - lsls r1, r7, 6 - ldr r2, _080AC694 @ =gContestMons + 0x2 - adds r1, r2 - bl StringCopy - ldrh r1, [r5, 0x6] - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bhi _080AC6A0 - ldr r0, _080AC698 @ =gStringVar2 - adds r2, r1, 0 - movs r1, 0xD - muls r1, r2 - ldr r2, _080AC69C @ =gMoveNames - adds r1, r2 - bl StringCopy - b _080AC6B0 - .align 2, 0 -_080AC690: .4byte gStringVar1 -_080AC694: .4byte gContestMons + 0x2 -_080AC698: .4byte gStringVar2 -_080AC69C: .4byte gMoveNames -_080AC6A0: - ldr r0, _080AC6E0 @ =gStringVar2 - ldr r2, _080AC6E4 @ =gUnknown_083CC330 - ldrb r1, [r5, 0xA] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy -_080AC6B0: - ldr r4, _080AC6E8 @ =gStringVar4 - ldr r1, _080AC6EC @ =gUnknown_083CAFD7 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _080AC6F0 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080AC6F4 @ =gTasks - mov r5, r8 - lsls r0, r5, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x6 - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC6E0: .4byte gStringVar2 -_080AC6E4: .4byte gUnknown_083CC330 -_080AC6E8: .4byte gStringVar4 -_080AC6EC: .4byte gUnknown_083CAFD7 -_080AC6F0: .4byte gMenuWindow -_080AC6F4: .4byte gTasks -_080AC6F8: - ldr r0, _080AC724 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080AC708 - bl _080AD8CA -_080AC708: - ldr r0, _080AC728 @ =gSharedMem + 0x19204 - adds r0, 0x5A - movs r1, 0 - strb r1, [r0] - ldr r1, _080AC72C @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x7 - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC724: .4byte gMenuWindow -_080AC728: .4byte gSharedMem + 0x19204 -_080AC72C: .4byte gTasks -_080AC730: - ldrb r1, [r6, 0x11] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x5C - adds r0, r1 - ldrh r0, [r0, 0x6] - bl sub_80B2760 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r6, 0x11] - bl sub_80B2790 - ldrb r0, [r6, 0x11] - bl sub_80B28F0 - adds r0, r4, 0 - bl sub_80B29B4 - adds r0, r4, 0 - bl ExecuteMoveAnim - ldr r1, _080AC778 @ =gTasks - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC778: .4byte gTasks -_080AC77C: - ldr r0, _080AC7B8 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _080AC7BC @ =gAnimScriptActive - ldrb r4, [r0] - cmp r4, 0 - beq _080AC790 - bl _080AD8CA -_080AC790: - adds r0, r7, 0 - bl sub_80B28CC - ldr r1, _080AC7C0 @ =gSharedMem + 0x19204 - adds r0, r1, 0 - adds r0, 0x5A - ldrb r0, [r0] - cmp r0, 0 - beq _080AC7C8 - ldr r0, _080AC7C4 @ =gTasks - mov r5, r8 - lsls r1, r5, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - strh r4, [r1, 0x1C] - movs r0, 0x9 - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC7B8: .4byte gAnimScriptCallback -_080AC7BC: .4byte gAnimScriptActive -_080AC7C0: .4byte gSharedMem + 0x19204 -_080AC7C4: .4byte gTasks -_080AC7C8: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - adds r1, 0x5C - adds r0, r1 - ldrb r1, [r0, 0x15] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080AC7E2 - adds r0, r7, 0 - bl sub_80B03A8 -_080AC7E2: - bl sub_80B20C4 - ldr r0, _080AC7F0 @ =gTasks - mov r2, r8 - lsls r1, r2, 2 - b _080AC8E2 - .align 2, 0 -_080AC7F0: .4byte gTasks -_080AC7F4: - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - mov r4, r12 - adds r2, r0, r4 - ldrh r0, [r2, 0x1C] - adds r1, r0, 0x1 - strh r1, [r2, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1E - bgt _080AC812 - bl _080AD8CA -_080AC812: - movs r0, 0 - strh r0, [r2, 0x1C] - movs r0, 0x7 - strh r0, [r2, 0x8] - bl _080AD8CA -_080AC81E: - mov r5, r8 - lsls r3, r5, 2 - adds r0, r3, r5 - lsls r0, 3 - mov r1, r12 - adds r4, r0, r1 - movs r0, 0 - strh r0, [r4, 0xA] - lsls r2, r7, 3 - subs r0, r2, r7 - lsls r0, 2 - ldr r1, _080AC858 @ =gSharedMem + 0x19260 - adds r6, r0, r1 - ldrb r0, [r6, 0x13] - mov r9, r3 - mov r10, r2 - adds r3, r1, 0 - cmp r0, 0xFF - beq _080AC85C - adds r1, r0, 0 - adds r0, r7, 0 - bl sub_80B146C - movs r0, 0xFF - strb r0, [r6, 0x13] - movs r0, 0x18 - strh r0, [r4, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC858: .4byte gSharedMem + 0x19260 -_080AC85C: - ldrb r0, [r6, 0x14] - cmp r0, 0xFF - beq _080AC8C4 - movs r6, 0 - cmp r6, r7 - beq _080AC86E - ldrb r0, [r3, 0x13] - cmp r0, 0xFF - bne _080AC886 -_080AC86E: - adds r6, 0x1 - cmp r6, 0x3 - bgt _080AC886 - cmp r6, r7 - beq _080AC86E - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x13] - cmp r0, 0xFF - beq _080AC86E -_080AC886: - cmp r6, 0x4 - bne _080AC8B4 - mov r2, r10 - subs r4, r2, r7 - lsls r4, 2 - adds r4, r3 - ldrb r1, [r4, 0x14] - adds r0, r7, 0 - bl sub_80B146C - movs r0, 0xFF - strb r0, [r4, 0x14] - ldr r1, _080AC8B0 @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x18 - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC8B0: .4byte gTasks -_080AC8B4: - mov r0, r9 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x30 - strh r1, [r0, 0x8] - bl _080AD8CA -_080AC8C4: - movs r0, 0x30 - strh r0, [r4, 0x8] - bl _080AD8CA -_080AC8CC: - ldr r0, _080AC8F0 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080AC8DC - bl _080AD8CA -_080AC8DC: - ldr r0, _080AC8F4 @ =gTasks - mov r3, r8 - lsls r1, r3, 2 -_080AC8E2: - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x17 - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC8F0: .4byte gMenuWindow -_080AC8F4: .4byte gTasks -_080AC8F8: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080AC914 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r0, [r0, 0x11] - movs r3, 0x3 - ands r3, r0 - cmp r3, 0x1 - bne _080AC918 - movs r0, 0x5 - bl sub_80B1710 - b _080AC934 - .align 2, 0 -_080AC914: .4byte gSharedMem + 0x19260 -_080AC918: - cmp r3, 0x2 - bne _080AC924 - movs r0, 0x6 - bl sub_80B1710 - b _080AC934 -_080AC924: - cmp r3, 0x3 - beq _080AC92E - mov r4, r8 - lsls r0, r4, 2 - b _080AC95E -_080AC92E: - movs r0, 0x7 - bl sub_80B1710 -_080AC934: - ldr r0, _080AC948 @ =gTasks - mov r5, r8 - lsls r1, r5, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x31 - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC948: .4byte gTasks -_080AC94C: - ldrb r1, [r6, 0x6] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AC95A - bl _080AD8CA -_080AC95A: - mov r1, r8 - lsls r0, r1, 2 -_080AC95E: - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x2F - strh r1, [r0, 0x8] - bl _080AD8CA -_080AC96C: - movs r0, 0x1 - bl sub_80B1FD0 - ldr r0, _080AC988 @ =gTasks - mov r2, r8 - lsls r1, r2, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0xC - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC988: .4byte gTasks -_080AC98C: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080AC9B8 @ =gSharedMem + 0x19260 - adds r0, r1 - movs r3, 0x2 - ldrsh r1, [r0, r3] - movs r0, 0 - adds r2, r7, 0 - bl sub_80AFBA0 - ldr r1, _080AC9BC @ =gTasks - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0xD - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080AC9B8: .4byte gSharedMem + 0x19260 -_080AC9BC: .4byte gTasks -_080AC9C0: - ldrb r0, [r6, 0x11] - lsls r0, 2 - movs r5, 0x9A - lsls r5, 1 - adds r1, r6, r5 - adds r0, r1 - ldrb r1, [r0, 0x2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080AC9DA - bl _080AD8CA -_080AC9DA: - mov r1, r8 - lsls r0, r1, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x23 - strh r1, [r0, 0x8] - bl _080AD8CA -_080AC9EC: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080ACA1C @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r1, [r0, 0x10] - movs r0, 0x30 - ands r0, r1 - cmp r0, 0x10 - bne _080ACA06 - movs r0, 0x8 - bl sub_80B1710 -_080ACA06: - ldr r0, _080ACA20 @ =gTasks - mov r2, r8 - lsls r1, r2, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x24 - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACA1C: .4byte gSharedMem + 0x19260 -_080ACA20: .4byte gTasks -_080ACA24: - ldrb r1, [r6, 0x6] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080ACA32 - bl _080AD8CA -_080ACA32: - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x25 - strh r1, [r0, 0x8] - bl _080AD8CA -_080ACA44: - adds r0, r7, 0 - movs r1, 0x1 - bl sub_80AEE54 - lsls r0, 24 - cmp r0, 0 - beq _080ACA70 - ldr r1, _080ACA6C @ =gTasks - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - movs r1, 0x26 - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACA6C: .4byte gTasks -_080ACA70: - ldr r0, _080ACA80 @ =gTasks - mov r5, r8 - lsls r1, r5, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - b _080ACAA6 - .align 2, 0 -_080ACA80: .4byte gTasks -_080ACA84: - mov r1, r8 - lsls r0, r1, 2 - add r0, r8 - lsls r0, 3 - mov r2, r12 - adds r1, r0, r2 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - strh r0, [r1, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bgt _080ACAA2 - bl _080AD8CA -_080ACAA2: - movs r0, 0 - strh r0, [r1, 0x1C] -_080ACAA6: - movs r0, 0x32 - strh r0, [r1, 0x8] - bl _080AD8CA -_080ACAAE: - adds r0, r7, 0 - bl sub_80AF038 - lsls r0, 24 - cmp r0, 0 - beq _080ACAC0 - movs r0, 0x63 - bl PlaySE -_080ACAC0: - ldr r0, _080ACAD4 @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x19 - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACAD4: .4byte gTasks -_080ACAD8: - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0 - strh r1, [r0, 0xA] - movs r1, 0x1A - strh r1, [r0, 0x8] - bl _080AD8CA -_080ACAEE: - movs r2, 0 - movs r4, 0 - mov r5, r8 - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - add r0, r12 - movs r3, 0xA - ldrsh r6, [r0, r3] - mov r9, r1 - cmp r6, 0x3 - bgt _080ACB58 - ldr r3, _080ACB24 @ =gUnknown_02038696 - ldr r1, _080ACB28 @ =gSharedMem + 0x19260 -_080ACB0A: - movs r4, 0 - movs r2, 0 - cmp r4, r7 - beq _080ACB2C - ldrb r0, [r3] - cmp r0, r6 - bne _080ACB2C - ldrb r0, [r1, 0x13] - cmp r0, 0xFF - beq _080ACB2C - movs r4, 0x1 - b _080ACB60 - .align 2, 0 -_080ACB24: .4byte gUnknown_02038696 -_080ACB28: .4byte gSharedMem + 0x19260 -_080ACB2C: - adds r2, 0x1 - cmp r2, 0x3 - bgt _080ACB4E - cmp r2, r7 - beq _080ACB2C - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, r6 - bne _080ACB2C - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x13] - cmp r0, 0xFF - beq _080ACB2C - movs r4, 0x1 -_080ACB4E: - cmp r4, 0 - bne _080ACB60 - adds r6, 0x1 - cmp r6, 0x3 - ble _080ACB0A -_080ACB58: - lsls r0, r4, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _080ACB98 -_080ACB60: - mov r5, r9 - add r5, r8 - lsls r5, 3 - add r5, r12 - ldr r0, _080ACB90 @ =gUnknown_02038696 - adds r0, r2, r0 - ldrb r0, [r0] - strh r0, [r5, 0xA] - lsls r0, r2, 24 - lsrs r0, 24 - lsls r4, r2, 3 - subs r4, r2 - lsls r4, 2 - ldr r1, _080ACB94 @ =gSharedMem + 0x19260 - adds r4, r1 - ldrb r1, [r4, 0x13] - bl sub_80B146C - movs r0, 0xFF - strb r0, [r4, 0x13] - movs r0, 0x1B - strh r0, [r5, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACB90: .4byte gUnknown_02038696 -_080ACB94: .4byte gSharedMem + 0x19260 -_080ACB98: - mov r0, r9 - add r0, r8 - lsls r0, 3 - add r0, r12 - strh r1, [r0, 0xA] - strh r1, [r0, 0x1C] - movs r1, 0x33 - strh r1, [r0, 0x8] - bl sub_80AF120 - bl _080AD8CA -_080ACBB0: - ldr r0, _080ACBD4 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080ACBC0 - bl _080AD8CA -_080ACBC0: - ldr r0, _080ACBD8 @ =gTasks - mov r4, r8 - lsls r1, r4, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1C - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACBD4: .4byte gMenuWindow -_080ACBD8: .4byte gTasks -_080ACBDC: - movs r6, 0 - mov r5, r8 - lsls r0, r5, 2 - adds r1, r0, r5 - lsls r1, 3 - add r1, r12 - movs r3, 0xA - ldrsh r2, [r1, r3] - ldr r1, _080ACC38 @ =gUnknown_02038696 - mov r9, r0 - ldr r3, _080ACC3C @ =gSharedMem + 0x19260 - adds r5, r1, 0 - ldrb r4, [r5] - cmp r2, r4 - beq _080ACC08 - adds r1, r2, 0 - adds r2, r5, 0 -_080ACBFE: - adds r6, 0x1 - adds r0, r6, r2 - ldrb r0, [r0] - cmp r1, r0 - bne _080ACBFE -_080ACC08: - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0, 0xE] - ldrh r0, [r0, 0x2] - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - negs r1, r1 - lsls r2, r6, 24 - lsrs r2, 24 - bl sub_80AFBA0 - ldr r1, _080ACC40 @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1D - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACC38: .4byte gUnknown_02038696 -_080ACC3C: .4byte gSharedMem + 0x19260 -_080ACC40: .4byte gTasks -_080ACC44: - movs r6, 0 - mov r5, r8 - lsls r0, r5, 2 - adds r1, r0, r5 - lsls r1, 3 - add r1, r12 - movs r2, 0xA - ldrsh r3, [r1, r2] - ldr r1, _080ACC90 @ =gUnknown_02038696 - mov r9, r0 - ldr r2, _080ACC94 @ =gSharedMem + 0x19338 - adds r5, r1, 0 - ldrb r4, [r5] - cmp r3, r4 - beq _080ACC6C -_080ACC62: - adds r6, 0x1 - adds r0, r6, r1 - ldrb r0, [r0] - cmp r3, r0 - bne _080ACC62 -_080ACC6C: - lsls r0, r6, 2 - adds r0, r2 - ldrb r1, [r0, 0x2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080ACC7E - bl _080AD8CA -_080ACC7E: - mov r0, r9 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x27 - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACC90: .4byte gUnknown_02038696 -_080ACC94: .4byte gSharedMem + 0x19338 -_080ACC98: - movs r6, 0 - mov r5, r8 - lsls r0, r5, 2 - adds r1, r0, r5 - lsls r1, 3 - add r1, r12 - movs r3, 0xA - ldrsh r2, [r1, r3] - ldr r1, _080ACCE8 @ =gUnknown_02038696 - mov r9, r0 - adds r5, r1, 0 - ldrb r4, [r5] - cmp r2, r4 - beq _080ACCC2 - adds r1, r2, 0 - adds r2, r5, 0 -_080ACCB8: - adds r6, 0x1 - adds r0, r6, r2 - ldrb r0, [r0] - cmp r1, r0 - bne _080ACCB8 -_080ACCC2: - lsls r0, r6, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_80AEE54 - lsls r0, 24 - cmp r0, 0 - beq _080ACCF0 - ldr r1, _080ACCEC @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - movs r1, 0x28 - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACCE8: .4byte gUnknown_02038696 -_080ACCEC: .4byte gTasks -_080ACCF0: - ldr r0, _080ACCFC @ =gTasks - mov r1, r9 - add r1, r8 - lsls r1, 3 - adds r1, r0 - b _080ACD22 - .align 2, 0 -_080ACCFC: .4byte gTasks -_080ACD00: - mov r5, r8 - lsls r0, r5, 2 - add r0, r8 - lsls r0, 3 - mov r2, r12 - adds r1, r0, r2 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - strh r0, [r1, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bgt _080ACD1E - bl _080AD8CA -_080ACD1E: - movs r0, 0 - strh r0, [r1, 0x1C] -_080ACD22: - movs r0, 0x1E - strh r0, [r1, 0x8] - bl _080AD8CA -_080ACD2A: - movs r6, 0 - ldr r2, _080ACD78 @ =gUnknown_02038696 - ldrb r3, [r2] - mov r4, r8 - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - mov r5, r12 - adds r4, r0, r5 - movs r5, 0xA - ldrsh r0, [r4, r5] - mov r9, r1 - adds r5, r2, 0 - cmp r3, r0 - beq _080ACD5E - adds r3, r5, 0 - adds r2, r4, 0 -_080ACD4C: - adds r6, 0x1 - cmp r6, 0x3 - bgt _080ACD5E - adds r0, r6, r3 - ldrb r1, [r0] - movs r4, 0xA - ldrsh r0, [r2, r4] - cmp r1, r0 - bne _080ACD4C -_080ACD5E: - lsls r4, r6, 24 - lsrs r0, r4, 24 - bl sub_80AF038 - lsls r0, 24 - adds r5, r4, 0 - cmp r0, 0 - beq _080ACD7C - movs r0, 0x63 - bl PlaySE - b _080ACD82 - .align 2, 0 -_080ACD78: .4byte gUnknown_02038696 -_080ACD7C: - movs r0, 0x64 - bl PlaySE -_080ACD82: - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - ldr r1, _080ACDC0 @ =gSharedMem + 0x19260 - adds r4, r0, r1 - ldrb r1, [r4, 0x15] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080ACDA6 - lsrs r0, r5, 24 - bl sub_80B03A8 - ldrb r1, [r4, 0x15] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x15] -_080ACDA6: - ldr r0, _080ACDC4 @ =gTasks - mov r1, r9 - add r1, r8 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - movs r0, 0x1A - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACDC0: .4byte gSharedMem + 0x19260 -_080ACDC4: .4byte gTasks -_080ACDC8: - mov r5, r8 - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - mov r1, r12 - adds r3, r0, r1 - ldrh r0, [r3, 0x1C] - adds r1, r0, 0x1 - strh r1, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - mov r9, r2 - cmp r0, 0x9 - bgt _080ACDE8 - bl _080AD8CA -_080ACDE8: - movs r0, 0 - strh r0, [r3, 0x1C] - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080ACE48 @ =gSharedMem + 0x19260 - adds r2, r0, r1 - ldrb r1, [r2, 0xC] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - bne _080ACE0A - ldrb r1, [r2, 0x11] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080ACE36 -_080ACE0A: - bl sub_80AF138 - ldr r0, _080ACE4C @ =gStringVar1 - lsls r1, r7, 6 - ldr r2, _080ACE50 @ =gContestMons + 0x2 - adds r1, r2 - bl StringCopy - ldr r4, _080ACE54 @ =gStringVar4 - ldr r1, _080ACE58 @ =gUnknown_083CC103 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _080ACE5C @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 -_080ACE36: - ldr r0, _080ACE60 @ =gTasks - mov r1, r9 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x34 - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACE48: .4byte gSharedMem + 0x19260 -_080ACE4C: .4byte gStringVar1 -_080ACE50: .4byte gContestMons + 0x2 -_080ACE54: .4byte gStringVar4 -_080ACE58: .4byte gUnknown_083CC103 -_080ACE5C: .4byte gMenuWindow -_080ACE60: .4byte gTasks -_080ACE64: - ldr r0, _080ACE9C @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080ACE74 - bl _080AD8CA -_080ACE74: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080ACEA0 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r1, [r0, 0x15] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080ACEA8 - ldr r0, _080ACEA4 @ =gTasks - mov r2, r8 - lsls r1, r2, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x11 - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACE9C: .4byte gMenuWindow -_080ACEA0: .4byte gSharedMem + 0x19260 -_080ACEA4: .4byte gTasks -_080ACEA8: - ldr r0, _080ACEBC @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0xE - strh r0, [r1, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACEBC: .4byte gTasks -_080ACEC0: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080ACEE4 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r4, [r0, 0x16] - lsls r4, 24 - lsrs r5, r4, 24 - cmp r5, 0 - beq _080ACF48 - bl sub_80AF138 - asrs r0, r4, 24 - cmp r0, 0x1 - bne _080ACEF0 - ldr r0, _080ACEE8 @ =gMenuWindow - ldr r1, _080ACEEC @ =gUnknown_083CBD79 - b _080ACEF8 - .align 2, 0 -_080ACEE4: .4byte gSharedMem + 0x19260 -_080ACEE8: .4byte gMenuWindow -_080ACEEC: .4byte gUnknown_083CBD79 -_080ACEF0: - cmp r0, 0x2 - bne _080ACF10 - ldr r0, _080ACF08 @ =gMenuWindow - ldr r1, _080ACF0C @ =gUnknown_083CBD9D -_080ACEF8: - movs r2, 0xC2 - lsls r2, 2 - movs r3, 0xF - str r3, [sp] - movs r3, 0x1 - bl sub_8002EB0 - b _080ACF22 - .align 2, 0 -_080ACF08: .4byte gMenuWindow -_080ACF0C: .4byte gUnknown_083CBD9D -_080ACF10: - ldr r0, _080ACF3C @ =gMenuWindow - ldr r1, _080ACF40 @ =gUnknown_083CBDC6 - movs r2, 0xC2 - lsls r2, 2 - movs r3, 0xF - str r3, [sp] - movs r3, 0x1 - bl sub_8002EB0 -_080ACF22: - movs r0, 0x3 - bl sub_80B1710 - ldr r1, _080ACF44 @ =gTasks - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - b _080ACF88 - .align 2, 0 -_080ACF3C: .4byte gMenuWindow -_080ACF40: .4byte gUnknown_083CBDC6 -_080ACF44: .4byte gTasks -_080ACF48: - bl sub_80AF138 - ldr r0, _080ACF90 @ =gStringVar1 - lsls r1, r7, 6 - ldr r2, _080ACF94 @ =gContestMons + 0x2 - adds r1, r2 - bl StringCopy - ldr r4, _080ACF98 @ =gStringVar4 - ldr r1, _080ACF9C @ =gUnknown_083CBD52 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _080ACFA0 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - movs r0, 0x2 - bl sub_80B1710 - ldr r1, _080ACFA4 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0x1C] -_080ACF88: - movs r1, 0x2D - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACF90: .4byte gStringVar1 -_080ACF94: .4byte gContestMons + 0x2 -_080ACF98: .4byte gStringVar4 -_080ACF9C: .4byte gUnknown_083CBD52 -_080ACFA0: .4byte gMenuWindow -_080ACFA4: .4byte gTasks -_080ACFA8: - ldrb r1, [r6, 0x6] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080ACFB6 - bl _080AD8CA -_080ACFB6: - ldrb r0, [r6, 0x11] - bl sub_80B09B0 - ldr r1, _080ACFD0 @ =gTasks - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0xF - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080ACFD0: .4byte gTasks -_080ACFD4: - ldr r0, _080AD034 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080ACFE4 - bl _080AD8CA -_080ACFE4: - ldr r1, _080AD038 @ =gTasks - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - bgt _080AD002 - bl _080AD8CA -_080AD002: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080AD03C @ =gSharedMem + 0x19260 - adds r6, r0, r1 - ldrb r1, [r6, 0x15] - movs r5, 0x10 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _080AD02C - movs r1, 0x2 - ldrsh r0, [r6, r1] - ldrb r1, [r6, 0x17] - adds r2, r7, 0 - bl sub_80AFBA0 - ldrh r0, [r6, 0x2] - ldrb r2, [r6, 0x17] - adds r0, r2 - strh r0, [r6, 0x2] -_080AD02C: - strh r5, [r4, 0x8] - bl _080AD8CA - .align 2, 0 -_080AD034: .4byte gMenuWindow -_080AD038: .4byte gTasks -_080AD03C: .4byte gSharedMem + 0x19260 -_080AD040: - lsls r0, r7, 2 - ldr r1, _080AD06C @ =gSharedMem + 0x19338 - adds r0, r1 - ldrb r1, [r0, 0x2] - movs r0, 0x4 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080AD058 - bl _080AD8CA -_080AD058: - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - strh r1, [r0, 0x1C] - movs r1, 0x11 - strh r1, [r0, 0x8] - bl _080AD8CA - .align 2, 0 -_080AD06C: .4byte gSharedMem + 0x19338 -_080AD070: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080AD0CC @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r1, [r0, 0x15] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AD0E8 - bl sub_80AF138 - ldr r0, _080AD0D0 @ =gStringVar1 - lsls r1, r7, 6 - ldr r2, _080AD0D4 @ =gContestMons + 0x2 - adds r1, r2 - bl StringCopy - ldr r4, _080AD0D8 @ =gStringVar4 - ldr r1, _080AD0DC @ =gUnknown_083CC075 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _080AD0E0 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r0, _080AD0E4 @ =gTasks - mov r5, r8 - lsls r4, r5, 2 - add r4, r8 - lsls r4, 3 - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x1C] - bl sub_80B1710 - movs r0, 0x2E - strh r0, [r4, 0x8] - bl _080AD8CA - .align 2, 0 -_080AD0CC: .4byte gSharedMem + 0x19260 -_080AD0D0: .4byte gStringVar1 -_080AD0D4: .4byte gContestMons + 0x2 -_080AD0D8: .4byte gStringVar4 -_080AD0DC: .4byte gUnknown_083CC075 -_080AD0E0: .4byte gMenuWindow -_080AD0E4: .4byte gTasks -_080AD0E8: - mov r1, r8 - lsls r0, r1, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x29 - strh r1, [r0, 0x8] - bl _080AD8CA -_080AD0FA: - ldrb r1, [r6, 0x6] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AD108 - bl _080AD8CA -_080AD108: - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x13 - strh r1, [r0, 0x8] - bl _080AD8CA -_080AD11A: - ldr r0, _080AD15C @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080AD12A - bl _080AD8CA -_080AD12A: - lsls r4, r7, 3 - subs r4, r7 - lsls r4, 2 - ldr r0, _080AD160 @ =gSharedMem + 0x19260 - adds r4, r0 - movs r3, 0x2 - ldrsh r0, [r4, r3] - ldrb r1, [r4, 0x18] - negs r1, r1 - adds r2, r7, 0 - bl sub_80AFBA0 - ldrb r1, [r4, 0x18] - ldrh r0, [r4, 0x2] - subs r0, r1 - strh r0, [r4, 0x2] - ldr r1, _080AD164 @ =gTasks - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x12 - strh r1, [r0, 0x8] - b _080AD8CA - .align 2, 0 -_080AD15C: .4byte gMenuWindow -_080AD160: .4byte gSharedMem + 0x19260 -_080AD164: .4byte gTasks -_080AD168: - bl sub_80B0D7C - lsls r0, r7, 2 - ldr r1, _080AD19C @ =gSharedMem + 0x19338 - adds r0, r1 - ldrb r1, [r0, 0x2] - movs r0, 0x4 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _080AD182 - b _080AD8CA -_080AD182: - ldr r0, _080AD1A0 @ =gTasks - mov r5, r8 - lsls r4, r5, 2 - add r4, r8 - lsls r4, 3 - adds r4, r0 - strh r6, [r4, 0x1C] - bl sub_80AF138 - movs r0, 0x29 - strh r0, [r4, 0x8] - b _080AD8CA - .align 2, 0 -_080AD19C: .4byte gSharedMem + 0x19338 -_080AD1A0: .4byte gTasks -_080AD1A4: - ldr r2, _080AD1CC @ =gSharedMem + 0x19328 - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - adds r1, r2, 0 - cmp r0, 0 - beq _080AD1D0 - ldr r0, [r1] - lsls r0, 20 - lsrs r0, 29 - cmp r7, r0 - beq _080AD1D0 - mov r1, r8 - lsls r0, r1, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - movs r1, 0x39 - strh r1, [r0, 0x8] - b _080AD8CA - .align 2, 0 -_080AD1CC: .4byte gSharedMem + 0x19328 -_080AD1D0: - ldrb r4, [r1] - lsls r2, r7, 3 - subs r0, r2, r7 - lsls r0, 2 - subs r1, 0xC8 - adds r5, r0, r1 - ldrb r1, [r5, 0x11] - movs r0, 0x10 - ands r0, r1 - mov r10, r2 - cmp r0, 0 - beq _080AD204 - movs r4, 0x1 - ldr r0, _080AD1FC @ =gStringVar3 - ldrh r2, [r5, 0x6] - movs r1, 0xD - muls r1, r2 - ldr r2, _080AD200 @ =gMoveNames - adds r1, r2 - bl StringCopy - b _080AD21E - .align 2, 0 -_080AD1FC: .4byte gStringVar3 -_080AD200: .4byte gMoveNames -_080AD204: - ldr r0, _080AD270 @ =gStringVar3 - ldr r3, _080AD274 @ =gUnknown_083CC2D8 - ldr r2, _080AD278 @ =gContestMoves - ldrh r1, [r5, 0x6] - lsls r1, 3 - adds r1, r2 - ldrb r1, [r1, 0x1] - lsls r1, 29 - lsrs r1, 27 - adds r1, r3 - ldr r1, [r1] - bl StringCopy -_080AD21E: - lsls r0, r4, 24 - cmp r0, 0 - ble _080AD23A - mov r2, r10 - subs r0, r2, r7 - lsls r0, 2 - ldr r1, _080AD27C @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r1, [r0, 0x15] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AD23A - movs r4, 0 -_080AD23A: - bl sub_80AF138 - ldr r0, _080AD280 @ =gStringVar1 - lsls r1, r7, 6 - ldr r2, _080AD284 @ =gContestMons + 0x2 - adds r1, r2 - bl StringCopy - ldr r3, _080AD288 @ =gSharedMem + 0x19204 - ldrb r0, [r3, 0x13] - lsls r1, r4, 24 - asrs r2, r1, 24 - adds r0, r2, r0 - strb r0, [r3, 0x13] - lsls r0, 24 - adds r4, r1, 0 - cmp r0, 0 - bge _080AD262 - movs r0, 0 - strb r0, [r3, 0x13] -_080AD262: - cmp r2, 0 - bne _080AD290 - ldr r0, _080AD28C @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - b _080AD6EC - .align 2, 0 -_080AD270: .4byte gStringVar3 -_080AD274: .4byte gUnknown_083CC2D8 -_080AD278: .4byte gContestMoves -_080AD27C: .4byte gSharedMem + 0x19260 -_080AD280: .4byte gStringVar1 -_080AD284: .4byte gContestMons + 0x2 -_080AD288: .4byte gSharedMem + 0x19204 -_080AD28C: .4byte gTasks -_080AD290: - cmp r2, 0 - bge _080AD2A8 - ldr r0, _080AD2A0 @ =gStringVar4 - ldr r1, _080AD2A4 @ =gUnknown_083CC0BC - bl StringExpandPlaceholders - b _080AD2D0 - .align 2, 0 -_080AD2A0: .4byte gStringVar4 -_080AD2A4: .4byte gUnknown_083CC0BC -_080AD2A8: - cmp r2, 0 - ble _080AD2C8 - movs r0, 0x13 - ldrsb r0, [r3, r0] - cmp r0, 0x4 - bgt _080AD2C8 - ldr r0, _080AD2C0 @ =gStringVar4 - ldr r1, _080AD2C4 @ =gUnknown_083CC0A0 - bl StringExpandPlaceholders - b _080AD2D0 - .align 2, 0 -_080AD2C0: .4byte gStringVar4 -_080AD2C4: .4byte gUnknown_083CC0A0 -_080AD2C8: - ldr r0, _080AD300 @ =gStringVar4 - ldr r1, _080AD304 @ =gUnknown_083CC0E3 - bl StringExpandPlaceholders -_080AD2D0: - ldr r0, _080AD308 @ =gMenuWindow - ldr r1, _080AD300 @ =gStringVar4 - movs r2, 0xC2 - lsls r2, 2 - movs r3, 0xF - str r3, [sp] - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080AD30C @ =gTasks - mov r5, r8 - lsls r0, r5, 2 - add r0, r8 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0 - strh r0, [r1, 0x1C] - strh r0, [r1, 0x1E] - cmp r4, 0 - bge _080AD310 - movs r0, 0x35 - strh r0, [r1, 0x8] - b _080AD8CA - .align 2, 0 -_080AD300: .4byte gStringVar4 -_080AD304: .4byte gUnknown_083CC0E3 -_080AD308: .4byte gMenuWindow -_080AD30C: .4byte gTasks -_080AD310: - movs r0, 0x36 - strh r0, [r1, 0x8] - b _080AD8CA -_080AD316: - mov r1, r8 - lsls r0, r1, 2 - add r0, r8 - lsls r0, 3 - mov r2, r12 - adds r4, r0, r2 - movs r3, 0x1C - ldrsh r2, [r4, r3] - cmp r2, 0x1 - beq _080AD354 - cmp r2, 0x1 - bgt _080AD334 - cmp r2, 0 - beq _080AD33E - b _080AD8CA -_080AD334: - cmp r2, 0x2 - beq _080AD37C - cmp r2, 0x3 - beq _080AD3B0 - b _080AD8CA -_080AD33E: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x1 - bl sub_80B1EA8 - ldr r0, _080AD350 @ =0x00000187 - bl PlayFanfare - b _080AD3A8 - .align 2, 0 -_080AD350: .4byte 0x00000187 -_080AD354: - ldrb r0, [r6, 0x7] - ands r2, r0 - cmp r2, 0 - beq _080AD35E - b _080AD8CA -_080AD35E: - ldr r0, _080AD378 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080AD36C - b _080AD8CA -_080AD36C: - movs r0, 0x1 - negs r0, r0 - bl sub_80B1CBC - b _080AD3A8 - .align 2, 0 -_080AD378: .4byte gMenuWindow -_080AD37C: - ldrb r1, [r6, 0x6] - movs r0, 0x20 - ands r0, r1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _080AD38C - b _080AD8CA -_080AD38C: - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1D - bgt _080AD39C - b _080AD8CA -_080AD39C: - strh r2, [r4, 0x1E] - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 - bl sub_80B1EA8 -_080AD3A8: - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - b _080AD8CA -_080AD3B0: - ldr r0, _080AD3CC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080AD3C2 - b _080AD8CA -_080AD3C2: - strh r0, [r4, 0x1C] - strh r0, [r4, 0x1E] - movs r0, 0x2B - strh r0, [r4, 0x8] - b _080AD8CA - .align 2, 0 -_080AD3CC: .4byte gPaletteFade -_080AD3D0: - mov r4, r8 - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r0, 3 - add r0, r12 - movs r5, 0x1C - ldrsh r0, [r0, r5] - mov r9, r1 - cmp r0, 0x4 - bls _080AD3E6 - b _080AD8CA -_080AD3E6: - lsls r0, 2 - ldr r1, _080AD3F0 @ =_080AD3F4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AD3F0: .4byte _080AD3F4 - .align 2, 0 -_080AD3F4: - .4byte _080AD408 - .4byte _080AD420 - .4byte _080AD43E - .4byte _080AD4A0 - .4byte _080AD4EC -_080AD408: - ldr r0, _080AD41C @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080AD416 - b _080AD8CA -_080AD416: - movs r0, 0x1 - movs r1, 0x1 - b _080AD4C8 - .align 2, 0 -_080AD41C: .4byte gMenuWindow -_080AD420: - ldrb r1, [r6, 0x7] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AD42C - b _080AD8CA -_080AD42C: - bl sub_80B1DDC - movs r0, 0xDF - bl PlaySE - movs r0, 0x1 - bl sub_80B1CBC - b _080AD4CC -_080AD43E: - ldrb r1, [r6, 0x6] - movs r0, 0x20 - ands r0, r1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _080AD44E - b _080AD8CA -_080AD44E: - mov r0, r9 - add r0, r8 - lsls r0, 3 - mov r1, r12 - adds r3, r0, r1 - ldrh r0, [r3, 0x1E] - adds r1, r0, 0x1 - strh r1, [r3, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1D - bgt _080AD468 - b _080AD8CA -_080AD468: - strh r2, [r3, 0x1E] - lsls r4, r7, 3 - subs r4, r7 - lsls r4, 2 - adds r0, r6, 0 - adds r0, 0x5C - adds r4, r0 - movs r2, 0x2 - ldrsh r0, [r4, r2] - movs r1, 0x92 - lsls r1, 1 - adds r5, r6, r1 - movs r1, 0x2 - ldrsb r1, [r5, r1] - adds r2, r7, 0 - str r3, [sp, 0x4] - bl sub_80AFBA0 - movs r0, 0x2 - ldrsb r0, [r5, r0] - ldrh r2, [r4, 0x2] - adds r0, r2 - strh r0, [r4, 0x2] - ldr r3, [sp, 0x4] - ldrh r0, [r3, 0x1C] - adds r0, 0x1 - strh r0, [r3, 0x1C] - b _080AD8CA -_080AD4A0: - lsls r0, r7, 2 - ldr r2, _080AD4E0 @ =gSharedMem + 0x19338 - adds r0, r2 - ldrb r1, [r0, 0x2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080AD4B2 - b _080AD8CA -_080AD4B2: - ldr r3, _080AD4E4 @ =0xfffffecc - adds r0, r2, r3 - ldrb r1, [r0, 0x6] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080AD4C2 - b _080AD8CA -_080AD4C2: - movs r1, 0x1 - negs r1, r1 - movs r0, 0x1 -_080AD4C8: - bl sub_80B1EA8 -_080AD4CC: - ldr r0, _080AD4E8 @ =gTasks - mov r1, r9 - add r1, r8 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - strh r0, [r1, 0x1C] - b _080AD8CA - .align 2, 0 -_080AD4E0: .4byte gSharedMem + 0x19338 -_080AD4E4: .4byte 0xfffffecc -_080AD4E8: .4byte gTasks -_080AD4EC: - ldr r0, _080AD510 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080AD4FE - b _080AD8CA -_080AD4FE: - mov r0, r9 - add r0, r8 - lsls r0, 3 - add r0, r12 - strh r1, [r0, 0x1C] - strh r1, [r0, 0x1E] - movs r1, 0x2B - strh r1, [r0, 0x8] - b _080AD8CA - .align 2, 0 -_080AD510: .4byte gPaletteFade -_080AD514: - lsls r0, r7, 2 - ldr r1, _080AD534 @ =gSharedMem + 0x19338 - adds r0, r1 - ldrb r1, [r0, 0x2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080AD526 - b _080AD8CA -_080AD526: - bl sub_80AF138 - ldr r0, _080AD538 @ =gTasks - mov r4, r8 - lsls r1, r4, 2 - b _080AD6EC - .align 2, 0 -_080AD534: .4byte gSharedMem + 0x19338 -_080AD538: .4byte gTasks -_080AD53C: - bl sub_80AF138 - ldr r0, _080AD5A8 @ =gStringVar3 - ldr r4, _080AD5AC @ =gSharedMem + 0x19328 - ldr r1, [r4] - lsls r1, 20 - lsrs r1, 29 - lsls r1, 6 - ldr r5, _080AD5B0 @ =gContestMons + 0x2 - adds r1, r5 - bl StringCopy - ldr r0, _080AD5B4 @ =gStringVar1 - lsls r1, r7, 6 - adds r1, r5 - bl StringCopy - ldr r0, _080AD5B8 @ =gStringVar2 - lsls r1, r7, 3 - subs r1, r7 - lsls r1, 2 - subs r4, 0xC8 - adds r1, r4 - ldrh r2, [r1, 0x6] - movs r1, 0xD - muls r1, r2 - ldr r2, _080AD5BC @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _080AD5C0 @ =gStringVar4 - ldr r1, _080AD5C4 @ =gUnknown_083CC14A - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _080AD5C8 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080AD5CC @ =gTasks - mov r5, r8 - lsls r0, r5, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x3A - strh r1, [r0, 0x8] - b _080AD8CA - .align 2, 0 -_080AD5A8: .4byte gStringVar3 -_080AD5AC: .4byte gSharedMem + 0x19328 -_080AD5B0: .4byte gContestMons + 0x2 -_080AD5B4: .4byte gStringVar1 -_080AD5B8: .4byte gStringVar2 -_080AD5BC: .4byte gMoveNames -_080AD5C0: .4byte gStringVar4 -_080AD5C4: .4byte gUnknown_083CC14A -_080AD5C8: .4byte gMenuWindow -_080AD5CC: .4byte gTasks -_080AD5D0: - ldr r5, _080AD614 @ =gMenuWindow - adds r0, r5, 0 - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080AD5E0 - b _080AD8CA -_080AD5E0: - bl sub_80AF138 - ldr r4, _080AD618 @ =gStringVar4 - ldr r1, _080AD61C @ =gUnknown_083CC16E - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r2, 0xC2 - lsls r2, 2 - movs r0, 0xF - str r0, [sp] - adds r0, r5, 0 - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080AD620 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x3B - strh r1, [r0, 0x8] - b _080AD8CA - .align 2, 0 -_080AD614: .4byte gMenuWindow -_080AD618: .4byte gStringVar4 -_080AD61C: .4byte gUnknown_083CC16E -_080AD620: .4byte gTasks -_080AD624: - ldr r0, _080AD640 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080AD632 - b _080AD8CA -_080AD632: - bl sub_80AF138 - ldr r0, _080AD644 @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - b _080AD6EC - .align 2, 0 -_080AD640: .4byte gMenuWindow -_080AD644: .4byte gTasks -_080AD648: - lsls r0, r7, 3 - subs r0, r7 - lsls r0, 2 - ldr r1, _080AD6B4 @ =gSharedMem + 0x19260 - adds r4, r0, r1 - ldrb r1, [r4, 0x15] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080AD664 - movs r0, 0x11 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x15] -_080AD664: - adds r0, r7, 0 - bl sub_80B09B0 - ldr r0, _080AD6B8 @ =gStringVar1 - lsls r1, r7, 6 - ldr r2, _080AD6BC @ =gContestMons + 0x2 - adds r1, r2 - bl StringCopy - ldr r0, _080AD6C0 @ =gStringVar2 - ldrh r2, [r4, 0x6] - movs r1, 0xD - muls r1, r2 - ldr r2, _080AD6C4 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _080AD6C8 @ =gStringVar4 - ldr r1, _080AD6CC @ =gUnknown_083CBF60 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _080AD6D0 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080AD6D4 @ =gTasks - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x22 - strh r1, [r0, 0x8] - b _080AD8CA - .align 2, 0 -_080AD6B4: .4byte gSharedMem + 0x19260 -_080AD6B8: .4byte gStringVar1 -_080AD6BC: .4byte gContestMons + 0x2 -_080AD6C0: .4byte gStringVar2 -_080AD6C4: .4byte gMoveNames -_080AD6C8: .4byte gStringVar4 -_080AD6CC: .4byte gUnknown_083CBF60 -_080AD6D0: .4byte gMenuWindow -_080AD6D4: .4byte gTasks -_080AD6D8: - ldr r0, _080AD6F8 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - bne _080AD6E6 - b _080AD8CA -_080AD6E6: - ldr r0, _080AD6FC @ =gTasks - mov r5, r8 - lsls r1, r5, 2 -_080AD6EC: - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x37 - strh r0, [r1, 0x8] - b _080AD8CA - .align 2, 0 -_080AD6F8: .4byte gMenuWindow -_080AD6FC: .4byte gTasks -_080AD700: - bl sub_80B1BDC - ldr r0, _080AD718 @ =gTasks - mov r2, r8 - lsls r1, r2, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x38 - strh r0, [r1, 0x8] - b _080AD8CA - .align 2, 0 -_080AD718: .4byte gTasks -_080AD71C: - ldrb r1, [r6, 0x6] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080AD72C - b _080AD8CA -_080AD72C: - movs r0, 0x13 - ldrsb r0, [r6, r0] - cmp r0, 0x4 - ble _080AD73A - strb r1, [r6, 0x13] - bl sub_80B1928 -_080AD73A: - ldr r0, _080AD74C @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0xA - strh r0, [r1, 0x8] - b _080AD8CA - .align 2, 0 -_080AD74C: .4byte gTasks -_080AD750: - mov r4, r8 - lsls r2, r4, 2 - add r2, r8 - lsls r2, 3 - add r2, r12 - ldrb r5, [r2, 0xC] - ldr r1, _080AD774 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080AD778 @ =sub_80AD92C - str r1, [r0] - movs r0, 0xB - strh r0, [r2, 0x8] - b _080AD8CA - .align 2, 0 -_080AD774: .4byte gSprites -_080AD778: .4byte sub_80AD92C -_080AD77C: - mov r5, r8 - lsls r0, r5, 2 - add r0, r8 - lsls r0, 3 - mov r1, r12 - adds r4, r0, r1 - ldrb r5, [r4, 0xC] - ldr r1, _080AD7B4 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r6, r0, r1 - adds r0, r6, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _080AD7A2 - b _080AD8CA -_080AD7A2: - adds r0, r6, 0 - bl FreeSpriteOamMatrix - adds r0, r6, 0 - bl DestroySprite - movs r0, 0x14 - strh r0, [r4, 0x8] - b _080AD8CA - .align 2, 0 -_080AD7B4: .4byte gSprites -_080AD7B8: - movs r6, 0 - mov r2, r8 - lsls r2, 2 - mov r9, r2 -_080AD7C0: - lsls r0, r6, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_80B0CDC - adds r6, 0x1 - cmp r6, 0x3 - ble _080AD7C0 - ldr r1, _080AD7E4 @ =gTasks - mov r0, r9 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - movs r1, 0x15 - strh r1, [r0, 0x8] - b _080AD8CA - .align 2, 0 -_080AD7E4: .4byte gTasks -_080AD7E8: - bl sub_80AF138 - ldr r0, _080AD828 @ =gStringVar1 - lsls r1, r7, 6 - ldr r2, _080AD82C @ =gContestMons + 0x2 - adds r1, r2 - bl StringCopy - ldr r4, _080AD830 @ =gStringVar4 - ldr r1, _080AD834 @ =gUnknown_083CB00D - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _080AD838 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080AD83C @ =gTasks - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - movs r1, 0x20 - strh r1, [r0, 0x8] - b _080AD8CA - .align 2, 0 -_080AD828: .4byte gStringVar1 -_080AD82C: .4byte gContestMons + 0x2 -_080AD830: .4byte gStringVar4 -_080AD834: .4byte gUnknown_083CB00D -_080AD838: .4byte gMenuWindow -_080AD83C: .4byte gTasks -_080AD840: - ldr r0, _080AD860 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - cmp r0, 0 - beq _080AD8CA - ldr r0, _080AD864 @ =gTasks - mov r4, r8 - lsls r1, r4, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r0, 0x15 - strh r0, [r1, 0x8] - b _080AD8CA - .align 2, 0 -_080AD860: .4byte gMenuWindow -_080AD864: .4byte gTasks -_080AD868: - mov r5, r8 - lsls r0, r5, 2 - add r0, r8 - lsls r0, 3 - mov r2, r12 - adds r1, r0, r2 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - strh r0, [r1, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1D - ble _080AD8CA - movs r0, 0 - strh r0, [r1, 0x1C] - movs r0, 0x16 - strh r0, [r1, 0x8] - b _080AD8CA -_080AD88C: - ldrb r0, [r6, 0x10] - adds r0, 0x1 - movs r1, 0 - strb r0, [r6, 0x10] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080AD8B8 - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - ldr r1, _080AD8B4 @ =sub_80AD960 - str r1, [r0] - b _080AD8C4 - .align 2, 0 -_080AD8B4: .4byte sub_80AD960 -_080AD8B8: - mov r4, r8 - lsls r0, r4, 2 - add r0, r8 - lsls r0, 3 - add r0, r12 - strh r1, [r0, 0x8] -_080AD8C4: - movs r0, 0 - bl nullsub_18 -_080AD8CA: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80AC2CC - - thumb_func_start sub_80AD8DC -sub_80AD8DC: @ 80AD8DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080AD8F8 @ =gSharedMem + 0x19204 - ldrb r2, [r3, 0x7] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r3, 0x7] - bl DestroyTask - pop {r0} - bx r0 - .align 2, 0 -_080AD8F8: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80AD8DC - - thumb_func_start sub_80AD8FC -sub_80AD8FC: @ 80AD8FC - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x24] - movs r3, 0x24 - ldrsh r2, [r1, r3] - cmp r2, 0 - beq _080AD910 - subs r0, 0x2 - strh r0, [r1, 0x24] - b _080AD924 -_080AD910: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080AD924 - strh r2, [r1, 0x2E] - ldr r0, _080AD928 @ =SpriteCallbackDummy - str r0, [r1, 0x1C] -_080AD924: - pop {r0} - bx r0 - .align 2, 0 -_080AD928: .4byte SpriteCallbackDummy - thumb_func_end sub_80AD8FC - - thumb_func_start sub_80AD92C -sub_80AD92C: @ 80AD92C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x24] - subs r0, 0x6 - strh r0, [r2, 0x24] - movs r1, 0x20 - ldrsh r0, [r2, r1] - movs r3, 0x24 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _080AD956 - ldr r0, _080AD95C @ =SpriteCallbackDummy - str r0, [r2, 0x1C] - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080AD956: - pop {r0} - bx r0 - .align 2, 0 -_080AD95C: .4byte SpriteCallbackDummy - thumb_func_end sub_80AD92C - - thumb_func_start sub_80AD960 -sub_80AD960: @ 80AD960 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AD984 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080AD9F2 - cmp r0, 0x1 - bgt _080AD988 - cmp r0, 0 - beq _080AD98E - b _080ADA10 - .align 2, 0 -_080AD984: .4byte gTasks -_080AD988: - cmp r0, 0x2 - beq _080ADA08 - b _080ADA10 -_080AD98E: - ldr r0, _080AD9D8 @ =gIsLinkContest - ldrb r1, [r0] - movs r6, 0x1 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _080AD9E8 - ldr r2, _080AD9DC @ =gSharedMem + 0x19204 - ldrb r0, [r2, 0x7] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x7] - bl sub_80AE074 - lsls r0, 24 - cmp r0, 0 - beq _080AD9B8 - bl sub_80AF2FC - bl sub_80AF3C0 -_080AD9B8: - ldr r4, _080AD9E0 @ =sub_80C8C80 - adds r0, r4, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AD9E4 @ =sub_80AD8DC - adds r1, r4, 0 - bl SetTaskFuncWithFollowupFunc - bl sub_80AF860 - strh r6, [r5, 0x8] - b _080ADA10 - .align 2, 0 -_080AD9D8: .4byte gIsLinkContest -_080AD9DC: .4byte gSharedMem + 0x19204 -_080AD9E0: .4byte sub_80C8C80 -_080AD9E4: .4byte sub_80AD8DC -_080AD9E8: - bl sub_80AF2FC - bl sub_80AF3C0 - b _080AD9FE -_080AD9F2: - ldr r0, _080ADA04 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x7] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080ADA10 -_080AD9FE: - movs r0, 0x2 - strh r0, [r5, 0x8] - b _080ADA10 - .align 2, 0 -_080ADA04: .4byte gSharedMem + 0x19204 -_080ADA08: - movs r0, 0 - strh r0, [r5, 0x8] - ldr r0, _080ADA18 @ =sub_80ADA1C - str r0, [r5] -_080ADA10: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080ADA18: .4byte sub_80ADA1C - thumb_func_end sub_80AD960 - - thumb_func_start sub_80ADA1C -sub_80ADA1C: @ 80ADA1C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - bl sub_80B1FD0 - ldr r1, _080ADA44 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - ldr r1, _080ADA48 @ =sub_80ADA4C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADA44: .4byte gTasks -_080ADA48: .4byte sub_80ADA4C - thumb_func_end sub_80ADA1C - - thumb_func_start sub_80ADA4C -sub_80ADA4C: @ 80ADA4C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADA70 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080ADA92 - cmp r5, 0x1 - bgt _080ADA74 - cmp r5, 0 - beq _080ADA7A - b _080ADACE - .align 2, 0 -_080ADA70: .4byte gTasks -_080ADA74: - cmp r5, 0x2 - beq _080ADAC0 - b _080ADACE -_080ADA7A: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080ADACE - movs r0, 0x2 - bl sub_80B25E4 - strh r5, [r4, 0xA] - b _080ADAB2 -_080ADA92: - ldr r0, _080ADABC @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x7] - movs r0, 0x2 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080ADACE - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080ADACE - strh r1, [r4, 0xA] -_080ADAB2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080ADACE - .align 2, 0 -_080ADABC: .4byte gSharedMem + 0x19204 -_080ADAC0: - bl sub_80AFF10 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - ldr r0, _080ADAD4 @ =sub_80ADAD8 - str r0, [r4] -_080ADACE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ADAD4: .4byte sub_80ADAD8 - thumb_func_end sub_80ADA4C - - thumb_func_start sub_80ADAD8 -sub_80ADAD8: @ 80ADAD8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80AFF28 - lsls r0, 24 - cmp r0, 0 - beq _080ADAF6 - ldr r0, _080ADAFC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ADB00 @ =sub_80ADB04 - str r0, [r1] -_080ADAF6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADAFC: .4byte gTasks -_080ADB00: .4byte sub_80ADB04 - thumb_func_end sub_80ADAD8 - - thumb_func_start sub_80ADB04 -sub_80ADB04: @ 80ADB04 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADB30 @ =gSharedMem + 0x18204 - ldr r3, _080ADB34 @ =gPlttBufferUnfaded - ldr r1, _080ADB38 @ =0x040000d4 - str r2, [r1] - str r3, [r1, 0x4] - ldr r2, _080ADB3C @ =0x84000100 - str r2, [r1, 0x8] - ldr r1, [r1, 0x8] - ldr r2, _080ADB40 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - movs r0, 0x2 - strh r0, [r1, 0xA] - ldr r0, _080ADB44 @ =sub_80ADB48 - str r0, [r1] - bx lr - .align 2, 0 -_080ADB30: .4byte gSharedMem + 0x18204 -_080ADB34: .4byte gPlttBufferUnfaded -_080ADB38: .4byte 0x040000d4 -_080ADB3C: .4byte 0x84000100 -_080ADB40: .4byte gTasks -_080ADB44: .4byte sub_80ADB48 - thumb_func_end sub_80ADB04 - - thumb_func_start sub_80ADB48 -sub_80ADB48: @ 80ADB48 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADB80 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080ADB7A - movs r0, 0 - strh r0, [r1, 0x8] - ldrh r0, [r1, 0xA] - subs r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - cmp r0, 0 - bne _080ADB7A - ldr r0, _080ADB84 @ =sub_80ADB88 - str r0, [r1] -_080ADB7A: - pop {r0} - bx r0 - .align 2, 0 -_080ADB80: .4byte gTasks -_080ADB84: .4byte sub_80ADB88 - thumb_func_end sub_80ADB48 - - thumb_func_start sub_80ADB88 -sub_80ADB88: @ 80ADB88 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _080ADBEC @ =gContestPlayerMonIndex - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _080ADBF0 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r4, [r0, 0x1A] - bl sub_80AF138 - ldr r0, _080ADBF4 @ =gStringVar1 - ldrb r1, [r6] - lsls r1, 6 - ldr r2, _080ADBF8 @ =gContestMons + 0x2 - adds r1, r2 - bl StringCopy - ldr r6, _080ADBFC @ =gStringVar4 - ldr r0, _080ADC00 @ =gUnknown_083CB2F0 - lsls r4, 2 - adds r4, r0 - ldr r1, [r4] - adds r0, r6, 0 - bl StringExpandPlaceholders - ldr r0, _080ADC04 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r6, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080ADC08 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ADC0C @ =sub_80ADC10 - str r1, [r0] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080ADBEC: .4byte gContestPlayerMonIndex -_080ADBF0: .4byte gSharedMem + 0x19260 -_080ADBF4: .4byte gStringVar1 -_080ADBF8: .4byte gContestMons + 0x2 -_080ADBFC: .4byte gStringVar4 -_080ADC00: .4byte gUnknown_083CB2F0 -_080ADC04: .4byte gMenuWindow -_080ADC08: .4byte gTasks -_080ADC0C: .4byte sub_80ADC10 - thumb_func_end sub_80ADB88 - - thumb_func_start sub_80ADC10 -sub_80ADC10: @ 80ADC10 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080ADC40 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080ADC3A - ldr r1, _080ADC44 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - ldr r1, _080ADC48 @ =sub_80ADC4C - str r1, [r0] - bl sub_80B0D7C -_080ADC3A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADC40: .4byte gMenuWindow -_080ADC44: .4byte gTasks -_080ADC48: .4byte sub_80ADC4C - thumb_func_end sub_80ADC10 - - thumb_func_start sub_80ADC4C -sub_80ADC4C: @ 80ADC4C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADC7C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1D - ble _080ADC76 - movs r0, 0 - strh r0, [r4, 0x8] - bl sub_80AFF10 - ldr r0, _080ADC80 @ =sub_80ADC84 - str r0, [r4] -_080ADC76: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADC7C: .4byte gTasks -_080ADC80: .4byte sub_80ADC84 - thumb_func_end sub_80ADC4C - - thumb_func_start sub_80ADC84 -sub_80ADC84: @ 80ADC84 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80AFF28 - lsls r0, 24 - cmp r0, 0 - beq _080ADCA6 - ldr r1, _080ADCAC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - ldr r1, _080ADCB0 @ =sub_80ADCB4 - str r1, [r0] -_080ADCA6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADCAC: .4byte gTasks -_080ADCB0: .4byte sub_80ADCB4 - thumb_func_end sub_80ADC84 - - thumb_func_start sub_80ADCB4 -sub_80ADCB4: @ 80ADCB4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80B2184 - ldr r1, _080ADCD4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ADCD8 @ =sub_80B237C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADCD4: .4byte gTasks -_080ADCD8: .4byte sub_80B237C - thumb_func_end sub_80ADCB4 - - thumb_func_start sub_80ADCDC -sub_80ADCDC: @ 80ADCDC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80B2280 - ldr r1, _080ADCFC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ADD00 @ =sub_80ADD04 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADCFC: .4byte gTasks -_080ADD00: .4byte sub_80ADD04 - thumb_func_end sub_80ADCDC - - thumb_func_start sub_80ADD04 -sub_80ADD04: @ 80ADD04 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, _080ADD40 @ =REG_BG0CNT - ldrb r2, [r3] - movs r1, 0x4 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3] - ldr r2, _080ADD44 @ =REG_BG2CNT - ldrb r0, [r2] - ands r1, r0 - strb r1, [r2] - ldr r1, _080ADD48 @ =gSharedMem + 0x19204 - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _080ADD54 - ldr r0, _080ADD4C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ADD50 @ =sub_80ADDA4 - b _080ADD64 - .align 2, 0 -_080ADD40: .4byte REG_BG0CNT -_080ADD44: .4byte REG_BG2CNT -_080ADD48: .4byte gSharedMem + 0x19204 -_080ADD4C: .4byte gTasks -_080ADD50: .4byte sub_80ADDA4 -_080ADD54: - bl sub_80B1B14 - ldr r0, _080ADD6C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ADD70 @ =sub_80ADD74 -_080ADD64: - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADD6C: .4byte gTasks -_080ADD70: .4byte sub_80ADD74 - thumb_func_end sub_80ADD04 - - thumb_func_start sub_80ADD74 -sub_80ADD74: @ 80ADD74 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080ADD98 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x6] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080ADD94 - ldr r0, _080ADD9C @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ADDA0 @ =sub_80ABB70 - str r0, [r1] -_080ADD94: - pop {r0} - bx r0 - .align 2, 0 -_080ADD98: .4byte gSharedMem + 0x19204 -_080ADD9C: .4byte gTasks -_080ADDA0: .4byte sub_80ABB70 - thumb_func_end sub_80ADD74 - - thumb_func_start sub_80ADDA4 -sub_80ADDA4: @ 80ADDA4 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080ADE24 @ =gUnknown_030042A0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080ADE28 @ =gUnknown_03004280 - strh r1, [r0] - ldr r3, _080ADE2C @ =gSharedMem + 0x19260 - ldr r2, _080ADE30 @ =gUnknown_02038680 - movs r1, 0x3 -_080ADDBC: - ldrh r0, [r3, 0x4] - strh r0, [r2] - adds r3, 0x1C - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080ADDBC - movs r5, 0 - bl sub_80AF668 - bl sub_80AF138 - ldr r0, _080ADE34 @ =gContestPlayerMonIndex - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _080ADE2C @ =gSharedMem + 0x19260 - adds r0, r1 - ldrh r0, [r0, 0x8] - bl sub_80BE23C - ldr r1, _080ADE38 @ =gUnknown_03005D28 - ldr r0, _080ADE3C @ =gRngValue - ldr r0, [r0] - str r0, [r1] - ldr r4, _080ADE40 @ =gStringVar4 - ldr r1, _080ADE44 @ =gUnknown_083CB02C - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _080ADE48 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080ADE4C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0xC] - ldr r1, _080ADE50 @ =sub_80ADE54 - str r1, [r0] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080ADE24: .4byte gUnknown_030042A0 -_080ADE28: .4byte gUnknown_03004280 -_080ADE2C: .4byte gSharedMem + 0x19260 -_080ADE30: .4byte gUnknown_02038680 -_080ADE34: .4byte gContestPlayerMonIndex -_080ADE38: .4byte gUnknown_03005D28 -_080ADE3C: .4byte gRngValue -_080ADE40: .4byte gStringVar4 -_080ADE44: .4byte gUnknown_083CB02C -_080ADE48: .4byte gMenuWindow -_080ADE4C: .4byte gTasks -_080ADE50: .4byte sub_80ADE54 - thumb_func_end sub_80ADDA4 - - thumb_func_start sub_80ADE54 -sub_80ADE54: @ 80ADE54 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080ADE98 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080ADE92 - bl sub_80B2184 - ldr r1, _080ADE9C @ =gUnknown_030042C0 - movs r0, 0 - strh r0, [r1] - ldr r1, _080ADEA0 @ =gUnknown_030041B4 - movs r0, 0xA0 - strh r0, [r1] - movs r0, 0x62 - movs r1, 0 - bl PlaySE12WithPanning - ldr r1, _080ADEA4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - ldr r1, _080ADEA8 @ =sub_80ADEAC - str r1, [r0] -_080ADE92: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADE98: .4byte gMenuWindow -_080ADE9C: .4byte gUnknown_030042C0 -_080ADEA0: .4byte gUnknown_030041B4 -_080ADEA4: .4byte gTasks -_080ADEA8: .4byte sub_80ADEAC - thumb_func_end sub_80ADE54 - - thumb_func_start sub_80ADEAC -sub_80ADEAC: @ 80ADEAC - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _080ADEE0 @ =gUnknown_030041B4 - ldrh r0, [r1] - subs r0, 0x7 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bge _080ADEC4 - movs r0, 0 - strh r0, [r1] -_080ADEC4: - ldrh r2, [r1] - cmp r2, 0 - bne _080ADEDA - ldr r0, _080ADEE4 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ADEE8 @ =sub_80ADEEC - str r0, [r1] - strh r2, [r1, 0x8] -_080ADEDA: - pop {r0} - bx r0 - .align 2, 0 -_080ADEE0: .4byte gUnknown_030041B4 -_080ADEE4: .4byte gTasks -_080ADEE8: .4byte sub_80ADEEC - thumb_func_end sub_80ADEAC - - thumb_func_start sub_80ADEEC -sub_80ADEEC: @ 80ADEEC - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADF20 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x31 - ble _080ADF40 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, _080ADF24 @ =gIsLinkContest - ldrb r0, [r0] - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080ADF2C - ldr r0, _080ADF28 @ =sub_80ADF4C - b _080ADF3E - .align 2, 0 -_080ADF20: .4byte gTasks -_080ADF24: .4byte gIsLinkContest -_080ADF28: .4byte sub_80ADF4C -_080ADF2C: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080ADF48 @ =sub_80ADFD8 -_080ADF3E: - str r0, [r4] -_080ADF40: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADF48: .4byte sub_80ADFD8 - thumb_func_end sub_80ADEEC - - thumb_func_start sub_80ADF4C -sub_80ADF4C: @ 80ADF4C - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _080ADF88 @ =sub_80C8AD0 - adds r0, r5, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADF8C @ =sub_80ADF98 - adds r1, r5, 0 - bl SetTaskFuncWithFollowupFunc - ldr r1, _080ADF90 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ADF94 @ =nullsub_89 - str r1, [r0] - bl sub_80AF860 - movs r0, 0 - bl sub_80AFFE0 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ADF88: .4byte sub_80C8AD0 -_080ADF8C: .4byte sub_80ADF98 -_080ADF90: .4byte gTasks -_080ADF94: .4byte nullsub_89 - thumb_func_end sub_80ADF4C - - thumb_func_start sub_80ADF98 -sub_80ADF98: @ 80ADF98 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r2, _080ADFCC @ =gTasks - ldr r0, _080ADFD0 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x8] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _080ADFD4 @ =sub_80ADFD8 - str r1, [r0] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080ADFCC: .4byte gTasks -_080ADFD0: .4byte gSharedMem + 0x19204 -_080ADFD4: .4byte sub_80ADFD8 - thumb_func_end sub_80ADF98 - - thumb_func_start sub_80ADFD8 -sub_80ADFD8: @ 80ADFD8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080AE000 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080ADFFC - adds r0, r2, 0 - bl DestroyTask - ldr r0, _080AE004 @ =gFieldCallback - ldr r1, _080AE008 @ =sub_80AE010 - str r1, [r0] - ldr r0, _080AE00C @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 -_080ADFFC: - pop {r0} - bx r0 - .align 2, 0 -_080AE000: .4byte gPaletteFade -_080AE004: .4byte gFieldCallback -_080AE008: .4byte sub_80AE010 -_080AE00C: .4byte c2_exit_to_overworld_2_switch - thumb_func_end sub_80ADFD8 - - thumb_func_start sub_80AE010 -sub_80AE010: @ 80AE010 - push {lr} - bl ScriptContext2_Disable - bl EnableBothScriptContexts - pop {r0} - bx r0 - thumb_func_end sub_80AE010 - - thumb_func_start sub_80AE020 -sub_80AE020: @ 80AE020 - push {r4,lr} - adds r4, r0, 0 - b _080AE028 -_080AE026: - adds r4, 0x1 -_080AE028: - ldrb r0, [r4] - cmp r0, 0xFF - beq _080AE04C - cmp r0, 0xFC - bne _080AE026 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _080AE026 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - movs r1, 0xFF - strb r1, [r0] - adds r1, r4, 0x2 - bl StringAppend -_080AE04C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AE020 - - thumb_func_start sub_80AE054 -sub_80AE054: @ 80AE054 - push {lr} - ldr r0, _080AE06C @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080AE068 - ldr r1, _080AE070 @ =gContestPlayerMonIndex - movs r0, 0x3 - strb r0, [r1] -_080AE068: - pop {r0} - bx r0 - .align 2, 0 -_080AE06C: .4byte gIsLinkContest -_080AE070: .4byte gContestPlayerMonIndex - thumb_func_end sub_80AE054 - - thumb_func_start sub_80AE074 -sub_80AE074: @ 80AE074 - push {lr} - ldr r0, _080AE088 @ =gContestPlayerMonIndex - ldr r1, _080AE08C @ =gUnknown_0203869B - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - beq _080AE090 - movs r0, 0 - b _080AE092 - .align 2, 0 -_080AE088: .4byte gContestPlayerMonIndex -_080AE08C: .4byte gUnknown_0203869B -_080AE090: - movs r0, 0x1 -_080AE092: - pop {r1} - bx r1 - thumb_func_end sub_80AE074 - - thumb_func_start sub_80AE098 -sub_80AE098: @ 80AE098 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r6, _080AE0F0 @ =gSaveBlock2 - mov r0, sp - adds r1, r6, 0 - bl StringCopy - mov r0, sp - bl StripExtCtrlCodes - ldr r0, _080AE0F4 @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AE0CE - mov r0, sp - ldrb r2, [r0, 0x5] - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x5] - mov r0, sp - strb r2, [r0, 0x7] -_080AE0CE: - ldr r5, _080AE0F8 @ =gContestPlayerMonIndex - ldrb r0, [r5] - lsls r0, 6 - ldr r4, _080AE0FC @ =gUnknown_0203857D - adds r0, r4 - mov r1, sp - movs r2, 0x8 - bl memcpy - ldrb r0, [r6, 0x8] - cmp r0, 0 - bne _080AE100 - ldrb r0, [r5] - lsls r0, 6 - adds r0, r4, r0 - movs r1, 0xD8 - b _080AE108 - .align 2, 0 -_080AE0F0: .4byte gSaveBlock2 -_080AE0F4: .4byte gIsLinkContest -_080AE0F8: .4byte gContestPlayerMonIndex -_080AE0FC: .4byte gUnknown_0203857D -_080AE100: - ldrb r0, [r5] - lsls r0, 6 - adds r0, r4, r0 - movs r1, 0xD9 -_080AE108: - strb r1, [r0, 0x8] - ldr r5, _080AE17C @ =gContestMons - ldr r4, _080AE180 @ =gContestPlayerMonIndex - ldrb r0, [r4] - lsls r0, 6 - adds r1, r5, 0 - adds r1, 0x18 - adds r0, r1 - movs r1, 0 - str r1, [r0] - ldrb r0, [r4] - lsls r0, 6 - adds r0, r5 - adds r0, 0x2C - strb r1, [r0] - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _080AE184 @ =gPlayerParty - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - ldrb r1, [r4] - lsls r1, 6 - adds r1, r5 - strh r0, [r1] - adds r0, r6, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - ldr r0, _080AE188 @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AE19A - mov r0, sp - bl StripExtCtrlCodes - adds r0, r6, 0 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - bne _080AE18C - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x5] - movs r0, 0xFC - strb r0, [r1, 0xA] - b _080AE19A - .align 2, 0 -_080AE17C: .4byte gContestMons -_080AE180: .4byte gContestPlayerMonIndex -_080AE184: .4byte gPlayerParty -_080AE188: .4byte gIsLinkContest -_080AE18C: - mov r0, sp - ldrb r2, [r0, 0x5] - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x5] - mov r0, sp - strb r2, [r0, 0xA] -_080AE19A: - ldr r5, _080AE2C4 @ =gContestPlayerMonIndex - ldrb r0, [r5] - lsls r0, 6 - ldr r1, _080AE2C8 @ =gContestMons + 0x2 - mov r8, r1 - add r0, r8 - mov r1, sp - movs r2, 0xB - bl memcpy - movs r0, 0x64 - adds r4, r7, 0 - muls r4, r0 - ldr r0, _080AE2CC @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x16 - bl GetMonData - mov r6, r8 - subs r6, 0x2 - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x26 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x17 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x18 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x28 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x21 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x29 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2F - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x2A - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x30 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x2B - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0xD - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - strh r0, [r1, 0x1E] - adds r0, r4, 0 - movs r1, 0xE - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - strh r0, [r1, 0x20] - adds r0, r4, 0 - movs r1, 0xF - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - strh r0, [r1, 0x22] - adds r0, r4, 0 - movs r1, 0x10 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - strh r0, [r1, 0x24] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - mov r2, r8 - adds r2, 0x36 - adds r1, r2 - str r0, [r1] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - movs r2, 0x3A - add r8, r2 - add r1, r8 - str r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r2, r0, 16 - mov r8, r2 - ldrb r0, [r5] - lsls r0, 6 - adds r1, r0, r6 - adds r0, r1, 0 - adds r0, 0x26 - ldrb r3, [r0] - adds r0, 0x1 - ldrb r4, [r0] - adds r0, 0x1 - ldrb r5, [r0] - adds r0, 0x1 - ldrb r6, [r0] - adds r0, 0x1 - ldrb r7, [r0] - cmp r2, 0xFE - bne _080AE2D0 - adds r3, 0x14 - b _080AE31E - .align 2, 0 -_080AE2C4: .4byte gContestPlayerMonIndex -_080AE2C8: .4byte gContestMons + 0x2 -_080AE2CC: .4byte gPlayerParty -_080AE2D0: - cmp r2, 0xFF - bne _080AE2E0 - lsls r0, r4, 16 - movs r1, 0xA0 - lsls r1, 13 - adds r0, r1 - lsrs r4, r0, 16 - b _080AE31E -_080AE2E0: - movs r0, 0x80 - lsls r0, 1 - cmp r2, r0 - bne _080AE2F4 - lsls r0, r5, 16 - movs r2, 0xA0 - lsls r2, 13 - adds r0, r2 - lsrs r5, r0, 16 - b _080AE31E -_080AE2F4: - ldr r0, _080AE308 @ =0x00000101 - cmp r2, r0 - bne _080AE30C - lsls r0, r6, 16 - movs r1, 0xA0 - lsls r1, 13 - adds r0, r1 - lsrs r6, r0, 16 - b _080AE31E - .align 2, 0 -_080AE308: .4byte 0x00000101 -_080AE30C: - movs r0, 0x81 - lsls r0, 1 - cmp r8, r0 - bne _080AE31E - lsls r0, r7, 16 - movs r2, 0xA0 - lsls r2, 13 - adds r0, r2 - lsrs r7, r0, 16 -_080AE31E: - cmp r3, 0xFF - ble _080AE324 - movs r3, 0xFF -_080AE324: - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080AE32E - movs r4, 0xFF -_080AE32E: - lsls r0, r5, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080AE338 - movs r5, 0xFF -_080AE338: - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080AE342 - movs r6, 0xFF -_080AE342: - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080AE34C - movs r7, 0xFF -_080AE34C: - ldr r2, _080AE390 @ =gContestMons - ldr r1, _080AE394 @ =gContestPlayerMonIndex - ldrb r0, [r1] - lsls r0, 6 - adds r0, r2 - adds r0, 0x26 - strb r3, [r0] - ldrb r0, [r1] - lsls r0, 6 - adds r0, r2 - adds r0, 0x27 - strb r4, [r0] - ldrb r0, [r1] - lsls r0, 6 - adds r0, r2 - adds r0, 0x28 - strb r5, [r0] - ldrb r0, [r1] - lsls r0, 6 - adds r0, r2 - adds r0, 0x29 - strb r6, [r0] - ldrb r0, [r1] - lsls r0, 6 - adds r0, r2 - adds r0, 0x2A - strb r7, [r0] - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AE390: .4byte gContestMons -_080AE394: .4byte gContestPlayerMonIndex - thumb_func_end sub_80AE098 - - thumb_func_start sub_80AE398 -sub_80AE398: @ 80AE398 - push {r4-r7,lr} - sub sp, 0x40 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - movs r6, 0 - bl sub_80AE054 - movs r5, 0 - ldr r2, _080AE470 @ =gUnknown_083C9408 -_080AE3AE: - ldrb r1, [r2, 0x1C] - lsls r0, r1, 30 - lsrs r0, 30 - cmp r7, r0 - bne _080AE3FE - cmp r4, 0 - bne _080AE3C2 - lsls r0, r1, 29 - cmp r0, 0 - blt _080AE3F2 -_080AE3C2: - cmp r4, 0x1 - bne _080AE3CE - ldrb r0, [r2, 0x1C] - lsls r0, 28 - cmp r0, 0 - blt _080AE3F2 -_080AE3CE: - cmp r4, 0x2 - bne _080AE3DA - ldrb r0, [r2, 0x1C] - lsls r0, 27 - cmp r0, 0 - blt _080AE3F2 -_080AE3DA: - cmp r4, 0x3 - bne _080AE3E6 - ldrb r0, [r2, 0x1C] - lsls r0, 26 - cmp r0, 0 - blt _080AE3F2 -_080AE3E6: - cmp r4, 0x4 - bne _080AE3FE - ldrb r0, [r2, 0x1C] - lsls r0, 25 - cmp r0, 0 - bge _080AE3FE -_080AE3F2: - adds r0, r6, 0 - adds r1, r0, 0x1 - lsls r1, 24 - lsrs r6, r1, 24 - add r0, sp - strb r5, [r0] -_080AE3FE: - adds r2, 0x40 - adds r5, 0x1 - cmp r5, 0x3B - ble _080AE3AE - mov r0, sp - adds r1, r0, r6 - movs r0, 0xFF - strb r0, [r1] - movs r5, 0 - ldr r7, _080AE470 @ =gUnknown_083C9408 -_080AE412: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl __modsi3 - lsls r0, 16 - lsrs r0, 16 - ldr r1, _080AE474 @ =gContestMons - lsls r2, r5, 6 - adds r2, r1 - mov r1, sp - adds r4, r1, r0 - ldrb r1, [r4] - lsls r1, 6 - adds r1, r7 - adds r0, r2, 0 - movs r2, 0x40 - bl memcpy - ldrb r0, [r4] - adds r2, r5, 0x1 - subs r1, r6, 0x1 - cmp r0, 0xFF - beq _080AE454 - adds r3, r4, 0 -_080AE448: - ldrb r0, [r3, 0x1] - strb r0, [r3] - adds r3, 0x1 - ldrb r0, [r3] - cmp r0, 0xFF - bne _080AE448 -_080AE454: - lsls r0, r1, 24 - lsrs r6, r0, 24 - adds r5, r2, 0 - cmp r5, 0x2 - ble _080AE412 - ldr r0, _080AE478 @ =gUnknown_02038694 - ldrb r0, [r0] - bl sub_80AE098 - add sp, 0x40 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AE470: .4byte gUnknown_083C9408 -_080AE474: .4byte gContestMons -_080AE478: .4byte gUnknown_02038694 - thumb_func_end sub_80AE398 - - thumb_func_start sub_80AE47C -sub_80AE47C: @ 80AE47C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _080AE48E - movs r0, 0x3 - b _080AE50A -_080AE48E: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _080AE49E - movs r0, 0x4 - b _080AE50A -_080AE49E: - ldr r0, _080AE4B0 @ =gSpecialVar_ContestCategory - ldrh r0, [r0] - cmp r0, 0x4 - bhi _080AE4F2 - lsls r0, 2 - ldr r1, _080AE4B4 @ =_080AE4B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AE4B0: .4byte gSpecialVar_ContestCategory -_080AE4B4: .4byte _080AE4B8 - .align 2, 0 -_080AE4B8: - .4byte _080AE4CC - .4byte _080AE4D2 - .4byte _080AE4D8 - .4byte _080AE4DE - .4byte _080AE4E4 -_080AE4CC: - adds r0, r4, 0 - movs r1, 0x32 - b _080AE4E8 -_080AE4D2: - adds r0, r4, 0 - movs r1, 0x33 - b _080AE4E8 -_080AE4D8: - adds r0, r4, 0 - movs r1, 0x34 - b _080AE4E8 -_080AE4DE: - adds r0, r4, 0 - movs r1, 0x35 - b _080AE4E8 -_080AE4E4: - adds r0, r4, 0 - movs r1, 0x36 -_080AE4E8: - bl GetMonData - lsls r0, 24 - lsrs r1, r0, 24 - b _080AE4F6 -_080AE4F2: - movs r0, 0 - b _080AE50A -_080AE4F6: - ldr r0, _080AE510 @ =gSpecialVar_ContestRank - adds r2, r1, 0 - ldrh r1, [r0] - movs r0, 0x2 - cmp r2, r1 - bhi _080AE50A - movs r0, 0 - cmp r2, r1 - bcc _080AE50A - movs r0, 0x1 -_080AE50A: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080AE510: .4byte gSpecialVar_ContestRank - thumb_func_end sub_80AE47C - - thumb_func_start sub_80AE514 -sub_80AE514: @ 80AE514 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - movs r5, 0 - ldr r7, _080AE588 @ =gUnknown_083CA308 - adds r0, r7, 0x1 - mov r9, r0 - ldr r6, _080AE58C @ =gUnknown_083CA310 - adds r3, r6, 0x1 - mov r8, r3 -_080AE52C: - ldr r4, _080AE590 @ =gUnknown_02038696 - adds r4, r5, r4 - ldrb r0, [r4] - lsls r0, 1 - adds r1, r0, r7 - ldrb r2, [r1] - mov r3, r9 - adds r1, r0, r3 - ldrb r3, [r1] - adds r0, r6 - ldrb r0, [r0] - adds r0, 0x5 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - ldrb r0, [r4] - lsls r0, 1 - add r0, r8 - ldrb r0, [r0] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldr r0, _080AE594 @ =gUnknown_03004210 - movs r1, 0 - bl FillWindowRect_DefaultPalette - adds r0, r5, 0 - bl sub_80AE5BC - adds r0, r5, 0 - bl sub_80AE6CC - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080AE52C - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AE588: .4byte gUnknown_083CA308 -_080AE58C: .4byte gUnknown_083CA310 -_080AE590: .4byte gUnknown_02038696 -_080AE594: .4byte gUnknown_03004210 - thumb_func_end sub_80AE514 - - thumb_func_start sub_80AE598 -sub_80AE598: @ 80AE598 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r4, r2, 24 - lsrs r4, 24 - ldr r1, _080AE5B8 @ =gUnknown_083CC59C - bl StringCopy - strb r4, [r0] - adds r0, 0x1 - adds r1, r5, 0 - bl StringCopy - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080AE5B8: .4byte gUnknown_083CC59C - thumb_func_end sub_80AE598 - - thumb_func_start sub_80AE5BC -sub_80AE5BC: @ 80AE5BC - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r0, r1, 24 - movs r2, 0xA0 - lsls r2, 20 - adds r1, r2 - lsrs r1, 24 - bl sub_80AE5D4 - pop {r0} - bx r0 - thumb_func_end sub_80AE5BC - - thumb_func_start sub_80AE5D4 -sub_80AE5D4: @ 80AE5D4 - push {r4-r7,lr} - sub sp, 0x8 - adds r2, r1, 0 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _080AE660 @ =gDisplayedStringBattle - ldr r1, _080AE664 @ =gEmptyString_81E72B0 - adds r0, r3, 0 - bl sub_80AE598 - adds r3, r0, 0 - movs r0, 0xFC - strb r0, [r3] - movs r0, 0x6 - strb r0, [r3, 0x1] - movs r0, 0x4 - strb r0, [r3, 0x2] - adds r3, 0x3 - movs r0, 0xBA - strb r0, [r3] - adds r3, 0x1 - ldr r0, _080AE668 @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AE67C - ldr r1, _080AE66C @ =gLinkPlayers - lsls r0, r4, 3 - subs r0, r4 - lsls r2, r0, 2 - adds r0, r2, r1 - ldrh r6, [r0, 0x1A] - cmp r6, 0x1 - bne _080AE67C - adds r1, 0x8 - adds r1, r2, r1 - adds r0, r3, 0 - bl StringCopy - ldr r0, _080AE670 @ =gUnknown_03004210 - ldr r1, _080AE660 @ =gDisplayedStringBattle - ldr r2, _080AE674 @ =gUnknown_02038696 - adds r2, r4, r2 - ldrb r4, [r2] - movs r2, 0x16 - muls r2, r4 - movs r3, 0x94 - lsls r3, 2 - adds r2, r3 - ldr r5, _080AE678 @ =gUnknown_083CA310 - lsls r4, 1 - adds r3, r4, r5 - ldrb r3, [r3] - lsls r3, 27 - movs r7, 0xFB - lsls r7, 24 - adds r3, r7 - lsrs r3, 24 - adds r5, 0x1 - adds r4, r5 - ldrb r4, [r4] - lsls r4, 3 - str r4, [sp] - str r6, [sp, 0x4] - bl sub_8004D04 - b _080AE6B0 - .align 2, 0 -_080AE660: .4byte gDisplayedStringBattle -_080AE664: .4byte gEmptyString_81E72B0 -_080AE668: .4byte gIsLinkContest -_080AE66C: .4byte gLinkPlayers -_080AE670: .4byte gUnknown_03004210 -_080AE674: .4byte gUnknown_02038696 -_080AE678: .4byte gUnknown_083CA310 -_080AE67C: - lsls r1, r4, 6 - ldr r0, _080AE6B8 @ =gUnknown_0203857D - adds r1, r0 - adds r0, r3, 0 - bl StringCopy - ldr r0, _080AE6BC @ =gUnknown_03004210 - ldr r1, _080AE6C0 @ =gDisplayedStringBattle - ldr r2, _080AE6C4 @ =gUnknown_02038696 - adds r2, r4, r2 - ldrb r4, [r2] - movs r2, 0x16 - muls r2, r4 - movs r3, 0x94 - lsls r3, 2 - adds r2, r3 - ldr r5, _080AE6C8 @ =gUnknown_083CA310 - lsls r4, 1 - adds r3, r4, r5 - ldrb r3, [r3] - adds r5, 0x1 - adds r4, r5 - ldrb r4, [r4] - str r4, [sp] - bl sub_8003460 -_080AE6B0: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AE6B8: .4byte gUnknown_0203857D -_080AE6BC: .4byte gUnknown_03004210 -_080AE6C0: .4byte gDisplayedStringBattle -_080AE6C4: .4byte gUnknown_02038696 -_080AE6C8: .4byte gUnknown_083CA310 - thumb_func_end sub_80AE5D4 - - thumb_func_start sub_80AE6CC -sub_80AE6CC: @ 80AE6CC - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r0, r1, 24 - movs r2, 0xA0 - lsls r2, 20 - adds r1, r2 - lsrs r1, 24 - bl sub_80AE6E4 - pop {r0} - bx r0 - thumb_func_end sub_80AE6CC - - thumb_func_start sub_80AE6E4 -sub_80AE6E4: @ 80AE6E4 - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r2, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _080AE75C @ =gDisplayedStringBattle - movs r0, 0xFC - strb r0, [r3] - movs r0, 0x6 - strb r0, [r3, 0x1] - movs r0, 0x4 - strb r0, [r3, 0x2] - adds r3, 0x3 - lsls r1, r4, 6 - ldr r0, _080AE760 @ =gContestMons + 0x2 - adds r1, r0 - adds r0, r3, 0 - bl sub_80AE598 - adds r3, r0, 0 - movs r0, 0xFF - strb r0, [r3] - ldr r0, _080AE764 @ =gUnknown_03004210 - ldr r1, _080AE75C @ =gDisplayedStringBattle - ldr r2, _080AE768 @ =gUnknown_02038696 - adds r4, r2 - ldrb r4, [r4] - lsls r2, r4, 2 - adds r2, r4 - lsls r2, 18 - movs r3, 0x80 - lsls r3, 18 - adds r2, r3 - lsrs r2, 16 - ldr r5, _080AE76C @ =gUnknown_083CA308 - lsls r4, 1 - adds r3, r4, r5 - ldrb r3, [r3] - lsls r3, 27 - movs r6, 0xFD - lsls r6, 24 - adds r3, r6 - lsrs r3, 24 - adds r5, 0x1 - adds r4, r5 - ldrb r4, [r4] - lsls r4, 3 - str r4, [sp] - movs r4, 0x1 - str r4, [sp, 0x4] - bl sub_8004D04 - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AE75C: .4byte gDisplayedStringBattle -_080AE760: .4byte gContestMons + 0x2 -_080AE764: .4byte gUnknown_03004210 -_080AE768: .4byte gUnknown_02038696 -_080AE76C: .4byte gUnknown_083CA308 - thumb_func_end sub_80AE6E4 - - thumb_func_start sub_80AE770 -sub_80AE770: @ 80AE770 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r0, r1, 24 - cmp r0, 0x4 - bhi _080AE7FC - lsls r0, 2 - ldr r1, _080AE788 @ =_080AE78C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AE788: .4byte _080AE78C - .align 2, 0 -_080AE78C: - .4byte _080AE7A0 - .4byte _080AE7B8 - .4byte _080AE7D0 - .4byte _080AE7E0 - .4byte _080AE7FC -_080AE7A0: - ldr r0, _080AE7B4 @ =gContestMons - lsls r2, 6 - adds r1, r2, r0 - adds r3, r1, 0 - adds r3, 0x26 - ldrb r5, [r3] - adds r3, 0x4 - ldrb r4, [r3] - adds r1, 0x27 - b _080AE80E - .align 2, 0 -_080AE7B4: .4byte gContestMons -_080AE7B8: - ldr r0, _080AE7CC @ =gContestMons - lsls r2, 6 - adds r1, r2, r0 - adds r3, r1, 0 - adds r3, 0x27 - ldrb r5, [r3] - subs r3, 0x1 - ldrb r4, [r3] - adds r1, 0x28 - b _080AE80E - .align 2, 0 -_080AE7CC: .4byte gContestMons -_080AE7D0: - ldr r1, _080AE7DC @ =gContestMons - lsls r2, 6 - adds r3, r2, r1 - adds r0, r3, 0 - adds r0, 0x28 - b _080AE7EA - .align 2, 0 -_080AE7DC: .4byte gContestMons -_080AE7E0: - ldr r1, _080AE7F8 @ =gContestMons - lsls r2, 6 - adds r3, r2, r1 - adds r0, r3, 0 - adds r0, 0x29 -_080AE7EA: - ldrb r5, [r0] - subs r0, 0x1 - ldrb r4, [r0] - adds r0, 0x2 - ldrb r3, [r0] - adds r0, r1, 0 - b _080AE810 - .align 2, 0 -_080AE7F8: .4byte gContestMons -_080AE7FC: - ldr r0, _080AE828 @ =gContestMons - lsls r2, 6 - adds r1, r2, r0 - adds r3, r1, 0 - adds r3, 0x2A - ldrb r5, [r3] - subs r3, 0x1 - ldrb r4, [r3] - adds r1, 0x26 -_080AE80E: - ldrb r3, [r1] -_080AE810: - adds r1, r2, r0 - adds r1, 0x2B - adds r0, r4, r3 - ldrb r1, [r1] - adds r0, r1 - asrs r0, 1 - adds r0, r5, r0 - lsls r0, 16 - lsrs r0, 16 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080AE828: .4byte gContestMons - thumb_func_end sub_80AE770 - - thumb_func_start sub_80AE82C -sub_80AE82C: @ 80AE82C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r6, _080AE854 @ =gUnknown_02038670 -_080AE836: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80AE770 - lsls r1, r4, 1 - adds r1, r6 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080AE836 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AE854: .4byte gUnknown_02038670 - thumb_func_end sub_80AE82C - - thumb_func_start sub_80AE858 -sub_80AE858: @ 80AE858 - push {r4,r5,lr} - ldr r0, _080AE8A0 @ =gUnknown_083CA4BC - bl LoadCompressedObjectPic - ldr r0, _080AE8A4 @ =gContest2Pal - movs r1, 0x88 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r0, _080AE8A8 @ =gSpriteTemplate_83CA4A4 - movs r1, 0x70 - movs r2, 0x24 - movs r3, 0x1E - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080AE8AC @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r5, r2, r4 - ldrb r3, [r5, 0x5] - movs r1, 0xF - ands r1, r3 - movs r3, 0x10 - orrs r1, r3 - strb r1, [r5, 0x5] - adds r4, 0x1C - adds r2, r4 - ldr r1, _080AE8B0 @ =SpriteCallbackDummy - str r1, [r2] - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080AE8A0: .4byte gUnknown_083CA4BC -_080AE8A4: .4byte gContest2Pal -_080AE8A8: .4byte gSpriteTemplate_83CA4A4 -_080AE8AC: .4byte gSprites -_080AE8B0: .4byte SpriteCallbackDummy - thumb_func_end sub_80AE858 - - thumb_func_start sub_80AE8B4 -sub_80AE8B4: @ 80AE8B4 - push {lr} - ldr r0, _080AE8F8 @ =gUnknown_083CA4C4 - bl LoadCompressedObjectPic - ldr r0, _080AE8FC @ =gUnknown_083CA4CC - bl LoadCompressedObjectPalette - ldr r0, _080AE900 @ =gUnknown_083CA4D4 - movs r1, 0x60 - movs r2, 0xA - movs r3, 0x1D - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080AE904 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - movs r1, 0x3E - adds r1, r2 - mov r12, r1 - ldrb r1, [r1] - movs r3, 0x4 - orrs r1, r3 - mov r3, r12 - strb r1, [r3] - ldrh r1, [r2, 0x4] - lsls r1, 22 - lsrs r1, 22 - strh r1, [r2, 0x2E] - pop {r1} - bx r1 - .align 2, 0 -_080AE8F8: .4byte gUnknown_083CA4C4 -_080AE8FC: .4byte gUnknown_083CA4CC -_080AE900: .4byte gUnknown_083CA4D4 -_080AE904: .4byte gSprites - thumb_func_end sub_80AE8B4 - - thumb_func_start unref_sub_80AE908 -unref_sub_80AE908: @ 80AE908 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x8 - ldr r0, _080AE9D4 @ =gContestMons - mov r9, r0 - ldr r1, _080AE9D8 @ =gContestPlayerMonIndex - mov r8, r1 - ldrb r0, [r1] - lsls r0, 6 - add r0, r9 - ldrh r5, [r0] - lsls r6, r5, 3 - ldr r0, _080AE9DC @ =gMonFrontPicTable - adds r0, r6, r0 - ldr r2, _080AE9E0 @ =gMonFrontPicCoords - mov r10, r2 - lsls r2, r5, 2 - add r2, r10 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _080AE9E4 @ =gUnknown_081FAF4C - ldr r4, [r4, 0x4] - str r4, [sp] - str r5, [sp, 0x4] - bl DecompressPicFromTable_2 - ldr r0, _080AE9E8 @ =gMonPaletteTable - adds r6, r0 - ldr r0, [r6] - movs r1, 0x88 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - mov r1, r8 - ldrb r0, [r1] - lsls r0, 6 - add r0, r9 - ldrh r0, [r0] - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C - ldr r0, _080AE9EC @ =gUnknown_02024E8C - mov r2, r8 - ldrb r1, [r2] - lsls r1, 6 - add r1, r9 - ldrh r1, [r1] - lsls r1, 2 - add r1, r10 - ldrb r1, [r1] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x70 - movs r3, 0x1E - bl CreateSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _080AE9F0 @ =gSprites - lsls r3, r4, 4 - adds r3, r4 - lsls r3, 2 - adds r0, r3, r5 - ldrb r2, [r0, 0x5] - movs r1, 0xF - ands r1, r2 - movs r2, 0x10 - orrs r1, r2 - strb r1, [r0, 0x5] - adds r1, r5, 0 - adds r1, 0x1C - adds r1, r3, r1 - ldr r2, _080AE9F4 @ =SpriteCallbackDummy - str r2, [r1] - adds r5, 0x10 - adds r3, r5 - ldr r1, _080AE9F8 @ =gSpriteAffineAnimTable_81E7C18 - str r1, [r3] - movs r1, 0 - bl StartSpriteAffineAnim - adds r0, r4, 0 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080AE9D4: .4byte gContestMons -_080AE9D8: .4byte gContestPlayerMonIndex -_080AE9DC: .4byte gMonFrontPicTable -_080AE9E0: .4byte gMonFrontPicCoords -_080AE9E4: .4byte gUnknown_081FAF4C -_080AE9E8: .4byte gMonPaletteTable -_080AE9EC: .4byte gUnknown_02024E8C -_080AE9F0: .4byte gSprites -_080AE9F4: .4byte SpriteCallbackDummy -_080AE9F8: .4byte gSpriteAffineAnimTable_81E7C18 - thumb_func_end unref_sub_80AE908 - - thumb_func_start sub_80AE9FC -sub_80AE9FC: @ 80AE9FC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - mov r8, r1 - adds r6, r2, 0 - lsls r0, 16 - lsrs r0, 16 - bl sub_80B2778 - mov r9, r0 - mov r5, r9 - lsls r0, r5, 3 - ldr r1, _080AEACC @ =gMonBackPicTable - adds r0, r1 - ldr r1, _080AEAD0 @ =gMonBackPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _080AEAD4 @ =gUnknown_081FAF4C - ldr r4, [r4] - str r4, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - bl HandleLoadSpecialPokePic - adds r0, r5, 0 - mov r1, r8 - adds r2, r6, 0 - bl GetMonSpritePalFromOtIdPersonality - movs r1, 0x90 - lsls r1, 1 - movs r2, 0x20 - bl LoadCompressedPalette - adds r0, r5, 0 - movs r1, 0 - bl GetMonSpriteTemplate_803C56C - ldr r4, _080AEAD8 @ =gUnknown_02024E8C - movs r0, 0x2 - adds r1, r5, 0 - movs r2, 0 - bl sub_8077E44 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - movs r1, 0x70 - movs r3, 0x1E - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _080AEADC @ =gSprites - mov r8, r0 - lsls r0, r7, 4 - adds r0, r7 - lsls r6, r0, 2 - mov r0, r8 - adds r4, r6, r0 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - movs r1, 0x20 - orrs r0, r1 - movs r1, 0xD - negs r1, r1 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4, 0x5] - movs r0, 0x2 - bl sub_8079E90 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - mov r0, r8 - adds r0, 0x1C - adds r0, r6, r0 - ldr r1, _080AEAE0 @ =SpriteCallbackDummy - str r1, [r0] - ldrb r0, [r4, 0x5] - lsrs r0, 4 - strh r0, [r4, 0x2E] - strh r5, [r4, 0x32] - adds r0, r5, 0 - bl sub_80AEB1C - lsls r0, 24 - cmp r0, 0 - beq _080AEAE8 - mov r0, r8 - adds r0, 0x10 - adds r0, r6, r0 - ldr r1, _080AEAE4 @ =gSpriteAffineAnimTable_81E7C18 - b _080AEAF0 - .align 2, 0 -_080AEACC: .4byte gMonBackPicTable -_080AEAD0: .4byte gMonBackPicCoords -_080AEAD4: .4byte gUnknown_081FAF4C -_080AEAD8: .4byte gUnknown_02024E8C -_080AEADC: .4byte gSprites -_080AEAE0: .4byte SpriteCallbackDummy -_080AEAE4: .4byte gSpriteAffineAnimTable_81E7C18 -_080AEAE8: - mov r0, r8 - adds r0, 0x10 - adds r0, r6, r0 - ldr r1, _080AEB14 @ =gSpriteAffineAnimTable_81E7BEC -_080AEAF0: - str r1, [r0] - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, _080AEB18 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAffineAnim - adds r0, r7, 0 - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080AEB14: .4byte gSpriteAffineAnimTable_81E7BEC -_080AEB18: .4byte gSprites - thumb_func_end sub_80AE9FC - - thumb_func_start sub_80AEB1C -sub_80AEB1C: @ 80AEB1C - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC9 - beq _080AEB2A - movs r0, 0x1 - b _080AEB2C -_080AEB2A: - movs r0, 0 -_080AEB2C: - pop {r1} - bx r1 - thumb_func_end sub_80AEB1C - - thumb_func_start sub_80AEB30 -sub_80AEB30: @ 80AEB30 - push {lr} - ldr r0, _080AEB44 @ =0x0600c000 - bl sub_80AEB4C - ldr r0, _080AEB48 @ =0x0600e000 - bl sub_80AEB4C - pop {r0} - bx r0 - .align 2, 0 -_080AEB44: .4byte 0x0600c000 -_080AEB48: .4byte 0x0600e000 - thumb_func_end sub_80AEB30 - - thumb_func_start sub_80AEB4C -sub_80AEB4C: @ 80AEB4C - movs r1, 0xA0 - lsls r1, 3 - adds r2, r0, r1 - ldr r1, _080AEB60 @ =0x040000d4 - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _080AEB64 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bx lr - .align 2, 0 -_080AEB60: .4byte 0x040000d4 -_080AEB64: .4byte 0x80000140 - thumb_func_end sub_80AEB4C - - thumb_func_start sub_80AEB68 -sub_80AEB68: @ 80AEB68 - push {lr} - lsls r0, 16 - lsls r1, 24 - lsrs r3, r1, 24 - ldr r2, _080AEB90 @ =gContestEffects - ldr r1, _080AEB94 @ =gContestMoves - lsrs r0, 13 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x8 - bhi _080AEBD0 - lsls r0, 2 - ldr r1, _080AEB98 @ =_080AEB9C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AEB90: .4byte gContestEffects -_080AEB94: .4byte gContestMoves -_080AEB98: .4byte _080AEB9C - .align 2, 0 -_080AEB9C: - .4byte _080AEBC0 - .4byte _080AEBC0 - .4byte _080AEBC8 - .4byte _080AEBC8 - .4byte _080AEBD0 - .4byte _080AEBD0 - .4byte _080AEBD0 - .4byte _080AEBD0 - .4byte _080AEBC0 -_080AEBC0: - ldr r0, _080AEBC4 @ =0x00009082 - b _080AEBD2 - .align 2, 0 -_080AEBC4: .4byte 0x00009082 -_080AEBC8: - ldr r0, _080AEBCC @ =0x00009088 - b _080AEBD2 - .align 2, 0 -_080AEBCC: .4byte 0x00009088 -_080AEBD0: - ldr r0, _080AEBE8 @ =0x00009086 -_080AEBD2: - lsls r1, r3, 12 - movs r2, 0x90 - lsls r2, 8 - adds r1, r2 - lsls r0, 16 - asrs r0, 16 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_080AEBE8: .4byte 0x00009086 - thumb_func_end sub_80AEB68 - - thumb_func_start sub_80AEBEC -sub_80AEBEC: @ 80AEBEC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _080AEC74 @ =gUnknown_03004210 - movs r1, 0x10 - str r1, [sp] - movs r1, 0x22 - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0xB - movs r3, 0x1F - bl FillWindowRect_DefaultPalette - ldr r1, _080AEC78 @ =gContestMoves - lsls r0, r4, 3 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 29 - ldr r1, _080AEC7C @ =0x00004040 - cmp r0, 0 - beq _080AEC34 - adds r1, 0x5 - cmp r0, 0x1 - beq _080AEC34 - adds r1, 0x5 - cmp r0, 0x2 - beq _080AEC34 - adds r1, 0x40 - cmp r0, 0x3 - bne _080AEC34 - subs r1, 0x20 -_080AEC34: - ldr r0, _080AEC74 @ =gUnknown_03004210 - mov r8, r0 - ldr r6, _080AEC78 @ =gContestMoves - lsls r5, r4, 3 - ldr r7, _080AEC80 @ =gContestEffects - ldr r0, _080AEC84 @ =gContestEffectStrings - mov r9, r0 - ldr r4, _080AEC88 @ =0x0600c816 - ldr r3, _080AEC8C @ =0x0600c7d6 - movs r2, 0x4 -_080AEC48: - strh r1, [r3] - adds r0, r1, 0 - adds r0, 0x10 - strh r0, [r4] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - adds r4, 0x2 - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _080AEC48 - adds r0, r5, r6 - ldrb r0, [r0] - lsls r0, 2 - adds r1, r0, r7 - ldrb r0, [r1, 0x1] - cmp r0, 0xFF - bne _080AEC90 - movs r0, 0 - b _080AEC9C - .align 2, 0 -_080AEC74: .4byte gUnknown_03004210 -_080AEC78: .4byte gContestMoves -_080AEC7C: .4byte 0x00004040 -_080AEC80: .4byte gContestEffects -_080AEC84: .4byte gContestEffectStrings -_080AEC88: .4byte 0x0600c816 -_080AEC8C: .4byte 0x0600c7d6 -_080AEC90: - ldrb r0, [r1, 0x1] - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 -_080AEC9C: - cmp r0, 0x8 - bls _080AECA2 - movs r0, 0x8 -_080AECA2: - movs r2, 0 - ldr r1, _080AECB8 @ =0x00005012 - adds r4, r1, 0 - adds r1, 0x23 - adds r3, r1, 0 - ldr r1, _080AECBC @ =0x0600c7ea -_080AECAE: - cmp r2, r0 - bge _080AECC0 - strh r4, [r1] - b _080AECC2 - .align 2, 0 -_080AECB8: .4byte 0x00005012 -_080AECBC: .4byte 0x0600c7ea -_080AECC0: - strh r3, [r1] -_080AECC2: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x7 - ble _080AECAE - adds r0, r5, r6 - ldrb r0, [r0] - lsls r0, 2 - adds r1, r0, r7 - ldrb r0, [r1, 0x2] - cmp r0, 0xFF - bne _080AECDC - movs r0, 0 - b _080AECE8 -_080AECDC: - ldrb r0, [r1, 0x2] - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 -_080AECE8: - cmp r0, 0x8 - bls _080AECEE - movs r0, 0x8 -_080AECEE: - movs r2, 0 - ldr r1, _080AED04 @ =0x00005014 - adds r4, r1, 0 - adds r1, 0x22 - adds r3, r1, 0 - ldr r1, _080AED08 @ =0x0600c82a -_080AECFA: - cmp r2, r0 - bge _080AED0C - strh r4, [r1] - b _080AED0E - .align 2, 0 -_080AED04: .4byte 0x00005014 -_080AED08: .4byte 0x0600c82a -_080AED0C: - strh r3, [r1] -_080AED0E: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x7 - ble _080AECFA - adds r0, r5, r6 - ldrb r0, [r0] - lsls r0, 2 - add r0, r9 - ldr r1, [r0] - movs r2, 0xD9 - lsls r2, 2 - movs r0, 0x23 - str r0, [sp] - mov r0, r8 - movs r3, 0xB - bl sub_8003460 - ldr r1, _080AED50 @ =gUnknown_083CC5A2 - ldr r2, _080AED54 @ =0x00000362 - movs r0, 0x1F - str r0, [sp] - mov r0, r8 - movs r3, 0x10 - bl sub_8003460 - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AED50: .4byte gUnknown_083CC5A2 -_080AED54: .4byte 0x00000362 - thumb_func_end sub_80AEBEC - - thumb_func_start sub_80AED58 -sub_80AED58: @ 80AED58 - push {lr} - sub sp, 0x8 - ldr r0, _080AED78 @ =gUnknown_03004210 - movs r1, 0x1C - str r1, [sp] - movs r1, 0x28 - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0xB - movs r3, 0x23 - bl FillWindowRect_DefaultPalette - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_080AED78: .4byte gUnknown_03004210 - thumb_func_end sub_80AED58 - - thumb_func_start sub_80AED7C -sub_80AED7C: @ 80AED7C - push {r4-r6,lr} - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r0, _080AEDD8 @ =gUnknown_02038696 - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - adds r0, 0x2 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - bl sub_80AF59C - lsls r0, 24 - cmp r0, 0 - bne _080AEDEC - cmp r6, 0 - beq _080AEDEC - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80AEB68 - lsls r0, 16 - lsrs r0, 16 - lsls r3, r5, 6 - ldr r1, _080AEDDC @ =0x0600c028 - adds r1, r3, r1 - strh r0, [r1] - ldr r1, _080AEDE0 @ =0x0600c02a - adds r1, r3, r1 - adds r2, r0, 0x1 - strh r2, [r1] - ldr r1, _080AEDE4 @ =0x0600c068 - adds r2, r3, r1 - adds r1, r0, 0 - adds r1, 0x10 - strh r1, [r2] - ldr r1, _080AEDE8 @ =0x0600c06a - adds r3, r1 - adds r0, 0x11 - strh r0, [r3] - b _080AEE08 - .align 2, 0 -_080AEDD8: .4byte gUnknown_02038696 -_080AEDDC: .4byte 0x0600c028 -_080AEDE0: .4byte 0x0600c02a -_080AEDE4: .4byte 0x0600c068 -_080AEDE8: .4byte 0x0600c06a -_080AEDEC: - lsls r1, r5, 6 - ldr r0, _080AEE10 @ =0x0600c028 - adds r0, r1, r0 - movs r2, 0 - strh r2, [r0] - ldr r0, _080AEE14 @ =0x0600c02a - adds r0, r1, r0 - strh r2, [r0] - ldr r3, _080AEE18 @ =0x0600c068 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, _080AEE1C @ =0x0600c06a - adds r1, r0 - strh r2, [r1] -_080AEE08: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AEE10: .4byte 0x0600c028 -_080AEE14: .4byte 0x0600c02a -_080AEE18: .4byte 0x0600c068 -_080AEE1C: .4byte 0x0600c06a - thumb_func_end sub_80AED7C - - thumb_func_start unref_sub_80AEE20 -unref_sub_80AEE20: @ 80AEE20 - push {r4,lr} - movs r4, 0 -_080AEE24: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r1, _080AEE48 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrh r0, [r0, 0x6] - adds r1, r4, 0 - bl sub_80AED7C - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080AEE24 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AEE48: .4byte gSharedMem + 0x19260 - thumb_func_end unref_sub_80AEE20 - - thumb_func_start sub_80AEE4C -sub_80AEE4C: @ 80AEE4C - ldr r0, _080AEE50 @ =0x00002034 - bx lr - .align 2, 0 -_080AEE50: .4byte 0x00002034 - thumb_func_end sub_80AEE4C - - thumb_func_start sub_80AEE54 -sub_80AEE54: @ 80AEE54 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - lsls r5, r7, 3 - subs r0, r5, r7 - lsls r0, 2 - ldr r1, _080AEE84 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r0, [r0, 0x10] - movs r2, 0x30 - ands r2, r0 - mov r10, r1 - cmp r2, 0 - bne _080AEE88 - movs r0, 0 - b _080AEF3C - .align 2, 0 -_080AEE84: .4byte gSharedMem + 0x19260 -_080AEE88: - ldr r0, _080AEEB0 @ =gUnknown_02038696 - adds r0, r7, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - adds r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r2, 0x10 - bne _080AEEF0 - adds r0, r7, 0 - bl sub_80AEE4C - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - movs r4, 0 - adds r6, r5, 0 - b _080AEEC4 - .align 2, 0 -_080AEEB0: .4byte gUnknown_02038696 -_080AEEB4: - mov r1, r9 - adds r0, r1, r4 - lsls r0, 6 - ldr r1, _080AEEE8 @ =0x0600c026 - adds r0, r1 - mov r1, r8 - strh r1, [r0] - adds r4, 0x1 -_080AEEC4: - subs r0, r6, r7 - lsls r0, 2 - ldr r1, _080AEEEC @ =gSharedMem + 0x19260 - adds r5, r0, r1 - movs r0, 0xD - ldrsb r0, [r5, r0] - movs r1, 0xA - bl __divsi3 - lsls r0, 24 - asrs r0, 24 - cmp r0, r4 - bgt _080AEEB4 - ldr r0, [sp] - cmp r0, 0 - beq _080AEF3A - movs r0, 0x5B - b _080AEF2C - .align 2, 0 -_080AEEE8: .4byte 0x0600c026 -_080AEEEC: .4byte gSharedMem + 0x19260 -_080AEEF0: - movs r1, 0 - mov r8, r1 - movs r4, 0x3 - adds r6, r5, 0 - b _080AEF0A -_080AEEFA: - mov r1, r9 - adds r0, r1, r4 - lsls r0, 6 - ldr r1, _080AEF4C @ =0x0600bfe6 - adds r0, r1 - mov r1, r8 - strh r1, [r0] - subs r4, 0x1 -_080AEF0A: - subs r0, r6, r7 - lsls r0, 2 - mov r1, r10 - adds r5, r0, r1 - movs r0, 0xD - ldrsb r0, [r5, r0] - movs r1, 0xA - bl __divsi3 - lsls r0, 24 - asrs r0, 24 - cmp r0, r4 - blt _080AEEFA - ldr r0, [sp] - cmp r0, 0 - beq _080AEF3A - movs r0, 0x26 -_080AEF2C: - bl PlaySE - ldrb r1, [r5, 0x10] - movs r0, 0x31 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x10] -_080AEF3A: - movs r0, 0x1 -_080AEF3C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080AEF4C: .4byte 0x0600bfe6 - thumb_func_end sub_80AEE54 - - thumb_func_start sub_80AEF50 -sub_80AEF50: @ 80AEF50 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r5, 0 -_080AEF5A: - ldr r0, _080AEF80 @ =gUnknown_02038696 - adds r0, r5, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - adds r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r0, r5, 24 - lsrs r0, 24 - bl sub_80AEE4C - lsls r0, 16 - lsrs r6, r0, 16 - movs r4, 0 - lsls r7, r5, 3 - adds r2, r5, 0x1 - b _080AEF92 - .align 2, 0 -_080AEF80: .4byte gUnknown_02038696 -_080AEF84: - mov r1, r8 - adds r0, r1, r4 - lsls r0, 6 - ldr r3, _080AEFE0 @ =0x0600c026 - adds r0, r3 - strh r6, [r0] - adds r4, 0x1 -_080AEF92: - subs r0, r7, r5 - lsls r0, 2 - ldr r1, _080AEFE4 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r0, [r0, 0xD] - lsls r0, 24 - asrs r0, 24 - movs r1, 0xA - str r2, [sp] - bl __divsi3 - lsls r0, 24 - asrs r0, 24 - ldr r2, [sp] - cmp r4, r0 - blt _080AEF84 - movs r6, 0 - cmp r4, 0x2 - bgt _080AEFCE - lsls r0, r4, 6 - ldr r1, _080AEFE0 @ =0x0600c026 - adds r0, r1 - mov r3, r8 - lsls r1, r3, 6 - adds r0, r1 -_080AEFC4: - strh r6, [r0] - adds r0, 0x40 - adds r4, 0x1 - cmp r4, 0x2 - ble _080AEFC4 -_080AEFCE: - adds r5, r2, 0 - cmp r5, 0x3 - ble _080AEF5A - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AEFE0: .4byte 0x0600c026 -_080AEFE4: .4byte gSharedMem + 0x19260 - thumb_func_end sub_80AEF50 - - thumb_func_start sub_80AEFE8 -sub_80AEFE8: @ 80AEFE8 - push {lr} - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - cmp r1, 0x4 - bhi _080AF02A - lsls r0, r1, 2 - ldr r1, _080AF000 @ =_080AF004 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080AF000: .4byte _080AF004 - .align 2, 0 -_080AF004: - .4byte _080AF018 - .4byte _080AF01C - .4byte _080AF020 - .4byte _080AF024 - .4byte _080AF028 -_080AF018: - movs r0, 0x80 - b _080AF02A -_080AF01C: - movs r0, 0x84 - b _080AF02A -_080AF020: - movs r0, 0x86 - b _080AF02A -_080AF024: - movs r0, 0x88 - b _080AF02A -_080AF028: - movs r0, 0x82 -_080AF02A: - movs r1, 0x90 - lsls r1, 8 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80AEFE8 - - thumb_func_start sub_80AF038 -sub_80AF038: @ 80AF038 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r5, 0x1 - movs r4, 0 - ldr r0, _080AF074 @ =gUnknown_02038696 - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - adds r0, 0x2 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - ldr r1, _080AF078 @ =gSharedMem + 0x19260 - adds r2, r0, r1 - ldr r0, [r2, 0x10] - ldr r1, _080AF07C @ =0x00ff0003 - ands r0, r1 - cmp r0, 0 - bne _080AF06C - ldrb r0, [r2, 0xF] - cmp r0, 0 - beq _080AF080 -_080AF06C: - adds r0, r3, 0 - movs r1, 0 - b _080AF0A6 - .align 2, 0 -_080AF074: .4byte gUnknown_02038696 -_080AF078: .4byte gSharedMem + 0x19260 -_080AF07C: .4byte 0x00ff0003 -_080AF080: - ldrb r1, [r2, 0xC] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080AF090 - adds r0, r3, 0 - movs r1, 0x1 - b _080AF0A6 -_080AF090: - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - bne _080AF0A2 - ldrb r1, [r2, 0xB] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080AF0B0 -_080AF0A2: - adds r0, r3, 0 - movs r1, 0x2 -_080AF0A6: - bl sub_80AEFE8 - lsls r0, 16 - lsrs r4, r0, 16 - b _080AF0B2 -_080AF0B0: - movs r5, 0 -_080AF0B2: - cmp r5, 0 - beq _080AF0EC - lsls r2, r6, 6 - ldr r0, _080AF0DC @ =0x0600c028 - adds r0, r2, r0 - strh r4, [r0] - ldr r0, _080AF0E0 @ =0x0600c02a - adds r0, r2, r0 - adds r1, r4, 0x1 - strh r1, [r0] - ldr r0, _080AF0E4 @ =0x0600c068 - adds r1, r2, r0 - adds r0, r4, 0 - adds r0, 0x10 - strh r0, [r1] - ldr r0, _080AF0E8 @ =0x0600c06a - adds r2, r0 - adds r0, r4, 0 - adds r0, 0x11 - strh r0, [r2] - b _080AF106 - .align 2, 0 -_080AF0DC: .4byte 0x0600c028 -_080AF0E0: .4byte 0x0600c02a -_080AF0E4: .4byte 0x0600c068 -_080AF0E8: .4byte 0x0600c06a -_080AF0EC: - lsls r1, r6, 6 - ldr r0, _080AF110 @ =0x0600c028 - adds r0, r1, r0 - strh r5, [r0] - ldr r0, _080AF114 @ =0x0600c02a - adds r0, r1, r0 - strh r5, [r0] - ldr r2, _080AF118 @ =0x0600c068 - adds r0, r1, r2 - strh r5, [r0] - ldr r0, _080AF11C @ =0x0600c06a - adds r1, r0 - strh r5, [r1] -_080AF106: - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080AF110: .4byte 0x0600c028 -_080AF114: .4byte 0x0600c02a -_080AF118: .4byte 0x0600c068 -_080AF11C: .4byte 0x0600c06a - thumb_func_end sub_80AF038 - - thumb_func_start sub_80AF120 -sub_80AF120: @ 80AF120 - push {r4,lr} - movs r4, 0 -_080AF124: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80AF038 - adds r4, 0x1 - cmp r4, 0x3 - ble _080AF124 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AF120 - - thumb_func_start sub_80AF138 -sub_80AF138: @ 80AF138 - push {lr} - sub sp, 0x8 - ldr r0, _080AF158 @ =gUnknown_03004210 - movs r1, 0x11 - str r1, [sp] - movs r1, 0x12 - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0x1 - movs r3, 0xF - bl FillWindowRect_DefaultPalette - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_080AF158: .4byte gUnknown_03004210 - thumb_func_end sub_80AF138 - - thumb_func_start sub_80AF15C -sub_80AF15C: @ 80AF15C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - adds r0, r4, 0 - bl sub_80AF59C - lsls r0, 24 - cmp r0, 0 - beq _080AF174 - movs r0, 0 - b _080AF1AA -_080AF174: - ldr r0, _080AF190 @ =gContestPlayerMonIndex - ldrb r0, [r0] - cmp r4, r0 - beq _080AF198 - adds r0, r4, 0 - bl sub_81288F4 - bl sub_8128944 - lsls r0, 24 - ldr r2, _080AF194 @ =gContestMons - lsrs r0, 23 - lsls r1, r4, 6 - b _080AF1A2 - .align 2, 0 -_080AF190: .4byte gContestPlayerMonIndex -_080AF194: .4byte gContestMons -_080AF198: - ldr r2, _080AF1B0 @ =gContestMons - ldr r0, _080AF1B4 @ =gSharedMem + 0x19204 - ldrb r0, [r0] - lsls r0, 1 - lsls r1, r5, 6 -_080AF1A2: - adds r0, r1 - adds r2, 0x1E - adds r0, r2 - ldrh r0, [r0] -_080AF1AA: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080AF1B0: .4byte gContestMons -_080AF1B4: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80AF15C - - thumb_func_start sub_80AF1B8 -sub_80AF1B8: @ 80AF1B8 - push {r4,lr} - movs r4, 0 -_080AF1BC: - adds r0, r4, 0 - bl sub_80AF15C - lsls r1, r4, 3 - subs r1, r4 - lsls r1, 2 - ldr r2, _080AF1E0 @ =gSharedMem + 0x19260 - adds r1, r2 - strh r0, [r1, 0x6] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080AF1BC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AF1E0: .4byte gSharedMem + 0x19260 - thumb_func_end sub_80AF1B8 - - thumb_func_start sub_80AF1E4 -sub_80AF1E4: @ 80AF1E4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - cmp r1, 0 - bne _080AF1FC - adds r0, r5, 0 - adds r0, 0xA - lsls r0, 24 - lsrs r3, r0, 24 - b _080AF1FE -_080AF1FC: - movs r3, 0xE -_080AF1FE: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - ldr r1, _080AF21C @ =gSharedMem + 0x19260 - adds r1, r0, r1 - ldrh r0, [r1, 0x6] - cmp r0, 0 - bne _080AF228 - ldr r0, _080AF220 @ =gDisplayedStringBattle - ldr r1, _080AF224 @ =gUnknownText_MissedTurn - adds r2, r3, 0 - bl sub_80AE598 - b _080AF23A - .align 2, 0 -_080AF21C: .4byte gSharedMem + 0x19260 -_080AF220: .4byte gDisplayedStringBattle -_080AF224: .4byte gUnknownText_MissedTurn -_080AF228: - ldr r0, _080AF270 @ =gDisplayedStringBattle - ldrh r2, [r1, 0x6] - movs r1, 0xD - muls r1, r2 - ldr r2, _080AF274 @ =gMoveNames - adds r1, r2 - adds r2, r3, 0 - bl sub_80AE598 -_080AF23A: - adds r0, r5, 0 - bl sub_80AF2A0 - ldr r0, _080AF278 @ =gUnknown_03004210 - ldr r1, _080AF270 @ =gDisplayedStringBattle - lsls r2, r5, 2 - adds r2, r5 - lsls r2, 18 - movs r3, 0xAE - lsls r3, 18 - adds r2, r3 - lsrs r2, 16 - ldr r4, _080AF27C @ =gUnknown_083CA318 - lsls r5, 1 - adds r3, r5, r4 - ldrb r3, [r3] - adds r4, 0x1 - adds r5, r4 - ldrb r4, [r5] - str r4, [sp] - bl sub_8003460 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AF270: .4byte gDisplayedStringBattle -_080AF274: .4byte gMoveNames -_080AF278: .4byte gUnknown_03004210 -_080AF27C: .4byte gUnknown_083CA318 - thumb_func_end sub_80AF1E4 - - thumb_func_start unref_sub_80AF280 -unref_sub_80AF280: @ 80AF280 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 -_080AF288: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80AF1E4 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080AF288 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end unref_sub_80AF280 - - thumb_func_start sub_80AF2A0 -sub_80AF2A0: @ 80AF2A0 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - ldr r4, _080AF2D8 @ =gUnknown_03004210 - ldr r1, _080AF2DC @ =gUnknown_083CA318 - lsrs r0, 23 - adds r2, r0, r1 - ldrb r2, [r2] - adds r1, 0x1 - adds r0, r1 - ldrb r3, [r0] - adds r0, r2, 0x7 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r1, 0 - bl FillWindowRect_DefaultPalette - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AF2D8: .4byte gUnknown_03004210 -_080AF2DC: .4byte gUnknown_083CA318 - thumb_func_end sub_80AF2A0 - - thumb_func_start unref_sub_80AF2E0 -unref_sub_80AF2E0: @ 80AF2E0 - push {r4,lr} - movs r4, 0 -_080AF2E4: - adds r0, r4, 0 - bl sub_80AF2A0 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080AF2E4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end unref_sub_80AF2E0 - - thumb_func_start sub_80AF2FC -sub_80AF2FC: @ 80AF2FC - push {r4-r7,lr} - sub sp, 0x8 - movs r4, 0 - ldr r2, _080AF398 @ =gSharedMem + 0x19260 -_080AF304: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x2] - ldrh r3, [r0, 0x4] - adds r1, r3 - strh r1, [r0, 0x4] - lsls r0, r4, 1 - add r0, sp - strh r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080AF304 - movs r4, 0 -_080AF326: - movs r2, 0x3 - cmp r2, r4 - bls _080AF354 -_080AF32C: - subs r5, r2, 0x1 - lsls r0, r5, 1 - mov r7, sp - adds r3, r7, r0 - lsls r0, r2, 1 - adds r2, r7, r0 - ldrh r6, [r3] - movs r0, 0 - ldrsh r1, [r3, r0] - movs r7, 0 - ldrsh r0, [r2, r7] - cmp r1, r0 - bge _080AF34C - ldrh r0, [r2] - strh r6, [r2] - strh r0, [r3] -_080AF34C: - lsls r0, r5, 24 - lsrs r2, r0, 24 - cmp r2, r4 - bhi _080AF32C -_080AF354: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _080AF326 - movs r4, 0 - ldr r0, _080AF398 @ =gSharedMem + 0x19260 - mov r12, r0 - movs r7, 0x4 - negs r7, r7 - movs r6, 0x3 -_080AF36A: - movs r2, 0 - lsls r0, r4, 3 - adds r5, r4, 0x1 - subs r0, r4 - lsls r0, 2 - mov r1, r12 - adds r3, r0, r1 - movs r4, 0x4 - ldrsh r1, [r3, r4] -_080AF37C: - lsls r0, r2, 1 - add r0, sp - movs r4, 0 - ldrsh r0, [r0, r4] - cmp r1, r0 - bne _080AF39C - ands r2, r6 - ldrb r1, [r3, 0xB] - adds r0, r7, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0xB] - b _080AF3A6 - .align 2, 0 -_080AF398: .4byte gSharedMem + 0x19260 -_080AF39C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080AF37C -_080AF3A6: - lsls r0, r5, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080AF36A - movs r0, 0x1 - bl sub_80B0F28 - bl sub_80B159C - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80AF2FC - - thumb_func_start sub_80AF3C0 -sub_80AF3C0: @ 80AF3C0 - push {lr} - ldr r2, _080AF3D0 @ =gSharedMem + 0x19260 - adds r3, r2, 0 -_080AF3C6: - ldrh r0, [r2, 0x6] - cmp r0, 0 - bne _080AF3D4 - movs r1, 0x5 - b _080AF3F2 - .align 2, 0 -_080AF3D0: .4byte gSharedMem + 0x19260 -_080AF3D4: - movs r1, 0x2 - ldrsh r0, [r2, r1] - movs r1, 0 - cmp r0, 0 - ble _080AF3F2 - movs r1, 0x1 - cmp r0, 0x1D - ble _080AF3F2 - movs r1, 0x2 - cmp r0, 0x3B - ble _080AF3F2 - movs r1, 0x4 - cmp r0, 0x4F - bgt _080AF3F2 - movs r1, 0x3 -_080AF3F2: - strb r1, [r2, 0x1A] - adds r2, 0x1C - adds r0, r3, 0 - adds r0, 0x54 - cmp r2, r0 - ble _080AF3C6 - pop {r0} - bx r0 - thumb_func_end sub_80AF3C0 - - thumb_func_start sub_80AF404 -sub_80AF404: @ 80AF404 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _080AF42C @ =gSharedMem + 0x19260 - adds r2, r1, r0 - ldrb r1, [r2, 0xC] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - bne _080AF428 - ldrb r1, [r2, 0xB] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080AF430 -_080AF428: - movs r0, 0 - b _080AF432 - .align 2, 0 -_080AF42C: .4byte gSharedMem + 0x19260 -_080AF430: - movs r0, 0x1 -_080AF432: - pop {r1} - bx r1 - thumb_func_end sub_80AF404 - - thumb_func_start sub_80AF438 -sub_80AF438: @ 80AF438 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r5, 0 - ldr r0, _080AF594 @ =gSharedMem + 0x19260 - mov r10, r0 - movs r1, 0 - mov r12, r1 - movs r0, 0x7 - negs r0, r0 - mov r9, r0 - movs r1, 0x2 - negs r1, r1 - mov r8, r1 -_080AF458: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - mov r1, r10 - adds r3, r0, r1 - movs r0, 0 - strh r0, [r3, 0x2] - strh r0, [r3] - mov r0, r12 - strb r0, [r3, 0x12] - ldrb r2, [r3, 0xC] - movs r0, 0x6 - ands r0, r2 - cmp r0, 0 - beq _080AF48A - lsls r0, r2, 29 - lsrs r0, 30 - subs r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 1 - mov r1, r9 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0xC] -_080AF48A: - mov r1, r12 - strb r1, [r3, 0xE] - ldrb r0, [r3, 0x10] - mov r1, r8 - ands r1, r0 - mov r0, r12 - strb r0, [r3, 0xF] - movs r0, 0x3 - negs r0, r0 - ands r1, r0 - movs r6, 0x5 - negs r6, r6 - ands r1, r6 - movs r7, 0x9 - negs r7, r7 - ands r1, r7 - ldrb r0, [r3, 0xC] - mov r4, r8 - ands r4, r0 - strb r4, [r3, 0xC] - movs r0, 0xFF - strb r0, [r3, 0x13] - movs r0, 0x1 - negs r0, r0 - strb r0, [r3, 0x14] - subs r0, 0x30 - ands r1, r0 - strb r1, [r3, 0x10] - ldrb r2, [r3, 0x15] - lsls r1, r2, 31 - lsrs r1, 31 - lsls r1, 2 - adds r0, r6, 0 - ands r0, r2 - orrs r0, r1 - mov r1, r8 - ands r0, r1 - strb r0, [r3, 0x15] - ldrb r0, [r3, 0x11] - movs r2, 0x4 - negs r2, r2 - ands r2, r0 - movs r0, 0x21 - negs r0, r0 - ands r2, r0 - strb r2, [r3, 0x11] - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - beq _080AF500 - adds r0, r4, 0 - mov r1, r9 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3, 0xC] - adds r0, r2, 0 - ands r0, r6 - strb r0, [r3, 0x11] -_080AF500: - ldrb r2, [r3, 0x11] - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _080AF518 - ldrb r0, [r3, 0xB] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r3, 0xB] - adds r0, r7, 0 - ands r0, r2 - strb r0, [r3, 0x11] -_080AF518: - ldrb r0, [r3, 0x11] - movs r1, 0x11 - negs r1, r1 - ands r1, r0 - strb r1, [r3, 0x11] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080AF458 - movs r5, 0 - mov r6, r10 - mov r9, r5 - adds r7, r6, 0 - subs r7, 0x5C - movs r0, 0x18 - negs r0, r0 - adds r0, r6 - mov r8, r0 -_080AF53E: - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - adds r4, r6 - ldrh r2, [r4, 0x6] - strh r2, [r4, 0x8] - lsls r1, r5, 1 - ldrb r0, [r7, 0x1] - lsls r0, 3 - adds r1, r0 - adds r0, r6, 0 - subs r0, 0x40 - adds r0, r1 - strh r2, [r0] - ldrh r0, [r4, 0x6] - bl contest_get_move_excitement - ldrb r1, [r7, 0x1] - lsls r1, 2 - adds r1, r5, r1 - add r1, r8 - strb r0, [r1] - mov r1, r9 - strh r1, [r4, 0x6] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080AF53E - ldr r2, _080AF598 @ =gSharedMem + 0x19328 - ldrb r1, [r2, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AF594: .4byte gSharedMem + 0x19260 -_080AF598: .4byte gSharedMem + 0x19328 - thumb_func_end sub_80AF438 - - thumb_func_start sub_80AF59C -sub_80AF59C: @ 80AF59C - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _080AF5C4 @ =gSharedMem + 0x19260 - adds r2, r1, r0 - ldrb r1, [r2, 0xC] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - bne _080AF5C0 - ldrb r1, [r2, 0xB] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080AF5C8 -_080AF5C0: - movs r0, 0x1 - b _080AF5CA - .align 2, 0 -_080AF5C4: .4byte gSharedMem + 0x19260 -_080AF5C8: - movs r0, 0 -_080AF5CA: - pop {r1} - bx r1 - thumb_func_end sub_80AF59C - - thumb_func_start unref_sub_80AF5D0 -unref_sub_80AF5D0: @ 80AF5D0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - ldr r1, _080AF5E8 @ =gContestPlayerMonIndex - ldrb r1, [r1] - cmp r0, r1 - beq _080AF600 -_080AF5E2: - movs r0, 0x1 - b _080AF626 - .align 2, 0 -_080AF5E8: .4byte gContestPlayerMonIndex -_080AF5EC: - ldrb r0, [r4, 0x6] - movs r1, 0x1 - b _080AF5F6 -_080AF5F2: - ldrb r0, [r4, 0x6] - movs r1, 0x2 -_080AF5F6: - orrs r0, r1 - strb r0, [r4, 0x6] - b _080AF5E2 -_080AF5FC: - strb r3, [r2] - b _080AF5E2 -_080AF600: - movs r0, 0 - ldr r4, _080AF62C @ =gSharedMem + 0x19204 - adds r5, r4, 0x2 -_080AF606: - cmp r3, 0x3 - beq _080AF5EC - cmp r3, 0x4 - beq _080AF5F2 - adds r2, r0, r5 - ldrb r1, [r2] - cmp r1, r3 - beq _080AF5E2 - cmp r1, 0xFF - beq _080AF5FC - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _080AF606 - movs r0, 0 -_080AF626: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080AF62C: .4byte gSharedMem + 0x19204 - thumb_func_end unref_sub_80AF5D0 - - thumb_func_start sub_80AF630 -sub_80AF630: @ 80AF630 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80AF688 - ldr r1, _080AF65C @ =gUnknown_02038688 - lsls r4, 1 - adds r1, r4, r1 - strh r0, [r1] - ldr r2, _080AF660 @ =gUnknown_02038678 - adds r2, r4, r2 - ldr r1, _080AF664 @ =gUnknown_02038670 - adds r4, r1 - ldrh r4, [r4] - adds r0, r4 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AF65C: .4byte gUnknown_02038688 -_080AF660: .4byte gUnknown_02038678 -_080AF664: .4byte gUnknown_02038670 - thumb_func_end sub_80AF630 - - thumb_func_start sub_80AF668 -sub_80AF668: @ 80AF668 - push {r4,lr} - movs r4, 0 -_080AF66C: - adds r0, r4, 0 - bl sub_80AF630 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080AF66C - bl sub_80AF6A0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AF668 - - thumb_func_start sub_80AF688 -sub_80AF688: @ 80AF688 - lsls r0, 24 - ldr r1, _080AF69C @ =gUnknown_02038680 - lsrs r0, 23 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - lsls r0, 17 - asrs r0, 16 - bx lr - .align 2, 0 -_080AF69C: .4byte gUnknown_02038680 - thumb_func_end sub_80AF688 - - thumb_func_start sub_80AF6A0 -sub_80AF6A0: @ 80AF6A0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x70 - mov r0, sp - movs r1, 0 - movs r2, 0x8 - bl memset - movs r0, 0 - mov r9, r0 - mov r1, sp - adds r1, 0x8 - str r1, [sp, 0x64] - mov r3, sp - adds r3, 0xC - str r3, [sp, 0x68] - mov r6, sp - adds r6, 0x14 - str r6, [sp, 0x6C] - mov r4, sp -_080AF6CE: - bl Random - strh r0, [r4] - movs r2, 0 - cmp r2, r9 - bge _080AF70C - mov r1, sp - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1] - cmp r0, r1 - bne _080AF6F0 - subs r4, 0x2 - movs r7, 0x1 - negs r7, r7 - add r9, r7 - b _080AF70C -_080AF6F0: - adds r2, 0x1 - cmp r2, r9 - bge _080AF70C - lsls r0, r2, 1 - mov r3, sp - adds r1, r3, r0 - ldrh r0, [r4] - ldrh r1, [r1] - cmp r0, r1 - bne _080AF6F0 - subs r4, 0x2 - movs r6, 0x1 - negs r6, r6 - add r9, r6 -_080AF70C: - adds r4, 0x2 - movs r7, 0x1 - add r9, r7 - mov r0, r9 - cmp r0, 0x3 - ble _080AF6CE - movs r1, 0 - mov r9, r1 - mov r4, sp - ldr r6, _080AF81C @ =gUnknown_02038678 - ldr r2, [sp, 0x64] - ldr r5, _080AF820 @ =gUnknown_02038670 - ldr r3, [sp, 0x68] -_080AF726: - mov r7, r9 - lsls r1, r7, 4 - movs r7, 0 - ldrsh r0, [r6, r7] - str r0, [r2] - movs r7, 0 - ldrsh r0, [r5, r7] - str r0, [r3] - ldrh r0, [r4] - str r0, [r2, 0x8] - ldr r0, [sp, 0x6C] - adds r1, r0, r1 - mov r7, r9 - str r7, [r1] - adds r4, 0x2 - adds r6, 0x2 - adds r2, 0x10 - adds r5, 0x2 - adds r3, 0x10 - movs r0, 0x1 - add r9, r0 - mov r1, r9 - cmp r1, 0x3 - ble _080AF726 - movs r3, 0 - mov r9, r3 -_080AF75A: - movs r4, 0x3 - cmp r4, r9 - ble _080AF7E4 - add r7, sp, 0x48 - ldr r6, [sp, 0x68] - str r6, [sp, 0x58] - ldr r0, [sp, 0x64] - adds r0, 0x8 - str r0, [sp, 0x5C] - ldr r1, [sp, 0x6C] - str r1, [sp, 0x60] -_080AF770: - subs r3, r4, 0x1 - mov r10, r3 - mov r0, r10 - adds r1, r4, 0 - ldr r2, [sp, 0x64] - bl sub_80AF828 - lsls r0, 24 - cmp r0, 0 - beq _080AF7DE - mov r6, r10 - lsls r2, r6, 4 - ldr r0, [sp, 0x64] - adds r3, r0, r2 - ldr r0, [r3] - str r0, [sp, 0x48] - ldr r1, [sp, 0x58] - adds r6, r1, r2 - ldr r0, [r6] - str r0, [r7, 0x4] - ldr r0, [sp, 0x5C] - adds r0, r2 - mov r8, r0 - ldr r0, [r0] - str r0, [r7, 0x8] - ldr r1, [sp, 0x60] - adds r2, r1, r2 - ldr r0, [r2] - str r0, [r7, 0xC] - lsls r1, r4, 4 - ldr r0, [sp, 0x64] - adds r5, r0, r1 - ldr r0, [r5] - str r0, [r3] - ldr r3, [sp, 0x58] - adds r4, r3, r1 - ldr r0, [r4] - str r0, [r6] - ldr r6, [sp, 0x5C] - adds r3, r6, r1 - ldr r0, [r3] - mov r6, r8 - str r0, [r6] - ldr r0, [sp, 0x60] - adds r1, r0, r1 - ldr r0, [r1] - str r0, [r2] - ldr r0, [sp, 0x48] - str r0, [r5] - ldr r0, [r7, 0x4] - str r0, [r4] - ldr r0, [r7, 0x8] - str r0, [r3] - ldr r0, [r7, 0xC] - str r0, [r1] -_080AF7DE: - mov r4, r10 - cmp r4, r9 - bgt _080AF770 -_080AF7E4: - movs r1, 0x1 - add r9, r1 - mov r3, r9 - cmp r3, 0x2 - ble _080AF75A - movs r6, 0 - mov r9, r6 - ldr r2, _080AF824 @ =gUnknown_02038690 - ldr r1, [sp, 0x6C] -_080AF7F6: - ldr r0, [r1] - adds r0, r2 - mov r7, r9 - strb r7, [r0] - adds r1, 0x10 - movs r0, 0x1 - add r9, r0 - mov r3, r9 - cmp r3, 0x3 - ble _080AF7F6 - add sp, 0x70 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AF81C: .4byte gUnknown_02038678 -_080AF820: .4byte gUnknown_02038670 -_080AF824: .4byte gUnknown_02038690 - thumb_func_end sub_80AF6A0 - - thumb_func_start sub_80AF828 -sub_80AF828: @ 80AF828 - push {lr} - lsls r0, 4 - adds r0, r2 - lsls r1, 4 - adds r3, r1, r2 - ldr r2, [r0] - ldr r1, [r3] - cmp r2, r1 - blt _080AF858 - cmp r2, r1 - bgt _080AF84A - ldr r2, [r0, 0x4] - ldr r1, [r3, 0x4] - cmp r2, r1 - blt _080AF858 - cmp r2, r1 - ble _080AF84E -_080AF84A: - movs r2, 0 - b _080AF85A -_080AF84E: - ldr r1, [r0, 0x8] - ldr r0, [r3, 0x8] - movs r2, 0 - cmp r1, r0 - bge _080AF85A -_080AF858: - movs r2, 0x1 -_080AF85A: - adds r0, r2, 0 - pop {r1} - bx r1 - thumb_func_end sub_80AF828 - - thumb_func_start sub_80AF860 -sub_80AF860: @ 80AF860 - push {lr} - sub sp, 0x4 - ldr r0, _080AF88C @ =gUnknown_030042A0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080AF890 @ =gUnknown_03004280 - strh r1, [r0] - bl sub_80AF138 - ldr r0, _080AF894 @ =gMenuWindow - ldr r1, _080AF898 @ =gUnknownText_LinkStandbyAndWinner - movs r2, 0xC2 - lsls r2, 2 - movs r3, 0xF - str r3, [sp] - movs r3, 0x1 - bl sub_8003460 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080AF88C: .4byte gUnknown_030042A0 -_080AF890: .4byte gUnknown_03004280 -_080AF894: .4byte gMenuWindow -_080AF898: .4byte gUnknownText_LinkStandbyAndWinner - thumb_func_end sub_80AF860 - - thumb_func_start unref_sub_80AF89C -unref_sub_80AF89C: @ 80AF89C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r4, r0, 0 - adds r6, r1, 0 - mov r8, r2 - lsls r4, 16 - lsrs r4, 16 - lsls r6, 16 - lsrs r6, 16 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - lsls r2, r3, 2 - ldr r0, _080AF940 @ =gSharedMem + 0x19338 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r0, _080AF944 @ =sub_80AF94C - movs r1, 0x14 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - bl sub_80AFB74 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 16 - asrs r6, 16 - adds r4, r6 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - bl sub_80AFB74 - adds r4, r0, 0 - subs r4, r5 - lsls r4, 24 - lsrs r4, 24 - mov r0, r9 - bl sub_80AFB40 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080AF948 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0xA] - add r0, r8 - strh r0, [r1, 0xC] - mov r0, r9 - strh r0, [r1, 0xE] - cmp r6, 0 - bge _080AF932 - mov r0, r9 - bl nullsub_19 -_080AF932: - adds r0, r7, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080AF940: .4byte gSharedMem + 0x19338 -_080AF944: .4byte sub_80AF94C -_080AF948: .4byte gTasks - thumb_func_end unref_sub_80AF89C - - thumb_func_start sub_80AF94C -sub_80AF94C: @ 80AF94C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080AF988 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrb r5, [r2, 0xE] - ldrh r3, [r2, 0xA] - movs r0, 0xA - ldrsh r1, [r2, r0] - cmp r1, 0 - bne _080AF990 - adds r0, r5, 0 - bl nullsub_19 - adds r0, r4, 0 - bl DestroyTask - lsls r1, r5, 2 - ldr r0, _080AF98C @ =gSharedMem + 0x19338 - adds r1, r0 - ldrb r2, [r1, 0x2] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x2] - b _080AFA56 - .align 2, 0 -_080AF988: .4byte gTasks -_080AF98C: .4byte gSharedMem + 0x19338 -_080AF990: - ldrh r0, [r2, 0x1C] - adds r0, 0x1 - strh r0, [r2, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1D - ble _080AFA56 - movs r0, 0 - strh r0, [r2, 0x1C] - cmp r1, 0 - bge _080AF9BC - ldrh r0, [r2, 0x8] - subs r1, r0, 0x1 - strh r1, [r2, 0x8] - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r3, 0x1 - strh r0, [r2, 0xA] - movs r0, 0x16 - bl PlaySE - b _080AF9D0 -_080AF9BC: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 24 - lsrs r6, r0, 24 - subs r0, r3, 0x1 - strh r0, [r2, 0xA] - movs r0, 0x15 - bl PlaySE -_080AF9D0: - ldr r3, _080AFA00 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r2, r0, 3 - adds r0, r2, r3 - ldrh r1, [r0, 0xC] - ldr r0, _080AFA04 @ =0x0000ffff - cmp r1, r0 - beq _080AFA38 - adds r0, r3, r2 - adds r0, 0xC - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 5 - adds r1, 0x93 - adds r1, r6, r1 - lsls r1, 1 - ldr r2, _080AFA08 @ =0x0600c000 - adds r1, r2 - movs r2, 0x2 - bl RequestSpriteCopy - b _080AFA56 - .align 2, 0 -_080AFA00: .4byte gTasks -_080AFA04: .4byte 0x0000ffff -_080AFA08: .4byte 0x0600c000 -_080AFA0C: - adds r0, r2, r3 - lsls r1, 1 - adds r1, 0xE - adds r0, r1 - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 5 - adds r1, 0x93 - adds r1, r6, r1 - lsls r1, 1 - ldr r7, _080AFA34 @ =0x0600c000 - adds r1, r7 - movs r2, 0x2 - bl RequestSpriteCopy - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _080AFA56 - .align 2, 0 -_080AFA34: .4byte 0x0600c000 -_080AFA38: - movs r1, 0 - adds r3, 0x8 -_080AFA3C: - adds r0, r1, 0x4 - lsls r0, 1 - adds r0, r2 - adds r4, r0, r3 - movs r7, 0 - ldrsh r0, [r4, r7] - cmp r0, 0 - blt _080AFA0C - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bls _080AFA3C -_080AFA56: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80AF94C - - thumb_func_start sub_80AFA5C -sub_80AFA5C: @ 80AFA5C - push {r4-r7,lr} - sub sp, 0x4 - movs r3, 0 - ldr r0, _080AFAAC @ =0x0600c000 - mov r12, r0 - mov r4, sp - movs r6, 0 - ldr r2, _080AFAB0 @ =0x040000d4 - ldr r5, _080AFAB4 @ =0x81000008 -_080AFA6E: - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 5 - adds r0, r1, 0 - adds r0, 0x56 - lsls r0, 1 - add r0, r12 - strh r6, [r4] - mov r7, sp - str r7, [r2] - str r0, [r2, 0x4] - str r5, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r1, 0x76 - lsls r1, 1 - add r1, r12 - strh r6, [r4] - str r7, [r2] - str r1, [r2, 0x4] - str r5, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080AFA6E - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AFAAC: .4byte 0x0600c000 -_080AFAB0: .4byte 0x040000d4 -_080AFAB4: .4byte 0x81000008 - thumb_func_end sub_80AFA5C - - thumb_func_start unref_sub_80AFAB8 -unref_sub_80AFAB8: @ 80AFAB8 - push {r4-r6,lr} - sub sp, 0x14 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r0, 16 - asrs r0, 16 - bl sub_80AFB74 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _080AFAF4 @ =0x000050a2 - cmp r4, 0 - beq _080AFAE0 - ldr r2, _080AFAF8 @ =0x000060a2 - cmp r4, 0x1 - beq _080AFAE0 - ldr r2, _080AFAFC @ =0x000080a2 - cmp r4, 0x2 - bne _080AFAE0 - ldr r2, _080AFB00 @ =0x000070a2 -_080AFAE0: - movs r1, 0 - lsls r3, r4, 2 - movs r6, 0 -_080AFAE6: - cmp r1, r5 - bcs _080AFB04 - lsls r0, r1, 1 - add r0, sp - strh r2, [r0] - b _080AFB0A - .align 2, 0 -_080AFAF4: .4byte 0x000050a2 -_080AFAF8: .4byte 0x000060a2 -_080AFAFC: .4byte 0x000080a2 -_080AFB00: .4byte 0x000070a2 -_080AFB04: - lsls r0, r1, 1 - add r0, sp - strh r6, [r0] -_080AFB0A: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x8 - bls _080AFAE6 - adds r0, r3, r4 - lsls r0, 6 - ldr r1, _080AFB34 @ =0x0600c128 - adds r0, r1 - ldr r1, _080AFB38 @ =0x040000d4 - mov r2, sp - str r2, [r1] - str r0, [r1, 0x4] - ldr r0, _080AFB3C @ =0x80000009 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AFB34: .4byte 0x0600c128 -_080AFB38: .4byte 0x040000d4 -_080AFB3C: .4byte 0x80000009 - thumb_func_end unref_sub_80AFAB8 - - thumb_func_start sub_80AFB40 -sub_80AFB40: @ 80AFB40 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080AFB64 @ =0x00005011 - cmp r0, 0 - beq _080AFB5A - ldr r1, _080AFB68 @ =0x00006011 - cmp r0, 0x1 - beq _080AFB5A - ldr r1, _080AFB6C @ =0x00008011 - cmp r0, 0x2 - bne _080AFB5A - ldr r1, _080AFB70 @ =0x00007011 -_080AFB5A: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_080AFB64: .4byte 0x00005011 -_080AFB68: .4byte 0x00006011 -_080AFB6C: .4byte 0x00008011 -_080AFB70: .4byte 0x00007011 - thumb_func_end sub_80AFB40 - - thumb_func_start sub_80AFB74 -sub_80AFB74: @ 80AFB74 - push {lr} - lsls r0, 16 - asrs r0, 16 - movs r1, 0xA - bl __divsi3 - lsls r0, 24 - lsrs r1, r0, 24 - asrs r2, r0, 24 - cmp r2, 0x10 - ble _080AFB8E - movs r1, 0x10 - b _080AFB98 -_080AFB8E: - movs r0, 0x10 - negs r0, r0 - cmp r2, r0 - bge _080AFB98 - movs r1, 0xF0 -_080AFB98: - lsls r0, r1, 24 - asrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80AFB74 - - thumb_func_start sub_80AFBA0 -sub_80AFBA0: @ 80AFBA0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r2, r7, 2 - ldr r0, _080AFC30 @ =gSharedMem + 0x19338 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r0, _080AFC34 @ =sub_80AFC74 - movs r1, 0x14 - bl CreateTask - lsls r0, 24 - lsrs r6, r0, 24 - lsls r5, 16 - asrs r5, 16 - adds r0, r5, 0 - bl sub_80AFB74 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - adds r5, r0 - lsls r5, 16 - asrs r5, 16 - adds r0, r5, 0 - bl sub_80AFB74 - lsls r4, 24 - asrs r4, 24 - subs r0, r4 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r7, 0 - bl sub_80AFB40 - ldr r2, _080AFC38 @ =gTasks - lsls r3, r6, 2 - adds r0, r3, r6 - lsls r0, 3 - adds r1, r0, r2 - adds r0, r4, 0 - cmp r4, 0 - bge _080AFC14 - negs r0, r4 -_080AFC14: - strh r0, [r1, 0x8] - lsls r0, r5, 24 - asrs r0, 24 - strh r0, [r1, 0xA] - cmp r4, 0 - bgt _080AFC28 - cmp r4, 0 - bne _080AFC3C - cmp r0, 0 - ble _080AFC3C -_080AFC28: - movs r0, 0x1 - strh r0, [r1, 0xC] - b _080AFC4A - .align 2, 0 -_080AFC30: .4byte gSharedMem + 0x19338 -_080AFC34: .4byte sub_80AFC74 -_080AFC38: .4byte gTasks -_080AFC3C: - ldr r2, _080AFC6C @ =gTasks - lsls r3, r6, 2 - adds r0, r3, r6 - lsls r0, 3 - adds r0, r2 - ldr r1, _080AFC70 @ =0x0000ffff - strh r1, [r0, 0xC] -_080AFC4A: - adds r0, r3, r6 - lsls r0, 3 - adds r0, r2 - strh r7, [r0, 0xE] - mov r1, r8 - lsls r0, r1, 16 - cmp r0, 0 - bge _080AFC60 - adds r0, r7, 0 - bl nullsub_19 -_080AFC60: - adds r0, r6, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080AFC6C: .4byte gTasks -_080AFC70: .4byte 0x0000ffff - thumb_func_end sub_80AFBA0 - - thumb_func_start sub_80AFC74 -sub_80AFC74: @ 80AFC74 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080AFCD4 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r4, r0, r1 - ldrb r7, [r4, 0xE] - ldrh r3, [r4, 0x8] - ldrh r1, [r4, 0xA] - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xE - bgt _080AFCA6 - b _080AFE1C -_080AFCA6: - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r2, [r4, 0xA] - movs r5, 0xA - ldrsh r0, [r4, r5] - cmp r0, 0 - bne _080AFCDC - adds r0, r7, 0 - bl nullsub_19 - mov r0, r8 - bl DestroyTask - lsls r1, r7, 2 - ldr r0, _080AFCD8 @ =gSharedMem + 0x19338 - adds r1, r0 - ldrb r2, [r1, 0x2] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x2] - b _080AFE1C - .align 2, 0 -_080AFCD4: .4byte gTasks -_080AFCD8: .4byte gSharedMem + 0x19338 -_080AFCDC: - cmp r3, 0 - bne _080AFD28 - lsls r0, r1, 16 - mov r9, r0 - cmp r0, 0 - bge _080AFCFA - adds r0, r7, 0 - bl sub_80AFB40 - adds r0, 0x2 - lsls r0, 16 - lsrs r6, r0, 16 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - b _080AFD08 -_080AFCFA: - adds r0, r7, 0 - bl sub_80AFB40 - lsls r0, 16 - lsrs r6, r0, 16 - ldrh r0, [r4, 0xA] - subs r0, 0x1 -_080AFD08: - strh r0, [r4, 0xA] - ldr r1, _080AFD24 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - adds r2, r1, 0x1 - strh r2, [r0, 0x8] - lsls r1, 24 - lsrs r5, r1, 24 - b _080AFD94 - .align 2, 0 -_080AFD24: .4byte gTasks -_080AFD28: - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0 - bge _080AFD62 - lsls r0, r1, 16 - mov r9, r0 - cmp r0, 0 - bge _080AFD50 - ldrh r0, [r4, 0x8] - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r2, 0x1 - strh r0, [r4, 0xA] - adds r0, r7, 0 - bl sub_80AFB40 - adds r0, 0x2 - b _080AFD90 -_080AFD50: - ldrh r0, [r4, 0x8] - subs r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - subs r0, r2, 0x1 - strh r0, [r4, 0xA] - b _080AFD94 -_080AFD62: - lsls r0, r1, 16 - mov r9, r0 - cmp r0, 0 - bge _080AFD7C - ldrh r0, [r4, 0x8] - subs r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - adds r0, r2, 0x1 - strh r0, [r4, 0xA] - b _080AFD94 -_080AFD7C: - ldrh r0, [r4, 0x8] - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - lsls r0, 24 - lsrs r5, r0, 24 - subs r0, r2, 0x1 - strh r0, [r4, 0xA] - adds r0, r7, 0 - bl sub_80AFB40 -_080AFD90: - lsls r0, 16 - lsrs r6, r0, 16 -_080AFD94: - mov r10, r5 - cmp r5, 0x7 - bls _080AFDA2 - adds r0, r5, 0 - adds r0, 0x18 - lsls r0, 24 - lsrs r5, r0, 24 -_080AFDA2: - mov r0, sp - strh r6, [r0] - ldr r0, _080AFDE8 @ =gUnknown_02038696 - adds r0, r7, r0 - ldrb r0, [r0] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 5 - adds r1, 0x56 - adds r1, r5, r1 - lsls r1, 1 - ldr r0, _080AFDEC @ =0x0600c000 - adds r1, r0 - ldr r2, _080AFDF0 @ =0x01000001 - mov r0, sp - bl CpuSet - mov r2, r9 - cmp r2, 0 - ble _080AFDFC - movs r0, 0x60 - bl PlaySE - ldr r4, _080AFDF4 @ =gMPlay_SE1 - adds r0, r4, 0 - bl m4aMPlayImmInit - ldr r1, _080AFDF8 @ =0x0000ffff - mov r3, r10 - lsls r2, r3, 24 - asrs r2, 16 - adds r0, r4, 0 - bl m4aMPlayPitchControl - b _080AFE02 - .align 2, 0 -_080AFDE8: .4byte gUnknown_02038696 -_080AFDEC: .4byte 0x0600c000 -_080AFDF0: .4byte 0x01000001 -_080AFDF4: .4byte gMPlay_SE1 -_080AFDF8: .4byte 0x0000ffff -_080AFDFC: - movs r0, 0x16 - bl PlaySE -_080AFE02: - cmp r5, 0 - bne _080AFE1C - cmp r6, 0 - bne _080AFE1C - ldr r0, _080AFE2C @ =gTasks - mov r5, r8 - lsls r1, r5, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - negs r0, r0 - strh r0, [r1, 0xC] -_080AFE1C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AFE2C: .4byte gTasks - thumb_func_end sub_80AFC74 - - thumb_func_start sub_80AFE30 -sub_80AFE30: @ 80AFE30 - push {r4,r5,lr} - ldr r0, _080AFE64 @ =gUnknown_083CA350 - bl LoadSpriteSheet - movs r4, 0 - ldr r5, _080AFE68 @ =gUnknown_083CA338 -_080AFE3C: - ldr r0, _080AFE6C @ =gUnknown_02038696 - adds r0, r4, r0 - ldrb r0, [r0] - adds r0, r5 - ldrb r2, [r0] - ldr r0, _080AFE70 @ =gSpriteTemplate_83CA3AC - movs r1, 0xB4 - movs r3, 0x1 - bl CreateSprite - lsls r1, r4, 2 - ldr r2, _080AFE74 @ =gSharedMem + 0x19338 - adds r1, r2 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _080AFE3C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AFE64: .4byte gUnknown_083CA350 -_080AFE68: .4byte gUnknown_083CA338 -_080AFE6C: .4byte gUnknown_02038696 -_080AFE70: .4byte gSpriteTemplate_83CA3AC -_080AFE74: .4byte gSharedMem + 0x19338 - thumb_func_end sub_80AFE30 - - thumb_func_start sub_80AFE78 -sub_80AFE78: @ 80AFE78 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, r6, 2 - ldr r3, _080AFEB0 @ =gSharedMem + 0x19338 - adds r2, r3 - ldrb r0, [r2, 0x2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x2] - ldrb r7, [r2] - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - subs r3, 0xD8 - adds r0, r3 - movs r1, 0x4 - ldrsh r0, [r0, r1] - movs r1, 0xA - bl __divsi3 - lsls r0, 17 - lsrs r5, r0, 16 - asrs r0, 16 - cmp r0, 0x38 - ble _080AFEB4 - movs r5, 0x38 - b _080AFEBA - .align 2, 0 -_080AFEB0: .4byte gSharedMem + 0x19338 -_080AFEB4: - cmp r0, 0 - bge _080AFEBA - movs r5, 0 -_080AFEBA: - ldr r2, _080AFEEC @ =gSprites - lsls r3, r7, 4 - adds r0, r3, r7 - lsls r0, 2 - adds r4, r0, r2 - movs r0, 0x3E - adds r0, r4 - mov r12, r0 - ldrb r1, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - mov r1, r12 - strb r0, [r1] - strh r6, [r4, 0x2E] - strh r5, [r4, 0x30] - lsls r0, r5, 16 - asrs r0, 16 - movs r5, 0x24 - ldrsh r1, [r4, r5] - cmp r0, r1 - ble _080AFEF0 - movs r0, 0x1 - b _080AFEF2 - .align 2, 0 -_080AFEEC: .4byte gSprites -_080AFEF0: - ldr r0, _080AFF08 @ =0x0000ffff -_080AFEF2: - strh r0, [r4, 0x32] - adds r0, r3, r7 - lsls r0, 2 - adds r1, r2, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080AFF0C @ =sub_80AFF60 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AFF08: .4byte 0x0000ffff -_080AFF0C: .4byte sub_80AFF60 - thumb_func_end sub_80AFE78 - - thumb_func_start sub_80AFF10 -sub_80AFF10: @ 80AFF10 - push {r4,lr} - movs r4, 0 -_080AFF14: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80AFE78 - adds r4, 0x1 - cmp r4, 0x3 - ble _080AFF14 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AFF10 - - thumb_func_start sub_80AFF28 -sub_80AFF28: @ 80AFF28 - push {r4,lr} - movs r3, 0 - ldr r2, _080AFF54 @ =gSharedMem + 0x19338 - ldrb r1, [r2, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080AFF4C - movs r4, 0x1 -_080AFF3A: - adds r2, 0x4 - adds r3, 0x1 - cmp r3, 0x3 - bgt _080AFF4C - ldrb r1, [r2, 0x2] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080AFF3A -_080AFF4C: - cmp r3, 0x4 - beq _080AFF58 - movs r0, 0 - b _080AFF5A - .align 2, 0 -_080AFF54: .4byte gSharedMem + 0x19338 -_080AFF58: - movs r0, 0x1 -_080AFF5A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80AFF28 - - thumb_func_start sub_80AFF60 -sub_80AFF60: @ 80AFF60 - push {r4,lr} - adds r3, r0, 0 - ldrh r2, [r3, 0x24] - movs r0, 0x24 - ldrsh r1, [r3, r0] - movs r4, 0x30 - ldrsh r0, [r3, r4] - cmp r1, r0 - bne _080AFF94 - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r1, 2 - ldr r0, _080AFF8C @ =gSharedMem + 0x19338 - adds r1, r0 - ldrb r2, [r1, 0x2] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x2] - ldr r0, _080AFF90 @ =SpriteCallbackDummy - str r0, [r3, 0x1C] - b _080AFF9A - .align 2, 0 -_080AFF8C: .4byte gSharedMem + 0x19338 -_080AFF90: .4byte SpriteCallbackDummy -_080AFF94: - ldrh r0, [r3, 0x32] - adds r0, r2, r0 - strh r0, [r3, 0x24] -_080AFF9A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AFF60 - - thumb_func_start sub_80AFFA0 -sub_80AFFA0: @ 80AFFA0 - push {r4-r6,lr} - movs r2, 0 - ldr r6, _080AFFD0 @ =gSprites - ldr r5, _080AFFD4 @ =gUnknown_083CA338 - ldr r3, _080AFFD8 @ =gSharedMem + 0x19338 - ldr r4, _080AFFDC @ =gUnknown_02038696 -_080AFFAC: - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r0, r2, r4 - ldrb r0, [r0] - adds r0, r5 - ldrb r0, [r0] - strh r0, [r1, 0x22] - adds r3, 0x4 - adds r2, 0x1 - cmp r2, 0x3 - ble _080AFFAC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AFFD0: .4byte gSprites -_080AFFD4: .4byte gUnknown_083CA338 -_080AFFD8: .4byte gSharedMem + 0x19338 -_080AFFDC: .4byte gUnknown_02038696 - thumb_func_end sub_80AFFA0 - - thumb_func_start sub_80AFFE0 -sub_80AFFE0: @ 80AFFE0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - ldr r6, _080B0008 @ =gUnknown_02038696 - ldr r4, _080B000C @ =gSprites - ldr r2, _080B0010 @ =gSharedMem + 0x19338 -_080AFFEE: - adds r0, r3, r6 - ldrb r0, [r0] - cmp r0, 0x1 - bls _080B0024 - cmp r5, 0 - bne _080B0014 - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r0, 0xB4 - b _080B0022 - .align 2, 0 -_080B0008: .4byte gUnknown_02038696 -_080B000C: .4byte gSprites -_080B0010: .4byte gSharedMem + 0x19338 -_080B0014: - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r0, 0x80 - lsls r0, 1 -_080B0022: - strh r0, [r1, 0x20] -_080B0024: - adds r2, 0x4 - adds r3, 0x1 - cmp r3, 0x3 - ble _080AFFEE - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80AFFE0 - - thumb_func_start sub_80B0034 -sub_80B0034: @ 80B0034 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080B00A8 @ =gUnknown_083CA3E4 - bl LoadSpritePalette - movs r5, 0 - ldr r0, _080B00AC @ =gUnknown_083CA33C - mov r8, r0 - ldr r7, _080B00B0 @ =gSprites - movs r6, 0 -_080B004A: - lsls r0, r5, 3 - ldr r1, _080B00B4 @ =gUnknown_083CA3C4 - adds r0, r1 - bl LoadCompressedObjectPic - ldr r0, _080B00B8 @ =gSpriteTemplate_83CA3F4 - adds r0, r6, r0 - ldr r1, _080B00BC @ =gUnknown_02038696 - adds r1, r5, r1 - ldrb r1, [r1] - add r1, r8 - ldrb r2, [r1] - movs r1, 0xCC - movs r3, 0 - bl CreateSprite - lsls r4, r5, 2 - ldr r1, _080B00C0 @ =gSharedMem + 0x19338 - adds r4, r1 - strb r0, [r4, 0x1] - ldrb r1, [r4, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldr r1, _080B00C4 @ =gSubspriteTables_83CA464 - bl SetSubspriteTables - ldrb r1, [r4, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r6, 0x18 - adds r5, 0x1 - cmp r5, 0x3 - ble _080B004A - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B00A8: .4byte gUnknown_083CA3E4 -_080B00AC: .4byte gUnknown_083CA33C -_080B00B0: .4byte gSprites -_080B00B4: .4byte gUnknown_083CA3C4 -_080B00B8: .4byte gSpriteTemplate_83CA3F4 -_080B00BC: .4byte gUnknown_02038696 -_080B00C0: .4byte gSharedMem + 0x19338 -_080B00C4: .4byte gSubspriteTables_83CA464 - thumb_func_end sub_80B0034 - - thumb_func_start sub_80B00C8 -sub_80B00C8: @ 80B00C8 - push {lr} - ldr r0, _080B0104 @ =gUnknown_083CA46C - bl LoadCompressedObjectPic - ldr r0, _080B0108 @ =gUnknown_083CA474 - bl LoadSpritePalette - ldr r0, _080B010C @ =gSpriteTemplate_83CA484 - movs r1, 0x1E - movs r2, 0x2C - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B0110 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r1] - ldr r1, _080B0114 @ =gSharedMem + 0x19204 - adds r1, 0x58 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080B0104: .4byte gUnknown_083CA46C -_080B0108: .4byte gUnknown_083CA474 -_080B010C: .4byte gSpriteTemplate_83CA484 -_080B0110: .4byte gSprites -_080B0114: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B00C8 - - thumb_func_start nullsub_18 -nullsub_18: @ 80B0118 - bx lr - thumb_func_end nullsub_18 - - thumb_func_start unref_sub_80B011C -unref_sub_80B011C: @ 80B011C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080B0198 @ =gUnknown_083CC3AC - bl LoadCompressedObjectPic - movs r4, 0 - ldr r5, _080B019C @ =gUnknown_083CC3B4 -_080B012C: - lsls r0, r4, 3 - adds r0, r5 - bl LoadCompressedObjectPalette - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B012C - movs r4, 0 - ldr r5, _080B01A0 @ =gUnknown_083CA330 - adds r0, r5, 0x1 - mov r8, r0 - ldr r7, _080B01A4 @ =gSprites - ldr r6, _080B01A8 @ =gSharedMem + 0x1920D -_080B014A: - lsls r2, r4, 1 - adds r0, r2, r4 - lsls r0, 3 - ldr r1, _080B01AC @ =gSpriteTemplate_83CC454 - adds r0, r1 - adds r1, r2, r5 - ldrb r1, [r1] - add r2, r8 - ldrb r2, [r2] - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - movs r2, 0x3E - adds r2, r1 - mov r12, r2 - ldrb r2, [r2] - movs r3, 0x4 - orrs r2, r3 - mov r3, r12 - strb r2, [r3] - strh r4, [r1, 0x2E] - adds r1, r4, r6 - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B014A - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B0198: .4byte gUnknown_083CC3AC -_080B019C: .4byte gUnknown_083CC3B4 -_080B01A0: .4byte gUnknown_083CA330 -_080B01A4: .4byte gSprites -_080B01A8: .4byte gSharedMem + 0x1920D -_080B01AC: .4byte gSpriteTemplate_83CC454 - thumb_func_end unref_sub_80B011C - - thumb_func_start unref_sub_80B01B0 -unref_sub_80B01B0: @ 80B01B0 - push {r4,r5,lr} - movs r2, 0 - ldr r5, _080B01D4 @ =gSharedMem + 0x1920D - ldr r4, _080B01D8 @ =gSprites + 0x1C - ldr r3, _080B01DC @ =sub_80B0238 -_080B01BA: - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - str r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _080B01BA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B01D4: .4byte gSharedMem + 0x1920D -_080B01D8: .4byte gSprites + 0x1C -_080B01DC: .4byte sub_80B0238 - thumb_func_end unref_sub_80B01B0 - - thumb_func_start unref_sub_80B01E0 -unref_sub_80B01E0: @ 80B01E0 - push {r4,r5,lr} - movs r3, 0 - ldr r2, _080B0224 @ =gSprites - ldr r4, _080B0228 @ =gSharedMem + 0x19204 - ldrb r1, [r4, 0x9] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080B022C @ =SpriteCallbackDummy - cmp r1, r0 - bne _080B021A - adds r5, r4, 0 - adds r5, 0x9 - adds r4, r1, 0 -_080B0202: - adds r3, 0x1 - cmp r3, 0x3 - bgt _080B021A - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - cmp r0, r4 - beq _080B0202 -_080B021A: - cmp r3, 0x4 - beq _080B0230 - movs r0, 0 - b _080B0232 - .align 2, 0 -_080B0224: .4byte gSprites -_080B0228: .4byte gSharedMem + 0x19204 -_080B022C: .4byte SpriteCallbackDummy -_080B0230: - movs r0, 0x1 -_080B0232: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end unref_sub_80B01E0 - - thumb_func_start sub_80B0238 -sub_80B0238: @ 80B0238 - push {r4,lr} - adds r4, r0, 0 - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r0, r4, 0 - bl InitSpriteAffineAnim - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080B0268 - ldr r0, _080B0264 @ =sub_80B02A8 - b _080B0272 - .align 2, 0 -_080B0264: .4byte sub_80B02A8 -_080B0268: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _080B027C @ =sub_80B0280 -_080B0272: - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B027C: .4byte sub_80B0280 - thumb_func_end sub_80B0238 - - thumb_func_start sub_80B0280 -sub_80B0280: @ 80B0280 - push {lr} - adds r3, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080B02A0 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080B02A4 @ =sub_80B02A8 - str r0, [r3, 0x1C] -_080B02A0: - pop {r0} - bx r0 - .align 2, 0 -_080B02A4: .4byte sub_80B02A8 - thumb_func_end sub_80B0280 - - thumb_func_start sub_80B02A8 -sub_80B02A8: @ 80B02A8 - push {r4,lr} - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _080B02EC @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r1, [r0, 0xB] - lsls r1, 30 - lsrs r1, 30 - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, _080B02F0 @ =sub_80B02F4 - str r0, [r4, 0x1C] - movs r0, 0x18 - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B02EC: .4byte gSharedMem + 0x19260 -_080B02F0: .4byte sub_80B02F4 - thumb_func_end sub_80B02A8 - - thumb_func_start sub_80B02F4 -sub_80B02F4: @ 80B02F4 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080B0318 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - ldrb r0, [r4, 0x1] - movs r1, 0x4 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x1] - ldr r0, _080B0320 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_080B0318: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B0320: .4byte SpriteCallbackDummy - thumb_func_end sub_80B02F4 - - thumb_func_start sub_80B0324 -sub_80B0324: @ 80B0324 - push {r4,lr} - ldr r0, _080B035C @ =sub_80B0458 - movs r1, 0x1E - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080B0360 @ =gSharedMem + 0x19204 - strb r0, [r1, 0xD] - movs r2, 0 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r4, _080B0364 @ =gTasks + 0x8 - movs r3, 0xFF -_080B0342: - lsls r0, r2, 3 - adds r0, r1 - adds r0, r4 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080B0342 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B035C: .4byte sub_80B0458 -_080B0360: .4byte gSharedMem + 0x19204 -_080B0364: .4byte gTasks + 0x8 - thumb_func_end sub_80B0324 - - thumb_func_start sub_80B0368 -sub_80B0368: @ 80B0368 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080B03A0 @ =gTasks - ldr r5, _080B03A4 @ =gSharedMem + 0x19204 - ldrb r2, [r5, 0xD] - lsls r1, r2, 2 - adds r1, r2 - adds r1, r0 - lsls r1, 3 - adds r3, 0x8 - adds r1, r3 - movs r4, 0 - strh r4, [r1] - lsls r0, 2 - adds r0, 0x1 - lsls r0, 1 - ldrb r2, [r5, 0xD] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r0, r1 - adds r0, r3 - strh r4, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B03A0: .4byte gTasks -_080B03A4: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B0368 - - thumb_func_start sub_80B03A8 -sub_80B03A8: @ 80B03A8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B03D0 @ =sub_80B03D8 - movs r1, 0x1F - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B03D4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B03D0: .4byte sub_80B03D8 -_080B03D4: .4byte gTasks - thumb_func_end sub_80B03A8 - - thumb_func_start sub_80B03D8 -sub_80B03D8: @ 80B03D8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r2, _080B044C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x8] - adds r4, r0, 0 - ldr r6, _080B0450 @ =gSharedMem + 0x19204 - ldrb r1, [r6, 0xD] - lsls r0, r1, 2 - adds r0, r1 - adds r0, r4 - lsls r0, 3 - adds r7, r2, 0 - adds r7, 0x8 - adds r1, r0, r7 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080B040C - cmp r0, 0xFF - bne _080B0444 -_080B040C: - movs r3, 0 - movs r0, 0xFF - strh r0, [r1] - lsls r1, r4, 2 - adds r1, 0x1 - lsls r1, 1 - ldrb r2, [r6, 0xD] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, r7 - strh r3, [r1] - adds r0, r6, 0 - adds r0, 0x14 - adds r0, r4, r0 - ldrb r0, [r0] - adds r0, 0x5 - lsls r0, 4 - adds r0, 0x6 - ldr r3, _080B0454 @ =0x00004bff - movs r1, 0x2 - movs r2, 0 - bl BlendPalette - adds r0, r5, 0 - bl DestroyTask -_080B0444: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B044C: .4byte gTasks -_080B0450: .4byte gSharedMem + 0x19204 -_080B0454: .4byte 0x00004bff - thumb_func_end sub_80B03D8 - - thumb_func_start sub_80B0458 -sub_80B0458: @ 80B0458 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - lsls r1, r0, 2 - adds r1, r0 - mov r9, r1 - lsls r7, r1, 3 - ldr r0, _080B04A8 @ =gTasks + 0x8 - mov r8, r0 - movs r1, 0x8 - negs r1, r1 - add r1, r8 - mov r10, r1 -_080B047C: - lsls r0, r6, 26 - lsrs r3, r0, 24 - lsls r0, r3, 1 - adds r0, r7 - mov r4, r8 - adds r2, r0, r4 - ldrh r4, [r2] - movs r5, 0 - ldrsh r0, [r2, r5] - cmp r0, 0xFF - beq _080B04F6 - adds r0, r3, 0x1 - lsls r1, r0, 1 - adds r1, r7 - add r1, r8 - movs r5, 0 - ldrsh r1, [r1, r5] - adds r5, r0, 0 - cmp r1, 0 - bne _080B04AC - adds r0, r4, 0x1 - b _080B04AE - .align 2, 0 -_080B04A8: .4byte gTasks + 0x8 -_080B04AC: - subs r0, r4, 0x1 -_080B04AE: - strh r0, [r2] - lsls r1, r3, 1 - mov r0, r9 - lsls r2, r0, 3 - adds r0, r1, r2 - mov r3, r10 - adds r3, 0x8 - adds r0, r3 - movs r4, 0 - ldrsh r0, [r0, r4] - adds r4, r1, 0 - cmp r0, 0x10 - beq _080B04CC - cmp r0, 0 - bne _080B04DA -_080B04CC: - lsls r0, r5, 1 - adds r0, r2 - adds r0, r3 - ldrh r1, [r0] - movs r2, 0x1 - eors r1, r2 - strh r1, [r0] -_080B04DA: - ldr r0, _080B0510 @ =gSharedMem + 0x19204 - adds r0, 0x14 - adds r0, r6, r0 - ldrb r0, [r0] - adds r0, 0x5 - lsls r0, 4 - adds r0, 0x6 - adds r1, r4, r7 - add r1, r8 - ldrb r2, [r1] - movs r1, 0x2 - ldr r3, _080B0514 @ =0x00004bff - bl BlendPalette -_080B04F6: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _080B047C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B0510: .4byte gSharedMem + 0x19204 -_080B0514: .4byte 0x00004bff - thumb_func_end sub_80B0458 - - thumb_func_start sub_80B0518 -sub_80B0518: @ 80B0518 - push {r4,lr} - ldr r0, _080B0540 @ =sub_80B05FC - movs r1, 0x1E - bl CreateTask - ldr r1, _080B0544 @ =gSharedMem + 0x19204 - strb r0, [r1, 0xE] - movs r4, 0 -_080B0528: - adds r0, r4, 0 - bl sub_80B0548 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B0528 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B0540: .4byte sub_80B05FC -_080B0544: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B0518 - - thumb_func_start sub_80B0548 -sub_80B0548: @ 80B0548 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080B0580 @ =gTasks - ldr r4, _080B0584 @ =gSharedMem + 0x19204 - ldrb r2, [r4, 0xE] - lsls r1, r2, 2 - adds r1, r2 - adds r1, r0 - lsls r1, 3 - adds r3, 0x8 - adds r1, r3 - movs r5, 0 - movs r2, 0xFF - strh r2, [r1] - lsls r0, 2 - adds r0, 0x1 - lsls r0, 1 - ldrb r2, [r4, 0xE] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r0, r1 - adds r0, r3 - strh r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B0580: .4byte gTasks -_080B0584: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B0548 - - thumb_func_start sub_80B0588 -sub_80B0588: @ 80B0588 - push {r4,lr} - movs r4, 0 -_080B058C: - adds r0, r4, 0 - bl sub_80B05A4 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B058C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B0588 - - thumb_func_start sub_80B05A4 -sub_80B05A4: @ 80B05A4 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80B0548 - adds r0, r4, 0x5 - lsls r2, r0, 5 - ldr r3, _080B05E8 @ =gPlttBufferUnfaded + 0x14 - adds r6, r2, r3 - ldr r5, _080B05EC @ =gPlttBufferFaded + 0x14 - adds r2, r5 - ldr r1, _080B05F0 @ =0x040000d4 - str r6, [r1] - str r2, [r1, 0x4] - ldr r2, _080B05F4 @ =0x80000001 - str r2, [r1, 0x8] - ldr r6, [r1, 0x8] - lsls r0, 4 - adds r4, 0xC - adds r0, r4 - lsls r0, 1 - subs r3, 0x14 - adds r3, r0, r3 - subs r5, 0x14 - adds r0, r5 - str r3, [r1] - str r0, [r1, 0x4] - str r2, [r1, 0x8] - ldr r0, [r1, 0x8] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B05E8: .4byte gPlttBufferUnfaded + 0x14 -_080B05EC: .4byte gPlttBufferFaded + 0x14 -_080B05F0: .4byte 0x040000d4 -_080B05F4: .4byte 0x80000001 - thumb_func_end sub_80B05A4 - - thumb_func_start nullsub_19 -nullsub_19: @ 80B05F8 - bx lr - thumb_func_end nullsub_19 - - thumb_func_start sub_80B05FC -sub_80B05FC: @ 80B05FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - movs r7, 0 - lsls r1, r0, 2 - adds r1, r0 - mov r9, r1 - lsls r6, r1, 3 - ldr r0, _080B0664 @ =gTasks + 0x8 - mov r8, r0 - ldr r1, _080B0668 @ =0x00004bff - mov r10, r1 -_080B061C: - lsls r0, r7, 26 - lsrs r3, r0, 24 - lsls r0, r3, 1 - adds r0, r6 - mov r4, r8 - adds r2, r0, r4 - movs r5, 0 - ldrsh r0, [r2, r5] - cmp r0, 0xFF - beq _080B06C2 - adds r0, r3, 0x2 - lsls r0, 1 - adds r0, r6 - adds r1, r0, r4 - ldrh r0, [r1] - adds r0, 0x1 - movs r4, 0 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080B06C2 - strh r4, [r1] - adds r0, r3, 0x1 - lsls r1, r0, 1 - adds r1, r6 - add r1, r8 - movs r4, 0 - ldrsh r1, [r1, r4] - adds r4, r0, 0 - cmp r1, 0 - bne _080B066C - ldrh r0, [r2] - adds r0, 0x1 - b _080B0670 - .align 2, 0 -_080B0664: .4byte gTasks + 0x8 -_080B0668: .4byte 0x00004bff -_080B066C: - ldrh r0, [r2] - subs r0, 0x1 -_080B0670: - strh r0, [r2] - lsls r1, r3, 1 - mov r5, r9 - lsls r2, r5, 3 - adds r0, r1, r2 - ldr r3, _080B06DC @ =gTasks - adds r3, 0x8 - adds r0, r3 - movs r5, 0 - ldrsh r0, [r0, r5] - adds r5, r1, 0 - cmp r0, 0x10 - beq _080B068E - cmp r0, 0 - bne _080B069C -_080B068E: - lsls r0, r4, 1 - adds r0, r2 - adds r0, r3 - ldrh r1, [r0] - movs r2, 0x1 - eors r1, r2 - strh r1, [r0] -_080B069C: - adds r4, r7, 0x5 - lsls r4, 4 - adds r0, r4, 0 - adds r0, 0xA - adds r5, r6 - add r5, r8 - ldrb r2, [r5] - movs r1, 0x1 - mov r3, r10 - bl BlendPalette - adds r4, 0xC - adds r4, r7 - ldrb r2, [r5] - adds r0, r4, 0 - movs r1, 0x1 - mov r3, r10 - bl BlendPalette -_080B06C2: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x3 - bls _080B061C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B06DC: .4byte gTasks - thumb_func_end sub_80B05FC - - thumb_func_start unref_sub_80B06E0 -unref_sub_80B06E0: @ 80B06E0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - ldr r0, _080B073C @ =sub_80B0748 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r6, r0, 3 - ldr r0, _080B0740 @ =gTasks + 0x8 - mov r8, r0 - ldr r1, _080B0744 @ =gSharedMem + 0x19338 - mov r12, r1 -_080B0704: - lsls r4, r3, 2 - lsls r0, r3, 26 - lsrs r0, 23 - adds r0, r6 - add r0, r8 - adds r2, r7, r3 - ldrb r1, [r2] - strh r1, [r0] - ldrb r0, [r2] - cmp r0, 0 - beq _080B0726 - mov r1, r12 - adds r0, r4, r1 - ldrb r1, [r0, 0x2] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0, 0x2] -_080B0726: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080B0704 - adds r0, r5, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080B073C: .4byte sub_80B0748 -_080B0740: .4byte gTasks + 0x8 -_080B0744: .4byte gSharedMem + 0x19338 - thumb_func_end unref_sub_80B06E0 - - thumb_func_start sub_80B0748 -sub_80B0748: @ 80B0748 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r2, _080B07F4 @ =gTasks - movs r1, 0x8 - adds r1, r2 - mov r10, r1 - ldr r3, [sp] - lsls r3, 2 - str r3, [sp, 0x1C] - ldr r1, [sp] - adds r0, r3, r1 - lsls r0, 3 - str r0, [sp, 0xC] -_080B0774: - ldr r0, _080B07F8 @ =gUnknown_02038696 - ldr r3, [sp, 0x4] - adds r0, r3, r0 - ldrb r4, [r0] - lsls r0, r4, 26 - lsrs r1, r0, 24 - lsls r0, r1, 1 - str r0, [sp, 0x8] - ldr r3, [sp] - lsls r0, r3, 2 - adds r0, r3 - lsls r6, r0, 3 - ldr r3, [sp, 0x8] - adds r0, r3, r6 - add r0, r10 - mov r9, r0 - ldrb r7, [r0] - cmp r7, 0 - bne _080B079C - b _080B0910 -_080B079C: - adds r3, r1, 0x1 - lsls r0, r3, 1 - adds r0, r6 - add r0, r10 - ldrb r0, [r0] - mov r8, r0 - adds r2, r1, 0x2 - lsls r0, r2, 1 - adds r0, r6 - add r0, r10 - ldrb r5, [r0] - adds r1, 0x3 - lsls r0, r1, 1 - adds r0, r6 - add r0, r10 - ldrb r6, [r0] - str r3, [sp, 0x10] - str r2, [sp, 0x14] - str r1, [sp, 0x18] - cmp r7, 0x1 - bne _080B0818 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1 - beq _080B07D2 - b _080B08EA -_080B07D2: - movs r6, 0 - adds r0, r4, 0x5 - lsls r0, 4 - adds r0, 0x1 - movs r1, 0x3 - adds r2, r5, 0 - ldr r3, _080B07FC @ =0x00007fff - bl BlendPalette - cmp r5, 0 - bne _080B0800 - mov r0, r8 - cmp r0, 0x4 - bne _080B0800 - mov r1, r9 - strh r6, [r1] - b _080B08EA - .align 2, 0 -_080B07F4: .4byte gTasks -_080B07F8: .4byte gUnknown_02038696 -_080B07FC: .4byte 0x00007fff -_080B0800: - adds r0, r5, 0x2 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xD - bls _080B08EA - movs r5, 0 - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - b _080B08EA -_080B0818: - cmp r7, 0x2 - beq _080B0820 - cmp r7, 0x4 - bne _080B0896 -_080B0820: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bne _080B08EA - movs r6, 0 - adds r0, r4, 0x5 - lsls r0, 4 - adds r0, 0x1 - ldr r2, _080B0854 @ =gUnknown_083CC5A4 - lsls r1, r4, 1 - adds r1, r2 - ldrh r3, [r1] - movs r1, 0x3 - adds r2, r5, 0 - bl BlendPalette - cmp r5, 0 - bne _080B0858 - mov r2, r8 - cmp r2, 0x2 - bne _080B0858 - mov r3, r9 - strh r6, [r3] - b _080B08EA - .align 2, 0 -_080B0854: .4byte gUnknown_083CC5A4 -_080B0858: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xE - bne _080B08EA - movs r5, 0 - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r7, 0x4 - bne _080B08EA - cmp r0, 0x1 - bne _080B08EA - adds r4, 0x9 - lsls r4, 4 - adds r0, r4, 0x2 - movs r1, 0x1 - movs r2, 0x4 - movs r3, 0 - bl BlendPalette - adds r4, 0x5 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x4 - movs r3, 0 - bl BlendPalette - b _080B08EA -_080B0896: - cmp r7, 0x3 - bne _080B08EA - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xC - bne _080B08EA - movs r6, 0 - adds r0, r4, 0x5 - lsls r0, 4 - adds r4, r0, 0x1 - adds r0, r4, 0 - movs r1, 0x3 - adds r2, r5, 0 - movs r3, 0 - bl BlendPalette - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bne _080B08EA - ldr r0, _080B0930 @ =gPlttBufferFaded - lsls r1, r4, 1 - adds r0, r1, r0 - ldrh r2, [r0] - ldr r0, _080B0934 @ =gPlttBufferUnfaded - adds r1, r0 - ldrh r0, [r1] - ldr r1, _080B0938 @ =0x040000d4 - str r2, [r1] - str r0, [r1, 0x4] - movs r0, 0x80 - lsls r0, 24 - orrs r7, r0 - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, [sp, 0x8] - ldr r2, [sp, 0xC] - adds r0, r1, r2 - add r0, r10 - strh r6, [r0] -_080B08EA: - ldr r3, [sp, 0x10] - lsls r0, r3, 1 - ldr r1, [sp, 0xC] - adds r0, r1 - add r0, r10 - mov r2, r8 - strh r2, [r0] - ldr r3, [sp, 0x14] - lsls r0, r3, 1 - adds r0, r1 - add r0, r10 - strh r5, [r0] - ldr r1, [sp, 0x18] - lsls r0, r1, 1 - ldr r2, [sp, 0xC] - adds r0, r2 - add r0, r10 - strh r6, [r0] - ldr r2, _080B093C @ =gTasks -_080B0910: - ldr r0, [sp, 0x4] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - cmp r0, 0x3 - bhi _080B0920 - b _080B0774 -_080B0920: - movs r4, 0 - ldr r3, [sp, 0x1C] - ldr r1, [sp] - adds r0, r3, r1 - lsls r1, r0, 3 - adds r2, 0x8 - adds r0, r1, r2 - b _080B0950 - .align 2, 0 -_080B0930: .4byte gPlttBufferFaded -_080B0934: .4byte gPlttBufferUnfaded -_080B0938: .4byte 0x040000d4 -_080B093C: .4byte gTasks -_080B0940: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bhi _080B0958 - lsls r0, r4, 3 - adds r0, r1 - adds r0, r2 -_080B0950: - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, 0 - beq _080B0940 -_080B0958: - cmp r4, 0x4 - bne _080B0980 - movs r4, 0 - ldr r3, _080B0990 @ =gSharedMem + 0x19338 - movs r5, 0x3 - negs r5, r5 -_080B0964: - lsls r1, r4, 2 - adds r1, r3 - ldrb r2, [r1, 0x2] - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1, 0x2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B0964 - ldr r0, [sp] - bl DestroyTask -_080B0980: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B0990: .4byte gSharedMem + 0x19338 - thumb_func_end sub_80B0748 - - thumb_func_start unref_sub_80B0994 -unref_sub_80B0994: @ 80B0994 - push {lr} - lsls r0, 24 - cmp r0, 0 - beq _080B09A6 - ldr r0, _080B09AC @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x6] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x6] -_080B09A6: - pop {r0} - bx r0 - .align 2, 0 -_080B09AC: .4byte gSharedMem + 0x19204 - thumb_func_end unref_sub_80B0994 - - thumb_func_start sub_80B09B0 -sub_80B09B0: @ 80B09B0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - ldr r1, _080B09D4 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r1, [r0, 0x15] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080B09D8 - adds r0, r2, 0 - bl sub_80B0368 - b _080B09DE - .align 2, 0 -_080B09D4: .4byte gSharedMem + 0x19260 -_080B09D8: - adds r0, r2, 0 - bl sub_80B03A8 -_080B09DE: - pop {r0} - bx r0 - thumb_func_end sub_80B09B0 - - thumb_func_start sub_80B09E4 -sub_80B09E4: @ 80B09E4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r9, r0 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _080B0B2C @ =gUnknown_02038696 - mov r1, r9 - adds r7, r1, r0 - ldrb r0, [r7] - lsls r5, r0, 2 - adds r5, r0 - lsls r5, 27 - movs r2, 0x80 - lsls r2, 22 - adds r5, r2 - lsrs r5, 24 - lsls r4, r1, 3 - ldr r0, _080B0B30 @ =gUnknown_083CC4B4 - adds r0, r4, r0 - bl LoadCompressedObjectPic - ldr r0, _080B0B34 @ =gUnknown_083CC4D4 - adds r4, r0 - adds r0, r4, 0 - bl LoadSpritePalette - mov r3, r9 - lsls r4, r3, 1 - add r4, r9 - lsls r4, 3 - ldr r0, _080B0B38 @ =gSpriteTemplate_83CC53C - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB8 - adds r2, r5, 0 - movs r3, 0x1D - bl CreateSprite - mov r8, r0 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - adds r0, r4, 0 - movs r1, 0xF8 - adds r2, r5, 0 - movs r3, 0x1D - bl CreateSprite - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r1, _080B0B3C @ =gSprites - mov r10, r1 - lsls r5, r6, 4 - adds r5, r6 - lsls r5, 2 - add r5, r10 - ldrh r2, [r5, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x40 - ldr r3, _080B0B40 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _080B0B44 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - ldrb r0, [r7] - lsls r3, r0, 2 - adds r3, r0 - lsls r3, 6 - ldr r0, _080B0B48 @ =0x0600e026 - adds r3, r0 - mov r1, r8 - lsls r4, r1, 4 - add r4, r8 - lsls r4, 2 - add r4, r10 - ldrh r0, [r4, 0x4] - lsls r0, 22 - lsrs r0, 17 - ldr r2, _080B0B4C @ =0x06010000 - mov r10, r2 - add r0, r10 - str r0, [sp] - movs r0, 0 - movs r1, 0x3 - movs r2, 0xC0 - lsls r2, 19 - bl CopySpriteTiles - ldrb r0, [r7] - lsls r3, r0, 2 - adds r3, r0 - lsls r3, 6 - ldr r7, _080B0B50 @ =0x0600e036 - adds r3, r7 - ldrh r0, [r5, 0x4] - lsls r0, 22 - lsrs r0, 17 - add r0, r10 - str r0, [sp] - movs r0, 0 - movs r1, 0x3 - movs r2, 0xC0 - lsls r2, 19 - bl CopySpriteTiles - ldrh r0, [r4, 0x4] - lsls r0, 22 - lsrs r0, 17 - movs r1, 0xA0 - lsls r1, 3 - adds r0, r1 - add r0, r10 - movs r2, 0 - str r2, [sp, 0x8] - ldr r1, _080B0B54 @ =0x040000d4 - add r3, sp, 0x8 - mov r12, r3 - str r3, [r1] - str r0, [r1, 0x4] - ldr r3, _080B0B58 @ =0x850000c0 - str r3, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x4 - strb r2, [r0] - strb r2, [r0] - ldrh r0, [r5, 0x4] - lsls r0, 22 - lsrs r0, 17 - movs r7, 0xA0 - lsls r7, 3 - adds r0, r7 - add r0, r10 - str r2, [sp, 0x8] - mov r2, r12 - str r2, [r1] - str r0, [r1, 0x4] - str r3, [r1, 0x8] - ldr r0, [r1, 0x8] - strh r6, [r4, 0x2E] - mov r3, r8 - strh r3, [r5, 0x2E] - mov r7, r9 - strh r7, [r4, 0x30] - mov r0, r9 - strh r0, [r5, 0x30] - mov r0, r8 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080B0B2C: .4byte gUnknown_02038696 -_080B0B30: .4byte gUnknown_083CC4B4 -_080B0B34: .4byte gUnknown_083CC4D4 -_080B0B38: .4byte gSpriteTemplate_83CC53C -_080B0B3C: .4byte gSprites -_080B0B40: .4byte 0x000003ff -_080B0B44: .4byte 0xfffffc00 -_080B0B48: .4byte 0x0600e026 -_080B0B4C: .4byte 0x06010000 -_080B0B50: .4byte 0x0600e036 -_080B0B54: .4byte 0x040000d4 -_080B0B58: .4byte 0x850000c0 - thumb_func_end sub_80B09E4 - - thumb_func_start sub_80B0B5C -sub_80B0B5C: @ 80B0B5C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080B0B94 @ =gSprites - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - adds r5, r1 - ldrh r0, [r5, 0x2E] - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r4, r1 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - adds r0, r5, 0 - bl DestroySpriteAndFreeResources - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B0B94: .4byte gSprites - thumb_func_end sub_80B0B5C - - thumb_func_start sub_80B0B98 -sub_80B0B98: @ 80B0B98 - ldr r1, _080B0BAC @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080B0BB0 @ =0x00000907 - adds r0, r2, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_080B0BAC: .4byte REG_BLDCNT -_080B0BB0: .4byte 0x00000907 - thumb_func_end sub_80B0B98 - - thumb_func_start sub_80B0BB4 -sub_80B0BB4: @ 80B0BB4 - ldr r0, _080B0BC0 @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bx lr - .align 2, 0 -_080B0BC0: .4byte REG_BLDCNT - thumb_func_end sub_80B0BB4 - - thumb_func_start sub_80B0BC4 -sub_80B0BC4: @ 80B0BC4 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - adds r4, r0, 0 - mov r9, r1 - lsls r4, 24 - lsrs r4, 24 - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - bl sub_80B0B98 - ldr r1, _080B0C38 @ =gSprites - mov r8, r1 - lsls r6, r4, 4 - adds r6, r4 - lsls r6, 2 - adds r0, r6, r1 - movs r1, 0x30 - ldrsh r2, [r0, r1] - lsls r2, 2 - ldr r1, _080B0C3C @ =gSharedMem + 0x19338 - adds r2, r1 - ldrb r1, [r2, 0x2] - movs r3, 0x2 - orrs r1, r3 - strb r1, [r2, 0x2] - ldrh r5, [r0, 0x2E] - lsls r5, 24 - lsrs r5, 24 - movs r1, 0x1 - bl StartSpriteAffineAnim - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - mov r1, r8 - adds r0, r4, r1 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r0, 0x1C - add r8, r0 - add r6, r8 - ldr r0, _080B0C40 @ =sub_80B0C5C - str r0, [r6] - add r4, r8 - ldr r0, _080B0C44 @ =SpriteCallbackDummy - str r0, [r4] - mov r1, r9 - cmp r1, 0 - bne _080B0C48 - movs r0, 0x65 - bl PlaySE - b _080B0C4E - .align 2, 0 -_080B0C38: .4byte gSprites -_080B0C3C: .4byte gSharedMem + 0x19338 -_080B0C40: .4byte sub_80B0C5C -_080B0C44: .4byte SpriteCallbackDummy -_080B0C48: - movs r0, 0x2 - bl PlaySE -_080B0C4E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80B0BC4 - - thumb_func_start sub_80B0C5C -sub_80B0C5C: @ 80B0C5C - push {lr} - mov r12, r0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080B0CA4 - mov r0, r12 - ldrh r1, [r0, 0x2E] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080B0CA8 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _080B0CA4 - mov r3, r12 - adds r3, 0x3E - ldrb r0, [r3] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r3] - adds r1, 0x3E - ldrb r0, [r1] - orrs r0, r2 - strb r0, [r1] - ldr r0, _080B0CAC @ =sub_80B0CB0 - mov r1, r12 - str r0, [r1, 0x1C] -_080B0CA4: - pop {r0} - bx r0 - .align 2, 0 -_080B0CA8: .4byte gSprites -_080B0CAC: .4byte sub_80B0CB0 - thumb_func_end sub_80B0C5C - - thumb_func_start sub_80B0CB0 -sub_80B0CB0: @ 80B0CB0 - push {lr} - movs r1, 0x30 - ldrsh r2, [r0, r1] - lsls r2, 2 - ldr r1, _080B0CD8 @ =gSharedMem + 0x19338 - adds r2, r1 - ldrb r3, [r2, 0x2] - movs r1, 0x3 - negs r1, r1 - ands r1, r3 - strb r1, [r2, 0x2] - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl sub_80B0B5C - bl sub_80B0BB4 - pop {r0} - bx r0 - .align 2, 0 -_080B0CD8: .4byte gSharedMem + 0x19338 - thumb_func_end sub_80B0CB0 - - thumb_func_start sub_80B0CDC -sub_80B0CDC: @ 80B0CDC - lsls r0, 24 - lsrs r0, 22 - ldr r1, _080B0CF0 @ =gSharedMem + 0x19338 - adds r0, r1 - ldrb r2, [r0, 0x2] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - strb r1, [r0, 0x2] - bx lr - .align 2, 0 -_080B0CF0: .4byte gSharedMem + 0x19338 - thumb_func_end sub_80B0CDC - - thumb_func_start unref_sub_80B0CF4 -unref_sub_80B0CF4: @ 80B0CF4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r0, _080B0D5C @ =gSharedMem - movs r1, 0xC0 - lsls r1, 9 - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x1 - eors r1, r2 - strb r1, [r0] - cmp r1, 0 - bne _080B0D6C - movs r4, 0 - ldr r6, _080B0D60 @ =gUnknown_083CA308 - adds r3, r6, 0x1 - mov r8, r3 - ldr r5, _080B0D64 @ =gUnknown_083CA310 - adds r7, r5, 0x1 -_080B0D1C: - lsls r1, r4, 1 - adds r0, r1, r6 - ldrb r2, [r0] - mov r3, r8 - adds r0, r1, r3 - ldrb r3, [r0] - adds r0, r1, r5 - ldrb r0, [r0] - adds r0, 0x5 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldr r0, _080B0D68 @ =gUnknown_03004210 - movs r1, 0 - bl FillWindowRect_DefaultPalette - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B0D1C - bl sub_80AE514 - bl sub_80AEB30 - b _080B0D70 - .align 2, 0 -_080B0D5C: .4byte gSharedMem -_080B0D60: .4byte gUnknown_083CA308 -_080B0D64: .4byte gUnknown_083CA310 -_080B0D68: .4byte gUnknown_03004210 -_080B0D6C: - bl sub_80B0D7C -_080B0D70: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end unref_sub_80B0CF4 - - thumb_func_start sub_80B0D7C -sub_80B0D7C: @ 80B0D7C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x10 - movs r5, 0 - ldr r0, _080B0ED0 @ =gSharedMem - movs r1, 0xC0 - lsls r1, 9 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080B0D98 - b _080B0EC2 -_080B0D98: - movs r4, 0 - ldr r7, _080B0ED4 @ =gUnknown_083CA308 - adds r3, r7, 0x1 - mov r9, r3 - ldr r6, _080B0ED8 @ =gUnknown_083CA310 - adds r0, r6, 0x1 - mov r8, r0 -_080B0DA6: - lsls r1, r4, 1 - adds r0, r1, r7 - ldrb r2, [r0] - mov r3, r9 - adds r0, r1, r3 - ldrb r3, [r0] - adds r0, r1, r6 - ldrb r0, [r0] - adds r0, 0x5 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - add r1, r8 - ldrb r0, [r1] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldr r0, _080B0EDC @ =gUnknown_03004210 - movs r1, 0 - bl FillWindowRect_DefaultPalette - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B0DA6 - movs r4, 0 - ldr r6, _080B0ED8 @ =gUnknown_083CA310 - adds r7, r6, 0x1 -_080B0DE2: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r1, _080B0EE0 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrh r2, [r0, 0x4] - movs r1, 0x4 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _080B0E08 - negs r0, r0 - lsls r0, 16 - lsrs r2, r0, 16 - add r1, sp, 0x8 - movs r0, 0xAE - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_080B0E08: - mov r0, sp - adds r0, r5 - adds r0, 0x8 - lsls r1, r2, 16 - asrs r1, 16 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r0, _080B0EE4 @ =gUnknown_02038696 - adds r0, r4, r0 - ldrb r0, [r0] - movs r1, 0x16 - adds r2, r0, 0 - muls r2, r1 - movs r3, 0x94 - lsls r3, 2 - adds r2, r3 - lsls r0, 1 - adds r1, r0, r6 - ldrb r3, [r1] - adds r0, r7 - ldrb r0, [r0] - str r0, [sp] - ldr r0, _080B0EDC @ =gUnknown_03004210 - add r1, sp, 0x8 - bl sub_8003460 - movs r5, 0 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B0DE2 - movs r4, 0 - ldr r6, _080B0ED4 @ =gUnknown_083CA308 - adds r7, r6, 0x1 -_080B0E52: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r1, _080B0EE0 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrh r2, [r0, 0x2] - movs r1, 0x2 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _080B0E78 - negs r0, r0 - lsls r0, 16 - lsrs r2, r0, 16 - add r1, sp, 0x8 - movs r0, 0xAE - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_080B0E78: - mov r0, sp - adds r0, r5 - adds r0, 0x8 - lsls r1, r2, 16 - asrs r1, 16 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r0, _080B0EE4 @ =gUnknown_02038696 - adds r0, r4, r0 - ldrb r1, [r0] - lsls r2, r1, 2 - adds r2, r1 - lsls r2, 18 - movs r3, 0x80 - lsls r3, 18 - adds r2, r3 - lsrs r2, 16 - lsls r1, 1 - adds r0, r1, r6 - ldrb r3, [r0] - adds r1, r7 - ldrb r0, [r1] - str r0, [sp] - ldr r0, _080B0EDC @ =gUnknown_03004210 - add r1, sp, 0x8 - bl sub_8003460 - movs r5, 0 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B0E52 - bl sub_80AEB30 -_080B0EC2: - add sp, 0x10 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B0ED0: .4byte gSharedMem -_080B0ED4: .4byte gUnknown_083CA308 -_080B0ED8: .4byte gUnknown_083CA310 -_080B0EDC: .4byte gUnknown_03004210 -_080B0EE0: .4byte gSharedMem + 0x19260 -_080B0EE4: .4byte gUnknown_02038696 - thumb_func_end sub_80B0D7C - - thumb_func_start unref_sub_80B0EE8 -unref_sub_80B0EE8: @ 80B0EE8 - push {r4-r7,lr} - adds r7, r0, 0 - movs r4, 0 - subs r0, r1, 0x1 - cmp r4, r0 - bge _080B0F20 - adds r6, r0, 0 -_080B0EF6: - adds r3, r0, 0 - adds r5, r4, 0x1 - cmp r0, r4 - ble _080B0F18 - lsls r0, 2 - subs r0, 0x4 - adds r0, r7 -_080B0F04: - ldr r1, [r0] - ldr r2, [r0, 0x4] - cmp r1, r2 - ble _080B0F10 - str r1, [r0, 0x4] - str r2, [r0] -_080B0F10: - subs r0, 0x4 - subs r3, 0x1 - cmp r3, r4 - bgt _080B0F04 -_080B0F18: - adds r4, r5, 0 - adds r0, r6, 0 - cmp r4, r0 - blt _080B0EF6 -_080B0F20: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end unref_sub_80B0EE8 - - thumb_func_start sub_80B0F28 -sub_80B0F28: @ 80B0F28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - add r4, sp, 0x4 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x8 - bl memset - movs r5, 0 - add r4, sp, 0x4 - adds r6, r4, 0 - movs r7, 0 -_080B0F4E: - bl Random - adds r1, r0, 0 - mov r0, sp - adds r0, r7 - adds r0, 0x4 - strh r1, [r0] - movs r2, 0 - cmp r2, r5 - bge _080B0F86 - lsls r0, r1, 16 - lsrs r0, 16 - mov r1, sp - ldrh r1, [r1, 0x4] - cmp r0, r1 - beq _080B0F80 -_080B0F6E: - adds r2, 0x1 - cmp r2, r5 - bge _080B0F86 - lsls r0, r2, 1 - adds r0, r4, r0 - ldrh r1, [r6] - ldrh r0, [r0] - cmp r1, r0 - bne _080B0F6E -_080B0F80: - subs r6, 0x2 - subs r7, 0x2 - subs r5, 0x1 -_080B0F86: - adds r6, 0x2 - adds r7, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _080B0F4E - mov r2, r8 - cmp r2, 0 - bne _080B1050 - movs r5, 0 - ldr r3, _080B1008 @ =gUnknown_02038696 - mov r8, r3 -_080B0F9C: - mov r6, r8 - strb r5, [r6] - movs r4, 0 - cmp r4, r5 - bge _080B1018 - ldr r7, _080B100C @ =gUnknown_02038670 - mov r9, r7 - lsls r0, r5, 1 - adds r1, r0, 0 - add r1, r9 - mov r12, r1 - mov r2, sp - adds r2, 0x4 - str r2, [sp, 0xC] - add r0, sp - adds r0, 0x4 - str r0, [sp, 0x10] - ldr r3, _080B1008 @ =gUnknown_02038696 - adds r6, r3, 0 - mov r10, r6 -_080B0FC4: - ldrb r0, [r3] - lsls r2, r0, 1 - mov r7, r9 - adds r0, r2, r7 - movs r6, 0 - ldrsh r1, [r0, r6] - mov r7, r12 - movs r6, 0 - ldrsh r0, [r7, r6] - cmp r1, r0 - blt _080B0FEC - cmp r1, r0 - bne _080B1010 - ldr r7, [sp, 0xC] - adds r0, r7, r2 - ldrh r0, [r0] - ldr r1, [sp, 0x10] - ldrh r1, [r1] - cmp r0, r1 - bcs _080B1010 -_080B0FEC: - adds r2, r5, 0 - cmp r5, r4 - ble _080B1004 - subs r0, r5, 0x1 - mov r6, r10 - adds r1, r0, r6 -_080B0FF8: - ldrb r0, [r1] - strb r0, [r1, 0x1] - subs r1, 0x1 - subs r2, 0x1 - cmp r2, r4 - bgt _080B0FF8 -_080B1004: - strb r5, [r3] - b _080B1018 - .align 2, 0 -_080B1008: .4byte gUnknown_02038696 -_080B100C: .4byte gUnknown_02038670 -_080B1010: - adds r3, 0x1 - adds r4, 0x1 - cmp r4, r5 - blt _080B0FC4 -_080B1018: - cmp r4, r5 - bne _080B1020 - mov r7, r8 - strb r5, [r7] -_080B1020: - movs r0, 0x1 - add r8, r0 - adds r5, 0x1 - cmp r5, 0x3 - ble _080B0F9C - ldr r4, _080B104C @ =gUnknown_02038696 - mov r0, sp - adds r1, r4, 0 - movs r2, 0x4 - bl memcpy - movs r5, 0 -_080B1038: - mov r1, sp - adds r0, r1, r5 - ldrb r0, [r0] - adds r0, r4 - strb r5, [r0] - adds r5, 0x1 - cmp r5, 0x3 - ble _080B1038 - b _080B10FC - .align 2, 0 -_080B104C: .4byte gUnknown_02038696 -_080B1050: - mov r0, sp - movs r1, 0xFF - movs r2, 0x4 - bl memset - movs r5, 0 - ldr r3, _080B1070 @ =gUnknown_02038696 - movs r6, 0 -_080B1060: - ldr r0, _080B1074 @ =gSharedMem + 0x19260 - adds r0, r6, r0 - ldrb r0, [r0, 0xB] - lsls r0, 30 - lsrs r2, r0, 30 - mov r7, sp - adds r1, r7, r2 - b _080B1082 - .align 2, 0 -_080B1070: .4byte gUnknown_02038696 -_080B1074: .4byte gSharedMem + 0x19260 -_080B1078: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - mov r0, sp - adds r1, r0, r2 -_080B1082: - ldrb r0, [r1] - cmp r0, 0xFF - bne _080B1078 - strb r5, [r1] - strb r2, [r3] - adds r3, 0x1 - adds r6, 0x1C - adds r5, 0x1 - cmp r5, 0x3 - ble _080B1060 - movs r5, 0 -_080B1098: - movs r4, 0x3 - adds r1, r5, 0x1 - mov r10, r1 - cmp r4, r5 - ble _080B10F6 - mov r9, r4 - ldr r2, _080B110C @ =gUnknown_02038696 - mov r8, r2 - add r3, sp, 0x4 - mov r12, r3 -_080B10AC: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - ldr r6, _080B1110 @ =gSharedMem + 0x19244 - adds r1, r0, r6 - ldrb r2, [r1, 0xB] - ldr r7, _080B1114 @ =gSharedMem + 0x19260 - adds r0, r7 - ldrb r3, [r0, 0xB] - mov r1, r9 - ands r1, r2 - mov r0, r9 - ands r0, r3 - subs r3, r4, 0x1 - cmp r1, r0 - bne _080B10F0 - mov r0, r8 - adds r7, r3, r0 - adds r2, r4, r0 - ldrb r6, [r7] - ldrb r1, [r2] - cmp r6, r1 - bcs _080B10F0 - lsls r0, r3, 1 - add r0, r12 - lsls r1, r4, 1 - add r1, r12 - ldrh r0, [r0] - ldrh r1, [r1] - cmp r0, r1 - bcs _080B10F0 - ldrb r0, [r2] - strb r6, [r2] - strb r0, [r7] -_080B10F0: - adds r4, r3, 0 - cmp r4, r5 - bgt _080B10AC -_080B10F6: - mov r5, r10 - cmp r5, 0x2 - ble _080B1098 -_080B10FC: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B110C: .4byte gUnknown_02038696 -_080B1110: .4byte gSharedMem + 0x19244 -_080B1114: .4byte gSharedMem + 0x19260 - thumb_func_end sub_80B0F28 - - thumb_func_start sub_80B1118 -sub_80B1118: @ 80B1118 - push {r4,r5,lr} - movs r4, 0 - movs r5, 0xA0 -_080B111E: - ldr r0, _080B1144 @ =gSharedMem + 0x18004 - adds r0, r5, r0 - ldr r1, _080B1148 @ =gUnknown_02038696 - adds r1, r4, r1 - ldrb r1, [r1] - adds r1, 0x5 - lsls r1, 4 - movs r2, 0x20 - bl LoadPalette - adds r5, 0x20 - adds r4, 0x1 - cmp r4, 0x3 - ble _080B111E - bl sub_80AE514 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B1144: .4byte gSharedMem + 0x18004 -_080B1148: .4byte gUnknown_02038696 - thumb_func_end sub_80B1118 - - thumb_func_start sub_80B114C -sub_80B114C: @ 80B114C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r7, r6, 3 - subs r0, r7, r6 - lsls r0, 2 - ldr r4, _080B11B8 @ =gSharedMem + 0x19260 - adds r5, r0, r4 - movs r0, 0 - strh r0, [r5, 0x2] - strh r0, [r5] - adds r0, r6, 0 - bl sub_80AF404 - lsls r0, 24 - mov r8, r4 - cmp r0, 0 - bne _080B1176 - b _080B13DC -_080B1176: - ldrh r0, [r5, 0x6] - ldr r1, _080B11BC @ =gContestMoves - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0] - mov r12, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 29 - strb r0, [r5, 0xA] - ldrh r0, [r5, 0x6] - ldrh r1, [r5, 0x8] - cmp r0, r1 - bne _080B11C0 - cmp r0, 0 - beq _080B11C0 - ldrb r0, [r5, 0x15] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r5, 0x15] - ldrb r2, [r5, 0xB] - lsls r1, r2, 25 - lsrs r1, 29 - adds r1, 0x1 - movs r0, 0x7 - ands r1, r0 - lsls r1, 4 - movs r0, 0x71 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0xB] - b _080B11D8 - .align 2, 0 -_080B11B8: .4byte gSharedMem + 0x19260 -_080B11BC: .4byte gContestMoves -_080B11C0: - lsls r4, r6, 3 - subs r1, r4, r6 - lsls r1, 2 - ldr r3, _080B1264 @ =gSharedMem + 0x19260 - adds r1, r3 - ldrb r2, [r1, 0xB] - movs r0, 0x71 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xB] - adds r7, r4, 0 - mov r8, r3 -_080B11D8: - subs r0, r7, r6 - lsls r0, 2 - add r0, r8 - ldr r2, _080B1268 @ =gContestEffects - mov r1, r12 - lsls r3, r1, 2 - adds r2, r3, r2 - ldrb r1, [r2, 0x1] - strh r1, [r0] - strh r1, [r0, 0x2] - mov r0, r8 - adds r0, 0x70 - ldrb r1, [r2, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strb r6, [r0, 0x11] - movs r2, 0 - adds r4, r3, 0 - movs r1, 0 - mov r5, r8 - adds r5, 0x7D - mov r3, r8 -_080B1204: - strb r1, [r3, 0xE] - adds r0, r5, r2 - strb r1, [r0] - adds r3, 0x1C - adds r2, 0x1 - cmp r2, 0x3 - ble _080B1204 - subs r0, r7, r6 - lsls r0, 2 - ldr r1, _080B1264 @ =gSharedMem + 0x19260 - adds r5, r0, r1 - ldrb r1, [r5, 0x15] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080B123C - ldrh r0, [r5, 0x8] - ldrh r1, [r5, 0x6] - bl AreMovesContestCombo - lsls r0, 24 - cmp r0, 0 - bne _080B123C - ldrb r1, [r5, 0x15] - movs r0, 0x11 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x15] -_080B123C: - ldr r0, _080B126C @ =gContestEffectFuncs - adds r0, r4, r0 - ldr r0, [r0] - bl _call_via_r0 - subs r0, r7, r6 - lsls r0, 2 - ldr r1, _080B1264 @ =gSharedMem + 0x19260 - adds r2, r0, r1 - ldrb r1, [r2, 0x10] - movs r0, 0x30 - ands r0, r1 - cmp r0, 0x10 - bne _080B1270 - ldrh r1, [r2, 0x2] - subs r1, 0xA - movs r0, 0xD - ldrsb r0, [r2, r0] - b _080B128A - .align 2, 0 -_080B1264: .4byte gSharedMem + 0x19260 -_080B1268: .4byte gContestEffects -_080B126C: .4byte gContestEffectFuncs -_080B1270: - ldrb r1, [r2, 0x11] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080B1284 - movs r1, 0xD - ldrsb r1, [r2, r1] - lsls r0, r1, 1 - adds r0, r1 - b _080B1288 -_080B1284: - movs r0, 0xD - ldrsb r0, [r2, r0] -_080B1288: - ldrh r1, [r2, 0x2] -_080B128A: - adds r0, r1 - strh r0, [r2, 0x2] - subs r0, r7, r6 - lsls r0, 2 - ldr r1, _080B12E8 @ =gSharedMem + 0x19260 - adds r4, r0, r1 - movs r0, 0 - strb r0, [r4, 0x16] - ldrb r1, [r4, 0x15] - subs r0, 0x41 - ands r0, r1 - strb r0, [r4, 0x15] - adds r0, r6, 0 - bl sub_80B214C - lsls r0, 24 - cmp r0, 0 - beq _080B1322 - ldrh r0, [r4, 0x8] - ldrh r1, [r4, 0x6] - bl AreMovesContestCombo - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _080B12EC - ldrb r1, [r4, 0x15] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080B12EC - strb r2, [r4, 0x16] - movs r0, 0x40 - orrs r1, r0 - movs r0, 0x11 - negs r0, r0 - ands r1, r0 - movs r0, 0 - ldrsh r2, [r4, r0] - ldrb r0, [r4, 0x16] - muls r0, r2 - strb r0, [r4, 0x17] - movs r0, 0x8 - orrs r1, r0 - strb r1, [r4, 0x15] - b _080B1322 - .align 2, 0 -_080B12E8: .4byte gSharedMem + 0x19260 -_080B12EC: - ldr r2, _080B1310 @ =gContestMoves - subs r0, r7, r6 - lsls r0, 2 - ldr r1, _080B1314 @ =gSharedMem + 0x19260 - adds r3, r0, r1 - ldrh r0, [r3, 0x6] - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _080B1318 - ldrb r0, [r3, 0x15] - movs r1, 0x10 - orrs r0, r1 - movs r1, 0x40 - orrs r0, r1 - b _080B1320 - .align 2, 0 -_080B1310: .4byte gContestMoves -_080B1314: .4byte gSharedMem + 0x19260 -_080B1318: - ldrb r1, [r3, 0x15] - movs r0, 0x11 - negs r0, r0 - ands r0, r1 -_080B1320: - strb r0, [r3, 0x15] -_080B1322: - subs r0, r7, r6 - lsls r0, 2 - ldr r1, _080B139C @ =gSharedMem + 0x19260 - mov r8, r1 - adds r4, r0, r1 - ldrb r1, [r4, 0x15] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080B1348 - ldrb r0, [r4, 0xB] - lsls r0, 25 - lsrs r0, 29 - adds r0, 0x1 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - strb r1, [r4, 0x18] -_080B1348: - ldrb r1, [r4, 0xC] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080B1362 - ldrb r0, [r4, 0x15] - movs r1, 0x11 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x15] - movs r0, 0 - strh r0, [r4, 0x2] - strh r0, [r4] -_080B1362: - ldrh r0, [r4, 0x6] - bl contest_get_move_excitement - mov r2, r8 - adds r2, 0xC8 - strb r0, [r2] - ldrb r1, [r4, 0x11] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080B137A - strb r5, [r2] -_080B137A: - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0 - ble _080B13A4 - mov r0, r8 - subs r0, 0x5C - ldrb r0, [r0, 0x13] - lsls r0, 24 - asrs r0, 24 - movs r1, 0 - ldrsb r1, [r2, r1] - adds r0, r1 - cmp r0, 0x4 - ble _080B13A0 - movs r0, 0x3C - b _080B13A6 - .align 2, 0 -_080B139C: .4byte gSharedMem + 0x19260 -_080B13A0: - movs r0, 0xA - b _080B13A6 -_080B13A4: - movs r0, 0 -_080B13A6: - strb r0, [r2, 0x2] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - b _080B13CA -_080B13BE: - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 -_080B13C4: - adds r2, 0x1 - cmp r2, 0x3 - bgt _080B13D2 -_080B13CA: - cmp r2, r6 - beq _080B13C4 - cmp r0, 0 - bne _080B13BE -_080B13D2: - subs r0, r7, r6 - lsls r0, 2 - ldr r1, _080B13E8 @ =gSharedMem + 0x19260 - adds r0, r1 - strb r2, [r0, 0x1B] -_080B13DC: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B13E8: .4byte gSharedMem + 0x19260 - thumb_func_end sub_80B114C - - thumb_func_start sub_80B13EC -sub_80B13EC: @ 80B13EC - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - ldr r0, _080B1400 @ =gSharedMem + 0x19260 - adds r2, r0 - strb r1, [r2, 0x13] - bx lr - .align 2, 0 -_080B1400: .4byte gSharedMem + 0x19260 - thumb_func_end sub_80B13EC - - thumb_func_start sub_80B1404 -sub_80B1404: @ 80B1404 - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - ldr r0, _080B1418 @ =gSharedMem + 0x19260 - adds r2, r0 - strb r1, [r2, 0x14] - bx lr - .align 2, 0 -_080B1418: .4byte gSharedMem + 0x19260 - thumb_func_end sub_80B1404 - - thumb_func_start sub_80B141C -sub_80B141C: @ 80B141C - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r2, r1, 0 - cmp r1, 0x3B - bls _080B1436 - movs r1, 0x35 - bl sub_80B13EC - b _080B1466 -_080B1436: - cmp r1, 0x27 - bls _080B1442 - movs r1, 0x34 - bl sub_80B13EC - b _080B1466 -_080B1442: - cmp r1, 0x1D - bls _080B144E - movs r1, 0x33 - bl sub_80B13EC - b _080B1466 -_080B144E: - cmp r1, 0x13 - bls _080B145A - movs r1, 0x32 - bl sub_80B13EC - b _080B1466 -_080B145A: - cmp r2, 0x9 - bls _080B1466 - adds r0, r3, 0 - movs r1, 0x31 - bl sub_80B13EC -_080B1466: - pop {r0} - bx r0 - thumb_func_end sub_80B141C - - thumb_func_start sub_80B146C -sub_80B146C: @ 80B146C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _080B14C8 @ =gStringVar1 - lsls r1, r4, 6 - ldr r2, _080B14CC @ =gContestMons + 0x2 - adds r1, r2 - bl StringCopy - ldr r0, _080B14D0 @ =gStringVar2 - lsls r1, r4, 3 - subs r1, r4 - lsls r1, 2 - ldr r4, _080B14D4 @ =gSharedMem + 0x19260 - adds r1, r4 - ldrh r2, [r1, 0x6] - movs r1, 0xD - muls r1, r2 - ldr r2, _080B14D8 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r2, _080B14DC @ =gContestMoves - adds r0, r4, 0 - adds r0, 0x70 - ldrb r1, [r0, 0x11] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x6] - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x1] - lsls r1, r0, 29 - cmp r1, 0 - bne _080B14E8 - ldr r0, _080B14E0 @ =gStringVar3 - ldr r1, _080B14E4 @ =gUnknown_083CC280 - bl StringCopy - b _080B1538 - .align 2, 0 -_080B14C8: .4byte gStringVar1 -_080B14CC: .4byte gContestMons + 0x2 -_080B14D0: .4byte gStringVar2 -_080B14D4: .4byte gSharedMem + 0x19260 -_080B14D8: .4byte gMoveNames -_080B14DC: .4byte gContestMoves -_080B14E0: .4byte gStringVar3 -_080B14E4: .4byte gUnknown_083CC280 -_080B14E8: - lsrs r0, r1, 29 - cmp r0, 0x1 - bne _080B1500 - ldr r0, _080B14F8 @ =gStringVar3 - ldr r1, _080B14FC @ =gUnknown_083CC288 - bl StringCopy - b _080B1538 - .align 2, 0 -_080B14F8: .4byte gStringVar3 -_080B14FC: .4byte gUnknown_083CC288 -_080B1500: - lsrs r0, r1, 29 - cmp r0, 0x2 - bne _080B1518 - ldr r0, _080B1510 @ =gStringVar3 - ldr r1, _080B1514 @ =gUnknown_083CC290 - bl StringCopy - b _080B1538 - .align 2, 0 -_080B1510: .4byte gStringVar3 -_080B1514: .4byte gUnknown_083CC290 -_080B1518: - lsrs r0, r1, 29 - cmp r0, 0x3 - bne _080B1530 - ldr r0, _080B1528 @ =gStringVar3 - ldr r1, _080B152C @ =gUnknown_083CC299 - bl StringCopy - b _080B1538 - .align 2, 0 -_080B1528: .4byte gStringVar3 -_080B152C: .4byte gUnknown_083CC299 -_080B1530: - ldr r0, _080B1568 @ =gStringVar3 - ldr r1, _080B156C @ =gUnknown_083CC2A3 - bl StringCopy -_080B1538: - ldr r4, _080B1570 @ =gStringVar4 - ldr r1, _080B1574 @ =gUnknown_083CC188 - lsls r0, r5, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringExpandPlaceholders - bl sub_80AF138 - ldr r0, _080B1578 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B1568: .4byte gStringVar3 -_080B156C: .4byte gUnknown_083CC2A3 -_080B1570: .4byte gStringVar4 -_080B1574: .4byte gUnknown_083CC188 -_080B1578: .4byte gMenuWindow - thumb_func_end sub_80B146C - - thumb_func_start sub_80B157C -sub_80B157C: @ 80B157C - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _080B1598 @ =gSharedMem + 0x19260 - adds r1, r0 - ldrb r0, [r1, 0xC] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1, 0xC] - movs r0, 0 - strh r0, [r1, 0x6] - bx lr - .align 2, 0 -_080B1598: .4byte gSharedMem + 0x19260 - thumb_func_end sub_80B157C - - thumb_func_start sub_80B159C -sub_80B159C: @ 80B159C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - movs r0, 0 - mov r12, r0 - movs r4, 0 - ldr r1, _080B1600 @ =gUnknown_02038696 - mov r9, r1 - add r2, sp, 0x4 - mov r6, r9 - movs r5, 0 - adds r3, r2, 0 -_080B15B8: - mov r0, sp - adds r1, r0, r4 - adds r0, r4, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, r4 - strb r5, [r0] - adds r4, 0x1 - cmp r4, 0x3 - ble _080B15B8 - movs r4, 0 - ldr r7, _080B1604 @ =gSharedMem + 0x19260 - adds r5, r2, 0 - movs r1, 0x1 - mov r8, r1 -_080B15D6: - movs r2, 0 - adds r1, r7, 0 -_080B15DA: - ldrb r0, [r1, 0x19] - cmp r0, r4 - beq _080B1608 - adds r1, 0x1C - adds r2, 0x1 - cmp r2, 0x3 - ble _080B15DA -_080B15E8: - cmp r2, 0x4 - bne _080B1680 - movs r2, 0 - ldrb r0, [r5] - cmp r0, 0 - bne _080B1616 - ldrb r0, [r7, 0x19] - cmp r0, 0xFF - bne _080B1616 - mov r12, r2 - movs r2, 0x1 - b _080B163A - .align 2, 0 -_080B1600: .4byte gUnknown_02038696 -_080B1604: .4byte gSharedMem + 0x19260 -_080B1608: - mov r1, sp - adds r0, r1, r2 - strb r4, [r0] - adds r0, r5, r2 - mov r1, r8 - strb r1, [r0] - b _080B15E8 -_080B1616: - adds r2, 0x1 - cmp r2, 0x3 - bgt _080B1672 - adds r0, r5, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080B1616 - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r7 - ldrb r0, [r0, 0x19] - cmp r0, 0xFF - bne _080B1616 - lsls r0, r2, 24 - lsrs r0, 24 - mov r12, r0 - adds r2, 0x1 -_080B163A: - cmp r2, 0x3 - bgt _080B1672 - ldr r6, _080B16C8 @ =gUnknown_02038696 - lsls r0, r2, 3 - subs r0, r2 - lsls r3, r0, 2 -_080B1646: - adds r0, r5, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080B166A - adds r0, r3, r7 - ldrb r0, [r0, 0x19] - cmp r0, 0xFF - bne _080B166A - mov r1, r12 - adds r0, r1, r6 - adds r1, r2, r6 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _080B166A - lsls r0, r2, 24 - lsrs r0, 24 - mov r12, r0 -_080B166A: - adds r3, 0x1C - adds r2, 0x1 - cmp r2, 0x3 - ble _080B1646 -_080B1672: - mov r0, sp - add r0, r12 - strb r4, [r0] - mov r1, r12 - adds r0, r5, r1 - mov r1, r8 - strb r1, [r0] -_080B1680: - adds r4, 0x1 - cmp r4, 0x3 - ble _080B15D6 - movs r4, 0 - ldr r5, _080B16CC @ =gSharedMem + 0x192D0 - adds r3, r5, 0 - subs r3, 0x60 - movs r6, 0xFF - movs r7, 0x3F -_080B1692: - adds r1, r4, r5 - mov r0, sp - adds r2, r0, r4 - ldrb r0, [r2] - strb r0, [r1] - ldrb r0, [r3, 0x9] - orrs r0, r6 - strb r0, [r3, 0x9] - ldrb r1, [r3] - adds r0, r7, 0 - ands r0, r1 - strb r0, [r3] - mov r0, r9 - adds r1, r4, r0 - ldrb r0, [r2] - strb r0, [r1] - adds r3, 0x1C - adds r4, 0x1 - cmp r4, 0x3 - ble _080B1692 - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B16C8: .4byte gUnknown_02038696 -_080B16CC: .4byte gSharedMem + 0x192D0 - thumb_func_end sub_80B159C - - thumb_func_start sub_80B16D0 -sub_80B16D0: @ 80B16D0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x30] - adds r1, r0, 0x1 - strh r1, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x54 - ble _080B1702 - movs r0, 0 - strh r0, [r2, 0x30] - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - ldr r0, _080B1708 @ =SpriteCallbackDummy - str r0, [r2, 0x1C] - ldr r2, _080B170C @ =gSharedMem + 0x19204 - ldrb r1, [r2, 0x6] - movs r0, 0x11 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x6] -_080B1702: - pop {r0} - bx r0 - .align 2, 0 -_080B1708: .4byte SpriteCallbackDummy -_080B170C: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B16D0 - - thumb_func_start sub_80B1710 -sub_80B1710: @ 80B1710 - push {r4,r5,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080B172C @ =gSharedMem + 0x19204 - ldrb r5, [r0, 0x12] - cmp r1, 0x8 - bls _080B1720 - b _080B18C0 -_080B1720: - lsls r0, r1, 2 - ldr r1, _080B1730 @ =_080B1734 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B172C: .4byte gSharedMem + 0x19204 -_080B1730: .4byte _080B1734 - .align 2, 0 -_080B1734: - .4byte _080B1758 - .4byte _080B1758 - .4byte _080B1788 - .4byte _080B17BC - .4byte _080B17F0 - .4byte _080B1824 - .4byte _080B1858 - .4byte _080B18C0 - .4byte _080B188C -_080B1758: - ldr r0, _080B177C @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x2E] - ldr r2, _080B1780 @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _080B1784 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - movs r0, 0x20 - bl PlaySE - b _080B18E4 - .align 2, 0 -_080B177C: .4byte gSprites -_080B1780: .4byte 0x000003ff -_080B1784: .4byte 0xfffffc00 -_080B1788: - ldr r0, _080B17B0 @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x2E] - adds r2, 0x4 - ldr r3, _080B17B4 @ =0x000003ff - adds r0, r3, 0 - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _080B17B8 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - movs r0, 0x1F - bl PlaySE - b _080B18E4 - .align 2, 0 -_080B17B0: .4byte gSprites -_080B17B4: .4byte 0x000003ff -_080B17B8: .4byte 0xfffffc00 -_080B17BC: - ldr r0, _080B17E4 @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x2E] - adds r2, 0x8 - ldr r3, _080B17E8 @ =0x000003ff - adds r0, r3, 0 - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _080B17EC @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - movs r0, 0x1F - bl PlaySE - b _080B18E4 - .align 2, 0 -_080B17E4: .4byte gSprites -_080B17E8: .4byte 0x000003ff -_080B17EC: .4byte 0xfffffc00 -_080B17F0: - ldr r0, _080B1818 @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x2E] - adds r2, 0xC - ldr r3, _080B181C @ =0x000003ff - adds r0, r3, 0 - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _080B1820 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - movs r0, 0x2D - bl PlaySE - b _080B18E4 - .align 2, 0 -_080B1818: .4byte gSprites -_080B181C: .4byte 0x000003ff -_080B1820: .4byte 0xfffffc00 -_080B1824: - ldr r0, _080B184C @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x2E] - adds r2, 0xC - ldr r3, _080B1850 @ =0x000003ff - adds r0, r3, 0 - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _080B1854 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - movs r0, 0x2D - bl PlaySE - b _080B18E4 - .align 2, 0 -_080B184C: .4byte gSprites -_080B1850: .4byte 0x000003ff -_080B1854: .4byte 0xfffffc00 -_080B1858: - ldr r0, _080B1880 @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x2E] - adds r2, 0x10 - ldr r3, _080B1884 @ =0x000003ff - adds r0, r3, 0 - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _080B1888 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - movs r0, 0x2D - bl PlaySE - b _080B18E4 - .align 2, 0 -_080B1880: .4byte gSprites -_080B1884: .4byte 0x000003ff -_080B1888: .4byte 0xfffffc00 -_080B188C: - ldr r0, _080B18B4 @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x2E] - adds r2, 0x18 - ldr r3, _080B18B8 @ =0x000003ff - adds r0, r3, 0 - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _080B18BC @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - movs r0, 0xC3 - bl PlaySE - b _080B18E4 - .align 2, 0 -_080B18B4: .4byte gSprites -_080B18B8: .4byte 0x000003ff -_080B18BC: .4byte 0xfffffc00 -_080B18C0: - ldr r0, _080B1914 @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x2E] - adds r2, 0x14 - ldr r3, _080B1918 @ =0x000003ff - adds r0, r3, 0 - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _080B191C @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - movs r0, 0x2D - bl PlaySE -_080B18E4: - adds r2, r4, 0 - ldr r4, _080B1914 @ =gSprites - adds r2, r5 - lsls r2, 2 - adds r1, r2, r4 - movs r0, 0 - strh r0, [r1, 0x30] - adds r1, 0x3E - ldrb r3, [r1] - subs r0, 0x5 - ands r0, r3 - strb r0, [r1] - adds r4, 0x1C - adds r2, r4 - ldr r0, _080B1920 @ =sub_80B16D0 - str r0, [r2] - ldr r2, _080B1924 @ =gSharedMem + 0x19204 - ldrb r0, [r2, 0x6] - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0x6] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B1914: .4byte gSprites -_080B1918: .4byte 0x000003ff -_080B191C: .4byte 0xfffffc00 -_080B1920: .4byte sub_80B16D0 -_080B1924: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B1710 - - thumb_func_start sub_80B1928 -sub_80B1928: @ 80B1928 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r5, 0 - ldr r6, _080B19BC @ =gSharedMem + 0x19204 - ldr r0, _080B19C0 @ =gSprites - mov r10, r0 - movs r1, 0x58 - adds r1, r6 - mov r9, r1 - ldr r0, _080B19C4 @ =0x06010000 - mov r8, r0 - ldr r7, _080B19C8 @ =REG_BG0CNT -_080B1946: - movs r0, 0x13 - ldrsb r0, [r6, r0] - ldr r4, _080B19CC @ =gContestApplauseMeterGfx - cmp r5, r0 - bge _080B1952 - adds r4, 0x40 -_080B1952: - mov r0, r9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - ldrh r1, [r0, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r0, r5, 0 - adds r0, 0x11 - adds r1, r0 - lsls r1, 5 - add r1, r8 - adds r0, r4, 0 - adds r2, r7, 0 - bl CpuSet - adds r0, r4, 0 - adds r0, 0x20 - mov r1, r9 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - add r1, r10 - ldrh r1, [r1, 0x4] - lsls r1, 22 - lsrs r1, 22 - adds r2, r5, 0 - adds r2, 0x19 - adds r1, r2 - lsls r1, 5 - add r1, r8 - adds r2, r7, 0 - bl CpuSet - movs r0, 0x13 - ldrsb r0, [r6, r0] - cmp r0, 0x4 - ble _080B19A8 - bl sub_80B1A2C -_080B19A8: - adds r5, 0x1 - cmp r5, 0x4 - ble _080B1946 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B19BC: .4byte gSharedMem + 0x19204 -_080B19C0: .4byte gSprites -_080B19C4: .4byte 0x06010000 -_080B19C8: .4byte REG_BG0CNT -_080B19CC: .4byte gContestApplauseMeterGfx - thumb_func_end sub_80B1928 - - thumb_func_start unref_sub_80B19D0 -unref_sub_80B19D0: @ 80B19D0 - push {lr} - sub sp, 0x18 - ldr r1, _080B19F4 @ =gUnknown_083CC2EC - add r0, sp, 0x4 - bl StringCopy - ldr r0, _080B19F8 @ =gUnknown_03004210 - movs r2, 0xAA - lsls r2, 2 - movs r1, 0 - str r1, [sp] - add r1, sp, 0x4 - movs r3, 0 - bl sub_8003460 - add sp, 0x18 - pop {r0} - bx r0 - .align 2, 0 -_080B19F4: .4byte gUnknown_083CC2EC -_080B19F8: .4byte gUnknown_03004210 - thumb_func_end unref_sub_80B19D0 - - thumb_func_start contest_get_move_excitement -contest_get_move_excitement: @ 80B19FC - lsls r0, 16 - ldr r3, _080B1A20 @ =gContestExcitementTable - ldr r1, _080B1A24 @ =gContestMoves - lsrs r0, 13 - adds r0, r1 - ldrb r1, [r0, 0x1] - lsls r1, 29 - lsrs r1, 29 - ldr r0, _080B1A28 @ =gSpecialVar_ContestCategory - ldrh r2, [r0] - lsls r0, r2, 2 - adds r0, r2 - adds r1, r0 - adds r1, r3 - movs r0, 0 - ldrsb r0, [r1, r0] - bx lr - .align 2, 0 -_080B1A20: .4byte gContestExcitementTable -_080B1A24: .4byte gContestMoves -_080B1A28: .4byte gSpecialVar_ContestCategory - thumb_func_end contest_get_move_excitement - - thumb_func_start sub_80B1A2C -sub_80B1A2C: @ 80B1A2C - push {r4,r5,lr} - ldr r0, _080B1A60 @ =c3_08130B10 - movs r1, 0xA - bl CreateTask - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080B1A64 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r0, 0x1 - strh r0, [r4, 0xA] - ldr r0, _080B1A68 @ =0x0000abe2 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0xC] - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080B1A60: .4byte c3_08130B10 -_080B1A64: .4byte gTasks -_080B1A68: .4byte 0x0000abe2 - thumb_func_end sub_80B1A2C - - thumb_func_start c3_08130B10 -c3_08130B10: @ 80B1A6C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080B1A9C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080B1B06 - movs r0, 0 - strh r0, [r2, 0x8] - movs r3, 0xE - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080B1AA0 - ldrh r0, [r2, 0x10] - adds r0, 0x1 - b _080B1AA4 - .align 2, 0 -_080B1A9C: .4byte gTasks -_080B1AA0: - ldrh r0, [r2, 0x10] - subs r0, 0x1 -_080B1AA4: - strh r0, [r2, 0x10] - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0xC - ldrsh r0, [r4, r1] - lsls r0, 4 - movs r3, 0x84 - lsls r3, 1 - adds r6, r3, 0 - adds r0, r6 - lsls r0, 16 - lsrs r0, 16 - ldrb r2, [r4, 0x10] - ldr r3, _080B1B0C @ =0x00007fff - movs r1, 0x1 - bl BlendPalette - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080B1AD6 - cmp r0, 0x10 - bne _080B1B06 -_080B1AD6: - ldrh r0, [r4, 0xE] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0xE] - ldr r0, _080B1B10 @ =gSharedMem + 0x19204 - ldrb r0, [r0, 0x13] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x4 - bgt _080B1B06 - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 4 - adds r0, r6 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - movs r2, 0 - movs r3, 0x1F - bl BlendPalette - adds r0, r5, 0 - bl DestroyTask -_080B1B06: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B1B0C: .4byte 0x00007fff -_080B1B10: .4byte gSharedMem + 0x19204 - thumb_func_end c3_08130B10 - - thumb_func_start sub_80B1B14 -sub_80B1B14: @ 80B1B14 - push {r4,lr} - ldr r0, _080B1B58 @ =sub_80B1B68 - movs r1, 0xA - bl CreateTask - ldr r4, _080B1B5C @ =gSprites - ldr r3, _080B1B60 @ =gSharedMem + 0x19204 - adds r2, r3, 0 - adds r2, 0x58 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080B1B64 @ =0x0000ffba - strh r1, [r0, 0x24] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r0, [r3, 0x6] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r3, 0x6] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B1B58: .4byte sub_80B1B68 -_080B1B5C: .4byte gSprites -_080B1B60: .4byte gSharedMem + 0x19204 -_080B1B64: .4byte 0x0000ffba - thumb_func_end sub_80B1B14 - - thumb_func_start sub_80B1B68 -sub_80B1B68: @ 80B1B68 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - ldr r4, _080B1BD0 @ =gSharedMem + 0x19204 - adds r0, r4, 0 - adds r0, 0x58 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080B1BD4 @ =gSprites - adds r2, r0, r1 - ldr r0, _080B1BD8 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - movs r5, 0xD0 - lsls r5, 3 - adds r0, r5, 0 - ldrh r5, [r1, 0x1C] - adds r0, r5 - strh r0, [r1, 0x1C] - lsls r0, 16 - asrs r0, 24 - ldrh r5, [r2, 0x24] - adds r0, r5 - strh r0, [r2, 0x24] - ldrb r0, [r1, 0x1C] - strh r0, [r1, 0x1C] - movs r1, 0x24 - ldrsh r0, [r2, r1] - cmp r0, 0 - ble _080B1BB2 - movs r0, 0 - strh r0, [r2, 0x24] -_080B1BB2: - movs r5, 0x24 - ldrsh r0, [r2, r5] - cmp r0, 0 - bne _080B1BCA - ldrb r1, [r4, 0x6] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x6] - adds r0, r3, 0 - bl DestroyTask -_080B1BCA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B1BD0: .4byte gSharedMem + 0x19204 -_080B1BD4: .4byte gSprites -_080B1BD8: .4byte gTasks - thumb_func_end sub_80B1B68 - - thumb_func_start sub_80B1BDC -sub_80B1BDC: @ 80B1BDC - push {r4-r6,lr} - ldr r6, _080B1C04 @ =gSprites - ldr r4, _080B1C08 @ =gSharedMem + 0x19204 - adds r5, r4, 0 - adds r5, 0x58 - ldrb r0, [r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r1, 0x3E - ldrb r0, [r1] - lsls r0, 29 - cmp r0, 0 - bge _080B1C0C - ldrb r1, [r4, 0x6] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - b _080B1C28 - .align 2, 0 -_080B1C04: .4byte gSprites -_080B1C08: .4byte gSharedMem + 0x19204 -_080B1C0C: - ldr r0, _080B1C30 @ =sub_80B1C34 - movs r1, 0xA - bl CreateTask - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0 - strh r1, [r0, 0x24] - ldrb r0, [r4, 0x6] - movs r1, 0x40 - orrs r0, r1 -_080B1C28: - strb r0, [r4, 0x6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B1C30: .4byte sub_80B1C34 - thumb_func_end sub_80B1BDC - - thumb_func_start sub_80B1C34 -sub_80B1C34: @ 80B1C34 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - ldr r5, _080B1CAC @ =gSharedMem + 0x19204 - adds r0, r5, 0 - adds r0, 0x58 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080B1CB0 @ =gSprites - adds r3, r0, r1 - ldr r0, _080B1CB4 @ =gTasks - lsls r2, r4, 2 - adds r2, r4 - lsls r2, 3 - adds r2, r0 - movs r1, 0xD0 - lsls r1, 3 - adds r0, r1, 0 - ldrh r1, [r2, 0x1C] - adds r0, r1 - strh r0, [r2, 0x1C] - lsls r0, 16 - asrs r0, 24 - ldrh r1, [r3, 0x24] - subs r1, r0 - strh r1, [r3, 0x24] - ldrb r0, [r2, 0x1C] - strh r0, [r2, 0x1C] - movs r2, 0x24 - ldrsh r0, [r3, r2] - movs r1, 0x46 - negs r1, r1 - cmp r0, r1 - bge _080B1C82 - ldr r0, _080B1CB8 @ =0x0000ffba - strh r0, [r3, 0x24] -_080B1C82: - movs r2, 0x24 - ldrsh r0, [r3, r2] - cmp r0, r1 - bne _080B1CA6 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r5, 0x6] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x6] - adds r0, r4, 0 - bl DestroyTask -_080B1CA6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B1CAC: .4byte gSharedMem + 0x19204 -_080B1CB0: .4byte gSprites -_080B1CB4: .4byte gTasks -_080B1CB8: .4byte 0x0000ffba - thumb_func_end sub_80B1C34 - - thumb_func_start sub_80B1CBC -sub_80B1CBC: @ 80B1CBC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080B1CF0 @ =sub_80B1CFC - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B1CF4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0x8] - ldr r2, _080B1CF8 @ =gSharedMem + 0x19204 - ldrb r0, [r2, 0x6] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2, 0x6] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B1CF0: .4byte sub_80B1CFC -_080B1CF4: .4byte gTasks -_080B1CF8: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B1CBC - - thumb_func_start sub_80B1CFC -sub_80B1CFC: @ 80B1CFC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080B1D20 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080B1D30 - cmp r0, 0x1 - bgt _080B1D24 - cmp r0, 0 - beq _080B1D2A - b _080B1D78 - .align 2, 0 -_080B1D20: .4byte gTasks -_080B1D24: - cmp r0, 0x2 - beq _080B1D50 - b _080B1D78 -_080B1D2A: - bl sub_80B1B14 - b _080B1D44 -_080B1D30: - ldr r0, _080B1D4C @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x6] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080B1D78 - movs r0, 0x8 - ldrsb r0, [r4, r0] - bl nullsub_18 -_080B1D44: - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - b _080B1D78 - .align 2, 0 -_080B1D4C: .4byte gSharedMem + 0x19204 -_080B1D50: - ldrh r0, [r4, 0x1E] - adds r1, r0, 0x1 - strh r1, [r4, 0x1E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080B1D78 - movs r0, 0 - strh r0, [r4, 0x1E] - bl sub_80B1928 - ldr r2, _080B1D80 @ =gSharedMem + 0x19204 - ldrb r1, [r2, 0x6] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x6] - adds r0, r5, 0 - bl DestroyTask -_080B1D78: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B1D80: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B1CFC - - thumb_func_start unref_sub_80B1D84 -unref_sub_80B1D84: @ 80B1D84 - ldr r3, _080B1DB0 @ =gSprites - ldr r2, _080B1DB4 @ =gSharedMem + 0x19204 - adds r2, 0x58 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x24] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - bx lr - .align 2, 0 -_080B1DB0: .4byte gSprites -_080B1DB4: .4byte gSharedMem + 0x19204 - thumb_func_end unref_sub_80B1D84 - - thumb_func_start unref_sub_80B1DB8 -unref_sub_80B1DB8: @ 80B1DB8 - ldr r2, _080B1DD4 @ =gSprites - ldr r0, _080B1DD8 @ =gSharedMem + 0x19204 - adds r0, 0x58 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - bx lr - .align 2, 0 -_080B1DD4: .4byte gSprites -_080B1DD8: .4byte gSharedMem + 0x19204 - thumb_func_end unref_sub_80B1DB8 - - thumb_func_start sub_80B1DDC -sub_80B1DDC: @ 80B1DDC - push {lr} - ldr r0, _080B1DF4 @ =sub_80B1DFC - movs r1, 0xF - bl CreateTask - ldr r2, _080B1DF8 @ =gSharedMem + 0x19204 - ldrb r0, [r2, 0x6] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x6] - pop {r0} - bx r0 - .align 2, 0 -_080B1DF4: .4byte sub_80B1DFC -_080B1DF8: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B1DDC - - thumb_func_start sub_80B1DFC -sub_80B1DFC: @ 80B1DFC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _080B1E3C @ =gTasks - lsls r4, r5, 2 - adds r0, r4, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r1, r0, 0x1 - strh r1, [r3, 0x1C] - lsls r0, 16 - asrs r0, 16 - adds r6, r2, 0 - cmp r0, 0x6 - ble _080B1E8E - movs r0, 0 - strh r0, [r3, 0x1C] - movs r1, 0x1E - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080B1E50 - ldr r1, _080B1E40 @ =gSharedMem + 0x16800 - ldr r2, _080B1E44 @ =0x06002000 - ldr r0, _080B1E48 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _080B1E4C @ =0x84000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _080B1E66 - .align 2, 0 -_080B1E3C: .4byte gTasks -_080B1E40: .4byte gSharedMem + 0x16800 -_080B1E44: .4byte 0x06002000 -_080B1E48: .4byte 0x040000d4 -_080B1E4C: .4byte 0x84000400 -_080B1E50: - ldr r1, _080B1E94 @ =gSharedMem + 0x15800 - ldr r2, _080B1E98 @ =0x06002000 - ldr r0, _080B1E9C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _080B1EA0 @ =0x84000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldrh r0, [r3, 0x20] - adds r0, 0x1 - strh r0, [r3, 0x20] -_080B1E66: - adds r0, r4, 0 - adds r0, r5 - lsls r0, 3 - adds r0, r6 - ldrh r1, [r0, 0x1E] - movs r2, 0x1 - eors r1, r2 - strh r1, [r0, 0x1E] - movs r1, 0x20 - ldrsh r0, [r0, r1] - cmp r0, 0x9 - bne _080B1E8E - ldr r2, _080B1EA4 @ =gSharedMem + 0x19204 - ldrb r1, [r2, 0x6] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x6] - adds r0, r5, 0 - bl DestroyTask -_080B1E8E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B1E94: .4byte gSharedMem + 0x15800 -_080B1E98: .4byte 0x06002000 -_080B1E9C: .4byte 0x040000d4 -_080B1EA0: .4byte 0x84000400 -_080B1EA4: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B1DFC - - thumb_func_start sub_80B1EA8 -sub_80B1EA8: @ 80B1EA8 - push {r4-r7,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _080B1EE4 @ =sub_80B1F4C - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r6, r0, 24 - lsls r4, 24 - cmp r4, 0 - ble _080B1F08 - ldr r7, _080B1EE8 @ =0x0000237e - lsls r0, r5, 24 - adds r4, r0, 0 - cmp r4, 0 - ble _080B1EF0 - movs r5, 0 - ldr r2, _080B1EEC @ =gSharedMem + 0x19204 - movs r1, 0x13 - ldrsb r1, [r2, r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - b _080B1F1E - .align 2, 0 -_080B1EE4: .4byte sub_80B1F4C -_080B1EE8: .4byte 0x0000237e -_080B1EEC: .4byte gSharedMem + 0x19204 -_080B1EF0: - ldr r2, _080B1F04 @ =gSharedMem + 0x19204 - movs r1, 0x13 - ldrsb r1, [r2, r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - b _080B1F1E - .align 2, 0 -_080B1F04: .4byte gSharedMem + 0x19204 -_080B1F08: - movs r7, 0 - lsls r0, r5, 24 - adds r4, r0, 0 - cmp r4, 0 - ble _080B1F18 - movs r5, 0 - movs r3, 0xC - b _080B1F1C -_080B1F18: - movs r5, 0xC - movs r3, 0 -_080B1F1C: - ldr r2, _080B1F44 @ =gSharedMem + 0x19204 -_080B1F1E: - ldr r1, _080B1F48 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0x8] - strh r5, [r0, 0xA] - asrs r1, r4, 24 - strh r1, [r0, 0xC] - strh r3, [r0, 0xE] - ldrb r1, [r2, 0x7] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x7] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B1F44: .4byte gSharedMem + 0x19204 -_080B1F48: .4byte gTasks - thumb_func_end sub_80B1EA8 - - thumb_func_start sub_80B1F4C -sub_80B1F4C: @ 80B1F4C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _080B1F7C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x1C] - adds r1, r0, 0x1 - strh r1, [r3, 0x1C] - lsls r0, 16 - cmp r0, 0 - blt _080B1FC4 - movs r0, 0 - strh r0, [r3, 0x1C] - movs r1, 0xC - ldrsh r0, [r3, r1] - cmp r0, 0 - ble _080B1F80 - ldrh r0, [r3, 0xA] - adds r0, 0x1 - b _080B1F84 - .align 2, 0 -_080B1F7C: .4byte gTasks -_080B1F80: - ldrh r0, [r3, 0xA] - subs r0, 0x1 -_080B1F84: - strh r0, [r3, 0xA] - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r2 - ldrb r2, [r4, 0xA] - ldrh r3, [r4, 0x8] - movs r0, 0x11 - movs r1, 0x1 - bl BlendPalette - ldrb r2, [r4, 0xA] - ldrh r3, [r4, 0x8] - movs r0, 0x1A - movs r1, 0x1 - bl BlendPalette - movs r2, 0xA - ldrsh r1, [r4, r2] - movs r2, 0xE - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080B1FC4 - adds r0, r5, 0 - bl DestroyTask - ldr r2, _080B1FCC @ =gSharedMem + 0x19204 - ldrb r1, [r2, 0x7] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x7] -_080B1FC4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B1FCC: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B1F4C - - thumb_func_start sub_80B1FD0 -sub_80B1FD0: @ 80B1FD0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r5, 0 - ldr r0, _080B204C @ =gSharedMem + 0x19260 - ldr r6, _080B2050 @ =gSprites - adds r4, r0, 0 - adds r4, 0xD8 - adds r7, r0, 0 -_080B1FE8: - ldrb r1, [r7, 0x10] - movs r0, 0xC0 - ands r0, r1 - cmp r0, 0 - beq _080B2064 - mov r0, r8 - cmp r0, 0 - beq _080B2064 - lsls r0, r5, 24 - lsrs r0, 24 - bl sub_80B208C - ldrb r2, [r4, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r6 - ldrh r1, [r1, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r2, _080B2054 @ =0x060100a0 - adds r1, r2 - ldr r2, _080B2058 @ =REG_BG0HOFS - bl CpuSet - ldrb r0, [r4, 0x1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldr r2, _080B205C @ =gUnknown_083CA33C - ldr r0, _080B2060 @ =gUnknown_02038696 - adds r0, r5, r0 - ldrb r0, [r0] - adds r0, r2 - ldrb r0, [r0] - strh r0, [r1, 0x22] - ldrb r1, [r4, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - movs r3, 0x5 - negs r3, r3 - adds r2, r3, 0 - ands r1, r2 - b _080B2076 - .align 2, 0 -_080B204C: .4byte gSharedMem + 0x19260 -_080B2050: .4byte gSprites -_080B2054: .4byte 0x060100a0 -_080B2058: .4byte REG_BG0HOFS -_080B205C: .4byte gUnknown_083CA33C -_080B2060: .4byte gUnknown_02038696 -_080B2064: - ldrb r1, [r4, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 -_080B2076: - strb r1, [r0] - adds r4, 0x4 - adds r7, 0x1C - adds r5, 0x1 - cmp r5, 0x3 - ble _080B1FE8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80B1FD0 - - thumb_func_start sub_80B208C -sub_80B208C: @ 80B208C - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _080B20B0 @ =gSharedMem + 0x19260 - adds r2, r1, r0 - ldrb r1, [r2, 0x10] - movs r0, 0xC0 - ands r0, r1 - cmp r0, 0x40 - bne _080B20B8 - ldrb r0, [r2, 0x19] - lsls r0, 6 - ldr r1, _080B20B4 @ =gContestNextTurnNumbersGfx - adds r0, r1 - b _080B20BA - .align 2, 0 -_080B20B0: .4byte gSharedMem + 0x19260 -_080B20B4: .4byte gContestNextTurnNumbersGfx -_080B20B8: - ldr r0, _080B20C0 @ =gContestNextTurnRandomGfx -_080B20BA: - pop {r1} - bx r1 - .align 2, 0 -_080B20C0: .4byte gContestNextTurnRandomGfx - thumb_func_end sub_80B208C - - thumb_func_start sub_80B20C4 -sub_80B20C4: @ 80B20C4 - push {r4-r7,lr} - movs r6, 0 - ldr r7, _080B2134 @ =gSharedMem + 0x192DD -_080B20CA: - adds r0, r6, r7 - ldrb r0, [r0] - cmp r0, 0 - beq _080B2126 - lsls r0, r6, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl sub_80AF59C - lsls r0, 24 - cmp r0, 0 - bne _080B2126 - ldr r0, _080B2138 @ =gUnknown_02038696 - adds r0, r6, r0 - ldrb r0, [r0] - lsls r4, r0, 2 - adds r4, r0 - adds r4, 0x2 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x3 - bl sub_80AEFE8 - lsls r0, 16 - lsrs r0, 16 - lsls r4, 6 - ldr r2, _080B213C @ =0x0600c028 - adds r1, r4, r2 - strh r0, [r1] - ldr r1, _080B2140 @ =0x0600c02a - adds r2, r4, r1 - adds r1, r0, 0x1 - strh r1, [r2] - ldr r1, _080B2144 @ =0x0600c068 - adds r2, r4, r1 - adds r1, r0, 0 - adds r1, 0x10 - strh r1, [r2] - ldr r2, _080B2148 @ =0x0600c06a - adds r4, r2 - adds r0, 0x11 - strh r0, [r4] - movs r0, 0x63 - bl PlaySE -_080B2126: - adds r6, 0x1 - cmp r6, 0x3 - ble _080B20CA - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B2134: .4byte gSharedMem + 0x192DD -_080B2138: .4byte gUnknown_02038696 -_080B213C: .4byte 0x0600c028 -_080B2140: .4byte 0x0600c02a -_080B2144: .4byte 0x0600c068 -_080B2148: .4byte 0x0600c06a - thumb_func_end sub_80B20C4 - - thumb_func_start sub_80B214C -sub_80B214C: @ 80B214C - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _080B2178 @ =gSharedMem + 0x19260 - adds r2, r1, r0 - ldrb r1, [r2, 0x15] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _080B2172 - ldrb r1, [r2, 0xC] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080B217C -_080B2172: - movs r0, 0 - b _080B217E - .align 2, 0 -_080B2178: .4byte gSharedMem + 0x19260 -_080B217C: - movs r0, 0x1 -_080B217E: - pop {r1} - bx r1 - thumb_func_end sub_80B214C - - thumb_func_start sub_80B2184 -sub_80B2184: @ 80B2184 - push {r4-r7,lr} - sub sp, 0x4 - ldr r4, _080B2250 @ =REG_BG1CNT - ldrb r1, [r4] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r1, [r4, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x1] - ldr r0, _080B2254 @ =gUnknown_030042C0 - movs r2, 0xF0 - strh r2, [r0] - ldr r0, _080B2258 @ =gUnknown_030041B4 - movs r1, 0xA0 - strh r1, [r0] - ldr r0, _080B225C @ =REG_BG1HOFS - strh r2, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r1, _080B2260 @ =0x0600f000 - movs r0, 0 - str r0, [sp] - ldr r0, _080B2264 @ =0x040000d4 - mov r2, sp - str r2, [r0] - str r1, [r0, 0x4] - ldr r2, _080B2268 @ =0x85000400 - str r2, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _080B226C @ =gUnknown_08D17C3C - bl LZDecompressVram - ldrb r1, [r4] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r1 - strb r0, [r4] - movs r4, 0 - ldr r6, _080B2270 @ =gSprites - adds r7, r2, 0 - movs r5, 0x4 - ldr r3, _080B2274 @ =gSharedMem + 0x19338 -_080B21EE: - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x5] - adds r0, r7, 0 - ands r0, r2 - orrs r0, r5 - strb r0, [r1, 0x5] - ldrb r0, [r3, 0x1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x5] - adds r0, r7, 0 - ands r0, r2 - orrs r0, r5 - strb r0, [r1, 0x5] - adds r3, 0x4 - adds r4, 0x1 - cmp r4, 0x3 - ble _080B21EE - ldr r3, _080B2278 @ =REG_BG2CNT - ldrb r2, [r3] - movs r1, 0x4 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - movs r4, 0x1 - orrs r0, r4 - strb r0, [r3] - ldr r2, _080B227C @ =REG_BG0CNT - ldrb r0, [r2] - ands r1, r0 - orrs r1, r4 - strb r1, [r2] - adds r2, 0x2 - ldrb r1, [r2, 0x1] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x1] - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B2250: .4byte REG_BG1CNT -_080B2254: .4byte gUnknown_030042C0 -_080B2258: .4byte gUnknown_030041B4 -_080B225C: .4byte REG_BG1HOFS -_080B2260: .4byte 0x0600f000 -_080B2264: .4byte 0x040000d4 -_080B2268: .4byte 0x85000400 -_080B226C: .4byte gUnknown_08D17C3C -_080B2270: .4byte gSprites -_080B2274: .4byte gSharedMem + 0x19338 -_080B2278: .4byte REG_BG2CNT -_080B227C: .4byte REG_BG0CNT - thumb_func_end sub_80B2184 - - thumb_func_start sub_80B2280 -sub_80B2280: @ 80B2280 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r2, _080B2358 @ =0x06008000 - movs r3, 0x80 - lsls r3, 6 - ldr r0, _080B235C @ =gUnknown_030042C0 - mov r12, r0 - ldr r0, _080B2360 @ =gUnknown_030041B4 - mov r8, r0 - movs r5, 0 - ldr r1, _080B2364 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - ldr r6, _080B2368 @ =0x85000400 - movs r7, 0x85 - lsls r7, 24 -_080B22A4: - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080B22A4 - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _080B236C @ =0x0600f000 - movs r2, 0 - str r2, [sp] - ldr r0, _080B2364 @ =0x040000d4 - mov r3, sp - str r3, [r0] - str r1, [r0, 0x4] - ldr r1, _080B2368 @ =0x85000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - mov r0, r12 - strh r2, [r0] - mov r3, r8 - strh r2, [r3] - ldr r2, _080B2370 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r2, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x1] - ldrb r1, [r2, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - ldrb r1, [r2] - movs r3, 0xD - negs r3, r3 - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2] - movs r4, 0 - ldr r5, _080B2374 @ =gSprites - adds r6, r3, 0 - ldr r3, _080B2378 @ =gSharedMem + 0x19338 -_080B231E: - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x5] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1, 0x5] - ldrb r0, [r3, 0x1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x5] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1, 0x5] - adds r3, 0x4 - adds r4, 0x1 - cmp r4, 0x3 - ble _080B231E - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B2358: .4byte 0x06008000 -_080B235C: .4byte gUnknown_030042C0 -_080B2360: .4byte gUnknown_030041B4 -_080B2364: .4byte 0x040000d4 -_080B2368: .4byte 0x85000400 -_080B236C: .4byte 0x0600f000 -_080B2370: .4byte REG_BG1CNT -_080B2374: .4byte gSprites -_080B2378: .4byte gSharedMem + 0x19338 - thumb_func_end sub_80B2280 - - thumb_func_start sub_80B237C -sub_80B237C: @ 80B237C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080B23AC @ =gUnknown_030042C0 - movs r0, 0 - strh r0, [r1] - ldr r1, _080B23B0 @ =gUnknown_030041B4 - movs r0, 0xA0 - strh r0, [r1] - movs r0, 0x62 - movs r1, 0 - bl PlaySE12WithPanning - ldr r1, _080B23B4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080B23B8 @ =sub_80B23BC - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B23AC: .4byte gUnknown_030042C0 -_080B23B0: .4byte gUnknown_030041B4 -_080B23B4: .4byte gTasks -_080B23B8: .4byte sub_80B23BC - thumb_func_end sub_80B237C - - thumb_func_start sub_80B23BC -sub_80B23BC: @ 80B23BC - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _080B23F4 @ =gUnknown_030041B4 - ldrh r0, [r1] - subs r0, 0x7 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bge _080B23D4 - movs r0, 0 - strh r0, [r1] -_080B23D4: - ldrh r2, [r1] - cmp r2, 0 - bne _080B23EE - ldr r0, _080B23F8 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - strh r2, [r1, 0x8] - strh r2, [r1, 0xA] - strh r2, [r1, 0xC] - ldr r0, _080B23FC @ =sub_80B2400 - str r0, [r1] -_080B23EE: - pop {r0} - bx r0 - .align 2, 0 -_080B23F4: .4byte gUnknown_030041B4 -_080B23F8: .4byte gTasks -_080B23FC: .4byte sub_80B2400 - thumb_func_end sub_80B23BC - - thumb_func_start sub_80B2400 -sub_80B2400: @ 80B2400 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080B2424 @ =gTasks - lsls r3, r4, 2 - adds r0, r3, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r0, 0x8 - ldrsh r1, [r5, r0] - cmp r1, 0x1 - beq _080B247C - cmp r1, 0x1 - bgt _080B2428 - cmp r1, 0 - beq _080B2432 - b _080B24FC - .align 2, 0 -_080B2424: .4byte gTasks -_080B2428: - cmp r1, 0x2 - beq _080B24D6 - cmp r1, 0x3 - beq _080B24EC - b _080B24FC -_080B2432: - movs r2, 0 - adds r6, r3, 0 - ldr r5, _080B2470 @ =gSharedMem + 0x19218 - ldr r3, _080B2474 @ =gUnknown_02038696 -_080B243A: - adds r0, r2, r5 - adds r1, r2, r3 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _080B243A - bl sub_80AFA5C - bl sub_80B0588 - bl sub_80AEF50 - bl sub_80B1118 - movs r0, 0x1 - bl sub_80B1FD0 - bl sub_80AFFA0 - ldr r0, _080B2478 @ =gTasks - adds r1, r6, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x8] - b _080B24FC - .align 2, 0 -_080B2470: .4byte gSharedMem + 0x19218 -_080B2474: .4byte gUnknown_02038696 -_080B2478: .4byte gTasks -_080B247C: - ldr r0, _080B24C0 @ =gIsLinkContest - ldrb r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080B24D0 - ldr r2, _080B24C4 @ =gSharedMem + 0x19204 - ldrb r0, [r2, 0x7] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x7] - bl sub_80AE074 - lsls r0, 24 - cmp r0, 0 - beq _080B249E - bl sub_80AF438 -_080B249E: - ldr r4, _080B24C8 @ =sub_80C8C80 - adds r0, r4, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B24CC @ =sub_80AD8DC - adds r1, r4, 0 - bl SetTaskFuncWithFollowupFunc - bl sub_80AF860 - movs r0, 0x2 - strh r0, [r5, 0x8] - b _080B24FC - .align 2, 0 -_080B24C0: .4byte gIsLinkContest -_080B24C4: .4byte gSharedMem + 0x19204 -_080B24C8: .4byte sub_80C8C80 -_080B24CC: .4byte sub_80AD8DC -_080B24D0: - bl sub_80AF438 - b _080B24E2 -_080B24D6: - ldr r0, _080B24E8 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x7] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080B24FC -_080B24E2: - movs r0, 0x3 - strh r0, [r5, 0x8] - b _080B24FC - .align 2, 0 -_080B24E8: .4byte gSharedMem + 0x19204 -_080B24EC: - bl sub_80AF120 - bl sub_80AEB30 - movs r0, 0 - strh r0, [r5, 0x8] - ldr r0, _080B2504 @ =sub_80B253C - str r0, [r5] -_080B24FC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B2504: .4byte sub_80B253C - thumb_func_end sub_80B2400 - - thumb_func_start sub_80B2508 -sub_80B2508: @ 80B2508 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080B2530 @ =gUnknown_030041B4 - ldrh r0, [r1] - adds r0, 0x7 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA0 - ble _080B252C - ldr r0, _080B2534 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _080B2538 @ =sub_80ADCDC - str r0, [r1] -_080B252C: - pop {r0} - bx r0 - .align 2, 0 -_080B2530: .4byte gUnknown_030041B4 -_080B2534: .4byte gTasks -_080B2538: .4byte sub_80ADCDC - thumb_func_end sub_80B2508 - - thumb_func_start sub_80B253C -sub_80B253C: @ 80B253C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B255C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0x9 - bgt _080B2560 - adds r0, r2, 0x1 - strh r0, [r1, 0xC] - b _080B259C - .align 2, 0 -_080B255C: .4byte gTasks -_080B2560: - ldrh r3, [r1, 0xA] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r0, 0 - bne _080B257E - ldrh r2, [r1, 0x8] - movs r4, 0x8 - ldrsh r0, [r1, r4] - cmp r0, 0x10 - bne _080B257A - adds r0, r3, 0x1 - strh r0, [r1, 0xA] - b _080B259C -_080B257A: - adds r0, r2, 0x1 - b _080B259A -_080B257E: - ldrh r0, [r1, 0x8] - movs r3, 0x8 - ldrsh r2, [r1, r3] - cmp r2, 0 - bne _080B2598 - strh r2, [r1, 0xA] - strh r2, [r1, 0xC] - ldr r0, _080B2594 @ =sub_80B25A4 - str r0, [r1] - b _080B259C - .align 2, 0 -_080B2594: .4byte sub_80B25A4 -_080B2598: - subs r0, 0x1 -_080B259A: - strh r0, [r1, 0x8] -_080B259C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80B253C - - thumb_func_start sub_80B25A4 -sub_80B25A4: @ 80B25A4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B25C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r1, [r4, 0xC] - movs r2, 0xC - ldrsh r0, [r4, r2] - cmp r0, 0x9 - bgt _080B25C8 - adds r0, r1, 0x1 - strh r0, [r4, 0xC] - b _080B25D8 - .align 2, 0 -_080B25C4: .4byte gTasks -_080B25C8: - movs r0, 0 - strh r0, [r4, 0xC] - movs r0, 0x61 - movs r1, 0 - bl PlaySE12WithPanning - ldr r0, _080B25E0 @ =sub_80B2508 - str r0, [r4] -_080B25D8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B25E0: .4byte sub_80B2508 - thumb_func_end sub_80B25A4 - - thumb_func_start sub_80B25E4 -sub_80B25E4: @ 80B25E4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r6, 0 - ldr r5, _080B26B4 @ =gSprites -_080B25F6: - bl AllocOamMatrix - lsls r1, r6, 2 - ldr r2, _080B26B8 @ =gSharedMem + 0x19338 - mov r8, r2 - adds r4, r1, r2 - ldrb r1, [r4] - lsls r3, r1, 4 - adds r3, r1 - lsls r3, 2 - adds r3, r5 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1F - ands r0, r1 - lsls r0, 1 - ldrb r1, [r3, 0x3] - movs r7, 0x3F - negs r7, r7 - adds r2, r7, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x3] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r2, [r0, 0x1] - movs r3, 0x4 - negs r3, r3 - adds r1, r3, 0 - ands r2, r1 - movs r1, 0x1 - orrs r2, r1 - strb r2, [r0, 0x1] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r9 - bl StartSpriteAffineAnim - mov r7, r9 - cmp r7, 0x2 - bne _080B267A - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl AnimateSprite - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r3, 0x5 - negs r3, r3 - adds r2, r3, 0 - ands r1, r2 - strb r1, [r0] -_080B267A: - adds r6, 0x1 - cmp r6, 0x3 - ble _080B25F6 - ldr r0, _080B26BC @ =sub_80B26C8 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B26C0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - mov r7, r9 - strh r7, [r1, 0x8] - ldr r2, _080B26C4 @ =0xfffffecc - add r2, r8 - ldrb r0, [r2, 0x7] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x7] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B26B4: .4byte gSprites -_080B26B8: .4byte gSharedMem + 0x19338 -_080B26BC: .4byte sub_80B26C8 -_080B26C0: .4byte gTasks -_080B26C4: .4byte 0xfffffecc - thumb_func_end sub_80B25E4 - - thumb_func_start sub_80B26C8 -sub_80B26C8: @ 80B26C8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _080B2750 @ =gSprites - ldr r4, _080B2754 @ =gSharedMem + 0x19338 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _080B274A - ldr r0, _080B2758 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0x8] - cmp r0, 0x1 - bne _080B2718 - adds r5, r2, 0 - movs r3, 0x4 - adds r2, r4, 0 - movs r4, 0x3 -_080B26FE: - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - adds r1, 0x3E - ldrb r0, [r1] - orrs r0, r3 - strb r0, [r1] - adds r2, 0x4 - subs r4, 0x1 - cmp r4, 0 - bge _080B26FE -_080B2718: - movs r4, 0 -_080B271A: - lsls r0, r4, 2 - ldr r5, _080B2754 @ =gSharedMem + 0x19338 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080B2750 @ =gSprites - adds r0, r1 - bl FreeSpriteOamMatrix - adds r4, 0x1 - cmp r4, 0x3 - ble _080B271A - ldr r0, _080B275C @ =0xfffffecc - adds r2, r5, r0 - ldrb r1, [r2, 0x7] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x7] - adds r0, r6, 0 - bl DestroyTask -_080B274A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B2750: .4byte gSprites -_080B2754: .4byte gSharedMem + 0x19338 -_080B2758: .4byte gTasks -_080B275C: .4byte 0xfffffecc - thumb_func_end sub_80B26C8 - - thumb_func_start sub_80B2760 -sub_80B2760: @ 80B2760 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0xB1 - lsls r0, 1 - cmp r1, r0 - bls _080B2770 - movs r1, 0x1 -_080B2770: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end sub_80B2760 - - thumb_func_start sub_80B2778 -sub_80B2778: @ 80B2778 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080B278C @ =0x0000019b - cmp r1, r0 - bls _080B2786 - movs r1, 0 -_080B2786: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080B278C: .4byte 0x0000019b - thumb_func_end sub_80B2778 - - thumb_func_start sub_80B2790 -sub_80B2790: @ 80B2790 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - ldr r4, _080B27F0 @ =gSharedMem + 0x19260 - adds r0, r4 - ldrh r0, [r0, 0x6] - bl sub_80B2760 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, _080B27F4 @ =gContestMons - lsls r0, r6, 6 - adds r0, r1 - ldrh r0, [r0] - bl sub_80B2778 - lsls r0, 16 - lsrs r7, r0, 16 - adds r4, 0xE8 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x14 - bl memset - bl battle_anim_clear_some_data - ldr r1, _080B27F8 @ =gBattleMonForms - movs r2, 0 - adds r0, r1, 0x3 -_080B27D0: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _080B27D0 - cmp r5, 0x90 - beq _080B2848 - cmp r5, 0x90 - bgt _080B2806 - cmp r5, 0x4C - beq _080B2898 - cmp r5, 0x4C - bgt _080B27FC - cmp r5, 0xD - beq _080B2898 - b _080B28BE - .align 2, 0 -_080B27F0: .4byte gSharedMem + 0x19260 -_080B27F4: .4byte gContestMons -_080B27F8: .4byte gBattleMonForms -_080B27FC: - cmp r5, 0x82 - beq _080B2898 - cmp r5, 0x8F - beq _080B2898 - b _080B28BE -_080B2806: - cmp r5, 0xD8 - beq _080B2880 - cmp r5, 0xD8 - bgt _080B2814 - cmp r5, 0xAE - beq _080B2822 - b _080B28BE -_080B2814: - cmp r5, 0xDA - beq _080B288C - movs r0, 0x88 - lsls r0, 1 - cmp r5, r0 - beq _080B2848 - b _080B28BE -_080B2822: - ldr r0, _080B2840 @ =gBaseStats - lsls r1, r7, 3 - subs r1, r7 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x6] - cmp r0, 0x7 - beq _080B2838 - ldrb r0, [r1, 0x7] - cmp r0, 0x7 - bne _080B28B8 -_080B2838: - ldr r1, _080B2844 @ =gUnknown_0202F7C4 - movs r0, 0 - b _080B28BC - .align 2, 0 -_080B2840: .4byte gBaseStats -_080B2844: .4byte gUnknown_0202F7C4 -_080B2848: - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - ldr r4, _080B2878 @ =gSharedMem + 0x19260 - adds r0, r4 - ldrb r5, [r0, 0x1B] - ldr r6, _080B287C @ =gContestMons - lsls r5, 6 - adds r0, r5, r6 - ldrh r0, [r0] - bl sub_80B2778 - adds r4, 0xE8 - strh r0, [r4, 0x2] - adds r6, 0x38 - adds r5, r6 - ldr r0, [r5] - str r0, [r4, 0x10] - ldrb r0, [r4, 0x4] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x4] - b _080B28BE - .align 2, 0 -_080B2878: .4byte gSharedMem + 0x19260 -_080B287C: .4byte gContestMons -_080B2880: - ldr r1, _080B2888 @ =gHappinessMoveAnim - movs r0, 0xFF - b _080B28BC - .align 2, 0 -_080B2888: .4byte gHappinessMoveAnim -_080B288C: - ldr r1, _080B2894 @ =gHappinessMoveAnim - movs r0, 0 - b _080B28BC - .align 2, 0 -_080B2894: .4byte gHappinessMoveAnim -_080B2898: - ldr r0, _080B28B0 @ =gSharedMem + 0x19204 - adds r2, r0, 0 - adds r2, 0x5A - ldrb r1, [r2] - cmp r1, 0 - bne _080B28B8 - movs r0, 0x2 - strb r0, [r2] - ldr r0, _080B28B4 @ =gUnknown_0202F7C4 - strb r1, [r0] - b _080B28BE - .align 2, 0 -_080B28B0: .4byte gSharedMem + 0x19204 -_080B28B4: .4byte gUnknown_0202F7C4 -_080B28B8: - ldr r1, _080B28C8 @ =gUnknown_0202F7C4 - movs r0, 0x1 -_080B28BC: - strb r0, [r1] -_080B28BE: - bl sub_80B2968 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B28C8: .4byte gUnknown_0202F7C4 - thumb_func_end sub_80B2790 - - thumb_func_start sub_80B28CC -sub_80B28CC: @ 80B28CC - push {r4,lr} - ldr r4, _080B28EC @ =gSharedMem + 0x19348 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x14 - bl memset - subs r4, 0xEA - ldrb r0, [r4] - cmp r0, 0 - beq _080B28E6 - subs r0, 0x1 - strb r0, [r4] -_080B28E6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B28EC: .4byte gSharedMem + 0x19348 - thumb_func_end sub_80B28CC - - thumb_func_start sub_80B28F0 -sub_80B28F0: @ 80B28F0 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r6, _080B2924 @ =gSharedMem + 0x19348 - strb r4, [r6, 0x5] - ldr r5, _080B2928 @ =gContestMons - lsls r4, 6 - adds r0, r4, r5 - ldrh r0, [r0] - bl sub_80B2778 - strh r0, [r6] - adds r0, r5, 0 - adds r0, 0x38 - adds r0, r4, r0 - ldr r0, [r0] - str r0, [r6, 0x8] - adds r5, 0x3C - adds r4, r5 - ldr r0, [r4] - str r0, [r6, 0xC] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080B2924: .4byte gSharedMem + 0x19348 -_080B2928: .4byte gContestMons - thumb_func_end sub_80B28F0 - - thumb_func_start sub_80B292C -sub_80B292C: @ 80B292C - push {lr} - ldr r0, _080B2958 @ =SpriteCallbackDummy - bl CreateInvisibleSpriteWithCallback - ldr r1, _080B295C @ =gObjectBankIDs - strb r0, [r1, 0x3] - ldr r0, _080B2960 @ =gBankTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080B2964 @ =gSprites - adds r0, r1 - bl InitSpriteAffineAnim - bl sub_80B2968 - pop {r0} - bx r0 - .align 2, 0 -_080B2958: .4byte SpriteCallbackDummy -_080B295C: .4byte gObjectBankIDs -_080B2960: .4byte gBankTarget -_080B2964: .4byte gSprites - thumb_func_end sub_80B292C - - thumb_func_start sub_80B2968 -sub_80B2968: @ 80B2968 - push {r4,lr} - ldr r0, _080B29AC @ =gObjectBankIDs - ldrb r0, [r0, 0x3] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _080B29B0 @ =gSprites - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - movs r0, 0x3 - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - movs r0, 0x3 - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - adds r4, 0x3E - ldrb r0, [r4] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B29AC: .4byte gObjectBankIDs -_080B29B0: .4byte gSprites - thumb_func_end sub_80B2968 - - thumb_func_start sub_80B29B4 -sub_80B29B4: @ 80B29B4 - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080B29D4 @ =gBattleMoves - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x6] - cmp r0, 0x20 - bhi _080B2A6C - lsls r0, 2 - ldr r1, _080B29D8 @ =_080B29DC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B29D4: .4byte gBattleMoves -_080B29D8: .4byte _080B29DC - .align 2, 0 -_080B29DC: - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A60 - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A60 - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C - .4byte _080B2A6C -_080B2A60: - ldr r1, _080B2A68 @ =gBankTarget - movs r0, 0x2 - b _080B2A70 - .align 2, 0 -_080B2A68: .4byte gBankTarget -_080B2A6C: - ldr r1, _080B2A78 @ =gBankTarget - movs r0, 0x3 -_080B2A70: - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080B2A78: .4byte gBankTarget - thumb_func_end sub_80B29B4 - - thumb_func_start sub_80B2A7C -sub_80B2A7C: @ 80B2A7C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 - ldr r1, _080B2AC8 @ =gUnknown_02038690 - ldrb r0, [r1] - cmp r0, 0 - beq _080B2AB6 -_080B2AA8: - adds r6, 0x1 - cmp r6, 0x2 - bgt _080B2AB6 - adds r0, r6, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080B2AA8 -_080B2AB6: - mov r0, r9 - cmp r0, 0xFF - bne _080B2AD0 - ldr r0, _080B2ACC @ =gContestPlayerMonIndex - ldrb r0, [r0] - cmp r6, r0 - beq _080B2AD0 - movs r0, 0 - b _080B2C38 - .align 2, 0 -_080B2AC8: .4byte gUnknown_02038690 -_080B2ACC: .4byte gContestPlayerMonIndex -_080B2AD0: - ldr r0, _080B2AE4 @ =gSpecialVar_ContestCategory - ldrh r0, [r0] - cmp r0, 0x4 - bhi _080B2B16 - lsls r0, 2 - ldr r1, _080B2AE8 @ =_080B2AEC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B2AE4: .4byte gSpecialVar_ContestCategory -_080B2AE8: .4byte _080B2AEC - .align 2, 0 -_080B2AEC: - .4byte _080B2B16 - .4byte _080B2B00 - .4byte _080B2B04 - .4byte _080B2B08 - .4byte _080B2B0E -_080B2B00: - adds r0, r7, 0x3 - b _080B2B12 -_080B2B04: - adds r0, r7, 0x6 - b _080B2B12 -_080B2B08: - adds r0, r7, 0 - adds r0, 0x9 - b _080B2B12 -_080B2B0E: - adds r0, r7, 0 - adds r0, 0xC -_080B2B12: - lsls r0, 24 - lsrs r7, r0, 24 -_080B2B16: - mov r1, r9 - cmp r1, 0xFE - beq _080B2BC4 - mov r0, r9 - movs r1, 0x1 - bl sub_80B2C4C - adds r4, r0, 0 - lsls r4, 24 - ldr r2, _080B2B98 @ =gSaveBlock1 - lsrs r4, 19 - ldr r0, _080B2B9C @ =0x00002dfc - adds r1, r2, r0 - adds r1, r4, r1 - ldr r5, _080B2BA0 @ =gContestMons - lsls r6, 6 - adds r0, r5, 0 - adds r0, 0x38 - adds r0, r6, r0 - ldr r0, [r0] - str r0, [r1] - adds r1, r4, r2 - mov r8, r1 - adds r0, r6, r5 - ldrh r1, [r0] - ldr r0, _080B2BA4 @ =0x00002e04 - add r0, r8 - strh r1, [r0] - movs r0, 0xB8 - lsls r0, 6 - adds r1, r2, r0 - adds r1, r4, r1 - adds r0, r5, 0 - adds r0, 0x3C - adds r0, r6, r0 - ldr r0, [r0] - str r0, [r1] - ldr r1, _080B2BA8 @ =0x00002e07 - adds r0, r2, r1 - adds r0, r4, r0 - adds r1, r5, 0x2 - adds r1, r6, r1 - str r2, [sp] - bl StringCopy - ldr r2, [sp] - ldr r0, _080B2BAC @ =0x00002e12 - adds r2, r0 - adds r4, r2 - adds r5, 0xD - adds r6, r5 - adds r0, r4, 0 - adds r1, r6, 0 - bl StringCopy - mov r1, r9 - cmp r1, 0xFF - beq _080B2BB8 - ldr r0, _080B2BB0 @ =gSpecialVar_ContestCategory - ldrh r1, [r0] - ldr r0, _080B2BB4 @ =0x00002e06 - add r0, r8 - strb r1, [r0] - b _080B2C36 - .align 2, 0 -_080B2B98: .4byte gSaveBlock1 -_080B2B9C: .4byte 0x00002dfc -_080B2BA0: .4byte gContestMons -_080B2BA4: .4byte 0x00002e04 -_080B2BA8: .4byte 0x00002e07 -_080B2BAC: .4byte 0x00002e12 -_080B2BB0: .4byte gSpecialVar_ContestCategory -_080B2BB4: .4byte 0x00002e06 -_080B2BB8: - ldr r0, _080B2BC0 @ =0x00002e06 - add r0, r8 - strb r7, [r0] - b _080B2C36 - .align 2, 0 -_080B2BC0: .4byte 0x00002e06 -_080B2BC4: - ldr r5, _080B2C14 @ =gSharedMem + 0x15DE0 - ldr r2, _080B2C18 @ =gContestMons - lsls r4, r6, 6 - adds r0, r2, 0 - adds r0, 0x38 - adds r0, r4, r0 - ldr r0, [r0] - str r0, [r5] - adds r0, r2, 0 - adds r0, 0x3C - adds r0, r4, r0 - ldr r0, [r0] - str r0, [r5, 0x4] - adds r0, r4, r2 - ldrh r0, [r0] - strh r0, [r5, 0x8] - adds r0, r5, 0 - adds r0, 0xB - adds r1, r2, 0x2 - adds r1, r4, r1 - str r2, [sp] - bl StringCopy - ldr r0, _080B2C1C @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - ldr r2, [sp] - cmp r0, 0 - beq _080B2C24 - adds r0, r5, 0 - adds r0, 0x16 - lsls r1, r6, 3 - subs r1, r6 - lsls r1, 2 - ldr r2, _080B2C20 @ =gLinkPlayers + 0x8 - adds r1, r2 - bl StringCopy - b _080B2C32 - .align 2, 0 -_080B2C14: .4byte gSharedMem + 0x15DE0 -_080B2C18: .4byte gContestMons -_080B2C1C: .4byte gIsLinkContest -_080B2C20: .4byte gLinkPlayers + 0x8 -_080B2C24: - adds r0, r5, 0 - adds r0, 0x16 - adds r1, r2, 0 - adds r1, 0xD - adds r1, r4, r1 - bl StringCopy -_080B2C32: - ldr r0, _080B2C48 @ =gSharedMem + 0x15DE0 - strb r7, [r0, 0xA] -_080B2C36: - movs r0, 0x1 -_080B2C38: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080B2C48: .4byte gSharedMem + 0x15DE0 - thumb_func_end sub_80B2A7C - - thumb_func_start sub_80B2C4C -sub_80B2C4C: @ 80B2C4C - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r0, 0x2 - beq _080B2C6E - cmp r0, 0x2 - ble _080B2C66 - cmp r0, 0x3 - beq _080B2CA0 - b _080B2CD4 -_080B2C66: - cmp r2, 0 - blt _080B2CD4 - adds r0, r2, 0 - b _080B2D16 -_080B2C6E: - cmp r1, 0 - beq _080B2C98 - movs r2, 0x4 - ldr r0, _080B2C9C @ =gSaveBlock1 + 0x2DFC - adds r4, r0, 0 - adds r4, 0x60 - adds r3, r0, 0 - adds r3, 0x80 -_080B2C7E: - adds r1, r3, 0 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5,r6} - stm r1!, {r5,r6} - subs r4, 0x20 - subs r3, 0x20 - subs r2, 0x1 - cmp r2, 0x2 - bgt _080B2C7E -_080B2C98: - movs r0, 0x2 - b _080B2D16 - .align 2, 0 -_080B2C9C: .4byte gSaveBlock1 + 0x2DFC -_080B2CA0: - cmp r1, 0 - beq _080B2CCA - movs r2, 0x7 - ldr r0, _080B2CD0 @ =gSaveBlock1 + 0x2DFC - adds r4, r0, 0 - adds r4, 0xC0 - adds r3, r0, 0 - adds r3, 0xE0 -_080B2CB0: - adds r1, r3, 0 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5,r7} - stm r1!, {r5,r7} - subs r4, 0x20 - subs r3, 0x20 - subs r2, 0x1 - cmp r2, 0x5 - bgt _080B2CB0 -_080B2CCA: - movs r0, 0x5 - b _080B2D16 - .align 2, 0 -_080B2CD0: .4byte gSaveBlock1 + 0x2DFC -_080B2CD4: - ldr r0, _080B2CE8 @ =gSpecialVar_ContestCategory - ldrh r0, [r0] - cmp r0, 0x4 - bhi _080B2D14 - lsls r0, 2 - ldr r1, _080B2CEC @ =_080B2CF0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B2CE8: .4byte gSpecialVar_ContestCategory -_080B2CEC: .4byte _080B2CF0 - .align 2, 0 -_080B2CF0: - .4byte _080B2D04 - .4byte _080B2D08 - .4byte _080B2D0C - .4byte _080B2D10 - .4byte _080B2D14 -_080B2D04: - movs r0, 0x8 - b _080B2D16 -_080B2D08: - movs r0, 0x9 - b _080B2D16 -_080B2D0C: - movs r0, 0xA - b _080B2D16 -_080B2D10: - movs r0, 0xB - b _080B2D16 -_080B2D14: - movs r0, 0xC -_080B2D16: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80B2C4C - - thumb_func_start sub_80B2D1C -sub_80B2D1C: @ 80B2D1C - push {r4-r7,lr} - ldr r0, _080B2D48 @ =gSaveBlock1 - ldr r4, _080B2D4C @ =gUnknown_083CC5D0 - ldr r1, _080B2D50 @ =0x00002dfc - adds r3, r0, r1 - movs r2, 0x7 -_080B2D28: - adds r1, r3, 0 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5,r6} - stm r1!, {r5,r6} - adds r4, 0x20 - adds r3, 0x20 - subs r2, 0x1 - cmp r2, 0 - bge _080B2D28 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B2D48: .4byte gSaveBlock1 -_080B2D4C: .4byte gUnknown_083CC5D0 -_080B2D50: .4byte 0x00002dfc - thumb_func_end sub_80B2D1C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/contest_ai.s b/asm/contest_ai.s index 5cf1e0b62..94347f2ad 100644 --- a/asm/contest_ai.s +++ b/asm/contest_ai.s @@ -1414,7 +1414,7 @@ ContestAICmd_get_move_excitement: @ 81292E4 adds r2, 0x1E adds r1, r2 ldrh r0, [r1] - bl contest_get_move_excitement + bl Contest_GetMoveExcitement lsls r0, 24 asrs r0, 24 strh r0, [r4, 0x18] @@ -3319,7 +3319,7 @@ ContestAICmd_check_can_participate: @ 812A0BC bl sub_8128A7C lsls r0, 24 lsrs r0, 24 - bl sub_80AF59C + bl Contest_IsMonsTurnDisabled lsls r0, 24 cmp r0, 0 beq _0812A0E4 @@ -5049,7 +5049,7 @@ _0812AD06: ldrh r0, [r1] cmp r0, 0 beq _0812AD30 - bl contest_get_move_excitement + bl Contest_GetMoveExcitement lsls r0, 24 asrs r0, 24 cmp r0, 0x1 diff --git a/asm/contest_effect.s b/asm/contest_effect.s index 1f7c7b109..d06789976 100644 --- a/asm/contest_effect.s +++ b/asm/contest_effect.s @@ -860,7 +860,7 @@ _080B8340: bne _080B836E lsls r0, r6, 24 lsrs r0, 24 - bl sub_80AF59C + bl Contest_IsMonsTurnDisabled lsls r0, 24 cmp r0, 0 bne _080B836E diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 5390a8765..594d569ad 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -1086,7 +1086,7 @@ _080C2904: adds r1, r0 lsls r1, 3 adds r1, r7 - ldr r0, _080C2934 @ =gUnknown_02038690 + ldr r0, _080C2934 @ =gContestFinalStandings adds r0, r4, r0 ldrb r0, [r0] strh r0, [r1, 0x8] @@ -1098,7 +1098,7 @@ _080C2904: .align 2, 0 _080C292C: .4byte gTasks _080C2930: .4byte sub_80C3A5C -_080C2934: .4byte gUnknown_02038690 +_080C2934: .4byte gContestFinalStandings _080C2938: ldr r0, _080C2990 @ =gSharedMem + 0x18000 ldrb r0, [r0, 0x5] @@ -1128,7 +1128,7 @@ _080C295A: adds r0, 0x1 strh r0, [r4, 0x8] movs r4, 0 - ldr r1, _080C2998 @ =gUnknown_02038690 + ldr r1, _080C2998 @ =gContestFinalStandings ldrb r0, [r1] cmp r0, 0 beq _080C2984 @@ -1149,7 +1149,7 @@ _080C2984: .align 2, 0 _080C2990: .4byte gSharedMem + 0x18000 _080C2994: .4byte sub_80C3B30 -_080C2998: .4byte gUnknown_02038690 +_080C2998: .4byte gContestFinalStandings _080C299C: lsls r1, r5, 2 adds r0, r1, r5 @@ -1166,7 +1166,7 @@ _080C299C: movs r0, 0 strh r0, [r2, 0xA] movs r4, 0 - ldr r2, _080C29F4 @ =gUnknown_02038690 + ldr r2, _080C29F4 @ =gContestFinalStandings ldrb r0, [r2] ldr r1, _080C29F8 @ =gIsLinkContest ldr r3, _080C29FC @ =gStringVar1 @@ -1196,7 +1196,7 @@ _080C29D4: lsls r4, 6 b _080C2A10 .align 2, 0 -_080C29F4: .4byte gUnknown_02038690 +_080C29F4: .4byte gContestFinalStandings _080C29F8: .4byte gIsLinkContest _080C29FC: .4byte gStringVar1 _080C2A00: .4byte gLinkPlayers + 0x8 @@ -1310,7 +1310,7 @@ _080C2ADC: adds r0, r3, 0 strh r0, [r1] movs r1, 0 - ldr r3, _080C2BD0 @ =gUnknown_02038690 + ldr r3, _080C2BD0 @ =gContestFinalStandings ldrb r0, [r3] lsls r4, r7, 2 mov r10, r4 @@ -1416,7 +1416,7 @@ _080C2B14: _080C2BC4: .4byte gUnknown_030042C4 _080C2BC8: .4byte gUnknown_03004240 _080C2BCC: .4byte 0x00005050 -_080C2BD0: .4byte gUnknown_02038690 +_080C2BD0: .4byte gContestFinalStandings _080C2BD4: .4byte gContestMons _080C2BD8: .4byte gMonFrontPicTable _080C2BDC: .4byte gMonFrontPicCoords @@ -1705,7 +1705,7 @@ sub_80C2E14: @ 80C2E14 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 - ldr r1, _080C2E80 @ =gUnknown_02038690 + ldr r1, _080C2E80 @ =gContestFinalStandings ldr r0, _080C2E84 @ =gContestPlayerMonIndex ldrb r0, [r0] adds r0, r1 @@ -1715,9 +1715,9 @@ sub_80C2E14: @ 80C2E14 bl sub_810FB10 ldr r0, _080C2E88 @ =gSpecialVar_ContestRank ldrb r0, [r0] - bl sub_80B2A7C + bl Contest_SaveWinner movs r0, 0xFE - bl sub_80B2A7C + bl Contest_SaveWinner ldr r4, _080C2E8C @ =gSharedMem ldr r0, _080C2E90 @ =0x00015ddf adds r1, r4, r0 @@ -1748,7 +1748,7 @@ sub_80C2E14: @ 80C2E14 pop {r0} bx r0 .align 2, 0 -_080C2E80: .4byte gUnknown_02038690 +_080C2E80: .4byte gContestFinalStandings _080C2E84: .4byte gContestPlayerMonIndex _080C2E88: .4byte gSpecialVar_ContestRank _080C2E8C: .4byte gSharedMem @@ -3385,7 +3385,7 @@ sub_80C3B30: @ 80C3B30 lsrs r0, 24 mov r12, r0 movs r5, 0 - ldr r1, _080C3BC0 @ =gUnknown_02038690 + ldr r1, _080C3BC0 @ =gContestFinalStandings ldrb r0, [r1] ldr r2, _080C3BC4 @ =gTasks mov r10, r2 @@ -3453,7 +3453,7 @@ _080C3B82: pop {r0} bx r0 .align 2, 0 -_080C3BC0: .4byte gUnknown_02038690 +_080C3BC0: .4byte gContestFinalStandings _080C3BC4: .4byte gTasks _080C3BC8: .4byte 0x00000fff _080C3BCC: .4byte 0x0600e100 @@ -4058,7 +4058,7 @@ _080C403A: negs r0, r0 _080C4060: strb r0, [r5, 0x12] - ldr r0, _080C40A8 @ =gUnknown_02038690 + ldr r0, _080C40A8 @ =gContestFinalStandings add r0, r8 ldrb r0, [r0] cmp r0, 0 @@ -4091,7 +4091,7 @@ _080C4098: .4byte gUnknown_02038678 _080C409C: .4byte gUnknown_02038670 _080C40A0: .4byte gSharedMem + 0x18018 _080C40A4: .4byte gUnknown_02038688 -_080C40A8: .4byte gUnknown_02038690 +_080C40A8: .4byte gContestFinalStandings _080C40AC: cmp r2, 0 ble _080C40B4 @@ -4549,7 +4549,7 @@ sub_80C43F4: @ 80C43F4 ldrb r0, [r4] ldr r1, _080C4438 @ =gSpecialVar_ContestRank ldrb r1, [r1] - bl sub_80AE398 + bl Contest_InitAllPokemon ldrb r0, [r4] bl sub_80AE82C _080C4422: @@ -4636,7 +4636,7 @@ _080C44BC: .4byte gSpecialVar_ContestRank sub_80C44C0: @ 80C44C0 push {r4-r7,lr} sub sp, 0x4 - ldr r1, _080C44E8 @ =gUnknown_02038690 + ldr r1, _080C44E8 @ =gContestFinalStandings ldr r0, _080C44EC @ =gContestPlayerMonIndex ldrb r0, [r0] adds r0, r1 @@ -4657,7 +4657,7 @@ _080C44DE: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080C44E8: .4byte gUnknown_02038690 +_080C44E8: .4byte gContestFinalStandings _080C44EC: .4byte gContestPlayerMonIndex _080C44F0: .4byte gSpecialVar_ContestCategory _080C44F4: .4byte _080C44F8 @@ -5016,7 +5016,7 @@ _080C47BC: .4byte gSpecialVar_0x8006 sub_80C47C0: @ 80C47C0 push {lr} movs r1, 0 - ldr r2, _080C47E8 @ =gUnknown_02038690 + ldr r2, _080C47E8 @ =gContestFinalStandings ldrb r0, [r2] ldr r3, _080C47EC @ =gSpecialVar_0x8005 cmp r0, 0 @@ -5036,7 +5036,7 @@ _080C47E0: pop {r0} bx r0 .align 2, 0 -_080C47E8: .4byte gUnknown_02038690 +_080C47E8: .4byte gContestFinalStandings _080C47EC: .4byte gSpecialVar_0x8005 thumb_func_end sub_80C47C0 @@ -5044,7 +5044,7 @@ _080C47EC: .4byte gSpecialVar_0x8005 sub_80C47F0: @ 80C47F0 push {r4,lr} movs r2, 0 - ldr r3, _080C4830 @ =gUnknown_02038690 + ldr r3, _080C4830 @ =gContestFinalStandings ldrb r0, [r3] ldr r1, _080C4834 @ =gIsLinkContest ldr r4, _080C4838 @ =gStringVar3 @@ -5075,7 +5075,7 @@ _080C4812: bl sub_80C4674 b _080C484C .align 2, 0 -_080C4830: .4byte gUnknown_02038690 +_080C4830: .4byte gContestFinalStandings _080C4834: .4byte gIsLinkContest _080C4838: .4byte gStringVar3 _080C483C: .4byte gLinkPlayers + 0x8 @@ -5097,7 +5097,7 @@ _080C4854: .4byte gUnknown_0203857D sub_80C4858: @ 80C4858 push {lr} movs r1, 0 - ldr r2, _080C4884 @ =gUnknown_02038690 + ldr r2, _080C4884 @ =gContestFinalStandings ldrb r0, [r2] ldr r3, _080C4888 @ =gStringVar1 cmp r0, 0 @@ -5118,19 +5118,19 @@ _080C4878: pop {r0} bx r0 .align 2, 0 -_080C4884: .4byte gUnknown_02038690 +_080C4884: .4byte gContestFinalStandings _080C4888: .4byte gStringVar1 thumb_func_end sub_80C4858 thumb_func_start sub_80C488C sub_80C488C: @ 80C488C push {lr} - ldr r0, _080C4898 @ =sub_80AB47C + ldr r0, _080C4898 @ =CB2_StartContest bl SetMainCallback2 pop {r0} bx r0 .align 2, 0 -_080C4898: .4byte sub_80AB47C +_080C4898: .4byte CB2_StartContest thumb_func_end sub_80C488C thumb_func_start sub_80C489C @@ -5293,7 +5293,7 @@ sub_80C49C4: @ 80C49C4 lsrs r4, 24 ldr r0, _080C49E4 @ =gUnknown_02038694 ldrb r0, [r0] - bl sub_80AE098 + bl Contest_CreatePlayerMon ldr r1, _080C49E8 @ =sub_80C8734 ldr r2, _080C49EC @ =sub_80C49F0 adds r0, r4, 0 diff --git a/asm/contest_link_80C857C.s b/asm/contest_link_80C857C.s index 63280f0f8..0ff6823b5 100644 --- a/asm/contest_link_80C857C.s +++ b/asm/contest_link_80C857C.s @@ -861,18 +861,18 @@ _080C8C18: lsls r0, 24 cmp r0, 0 beq _080C8C7A - ldr r0, _080C8C2C @ =gUnknown_02038690 + ldr r0, _080C8C2C @ =gContestFinalStandings movs r1, 0x4 bl sub_80C857C b _080C8C4C .align 2, 0 -_080C8C2C: .4byte gUnknown_02038690 +_080C8C2C: .4byte gContestFinalStandings _080C8C30: bl sub_80C85D8 lsls r0, 24 cmp r0, 0 beq _080C8C7A - ldr r0, _080C8C60 @ =gUnknown_02038690 + ldr r0, _080C8C60 @ =gContestFinalStandings ldr r1, _080C8C64 @ =gUnknown_0203869B ldrb r1, [r1] lsls r1, 8 @@ -892,7 +892,7 @@ _080C8C4C: strh r1, [r0, 0x8] b _080C8C7A .align 2, 0 -_080C8C60: .4byte gUnknown_02038690 +_080C8C60: .4byte gContestFinalStandings _080C8C64: .4byte gUnknown_0203869B _080C8C68: .4byte gBlockRecvBuffer _080C8C6C: .4byte gTasks diff --git a/data-de/contest_opponents.inc b/data-de/contest_opponents.inc index 4c891f644..1bdf7027e 100644 --- a/data-de/contest_opponents.inc +++ b/data-de/contest_opponents.inc @@ -1,5 +1,5 @@ .align 2 -gUnknown_083C9408:: @ 83C9408 +gContestOpponents:: @ 83C9408 .2byte 286 @ SPECIES_ID .string "FIFFI$", 11 @ POKE_NICKNAME .string "JIMMY$", 8 @ TRAINER_NAME diff --git a/data-de/text/contest_strings.inc b/data-de/text/contest_strings.inc index 19cfe330f..02264880e 100644 --- a/data-de/text/contest_strings.inc +++ b/data-de/text/contest_strings.inc @@ -260,11 +260,11 @@ gUnknown_083CAF70:: @ 83CAF70 .4byte ContestString_Smart .4byte ContestString_Tough -gUnknown_083CAF84:: @ 83CAF84 +gText_Contest_WhichMoveWillBePlayed:: @ 83CAF84 .string "Ausdruck {NAME_END}! Welche\n" .string "Attacke wird gezeigt?$" -gUnknown_083CAFAE:: @ 83CAFAE +gText_Contest_ButItCantParticipate:: @ 83CAFAE .string "Ausdruck {NAME_END}! Aber es\n" .string "kann nicht teilnehmen!$" @@ -361,7 +361,7 @@ ContestString_StandOutDidnt: .string "keinen Ausdruck zeigen.{PAUSE_UNTIL_PRESS}$" .align 2 -gUnknown_083CB2F0:: @ 83CB2F0 +gContestStandOutStrings:: @ 83CB2F0 .4byte ContestString_StandOutNone .4byte ContestString_StandOutNotMuch .4byte ContestString_StandOutLittle @@ -596,22 +596,22 @@ ContestString_ScrambleOrder: .string "durcheinander.{PAUSE 60}$" gUnknown_083CBD52:: @ 83CBD52 -ContestString_JudgeExpectantly2: +ContestString_JudgeExpectantly2:: .string "Der JUROR betrachtet\n" .string "{STR_VAR_1} interessiert.{PAUSE 60}$" gUnknown_083CBD79:: @ 83CBD79 -ContestString_WentOverWell: +ContestString_WentOverWell:: .string "Die Combo der Ausdrücke\n" .string "kam gut an.{PAUSE 60}$" gUnknown_083CBD9D:: @ 83CBD9D -ContestString_WentOverVeryWell: +ContestString_WentOverVeryWell:: .string "Die Combo der Ausdrücke\n" .string "kam sehr gut an.{PAUSE 60}$" gUnknown_083CBDC6:: @ 83CBDC6 -ContestString_AppealComboExcellently: +ContestString_AppealComboExcellently:: .string "Die Combo der Ausdrücke\n" .string "kam exzellent an.{PAUSE 60}$" ContestString_AvertGaze: @@ -670,40 +670,40 @@ ContestString_Unaffected: .string "unbeeindruckt.{PAUSE 60}$" gUnknown_083CC075:: @ 83CC075 -ContestString_DissapointedRepeat: +ContestString_DissapointedRepeat:: .string "{STR_VAR_1} enttäuscht\n" .string "durch Wiederholung.{PAUSE 60}$" gUnknown_083CC0A0:: @ 83CC0A0 -ContestString_WentOverGreat: +ContestString_WentOverGreat:: .string "Die {STR_VAR_3} von\n" .string "{STR_VAR_1} war sehr gut.{PAUSE 60}$" gUnknown_083CC0BC:: @ 83CC0BC -ContestString_DidntGoWell: +ContestString_DidntGoWell:: .string "Die {STR_VAR_3} von\n" .string "{STR_VAR_1} war nicht gut.{PAUSE 60}$" gUnknown_083CC0E3:: @ 83CC0E3 -ContestString_GotCrowdGoing: +ContestString_GotCrowdGoing:: .string "{STR_VAR_1} begeistert\n" .string "Publikum mit {STR_VAR_3}.{PAUSE 60}$" gUnknown_083CC103:: @ 83CC103 -ContestString_CantAppealNextTurn: +ContestString_CantAppealNextTurn:: .string "{STR_VAR_1} setzt in der \n" .string "folgenden Runde aus.{PAUSE 60}$" -ContestString_AttractedAttention: +ContestString_AttractedAttention:: .string "Die Aufmerksamkeit des\n" .string "Publikums liegt auf ihm.{PAUSE 60}$" gUnknown_083CC14A:: @ 83CC14A -ContestString_CrowdWatches: +ContestString_CrowdWatches:: .string "Das Publikum beobachtet\n" .string "weiterhin {STR_VAR_3}.{PAUSE 60}$" gUnknown_083CC16E:: @ 83CC16E -ContestString_Ignored2: +ContestString_Ignored2:: .string "{STR_VAR_2} von\n" .string "{STR_VAR_1} ist ignoriert.{PAUSE 60}$" @@ -772,19 +772,19 @@ gUnknown_083CC188:: @ 83CC188 .4byte ContestString_Unaffected .4byte ContestString_AttractedAttention -gUnknown_083CC280:: @ 83CC280 +gText_Contest_Shyness:: @ 83CC280 .string "Scheu$" -gUnknown_083CC288:: @ 83CC288 +gText_Contest_Anxiety:: @ 83CC288 .string "Besorgnis$" -gUnknown_083CC290:: @ 83CC290 +gText_Contest_Laziness:: @ 83CC290 .string "Faulheit$" -gUnknown_083CC299:: @ 83CC299 +gText_Contest_Hesitancy:: @ 83CC299 .string "Zögern$" -gUnknown_083CC2A3:: @ 83CC2A3 +gText_Contest_Fear:: @ 83CC2A3 .string "Furcht$" ContestString_Coolness: @@ -799,7 +799,7 @@ ContestString_Toughness: .string "Stärke$" .align 2 -gUnknown_083CC2D8:: @ 83CC2D8 +gContestCategoryStrings:: @ 83CC2D8 .4byte ContestString_Coolness .4byte ContestString_Beauty2 .4byte ContestString_Cuteness diff --git a/data/contest_opponents.inc b/data/contest_opponents.inc index 2c502285e..8c9c76f1b 100644 --- a/data/contest_opponents.inc +++ b/data/contest_opponents.inc @@ -1,5 +1,5 @@ .align 2 -gUnknown_083C9408:: @ 83C9408 +gContestOpponents:: @ 83C9408 .2byte 286 @ SPECIES_ID .string "POOCHY$", 11 @ POKE_NICKNAME .string "JIMMY$", 8 @ TRAINER_NAME diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc index 94366cc41..5c9fdf0db 100644 --- a/data/text/contest_strings.inc +++ b/data/text/contest_strings.inc @@ -208,10 +208,10 @@ gUnknown_083CAF70:: @ 83CAF70 .4byte ContestString_Smart .4byte ContestString_Tough -gUnknown_083CAF84:: @ 83CAF84 +gText_Contest_WhichMoveWillBePlayed:: @ 83CAF84 .string "Appeal no. {NAME_END}!\nWhich move will be played?$" -gUnknown_083CAFAE:: @ 83CAFAE +gText_Contest_ButItCantParticipate:: @ 83CAFAE .string "Appeal no. {NAME_END}!\nBut it can’t participate!$" gUnknown_083CAFD7:: @ 83CAFD7 @@ -280,7 +280,7 @@ ContestString_StandOutDidnt: .string "{STR_VAR_1} hasn’t made\nits appeal.{PAUSE_UNTIL_PRESS}$" .align 2 -gUnknown_083CB2F0:: @ 83CB2F0 +gContestStandOutStrings:: @ 83CB2F0 .4byte ContestString_StandOutNone .4byte ContestString_StandOutNotMuch .4byte ContestString_StandOutLittle @@ -450,19 +450,19 @@ ContestString_ScrambleOrder: .string "It scrambled up the\norder for the next turn.{PAUSE 60}$" gUnknown_083CBD52:: @ 83CBD52 -ContestString_JudgeExpectantly2: +ContestString_JudgeExpectantly2:: .string "The JUDGE looked at\n{STR_VAR_1} expectantly.{PAUSE 60}$" gUnknown_083CBD79:: @ 83CBD79 -ContestString_WentOverWell: +ContestString_WentOverWell:: .string "The appeal combo went\nover well.{PAUSE 60}$" gUnknown_083CBD9D:: @ 83CBD9D -ContestString_WentOverVeryWell: +ContestString_WentOverVeryWell:: .string "The appeal combo went\nover very well.{PAUSE 60}$" gUnknown_083CBDC6:: @ 83CBDC6 -ContestString_AppealComboExcellently: +ContestString_AppealComboExcellently:: .string "The appeal combo went\nover excellently.{PAUSE 60}$" ContestString_AvertGaze: .string "{STR_VAR_1} managed to\navert its gaze.{PAUSE 60}$" @@ -504,33 +504,33 @@ ContestString_Unaffected: .string "{STR_VAR_1} was\nunaffected.{PAUSE 60}$" gUnknown_083CC075:: @ 83CC075 -ContestString_DissapointedRepeat: +ContestString_DissapointedRepeat:: .string "{STR_VAR_1} disappointed\nby repeating an appeal.{PAUSE 60}$" gUnknown_083CC0A0:: @ 83CC0A0 -ContestString_WentOverGreat: +ContestString_WentOverGreat:: .string "{STR_VAR_1}’s {STR_VAR_3}\nwent over great.{PAUSE 60}$" gUnknown_083CC0BC:: @ 83CC0BC -ContestString_DidntGoWell: +ContestString_DidntGoWell:: .string "{STR_VAR_1}’s {STR_VAR_3}\ndidn’t go over well here...{PAUSE 60}$" gUnknown_083CC0E3:: @ 83CC0E3 -ContestString_GotCrowdGoing: +ContestString_GotCrowdGoing:: .string "{STR_VAR_1}’s {STR_VAR_3}\ngot the crowd going.{PAUSE 60}$" gUnknown_083CC103:: @ 83CC103 -ContestString_CantAppealNextTurn: +ContestString_CantAppealNextTurn:: .string "{STR_VAR_1} can’t appeal\nnext turn...{PAUSE 60}$" -ContestString_AttractedAttention: +ContestString_AttractedAttention:: .string "It attracted the crowd’s\nattention.{PAUSE 60}$" gUnknown_083CC14A:: @ 83CC14A -ContestString_CrowdWatches: +ContestString_CrowdWatches:: .string "The crowd continues to\nwatch {STR_VAR_3}.{PAUSE 60}$" gUnknown_083CC16E:: @ 83CC16E -ContestString_Ignored2: +ContestString_Ignored2:: .string "{STR_VAR_1}’s\n{STR_VAR_2} is ignored.{PAUSE 60}$" .align 2 @@ -598,19 +598,19 @@ gUnknown_083CC188:: @ 83CC188 .4byte ContestString_Unaffected .4byte ContestString_AttractedAttention -gUnknown_083CC280:: @ 83CC280 +gText_Contest_Shyness:: @ 83CC280 .string "shyness$" -gUnknown_083CC288:: @ 83CC288 +gText_Contest_Anxiety:: @ 83CC288 .string "anxiety$" -gUnknown_083CC290:: @ 83CC290 +gText_Contest_Laziness:: @ 83CC290 .string "laziness$" -gUnknown_083CC299:: @ 83CC299 +gText_Contest_Hesitancy:: @ 83CC299 .string "hesitancy$" -gUnknown_083CC2A3:: @ 83CC2A3 +gText_Contest_Fear:: @ 83CC2A3 .string "fear$" ContestString_Coolness: @@ -625,7 +625,7 @@ ContestString_Toughness: .string "toughness$" .align 2 -gUnknown_083CC2D8:: @ 83CC2D8 +gContestCategoryStrings:: @ 83CC2D8 .4byte ContestString_Coolness .4byte ContestString_Beauty2 .4byte ContestString_Cuteness diff --git a/include/battle.h b/include/battle.h index 3b37c0853..dda71e562 100644 --- a/include/battle.h +++ b/include/battle.h @@ -3,6 +3,22 @@ #include "sprite.h" +#define F_TARGET_SELECTED_POKEMON 0 +#define F_TARGET_SPECIAL (1 << 0) +#define F_TARGET_UNK2 (1 << 1) +#define F_TARGET_RANDOM (1 << 2) +#define F_TARGET_BOTH_ENEMIES (1 << 3) +#define F_TARGET_USER (1 << 4) +#define F_TARGET_ALL_EXCEPT_USER (1 << 5) +#define F_TARGET_ENEMY_SIDE (1 << 6) + +#define F_MAKES_CONTACT (1 << 0) +#define F_AFFECTED_BY_PROTECT (1 << 1) +#define F_AFFECTED_BY_MAGIC_COAT (1 << 2) +#define F_AFFECTED_BY_SNATCH (1 << 3) +#define F_MIRROR_MOVE_COMPATIBLE (1 << 4) +#define F_AFFECTED_BY_KINGS_ROCK (1 << 5) + #define BATTLE_TYPE_DOUBLE 0x0001 #define BATTLE_TYPE_LINK 0x0002 #define BATTLE_TYPE_WILD 0x0004 diff --git a/include/battle_anim.h b/include/battle_anim.h index 9598c5e5f..9decb8f95 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -3,19 +3,11 @@ #include "sprite.h" -#define REG_BGnCNT_BITFIELD(n) (*(struct BGCntrlBitfield *)REG_ADDR_BG##n##CNT) +#define REG_BGnCNT_BITFIELD(n) (*(vBgCnt *)REG_ADDR_BG##n##CNT) +#define REG_BG0CNT_BITFIELD REG_BGnCNT_BITFIELD(0) #define REG_BG1CNT_BITFIELD REG_BGnCNT_BITFIELD(1) #define REG_BG2CNT_BITFIELD REG_BGnCNT_BITFIELD(2) - -struct BGCntrlBitfield -{ - volatile u16 priority:2; - volatile u16 charBaseBlock:2; - volatile u16 field_0_2:4; - volatile u16 field_1_0:5; - volatile u16 areaOverflowMode:1; - volatile u16 screenSize:2; -}; +#define REG_BG3CNT_BITFIELD REG_BGnCNT_BITFIELD(3) struct BattleAnimBackground { @@ -42,6 +34,12 @@ struct UnknownStruct3 u8 filler1[0xB]; }; +extern void (*gAnimScriptCallback)(void); +extern u8 gAnimScriptActive; +extern u8 gHappinessMoveAnim; +extern u8 gUnknown_0202F7C4; + +void ExecuteMoveAnim(u16 move); void DoMoveAnim(const u8 *const moveAnims[], u16 b, u8 c); bool8 IsAnimBankSpriteVisible(u8 a); void sub_8076034(u8, u8); diff --git a/include/constants/moves.h b/include/constants/moves.h index ceec76c13..5fe1da004 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -357,4 +357,6 @@ #define MOVE_DOOM_DESIRE 353 #define MOVE_PSYCHO_BOOST 354 +#define NUM_MOVES 355 + #endif // GUARD_CONSTANTS_MOVES_H diff --git a/include/contest.h b/include/contest.h index 983f9bc6a..ae2767aef 100644 --- a/include/contest.h +++ b/include/contest.h @@ -1,40 +1,90 @@ #ifndef GUARD_CONTEST_H #define GUARD_CONTEST_H +enum +{ + CONTEST_CATEGORY_COOL, + CONTEST_CATEGORY_BEAUTY, + CONTEST_CATEGORY_CUTE, + CONTEST_CATEGORY_SMART, + CONTEST_CATEGORY_TOUGH, +}; + +enum +{ + CONTEST_EFFECT_HIGHLY_APPEALING, + CONTEST_EFFECT_USER_MORE_STARTLED, + CONTEST_EFFECT_APPEAL_ONLY_ONCE, + CONTEST_EFFECT_REPEATABLE, + CONTEST_EFFECT_AVOID_STARTLE_ONCE, + CONTEST_EFFECT_AVOID_STARTLE, + CONTEST_EFFECT_AVOID_STARTLE_LITTLE, + //... +}; + +struct ContestMove +{ + u8 effect; + u8 contestCategory:3; + u8 comboStarterId; + u8 comboMoves[4]; +}; + +struct ContestEffect +{ + u8 effectType; + u8 appeal; + u8 jam; +}; + struct ContestPokemon { - /* 0x00 */ u16 species; - /* 0x02 */ u8 nickname[POKEMON_NAME_LENGTH]; - /* 0x0D */ u8 trainerName[8]; - /* 0x15 */ u8 unk15; - /* 0x16 */ u8 unk16; - /* 0x17 */ u8 filler17[7]; - /* 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[12]; - /* 0x38 */ u32 unk38; - /* 0x3C */ u32 unk3C; + /*0x00*/ u16 species; + /*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x0D*/ u8 trainerName[8]; + /*0x15*/ u8 trainerGfxId; + /*0x16*/ u8 unk16; + /*0x17*/ u8 filler17; + /*0x18*/ u32 flags; + /*0x1C*/ u8 unk1C_0:2; + u8 unk1C_2:1; + u8 unk1C_3:1; + u8 unk1C_4:1; + u8 unk1C_5:1; + u8 unk1C_6:1; + u8 unk1C_7:1; + u8 filler1D; + /*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 unk2C; + /*0x2D*/ u8 unk2D[11]; + /*0x38*/ u32 personality; // personality + /*0x3C*/ u32 otId; // otId }; // wow extern struct ContestPokemon gContestMons[]; +extern const struct ContestMove gContestMoves[]; +extern const struct ContestEffect gContestEffects[]; +extern const u8 *const gContestEffectStrings[]; + void ResetLinkContestBoolean(void); void sub_80AB2AC(void); -void sub_80AB47C(void); -void sub_80AE098(u8); -void sub_80AE398(u8, u8); +void CB2_StartContest(void); +void Contest_CreatePlayerMon(u8); +void Contest_InitAllPokemon(u8, u8); u8 sub_80AE47C(struct Pokemon *party); -u32 sub_80AE770(u8, u8); +u16 sub_80AE770(u8, u8); void sub_80AE82C(u8); -u8 sub_80AEB1C(); +u8 sub_80AEB1C(u16); void sub_80AF668(void); void sub_80B0F28(u8); -int sub_80B2A7C(u8); //Don't know return type size +bool8 Contest_SaveWinner(u8); u8 sub_80B2C4C(u8, u8); -void sub_80B2D1C(void); +void Contest_ResetWinners(void); #endif // GUARD_CONTEST_H diff --git a/include/contest_link_80C857C.h b/include/contest_link_80C857C.h index 9135ba2e7..c0f7088b0 100644 --- a/include/contest_link_80C857C.h +++ b/include/contest_link_80C857C.h @@ -3,6 +3,7 @@ void sub_80C8734(u8); void sub_80C88AC(u8); +void sub_80C89DC(u8); void sub_80C8E1C(u8); void sub_80C8EBC(u8); void sub_80C8F34(u8); diff --git a/include/data2.h b/include/data2.h index 53a90944d..97cb4fd7a 100644 --- a/include/data2.h +++ b/include/data2.h @@ -22,7 +22,7 @@ extern const struct SpriteFrameImage gSpriteImageTable_81E7A70[]; extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7B70[]; extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7BEC[]; -extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18; +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[]; extern const union AnimCmd *const gSpriteAnimTable_81E7C64[]; extern struct MonCoords gMonFrontPicCoords[]; extern struct MonCoords gMonBackPicCoords[]; diff --git a/include/gba/macro.h b/include/gba/macro.h index a0edf2a49..d9e6739b3 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -104,25 +104,28 @@ } #define DmaClearLarge(dmaNum, dest, size, block, bit) \ -{ \ - u32 _size = size; \ - while (1) \ - { \ - DmaFill##bit(dmaNum, 0, dest, (block)); \ - dest += (block); \ - _size -= (block); \ - if (_size <= (block)) \ - { \ - DmaFill##bit(dmaNum, 0, dest, _size); \ - break; \ - } \ - } \ +{ \ + const void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaFill##bit(dmaNum, 0, _dest, (block)); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, 0, _dest, _size); \ + break; \ + } \ + } \ } #define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16) - #define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32) +#define DmaClearLarge16(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 16) +#define DmaClearLarge32(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 32) + #define DmaCopyDefvars(dmaNum, src, dest, size, bit) \ { \ const void *_src = src; \ diff --git a/include/gba/types.h b/include/gba/types.h index 480619d21..33ae7df9a 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -28,6 +28,17 @@ typedef u8 bool8; typedef u16 bool16; typedef u32 bool32; +struct BgCnt +{ + u16 priority:2; + u16 charBaseBlock:2; + u16 dummy:4; + u16 screenBaseBlock:5; + u16 areaOverflowMode:1; + u16 screenSize:2; +}; +typedef volatile struct BgCnt vBgCnt; + struct PlttData { u16 r:5; // red diff --git a/include/global.h b/include/global.h index 6670f3837..a4e71852c 100644 --- a/include/global.h +++ b/include/global.h @@ -41,8 +41,8 @@ fndec\ #define POKEMON_NAME_LENGTH 10 #define OT_NAME_LENGTH 7 -#define min(a, b) (a >= b ? a : b) -#define max(a, b) (a <= b ? a : b) +#define min(a, b) ((a) <= (b) ? (a) : (b)) +#define max(a, b) ((a) >= (b) ? (a) : (b)) // why does GF hate 2d arrays #define MULTI_DIM_ARR(x, dim, y) ((x) * dim + (y)) @@ -50,9 +50,9 @@ fndec\ // dim access enums enum { - B_8 = 1, - B_16 = 2, - B_32 = 4 + B_8 = 1, + B_16 = 2, + B_32 = 4 }; // There are many quirks in the source code which have overarching behavioral differences from @@ -230,12 +230,6 @@ struct RamScript struct RamScriptData data; }; -struct SB1_2EFC_Struct -{ - u16 var; - u8 unknown[0x1E]; -}; - struct EasyChatPair { u16 unk0_0:7; @@ -530,26 +524,6 @@ union MauvilleMan u8 filler[0x40]; // needed to pad out the struct }; -struct Unk_SB_Access_Struct1 -{ - u8 filler0[0xF8]; - struct SB1_2EFC_Struct sb1_2EFC_struct[5]; -}; - -struct Unk_SB_Access_Struct2 -{ - /*0x0000*/ struct SB1_2EFC_Struct sb1_2EFC_struct2[12]; // each is 0x20 - /*0x2F84*/ u8 filler[0x18]; -}; - -/*0x2E04*/ -typedef union SB_Struct -{ - struct Unk_SB_Access_Struct1 unkSB1; - struct Unk_SB_Access_Struct2 unkSB2; -} SB_Struct; -// size is 0x198 - struct UnknownSaveStruct2ABC { u8 val0; @@ -632,6 +606,16 @@ struct RecordMixingGift struct RecordMixingGiftData data; }; +struct ContestWinner +{ + /*0x00*/ u32 personality; // personality + /*0x04*/ u32 otId; // otId + /*0x08*/ u16 species; // species + /*0x0A*/ u8 contestCategory; + /*0x0B*/ u8 nickname[0x16-0xB]; + /*0x16*/ u8 trainerName[0x20-0x16]; +}; + // there should be enough flags for all 412 slots // each slot takes up 8 flags // if the value is not divisible by 8, we need to account for the reminder as well @@ -710,8 +694,8 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2D90*/ u8 filler_2D90[0x4]; /*0x2D94*/ union MauvilleMan mauvilleMan; /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff - /*0x2DFC*/ u8 filler_2DFC[0x8]; - /*0x2E04*/ SB_Struct sbStruct; + /*0x2DFC*/ struct ContestWinner contestWinners[8]; + /*0x2EFC*/ struct ContestWinner museumPortraits[5]; /*0x2F9C*/ struct DayCare daycare; /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5]; /*0x3108*/ u8 filler_3108[8]; diff --git a/include/graphics.h b/include/graphics.h index 7c23e90ab..f94450f86 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -28,8 +28,38 @@ extern const u8 gInterfaceGfx_PremierBall[]; extern const u8 gInterfacePal_PremierBall[]; extern const u8 gUnknown_08D030D0[]; +extern const u8 gUnknown_08D17144[]; +extern const u8 gUnknown_08D1725C[]; +extern const u8 gUnknown_08D17424[]; +extern const u8 gUnknown_08D17C3C[]; +extern const u8 gContestMiscGfx[]; +extern const u8 gContestAudienceGfx[]; +extern const u8 gContestJudgeSymbolsGfx[]; +extern const u8 gContest3Pal[]; +extern const u8 gTiles_8D1975C[]; +extern const u8 gUnknown_08D1977C[]; +extern const u8 gUnknown_08D1A250[]; +extern const u8 gUnknown_08D1A364[]; +extern const u8 gUnknown_08D1A490[]; +extern const u8 gUnknown_08D1A618[]; + +extern const u8 gContestJudgeGfx[]; +extern const u8 gContest2Pal[]; + extern const u8 gMonFootprint_QuestionMark[]; +extern const u8 gContestNextTurnGfx[]; +extern const u8 gContestNextTurnNumbersGfx[]; +extern const u8 gContestNextTurnRandomGfx[]; +extern const u8 gBattleAnimSpriteSheet_264[]; +extern const u8 gBattleAnimSpritePalette_264[]; +extern const u8 gBattleAnimSpritePalette_265[]; +extern const u8 gBattleAnimSpritePalette_067[]; +extern const u8 gBattleAnimSpritePalette_068[]; +extern const u8 gContestApplauseGfx[]; +extern const u8 gContestApplauseMeterGfx[]; +extern const u16 gContestPal[]; + // data/graphics/pokemon/graphics.inc extern const u8 gMonFrontPic_Bulbasaur[]; extern const u8 gMonPalette_Bulbasaur[]; diff --git a/include/learn_move.h b/include/learn_move.h index 7a05ea60b..85fbf046e 100644 --- a/include/learn_move.h +++ b/include/learn_move.h @@ -1,21 +1,6 @@ #ifndef GUARD_LEARN_MOVE_H #define GUARD_LEARN_MOVE_H -struct ContestMove -{ - u8 effect; - u8 contestCategory:3; - u8 comboStarterId; - u8 comboMoves[4]; -}; - -struct ContestEffect -{ - u8 effectType; - u8 appeal; - u8 jam; -}; - void sub_8132670(void); #endif // GUARD_LEARN_MOVE_H diff --git a/include/new_game.h b/include/new_game.h index f59154af4..5be7f6265 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -6,7 +6,7 @@ void copy_word_to_mem(u8 *copyTo, u8 *copyFrom); void InitPlayerTrainerId(void); void SetDefaultOptions(void); void ClearPokedexFlags(void); -void sub_8052DA8(void); +void ResetContestAndMuseumWinners(void); void sub_8052DE4(void); void WarpToTruck(void); void ClearSav2(void); diff --git a/include/sprite.h b/include/sprite.h index 29a0be562..9937a0797 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -236,6 +236,7 @@ extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[]; extern s16 gSpriteCoordOffsetX; extern s16 gSpriteCoordOffsetY; +extern u8 gReservedSpritePaletteCount; extern struct Sprite gSprites[]; diff --git a/include/tv.h b/include/tv.h index 0f355043c..c2158ece0 100644 --- a/include/tv.h +++ b/include/tv.h @@ -26,6 +26,7 @@ void sub_80BE138(TVShow *show); void sub_80BE160(TVShow *show); void sub_80BE160(TVShow *); void sub_80BE188(void); +void sub_80BE23C(u16); void sub_80BE320(void); void StartMassOutbreak(void); void sub_80BE5FC(void); diff --git a/include/util.h b/include/util.h index 87fa4aecc..676c3bd9b 100644 --- a/include/util.h +++ b/include/util.h @@ -11,5 +11,6 @@ void StoreWordInTwoHalfwords(u16 *, u32); void LoadWordFromTwoHalfwords(u16 *, u32 *); u16 CalcCRC16(u8 *data, int length); void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha); +void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output); #endif // GUARD_UTIL_H diff --git a/ld_script.txt b/ld_script.txt index bc5df01bf..07334bd2c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -141,7 +141,7 @@ SECTIONS { src/battle/battle_anim_80A7E7C.o(.text); src/field/item.o(.text); src/debug/matsuda_debug_menu.o(.text); - asm/contest.o(.text); + src/contest.o(.text); src/field/shop.o(.text); src/field/berry.o(.text); src/field/script_menu.o(.text); 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 new file mode 100644 index 000000000..3aa3c8f59 --- /dev/null +++ b/src/contest.c @@ -0,0 +1,5542 @@ +#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" +#include "battle_anim.h" +#include "blend_palette.h" +#include "contest.h" +#include "contest_link_80C857C.h" +#include "data2.h" +#include "decompress.h" +#include "ewram.h" +#include "graphics.h" +#include "link.h" +#include "m4a.h" +#include "main.h" +#include "menu.h" +#include "menu_cursor.h" +#include "overworld.h" +#include "palette.h" +#include "random.h" +#include "rom_8077ABC.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" +#include "util.h" + +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); +extern void sub_81288F4(); +extern u8 sub_8128944(void); + +struct Shared18000 +{ + /*0x18000*/ u8 unk18000; + /*0x18001*/ u8 filler18001[3]; + /*0x18004*/ u16 unk18004[16][16]; + /*0x18204*/ u16 unk18204[0x200]; + /*0x18604*/ u16 unk18604[0x200]; + /*0x18A04*/ u8 unk18A04[0x800]; +}; + +struct Contest +{ + /*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; + u16 unk1920A_3:1; + u16 unk1920A_4:1; + u16 unk1920A_5:1; + u16 unk1920A_6:1; + u16 unk1920A_7:1; + /*0x1920B*/ u16 unk1920B_0:1; + u16 unk1920B_1:1; + u16 unk1920B_2:1; + /*0x1920C*/ u8 mainTaskId; + /*0x1920D*/ u8 unk1920D[4]; + /*0x19211*/ u8 unk19211; + /*0x19212*/ u8 unk19212; + /*0x19213*/ u8 filler19213; + /*0x19214*/ u8 unk19214; + /*0x19215*/ u8 unk19215; + /*0x19216*/ u8 unk19216; // sprite ID + /*0x19217*/ s8 applauseLevel; + /*0x19218*/ u8 unk19218[4]; + /*0x1921C*/ u32 unk1921C; // saved RNG value? + u16 unk19220[5][4]; // move history? + u8 unk19248[5][4]; // excitement history + u8 applauseMeterSpriteId; // sprite ID + /*0x1925D*/ u8 unk1925D; + /*0x1925E*/ u8 unk1925E; +}; + +struct ContestantStatus +{ + s16 appeal1; // move appeal? + s16 appeal2; // final appeal after end of turn, maybe? + s16 unk4; + u16 currMove; + u16 prevMove; + u8 moveCategory; + u8 unkB_0:2; + u8 unkB_2:2; + u8 moveRepeatCount:3; + u8 unkB_7:1; // used a one-time move? + u8 unkC_0:1; + u8 unkC_1:2; + s8 unkD; + u8 unkE; + u8 unkF; + 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; // status action? + u8 unk14; + u8 disappointedRepeat: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; + u8 unk16; + u8 unk17; + u8 unk18; + u8 unk19; // turn position + u8 attentionLevel; // How much the Pokemon "stood out" + u8 unk1B; +}; + +struct UnknownContestStruct3 +{ + u8 unk0; + u8 unk1; + //u8 unk2_0:1; + //u8 unk2_1:1; + u8 unk2; // maybe a bitfield + u8 filler3; +}; + +// possibly the same as UnknownContestStruct3? +struct UnknownContestStruct4 +{ + u8 unk0; // sprite ID + u8 unk1; // sprite ID + u8 unk2_0:1; + u8 unk2_1:1; + u8 unk2_2:1; + u8 filler3; +}; + +struct UnknownContestStruct5 +{ + s8 bits_0; // current move 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]; +}; + +struct UnknownContestStruct8 +{ + u16 unk0; + u16 unk2; + u8 unk4_0:1; + u8 unk5; + u8 filler6[2]; + u32 unk8; + u32 unkC; + u32 unk10; +}; + +struct UnknownContestStruct6 +{ + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; +}; + +#define shared15800 (gSharedMem + 0x15800) +#define shared15DE0 (*(struct ContestWinner *)(gSharedMem + 0x15DE0)) +#define shared16800 (gSharedMem + 0x16800) +#define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000)) +#define shared18004 ((u16 *)(gSharedMem + 0x18004)) +#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)) +#define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338)) +#define shared19348_ (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348)) + +extern struct MusicPlayerInfo gMPlay_SE1; +extern u16 gSpecialVar_ContestCategory; +extern u16 gSpecialVar_ContestRank; +extern u8 gBattleMonForms[]; +extern u8 gDisplayedStringBattle[]; +extern u16 gBattleTypeFlags; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gBanksBySide[]; +extern u8 gObjectBankIDs[]; +extern u8 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; // saved RNG value + +extern s16 gUnknown_02038680[]; +extern u16 gUnknown_02038688[]; +extern u8 gUnknown_02038694; +extern u8 gUnknown_02038696[]; +extern u8 gUnknown_0203869B; +extern s16 gUnknown_02038670[]; +extern s16 gUnknown_02038678[]; +extern u8 gContestFinalStandings[]; // What "place" each participant came in. +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 u8 gUnknown_083CA330[][2]; +extern const u8 gUnknown_083CA338[]; +extern const u8 gUnknown_083CA33C[]; +extern const u8 gUnknown_083CA340[][4]; +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; +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 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 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 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[]; +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 struct ContestWinner gUnknown_083CC5D0[]; +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); +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 ContestMainCallback2(void); +void ContestVBlankCallback(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 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_80AD8DC(u8); +void sub_80AD8FC(struct Sprite *); +void sub_80AD92C(struct Sprite *); +void sub_80AD960(u8); +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 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 CreateJudgeSprite(void); +u8 sub_80AE8B4(void); +u8 sub_80AE9FC(u16, u32, u32); +bool8 sub_80AEB1C(u16); +void sub_80AEB30(void); +void sub_80AEBEC(u16); +void sub_80AED58(void); +bool8 sub_80AEE54(u8, u8); +bool8 sub_80AF038(u8); +void sub_80AF120(void); +void sub_80AF138(void); +u16 GetChosenMove(u8); +void sub_80AF1B8(void); +void sub_80AF2A0(u8); +void sub_80AF2FC(void); +void sub_80AF3C0(void); +bool8 Contest_IsMonsTurnDisabled(u8); +s16 sub_80AF688(u8); +void DetermineFinalStandings(void); +bool8 sub_80AF828(s32, s32, struct UnknownContestStruct6 *); +void sub_80AF860(void); +void sub_80AF94C(u8); +void sub_80AFA5C(void); +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); +bool8 sub_80AFF28(void); +void sub_80AFF60(struct Sprite *); +void sub_80AFFE0(bool8); +void sub_80B0034(void); +void CreateApplauseMeterSprite(void); +void nullsub_18(s8); +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 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); +void sub_80B114C(u8); +void sub_80B146C(u8, u8); +void sub_80B159C(void); +void sub_80B1710(u8); +void sub_80B1928(void); +s8 Contest_GetMoveExcitement(u16); +u8 sub_80B1A2C(void); +void c3_08130B10(u8); +void sub_80B1B14(void); +void sub_80B1B68(u8); +void sub_80B1BDC(void); +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(bool8); +const u8 *GetTurnOrderNumberGfx(u8); +void sub_80B20C4(void); +bool8 sub_80B214C(u8); +void sub_80B2184(void); +void sub_80B2280(void); +void sub_80B237C(u8); +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 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 SelectContestMoveBankTarget(u16); + + +void nullsub_89(u8 taskId) +{ +} + +void ResetLinkContestBoolean(void) +{ + gIsLinkContest = FALSE; +} + +void ResetContestGpuRegs(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 SetUpContestWindow(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 ClearContestVars(void) +{ + s32 i; + + memset(&sContest, 0, sizeof(sContest)); + for (i = 0; i < 4; i++) + sContest.unk19206[i] = 0xFF; + + for (i = 0; i < 4; i++) + memset(&sContestantStatus[i], 0, sizeof(sContestantStatus[i])); + for (i = 0; i < 4; i++) + { + 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)); + memset(shared19338, 0, 4 * sizeof(*shared19338)); + if (!(gIsLinkContest & 1)) + sub_80B0F28(0); + for (i = 0; i < 4; i++) + { + sContestantStatus[i].unk19 = 0xFF; + sContest.unk19218[i] = gUnknown_02038696[i]; + } + sub_80B159C(); +} + +void CB2_StartContest(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + SetUpContestWindow(); + ResetContestGpuRegs(); + dp12_8087EA4(); + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + DmaClearLarge32(3, (void *)VRAM, VRAM_SIZE, 0x1000); + ResetSpriteData(); + ResetTasks(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + //shared18000.unk18000 = 0; + gSharedMem[0x18000] = 0; + ClearBattleMonForms(); + ClearContestVars(); + gMain.state++; + break; + case 1: + sub_80AB350(); + gMain.state++; + break; + case 2: + if (sub_80AB70C(&sContest.unk1925D) == 0) + break; + sContest.unk1925D = 0; + gMain.state++; + break; + case 3: + sub_80B2184(); + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + BeginFastPaletteFade(2); + gPaletteFade.bufferTransferDisabled = FALSE; + SetVBlankCallback(ContestVBlankCallback); + sContest.mainTaskId = CreateTask(sub_80AB5D4, 10); + SetMainCallback2(ContestMainCallback2); + break; + } +} + +void sub_80AB5D4(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = sub_80AB604; +} + +void sub_80AB604(u8 taskId) +{ + if (gIsLinkContest & 1) + { + 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[sContest.mainTaskId].func = sub_80AB960; + gRngValue = gUnknown_03005D28; + } +} + +u8 sub_80AB70C(u8 *a) +{ + u16 sp0[16]; + u16 sp20[16]; + + switch (*a) + { + case 0: + gPaletteFade.bufferTransferDisabled = TRUE; + DmaClearLarge32(3, (void *)VRAM, VRAM_SIZE, 0x1000); + 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)); + DmaCopy32Defvars(3, (void *)(VRAM + 0xE000), shared18000.unk18A04, 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)); + DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18004, 0x200); + sub_80AB350(); + break; + case 6: + sub_80B1118(); + sub_80AFA5C(); + sub_80AEB30(); + sContest.unk19216 = sub_80AE8B4(); + sub_80AFE30(); + sub_80B0034(); + CreateApplauseMeterSprite(); + sub_80B0324(); + sub_80B0518(); + gBanksBySide[0] = 0; + gBanksBySide[1] = 1; + gBanksBySide[2] = 3; + gBanksBySide[3] = 2; + gBattleTypeFlags = 0; + gBankAttacker = 2; + gBankTarget = 3; + gObjectBankIDs[gBankAttacker] = CreateJudgeSprite(); + 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 (sContest.unk1920A_6) + break; + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80ABB70; + break; + } +} + +void ContestMainCallback2(void) +{ + AnimateSprites(); + RunTasks(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void ContestVBlankCallback(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(); + DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400); + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) + StringCopy(gDisplayedStringBattle, gText_Contest_WhichMoveWillBePlayed); + else + StringCopy(gDisplayedStringBattle, gText_Contest_ButItCantParticipate); + InsertStringDigit(gDisplayedStringBattle, sContest.turnNumber + 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 (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) + { + sub_80AFFE0(TRUE); + gTasks[taskId].func = sub_80ABCDC; + } + else + { + gTasks[taskId].func = sub_80AC0C8; + } + } +} + +// Print the move list +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++) + { + u16 move = gContestMons[gContestPlayerMonIndex].moves[i]; + u8 *r5 = sp8; + + if (sContestantStatus[gContestPlayerMonIndex].prevMove != MOVE_NONE + && sub_80B214C(gContestPlayerMonIndex) + && AreMovesContestCombo(sContestantStatus[gContestPlayerMonIndex].prevMove, move) != 0 + && sContestantStatus[gContestPlayerMonIndex].unk15_4) + { + r5 = StringCopy(sp8, gUnknownText_UnknownFormatting2); + } + else if (move != 0 + && sContestantStatus[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[move]); + + 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(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; + s32 i; + + for (i = 0; i < 4; i++) + { + if (gContestMons[gContestPlayerMonIndex].moves[i] != MOVE_NONE) + numMoves++; + } + + 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(FALSE); + FillWindowRect_DefaultPalette( + &gUnknown_03004210, + 0, + gUnknown_083CA340[0][0], + gUnknown_083CA340[0][1], + gUnknown_083CA340[0][2], + gUnknown_083CA340[0][3]); + if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex)) + StringCopy(gDisplayedStringBattle, gText_Contest_WhichMoveWillBePlayed); + else + StringCopy(gDisplayedStringBattle, gText_Contest_ButItCantParticipate); + InsertStringDigit(gDisplayedStringBattle, sContest.turnNumber + 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(sContest.playerMoveChoice); + if (sContest.playerMoveChoice == 0) + sContest.playerMoveChoice = numMoves - 1; + else + sContest.playerMoveChoice--; + sub_80AC0AC(sContest.playerMoveChoice); + sub_80AED58(); + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]); + if (numMoves > 1) + PlaySE(SE_SELECT); + break; + case DPAD_DOWN: + nullsub_17(sContest.playerMoveChoice); + if (sContest.playerMoveChoice == numMoves - 1) + sContest.playerMoveChoice = 0; + else + sContest.playerMoveChoice++; + sub_80AC0AC(sContest.playerMoveChoice); + sub_80AED58(); + sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]); + if (numMoves > 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 = GetChosenMove(gContestPlayerMonIndex); + u8 taskId2; + + sContestantStatus[gContestPlayerMonIndex].currMove = var; + taskId2 = CreateTask(sub_80C8A38, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8A38, sub_80AC15C); + gTasks[taskId].func = nullsub_89; + sub_80AF860(); + sub_80AFFE0(FALSE); + } + else + { + sub_80AF1B8(); + gTasks[taskId].func = sub_80AC188; + } +} + +void sub_80AC15C(u8 taskId) +{ + DestroyTask(taskId); + gTasks[sContest.mainTaskId].func = sub_80AC188; +} + +void sub_80AC188(u8 taskId) +{ + sub_80AF138(); + gUnknown_030042A0 = 0; + gUnknown_03004280 = 0; + sub_80AFFE0(FALSE); + DmaCopy32Defvars(3, gPlttBufferFaded, shared18000.unk18604, 0x400); + 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 (!sContest.unk1920A_6 && !sContest.unk1920B_1) + gTasks[taskId].func = sub_80AC284; +} + +void sub_80AC284(u8 taskId) +{ + if (++gTasks[taskId].data[0] > 19) + { + sContest.unk19214 = 0; + sContest.unk1921C = gRngValue; + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80AC2CC; + } +} + +void sub_80AC2CC(u8 taskId) +{ + u8 spriteId; + s32 i; + u8 r7 = sContest.unk19215; + s8 r4; + + switch (gTasks[taskId].data[0]) + { + case 0: + sub_80B0D7C(); + for (i = 0; sContest.unk19214 != shared192D0_.unk0[i]; i++) + ; + sContest.unk19215 = i; + r7 = sContest.unk19215; + if (gIsLinkContest & 1) + { + u8 taskId2; + + sContest.unk1920B_2 = 1; + if (sub_80AE074()) + sub_80B114C(sContest.unk19215); + taskId2 = CreateTask(sub_80C8C80, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); + sub_80AF860(); + gTasks[taskId].data[0] = 1; + } + else + { + sub_80B114C(sContest.unk19215); + gTasks[taskId].data[0] = 2; + } + return; + case 1: + if (!sContest.unk1920B_2) + gTasks[taskId].data[0] = 2; + return; + case 2: + if (sContestantStatus[r7].unkC_1 != 0 + || sContestantStatus[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: + for (i = 0; i < 4; i++) + gBattleMonForms[i] = 0; + memset(&shared19348_, 0, sizeof(shared19348_)); + sub_80B28F0(sContest.unk19215); + spriteId = sub_80AE9FC( + 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(sContest.unk19215), FALSE); + gTasks[taskId].data[0] = 4; + return; + case 4: + spriteId = gTasks[taskId].data[2]; + if (gSprites[spriteId].callback == SpriteCallbackDummy) + { + if (!shared19338[r7].unk2_1) + gTasks[taskId].data[0] = 5; + } + return; + case 5: + if (sContestantStatus[r7].unkC_0) + { + gTasks[taskId].data[0] = 33; + } + else + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + if (sContestantStatus[r7].currMove < NUM_MOVES) + StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]); + else + StringCopy(gStringVar2, gUnknown_083CC330[sContestantStatus[r7].moveCategory]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 6; + } + return; + case 6: + if (sub_80037A0(&gMenuWindow) != 0) + { + sContest.unk1925E = 0; + gTasks[taskId].data[0] = 7; + } + return; + case 7: + { + u16 move = SanitizeMove(sContestantStatus[sContest.unk19215].currMove); + + sub_80B2790(sContest.unk19215); + sub_80B28F0(sContest.unk19215); + SelectContestMoveBankTarget(move); + ExecuteMoveAnim(move); + gTasks[taskId].data[0] = 8; + } + return; + case 8: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_80B28CC(r7); + if (sContest.unk1925E != 0) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 9; + } + else + { + if (!sContestantStatus[r7].unk15_4) + sub_80B03A8(r7); + sub_80B20C4(); + gTasks[taskId].data[0] = 23; + } + } + return; + case 9: + if (gTasks[taskId].data[10]++ > 30) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 7; + } + return; + case 23: + gTasks[taskId].data[1] = 0; + if (sContestantStatus[r7].unk13 != 0xFF) + { + sub_80B146C(r7, sContestantStatus[r7].unk13); + sContestantStatus[r7].unk13 = 0xFF; + gTasks[taskId].data[0] = 24; + } + else + { + if (sContestantStatus[r7].unk14 != 0xFF) + { + for (i = 0; i < 4; i++) + { + if (i != r7 && sContestantStatus[i].unk13 != 0xFF) + break; + } + if (i == 4) + { + sub_80B146C(r7, sContestantStatus[r7].unk14); + sContestantStatus[r7].unk14 = 0xFF; + gTasks[taskId].data[0] = 24; + } + else + { + gTasks[taskId].data[0] = 48; + } + } + else + { + gTasks[taskId].data[0] = 48; + } + } + return; + case 24: + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 23; + return; + case 48: + if (sContestantStatus[r7].unk11_0 == 1) + { + sub_80B1710(5); + } + else if (sContestantStatus[r7].unk11_0 == 2) + { + sub_80B1710(6); + } + else if (sContestantStatus[r7].unk11_0 == 3) + { + sub_80B1710(7); + } + else + { + gTasks[taskId].data[0] = 47; + return; + } + gTasks[taskId].data[0] = 49; + return; + case 49: + if (!sContest.unk1920A_4) + gTasks[taskId].data[0] = 47; + return; + case 47: + sub_80B1FD0(TRUE); + gTasks[taskId].data[0] = 12; + return; + case 12: + sub_80AFBA0(0, sContestantStatus[r7].appeal2, r7); + gTasks[taskId].data[0] = 13; + return; + case 13: + if (!shared19338[sContest.unk19215].unk2_2) + gTasks[taskId].data[0] = 35; + return; + case 35: + if (sContestantStatus[r7].unk10_4 == 1) + sub_80B1710(8); + gTasks[taskId].data[0] = 36; + return; + case 36: + if (!sContest.unk1920A_4) + gTasks[taskId].data[0] = 37; + return; + case 37: + if (sub_80AEE54(r7, 1)) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 38; + } + else + { + gTasks[taskId].data[0] = 50; + } + return; + case 38: + if (++gTasks[taskId].data[10] > 20) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 50; + } + return; + case 50: + if (sub_80AF038(r7)) + PlaySE(SE_C_PASI); + gTasks[taskId].data[0] = 25; + return; + case 25: + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0] = 26; + return; + case 26: + { + s32 r2 = 0; + + r4 = 0; + for (i = gTasks[taskId].data[1]; i < 4; i++) + { + r4 = 0; + for (r2 = 0; r2 < 4; r2++) + { + if (r2 != r7 && gUnknown_02038696[r2] == i + && sContestantStatus[r2].unk13 != 0xFF) + { + r4 = 1; + break; + } + } + if (r4 != 0) + break; + } + if (r4) + { + gTasks[taskId].data[1] = gUnknown_02038696[r2]; + sub_80B146C(r2, sContestantStatus[r2].unk13); + sContestantStatus[r2].unk13 = 0xFF; + gTasks[taskId].data[0] = 27; + } + else + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 51; + sub_80AF120(); + } + } + return; + case 27: + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 28; + return; + case 28: + for (i = 0; gTasks[taskId].data[1] != gUnknown_02038696[i]; i++) + ; + sub_80AFBA0(sContestantStatus[i].appeal2 + sContestantStatus[i].unkE, -sContestantStatus[i].unkE, i); + gTasks[taskId].data[0] = 29; + return; + case 29: + for (i = 0; gTasks[taskId].data[1] != gUnknown_02038696[i]; i++) + ; + if (!shared19338[i].unk2_2) + gTasks[taskId].data[0] = 39; + return; + case 39: + for (i = 0; gTasks[taskId].data[1] != gUnknown_02038696[i]; i++) + ; + if (sub_80AEE54(i, 1)) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 40; + } + else + { + gTasks[taskId].data[0] = 30; + } + return; + case 40: + if (++gTasks[taskId].data[10] > 20) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 30; + } + return; + case 30: + for (i = 0; i < 4; i++) + { + if (gUnknown_02038696[i] == gTasks[taskId].data[1]) + break; + } + if (sub_80AF038(i)) + PlaySE(SE_C_PASI); + else + PlaySE(SE_C_SYU); + if (sContestantStatus[i].unk15_5) + { + sub_80B03A8(i); + sContestantStatus[i].unk15_5 = 0; + } + gTasks[taskId].data[1]++; + gTasks[taskId].data[0] = 26; + return; + case 51: + if (gTasks[taskId].data[10]++ > 9) + { + gTasks[taskId].data[10] = 0; + if (sContestantStatus[r7].unkC_1 != 0 + || sContestantStatus[r7].unk11_2) + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, ContestString_CantAppealNextTurn); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + } + gTasks[taskId].data[0] = 52; + } + return; + case 52: + if (sub_80037A0(&gMenuWindow) != 0) + { + if (!sContestantStatus[r7].unk15_6) + gTasks[taskId].data[0] = 17; + else + gTasks[taskId].data[0] = 14; + } + return; + case 14: + r4 = sContestantStatus[r7].unk16; + if (sContestantStatus[r7].unk16 != 0) + { + sub_80AF138(); + if (r4 == 1) + sub_8002EB0(&gMenuWindow, ContestString_WentOverWell, 776, 1, 15); + else if (r4 == 2) + sub_8002EB0(&gMenuWindow, ContestString_WentOverVeryWell, 776, 1, 15); + else + sub_8002EB0(&gMenuWindow, ContestString_AppealComboExcellently, 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, ContestString_JudgeExpectantly2); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + sub_80B1710(2); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 45; + } + return; + case 45: + if (!sContest.unk1920A_4) + { + sub_80B09B0(sContest.unk19215); + gTasks[taskId].data[0] = 15; + } + return; + case 15: + if (sub_80037A0(&gMenuWindow) != 0) + { + if (++gTasks[taskId].data[10] > 50) + { + if (!sContestantStatus[r7].unk15_4) + { + sub_80AFBA0( + sContestantStatus[r7].appeal2, + sContestantStatus[r7].unk17, + r7); + sContestantStatus[r7].appeal2 += sContestantStatus[r7].unk17; + } + gTasks[taskId].data[0] = 16; + } + } + return; + case 16: + if (!shared19338[r7].unk2_2) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 17; + } + return; + case 17: + if (sContestantStatus[r7].disappointedRepeat) + { + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringExpandPlaceholders(gStringVar4, ContestString_DissapointedRepeat); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[10] = 0; + sub_80B1710(0); + gTasks[taskId].data[0] = 46; + } + else + { + gTasks[taskId].data[0] = 41; + } + return; + case 46: + if (!sContest.unk1920A_4) + gTasks[taskId].data[0] = 19; + return; + case 19: + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80AFBA0(sContestantStatus[r7].appeal2, -sContestantStatus[r7].unk18, r7); + sContestantStatus[r7].appeal2 -= sContestantStatus[r7].unk18; + gTasks[taskId].data[0] = 18; + } + return; + case 18: + sub_80B0D7C(); + if (!shared19338[r7].unk2_2) + { + gTasks[taskId].data[10] = 0; + sub_80AF138(); + gTasks[taskId].data[0] = 41; + } + return; + case 41: + if (shared19328.bits_8 && r7 != shared19328.bits_9) + { + gTasks[taskId].data[0] = 57; + } + else + { + r4 = shared19328.bits_0; + if (sContestantStatus[r7].unk11_4) + { + r4 = 1; + StringCopy(gStringVar3, gMoveNames[sContestantStatus[r7].currMove]); + } + else + { + StringCopy(gStringVar3, gContestCategoryStrings[gContestMoves[sContestantStatus[r7].currMove].contestCategory]); + } + if (r4 > 0) + { + if (sContestantStatus[r7].disappointedRepeat) + r4 = 0; + } + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[r7].nickname); + sContest.applauseLevel += r4; + if (sContest.applauseLevel < 0) + sContest.applauseLevel = 0; + if (r4 == 0) + { + gTasks[taskId].data[0] = 55; + } + else + { + if (r4 < 0) + StringExpandPlaceholders(gStringVar4, ContestString_DidntGoWell); + else if (r4 > 0 && sContest.applauseLevel <= 4) + StringExpandPlaceholders(gStringVar4, ContestString_WentOverGreat); + else + StringExpandPlaceholders(gStringVar4, ContestString_GotCrowdGoing); + 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: + sub_80B1EA8(-1, 1); + PlayFanfare(BGM_ME_ZANNEN); + gTasks[taskId].data[10]++; + break; + case 1: + if (!sContest.unk1920B_0 && sub_80037A0(&gMenuWindow) != 0) + { + sub_80B1CBC(-1); + gTasks[taskId].data[10]++; + } + break; + case 2: + if (!sContest.unk1920A_5) + { + if (gTasks[taskId].data[11]++ > 29) + { + gTasks[taskId].data[11] = 0; + sub_80B1EA8(-1, -1); + gTasks[taskId].data[10]++; + } + } + break; + case 3: + if (!gPaletteFade.active) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[0] = 43; + } + break; + } + return; + case 54: + switch (gTasks[taskId].data[10]) + { + case 0: + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80B1EA8(1, 1); + gTasks[taskId].data[10]++; + } + break; + case 1: + if (!sContest.unk1920B_0) + { + sub_80B1DDC(); + PlaySE(SE_W227B); + sub_80B1CBC(1); + gTasks[taskId].data[10]++; + } + break; + case 2: + if (!sContest.unk1920A_5) + { + if (gTasks[taskId].data[11]++ > 29) + { + gTasks[taskId].data[11] = 0; + sub_80AFBA0(sContestantStatus[r7].appeal2, shared19328.unk2, r7); + sContestantStatus[r7].appeal2 += shared19328.unk2; + gTasks[taskId].data[10]++; + } + } + break; + case 3: + if (!shared19338[r7].unk2_2) + { + if (!sContest.unk1920A_7) + { + sub_80B1EA8(1, -1); + gTasks[taskId].data[10]++; + } + } + break; + case 4: + if (!gPaletteFade.active) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = 0; + gTasks[taskId].data[0] = 43; + } + break; + } + return; + case 43: + if (!shared19338[r7].unk2_2) + { + sub_80AF138(); + gTasks[taskId].data[0] = 55; + } + return; + case 57: + sub_80AF138(); + StringCopy(gStringVar3, gContestMons[shared19328.bits_9].nickname); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]); + StringExpandPlaceholders(gStringVar4, ContestString_CrowdWatches); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 58; + return; + case 58: + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80AF138(); + StringExpandPlaceholders(gStringVar4, ContestString_Ignored2); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 59; + } + return; + case 59: + if (sub_80037A0(&gMenuWindow) != 0) + { + sub_80AF138(); + gTasks[taskId].data[0] = 55; + } + return; + case 33: + if (sContestantStatus[r7].unk15_4) + sContestantStatus[r7].unk15_4 = 0; + sub_80B09B0(r7); + StringCopy(gStringVar1, gContestMons[r7].nickname); + StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]); + StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[0] = 34; + return; + case 34: + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 55; + return; + case 55: + sub_80B1BDC(); + gTasks[taskId].data[0] = 56; + return; + case 56: + if (!sContest.unk1920A_6) + { + if (sContest.applauseLevel > 4) + { + sContest.applauseLevel = 0; + sub_80B1928(); + } + gTasks[taskId].data[0] = 10; + } + return; + case 10: + spriteId = gTasks[taskId].data[2]; + gSprites[spriteId].callback = sub_80AD92C; + gTasks[taskId].data[0] = 11; + return; + case 11: + spriteId = gTasks[taskId].data[2]; + if (gSprites[spriteId].invisible) + { + FreeSpriteOamMatrix(&gSprites[spriteId]); + DestroySprite(&gSprites[spriteId]); + gTasks[taskId].data[0] = 20; + } + return; + case 20: + for (i = 0; i < 4; i++) + sub_80B0CDC(i, 1); + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 21; + return; + case 31: + 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: + if (sub_80037A0(&gMenuWindow) != 0) + gTasks[taskId].data[0] = 21; + return; + case 21: + if (++gTasks[taskId].data[10] > 29) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 22; + } + return; + case 22: + if (++sContest.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; + } +} + +void sub_80AD8DC(u8 taskId) +{ + sContest.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; + + sContest.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; + } + else + { + sub_80AF2FC(); + sub_80AF3C0(); + gTasks[taskId].data[0] = 2; + } + break; + case 1: + if (!sContest.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(FALSE); + 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 (!sContest.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()) + gTasks[taskId].func = sub_80ADB04; +} + +void sub_80ADB04(u8 taskId) +{ + DmaCopy32Defvars(3, shared18000.unk18204, gPlttBufferUnfaded, 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) +{ + u8 r4 = sContestantStatus[gContestPlayerMonIndex].attentionLevel; + + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname); + StringExpandPlaceholders(gStringVar4, gContestStandOutStrings[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()) + { + 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 (++sContest.turnNumber == 5) + { + gTasks[taskId].func = sub_80ADDA4; + } + else + { + sub_80B1B14(); + gTasks[taskId].func = sub_80ADD74; + } +} + +void sub_80ADD74(u8 taskId) +{ + if (!sContest.unk1920A_6) + gTasks[taskId].func = sub_80ABB70; +} + +void sub_80ADDA4(u8 taskId) +{ + s32 i; + + gUnknown_030042A0 = 0; + gUnknown_03004280 = 0; + for (i = 0; i < 4; i++) + gUnknown_02038680[i] = sContestantStatus[i].unk4; + sub_80AF668(); + sub_80AF138(); + sub_80BE23C(sContestantStatus[gContestPlayerMonIndex].prevMove); + 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(FALSE); +} + +void sub_80ADF98(u8 taskId) +{ + DestroyTask(taskId); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[sContest.mainTaskId].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(); +} + +// Expands a one-digit number in the string +void InsertStringDigit(u8 *str, s32 n) +{ + while (1) + { + if (*str == EOS) + break; + // 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(str, n, STR_CONV_MODE_LEFT_ALIGN, 1); + *end = EOS; // ConvertIntToDecimalStringN already does this. + StringAppend(end, str + 2); // Shift the rest of the string over. + break; + } + str++; + } +} + +void sub_80AE054(void) +{ + if (!(gIsLinkContest & 1)) + gContestPlayerMonIndex = 3; +} + +bool8 sub_80AE074(void) +{ + if (gContestPlayerMonIndex == gUnknown_0203869B) + return TRUE; + else + return FALSE; +} + +void Contest_CreatePlayerMon(u8 partyIndex) +{ + 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].trainerGfxId = MAP_OBJ_GFX_LINK_BRENDAN; + else + gContestMons[gContestPlayerMonIndex].trainerGfxId = MAP_OBJ_GFX_LINK_MAY; + gContestMons[gContestPlayerMonIndex].flags = 0; + gContestMons[gContestPlayerMonIndex].unk2C = 0; + 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[partyIndex], 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[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; + 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; +} + +void Contest_InitAllPokemon(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 + + Contest_CreatePlayerMon(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 (gSpecialVar_ContestCategory) + { + case CONTEST_CATEGORY_COOL: + ribbon = GetMonData(pkmn, MON_DATA_COOL_RIBBON); + break; + case CONTEST_CATEGORY_BEAUTY: + ribbon = GetMonData(pkmn, MON_DATA_BEAUTY_RIBBON); + break; + case CONTEST_CATEGORY_CUTE: + ribbon = GetMonData(pkmn, MON_DATA_CUTE_RIBBON); + break; + case CONTEST_CATEGORY_SMART: + ribbon = GetMonData(pkmn, MON_DATA_SMART_RIBBON); + break; + case CONTEST_CATEGORY_TOUGH: + 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 > gSpecialVar_ContestRank) + retVal = 2; + else if (ribbon >= gSpecialVar_ContestRank) + 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 p, 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[p].language == LANGUAGE_JAPANESE) + { + StringCopy(str, gLinkPlayers[p].name); + sub_8004D04( + &gUnknown_03004210, + gDisplayedStringBattle, + 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[p].trainerName); + sub_8003460( + &gUnknown_03004210, + gDisplayedStringBattle, + 592 + gUnknown_02038696[p] * 22, + gUnknown_083CA310[gUnknown_02038696[p]][0], + gUnknown_083CA310[gUnknown_02038696[p]][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 CreateJudgeSprite(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 = SanitizeSpecies(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)) + 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) +{ + DmaCopy16Defvars(3, a, (u8 *)a + 0x500, 0x280); +} + +u16 sub_80AEB68(u16 move, u8 b) +{ + u16 var; + + switch (gContestEffects[gContestMoves[move].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 == CONTEST_CATEGORY_COOL) + categoryTile = 0x4040; + else if (category == CONTEST_CATEGORY_BEAUTY) + categoryTile = 0x4045; + else if (category == CONTEST_CATEGORY_CUTE) + categoryTile = 0x404A; + else if (category == CONTEST_CATEGORY_SMART) + 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 move, u8 b) +{ + u8 r5 = gUnknown_02038696[b] * 5 + 2; + + if (!Contest_IsMonsTurnDisabled(b) && move != MOVE_NONE) + { + u16 tile = sub_80AEB68(move, 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++) + sub_80AED7C(sContestantStatus[i].currMove, i); +} + +u16 sub_80AEE4C(u8 unused) +{ + return 0x2034; +} + +bool8 sub_80AEE54(u8 a, u8 b) +{ + u8 r9; + u16 r8; + s32 r4; + + if (sContestantStatus[a].unk10_4 == 0) + return FALSE; + r9 = gUnknown_02038696[a] * 5 + 2; + if (sContestantStatus[a].unk10_4 == 1) + { + r8 = sub_80AEE4C(a); + r4 = 0; + while (sContestantStatus[a].unkD / 10 > r4) + { + *(u16 *)(VRAM + 0xC026 + (r9 + r4) * 64) = r8; + r4++; + } + if (b != 0) + { + PlaySE(SE_EXPMAX); + sContestantStatus[a].unk10_4 = 0; + } + } + else + { + r8 = 0; + r4 = 3; + while (sContestantStatus[a].unkD / 10 < r4) + { + *(u16 *)(VRAM + 0xBFE6 + (r9 + r4) * 64) = r8; + r4--; + } + if (b != 0) + { + PlaySE(SE_FU_ZAKU2); + sContestantStatus[a].unk10_4 = 0; + } + } + return TRUE; +} + +void sub_80AEF50(void) +{ + s32 i; + s32 r4; + + for (i = 0; i < 4; i++) + { + u8 r8 = gUnknown_02038696[i] * 5 + 2; + u16 r6 = sub_80AEE4C(i); + + r4 = 0; + while (r4 < sContestantStatus[i].unkD / 10) + { + *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6; + r4++; + } + r6 = 0; + while (r4 < 3) + { + *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6; + r4++; + } + } +} + +u16 sub_80AEFE8(u8 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; +} + +bool8 sub_80AF038(u8 a) +{ + bool8 r5 = TRUE; + u16 r4 = 0; + u8 r6 = gUnknown_02038696[a] * 5 + 2; + + 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 (sContestantStatus[a].unkC_0) + r4 = sub_80AEFE8(a, 1); + else if (sContestantStatus[a].unkC_1 != 0 || sContestantStatus[a].unkB_7) + 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 GetChosenMove(u8 a) +{ + if (Contest_IsMonsTurnDisabled(a)) + return 0; + if (a == gContestPlayerMonIndex) + { + return gContestMons[a].moves[sContest.playerMoveChoice]; + } + 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++) + sContestantStatus[i].currMove = GetChosenMove(i); +} + +void sub_80AF1E4(u8 a, u8 b) +{ + u8 r3; + + if (b == 0) + r3 = a + 10; + else + r3 = 14; + if (sContestantStatus[a].currMove == MOVE_NONE) + sub_80AE598(gDisplayedStringBattle, gUnknownText_MissedTurn, r3); + else + sub_80AE598(gDisplayedStringBattle, gMoveNames[sContestantStatus[a].currMove], 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++) + { + sContestantStatus[i].unk4 += sContestantStatus[i].appeal2; + arr[i] = sContestantStatus[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 (sContestantStatus[i].unk4 == arr[j]) + { + sContestantStatus[i].unkB_0 = j; + break; + } + } + } + sub_80B0F28(1); + sub_80B159C(); +} + +void sub_80AF3C0(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + 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 + attentionLevel = 4; + + sContestantStatus[i].attentionLevel = attentionLevel; + } +} + +bool8 sub_80AF404(u8 a) +{ + if (sContestantStatus[a].unkC_1 != 0 || sContestantStatus[a].unkB_7) + return FALSE; + else + return TRUE; +} + +void sub_80AF438(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + // This is bitfield hell... + 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++) + { + 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 (sContestantStatus[a].unkC_1 != 0 || sContestantStatus[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) + { + sContest.unk1920A_0 = 1; + return TRUE; + } + if (b == 4) + { + sContest.unk1920A_1 = 1; + return TRUE; + } + if (sContest.unk19206[i] == b) + return TRUE; + if (sContest.unk19206[i] == 0xFF) + { + sContest.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); + DetermineFinalStandings(); +} + +s16 sub_80AF688(u8 a) +{ + return gUnknown_02038680[a] * 2; +} + +// Determines standing order? +void DetermineFinalStandings(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++) + gContestFinalStandings[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 (i = 0; i < 9; i++) + { + if (i < r5) + arr[i] = r2; + else + arr[i] = 0; + } + + DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xC000 + (148 + b * 160) * 2), 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); + } +} + +void sub_80AFE78(u8 a) +{ + u8 spriteId; + s16 r5; + + shared19338[a].unk2_0 = 1; + spriteId = shared19338[a].unk0; + r5 = sContestantStatus[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 CreateApplauseMeterSprite(void) +{ + u8 spriteId; + + LoadCompressedObjectPic(&gUnknown_083CA46C); + LoadSpritePalette(&gUnknown_083CA474); + spriteId = CreateSprite(&gSpriteTemplate_83CA484, 30, 44, 1); + gSprites[spriteId].invisible = TRUE; + sContest.applauseMeterSpriteId = spriteId; +} + +void nullsub_18(s8 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; + sContest.unk1920D[i] = spriteId; + } +} + +void unref_sub_80B01B0(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + gSprites[sContest.unk1920D[i]].callback = sub_80B0238; +} + +bool8 unref_sub_80B01E0(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (gSprites[sContest.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, sContestantStatus[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); + + sContest.unk19211 = taskId; + for (i = 0; i < 4; i++) + gTasks[taskId].data[i * 4] = 0xFF; +} + +void sub_80B0368(u8 a) +{ + gTasks[sContest.unk19211].data[a * 4 + 0] = 0; + gTasks[sContest.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[sContest.unk19211].data[r4 * 4 + 0] == 0 + || gTasks[sContest.unk19211].data[r4 * 4 + 0] == 0xFF) + { + 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); + } +} + +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( + (sContest.unk19218[i] + 5) * 16 + 6, + 2, + gTasks[taskId].data[r3 + 0], + 0x4BFF); + } + } +} + +void sub_80B0518(void) +{ + u8 i; + + sContest.unk19212 = CreateTask(sub_80B05FC, 30); + for (i = 0; i < 4; i++) + sub_80B0548(i); +} + +void sub_80B0548(u8 a) +{ + gTasks[sContest.unk19212].data[a * 4 + 0] = 0xFF; + gTasks[sContest.unk19212].data[a * 4 + 1] = 0; +} + +void sub_80B0588(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + sub_80B05A4(i); +} + +// TODO: Try to write this better +void sub_80B05A4(u8 a) +{ + u32 var; + u32 r0; + + sub_80B0548(a); + + // 2-byte DMA copy? Why? + + r0 = a + 5; + DmaCopy16Defvars( + 3, + gPlttBufferUnfaded + r0 * 16 + 10, + gPlttBufferFaded + r0 * 16 + 10, + 2); + + var = (a + 5) * 16 + 12 + a; + DmaCopy16Defvars( + 3, + gPlttBufferUnfaded + var, + gPlttBufferFaded + var, + 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) + sContest.unk1920A_2 = 1; +} + +void sub_80B09B0(u8 a) +{ + if (sContestantStatus[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 = sContestantStatus[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 = sContestantStatus[i].appeal2; + 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; + } + } + } +} + +// something to do with contest NPC opponents, I think. +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++) + { + gUnknown_02038696[i] = i; + 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])) + { + for (r2 = i; r2 > r4; r2--) + gUnknown_02038696[r2] = gUnknown_02038696[r2 - 1]; + gUnknown_02038696[r4] = i; + break; + } + } + if (r4 == i) + gUnknown_02038696[i] = i; + } + memcpy(sp0, gUnknown_02038696, sizeof(sp0)); + for (i = 0; i < 4; i++) + gUnknown_02038696[sp0[i]] = i; + } + else + { + memset(sp0, 0xFF, sizeof(sp0)); + for (i = 0; i < 4; i++) + { + u8 r2 = sContestantStatus[i].unkB_0; + + while (1) + { + u8 *ptr = &sp0[r2]; + if (*ptr == 0xFF) + { + *ptr = i; + gUnknown_02038696[i] = r2; + break; + } + r2++; + } + } + for (i = 0; i < 3; i++) + { + for (r4 = 3; r4 > i; r4--) + { + if (sContestantStatus[r4 - 1].unkB_0 == sContestantStatus[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; + } + } + } + } +} + +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 contestant) +{ + bool8 r8; + s32 i; + + sContestantStatus[contestant].appeal2 = 0; + sContestantStatus[contestant].appeal1 = 0; + r8 = sub_80AF404(contestant); + if (r8) + { + u16 move = sContestantStatus[contestant].currMove; + u8 effect = gContestMoves[move].effect; + u8 rnd; + + sContestantStatus[contestant].moveCategory = gContestMoves[sContestantStatus[contestant].currMove].contestCategory; + if (sContestantStatus[contestant].currMove == sContestantStatus[contestant].prevMove && sContestantStatus[contestant].currMove != MOVE_NONE) + { + sContestantStatus[contestant].disappointedRepeat = TRUE; + sContestantStatus[contestant].moveRepeatCount++; + } + else + { + sContestantStatus[contestant].moveRepeatCount = 0; + } + sContestantStatus[contestant].appeal1 = gContestEffects[effect].appeal; + sContestantStatus[contestant].appeal2 = gContestEffects[effect].appeal; + shared192D0_.unk4 = gContestEffects[effect].jam; + shared192D0_.unk6 = gContestEffects[effect].jam; + shared192D0_.unk11 = contestant; + for (i = 0; i < 4; i++) + { + sContestantStatus[i].unkE = 0; + shared192D0_.unkD[i] = 0; + } + if (sContestantStatus[contestant].unk15_4 && AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove) == 0) + sContestantStatus[contestant].unk15_4 = 0; + gContestEffectFuncs[effect](); + 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 + sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].unkD; + sContestantStatus[contestant].unk16 = 0; + sContestantStatus[contestant].unk15_6 = 0; + if (sub_80B214C(contestant)) + { + u8 r2 = AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove); + + if (r2 != 0 && sContestantStatus[contestant].unk15_4) + { + 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[sContestantStatus[contestant].currMove].comboStarterId != 0) + { + sContestantStatus[contestant].unk15_4 = 1; + sContestantStatus[contestant].unk15_6 = 1; + } + else + { + sContestantStatus[contestant].unk15_4 = 0; + } + } + } + if (sContestantStatus[contestant].disappointedRepeat) + sContestantStatus[contestant].unk18 = (sContestantStatus[contestant].moveRepeatCount + 1) * 10; + if (sContestantStatus[contestant].unkC_0) + { + sContestantStatus[contestant].unk15_4 = 0; + sContestantStatus[contestant].appeal2 = 0; + sContestantStatus[contestant].appeal1 = 0; + } + shared19328.bits_0 = Contest_GetMoveExcitement(sContestantStatus[contestant].currMove); + if (sContestantStatus[contestant].unk11_4) + shared19328.bits_0 = 1; + if (shared19328.bits_0 > 0) + { + if (sContest.applauseLevel + 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 != contestant) + { + if (rnd == 0) + break; + rnd--; + } + } + sContestantStatus[contestant].unk1B = i; + } +} + +void sub_80B13EC(u8 a, u8 b) +{ + sContestantStatus[a].unk13 = b; +} + +void sub_80B1404(u8 a, u8 b) +{ + sContestantStatus[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[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, gText_Contest_Fear); + StringExpandPlaceholders(gStringVar4, gUnknown_083CC188[b]); + sub_80AF138(); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); +} + +void sub_80B157C(u8 p) +{ + sContestantStatus[p].unkC_0 = 1; + sContestantStatus[p].currMove = MOVE_NONE; +} + +// Determines turn order? +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 (sContestantStatus[j].unk19 == i) + { + sp0[j] = i; + sp4[j] = 1; + break; + } + } + if (j == 4) + { + for (j = 0; j < 4; j++) + { + if (sp4[j] == 0 && sContestantStatus[j].unk19 == 0xFF) + { + r12 = j; + j++; + break; + } + } + for (; j < 4; j++) + { + if (sp4[j] == 0 && sContestantStatus[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]; + sContestantStatus[i].unk19 = 0xFF; + sContestantStatus[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; + sContest.unk1920A_4 = 0; + } +} + +void sub_80B1710(u8 a) +{ + u8 spriteId = sContest.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; + sContest.unk1920A_4 = 1; +} + +void sub_80B1928(void) +{ + s32 i; + + for (i = 0; i < 5; i++) + { + const u8 *src; + + if (i < sContest.applauseLevel) + src = gContestApplauseMeterGfx + 64; + else + src = gContestApplauseMeterGfx; + 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(); + } +} + +void unref_sub_80B19D0(void) +{ + u8 str[20]; + StringCopy(str, gUnknown_083CC2EC); + sub_8003460(&gUnknown_03004210, str, 680, 0, 0); +} + +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); + + 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 (sContest.applauseLevel < 5) + { + BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, 31); + DestroyTask(taskId); + } + } + } +} + +void sub_80B1B14(void) +{ + CreateTask(sub_80B1B68, 10); + gSprites[sContest.applauseMeterSpriteId].pos2.x = -70; + gSprites[sContest.applauseMeterSpriteId].invisible = FALSE; + sContest.unk1920A_6 = 1; +} + +void sub_80B1B68(u8 taskId) +{ + struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId]; + + 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) + { + sContest.unk1920A_6 = 0; + DestroyTask(taskId); + } +} + +void sub_80B1BDC(void) +{ + if (gSprites[sContest.applauseMeterSpriteId].invisible == TRUE) + { + sContest.unk1920A_6 = 0; + } + else + { + CreateTask(sub_80B1C34, 10); + gSprites[sContest.applauseMeterSpriteId].pos2.x = 0; + sContest.unk1920A_6 = 1; + } +} + +void sub_80B1C34(u8 taskId) +{ + struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId]; + + 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; + sContest.unk1920A_6 = 0; + DestroyTask(taskId); + } +} + +void sub_80B1CBC(s8 a) +{ + u8 taskId = CreateTask(sub_80B1CFC, 5); + + gTasks[taskId].data[0] = a; + sContest.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 (!sContest.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(); + sContest.unk1920A_5 = 0; + DestroyTask(taskId); + } + break; + } +} + +void unref_sub_80B1D84(void) +{ + gSprites[sContest.applauseMeterSpriteId].pos2.x = 0; + gSprites[sContest.applauseMeterSpriteId].invisible = FALSE; +} + +void unref_sub_80B1DB8(void) +{ + gSprites[sContest.applauseMeterSpriteId].invisible = TRUE; +} + +void sub_80B1DDC(void) +{ + CreateTask(sub_80B1DFC, 15); + sContest.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; + if (gTasks[taskId].data[11] == 0) + { + DmaCopy32Defvars(3, shared16800, (void *)(VRAM + 0x2000), 0x1000); + } + else + { + DmaCopy32Defvars(3, shared15800, (void *)(VRAM + 0x2000), 0x1000); + 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) + { + sContest.unk1920A_7 = 0; + DestroyTask(taskId); + } + } +} + +#define tBlendColor data[0] +#define tBlendCoeff data[1] + +void sub_80B1EA8(s8 a, s8 b) +{ + u8 taskId = CreateTask(sub_80B1F4C, 10); + u16 blendColor; + u8 blendCoeff; + u8 r3; + + if (a > 0) + { + blendColor = RGB(30, 27, 8); + if (b > 0) + { + blendCoeff = 0; + r3 = sContest.applauseLevel * 3; + } + else + { + blendCoeff = sContest.applauseLevel * 3; + r3 = 0; + } + } + else + { + blendColor = 0; + if (b > 0) + { + blendCoeff = 0; + r3 = 12; + } + else + { + blendCoeff = 12; + r3 = 0; + } + } + gTasks[taskId].tBlendColor = blendColor; + gTasks[taskId].tBlendCoeff = blendCoeff; + gTasks[taskId].data[2] = b; + gTasks[taskId].data[3] = r3; + sContest.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); + sContest.unk1920B_0 = 0; + } + } +} + +#undef tBlendColor +#undef tBlendCoeff + +void sub_80B1FD0(bool8 a) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (sContestantStatus[i].unk10_6 != 0 && a) + { + CpuCopy32( + 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]]; + gSprites[shared19338[i].unk1].invisible = FALSE; + } + else + { + gSprites[shared19338[i].unk1].invisible = TRUE; + } + } +} + +const u8 *GetTurnOrderNumberGfx(u8 contestant) +{ + if (sContestantStatus[contestant].unk10_6 != 1) + return gContestNextTurnRandomGfx; + else + return gContestNextTurnNumbersGfx + sContestantStatus[contestant].unk19 * 64; +} + +void sub_80B20C4(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (shared192D0_.unkD[i] != 0 && !Contest_IsMonsTurnDisabled(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 (sContestantStatus[a].disappointedRepeat || sContestantStatus[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++) + sContest.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; + + sContest.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 (!sContest.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; + sContest.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]); + sContest.unk1920B_1 = 0; + DestroyTask(taskId); + } +} + +u16 SanitizeMove(u16 move) +{ + if (move >= NUM_MOVES) + move = MOVE_POUND; + return move; +} + +u16 SanitizeSpecies(u16 species) +{ + if (species >= NUM_SPECIES) + species = SPECIES_NONE; + return species; +} + +void sub_80B2790(u8 a) +{ + s32 i; + u16 move = SanitizeMove(sContestantStatus[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 (move) + { + case MOVE_CURSE: + if (gBaseStats[species].type1 == TYPE_GHOST || gBaseStats[species].type2 == TYPE_GHOST) + gUnknown_0202F7C4 = 0; + else + gUnknown_0202F7C4 = 1; + break; + case MOVE_TRANSFORM: + case MOVE_ROLE_PLAY: + r5_2 = sContestantStatus[a].unk1B; + shared19348_.unk2 = SanitizeSpecies(gContestMons[r5_2].species); + shared19348_.unk10 = gContestMons[r5_2].personality; + shared19348_.unk4_0 = 1; + break; + case MOVE_RETURN: + gHappinessMoveAnim = 0xFF; + break; + case MOVE_FRUSTRATION: + gHappinessMoveAnim = 0; + break; + case MOVE_SOLAR_BEAM: + case MOVE_RAZOR_WIND: + case MOVE_SKULL_BASH: + case MOVE_SKY_ATTACK: + if (sContest.unk1925E == 0) + { + sContest.unk1925E = 2; + gUnknown_0202F7C4 = 0; + } + else + { + gUnknown_0202F7C4 = 1; + } + break; + } + sub_80B2968(); +} + +void sub_80B28CC(int unused) +{ + memset(&shared19348_, 0, sizeof(shared19348_)); + if (sContest.unk1925E != 0) + sContest.unk1925E--; +} + +void sub_80B28F0(u8 a) +{ + shared19348_.unk5 = a; + shared19348_.unk0 = SanitizeSpecies(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 SelectContestMoveBankTarget(u16 move) +{ + switch (gBattleMoves[move].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; + } +} + +bool8 Contest_SaveWinner(u8 a) +{ + s32 i; + u8 r7 = Random() % 3; + + for (i = 0; i < 3; i++) + { + if (gContestFinalStandings[i] == 0) + break; + } + if (a == 0xFF && i != gContestPlayerMonIndex) + return FALSE; + switch (gSpecialVar_ContestCategory) + { + case CONTEST_CATEGORY_COOL: + r7 += 0; + break; + case CONTEST_CATEGORY_BEAUTY: + r7 += 3; + break; + case CONTEST_CATEGORY_CUTE: + r7 += 6; + break; + case CONTEST_CATEGORY_SMART: + r7 += 9; + break; + case CONTEST_CATEGORY_TOUGH: + r7 += 12; + break; + } + 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 = gSpecialVar_ContestCategory; + else + gSaveBlock1.contestWinners[r4].contestCategory = r7; + } + else + { + shared15DE0.personality = gContestMons[i].personality; + shared15DE0.otId = gContestMons[i].otId; + shared15DE0.species = 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; +} + +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 (gSpecialVar_ContestCategory) + { + case CONTEST_CATEGORY_COOL: + return 8; + case CONTEST_CATEGORY_BEAUTY: + return 9; + case CONTEST_CATEGORY_CUTE: + return 10; + case CONTEST_CATEGORY_SMART: + return 11; + case CONTEST_CATEGORY_TOUGH: + default: + return 12; + } + } +} + +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 595491d5d..728562b81 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -18,11 +18,10 @@ #include "ewram.h" extern u8 gUnknown_0203856C; -extern u8 gUnknown_0203857D[][64]; 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; @@ -321,7 +320,7 @@ u8 MatsudaDebugMenu_CommTest(void) static void sub_80A9C98(u8 taskId) { - sub_80AE098(0); + Contest_CreatePlayerMon(0); SetTaskFuncWithFollowupFunc(taskId, sub_80C8734, sub_80A9CC0); } @@ -541,9 +540,9 @@ static void sub_80AA10C(void) gUnknown_02038694 = 0; if (!(gContestMons[0].nickname[0])) - sub_80AE398(0, 0); + Contest_InitAllPokemon(0, 0); - sub_80AE098(gUnknown_02038694); + Contest_CreatePlayerMon(gUnknown_02038694); for (i = 0; i < 6; i++) { @@ -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]); } } @@ -874,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]); } @@ -888,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]); } @@ -901,7 +895,7 @@ void sub_80AACC4(void) SetDebugMonForContest(); if (!(gIsLinkContest & 1)) sub_80AE82C(eMatsudaDebugVar); - SetMainCallback2(sub_80AB47C); + SetMainCallback2(CB2_StartContest); } } @@ -1155,10 +1149,10 @@ void sub_80AAF30(void) gUnknown_0203856C = 1; gContestPlayerMonIndex = 3; - sub_80AE098(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++) { @@ -1171,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) @@ -1201,11 +1195,11 @@ u8 MatsudaDebugMenu_SetArtMuseumItems(void) s32 i; gContestPlayerMonIndex = 3; - sub_80AE098(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/pokemon/learn_move.c b/src/pokemon/learn_move.c index 8aa10254c..5eee45b23 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" @@ -24,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[]; 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" diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 0ecaa9dcb..347f113c3 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -1729,7 +1729,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/scene/new_game.c b/src/scene/new_game.c index ee042a0de..0279f99c6 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 sEmptyMuseumPortrait = { - 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) @@ -83,13 +80,13 @@ 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.sbStruct.unkSB1.sb1_2EFC_struct[i] = gUnknown_08216604; + gSaveBlock1.museumPortraits[i] = sEmptyMuseumPortrait; } void ZeroBattleTowerData(void) @@ -142,7 +139,7 @@ void NewGameInitData(void) gSaveBlock1.money = 3000; ResetLinkContestBoolean(); ResetGameStats(); - sub_8052DA8(); + ResetContestAndMuseumWinners(); InitLinkBattleRecords(); InitShroomishSizeRecord(); InitBarboachSizeRecord(); diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 3ac2dc7a7..164d71cb5 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -46,14 +46,14 @@ 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) { - gSaveBlock1.vars[0x10] = gContestMons[0].unk16; - gSaveBlock1.vars[0x11] = gContestMons[1].unk16; - gSaveBlock1.vars[0x12] = gContestMons[2].unk16; + gSaveBlock1.vars[0x10] = gContestMons[0].trainerGfxId; + gSaveBlock1.vars[0x11] = gContestMons[1].trainerGfxId; + gSaveBlock1.vars[0x12] = gContestMons[2].trainerGfxId; } void sub_80C4C28(void) @@ -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; @@ -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) { @@ -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.museumPortraits[i].species != 0) retVar++; return retVar; @@ -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); @@ -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].trainerGfxId); + VarSet(0x4011, gContestMons[1].trainerGfxId); + VarSet(0x4012, gContestMons[2].trainerGfxId); + VarSet(0x4013, gContestMons[3].trainerGfxId); } bool8 GiveMonArtistRibbon(void) @@ -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) { @@ -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; diff --git a/sym_ewram.txt b/sym_ewram.txt index 5524b00db..bc74103f1 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -476,7 +476,7 @@ gUnknown_02038680: @ 2038680 gUnknown_02038688: @ 2038688 .space 0x8 -gUnknown_02038690: @ 2038690 +gContestFinalStandings: @ 2038690 .space 0x4 gUnknown_02038694: @ 2038694 |