diff options
-rw-r--r-- | asm/contest_link_80F57C4.s | 2812 | ||||
-rw-r--r-- | include/contest.h | 3 | ||||
-rw-r--r-- | include/contest_painting.h | 3 | ||||
-rw-r--r-- | include/graphics.h | 11 | ||||
-rw-r--r-- | include/link_rfu.h | 1 | ||||
-rw-r--r-- | include/strings.h | 5 | ||||
-rw-r--r-- | include/tv.h | 3 | ||||
-rwxr-xr-x | src/contest_link_80F57C4.c | 1290 | ||||
-rw-r--r-- | src/contest_painting.c | 3 | ||||
-rw-r--r-- | src/tv.c | 4 |
10 files changed, 1316 insertions, 2819 deletions
diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s index 1aae2151f..d73293648 100644 --- a/asm/contest_link_80F57C4.s +++ b/asm/contest_link_80F57C4.s @@ -5,2818 +5,6 @@ .text - thumb_func_start sub_80F5B00 -sub_80F5B00: @ 80F5B00 - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, =gPaletteFade - ldrb r0, [r5, 0x8] - movs r6, 0x80 - orrs r0, r6 - strb r0, [r5, 0x8] - movs r0, 0 - bl SetVBlankCallback - bl sub_80F7DF4 - bl sub_80F57C4 - bl ScanlineEffect_Clear - bl ResetPaletteFade - bl ResetSpriteData - bl ResetTasks - bl FreeAllSpritePalettes - bl sub_80F591C - bl sub_80F6A9C - movs r0, 0 - movs r1, 0x1 - bl sub_80F6A64 - bl sub_80F5AE0 - ldr r4, =gUnknown_0203A034 - ldr r0, [r4] - ldr r0, [r0] - movs r1, 0 - movs r2, 0x18 - bl memset - ldr r0, [r4] - ldr r0, [r0, 0x4] - movs r1, 0 - movs r2, 0x50 - bl memset - bl sub_80F6DC0 - bl sub_80F6AE8 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldrb r1, [r5, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r5, 0x8] - ldr r0, =sub_80F5CE4 - movs r1, 0x5 - bl CreateTask - ldr r1, [r4] - ldr r1, [r1] - strb r0, [r1, 0x2] - ldr r0, =sub_80F5C00 - bl SetMainCallback2 - ldr r1, =gBattle_WIN1H - movs r0, 0xF0 - strh r0, [r1] - ldr r1, =gBattle_WIN1V - ldr r2, =0x000080a0 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, =sub_80F68B4 - movs r1, 0x14 - bl CreateTask - bl sub_80F7880 - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F5BE4 - ldrb r0, [r5, 0x8] - orrs r0, r6 - strb r0, [r5, 0x8] - b _080F5BEC - .pool -_080F5BE4: - movs r0, 0xDF - lsls r0, 1 - bl PlayBGM -_080F5BEC: - ldr r0, =sub_80F5C24 - bl SetVBlankCallback - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F5B00 - - thumb_func_start sub_80F5C00 -sub_80F5C00: @ 80F5C00 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - bl RunTasks - bl UpdatePaletteFade - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - pop {r0} - bx r0 - thumb_func_end sub_80F5C00 - - thumb_func_start sub_80F5C24 -sub_80F5C24: @ 80F5C24 - push {lr} - ldr r0, =gBattle_BG0_X - ldrh r1, [r0] - movs r0, 0x10 - bl SetGpuReg - ldr r0, =gBattle_BG0_Y - ldrh r1, [r0] - movs r0, 0x12 - bl SetGpuReg - ldr r0, =gBattle_BG1_X - ldrh r1, [r0] - movs r0, 0x14 - bl SetGpuReg - ldr r0, =gBattle_BG1_Y - ldrh r1, [r0] - movs r0, 0x16 - bl SetGpuReg - ldr r0, =gBattle_BG2_X - ldrh r1, [r0] - movs r0, 0x18 - bl SetGpuReg - ldr r0, =gBattle_BG2_Y - ldrh r1, [r0] - movs r0, 0x1A - bl SetGpuReg - ldr r0, =gBattle_BG3_X - ldrh r1, [r0] - movs r0, 0x1C - bl SetGpuReg - ldr r0, =gBattle_BG3_Y - ldrh r1, [r0] - movs r0, 0x1E - bl SetGpuReg - ldr r0, =gBattle_WIN0H - ldrh r1, [r0] - movs r0, 0x40 - bl SetGpuReg - ldr r0, =gBattle_WIN0V - ldrh r1, [r0] - movs r0, 0x44 - bl SetGpuReg - ldr r0, =gBattle_WIN1H - ldrh r1, [r0] - movs r0, 0x42 - bl SetGpuReg - ldr r0, =gBattle_WIN1V - ldrh r1, [r0] - movs r0, 0x46 - bl SetGpuReg - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl ScanlineEffect_InitHBlankDmaTransfer - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F5C24 - - thumb_func_start sub_80F5CE4 -sub_80F5CE4: @ 80F5CE4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, =gIsLinkContest - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080F5CF8 - b _080F5E2E -_080F5CF8: - ldr r2, =gTasks - lsls r1, r6, 2 - adds r0, r1, r6 - lsls r0, 3 - adds r4, r0, r2 - movs r2, 0x8 - ldrsh r0, [r4, r2] - adds r7, r1, 0 - cmp r0, 0x1 - beq _080F5DE0 - cmp r0, 0x1 - bgt _080F5D20 - cmp r0, 0 - beq _080F5D2A - b _080F5E2E - .pool -_080F5D20: - cmp r0, 0x2 - beq _080F5DF4 - cmp r0, 0x3 - beq _080F5E0A - b _080F5E2E -_080F5D2A: - bl sub_80DBED4 - ldr r1, =gContestFinalStandings - ldr r0, =gContestPlayerMonIndex - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F5D58 - movs r0, 0x23 - bl IncrementGameStat - ldr r1, =gSpecialVar_0x8005 - movs r0, 0x8 - strh r0, [r1] - bl InterviewBefore - ldr r0, =gSpecialVar_Result - ldrh r0, [r0] - cmp r0, 0x1 - beq _080F5D58 - bl InterviewAfter -_080F5D58: - movs r0, 0x2 - bl sub_813BADC - ldr r0, =gSpecialVar_ContestRank - ldrb r0, [r0] - bl sub_80DEDA8 - movs r0, 0xFE - bl sub_80DEDA8 - ldr r1, =gUnknown_02039F5C - movs r0, 0x1 - strb r0, [r1] - movs r0, 0xFE - movs r1, 0 - bl sub_80DEFA8 - ldr r1, =gUnknown_02039F5D - strb r0, [r1] - ldr r5, =0x00004086 - adds r0, r5, 0 - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0 - bl VarSet - bl SetContinueGameWarpStatusToDynamicWarp - movs r0, 0x1 - bl TrySavingData - bl ClearContinueGameWarpStatus2 - adds r0, r5, 0 - adds r1, r4, 0 - bl VarSet - ldr r0, =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080F5E2E - .pool -_080F5DE0: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - ldrb r1, [r3] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080F5E2E - movs r0, 0x64 - b _080F5E2C -_080F5DF4: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _080F5EBA - bl sub_800ADF8 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080F5EBA -_080F5E0A: - bl IsLinkTaskFinished - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080F5EBA - movs r0, 0xDF - lsls r0, 1 - bl PlayBGM - ldr r2, =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldrh r0, [r4, 0x8] - adds r0, 0x1 -_080F5E2C: - strh r0, [r4, 0x8] -_080F5E2E: - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080F5EBA - ldr r1, =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - strh r2, [r4, 0x8] - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080F5E78 - ldr r0, =gText_CommunicationStandby - bl sub_80F707C - ldr r0, =sub_80F5ED8 - b _080F5EB8 - .pool -_080F5E78: - movs r0, 0x24 - bl IncrementGameStat - ldr r1, =gContestFinalStandings - ldr r0, =gContestPlayerMonIndex - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F5E92 - movs r0, 0x25 - bl IncrementGameStat -_080F5E92: - ldr r0, =gSpecialVar_ContestRank - ldrb r0, [r0] - bl sub_80DEDA8 - movs r0, 0xFE - bl sub_80DEDA8 - ldr r0, =gUnknown_02039F5C - strb r5, [r0] - movs r0, 0xFE - movs r1, 0 - bl sub_80DEFA8 - ldr r1, =gUnknown_02039F5D - strb r0, [r1] - movs r0, 0x2 - bl sub_813BADC - ldr r0, =sub_80F5F74 -_080F5EB8: - str r0, [r4] -_080F5EBA: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F5CE4 - - thumb_func_start sub_80F5ED8 -sub_80F5ED8: @ 80F5ED8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080F5EFC - ldr r0, =sub_80F5F14 - movs r1, 0 - bl CreateTask - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =TaskDummy - str r1, [r0] -_080F5EFC: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F5ED8 - - thumb_func_start sub_80F5F14 -sub_80F5F14: @ 80F5F14 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, =sub_80FC998 - ldr r2, =sub_80F5F30 - bl SetTaskFuncWithFollowupFunc - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F5F14 - - thumb_func_start sub_80F5F30 -sub_80F5F30: @ 80F5F30 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _080F5F60 - adds r0, r4, 0 - bl DestroyTask - ldr r2, =gTasks - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, =sub_80F5F74 - str r1, [r0] - bl sub_80F7144 -_080F5F60: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F5F30 - - thumb_func_start sub_80F5F74 -sub_80F5F74: @ 80F5F74 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r1, [r4, 0x8] - movs r2, 0x8 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080F5FC4 - ldr r0, =sub_80F68F0 - movs r1, 0x14 - bl CreateTask - ldr r0, =gText_AnnouncingResults - ldr r1, =gUnknown_0203A034 - ldr r1, [r1] - ldr r1, [r1] - ldrb r1, [r1] - bl sub_80F6B78 - lsls r0, 16 - asrs r0, 16 - movs r3, 0x88 - lsls r3, 3 - movs r1, 0x90 - movs r2, 0x78 - b _080F6016 - .pool -_080F5FC4: - cmp r0, 0x1 - bne _080F5FDC - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0 - bne _080F6048 - b _080F5FF0 - .pool -_080F5FDC: - cmp r0, 0x2 - bne _080F5FF8 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080F6048 - movs r0, 0 -_080F5FF0: - strh r0, [r4, 0xA] - adds r0, r1, 0x1 - strh r0, [r4, 0x8] - b _080F6048 -_080F5FF8: - cmp r0, 0x3 - bne _080F6030 - ldr r0, =gText_PreliminaryResults - ldr r1, =gUnknown_0203A034 - ldr r1, [r1] - ldr r1, [r1] - ldrb r1, [r1] - bl sub_80F6B78 - lsls r0, 16 - asrs r0, 16 - ldr r2, =0x0000ffff - movs r3, 0x88 - lsls r3, 3 - movs r1, 0x90 -_080F6016: - bl sub_80F6E9C - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080F6048 - .pool -_080F6030: - cmp r0, 0x4 - bne _080F6048 - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0x2 - bne _080F6048 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, =sub_80F6058 - str r0, [r4] -_080F6048: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F5F74 - - thumb_func_start sub_80F6058 -sub_80F6058: @ 80F6058 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =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 _080F60C0 - cmp r0, 0x1 - bgt _080F6080 - cmp r0, 0 - beq _080F6086 - b _080F60E6 - .pool -_080F6080: - cmp r0, 0x2 - beq _080F60D4 - b _080F60E6 -_080F6086: - ldr r5, =gUnknown_0203A034 - ldr r0, [r5] - ldr r0, [r0] - ldrb r0, [r0, 0xA] - cmp r0, 0 - bne _080F60E6 - ldrh r1, [r4, 0xC] - adds r0, r1, 0x1 - strh r0, [r4, 0xC] - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - bl sub_80F7A80 - ldr r0, [r5] - ldr r0, [r0] - ldrb r0, [r0, 0x14] - cmp r0, 0 - bne _080F60B8 - movs r0, 0x2 - strh r0, [r4, 0x8] - b _080F60E6 - .pool -_080F60B8: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080F60E6 -_080F60C0: - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r0, [r0, 0x14] - cmp r0, 0 - bne _080F60E6 - strh r0, [r4, 0x8] - b _080F60E6 - .pool -_080F60D4: - movs r0, 0x88 - lsls r0, 3 - bl sub_80F6EF4 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xC] - ldr r0, =sub_80F60F0 - str r0, [r4] -_080F60E6: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6058 - - thumb_func_start sub_80F60F0 -sub_80F60F0: @ 80F60F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r4, r2, 0 - ldr r0, =gUnknown_0203A034 - ldr r5, [r0] - ldr r0, [r5] - ldrb r3, [r0, 0x4] - cmp r3, 0 - bne _080F614C - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080F615E - strh r3, [r1, 0xA] - ldr r0, =gText_Round2Results - ldr r1, [r5] - ldrb r1, [r1] - bl sub_80F6B78 - lsls r0, 16 - asrs r0, 16 - ldr r2, =0x0000ffff - movs r3, 0x88 - lsls r3, 3 - movs r1, 0x90 - bl sub_80F6E9C - b _080F615E - .pool -_080F614C: - cmp r3, 0x2 - bne _080F615E - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_80F616C - str r0, [r1] -_080F615E: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F60F0 - - thumb_func_start sub_80F616C -sub_80F616C: @ 80F616C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =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 _080F61D4 - cmp r0, 0x1 - bgt _080F6194 - cmp r0, 0 - beq _080F619A - b _080F61F8 - .pool -_080F6194: - cmp r0, 0x2 - beq _080F61E8 - b _080F61F8 -_080F619A: - ldr r5, =gUnknown_0203A034 - ldr r0, [r5] - ldr r0, [r0] - ldrb r0, [r0, 0xA] - cmp r0, 0 - bne _080F61F8 - ldrh r1, [r4, 0xC] - adds r0, r1, 0x1 - strh r0, [r4, 0xC] - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl sub_80F7A80 - ldr r0, [r5] - ldr r0, [r0] - ldrb r0, [r0, 0x14] - cmp r0, 0 - bne _080F61CC - movs r0, 0x2 - strh r0, [r4, 0x8] - b _080F61F8 - .pool -_080F61CC: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080F61F8 -_080F61D4: - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r0, [r0, 0x14] - cmp r0, 0 - bne _080F61F8 - strh r0, [r4, 0x8] - b _080F61F8 - .pool -_080F61E8: - movs r0, 0x88 - lsls r0, 3 - bl sub_80F6EF4 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, =sub_80F6204 - str r0, [r4] -_080F61F8: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F616C - - thumb_func_start sub_80F6204 -sub_80F6204: @ 80F6204 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x64 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =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 _080F6226 - b _080F63F4 -_080F6226: - lsls r0, 2 - ldr r1, =_080F6238 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F6238: - .4byte _080F6250 - .4byte _080F6274 - .4byte _080F6292 - .4byte _080F62CC - .4byte _080F6334 - .4byte _080F63E4 -_080F6250: - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080F625E - b _080F63F4 -_080F625E: - 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 _080F63F4 - .pool -_080F6274: - 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 _080F628C - b _080F63F4 -_080F628C: - movs r0, 0 - strh r0, [r1, 0xA] - b _080F63BC -_080F6292: - movs r4, 0 - lsls r6, r5, 2 - ldr r7, =gTasks -_080F6298: - ldr r0, =sub_80F73DC - 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, =gContestFinalStandings - adds r0, r4, r0 - ldrb r0, [r0] - strh r0, [r1, 0x8] - strh r4, [r1, 0xA] - adds r4, 0x1 - cmp r4, 0x3 - ble _080F6298 - b _080F63B4 - .pool -_080F62CC: - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r0, [r0, 0x5] - cmp r0, 0x4 - beq _080F62DA - b _080F63F4 -_080F62DA: - 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 _080F62F2 - b _080F63F4 -_080F62F2: - movs r0, 0 - strh r0, [r4, 0xA] - ldr r0, =sub_80F74BC - movs r1, 0xA - bl CreateTask - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r4, 0 - ldr r1, =gContestFinalStandings - ldrb r0, [r1] - cmp r0, 0 - beq _080F631C -_080F630E: - adds r4, 0x1 - cmp r4, 0x3 - bgt _080F631C - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F630E -_080F631C: - lsls r0, r4, 24 - lsrs r0, 24 - movs r1, 0xE - bl sub_80F77E0 - b _080F63F4 - .pool -_080F6334: - 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 _080F63F4 - movs r0, 0 - strh r0, [r2, 0xA] - movs r4, 0 - ldr r1, =gContestFinalStandings - ldrb r0, [r1] - ldr r7, =gStringVar1 - ldr r2, =gContestMons + 13 - mov r8, r2 - cmp r0, 0 - beq _080F636E -_080F6360: - adds r4, 0x1 - cmp r4, 0x3 - bgt _080F636E - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F6360 -_080F636E: - lsls r4, 6 - mov r0, r8 - adds r1, r4, r0 - adds r0, r7, 0 - bl StringCopy - adds r0, r7, 0 - bl sub_81DB5AC - ldr r0, =gStringVar2 - mov r1, r8 - subs r1, 0xB - adds r4, r1 - adds r1, r4, 0 - bl StringCopy - ldr r1, =gText_Var1sVar2Won - mov r0, sp - bl StringExpandPlaceholders - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r1, [r0] - mov r0, sp - bl sub_80F6B78 - lsls r0, 16 - asrs r0, 16 - ldr r2, =0x0000ffff - movs r3, 0x88 - lsls r3, 3 - movs r1, 0x90 - bl sub_80F6E9C -_080F63B4: - ldr r0, =gTasks - adds r1, r6, r5 - lsls r1, 3 - adds r1, r0 -_080F63BC: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080F63F4 - .pool -_080F63E4: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x8] - ldr r1, =sub_80F6404 - str r1, [r0] -_080F63F4: - add sp, 0x64 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6204 - - thumb_func_start sub_80F6404 -sub_80F6404: @ 80F6404 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, =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 _080F6428 - b _080F669C -_080F6428: - lsls r0, 2 - ldr r1, =_080F643C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080F643C: - .4byte _080F6454 - .4byte _080F658C - .4byte _080F65DC - .4byte _080F65F0 - .4byte _080F6638 - .4byte _080F667C -_080F6454: - ldr r1, =gBattle_WIN0H - movs r0, 0xF0 - strh r0, [r1] - ldr r1, =gBattle_WIN0V - ldr r3, =0x00005050 - adds r0, r3, 0 - strh r0, [r1] - movs r2, 0 - ldr r1, =gContestFinalStandings - ldrb r0, [r1] - lsls r4, r7, 2 - mov r10, r4 - ldr r3, =gContestMons - ldr r4, =gContestPlayerMonIndex - mov r9, r4 - ldr r4, =gMonFrontPicTable - mov r12, r4 - ldr r4, =gMonSpritesGfxPtr - mov r8, r4 - cmp r0, 0 - beq _080F648C -_080F647E: - adds r2, 0x1 - cmp r2, 0x3 - bgt _080F648C - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F647E -_080F648C: - lsls r1, r2, 6 - adds r0, r1, r3 - ldrh r6, [r0] - adds r0, r3, 0 - adds r0, 0x38 - adds r0, r1, r0 - ldr r4, [r0] - adds r0, r3, 0 - adds r0, 0x3C - adds r1, r0 - ldr r5, [r1] - mov r0, r9 - ldrb r0, [r0] - cmp r2, r0 - bne _080F64E0 - lsls r0, r6, 3 - add r0, r12 - mov r2, r8 - ldr r1, [r2] - ldr r1, [r1, 0x8] - adds r2, r6, 0 - adds r3, r4, 0 - bl HandleLoadSpecialPokePic_2 - b _080F64F2 - .pool -_080F64E0: - lsls r0, r6, 3 - add r0, r12 - mov r3, r8 - ldr r1, [r3] - ldr r1, [r1, 0x8] - adds r2, r6, 0 - adds r3, r4, 0 - bl HandleLoadSpecialPokePic_DontHandleDeoxys -_080F64F2: - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl GetMonSpritePalStructFromOtIdPersonality - adds r4, r0, 0 - bl LoadCompressedSpritePalette - adds r0, r6, 0 - movs r1, 0x1 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, =gMultiuseSpriteTemplate - 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, =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, =sub_80F75A8 - str r1, [r2] - ldr r1, =gUnknown_0203A034 - ldr r1, [r1] - ldr r1, [r1] - strb r0, [r1, 0x8] - ldr r0, =gUnknown_0858D878 - bl LoadCompressedSpriteSheet - ldr r0, =gUnknown_0858D880 - bl LoadCompressedSpritePalette - ldr r0, =sub_80F7670 - movs r1, 0xA - bl CreateTask - ldr r0, =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 _080F669C - .pool -_080F658C: - 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 - beq _080F65A4 - b _080F669C -_080F65A4: - 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 _080F65BA - movs r0, 0x20 - strh r0, [r4, 0xC] -_080F65BA: - ldrb r2, [r4, 0xC] - ldr r3, =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 _080F669C - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080F669C - .pool -_080F65DC: - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r0, [r0, 0x6] - cmp r0, 0x1 - bne _080F669C - b _080F6664 - .pool -_080F65F0: - 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 _080F669C - movs r0, 0 - strh r0, [r3, 0xA] - ldr r2, =gSprites - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r1, [r0, 0x8] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, =sub_80F7620 - str r1, [r0] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _080F669C - .pool -_080F6638: - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r0, [r0, 0x6] - cmp r0, 0x2 - bne _080F669C - ldr r3, =gBattle_WIN0V - ldrh r0, [r3] - lsrs r2, r0, 8 - adds r0, r2, 0x2 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x50 - bls _080F6656 - movs r2, 0x50 -_080F6656: - lsls r1, r2, 8 - movs r0, 0xA0 - subs r0, r2 - orrs r1, r0 - strh r1, [r3] - cmp r2, 0x50 - bne _080F669C -_080F6664: - 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 _080F669C - .pool -_080F667C: - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r2, [r0] - ldrb r0, [r2, 0x6] - cmp r0, 0x2 - bne _080F669C - 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, =sub_80F66B4 - str r1, [r0] -_080F669C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6404 - - thumb_func_start sub_80F66B4 -sub_80F66B4: @ 80F66B4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080F6702 - ldr r0, =gIsLinkContest - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - lsls r6, r7, 2 - cmp r0, 0 - bne _080F66F2 - ldr r5, =gContestMons - movs r4, 0x3 -_080F66DA: - ldrh r0, [r5] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl GetSetPokedexFlag - adds r5, 0x40 - subs r4, 0x1 - cmp r4, 0 - bge _080F66DA -_080F66F2: - ldr r1, =gTasks - adds r0, r6, r7 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - ldr r1, =sub_80F671C - str r1, [r0] -_080F6702: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F66B4 - - thumb_func_start sub_80F671C -sub_80F671C: @ 80F671C - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F6760 - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r4, r1, r0 - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080F676E - ldr r0, =gText_CommunicationStandby - bl sub_80F707C - bl sub_800AC34 - ldr r0, =sub_80F677C - str r0, [r4] - b _080F676E - .pool -_080F6760: - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, =task_repel - str r0, [r1] -_080F676E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F671C - - thumb_func_start sub_80F677C -sub_80F677C: @ 80F677C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080F67AC - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F679A - bl sub_800E084 -_080F679A: - bl sub_80F7144 - ldr r0, =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, =task_repel - str r0, [r1] -_080F67AC: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F677C - - thumb_func_start task_repel -task_repel: @ 80F67C4 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080F67E6 - ldr r1, =gContestFinalStandings - ldr r0, =gContestPlayerMonIndex - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - bl BravoTrainerPokemonProfile_BeforeInterview2 -_080F67E6: - movs r0, 0 - str r0, [sp] - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginHardwarePaletteFade - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_80F6820 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end task_repel - - thumb_func_start sub_80F6820 -sub_80F6820: @ 80F6820 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r2, 0 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080F68A8 - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080F6868 - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r0, [r0, 0x3] - bl DestroyTask - ldr r0, =0x0000ffff - b _080F686E - .pool -_080F6868: - cmp r0, 0x1 - bne _080F6884 - ldr r0, =0xffff0000 -_080F686E: - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080F68A8 - .pool -_080F6884: - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - adds r0, r5, 0 - bl DestroyTask - bl FreeAllWindowBuffers - ldr r0, =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - bl sub_80F7E64 -_080F68A8: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6820 - - thumb_func_start sub_80F68B4 -sub_80F68B4: @ 80F68B4 - push {r4,r5,lr} - ldr r2, =gBattle_BG3_X - ldrh r3, [r2] - adds r0, r3, 0x2 - strh r0, [r2] - ldr r4, =gBattle_BG3_Y - ldrh r5, [r4] - adds r1, r5, 0x1 - strh r1, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _080F68D4 - adds r0, r3, 0 - subs r0, 0xFD - strh r0, [r2] -_080F68D4: - lsls r0, r1, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _080F68E2 - adds r0, r5, 0 - subs r0, 0xFE - strh r0, [r4] -_080F68E2: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F68B4 - - thumb_func_start sub_80F68F0 -sub_80F68F0: @ 80F68F0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =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, 0x2 - bne _080F6972 - movs r0, 0 - strh r0, [r2, 0x8] - movs r3, 0xC - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080F6924 - ldrh r0, [r2, 0xA] - adds r0, 0x1 - b _080F6928 - .pool -_080F6924: - ldrh r0, [r2, 0xA] - subs r0, 0x1 -_080F6928: - strh r0, [r2, 0xA] - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x10 - bne _080F693E - movs r0, 0x1 - b _080F6942 -_080F693E: - cmp r0, 0 - bne _080F6944 -_080F6942: - strh r0, [r1, 0xC] -_080F6944: - ldr r0, =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - ldrb r2, [r4, 0xA] - ldr r3, =0x00002ede - movs r0, 0x6B - movs r1, 0x1 - bl BlendPalette - ldrb r2, [r4, 0xA] - ldr r3, =0x00007fff - movs r0, 0x68 - movs r1, 0x1 - bl BlendPalette - ldrb r2, [r4, 0xA] - ldr r3, =0x000077be - movs r0, 0x6E - movs r1, 0x1 - bl BlendPalette -_080F6972: - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r3, 0xA - ldrsh r4, [r0, r3] - cmp r4, 0 - bne _080F69A4 - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - strb r4, [r0, 0xA] - b _080F69AE - .pool -_080F69A4: - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0xA] -_080F69AE: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F68F0 - - thumb_func_start sub_80F69B8 -sub_80F69B8: @ 80F69B8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - mov r8, r4 - lsls r2, 24 - lsrs r5, r2, 24 - lsls r3, 24 - lsrs r6, r3, 24 - ldr r0, =gContestPlayerMonIndex - movs r2, 0 - ldrb r0, [r0] - cmp r4, r0 - bne _080F69DE - movs r2, 0x1 -_080F69DE: - adds r0, r7, 0 - ldr r1, [sp, 0x28] - bl GetMonIconPtr - adds r3, r0, 0 - lsls r0, r5, 9 - adds r0, 0x80 - adds r3, r0 - cmp r6, 0 - beq _080F6A40 - lsls r1, r4, 9 - ldr r0, =0x06004000 - adds r1, r0 - movs r2, 0xC0 - lsls r2, 1 - adds r0, r3, 0 - movs r3, 0x1 - bl RequestDma3Copy - adds r0, r4, 0 - adds r0, 0xA - lsls r0, 28 - lsls r1, r4, 20 - movs r2, 0x80 - lsls r2, 18 - adds r1, r2 - orrs r1, r0 - lsrs r1, 16 - lsls r3, r4, 1 - adds r3, r4 - adds r3, 0x4 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x4 - str r0, [sp] - movs r0, 0x3 - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0x1 - str r0, [sp, 0xC] - movs r2, 0x3 - bl WriteSequenceToBgTilemapBuffer - b _080F6A54 - .pool -_080F6A40: - mov r0, r8 - lsls r1, r0, 9 - ldr r2, =0x06004000 - adds r1, r2 - movs r2, 0xC0 - lsls r2, 1 - adds r0, r3, 0 - movs r3, 0x1 - bl RequestDma3Copy -_080F6A54: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F69B8 - - thumb_func_start sub_80F6A64 -sub_80F6A64: @ 80F6A64 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - movs r5, 0 - ldr r4, =gContestMons -_080F6A74: - ldrh r0, [r4] - lsls r1, r5, 24 - lsrs r1, 24 - ldr r2, [r4, 0x38] - str r2, [sp] - adds r2, r7, 0 - adds r3, r6, 0 - bl sub_80F69B8 - adds r4, 0x40 - adds r5, 0x1 - cmp r5, 0x3 - ble _080F6A74 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6A64 - - thumb_func_start sub_80F6A9C -sub_80F6A9C: @ 80F6A9C - push {r4-r6,lr} - movs r4, 0 - ldr r6, =gMonIconPaletteIndices - movs r5, 0xA0 - lsls r5, 16 -_080F6AA6: - ldr r1, =gContestMons - lsls r0, r4, 6 - adds r0, r1 - ldrh r0, [r0] - movs r1, 0 - bl GetIconSpecies - lsls r0, 16 - lsrs r0, 16 - adds r0, r6 - ldrb r0, [r0] - lsls r0, 5 - ldr r1, =gMonIconPalettes - adds r0, r1 - lsrs r1, r5, 16 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x80 - lsls r0, 13 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0x3 - ble _080F6AA6 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6A9C - - thumb_func_start sub_80F6AE8 -sub_80F6AE8: @ 80F6AE8 - push {r4,lr} - ldr r0, =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080F6B58 - bl sub_800E0E8 - movs r0, 0x8 - movs r1, 0x8 - bl CreateWirelessStatusIndicatorSprite - ldr r4, =gSprites - ldr r0, =gWirelessStatusIndicatorSpriteId - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x43 - movs r1, 0x1 - strb r1, [r0] - ldr r0, =gUnknown_0858D8E0 - bl LoadSpriteSheet - adds r1, r0, 0 - lsls r1, 16 - movs r0, 0x1 - negs r0, r0 - lsrs r1, 11 - ldr r2, =0x06010000 - adds r1, r2 - movs r2, 0x80 - movs r3, 0x1 - bl RequestDma3Fill - ldr r0, =gSpriteTemplate_858D8C8 - movs r1, 0x8 - movs r2, 0x8 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r2, [r1, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1, 0x1] -_080F6B58: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6AE8 - - thumb_func_start sub_80F6B78 -sub_80F6B78: @ 80F6B78 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x44 - adds r5, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - add r4, sp, 0x20 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x8 - bl memset - movs r0, 0x1E - strb r0, [r4, 0x3] - movs r0, 0x2 - strb r0, [r4, 0x4] - adds r0, r4, 0 - bl AddWindow - lsls r6, r0, 24 - lsrs r4, r6, 24 - adds r0, r4, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0 - bl GetStringWidth - adds r2, r0, 0 - adds r2, 0x9 - cmp r2, 0 - bge _080F6BC4 - adds r2, 0x7 -_080F6BC4: - asrs r2, 3 - mov r10, r2 - cmp r2, 0x1E - ble _080F6BD0 - movs r1, 0x1E - mov r10, r1 -_080F6BD0: - mov r1, r10 - lsls r2, r1, 3 - subs r2, r0 - lsrs r0, r2, 31 - adds r2, r0 - asrs r2, 1 - lsls r2, 24 - lsrs r2, 24 - ldr r0, =gUnknown_0858D8E8 - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - str r5, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0x1 - movs r3, 0x1 - bl AddTextPrinterParameterized3 - adds r0, r4, 0 - movs r1, 0x7 - bl GetWindowAttribute - mov r9, r0 - ldr r2, =gUnknown_0858D6D0 - mov r8, r2 - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - ldr r3, =gSprites - adds r1, r3 - ldrh r0, [r1, 0x4] - lsls r0, 22 - lsrs r0, 17 - ldr r2, =0x06010000 - adds r0, r2 - str r0, [sp, 0xC] - str r6, [sp, 0x38] - mov r7, sp - adds r7, 0x1C - str r7, [sp, 0x2C] - mov r0, r10 - adds r0, 0x2 - str r0, [sp, 0x30] - movs r5, 0 - add r7, sp, 0x10 - mov r12, r7 - adds r6, r1, 0 - adds r6, 0x2E - movs r4, 0x2 -_080F6C34: - adds r0, r6, r5 - movs r7, 0 - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x4] - lsls r0, 22 - lsrs r0, 17 - adds r0, r2 - mov r1, r12 - adds r1, 0x4 - mov r12, r1 - subs r1, 0x4 - stm r1!, {r0} - adds r5, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080F6C34 - mov r7, r8 - adds r7, 0x80 - mov r2, r8 - adds r2, 0x40 - str r2, [sp, 0x28] - mov r0, r8 - adds r0, 0x20 - str r0, [sp, 0x3C] - mov r1, r8 - adds r1, 0xA0 - str r1, [sp, 0x40] - adds r2, 0x20 - str r2, [sp, 0x34] - add r5, sp, 0xC - movs r6, 0 - movs r4, 0x3 -_080F6C7C: - str r6, [sp, 0x1C] - ldm r5!, {r1} - ldr r0, [sp, 0x2C] - ldr r2, =0x05000100 - bl CpuSet - subs r4, 0x1 - cmp r4, 0 - bge _080F6C7C - ldr r5, [sp, 0xC] - ldr r6, =0x04000008 - mov r0, r8 - adds r1, r5, 0 - adds r2, r6, 0 - bl CpuSet - movs r0, 0x80 - lsls r0, 1 - adds r1, r5, r0 - adds r0, r7, 0 - adds r2, r6, 0 - bl CpuSet - movs r2, 0x80 - lsls r2, 2 - adds r1, r5, r2 - adds r0, r7, 0 - adds r2, r6, 0 - bl CpuSet - movs r7, 0xC0 - lsls r7, 2 - adds r1, r5, r7 - ldr r0, [sp, 0x28] - adds r2, r6, 0 - bl CpuSet - movs r4, 0 - cmp r4, r10 - bge _080F6D32 - adds r7, r6, 0 -_080F6CCE: - adds r6, r4, 0x1 - adds r0, r6, 0 - cmp r6, 0 - bge _080F6CDA - adds r0, r4, 0 - adds r0, 0x8 -_080F6CDA: - asrs r0, 3 - lsls r1, r0, 2 - add r1, sp - adds r1, 0xC - lsls r0, 3 - subs r0, r6, r0 - lsls r0, 5 - ldr r1, [r1] - adds r5, r1, r0 - mov r0, r8 - adds r0, 0xC0 - adds r1, r5, 0 - adds r2, r7, 0 - bl CpuSet - movs r0, 0x80 - lsls r0, 1 - adds r1, r5, r0 - mov r0, r9 - adds r2, r7, 0 - bl CpuSet - movs r0, 0xF0 - lsls r0, 2 - add r0, r9 - movs r2, 0x80 - lsls r2, 2 - adds r1, r5, r2 - adds r2, r7, 0 - bl CpuSet - movs r0, 0xC0 - lsls r0, 2 - adds r1, r5, r0 - mov r0, r8 - adds r0, 0xE0 - adds r2, r7, 0 - bl CpuSet - movs r1, 0x20 - add r9, r1 - adds r4, r6, 0 - cmp r4, r10 - blt _080F6CCE -_080F6D32: - adds r2, r4, 0x1 - adds r0, r2, 0 - cmp r2, 0 - bge _080F6D3E - adds r0, r4, 0 - adds r0, 0x8 -_080F6D3E: - asrs r0, 3 - lsls r1, r0, 2 - add r1, sp - adds r1, 0xC - lsls r0, 3 - subs r0, r2, r0 - lsls r0, 5 - ldr r1, [r1] - adds r5, r1, r0 - ldr r4, =0x04000008 - ldr r0, [sp, 0x3C] - adds r1, r5, 0 - adds r2, r4, 0 - bl CpuSet - movs r2, 0x80 - lsls r2, 1 - adds r1, r5, r2 - ldr r0, [sp, 0x40] - adds r2, r4, 0 - bl CpuSet - movs r7, 0x80 - lsls r7, 2 - adds r1, r5, r7 - ldr r0, [sp, 0x40] - adds r2, r4, 0 - bl CpuSet - movs r0, 0xC0 - lsls r0, 2 - adds r1, r5, r0 - ldr r0, [sp, 0x34] - adds r2, r4, 0 - bl CpuSet - ldr r1, [sp, 0x38] - lsrs r0, r1, 24 - bl RemoveWindow - ldr r2, [sp, 0x30] - lsls r1, r2, 3 - movs r0, 0xF0 - subs r0, r1 - asrs r0, 1 - add sp, 0x44 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80F6B78 - - thumb_func_start sub_80F6DC0 -sub_80F6DC0: @ 80F6DC0 - push {r4-r6,lr} - sub sp, 0x20 - mov r1, sp - ldr r0, =gSpriteTemplate_858D7F8 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - add r5, sp, 0x18 - ldr r6, =gUnknown_0858D810 - movs r4, 0x7 -_080F6DD6: - adds r0, r6, 0 - bl LoadSpriteSheet - adds r6, 0x8 - subs r4, 0x1 - cmp r4, 0 - bge _080F6DD6 - ldr r0, =gUnknown_0858D850 - bl LoadSpritePalette - movs r4, 0 - mov r6, sp -_080F6DEE: - mov r0, sp - movs r1, 0x88 - lsls r1, 1 - movs r2, 0x90 - movs r3, 0xA - bl CreateSprite - adds r1, r5, r4 - strb r0, [r1] - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - adds r4, 0x1 - cmp r4, 0x7 - ble _080F6DEE - ldr r2, =gSprites - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r5, 0x1] - movs r3, 0 - strh r1, [r0, 0x2E] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r5, 0x2] - strh r1, [r0, 0x30] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r5, 0x3] - strh r1, [r0, 0x32] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r5, 0x5] - strh r1, [r0, 0x2E] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r5, 0x6] - strh r1, [r0, 0x30] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r5, 0x7] - strh r1, [r0, 0x32] - ldr r1, =gUnknown_0203A034 - ldr r0, [r1] - ldr r2, [r0] - ldrb r0, [r5] - strb r0, [r2] - ldr r0, [r1] - ldr r0, [r0] - strb r3, [r0, 0x4] - ldr r0, [r1] - ldr r1, [r0] - ldrb r0, [r5, 0x4] - strb r0, [r1, 0x1] - bl sub_80F7144 - add sp, 0x20 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6DC0 - - thumb_func_start sub_80F6E9C -sub_80F6E9C: @ 80F6E9C - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r4, =gUnknown_0203A034 - ldr r4, [r4] - mov r8, r4 - ldr r4, [r4] - ldrb r5, [r4] - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - ldr r5, =gSprites - adds r4, r5 - movs r6, 0 - movs r5, 0x88 - lsls r5, 1 - strh r5, [r4, 0x20] - strh r1, [r4, 0x22] - strh r6, [r4, 0x24] - strh r6, [r4, 0x26] - lsls r0, 16 - asrs r0, 16 - adds r0, 0x20 - strh r0, [r4, 0x36] - strh r2, [r4, 0x38] - strh r3, [r4, 0x3A] - strh r6, [r4, 0x3C] - ldr r0, =sub_80F6F68 - str r0, [r4, 0x1C] - mov r0, r8 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x4] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6E9C - - thumb_func_start sub_80F6EF4 -sub_80F6EF4: @ 80F6EF4 - push {r4,r5,lr} - ldr r1, =gUnknown_0203A034 - ldr r4, [r1] - ldr r1, [r4] - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - ldr r2, =gSprites - adds r1, r2 - ldrh r2, [r1, 0x24] - ldrh r3, [r1, 0x20] - adds r2, r3 - movs r3, 0 - strh r2, [r1, 0x20] - ldrh r2, [r1, 0x26] - ldrh r5, [r1, 0x22] - adds r2, r5 - strh r2, [r1, 0x22] - strh r3, [r1, 0x26] - strh r3, [r1, 0x24] - strh r0, [r1, 0x3A] - strh r3, [r1, 0x3C] - ldr r0, =sub_80F7014 - str r0, [r1, 0x1C] - ldr r1, [r4] - movs r0, 0x3 - strb r0, [r1, 0x4] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6EF4 - - thumb_func_start sub_80F6F40 -sub_80F6F40: @ 80F6F40 - movs r3, 0 - movs r2, 0 - movs r1, 0x88 - lsls r1, 1 - strh r1, [r0, 0x20] - movs r1, 0x90 - strh r1, [r0, 0x22] - strh r2, [r0, 0x26] - strh r2, [r0, 0x24] - ldr r1, =SpriteCallbackDummy - str r1, [r0, 0x1C] - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - strb r3, [r0, 0x4] - bx lr - .pool - thumb_func_end sub_80F6F40 - - thumb_func_start sub_80F6F68 -sub_80F6F68: @ 80F6F68 - push {r4-r7,lr} - adds r3, r0, 0 - ldrh r2, [r3, 0x3A] - ldrh r0, [r3, 0x3C] - adds r2, r0 - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r3, 0x20] - subs r0, r1 - strh r0, [r3, 0x20] - movs r1, 0xFF - ands r2, r1 - strh r2, [r3, 0x3C] - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r3, 0x36] - movs r4, 0x36 - ldrsh r1, [r3, r4] - cmp r0, r1 - bge _080F6F92 - strh r2, [r3, 0x20] -_080F6F92: - movs r4, 0 - ldr r6, =gSprites - movs r5, 0x40 - adds r2, r3, 0 - adds r2, 0x2E -_080F6F9C: - movs r7, 0 - ldrsh r0, [r2, r7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrh r0, [r3, 0x24] - ldrh r7, [r3, 0x20] - adds r0, r7 - adds r0, r5 - strh r0, [r1, 0x20] - adds r5, 0x40 - adds r2, 0x2 - adds r4, 0x1 - cmp r4, 0x2 - ble _080F6F9C - movs r0, 0x20 - ldrsh r1, [r3, r0] - movs r2, 0x36 - ldrsh r0, [r3, r2] - cmp r1, r0 - bne _080F6FCC - ldr r0, =sub_80F6FDC - str r0, [r3, 0x1C] -_080F6FCC: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6F68 - - thumb_func_start sub_80F6FDC -sub_80F6FDC: @ 80F6FDC - push {lr} - adds r2, r0, 0 - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1, 0x4] - ldrh r3, [r2, 0x38] - ldr r1, =0xffff0000 - lsrs r0, r1, 16 - cmp r3, r0 - beq _080F7008 - subs r0, r3, 0x1 - strh r0, [r2, 0x38] - lsls r0, 16 - asrs r0, 16 - asrs r1, 16 - cmp r0, r1 - bne _080F7008 - ldrh r0, [r2, 0x3A] - bl sub_80F6EF4 -_080F7008: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F6FDC - - thumb_func_start sub_80F7014 -sub_80F7014: @ 80F7014 - push {r4-r7,lr} - adds r3, r0, 0 - ldrh r2, [r3, 0x3A] - ldrh r0, [r3, 0x3C] - adds r2, r0 - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r3, 0x20] - subs r0, r1 - strh r0, [r3, 0x20] - movs r0, 0xFF - ands r2, r0 - strh r2, [r3, 0x3C] - movs r4, 0 - ldr r6, =gSprites - movs r5, 0x40 - adds r2, r3, 0 - adds r2, 0x2E -_080F7038: - movs r1, 0 - ldrsh r0, [r2, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrh r0, [r3, 0x24] - ldrh r7, [r3, 0x20] - adds r0, r7 - adds r0, r5 - strh r0, [r1, 0x20] - adds r5, 0x40 - adds r2, 0x2 - adds r4, 0x1 - cmp r4, 0x2 - ble _080F7038 - movs r1, 0x20 - ldrsh r0, [r3, r1] - movs r2, 0x24 - ldrsh r1, [r3, r2] - adds r0, r1 - movs r1, 0xE0 - negs r1, r1 - cmp r0, r1 - bge _080F7070 - adds r0, r3, 0 - bl sub_80F6F40 -_080F7070: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F7014 - - thumb_func_start sub_80F707C -sub_80F707C: @ 80F707C - push {r4-r7,lr} - ldr r4, =gUnknown_0203A034 - ldr r1, [r4] - ldr r1, [r1] - ldrb r1, [r1, 0x1] - bl sub_80F6B78 - lsls r0, 16 - lsrs r0, 16 - ldr r1, [r4] - ldr r1, [r1] - ldrb r2, [r1, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - ldr r3, =gSprites - adds r4, r1, r3 - adds r0, 0x20 - strh r0, [r4, 0x20] - movs r0, 0x50 - strh r0, [r4, 0x22] - adds r5, r4, 0 - adds r5, 0x3E - ldrb r1, [r5] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r1 - strb r0, [r5] - movs r5, 0 - adds r6, r3, 0 - mov r12, r2 - movs r3, 0x40 -_080F70BE: - lsls r0, r5, 1 - adds r2, r4, 0 - adds r2, 0x2E - adds r2, r0 - movs r1, 0 - ldrsh r0, [r2, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrh r0, [r4, 0x24] - ldrh r7, [r4, 0x20] - adds r0, r7 - adds r0, r3 - strh r0, [r1, 0x20] - movs r0, 0 - ldrsh r1, [r2, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r4, 0x22] - strh r1, [r0, 0x22] - movs r1, 0 - ldrsh r0, [r2, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r1, 0x3E - ldrb r2, [r1] - mov r0, r12 - ands r0, r2 - strb r0, [r1] - adds r3, 0x40 - adds r5, 0x1 - cmp r5, 0x2 - ble _080F70BE - ldr r1, =gBattle_WIN0H - movs r0, 0xF0 - strh r0, [r1] - ldr r2, =gBattle_WIN0V - ldrh r1, [r4, 0x22] - adds r0, r1, 0 - subs r0, 0x10 - lsls r0, 8 - adds r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldr r1, =0x00003f3e - movs r0, 0x48 - bl SetGpuReg - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F707C - - thumb_func_start sub_80F7144 -sub_80F7144: @ 80F7144 - push {r4-r7,lr} - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r0, [r0] - ldrb r0, [r0, 0x1] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r3, =gSprites - adds r2, r3 - movs r0, 0x3E - adds r0, r2 - mov r12, r0 - ldrb r0, [r0] - movs r1, 0x4 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldr r7, =gBattle_WIN0H - ldr r6, =gBattle_WIN0V - adds r5, r3, 0 - movs r4, 0x4 - adds r2, 0x2E - movs r3, 0x2 -_080F7174: - movs r1, 0 - ldrsh r0, [r2, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - adds r1, 0x3E - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080F7174 - movs r0, 0 - strh r0, [r7] - strh r0, [r6] - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - ldrh r1, [r6] - movs r0, 0x44 - bl SetGpuReg - ldr r1, =0x00003f3f - movs r0, 0x48 - bl SetGpuReg - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F7144 - - thumb_func_start sub_80F71C8 -sub_80F71C8: @ 80F71C8 - push {r4-r6,lr} - sub sp, 0xC - movs r5, 0x5 - movs r4, 0x1 - ldr r0, =gIsLinkContest - ldrb r1, [r0] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080F71F8 - ldr r1, =gUnknown_08DC6498 - str r5, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r2, 0x5 - movs r3, 0x1 - bl CopyToBgTilemapBufferRect - movs r5, 0xA - b _080F7240 - .pool -_080F71F8: - ldr r0, =gSpecialVar_ContestRank - ldrh r2, [r0] - cmp r2, 0 - bne _080F720C - ldr r1, =gUnknown_08DC63F8 - b _080F722E - .pool -_080F720C: - cmp r2, 0x1 - bne _080F7218 - ldr r1, =gUnknown_08DC6420 - b _080F722E - .pool -_080F7218: - cmp r2, 0x2 - bne _080F722C - ldr r1, =gUnknown_08DC6448 - movs r0, 0xA - str r0, [sp] - str r2, [sp, 0x4] - movs r0, 0x2 - b _080F7236 - .pool -_080F722C: - ldr r1, =gUnknown_08DC6470 -_080F722E: - movs r0, 0xA - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] -_080F7236: - movs r2, 0x5 - movs r3, 0x1 - bl CopyToBgTilemapBufferRect - movs r5, 0xF -_080F7240: - ldr r0, =gSpecialVar_ContestCategory - ldrh r0, [r0] - cmp r0, 0 - bne _080F725C - movs r6, 0 - ldr r1, =gUnknown_08DC64AC - b _080F7298 - .pool -_080F725C: - cmp r0, 0x1 - bne _080F726C - movs r6, 0x1 - ldr r1, =gUnknown_08DC64C0 - b _080F7298 - .pool -_080F726C: - cmp r0, 0x2 - bne _080F7290 - movs r6, 0x2 - ldr r1, =gUnknown_08DC64D4 - lsls r2, r5, 24 - lsrs r2, 24 - lsls r4, 24 - lsrs r3, r4, 24 - movs r0, 0x5 - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0x2 - bl CopyToBgTilemapBufferRect - b _080F72CC - .pool -_080F7290: - cmp r0, 0x3 - bne _080F72B4 - movs r6, 0x3 - ldr r1, =gUnknown_08DC64E8 -_080F7298: - lsls r2, r5, 24 - lsrs r2, 24 - lsls r4, 24 - lsrs r3, r4, 24 - movs r0, 0x5 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - bl CopyToBgTilemapBufferRect - b _080F72CC - .pool -_080F72B4: - movs r6, 0x4 - ldr r1, =gUnknown_08DC64FC - lsls r2, r5, 24 - lsrs r2, 24 - lsls r4, 24 - lsrs r3, r4, 24 - movs r0, 0x5 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - bl CopyToBgTilemapBufferRect -_080F72CC: - adds r5, 0x5 - ldr r1, =gUnknown_08DC6510 - lsls r2, r5, 24 - lsrs r2, 24 - lsrs r3, r4, 24 - movs r0, 0x6 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - bl CopyToBgTilemapBufferRect - ldr r0, =gUnknown_0203A034 - ldr r0, [r0] - ldr r1, [r0, 0x14] - movs r0, 0x20 - str r0, [sp] - movs r0, 0x4 - str r0, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBufferRect_ChangePalette - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80F71C8 - - thumb_func_start sub_80F7310 -sub_80F7310: @ 80F7310 - push {r4,r5,lr} - lsls r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r1, =gContestMonConditions - lsrs r0, 23 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - lsls r4, r0, 16 - adds r0, r4, 0 - movs r1, 0x3F - bl __udivsi3 - adds r1, r0, 0 - ldr r0, =0x0000ffff - ands r0, r1 - cmp r0, 0 - beq _080F733C - movs r0, 0x80 - lsls r0, 9 - adds r1, r0 -_080F733C: - lsrs r1, 16 - cmp r1, 0 - bne _080F7348 - cmp r4, 0 - beq _080F7348 - movs r1, 0x1 -_080F7348: - cmp r5, 0 - beq _080F7352 - cmp r1, 0xA - bls _080F7352 - movs r1, 0xA -_080F7352: - lsls r0, r1, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80F7310 - thumb_func_start sub_80F7364 sub_80F7364: @ 80F7364 push {r4-r7,lr} diff --git a/include/contest.h b/include/contest.h index 9d287b9a5..73ebb79fa 100644 --- a/include/contest.h +++ b/include/contest.h @@ -442,6 +442,8 @@ void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame); void sub_80DB09C(u8 contestCategory); void sub_80DCE58(u8); void sub_80DFA08(struct ContestPokemon *mon, int language); +void sub_80DBED4(void); +u8 sub_80DEFA8(u8, u8); // contest link void sub_81D9DE4(u8 taskId); @@ -454,4 +456,5 @@ bool8 sub_80FC55C(void); bool8 sub_80FC530(u8); u8 sub_80F86E0(u8 *); + #endif //GUARD_CONTEST_H diff --git a/include/contest_painting.h b/include/contest_painting.h index c633c50cc..ca03a72b5 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -13,4 +13,7 @@ enum void sub_812FDA8(int); void CB2_ContestPainting(void); +extern u8 gUnknown_02039F5C; +extern u8 gUnknown_02039F5D; + #endif diff --git a/include/graphics.h b/include/graphics.h index eecbd50a7..29719d1a0 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4834,5 +4834,16 @@ extern const u32 gUnknown_08C19EEC[]; extern const u32 gUnknown_08C1A000[]; extern const u32 gUnknown_08C1A12C[]; extern const u32 gUnknown_08C1A2B4[]; +extern const u16 gUnknown_08DC6498[]; +extern const u16 gUnknown_08DC63F8[]; +extern const u16 gUnknown_08DC6420[]; +extern const u16 gUnknown_08DC6448[]; +extern const u16 gUnknown_08DC6470[]; +extern const u16 gUnknown_08DC64AC[]; +extern const u16 gUnknown_08DC64C0[]; +extern const u16 gUnknown_08DC64D4[]; +extern const u16 gUnknown_08DC64E8[]; +extern const u16 gUnknown_08DC64FC[]; +extern const u16 gUnknown_08DC6510[]; #endif //GUARD_GRAPHICS_H diff --git a/include/link_rfu.h b/include/link_rfu.h index 715b4cdd9..08cab616c 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -210,6 +210,7 @@ struct UnkRfuStruct_8010A14 extern struct UnkRfuStruct_1 gUnknown_03004140; extern struct UnkRfuStruct_2 gUnknown_03005000; +extern u8 gWirelessStatusIndicatorSpriteId; // Exported ROM declarations u32 sub_800BEC0(void); diff --git a/include/strings.h b/include/strings.h index 9870b0eea..d16dd21f8 100644 --- a/include/strings.h +++ b/include/strings.h @@ -2209,5 +2209,10 @@ extern const u8 MatchCall_BattlePyramidText14[]; // Contest Link extern const u8 gText_ColorDarkGrey[]; +extern const u8 gText_CommunicationStandby[]; +extern const u8 gText_AnnouncingResults[]; +extern const u8 gText_PreliminaryResults[]; +extern const u8 gText_Round2Results[]; +extern const u8 gText_Var1sVar2Won[]; #endif //GUARD_STRINGS_H diff --git a/include/tv.h b/include/tv.h index 5528bada7..ea0226815 100644 --- a/include/tv.h +++ b/include/tv.h @@ -48,10 +48,13 @@ void PutPokemonTodayCaughtOnAir(void); void TV_PutSecretBaseVisitOnTheAir(void); void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent); void BravoTrainerPokemonProfile_BeforeInterview1(u16 move); +void InterviewBefore(void); +void InterviewAfter(void); void UpdateTVScreensOnMap(int, int); void TV_PrintIntToStringVar(u8 varIdx, int value); void SaveRecordedItemPurchasesForTVShow(void); bool8 sub_80EE818(void); void sub_80EE8C8(u16 winStreak, u8 facilityAndMode); +void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace); #endif //GUARD_TV_H diff --git a/src/contest_link_80F57C4.c b/src/contest_link_80F57C4.c index 95171ba68..721a4f870 100755 --- a/src/contest_link_80F57C4.c +++ b/src/contest_link_80F57C4.c @@ -2,34 +2,132 @@ #include "battle.h" #include "bg.h" #include "contest.h" +#include "contest_link_80F57C4.h" +#include "contest_painting.h" #include "decompress.h" +#include "dma3.h" #include "event_data.h" +#include "field_specials.h" #include "gpu_regs.h" #include "graphics.h" +#include "international_string_util.h" #include "link.h" +#include "link_rfu.h" +#include "load_save.h" +#include "main.h" +#include "overworld.h" #include "palette.h" +#include "pokedex.h" +#include "pokemon.h" +#include "pokemon_icon.h" #include "random.h" +#include "save.h" +#include "scanline_effect.h" +#include "sound.h" #include "string_util.h" #include "strings.h" #include "task.h" #include "text.h" +#include "tv.h" +#include "util.h" #include "window.h" +#include "constants/game_stat.h" +#include "constants/rgb.h" +#include "constants/songs.h" +#include "constants/vars.h" + +struct ContestLinkUnk0 +{ + u8 unk0; + u8 unk1; + u8 taskId; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 filler7[0x1]; + u8 spriteId; + u8 unk9; + u8 unkA; + u8 fillerB[0x9]; + u8 unk14; + u8 filler15[0x3]; +}; + +struct ContestLinkUnk4 +{ + u8 filler0[0x50]; +}; struct ContestLink80F57C4 { - u8 filler0[0xC]; + struct ContestLinkUnk0 *unk0; + struct ContestLinkUnk4 *unk4; + u8 filler8[0x4]; u8 *unkC[4]; }; +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; + extern struct ContestLink80F57C4 *gUnknown_0203A034; extern const struct BgTemplate gUnknown_0858D888[4]; extern const struct WindowTemplate gUnknown_0858D898[]; +extern const struct CompressedSpriteSheet gUnknown_0858D878[]; +extern const struct CompressedSpritePalette gUnknown_0858D880[]; +extern const struct SpriteSheet gUnknown_0858D8E0; +extern const struct SpriteTemplate gSpriteTemplate_858D8C8; +extern const u8 gUnknown_0858D8E8[]; +extern const u8 gUnknown_0858D6D0[]; +extern const struct SpriteTemplate gSpriteTemplate_858D7F8; +extern const struct SpriteSheet gUnknown_0858D810[]; +extern const struct SpritePalette gUnknown_0858D850; -void sub_80F71C8(void); +static void sub_80F6A9C(void); +static void sub_80F71C8(void); u8 sub_80F7310(u8, u8); s8 sub_80F7364(u8, u8); void sub_80F7ED0(int, u8 *, int); +void sub_80F7DF4(void); +static void sub_80F6A64(u8, u8); +static void sub_80F6DC0(void); +static void sub_80F6AE8(void); +static void sub_80F5CE4(u8); +static void sub_80F5C00(void); +static void sub_80F68B4(u8); +void sub_80F7880(void); +static void sub_80F5C24(void); +static void sub_80F707C(const u8 *); +static void sub_80F5ED8(u8); +static void sub_80F5F14(u8); +static void sub_80F5F30(u8); +static void sub_80F5F74(u8); +static void sub_80F7144(void); +static void sub_80F68F0(u8); +s16 sub_80F6B78(const u8 *, u8); +static void sub_80F6E9C(s16, u16, u16, u16); +static void sub_80F6058(u8); +void sub_80F7A80(u8, u8); +static void sub_80F6EF4(u16); +static void sub_80F60F0(u8); +static void sub_80F616C(u8); +static void sub_80F6204(u8); +void sub_80F73DC(u8); +void sub_80F74BC(u8); +void sub_80F77E0(u8, u8); +static void sub_80F6404(u8); +void sub_80F75A8(struct Sprite *); +void sub_80F7670(u8); +void sub_80F7620(struct Sprite *); +static void sub_80F66B4(u8); +static void sub_80F671C(u8); +static void sub_80F677C(u8); +static void sub_80F67C4(u8); +static void sub_80F6820(u8); +void sub_80F7E64(void); +static void sub_80F6F68(struct Sprite *); +static void sub_80F7014(struct Sprite *); +static void sub_80F6FDC(struct Sprite *); void sub_80F57C4(void) { @@ -155,3 +253,1191 @@ void sub_80F5AE0(void) CopyBgTilemapBufferToVram(1); } + +void sub_80F5B00(void) +{ + gPaletteFade.bufferTransferDisabled = 1; + SetVBlankCallback(NULL); + sub_80F7DF4(); + sub_80F57C4(); + ScanlineEffect_Clear(); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + FreeAllSpritePalettes(); + sub_80F591C(); + sub_80F6A9C(); + sub_80F6A64(0, 1); + sub_80F5AE0(); + memset(gUnknown_0203A034->unk0, 0, sizeof(*gUnknown_0203A034->unk0)); + memset(gUnknown_0203A034->unk4, 0, sizeof(*gUnknown_0203A034->unk4)); + sub_80F6DC0(); + sub_80F6AE8(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gPaletteFade.bufferTransferDisabled = 0; + gUnknown_0203A034->unk0->taskId = CreateTask(sub_80F5CE4, 5); + SetMainCallback2(sub_80F5C00); + gBattle_WIN1H = 0x00F0; + gBattle_WIN1V = 0x80A0; + CreateTask(sub_80F68B4, 20); + sub_80F7880(); + if (gIsLinkContest & 0x2) + gPaletteFade.bufferTransferDisabled = 1; + else + PlayBGM(MUS_CON_K); + + SetVBlankCallback(sub_80F5C24); +} + +static void sub_80F5C00(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + UpdatePaletteFade(); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); +} + +static void sub_80F5C24(void) +{ + SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); + SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); + SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); + SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X); + SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y); + SetGpuReg(REG_OFFSET_BG3HOFS, gBattle_BG3_X); + SetGpuReg(REG_OFFSET_BG3VOFS, gBattle_BG3_Y); + SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); + SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN1H); + SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + ScanlineEffect_InitHBlankDmaTransfer(); +} + +static void sub_80F5CE4(u8 taskId) +{ + u16 var; + + if (gIsLinkContest & 1) + { + switch (gTasks[taskId].data[0]) + { + case 0: + sub_80DBED4(); + if (gContestFinalStandings[gContestPlayerMonIndex] == 0) + { + IncrementGameStat(GAME_STAT_WON_LINK_CONTEST); + gSpecialVar_0x8005 = 8; + InterviewBefore(); + if (gSpecialVar_Result != 1) + InterviewAfter(); + } + + sub_813BADC(2); + sub_80DEDA8(gSpecialVar_ContestRank); + sub_80DEDA8(0xFE); + gUnknown_02039F5C = 1; + gUnknown_02039F5D = sub_80DEFA8(0xFE, 0); + var = VarGet(VAR_0x4086); + VarSet(VAR_0x4086, 0); + SetContinueGameWarpStatusToDynamicWarp(); + TrySavingData(SAVE_LINK); + ClearContinueGameWarpStatus2(); + VarSet(VAR_0x4086, var); + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[0]++; + if (!(gIsLinkContest & 0x2)) + gTasks[taskId].data[0] = 100; + break; + case 2: + if (IsLinkTaskFinished()) + { + sub_800ADF8(); + gTasks[taskId].data[0]++; + } + return; + case 3: + if (IsLinkTaskFinished() == TRUE) + { + PlayBGM(MUS_CON_K); + gPaletteFade.bufferTransferDisabled = 0; + gTasks[taskId].data[0]++; + break; + } + return; + } + } + + if (!gPaletteFade.active) + { + gTasks[taskId].data[0] = 0; + if (gIsLinkContest & 0x1) + { + sub_80F707C(gText_CommunicationStandby); + gTasks[taskId].func = sub_80F5ED8; + } + else + { + IncrementGameStat(GAME_STAT_ENTERED_CONTEST); + if (gContestFinalStandings[gContestPlayerMonIndex] == 0) + IncrementGameStat(GAME_STAT_WON_CONTEST); + + sub_80DEDA8(gSpecialVar_ContestRank); + sub_80DEDA8(0xFE); + gUnknown_02039F5C = 1; + gUnknown_02039F5D = sub_80DEFA8(0xFE, 0); + sub_813BADC(2); + gTasks[taskId].func = sub_80F5F74; + } + } +} + +static void sub_80F5ED8(u8 taskId) +{ + if (gReceivedRemoteLinkPlayers) + { + CreateTask(sub_80F5F14, 0); + gTasks[taskId].func = TaskDummy; + } +} + +static void sub_80F5F14(u8 taskId) +{ + SetTaskFuncWithFollowupFunc(taskId, sub_80FC998, sub_80F5F30); +} + +static void sub_80F5F30(u8 taskId) +{ + if (IsLinkTaskFinished()) + { + DestroyTask(taskId); + gTasks[gUnknown_0203A034->unk0->taskId].func = sub_80F5F74; + sub_80F7144(); + } +} + +static void sub_80F5F74(u8 taskId) +{ + s16 var0; + + if (gTasks[taskId].data[0] == 0) + { + CreateTask(sub_80F68F0, 20); + var0 = sub_80F6B78(gText_AnnouncingResults, gUnknown_0203A034->unk0->unk0); + sub_80F6E9C(var0, 144, 120, 1088); + gTasks[taskId].data[0]++; + } + else if (gTasks[taskId].data[0] == 1) + { + if (gUnknown_0203A034->unk0->unk4 == 0) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + } + else if (gTasks[taskId].data[0] == 2) + { + if (++gTasks[taskId].data[1] == 21) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + } + else if (gTasks[taskId].data[0] == 3) + { + var0 = sub_80F6B78(gText_PreliminaryResults, gUnknown_0203A034->unk0->unk0); + sub_80F6E9C(var0, 144, -1, 1088); + gTasks[taskId].data[0]++; + } + else if (gTasks[taskId].data[0] == 4) + { + if (gUnknown_0203A034->unk0->unk4 == 2) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80F6058; + } + } +} + +static void sub_80F6058(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (!gUnknown_0203A034->unk0->unkA) + { + sub_80F7A80(0, gTasks[taskId].data[2]++); + if (!gUnknown_0203A034->unk0->unk14) + gTasks[taskId].data[0] = 2; + else + gTasks[taskId].data[0]++; + } + break; + case 1: + if (!gUnknown_0203A034->unk0->unk14) + gTasks[taskId].data[0] = 0; + break; + case 2: + sub_80F6EF4(1088); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80F60F0; + break; + } +} + +static void sub_80F60F0(u8 taskId) +{ + s16 var0; + + if (gUnknown_0203A034->unk0->unk4 == 0) + { + if (++gTasks[taskId].data[1] == 21) + { + gTasks[taskId].data[1] = 0; + var0 = sub_80F6B78(gText_Round2Results, gUnknown_0203A034->unk0->unk0); + sub_80F6E9C(var0, 144, -1, 1088); + } + } + else if (gUnknown_0203A034->unk0->unk4 == 2) + { + gTasks[taskId].func = sub_80F616C; + } +} + +static void sub_80F616C(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (!gUnknown_0203A034->unk0->unkA) + { + sub_80F7A80(1, gTasks[taskId].data[2]++); + if (!gUnknown_0203A034->unk0->unk14) + gTasks[taskId].data[0] = 2; + else + gTasks[taskId].data[0]++; + } + break; + case 1: + if (!gUnknown_0203A034->unk0->unk14) + gTasks[taskId].data[0] = 0; + break; + case 2: + sub_80F6EF4(1088); + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80F6204; + break; + } +} + +static void sub_80F6204(u8 taskId) +{ + int i; + u8 newTaskId; + u8 buffer[100]; + s16 var0; + + switch (gTasks[taskId].data[0]) + { + case 0: + if (!gUnknown_0203A034->unk0->unk4) + 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++) + { + newTaskId = CreateTask(sub_80F73DC, 10); + gTasks[newTaskId].data[0] = gContestFinalStandings[i]; + gTasks[newTaskId].data[1] = i; + } + gTasks[taskId].data[0]++; + break; + case 3: + if (gUnknown_0203A034->unk0->unk5 == 4) + { + if (++gTasks[taskId].data[1] == 31) + { + gTasks[taskId].data[1] = 0; + CreateTask(sub_80F74BC, 10); + gTasks[taskId].data[0]++; + for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++) + ; + + sub_80F77E0(i, 14); + } + } + break; + case 4: + if (++gTasks[taskId].data[1] == 21) + { + gTasks[taskId].data[1] = 0; + for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++) + ; + + StringCopy(gStringVar1, gContestMons[i].trainerName); + sub_81DB5AC(gStringVar1); + StringCopy(gStringVar2, gContestMons[i].nickname); + StringExpandPlaceholders(buffer, gText_Var1sVar2Won); + var0 = sub_80F6B78(buffer, gUnknown_0203A034->unk0->unk0); + sub_80F6E9C(var0, 144, -1, 1088); + gTasks[taskId].data[0]++; + } + break; + case 5: + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80F6404; + break; + } +} + +static void sub_80F6404(u8 taskId) +{ + int i; + u8 spriteId; + u16 species; + u32 otId; + u32 personality; + const struct CompressedSpritePalette *pokePal; + + switch (gTasks[taskId].data[0]) + { + case 0: + gBattle_WIN0H = 0x00F0; + gBattle_WIN0V = 0x5050; + for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++) + ; + + species = gContestMons[i].species; + personality = gContestMons[i].personality; + otId = gContestMons[i].otId; + if (i == gContestPlayerMonIndex) + { + HandleLoadSpecialPokePic_2( + &gMonFrontPicTable[species], + gMonSpritesGfxPtr->sprites[1], + species, + personality); + } + else + { + HandleLoadSpecialPokePic_DontHandleDeoxys( + &gMonFrontPicTable[species], + gMonSpritesGfxPtr->sprites[1], + species, + personality); + } + + pokePal = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); + LoadCompressedSpritePalette(pokePal); + SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); + gMultiuseSpriteTemplate.paletteTag = pokePal->tag; + spriteId = CreateSprite(&gMultiuseSpriteTemplate, 272, 80, 10); + gSprites[spriteId].data[1] = species; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].callback = sub_80F75A8; + gUnknown_0203A034->unk0->spriteId = spriteId; + LoadCompressedSpriteSheet(gUnknown_0858D878); + LoadCompressedSpritePalette(gUnknown_0858D880); + CreateTask(sub_80F7670, 10); + gTasks[taskId].data[0]++; + break; + case 1: + if (++gTasks[taskId].data[3] == 1) + { + u8 counter; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[2] += 2; + if (gTasks[taskId].data[2] > 32) + gTasks[taskId].data[2] = 32; + + counter = gTasks[taskId].data[2]; + gBattle_WIN0V = ((80 - counter) << 8) | (80 + counter); + if (counter == 32) + gTasks[taskId].data[0]++; + } + break; + case 2: + if (gUnknown_0203A034->unk0->unk6 == 1) + gTasks[taskId].data[0]++; + break; + case 3: + if (++gTasks[taskId].data[1] == 121) + { + gTasks[taskId].data[1] = 0; + gSprites[gUnknown_0203A034->unk0->spriteId].callback = sub_80F7620; + gTasks[taskId].data[0]++; + } + break; + case 4: + if (gUnknown_0203A034->unk0->unk6 == 2) + { + u8 top = (gBattle_WIN0V >> 8); + top += 2; + if (top > 80) + top = 80; + + gBattle_WIN0V = (top << 8) | (160 - top);; + if (top == 80) + gTasks[taskId].data[0]++; + } + break; + case 5: + if (gUnknown_0203A034->unk0->unk6 == 2) + { + gUnknown_0203A034->unk0->unk9 = 1; + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80F66B4; + } + break; + } +} + +static void sub_80F66B4(u8 taskId) +{ + int i; + u16 nationalDexNum; + + if (gMain.newKeys & A_BUTTON) + { + if (!(gIsLinkContest & 0x1)) + { + for (i = 0; i < 4; i++) + { + nationalDexNum = SpeciesToNationalPokedexNum(gContestMons[i].species); + GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN); + } + } + + gTasks[taskId].data[10] = 0; + gTasks[taskId].func = sub_80F671C; + } +} + +static void sub_80F671C(u8 taskId) +{ + if (gIsLinkContest & 0x1) + { + if (!gTasks[taskId].data[10]) + { + sub_80F707C(gText_CommunicationStandby); + sub_800AC34(); + gTasks[taskId].func = sub_80F677C; + } + } + else + { + gTasks[taskId].func = sub_80F67C4; + } +} + +static void sub_80F677C(u8 taskId) +{ + if (!gReceivedRemoteLinkPlayers) + { + if (gIsLinkContest & 0x2) + sub_800E084(); + + sub_80F7144(); + gTasks[taskId].func = sub_80F67C4; + } +} + +static void sub_80F67C4(u8 taskId) +{ + if (!(gIsLinkContest & 0x1)) + BravoTrainerPokemonProfile_BeforeInterview2(gContestFinalStandings[gContestPlayerMonIndex]); + + BeginHardwarePaletteFade(0xFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80F6820; +} + +static void sub_80F6820(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gTasks[taskId].data[1] == 0) + { + DestroyTask(gUnknown_0203A034->unk0->unk3); + BlendPalettes(0x0000FFFF, 16, RGB_BLACK); + gTasks[taskId].data[1]++; + } + else if (gTasks[taskId].data[1] == 1) + { + BlendPalettes(0xFFFF0000, 16, RGB_BLACK); + gTasks[taskId].data[1]++; + } + else + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + DestroyTask(taskId); + FreeAllWindowBuffers(); + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + sub_80F7E64(); + } + } +} + +static void sub_80F68B4(u8 taskId) +{ + gBattle_BG3_X += 2; + gBattle_BG3_Y += 1; + if (gBattle_BG3_X > 255) + gBattle_BG3_X -= 255; + if (gBattle_BG3_Y > 255) + gBattle_BG3_Y -= 255; +} + +static void sub_80F68F0(u8 taskId) +{ + if (++gTasks[taskId].data[0] == 2) + { + gTasks[taskId].data[0] = 0; + if (gTasks[taskId].data[2] == 0) + gTasks[taskId].data[1]++; + else + gTasks[taskId].data[1]--; + + if (gTasks[taskId].data[1] == 16) + gTasks[taskId].data[2] = 1; + else if (gTasks[taskId].data[1] == 0) + gTasks[taskId].data[2] = 0; + + BlendPalette(0x6B, 1, gTasks[taskId].data[1], RGB(30, 22, 11)); + BlendPalette(0x68, 1, gTasks[taskId].data[1], RGB_WHITE); + BlendPalette(0x6E, 1, gTasks[taskId].data[1], RGB(30, 29, 29)); + } + + if (gTasks[taskId].data[1] == 0) + gUnknown_0203A034->unk0->unkA = 0; + else + gUnknown_0203A034->unk0->unkA = 1; +} + +void sub_80F69B8(u16 species, u8 monIndex, u8 arg2, u8 arg3, u32 personality) +{ + u8 frameNum; + const u8 *iconPtr; + u16 var0; + u16 var1; + + u8 *contestPlayerMonIndex = &gContestPlayerMonIndex; // fake match + frameNum = (monIndex == *contestPlayerMonIndex) ? 1 : 0; + + iconPtr = GetMonIconPtr(species, personality, frameNum); + iconPtr += arg2 * 0x200 + 0x80; + if (arg3) + { + RequestDma3Copy(iconPtr, (void *)BG_CHAR_ADDR(1) + monIndex * 0x200, 0x180, 1); + var0 = ((monIndex + 10) << 12); + var1 = (monIndex * 0x10 + 0x200); + WriteSequenceToBgTilemapBuffer(1, var1 | var0, 3, monIndex * 3 + 4, 4, 3, 17, 1); + } + else + { + RequestDma3Copy(iconPtr, (void *)BG_CHAR_ADDR(1) + monIndex * 0x200, 0x180, 1); + } +} + +static void sub_80F6A64(u8 arg0, u8 arg1) +{ + int i; + + for (i = 0; i < 4; i++) + sub_80F69B8(gContestMons[i].species, i, arg0, arg1, gContestMons[i].personality); +} + +static void sub_80F6A9C(void) +{ + int i; + register u16 species asm("r0"); + + for (i = 0; i < 4; i++) + { + species = GetIconSpecies(gContestMons[i].species, 0); + LoadPalette(gMonIconPalettes[gMonIconPaletteIndices[species]], i * 0x10 + 0xA0, 0x20); + } +} + +static void sub_80F6AE8(void) +{ + u16 sheet; + u8 spriteId; + + if (gIsLinkContest & 0x2) + { + sub_800E0E8(); + CreateWirelessStatusIndicatorSprite(8, 8); + gSprites[gWirelessStatusIndicatorSpriteId].subpriority = 1; + sheet = LoadSpriteSheet(&gUnknown_0858D8E0); + RequestDma3Fill(0xFFFFFFFF, (void *)BG_CHAR_ADDR(4) + sheet * 0x20, 0x80, 1); + spriteId = CreateSprite(&gSpriteTemplate_858D8C8, 8, 8, 0); + gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; + } +} + +// s16 sub_80F6B78(const u8 *text, u8 spriteId) +// { +// int i; +// int origWidth, strWidth; +// const u8 *r8; +// u8 sp10[0x10]; +// struct WindowTemplate windowTemplate; +// int spC; +// u8 *windowTileData; +// u8 windowId; + +// memset(windowTemplate, 0, sizeof(*windowTemplate)); +// windowTemplate.width = 30; +// windowTemplate.height = 2; +// windowId = AddWindow(&windowTemplate); +// FillWindowPixelBuffer(windowId, 0x11); +// origWidth = GetStringWidth(1, text, 0) + 9; +// strWidth = origWidth; +// if (strWidth < 0) +// strWidth += 7; + +// strWidth >>= 3; +// if (strWidth > 30) +// strWidth = 30; + +// AddTextPrinterParameterized3(windowId, 1, (strWidth * 8 - origWidth) / 2, 1, gUnknown_0858D8E8, -1, text); +// windowTileData = (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA); +// r8 = gUnknown_0858D6D0; +// // .... +// } + +NAKED +s16 sub_80F6B78(const u8 *text, u8 spriteId) +{ + asm_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, 0x44\n\ + adds r5, r0, 0\n\ + lsls r1, 24\n\ + lsrs r7, r1, 24\n\ + add r4, sp, 0x20\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + movs r2, 0x8\n\ + bl memset\n\ + movs r0, 0x1E\n\ + strb r0, [r4, 0x3]\n\ + movs r0, 0x2\n\ + strb r0, [r4, 0x4]\n\ + adds r0, r4, 0\n\ + bl AddWindow\n\ + lsls r6, r0, 24\n\ + lsrs r4, r6, 24\n\ + adds r0, r4, 0\n\ + movs r1, 0x11\n\ + bl FillWindowPixelBuffer\n\ + movs r0, 0x1\n\ + adds r1, r5, 0\n\ + movs r2, 0\n\ + bl GetStringWidth\n\ + adds r2, r0, 0\n\ + adds r2, 0x9\n\ + cmp r2, 0\n\ + bge _080F6BC4\n\ + adds r2, 0x7\n\ +_080F6BC4:\n\ + asrs r2, 3\n\ + mov r10, r2\n\ + cmp r2, 0x1E\n\ + ble _080F6BD0\n\ + movs r1, 0x1E\n\ + mov r10, r1\n\ +_080F6BD0:\n\ + mov r1, r10\n\ + lsls r2, r1, 3\n\ + subs r2, r0\n\ + lsrs r0, r2, 31\n\ + adds r2, r0\n\ + asrs r2, 1\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + ldr r0, =gUnknown_0858D8E8\n\ + str r0, [sp]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + str r0, [sp, 0x4]\n\ + str r5, [sp, 0x8]\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + movs r3, 0x1\n\ + bl AddTextPrinterParameterized3\n\ + adds r0, r4, 0\n\ + movs r1, 0x7\n\ + bl GetWindowAttribute\n\ + mov r9, r0\n\ + ldr r2, =gUnknown_0858D6D0\n\ + mov r8, r2\n\ + lsls r1, r7, 4\n\ + adds r1, r7\n\ + lsls r1, 2\n\ + ldr r3, =gSprites\n\ + adds r1, r3\n\ + ldrh r0, [r1, 0x4]\n\ + lsls r0, 22\n\ + lsrs r0, 17\n\ + ldr r2, =0x06010000\n\ + adds r0, r2\n\ + str r0, [sp, 0xC]\n\ + str r6, [sp, 0x38]\n\ + mov r7, sp\n\ + adds r7, 0x1C\n\ + str r7, [sp, 0x2C]\n\ + mov r0, r10\n\ + adds r0, 0x2\n\ + str r0, [sp, 0x30]\n\ + movs r5, 0\n\ + add r7, sp, 0x10\n\ + mov r12, r7\n\ + adds r6, r1, 0\n\ + adds r6, 0x2E\n\ + movs r4, 0x2\n\ +_080F6C34:\n\ + adds r0, r6, r5\n\ + movs r7, 0\n\ + ldrsh r1, [r0, r7]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + ldrh r0, [r0, 0x4]\n\ + lsls r0, 22\n\ + lsrs r0, 17\n\ + adds r0, r2\n\ + mov r1, r12\n\ + adds r1, 0x4\n\ + mov r12, r1\n\ + subs r1, 0x4\n\ + stm r1!, {r0}\n\ + adds r5, 0x2\n\ + subs r4, 0x1\n\ + cmp r4, 0\n\ + bge _080F6C34\n\ + mov r7, r8\n\ + adds r7, 0x80\n\ + mov r2, r8\n\ + adds r2, 0x40\n\ + str r2, [sp, 0x28]\n\ + mov r0, r8\n\ + adds r0, 0x20\n\ + str r0, [sp, 0x3C]\n\ + mov r1, r8\n\ + adds r1, 0xA0\n\ + str r1, [sp, 0x40]\n\ + adds r2, 0x20\n\ + str r2, [sp, 0x34]\n\ + add r5, sp, 0xC\n\ + movs r6, 0\n\ + movs r4, 0x3\n\ +_080F6C7C:\n\ + str r6, [sp, 0x1C]\n\ + ldm r5!, {r1}\n\ + ldr r0, [sp, 0x2C]\n\ + ldr r2, =0x05000100\n\ + bl CpuSet\n\ + subs r4, 0x1\n\ + cmp r4, 0\n\ + bge _080F6C7C\n\ + ldr r5, [sp, 0xC]\n\ + ldr r6, =0x04000008\n\ + mov r0, r8\n\ + adds r1, r5, 0\n\ + adds r2, r6, 0\n\ + bl CpuSet\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + adds r1, r5, r0\n\ + adds r0, r7, 0\n\ + adds r2, r6, 0\n\ + bl CpuSet\n\ + movs r2, 0x80\n\ + lsls r2, 2\n\ + adds r1, r5, r2\n\ + adds r0, r7, 0\n\ + adds r2, r6, 0\n\ + bl CpuSet\n\ + movs r7, 0xC0\n\ + lsls r7, 2\n\ + adds r1, r5, r7\n\ + ldr r0, [sp, 0x28]\n\ + adds r2, r6, 0\n\ + bl CpuSet\n\ + movs r4, 0\n\ + cmp r4, r10\n\ + bge _080F6D32\n\ + adds r7, r6, 0\n\ +_080F6CCE:\n\ + adds r6, r4, 0x1\n\ + adds r0, r6, 0\n\ + cmp r6, 0\n\ + bge _080F6CDA\n\ + adds r0, r4, 0\n\ + adds r0, 0x8\n\ +_080F6CDA:\n\ + asrs r0, 3\n\ + lsls r1, r0, 2\n\ + add r1, sp\n\ + adds r1, 0xC\n\ + lsls r0, 3\n\ + subs r0, r6, r0\n\ + lsls r0, 5\n\ + ldr r1, [r1]\n\ + adds r5, r1, r0\n\ + mov r0, r8\n\ + adds r0, 0xC0\n\ + adds r1, r5, 0\n\ + adds r2, r7, 0\n\ + bl CpuSet\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + adds r1, r5, r0\n\ + mov r0, r9\n\ + adds r2, r7, 0\n\ + bl CpuSet\n\ + movs r0, 0xF0\n\ + lsls r0, 2\n\ + add r0, r9\n\ + movs r2, 0x80\n\ + lsls r2, 2\n\ + adds r1, r5, r2\n\ + adds r2, r7, 0\n\ + bl CpuSet\n\ + movs r0, 0xC0\n\ + lsls r0, 2\n\ + adds r1, r5, r0\n\ + mov r0, r8\n\ + adds r0, 0xE0\n\ + adds r2, r7, 0\n\ + bl CpuSet\n\ + movs r1, 0x20\n\ + add r9, r1\n\ + adds r4, r6, 0\n\ + cmp r4, r10\n\ + blt _080F6CCE\n\ +_080F6D32:\n\ + adds r2, r4, 0x1\n\ + adds r0, r2, 0\n\ + cmp r2, 0\n\ + bge _080F6D3E\n\ + adds r0, r4, 0\n\ + adds r0, 0x8\n\ +_080F6D3E:\n\ + asrs r0, 3\n\ + lsls r1, r0, 2\n\ + add r1, sp\n\ + adds r1, 0xC\n\ + lsls r0, 3\n\ + subs r0, r2, r0\n\ + lsls r0, 5\n\ + ldr r1, [r1]\n\ + adds r5, r1, r0\n\ + ldr r4, =0x04000008\n\ + ldr r0, [sp, 0x3C]\n\ + adds r1, r5, 0\n\ + adds r2, r4, 0\n\ + bl CpuSet\n\ + movs r2, 0x80\n\ + lsls r2, 1\n\ + adds r1, r5, r2\n\ + ldr r0, [sp, 0x40]\n\ + adds r2, r4, 0\n\ + bl CpuSet\n\ + movs r7, 0x80\n\ + lsls r7, 2\n\ + adds r1, r5, r7\n\ + ldr r0, [sp, 0x40]\n\ + adds r2, r4, 0\n\ + bl CpuSet\n\ + movs r0, 0xC0\n\ + lsls r0, 2\n\ + adds r1, r5, r0\n\ + ldr r0, [sp, 0x34]\n\ + adds r2, r4, 0\n\ + bl CpuSet\n\ + ldr r1, [sp, 0x38]\n\ + lsrs r0, r1, 24\n\ + bl RemoveWindow\n\ + ldr r2, [sp, 0x30]\n\ + lsls r1, r2, 3\n\ + movs r0, 0xF0\n\ + subs r0, r1\n\ + asrs r0, 1\n\ + add sp, 0x44\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .pool"); +} + +static void sub_80F6DC0(void) +{ + int i; + struct SpriteTemplate template; + u8 spriteIds[8]; + + template = gSpriteTemplate_858D7F8; + for (i = 0; i < 8; i++) + LoadSpriteSheet(&gUnknown_0858D810[i]); + + LoadSpritePalette(&gUnknown_0858D850); + for (i = 0; i < 8; i++) + { + spriteIds[i] = CreateSprite(&template, 272, 144, 10); + template.tileTag++; + } + + gSprites[spriteIds[0]].data[0] = spriteIds[1]; + gSprites[spriteIds[0]].data[1] = spriteIds[2]; + gSprites[spriteIds[0]].data[2] = spriteIds[3]; + + gSprites[spriteIds[4]].data[0] = spriteIds[5]; + gSprites[spriteIds[4]].data[1] = spriteIds[6]; + gSprites[spriteIds[4]].data[2] = spriteIds[7]; + + gUnknown_0203A034->unk0->unk0 = spriteIds[0]; + gUnknown_0203A034->unk0->unk4 = 0; + gUnknown_0203A034->unk0->unk1 = spriteIds[4]; + sub_80F7144(); +} + +static void sub_80F6E9C(s16 arg0, u16 y, u16 arg2, u16 arg3) +{ + struct Sprite *sprite = &gSprites[gUnknown_0203A034->unk0->unk0]; + sprite->pos1.x = 272; + sprite->pos1.y = y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[4] = arg0 + 32; + sprite->data[5] = arg2; + sprite->data[6] = arg3; + sprite->data[7] = 0; + sprite->callback = sub_80F6F68; + gUnknown_0203A034->unk0->unk4 = 1; +} + +static void sub_80F6EF4(u16 arg0) +{ + struct Sprite *sprite = &gSprites[gUnknown_0203A034->unk0->unk0]; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[6] = arg0; + sprite->data[7] = 0; + sprite->callback = sub_80F7014; + gUnknown_0203A034->unk0->unk4 = 3; +} + +static void sub_80F6F40(struct Sprite *sprite) +{ + sprite->pos1.x = 272; + sprite->pos1.y = 144; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->callback = SpriteCallbackDummy; + gUnknown_0203A034->unk0->unk4 = 0; +} + +static void sub_80F6F68(struct Sprite *sprite) +{ + int i; + s16 var0; + + var0 = (u16)sprite->data[7] + (u16)sprite->data[6]; + sprite->pos1.x -= var0 >> 8; + sprite->data[7] = (sprite->data[6] + sprite->data[7]) & 0xFF; + if (sprite->pos1.x < sprite->data[4]) + sprite->pos1.x = sprite->data[4]; + + for (i = 0; i < 3; i++) + { + struct Sprite *sprite2 = &gSprites[sprite->data[i]]; + sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64; + } + + if (sprite->pos1.x == sprite->data[4]) + sprite->callback = sub_80F6FDC; +} + +static void sub_80F6FDC(struct Sprite *sprite) +{ + gUnknown_0203A034->unk0->unk4 = 2; + if ((u16)sprite->data[5] != 0xFFFF) + { + if (--sprite->data[5] == -1) + sub_80F6EF4(sprite->data[6]); + } +} + +static void sub_80F7014(struct Sprite *sprite) +{ + int i; + s16 var0; + + var0 = (u16)sprite->data[7] + (u16)sprite->data[6]; + sprite->pos1.x -= var0 >> 8; + sprite->data[7] = (sprite->data[6] + sprite->data[7]) & 0xFF; + for (i = 0; i < 3; i++) + { + struct Sprite *sprite2 = &gSprites[sprite->data[i]]; + sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64; + } + + if (sprite->pos1.x + sprite->pos2.x < -224) + sub_80F6F40(sprite); +} + +static void sub_80F707C(const u8 *text) +{ + int i; + u16 x; + struct Sprite *sprite; + + x = sub_80F6B78(text, gUnknown_0203A034->unk0->unk1); + sprite = &gSprites[gUnknown_0203A034->unk0->unk1]; + sprite->pos1.x = x + 32; + sprite->pos1.y = 80; + sprite->invisible = 0; + for (i = 0; i < 3; i++) + { + gSprites[sprite->data[i]].pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64; + gSprites[sprite->data[i]].pos1.y = sprite->pos1.y; + gSprites[sprite->data[i]].invisible = 0; + } + + gBattle_WIN0H = 0x00F0; + gBattle_WIN0V = ((sprite->pos1.y - 16) << 8) | (sprite->pos1.y + 16); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR + | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR); +} + +static void sub_80F7144(void) +{ + int i; + struct Sprite *sprite; + + sprite = &gSprites[gUnknown_0203A034->unk0->unk1]; + sprite->invisible = 1; + for (i = 0; i < 3; i++) + gSprites[sprite->data[i]].invisible = 1; + + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); + SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR + | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); +} + +static void sub_80F71C8(void) +{ + u8 palette; + int x, y; + + x = 5; + y = 1; + if (gIsLinkContest & 0x1) + { + CopyToBgTilemapBufferRect(2, gUnknown_08DC6498, 5, 1, 5, 2); + x = 10; + } + else if (gSpecialVar_ContestRank == 0) + { + CopyToBgTilemapBufferRect(2, gUnknown_08DC63F8, 5, 1, 10, 2); + x = 15; + } + else if (gSpecialVar_ContestRank == 1) + { + CopyToBgTilemapBufferRect(2, gUnknown_08DC6420, 5, 1, 10, 2); + x = 15; + } + else if (gSpecialVar_ContestRank == 2) + { + CopyToBgTilemapBufferRect(2, gUnknown_08DC6448, 5, 1, 10, 2); + x = 15; + } + else + { + CopyToBgTilemapBufferRect(2, gUnknown_08DC6470, 5, 1, 10, 2); + x = 15; + } + + if (gSpecialVar_ContestCategory == 0) + { + palette = 0; + CopyToBgTilemapBufferRect(2, gUnknown_08DC64AC, x, y, 5, 2); + } + else if (gSpecialVar_ContestCategory == 1) + { + palette = 1; + CopyToBgTilemapBufferRect(2, gUnknown_08DC64C0, x, y, 5, 2); + } + else if (gSpecialVar_ContestCategory == 2) + { + palette = 2; + CopyToBgTilemapBufferRect(2, gUnknown_08DC64D4, x, y, 5, 2); + } + else if (gSpecialVar_ContestCategory == 3) + { + palette = 3; + CopyToBgTilemapBufferRect(2, gUnknown_08DC64E8, x, y, 5, 2); + } + else + { + palette = 4; + CopyToBgTilemapBufferRect(2, gUnknown_08DC64FC, x, y, 5, 2); + } + + x += 5; + CopyToBgTilemapBufferRect(2, gUnknown_08DC6510, x, y, 6, 2); + CopyToBgTilemapBufferRect_ChangePalette(2, gUnknown_0203A034->unkC[2], 0, 0, 32, 4, palette); +} + +// fakematching? +u8 sub_80F7310(u8 monIndex, u8 arg1) +{ + u32 var0; + u32 var1; + + var0 = gContestMonConditions[monIndex] << 16; + var1 = var0 / 0x3F; + if (var1 & 0xFFFF) + var1 += 0x10000; + + var1 >>= 16; + if (var1 == 0 && var0) + var1 = 1; + + if (arg1 && var1 > 10) + var1 = 10; + + return var1; +} diff --git a/src/contest_painting.c b/src/contest_painting.c index 9de3d733d..0ed169a77 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -20,9 +20,6 @@ #include "window.h" #include "constants/rgb.h" -extern u8 gUnknown_02039F5C; -extern u8 gUnknown_02039F5D; - extern u16 (*gUnknown_03006190)[][32]; extern struct ContestWinner *gUnknown_030061C0; extern u16 *gContestPaintingMonPalette; @@ -1516,7 +1516,7 @@ void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0) } } -void BravoTrainerPokemonProfile_BeforeInterview2(u8 a0) +void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace) { TVShow *show; @@ -1524,7 +1524,7 @@ void BravoTrainerPokemonProfile_BeforeInterview2(u8 a0) sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows); if (sCurTVShowSlot != -1) { - show->bravoTrainer.contestResult = a0; + show->bravoTrainer.contestResult = contestStandingPlace; show->bravoTrainer.contestCategory = gSpecialVar_ContestCategory; show->bravoTrainer.contestRank = gSpecialVar_ContestRank; show->bravoTrainer.species = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SPECIES, NULL); |