diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-23 22:56:32 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-23 22:56:32 -0500 |
commit | 69a690ef38cc80e202606d28a8c9934f7e5ddaa9 (patch) | |
tree | c87a4cae8787ed4b366019a0fea4aad87ea6a38b | |
parent | 6a04b79b7cd3e250c4bb9e786327847ac659c969 (diff) |
through sub_80C2A8C
-rw-r--r-- | asm/contest_link_80C2020.s | 644 | ||||
-rw-r--r-- | src/battle/contest_link_80C2020.c | 225 |
2 files changed, 219 insertions, 650 deletions
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 736ccd5e3..0e05c0ea1 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -5,650 +5,6 @@ .text - thumb_func_start sub_80C27EC -sub_80C27EC: @ 80C27EC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C2810 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080C284C - cmp r0, 0x1 - bgt _080C2814 - cmp r0, 0 - beq _080C281A - b _080C286C - .align 2, 0 -_080C2810: .4byte gTasks -_080C2814: - cmp r0, 0x2 - beq _080C285C - b _080C286C -_080C281A: - ldr r5, _080C2840 @ =gSharedMem + 0x18000 - ldrb r0, [r5, 0xA] - cmp r0, 0 - bne _080C286C - ldrh r1, [r4, 0xC] - adds r0, r1, 0x1 - strh r0, [r4, 0xC] - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl sub_80C40D4 - ldrb r0, [r5, 0x14] - cmp r0, 0 - bne _080C2844 - movs r0, 0x2 - strh r0, [r4, 0x8] - b _080C286C - .align 2, 0 -_080C2840: .4byte gSharedMem + 0x18000 -_080C2844: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080C286C -_080C284C: - ldr r0, _080C2858 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x14] - cmp r0, 0 - bne _080C286C - strh r0, [r4, 0x8] - b _080C286C - .align 2, 0 -_080C2858: .4byte gSharedMem + 0x18000 -_080C285C: - movs r0, 0x88 - lsls r0, 3 - bl sub_80C3520 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, _080C2874 @ =sub_80C2878 - str r0, [r4] -_080C286C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C2874: .4byte sub_80C2878 - thumb_func_end sub_80C27EC - - thumb_func_start sub_80C2878 -sub_80C2878: @ 80C2878 - push {r4-r7,lr} - sub sp, 0x64 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080C28A0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x5 - bls _080C2896 - b _080C2A80 -_080C2896: - lsls r0, 2 - ldr r1, _080C28A4 @ =_080C28A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C28A0: .4byte gTasks -_080C28A4: .4byte _080C28A8 - .align 2, 0 -_080C28A8: - .4byte _080C28C0 - .4byte _080C28E0 - .4byte _080C28FE - .4byte _080C2938 - .4byte _080C299C - .4byte _080C2A70 -_080C28C0: - ldr r0, _080C28DC @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080C28CA - b _080C2A80 -_080C28CA: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r2 - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _080C2A80 - .align 2, 0 -_080C28DC: .4byte gSharedMem + 0x18000 -_080C28E0: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - beq _080C28F8 - b _080C2A80 -_080C28F8: - movs r0, 0 - strh r0, [r1, 0xA] - b _080C2A4A -_080C28FE: - movs r4, 0 - lsls r6, r5, 2 - ldr r7, _080C292C @ =gTasks -_080C2904: - ldr r0, _080C2930 @ =sub_80C3A5C - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r7 - ldr r0, _080C2934 @ =gContestFinalStandings - adds r0, r4, r0 - ldrb r0, [r0] - strh r0, [r1, 0x8] - strh r4, [r1, 0xA] - adds r4, 0x1 - cmp r4, 0x3 - ble _080C2904 - b _080C2A42 - .align 2, 0 -_080C292C: .4byte gTasks -_080C2930: .4byte sub_80C3A5C -_080C2934: .4byte gContestFinalStandings -_080C2938: - ldr r0, _080C2990 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x5] - cmp r0, 0x4 - beq _080C2942 - b _080C2A80 -_080C2942: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r2 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - beq _080C295A - b _080C2A80 -_080C295A: - movs r0, 0 - strh r0, [r4, 0xA] - ldr r0, _080C2994 @ =sub_80C3B30 - movs r1, 0xA - bl CreateTask - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r4, 0 - ldr r1, _080C2998 @ =gContestFinalStandings - ldrb r0, [r1] - cmp r0, 0 - beq _080C2984 -_080C2976: - adds r4, 0x1 - cmp r4, 0x3 - bgt _080C2984 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080C2976 -_080C2984: - lsls r0, r4, 24 - lsrs r0, 24 - movs r1, 0xE - bl sub_80C3E60 - b _080C2A80 - .align 2, 0 -_080C2990: .4byte gSharedMem + 0x18000 -_080C2994: .4byte sub_80C3B30 -_080C2998: .4byte gContestFinalStandings -_080C299C: - lsls r1, r5, 2 - adds r0, r1, r5 - lsls r0, 3 - adds r2, r0, r2 - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - adds r6, r1, 0 - cmp r0, 0x15 - bne _080C2A80 - movs r0, 0 - strh r0, [r2, 0xA] - movs r4, 0 - ldr r2, _080C29F4 @ =gContestFinalStandings - ldrb r0, [r2] - ldr r1, _080C29F8 @ =gIsLinkContest - ldr r3, _080C29FC @ =gStringVar1 - cmp r0, 0 - beq _080C29D4 -_080C29C6: - adds r4, 0x1 - cmp r4, 0x3 - bgt _080C29D4 - adds r0, r4, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080C29C6 -_080C29D4: - ldrb r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080C2A04 - lsls r1, r4, 3 - subs r1, r4 - lsls r1, 2 - ldr r0, _080C2A00 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r3, 0 - bl StringCopy - lsls r4, 6 - b _080C2A10 - .align 2, 0 -_080C29F4: .4byte gContestFinalStandings -_080C29F8: .4byte gIsLinkContest -_080C29FC: .4byte gStringVar1 -_080C2A00: .4byte gLinkPlayers + 0x8 -_080C2A04: - lsls r4, 6 - ldr r1, _080C2A54 @ =gContestMons + 0xD - adds r1, r4, r1 - adds r0, r3, 0 - bl StringCopy -_080C2A10: - ldr r0, _080C2A58 @ =gStringVar2 - ldr r1, _080C2A5C @ =gContestMons + 0x2 - adds r1, r4, r1 - bl StringCopy - ldr r1, _080C2A60 @ =gContestText_PokeWon - mov r0, sp - bl StringExpandPlaceholders - ldr r0, _080C2A64 @ =gSharedMem + 0x18000 - ldrb r1, [r0] - mov r0, sp - bl sub_80C3158 - mov r0, sp - bl sub_80C34AC - lsls r0, 16 - asrs r0, 16 - ldr r2, _080C2A68 @ =0x0000ffff - movs r3, 0x88 - lsls r3, 3 - movs r1, 0x90 - bl sub_80C34CC -_080C2A42: - ldr r0, _080C2A6C @ =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 -_080C2A4A: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080C2A80 - .align 2, 0 -_080C2A54: .4byte gContestMons + 0xD -_080C2A58: .4byte gStringVar2 -_080C2A5C: .4byte gContestMons + 0x2 -_080C2A60: .4byte gContestText_PokeWon -_080C2A64: .4byte gSharedMem + 0x18000 -_080C2A68: .4byte 0x0000ffff -_080C2A6C: .4byte gTasks -_080C2A70: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x8] - ldr r1, _080C2A88 @ =sub_80C2A8C - str r1, [r0] -_080C2A80: - add sp, 0x64 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C2A88: .4byte sub_80C2A8C - thumb_func_end sub_80C2878 - - thumb_func_start sub_80C2A8C -sub_80C2A8C: @ 80C2A8C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080C2ABC @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0x5 - bls _080C2AB2 - b _080C2D04 -_080C2AB2: - lsls r0, 2 - ldr r1, _080C2AC0 @ =_080C2AC4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C2ABC: .4byte gTasks -_080C2AC0: .4byte _080C2AC4 - .align 2, 0 -_080C2AC4: - .4byte _080C2ADC - .4byte _080C2C04 - .4byte _080C2C54 - .4byte _080C2C64 - .4byte _080C2CA8 - .4byte _080C2CE8 -_080C2ADC: - ldr r1, _080C2BC4 @ =gBattle_WIN0H - movs r0, 0xF0 - strh r0, [r1] - ldr r1, _080C2BC8 @ =gBattle_WIN0V - ldr r3, _080C2BCC @ =0x00005050 - adds r0, r3, 0 - strh r0, [r1] - movs r1, 0 - ldr r3, _080C2BD0 @ =gContestFinalStandings - ldrb r0, [r3] - lsls r4, r7, 2 - mov r10, r4 - ldr r2, _080C2BD4 @ =gContestMons - ldr r5, _080C2BD8 @ =gMonFrontPicTable - mov r12, r5 - ldr r4, _080C2BDC @ =gMonFrontPicCoords - mov r8, r4 - ldr r5, _080C2BE0 @ =gUnknown_081FAF4C - mov r9, r5 - cmp r0, 0 - beq _080C2B14 -_080C2B06: - adds r1, 0x1 - cmp r1, 0x3 - bgt _080C2B14 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _080C2B06 -_080C2B14: - lsls r1, 6 - adds r0, r1, r2 - ldrh r6, [r0] - adds r0, r2, 0 - adds r0, 0x38 - adds r0, r1, r0 - ldr r4, [r0] - adds r0, r2, 0 - adds r0, 0x3C - adds r1, r0 - ldr r1, [r1] - str r1, [sp, 0xC] - lsls r0, r6, 3 - add r0, r12 - lsls r2, r6, 2 - add r2, r8 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - mov r5, r9 - ldr r3, [r5, 0x4] - str r3, [sp] - str r6, [sp, 0x4] - str r4, [sp, 0x8] - ldr r3, _080C2BE4 @ =gSharedMem - bl HandleLoadSpecialPokePic - adds r0, r6, 0 - ldr r1, [sp, 0xC] - adds r2, r4, 0 - bl GetMonSpritePalStructFromOtIdPersonality - adds r4, r0, 0 - bl LoadCompressedObjectPalette - adds r0, r6, 0 - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C - ldr r0, _080C2BE8 @ =gUnknown_02024E8C - ldrh r1, [r4, 0x4] - strh r1, [r0, 0x2] - movs r1, 0x88 - lsls r1, 1 - movs r2, 0x50 - movs r3, 0xA - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080C2BEC @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r3, r2, r5 - strh r6, [r3, 0x30] - ldrb r4, [r3, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r4 - strb r1, [r3, 0x5] - adds r5, 0x1C - adds r2, r5 - ldr r1, _080C2BF0 @ =sub_80C3C44 - str r1, [r2] - ldr r2, _080C2BE4 @ =gSharedMem - movs r3, 0xC0 - lsls r3, 9 - adds r1, r2, r3 - strb r0, [r1, 0x8] - ldr r0, _080C2BF4 @ =gUnknown_083D17CC - bl LoadCompressedObjectPic - ldr r0, _080C2BF8 @ =gUnknown_083D17D4 - bl LoadCompressedObjectPalette - ldr r0, _080C2BFC @ =sub_80C3D04 - movs r1, 0xA - bl CreateTask - ldr r0, _080C2C00 @ =gTasks - mov r4, r10 - adds r1, r4, r7 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080C2D04 - .align 2, 0 -_080C2BC4: .4byte gBattle_WIN0H -_080C2BC8: .4byte gBattle_WIN0V -_080C2BCC: .4byte 0x00005050 -_080C2BD0: .4byte gContestFinalStandings -_080C2BD4: .4byte gContestMons -_080C2BD8: .4byte gMonFrontPicTable -_080C2BDC: .4byte gMonFrontPicCoords -_080C2BE0: .4byte gUnknown_081FAF4C -_080C2BE4: .4byte gSharedMem -_080C2BE8: .4byte gUnknown_02024E8C -_080C2BEC: .4byte gSprites -_080C2BF0: .4byte sub_80C3C44 -_080C2BF4: .4byte gUnknown_083D17CC -_080C2BF8: .4byte gUnknown_083D17D4 -_080C2BFC: .4byte sub_80C3D04 -_080C2C00: .4byte gTasks -_080C2C04: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r4, r0, r4 - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080C2D04 - movs r0, 0 - strh r0, [r4, 0xE] - ldrh r0, [r4, 0xC] - adds r0, 0x2 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - ble _080C2C30 - movs r0, 0x20 - strh r0, [r4, 0xC] -_080C2C30: - ldrb r2, [r4, 0xC] - ldr r3, _080C2C50 @ =gBattle_WIN0V - movs r0, 0x50 - subs r0, r2 - lsls r0, 8 - adds r1, r2, 0 - adds r1, 0x50 - orrs r0, r1 - strh r0, [r3] - cmp r2, 0x20 - bne _080C2D04 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080C2D04 - .align 2, 0 -_080C2C50: .4byte gBattle_WIN0V -_080C2C54: - ldr r0, _080C2C60 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x6] - cmp r0, 0x1 - bne _080C2D04 - b _080C2CD0 - .align 2, 0 -_080C2C60: .4byte gSharedMem + 0x18000 -_080C2C64: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r3, r0, r4 - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x79 - bne _080C2D04 - movs r0, 0 - strh r0, [r3, 0xA] - ldr r2, _080C2C9C @ =gSprites - ldr r0, _080C2CA0 @ =gSharedMem + 0x18000 - ldrb r1, [r0, 0x8] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080C2CA4 @ =sub_80C3CB8 - str r1, [r0] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080C2D04 - .align 2, 0 -_080C2C9C: .4byte gSprites -_080C2CA0: .4byte gSharedMem + 0x18000 -_080C2CA4: .4byte sub_80C3CB8 -_080C2CA8: - ldr r0, _080C2CE0 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x6] - cmp r0, 0x2 - bne _080C2D04 - ldr r3, _080C2CE4 @ =gBattle_WIN0V - ldrh r0, [r3] - lsrs r2, r0, 8 - adds r0, r2, 0x2 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x50 - bls _080C2CC2 - movs r2, 0x50 -_080C2CC2: - lsls r1, r2, 8 - movs r0, 0xA0 - subs r0, r2 - orrs r1, r0 - strh r1, [r3] - cmp r2, 0x50 - bne _080C2D04 -_080C2CD0: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r4 - ldrh r1, [r0, 0x8] - adds r1, 0x1 - strh r1, [r0, 0x8] - b _080C2D04 - .align 2, 0 -_080C2CE0: .4byte gSharedMem + 0x18000 -_080C2CE4: .4byte gBattle_WIN0V -_080C2CE8: - ldr r2, _080C2D14 @ =gSharedMem + 0x18000 - ldrb r0, [r2, 0x6] - cmp r0, 0x2 - bne _080C2D04 - movs r1, 0 - movs r0, 0x1 - strb r0, [r2, 0x9] - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r4 - strh r1, [r0, 0x8] - ldr r1, _080C2D18 @ =sub_80C2D1C - str r1, [r0] -_080C2D04: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C2D14: .4byte gSharedMem + 0x18000 -_080C2D18: .4byte sub_80C2D1C - thumb_func_end sub_80C2A8C - thumb_func_start sub_80C2D1C sub_80C2D1C: @ 80C2D1C push {r4-r7,lr} diff --git a/src/battle/contest_link_80C2020.c b/src/battle/contest_link_80C2020.c index dd09e2465..cf8c32405 100644 --- a/src/battle/contest_link_80C2020.c +++ b/src/battle/contest_link_80C2020.c @@ -1,4 +1,5 @@ #include "global.h" +#include "data2.h" #include "constants/songs.h" #include "ewram.h" #include "main.h" @@ -14,18 +15,31 @@ #include "battle.h" #include "contest.h" #include "link.h" +#include "field_effect.h" #include "contest_link_80C857C.h" #include "contest_link_80C2020.h" #define ABS(x) ((x) < 0 ? -(x) : (x)) +#define GET_CONTEST_WINNER(var) { \ + for ((var) = 0; (var) < 4; (var)++) \ + { \ + if (gContestFinalStandings[i] == 0) \ + break; \ + } \ +} + struct UnkEwramStruct18000 { u8 unk_00; u8 filler_01[1]; u8 unk_02; u8 filler_03[1]; u8 unk_04; - u8 filler_05[5]; + u8 unk_05; + u8 unk_06; + u8 filler_07[1]; + u8 unk_08; + u8 unk_09; u8 unk_0a; u8 filler_0b[9]; u8 unk_14; @@ -48,23 +62,34 @@ void sub_80C2600(u8 taskId); void sub_80C26E4(u8 taskId); void sub_80C2770(u8 taskId); void sub_80C27EC(u8 taskId); +void sub_80C2878(u8 taskId); +void sub_80C2A8C(u8 taskId); +void sub_80C2D1C(u8 taskId); void sub_80C2F28(u8 taskId); void sub_80C2F64(u8 taskId); +void sub_80C30D4(u8 a0, u8 a1); +void sub_80C310C(void); void sub_80C3158(const u8 *string, u8 spriteId); +void sub_80C33DC(void); u16 sub_80C34AC(const u8 *string); void sub_80C34CC(s16 data4, s16 pos0y, u16 data5, s16 data6); void sub_80C3520(u16 a0); +void sub_80C3698(const u8 *string); void sub_80C3764(void); void sub_80C37E4(void); -void sub_80C310C(void); -void sub_80C30D4(u8 a0, u8 a1); -void sub_80C33DC(void); -void sub_80C3698(const u8 *string); -void sub_80C3F00(void); u8 sub_80C3990(u8 a0, u8 a1); s8 sub_80C39E4(u8 a0, u8 a1); +void sub_80C3A5C(u8 taskId); +void sub_80C3B30(u8 taskId); +void sub_80C3C44(struct Sprite *sprite); +void sub_80C3CB8(struct Sprite *sprite); +void sub_80C3D04(u8 taskId); +void sub_80C3E60(u8 a0, u8 a1); +void sub_80C3F00(void); void sub_80C40D4(u8 a0, u8 a1); +extern const struct CompressedSpriteSheet gUnknown_083D17CC; +extern const struct CompressedSpritePalette gUnknown_083D17D4; extern const u8 gUnknown_083D17DC[]; extern const u8 gUnknown_083D17E0[]; @@ -370,3 +395,191 @@ void sub_80C2770(u8 taskId) gTasks[taskId].func = sub_80C27EC; } } + +void sub_80C27EC(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (eContestLink80C2020Struct2018000.unk_0a == 0) + { + sub_80C40D4(1, gTasks[taskId].data[2]++); + if (eContestLink80C2020Struct2018000.unk_14 == 0) + { + gTasks[taskId].data[0] = 2; + } + else + { + gTasks[taskId].data[0]++; + } + } + break; + case 1: + if (eContestLink80C2020Struct2018000.unk_14 == 0) + { + gTasks[taskId].data[0] = 0; + } + break; + case 2: + sub_80C3520(0x440); + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80C2878; + break; + } +} + +void sub_80C2878(u8 taskId) +{ + int i; + u8 taskId2; + u8 strbuf[100]; + + switch (gTasks[taskId].data[0]) + { + case 0: + if (eContestLink80C2020Struct2018000.unk_04 == 0) + gTasks[taskId].data[0]++; + break; + case 1: + if (++gTasks[taskId].data[1] == 31) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + break; + case 2: + for (i = 0; i < 4; i++) + { + taskId2 = CreateTask(sub_80C3A5C, 10); + gTasks[taskId2].data[0] = gContestFinalStandings[i]; + gTasks[taskId2].data[1] = i; + } + gTasks[taskId].data[0]++; + break; + case 3: + if (eContestLink80C2020Struct2018000.unk_05 == 4) + { + if (++gTasks[taskId].data[1] == 31) + { + gTasks[taskId].data[1] = 0; + CreateTask(sub_80C3B30, 10); + gTasks[taskId].data[0]++; + GET_CONTEST_WINNER(i); + sub_80C3E60(i, 14); + } + } + break; + case 4: + if (++gTasks[taskId].data[1] == 21) + { + gTasks[taskId].data[1] = 0; + GET_CONTEST_WINNER(i); + if (gIsLinkContest & 1) + { + StringCopy(gStringVar1, gLinkPlayers[i].name); + } + else + { + StringCopy(gStringVar1, gContestMons[i].trainerName); + } + StringCopy(gStringVar2, gContestMons[i].nickname); + StringExpandPlaceholders(strbuf, gContestText_PokeWon); + sub_80C3158(strbuf, eContestLink80C2020Struct2018000.unk_00); + sub_80C34CC(sub_80C34AC(strbuf), 0x90, 0xffff, 0x440); + gTasks[taskId].data[0]++; + } + break; + case 5: + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80C2A8C; + break; + } +} + +void sub_80C2A8C(u8 taskId) +{ + int i; + u8 spriteId; + u16 species; + u32 personality; + u32 otId; + const struct CompressedSpritePalette *monPal; + + switch (gTasks[taskId].data[0]) + { + case 0: + gBattle_WIN0H = 0xf0; + gBattle_WIN0V = 0x5050; + GET_CONTEST_WINNER(i); + species = gContestMons[i].species; + personality = gContestMons[i].personality; + otId = gContestMons[i].otId; + HandleLoadSpecialPokePic(gMonFrontPicTable + species, gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (intptr_t)gSharedMem, gUnknown_081FAF4C[1], species, personality); + monPal = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); + LoadCompressedObjectPalette(monPal); + GetMonSpriteTemplate_803C56C(species, 1); + gUnknown_02024E8C.paletteTag = monPal->tag; + spriteId = CreateSprite(&gUnknown_02024E8C, 0x110, 0x50, 10); + gSprites[spriteId].data[1] = species; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].callback = sub_80C3C44; + eContestLink80C2020Struct2018000.unk_08 = spriteId; + LoadCompressedObjectPic(&gUnknown_083D17CC); + LoadCompressedObjectPalette(&gUnknown_083D17D4); + CreateTask(sub_80C3D04, 10); + gTasks[taskId].data[0]++; + break; + case 1: + if (++gTasks[taskId].data[3] == 1) + { + u8 win0v; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[2] += 2; + if (gTasks[taskId].data[2] > 0x20) + gTasks[taskId].data[2] = 0x20; + win0v = gTasks[taskId].data[2]; + gBattle_WIN0V = ((0x50 - win0v) << 8) | (0x50 + win0v); + if (win0v == 0x20) + { + gTasks[taskId].data[0]++; + } + } + break; + case 2: + if (eContestLink80C2020Struct2018000.unk_06 == 1) + { + gTasks[taskId].data[0]++; + } + break; + case 3: + if (++gTasks[taskId].data[1] == 121) + { + gTasks[taskId].data[1] = 0; + gSprites[eContestLink80C2020Struct2018000.unk_08].callback = sub_80C3CB8; + gTasks[taskId].data[0]++; + } + break; + case 4: + if (eContestLink80C2020Struct2018000.unk_06 == 2) + { + u8 win0v = (gBattle_WIN0V >> 8); + win0v += 2; + if (win0v > 0x50) + win0v = 0x50; + gBattle_WIN0V = (win0v << 8) | (0xa0 - win0v); + if (win0v == 0x50) + { + gTasks[taskId].data[0]++; + } + } + break; + case 5: + if (eContestLink80C2020Struct2018000.unk_06 == 2) + { + eContestLink80C2020Struct2018000.unk_09 = 1; + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80C2D1C; + } + break; + } +} |