diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-06-25 18:15:58 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-25 18:15:58 -0500 |
commit | fa0e1ca4de35c9723a0972efeb6f7de4dca25594 (patch) | |
tree | 0cd68b160fa8d4a27cd65d6ffa80159b231f715c | |
parent | f839afb24aa2c7b70e9c28a5c069aacc46993099 (diff) | |
parent | 605f8ac1141daf66d3428923e004f82f5a5e1594 (diff) |
Merge pull request #552 from PikalaxALT/contest_link_80C2020
[DO NOT MERGE] Contest results tasks
27 files changed, 1092 insertions, 2323 deletions
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 891711bc5..d9e10324b 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -5,2119 +5,6 @@ .text - thumb_func_start sub_80C2020 -sub_80C2020: @ 80C2020 - push {r4,r5,lr} - movs r5, 0x80 - lsls r5, 19 - movs r0, 0x40 - strh r0, [r5] - ldr r4, _080C20F0 @ =gWindowTemplate_81E6FA0 - adds r0, r4, 0 - bl Text_LoadWindowTemplate - ldr r0, _080C20F4 @ =gMenuWindow - adds r1, r4, 0 - bl Text_InitWindowWithTemplate - ldr r1, _080C20F8 @ =REG_BG0CNT - movs r2, 0xF8 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080C20FC @ =0x00001803 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080C2100 @ =0x00001c03 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080C2104 @ =0x00003a03 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _080C2108 @ =REG_MOSAIC - movs r2, 0 - strh r2, [r0] - adds r1, 0x3A - ldr r3, _080C210C @ =0x00003f3f - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - subs r3, 0x11 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _080C2110 @ =REG_WIN0H - strh r2, [r0] - adds r0, 0x4 - strh r2, [r0] - subs r0, 0x2 - strh r2, [r0] - adds r0, 0x4 - strh r2, [r0] - adds r0, 0xA - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - subs r0, 0x44 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - ldrh r0, [r5] - movs r3, 0xFE - lsls r3, 7 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r5] - ldr r0, _080C2114 @ =gBattle_BG0_X - strh r2, [r0] - ldr r0, _080C2118 @ =gBattle_BG0_Y - strh r2, [r0] - ldr r0, _080C211C @ =gBattle_BG1_X - strh r2, [r0] - ldr r0, _080C2120 @ =gBattle_BG1_Y - strh r2, [r0] - ldr r0, _080C2124 @ =gBattle_BG2_X - strh r2, [r0] - ldr r0, _080C2128 @ =gBattle_BG2_Y - strh r2, [r0] - ldr r0, _080C212C @ =gBattle_BG3_X - strh r2, [r0] - ldr r0, _080C2130 @ =gBattle_BG3_Y - strh r2, [r0] - ldr r0, _080C2134 @ =gBattle_WIN0H - strh r2, [r0] - ldr r0, _080C2138 @ =gBattle_WIN0V - strh r2, [r0] - ldr r0, _080C213C @ =gBattle_WIN1H - strh r2, [r0] - ldr r0, _080C2140 @ =gBattle_WIN1V - strh r2, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C20F0: .4byte gWindowTemplate_81E6FA0 -_080C20F4: .4byte gMenuWindow -_080C20F8: .4byte REG_BG0CNT -_080C20FC: .4byte 0x00001803 -_080C2100: .4byte 0x00001c03 -_080C2104: .4byte 0x00003a03 -_080C2108: .4byte REG_MOSAIC -_080C210C: .4byte 0x00003f3f -_080C2110: .4byte REG_WIN0H -_080C2114: .4byte gBattle_BG0_X -_080C2118: .4byte gBattle_BG0_Y -_080C211C: .4byte gBattle_BG1_X -_080C2120: .4byte gBattle_BG1_Y -_080C2124: .4byte gBattle_BG2_X -_080C2128: .4byte gBattle_BG2_Y -_080C212C: .4byte gBattle_BG3_X -_080C2130: .4byte gBattle_BG3_Y -_080C2134: .4byte gBattle_WIN0H -_080C2138: .4byte gBattle_WIN0V -_080C213C: .4byte gBattle_WIN1H -_080C2140: .4byte gBattle_WIN1V - thumb_func_end sub_80C2020 - - thumb_func_start sub_80C2144 -sub_80C2144: @ 80C2144 - push {r4-r7,lr} - sub sp, 0x4 - movs r2, 0xC0 - lsls r2, 19 - movs r3, 0xC0 - lsls r3, 9 - ldr r0, _080C220C @ =gUnknown_08D1977C - mov r12, r0 - movs r5, 0 - ldr r1, _080C2210 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - ldr r6, _080C2214 @ =0x85000400 - movs r7, 0x85 - lsls r7, 24 -_080C2162: - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _080C2162 - str r5, [sp] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r1, 0xC0 - lsls r1, 19 - mov r0, r12 - bl LZDecompressVram - ldr r0, _080C2218 @ =gUnknown_08D1A490 - ldr r1, _080C221C @ =0x0600d000 - bl LZDecompressVram - ldr r0, _080C2220 @ =gUnknown_08D1A364 - ldr r1, _080C2224 @ =0x0600e000 - bl LZDecompressVram - ldr r0, _080C2228 @ =gUnknown_08D1A250 - ldr r1, _080C222C @ =0x0600f000 - bl LZDecompressVram - bl sub_80C37E4 - ldr r0, _080C2230 @ =gUnknown_08D1A618 - movs r2, 0x80 - lsls r2, 2 - movs r1, 0 - bl LoadCompressedPalette - ldr r0, _080C2234 @ =gWindowTemplate_81E6FA0 - bl LoadFontDefaultPalette - movs r6, 0 -_080C21C0: - lsls r5, r6, 24 - lsrs r5, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80C3990 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80C39E4 - movs r5, 0 - lsls r1, r6, 1 - adds r2, r6, 0x1 - mov r12, r2 - lsls r4, 24 - asrs r7, r4, 24 - adds r1, r6 - lsls r1, 6 - lsls r4, r0, 24 -_080C21EC: - ldr r6, _080C2238 @ =0x000060b2 - cmp r5, r7 - bge _080C21F4 - adds r6, 0x2 -_080C21F4: - asrs r2, r4, 24 - adds r0, r2, 0 - cmp r2, 0 - bge _080C21FE - negs r0, r2 -_080C21FE: - cmp r5, r0 - bge _080C2240 - ldr r3, _080C223C @ =0x000060a4 - cmp r2, 0 - bge _080C2242 - adds r3, 0x2 - b _080C2242 - .align 2, 0 -_080C220C: .4byte gUnknown_08D1977C -_080C2210: .4byte 0x040000d4 -_080C2214: .4byte 0x85000400 -_080C2218: .4byte gUnknown_08D1A490 -_080C221C: .4byte 0x0600d000 -_080C2220: .4byte gUnknown_08D1A364 -_080C2224: .4byte 0x0600e000 -_080C2228: .4byte gUnknown_08D1A250 -_080C222C: .4byte 0x0600f000 -_080C2230: .4byte gUnknown_08D1A618 -_080C2234: .4byte gWindowTemplate_81E6FA0 -_080C2238: .4byte 0x000060b2 -_080C223C: .4byte 0x000060a4 -_080C2240: - ldr r3, _080C2264 @ =0x000060a2 -_080C2242: - ldr r2, _080C2268 @ =0x0600c166 - adds r0, r1, r2 - strh r6, [r0] - adds r2, 0x40 - adds r0, r1, r2 - strh r3, [r0] - adds r1, 0x2 - adds r5, 0x1 - cmp r5, 0x9 - ble _080C21EC - mov r6, r12 - cmp r6, 0x3 - ble _080C21C0 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C2264: .4byte 0x000060a2 -_080C2268: .4byte 0x0600c166 - thumb_func_end sub_80C2144 - - thumb_func_start sub_80C226C -sub_80C226C: @ 80C226C - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080C2288 @ =gContestPlayerMonIndex - ldrb r0, [r0] - cmp r5, r0 - bne _080C2294 - ldr r0, _080C228C @ =gDisplayedStringBattle - ldr r1, _080C2290 @ =gUnknown_083D17DC - bl StringCopy - adds r2, r0, 0 - b _080C2296 - .align 2, 0 -_080C2288: .4byte gContestPlayerMonIndex -_080C228C: .4byte gDisplayedStringBattle -_080C2290: .4byte gUnknown_083D17DC -_080C2294: - ldr r2, _080C22E8 @ =gDisplayedStringBattle -_080C2296: - movs r4, 0xFC - strb r4, [r2] - movs r0, 0x6 - strb r0, [r2, 0x1] - movs r0, 0x4 - strb r0, [r2, 0x2] - adds r2, 0x3 - lsls r6, r5, 6 - ldr r7, _080C22EC @ =gContestMons + 0x2 - adds r1, r6, r7 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - strb r4, [r2] - movs r0, 0x13 - strb r0, [r2, 0x1] - movs r0, 0x32 - strb r0, [r2, 0x2] - adds r2, 0x3 - ldr r1, _080C22F0 @ =gUnknown_083D17E0 - adds r0, r2, 0 - bl StringCopy - adds r2, r0, 0 - ldr r0, _080C22F4 @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080C22FC - lsls r4, r5, 3 - subs r1, r4, r5 - lsls r1, 2 - ldr r0, _080C22F8 @ =gLinkPlayers + 0x8 - adds r1, r0 - adds r0, r2, 0 - bl StringCopy - b _080C230A - .align 2, 0 -_080C22E8: .4byte gDisplayedStringBattle -_080C22EC: .4byte gContestMons + 0x2 -_080C22F0: .4byte gUnknown_083D17E0 -_080C22F4: .4byte gIsLinkContest -_080C22F8: .4byte gLinkPlayers + 0x8 -_080C22FC: - adds r1, r7, 0 - adds r1, 0xB - adds r1, r6, r1 - adds r0, r2, 0 - bl StringCopy - lsls r4, r5, 3 -_080C230A: - ldr r0, _080C2334 @ =gMenuWindow - ldr r1, _080C2338 @ =gDisplayedStringBattle - adds r2, r4, r5 - lsls r2, 18 - ldr r3, _080C233C @ =0x03020000 - adds r2, r3 - lsrs r2, 16 - lsls r3, r5, 1 - adds r3, r5 - adds r3, 0x4 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp] - movs r3, 0x7 - bl Text_InitWindowAndPrintText - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C2334: .4byte gMenuWindow -_080C2338: .4byte gDisplayedStringBattle -_080C233C: .4byte 0x03020000 - thumb_func_end sub_80C226C - - thumb_func_start sub_80C2340 -sub_80C2340: @ 80C2340 - push {r4,lr} - movs r4, 0 -_080C2344: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80C226C - adds r4, 0x1 - cmp r4, 0x3 - ble _080C2344 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80C2340 - - thumb_func_start sub_80C2358 -sub_80C2358: @ 80C2358 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _080C240C @ =gPaletteFade - ldrb r0, [r5, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r5, 0x8] - movs r0, 0 - bl SetVBlankCallback - bl sub_80C2020 - bl ScanlineEffect_Clear - bl ResetPaletteFade - bl ResetSpriteData - bl ResetTasks - bl FreeAllSpritePalettes - bl sub_80C2144 - bl sub_80C310C - movs r0, 0 - movs r1, 0x1 - bl sub_80C30D4 - bl sub_80C2340 - ldr r4, _080C2410 @ =gSharedMem + 0x18000 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x18 - bl memset - adds r0, r4, 0 - adds r0, 0x18 - movs r1, 0 - movs r2, 0x50 - bl memset - bl sub_80C33DC - 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, _080C2414 @ =sub_80C24F4 - movs r1, 0x5 - bl CreateTask - strb r0, [r4, 0x2] - ldr r0, _080C2418 @ =sub_80C2430 - bl SetMainCallback2 - ldr r1, _080C241C @ =gBattle_WIN1H - movs r0, 0xF0 - strh r0, [r1] - ldr r1, _080C2420 @ =gBattle_WIN1V - ldr r2, _080C2424 @ =0x000080a0 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080C2428 @ =sub_80C2F28 - movs r1, 0x14 - bl CreateTask - bl sub_80C3F00 - movs r0, 0xDF - lsls r0, 1 - bl PlayBGM - ldr r0, _080C242C @ =sub_80C2448 - bl SetVBlankCallback - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C240C: .4byte gPaletteFade -_080C2410: .4byte gSharedMem + 0x18000 -_080C2414: .4byte sub_80C24F4 -_080C2418: .4byte sub_80C2430 -_080C241C: .4byte gBattle_WIN1H -_080C2420: .4byte gBattle_WIN1V -_080C2424: .4byte 0x000080a0 -_080C2428: .4byte sub_80C2F28 -_080C242C: .4byte sub_80C2448 - thumb_func_end sub_80C2358 - - thumb_func_start sub_80C2430 -sub_80C2430: @ 80C2430 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - bl RunTasks - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80C2430 - - thumb_func_start sub_80C2448 -sub_80C2448: @ 80C2448 - push {lr} - ldr r1, _080C24C0 @ =REG_BG0HOFS - ldr r0, _080C24C4 @ =gBattle_BG0_X - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080C24C8 @ =gBattle_BG0_Y - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080C24CC @ =gBattle_BG1_X - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080C24D0 @ =gBattle_BG1_Y - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080C24D4 @ =gBattle_BG2_X - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080C24D8 @ =gBattle_BG2_Y - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080C24DC @ =gBattle_BG3_X - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _080C24E0 @ =gBattle_BG3_Y - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x22 - ldr r0, _080C24E4 @ =gBattle_WIN0H - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x4 - ldr r0, _080C24E8 @ =gBattle_WIN0V - ldrh r0, [r0] - strh r0, [r1] - subs r1, 0x2 - ldr r0, _080C24EC @ =gBattle_WIN1H - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x4 - ldr r0, _080C24F0 @ =gBattle_WIN1V - ldrh r0, [r0] - strh r0, [r1] - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl ScanlineEffect_InitHBlankDmaTransfer - pop {r0} - bx r0 - .align 2, 0 -_080C24C0: .4byte REG_BG0HOFS -_080C24C4: .4byte gBattle_BG0_X -_080C24C8: .4byte gBattle_BG0_Y -_080C24CC: .4byte gBattle_BG1_X -_080C24D0: .4byte gBattle_BG1_Y -_080C24D4: .4byte gBattle_BG2_X -_080C24D8: .4byte gBattle_BG2_Y -_080C24DC: .4byte gBattle_BG3_X -_080C24E0: .4byte gBattle_BG3_Y -_080C24E4: .4byte gBattle_WIN0H -_080C24E8: .4byte gBattle_WIN0V -_080C24EC: .4byte gBattle_WIN1H -_080C24F0: .4byte gBattle_WIN1V - thumb_func_end sub_80C2448 - - thumb_func_start sub_80C24F4 -sub_80C24F4: @ 80C24F4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r2, r4, 0 - ldr r0, _080C252C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080C254E - ldr r0, _080C2530 @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080C2540 - ldr r0, _080C2534 @ =gOtherText_LinkStandby - bl sub_80C3698 - ldr r1, _080C2538 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080C253C @ =sub_80C255C - str r1, [r0] - b _080C254E - .align 2, 0 -_080C252C: .4byte gPaletteFade -_080C2530: .4byte gIsLinkContest -_080C2534: .4byte gOtherText_LinkStandby -_080C2538: .4byte gTasks -_080C253C: .4byte sub_80C255C -_080C2540: - ldr r0, _080C2554 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _080C2558 @ =sub_80C2600 - str r0, [r1] -_080C254E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C2554: .4byte gTasks -_080C2558: .4byte sub_80C2600 - thumb_func_end sub_80C24F4 - - thumb_func_start sub_80C255C -sub_80C255C: @ 80C255C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080C2594 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080C258C - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080C258C - ldr r0, _080C2598 @ =sub_80C25A4 - movs r1, 0 - bl CreateTask - ldr r1, _080C259C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080C25A0 @ =TaskDummy - str r1, [r0] -_080C258C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C2594: .4byte gReceivedRemoteLinkPlayers -_080C2598: .4byte sub_80C25A4 -_080C259C: .4byte gTasks -_080C25A0: .4byte TaskDummy - thumb_func_end sub_80C255C - - thumb_func_start sub_80C25A4 -sub_80C25A4: @ 80C25A4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080C25B8 @ =sub_80C89DC - ldr r2, _080C25BC @ =sub_80C25C0 - bl SetTaskFuncWithFollowupFunc - pop {r0} - bx r0 - .align 2, 0 -_080C25B8: .4byte sub_80C89DC -_080C25BC: .4byte sub_80C25C0 - thumb_func_end sub_80C25A4 - - thumb_func_start sub_80C25C0 -sub_80C25C0: @ 80C25C0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _080C25EC - adds r0, r4, 0 - bl DestroyTask - ldr r2, _080C25F4 @ =gTasks - ldr r0, _080C25F8 @ =gSharedMem + 0x18000 - ldrb r1, [r0, 0x2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _080C25FC @ =sub_80C2600 - str r1, [r0] - bl sub_80C3764 -_080C25EC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C25F4: .4byte gTasks -_080C25F8: .4byte gSharedMem + 0x18000 -_080C25FC: .4byte sub_80C2600 - thumb_func_end sub_80C25C0 - - thumb_func_start sub_80C2600 -sub_80C2600: @ 80C2600 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C2644 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - ldrh r1, [r5, 0x8] - movs r2, 0x8 - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _080C2654 - ldr r0, _080C2648 @ =sub_80C2F64 - movs r1, 0x14 - bl CreateTask - ldr r4, _080C264C @ =gContestText_AnnounceResults - ldr r0, _080C2650 @ =gSharedMem + 0x18000 - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_80C3158 - adds r0, r4, 0 - bl sub_80C34AC - lsls r0, 16 - asrs r0, 16 - movs r3, 0x88 - lsls r3, 3 - movs r1, 0x90 - movs r2, 0x78 - b _080C26A6 - .align 2, 0 -_080C2644: .4byte gTasks -_080C2648: .4byte sub_80C2F64 -_080C264C: .4byte gContestText_AnnounceResults -_080C2650: .4byte gSharedMem + 0x18000 -_080C2654: - cmp r0, 0x1 - bne _080C2668 - ldr r0, _080C2664 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x4] - cmp r0, 0 - bne _080C26D4 - b _080C267C - .align 2, 0 -_080C2664: .4byte gSharedMem + 0x18000 -_080C2668: - cmp r0, 0x2 - bne _080C2684 - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _080C26D4 - movs r0, 0 -_080C267C: - strh r0, [r5, 0xA] - adds r0, r1, 0x1 - strh r0, [r5, 0x8] - b _080C26D4 -_080C2684: - cmp r0, 0x3 - bne _080C26C0 - ldr r4, _080C26B4 @ =gContestText_PreliminaryResults - ldr r0, _080C26B8 @ =gSharedMem + 0x18000 - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_80C3158 - adds r0, r4, 0 - bl sub_80C34AC - lsls r0, 16 - asrs r0, 16 - ldr r2, _080C26BC @ =0x0000ffff - movs r3, 0x88 - lsls r3, 3 - movs r1, 0x90 -_080C26A6: - bl sub_80C34CC - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _080C26D4 - .align 2, 0 -_080C26B4: .4byte gContestText_PreliminaryResults -_080C26B8: .4byte gSharedMem + 0x18000 -_080C26BC: .4byte 0x0000ffff -_080C26C0: - cmp r0, 0x4 - bne _080C26D4 - ldr r0, _080C26DC @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x4] - cmp r0, 0x2 - bne _080C26D4 - movs r0, 0 - strh r0, [r5, 0x8] - ldr r0, _080C26E0 @ =sub_80C26E4 - str r0, [r5] -_080C26D4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C26DC: .4byte gSharedMem + 0x18000 -_080C26E0: .4byte sub_80C26E4 - thumb_func_end sub_80C2600 - - thumb_func_start sub_80C26E4 -sub_80C26E4: @ 80C26E4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C2708 @ =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 _080C2744 - cmp r0, 0x1 - bgt _080C270C - cmp r0, 0 - beq _080C2712 - b _080C2766 - .align 2, 0 -_080C2708: .4byte gTasks -_080C270C: - cmp r0, 0x2 - beq _080C2754 - b _080C2766 -_080C2712: - ldr r5, _080C2738 @ =gSharedMem + 0x18000 - ldrb r0, [r5, 0xA] - cmp r0, 0 - bne _080C2766 - ldrh r1, [r4, 0xC] - adds r0, r1, 0x1 - strh r0, [r4, 0xC] - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - bl sub_80C40D4 - ldrb r0, [r5, 0x14] - cmp r0, 0 - bne _080C273C - movs r0, 0x2 - strh r0, [r4, 0x8] - b _080C2766 - .align 2, 0 -_080C2738: .4byte gSharedMem + 0x18000 -_080C273C: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080C2766 -_080C2744: - ldr r0, _080C2750 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x14] - cmp r0, 0 - bne _080C2766 - strh r0, [r4, 0x8] - b _080C2766 - .align 2, 0 -_080C2750: .4byte gSharedMem + 0x18000 -_080C2754: - movs r0, 0x88 - lsls r0, 3 - bl sub_80C3520 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xC] - ldr r0, _080C276C @ =sub_80C2770 - str r0, [r4] -_080C2766: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C276C: .4byte sub_80C2770 - thumb_func_end sub_80C26E4 - - thumb_func_start sub_80C2770 -sub_80C2770: @ 80C2770 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r4, r2, 0 - ldr r5, _080C27BC @ =gSharedMem + 0x18000 - ldrb r3, [r5, 0x4] - cmp r3, 0 - bne _080C27CC - ldr r1, _080C27C0 @ =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 _080C27DE - strh r3, [r1, 0xA] - ldr r4, _080C27C4 @ =gContestText_Round2Results - ldrb r1, [r5] - adds r0, r4, 0 - bl sub_80C3158 - adds r0, r4, 0 - bl sub_80C34AC - lsls r0, 16 - asrs r0, 16 - ldr r2, _080C27C8 @ =0x0000ffff - movs r3, 0x88 - lsls r3, 3 - movs r1, 0x90 - bl sub_80C34CC - b _080C27DE - .align 2, 0 -_080C27BC: .4byte gSharedMem + 0x18000 -_080C27C0: .4byte gTasks -_080C27C4: .4byte gContestText_Round2Results -_080C27C8: .4byte 0x0000ffff -_080C27CC: - cmp r3, 0x2 - bne _080C27DE - ldr r0, _080C27E4 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080C27E8 @ =sub_80C27EC - str r0, [r1] -_080C27DE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C27E4: .4byte gTasks -_080C27E8: .4byte sub_80C27EC - thumb_func_end sub_80C2770 - - 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} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _080C2D6C @ =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080C2D66 - ldr r0, _080C2D70 @ =gIsLinkContest - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - lsls r6, r7, 2 - cmp r0, 0 - bne _080C2D5A - ldr r5, _080C2D74 @ =gContestMons - movs r4, 0x3 -_080C2D42: - 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 _080C2D42 -_080C2D5A: - ldr r0, _080C2D78 @ =gTasks - adds r1, r6, r7 - lsls r1, 3 - adds r1, r0 - ldr r0, _080C2D7C @ =sub_80C2D80 - str r0, [r1] -_080C2D66: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C2D6C: .4byte gMain -_080C2D70: .4byte gIsLinkContest -_080C2D74: .4byte gContestMons -_080C2D78: .4byte gTasks -_080C2D7C: .4byte sub_80C2D80 - thumb_func_end sub_80C2D1C - - thumb_func_start sub_80C2D80 -sub_80C2D80: @ 80C2D80 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080C2DAC @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080C2DBC - ldr r0, _080C2DB0 @ =gOtherText_LinkStandby - bl sub_80C3698 - bl sub_800832C - ldr r1, _080C2DB4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080C2DB8 @ =sub_80C2DD8 - str r1, [r0] - b _080C2DCA - .align 2, 0 -_080C2DAC: .4byte gIsLinkContest -_080C2DB0: .4byte gOtherText_LinkStandby -_080C2DB4: .4byte gTasks -_080C2DB8: .4byte sub_80C2DD8 -_080C2DBC: - ldr r0, _080C2DD0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080C2DD4 @ =sub_80C2E14 - str r0, [r1] -_080C2DCA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C2DD0: .4byte gTasks -_080C2DD4: .4byte sub_80C2E14 - thumb_func_end sub_80C2D80 - - thumb_func_start sub_80C2DD8 -sub_80C2DD8: @ 80C2DD8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080C2E04 @ =gReceivedRemoteLinkPlayers - ldrb r1, [r0] - cmp r1, 0 - bne _080C2DFC - ldr r0, _080C2E08 @ =gIsLinkContest - strb r1, [r0] - bl sub_80C3764 - ldr r1, _080C2E0C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080C2E10 @ =sub_80C2E14 - str r1, [r0] -_080C2DFC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C2E04: .4byte gReceivedRemoteLinkPlayers -_080C2E08: .4byte gIsLinkContest -_080C2E0C: .4byte gTasks -_080C2E10: .4byte sub_80C2E14 - thumb_func_end sub_80C2DD8 - - thumb_func_start sub_80C2E14 -sub_80C2E14: @ 80C2E14 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080C2E80 @ =gContestFinalStandings - ldr r0, _080C2E84 @ =gContestPlayerMonIndex - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - bl sub_80BE284 - movs r0, 0x2 - bl sub_810FB10 - ldr r0, _080C2E88 @ =gSpecialVar_ContestRank - ldrb r0, [r0] - bl Contest_SaveWinner - movs r0, 0xFE - bl Contest_SaveWinner - ldr r4, _080C2E8C @ =gSharedMem - ldr r0, _080C2E90 @ =0x00015ddf - adds r1, r4, r0 - movs r6, 0 - movs r0, 0x1 - strb r0, [r1] - movs r0, 0xFE - movs r1, 0 - bl sub_80B2C4C - ldr r1, _080C2E94 @ =0x00015dde - adds r4, r1 - strb r0, [r4] - str r6, [sp] - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginHardwarePaletteFade - ldr r1, _080C2E98 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080C2E9C @ =sub_80C2EA0 - str r1, [r0] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C2E80: .4byte gContestFinalStandings -_080C2E84: .4byte gContestPlayerMonIndex -_080C2E88: .4byte gSpecialVar_ContestRank -_080C2E8C: .4byte gSharedMem -_080C2E90: .4byte 0x00015ddf -_080C2E94: .4byte 0x00015dde -_080C2E98: .4byte gTasks -_080C2E9C: .4byte sub_80C2EA0 - thumb_func_end sub_80C2E14 - - thumb_func_start sub_80C2EA0 -sub_80C2EA0: @ 80C2EA0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r2, 0 - ldr r0, _080C2ED8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080C2F18 - ldr r1, _080C2EDC @ =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 _080C2EE8 - ldr r0, _080C2EE0 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x3] - bl DestroyTask - ldr r0, _080C2EE4 @ =0x0000ffff - b _080C2EEE - .align 2, 0 -_080C2ED8: .4byte gPaletteFade -_080C2EDC: .4byte gTasks -_080C2EE0: .4byte gSharedMem + 0x18000 -_080C2EE4: .4byte 0x0000ffff -_080C2EE8: - cmp r0, 0x1 - bne _080C2F04 - ldr r0, _080C2F00 @ =0xffff0000 -_080C2EEE: - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - b _080C2F18 - .align 2, 0 -_080C2F00: .4byte 0xffff0000 -_080C2F04: - ldr r0, _080C2F20 @ =REG_BLDCNT - strh r3, [r0] - adds r0, 0x4 - strh r3, [r0] - adds r0, r5, 0 - bl DestroyTask - ldr r0, _080C2F24 @ =c2_exit_to_overworld_1_continue_scripts_restart_music - bl SetMainCallback2 -_080C2F18: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C2F20: .4byte REG_BLDCNT -_080C2F24: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music - thumb_func_end sub_80C2EA0 - - thumb_func_start sub_80C2F28 -sub_80C2F28: @ 80C2F28 - push {r4,r5,lr} - ldr r2, _080C2F5C @ =gBattle_BG3_X - ldrh r3, [r2] - adds r0, r3, 0x2 - strh r0, [r2] - ldr r4, _080C2F60 @ =gBattle_BG3_Y - ldrh r5, [r4] - adds r1, r5, 0x1 - strh r1, [r4] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _080C2F48 - adds r0, r3, 0 - subs r0, 0xFD - strh r0, [r2] -_080C2F48: - lsls r0, r1, 16 - lsrs r0, 16 - cmp r0, 0xFF - bls _080C2F56 - adds r0, r5, 0 - subs r0, 0xFE - strh r0, [r4] -_080C2F56: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C2F5C: .4byte gBattle_BG3_X -_080C2F60: .4byte gBattle_BG3_Y - thumb_func_end sub_80C2F28 - - thumb_func_start sub_80C2F64 -sub_80C2F64: @ 80C2F64 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080C2F94 @ =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 _080C2FE6 - movs r0, 0 - strh r0, [r2, 0x8] - movs r3, 0xC - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _080C2F98 - ldrh r0, [r2, 0xA] - adds r0, 0x1 - b _080C2F9C - .align 2, 0 -_080C2F94: .4byte gTasks -_080C2F98: - ldrh r0, [r2, 0xA] - subs r0, 0x1 -_080C2F9C: - 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 _080C2FB2 - movs r0, 0x1 - b _080C2FB6 -_080C2FB2: - cmp r0, 0 - bne _080C2FB8 -_080C2FB6: - strh r0, [r1, 0xC] -_080C2FB8: - ldr r0, _080C3000 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - ldrb r2, [r4, 0xA] - ldr r3, _080C3004 @ =0x00002ede - movs r0, 0x6B - movs r1, 0x1 - bl BlendPalette - ldrb r2, [r4, 0xA] - ldr r3, _080C3008 @ =0x00007fff - movs r0, 0x68 - movs r1, 0x1 - bl BlendPalette - ldrb r2, [r4, 0xA] - ldr r3, _080C300C @ =0x000077be - movs r0, 0x6E - movs r1, 0x1 - bl BlendPalette -_080C2FE6: - ldr r1, _080C3000 @ =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 _080C3014 - ldr r0, _080C3010 @ =gSharedMem + 0x18000 - strb r4, [r0, 0xA] - b _080C301A - .align 2, 0 -_080C3000: .4byte gTasks -_080C3004: .4byte 0x00002ede -_080C3008: .4byte 0x00007fff -_080C300C: .4byte 0x000077be -_080C3010: .4byte gSharedMem + 0x18000 -_080C3014: - ldr r1, _080C3020 @ =gSharedMem + 0x18000 - movs r0, 0x1 - strb r0, [r1, 0xA] -_080C301A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C3020: .4byte gSharedMem + 0x18000 - thumb_func_end sub_80C2F64 - - thumb_func_start sub_80C3024 -sub_80C3024: @ 80C3024 - push {r4-r6,lr} - ldr r6, [sp, 0x10] - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - lsls r3, 24 - cmp r3, 0 - beq _080C30B0 - adds r1, r6, 0 - bl GetMonIconPtr - lsls r1, r5, 9 - adds r0, r1 - adds r0, 0x80 - lsls r1, r4, 9 - ldr r2, _080C30A0 @ =0x06004000 - adds r1, r2 - ldr r2, _080C30A4 @ =0x040000d4 - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _080C30A8 @ =0x84000060 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r1, r4, 0 - adds r1, 0xA - lsls r1, 28 - lsls r0, r4, 20 - movs r2, 0x80 - lsls r2, 18 - adds r0, r2 - orrs r0, r1 - lsrs r1, r0, 16 - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 21 - movs r2, 0x83 - lsls r2, 16 - adds r0, r2 - lsrs r5, r0, 16 - movs r2, 0 - ldr r6, _080C30AC @ =0x0600c000 -_080C307C: - lsls r0, r2, 5 - adds r4, r2, 0x1 - adds r0, r5 - movs r3, 0x3 - lsls r0, 1 - adds r2, r0, r6 -_080C3088: - strh r1, [r2] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080C3088 - adds r2, r4, 0 - cmp r2, 0x2 - ble _080C307C - b _080C30CA - .align 2, 0 -_080C30A0: .4byte 0x06004000 -_080C30A4: .4byte 0x040000d4 -_080C30A8: .4byte 0x84000060 -_080C30AC: .4byte 0x0600c000 -_080C30B0: - adds r1, r6, 0 - bl GetMonIconPtr - lsls r1, r5, 9 - adds r0, r1 - adds r0, 0x80 - lsls r1, r4, 9 - ldr r2, _080C30D0 @ =0x06004000 - adds r1, r2 - movs r2, 0xC0 - lsls r2, 1 - bl RequestSpriteCopy -_080C30CA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C30D0: .4byte 0x06004000 - thumb_func_end sub_80C3024 - - thumb_func_start sub_80C30D4 -sub_80C30D4: @ 80C30D4 - 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, _080C3108 @ =gContestMons -_080C30E4: - 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_80C3024 - adds r4, 0x40 - adds r5, 0x1 - cmp r5, 0x3 - ble _080C30E4 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C3108: .4byte gContestMons - thumb_func_end sub_80C30D4 - - thumb_func_start sub_80C310C -sub_80C310C: @ 80C310C - push {r4-r6,lr} - movs r4, 0 - ldr r6, _080C314C @ =gMonIconPaletteIndices - movs r5, 0xA0 - lsls r5, 16 -_080C3116: - ldr r1, _080C3150 @ =gContestMons - lsls r0, r4, 6 - adds r0, r1 - ldrh r0, [r0] - movs r1, 0 - bl mon_icon_convert_unown_species_id - lsls r0, 16 - lsrs r0, 16 - adds r0, r6 - ldrb r0, [r0] - lsls r0, 5 - ldr r1, _080C3154 @ =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 _080C3116 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C314C: .4byte gMonIconPaletteIndices -_080C3150: .4byte gContestMons -_080C3154: .4byte gMonIconPalettes - thumb_func_end sub_80C310C - thumb_func_start sub_80C3158 sub_80C3158: @ 80C3158 push {r4-r7,lr} diff --git a/data/contest_link_80C2020.s b/data/contest_link_80C2020.s deleted file mode 100644 index f0ad06a32..000000000 --- a/data/contest_link_80C2020.s +++ /dev/null @@ -1,78 +0,0 @@ - .include "include/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_083D1624:: @ 83D1624 - .incbin "graphics/unknown/unknown_3D1624/0.4bpp" - -gUnknown_083D1644:: @ 83D1644 - .incbin "graphics/unknown/unknown_3D1624/1.4bpp" - .incbin "graphics/unknown/unknown_3D1624/2.4bpp" - .incbin "graphics/unknown/unknown_3D1624/3.4bpp" - .incbin "graphics/unknown/unknown_3D1624/4.4bpp" - .incbin "graphics/unknown/unknown_3D1624/5.4bpp" - -gUnknown_083D16E4:: @ 83D16E4 - .incbin "graphics/unknown/unknown_3D1624/6.4bpp" - .incbin "graphics/unknown/unknown_3D1624/7.4bpp" - - .align 2 -gMiscBlank_Pal:: - .incbin "graphics/interface/blank.gbapal" - - .align 2 -gOamData_83D1744:: @ 83D1744 - .2byte 0x4000 - .2byte 0xC000 - .2byte 0x2C00 - - .align 2 -gSpriteTemplate_83D174C:: @ 83D174C - spr_template 3009, 3009, gOamData_83D1744, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_083D1764:: @ 83D1764 - obj_tiles gMiscBlank_Gfx, 1024, 0x0bc1 - obj_tiles gMiscBlank_Gfx, 1024, 0x0bc2 - obj_tiles gMiscBlank_Gfx, 1024, 0x0bc3 - obj_tiles gMiscBlank_Gfx, 1024, 0x0bc4 - obj_tiles gMiscBlank_Gfx, 1024, 0x0bc5 - obj_tiles gMiscBlank_Gfx, 1024, 0x0bc6 - obj_tiles gMiscBlank_Gfx, 1024, 0x0bc7 - obj_tiles gMiscBlank_Gfx, 1024, 0x0bc8 - - .align 2 -gUnknown_083D17A4:: @ 83D17A4 - obj_pal gMiscBlank_Pal, 0x0BC1 - - .align 2 -gOamData_83D17AC:: @ 83D17AC - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0000 - - .align 2 -gSpriteTemplate_83D17B4:: @ 83D17B4 - spr_template 3017, 3017, gOamData_83D17AC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80C3DF0 - - .align 2 -gUnknown_083D17CC:: @ 83D17CC - obj_tiles gContestConfetti_Gfx, 544, 0x0bc9 - - .align 2 -gUnknown_083D17D4:: @ 83D17D4 - obj_pal gContestConfetti_Pal, 0x0bc9 - -gUnknown_083D17DC:: @ 83D17DC - .string "{COLOR RED}$" - -gUnknown_083D17E0:: @ 83D17E0 - .string "/$" - -gUnknown_083D17E2:: @ 83D17E2 - .string "{SIZE 3}{COLOR_HIGHLIGHT_SHADOW WHITE2 DARK_GREY LIGHT_BLUE}$" - - .align 2 - .incbin "graphics/unknown/unknown_3D17EC.gbapal" diff --git a/include/battle.h b/include/battle.h index 346423e65..c9bbb56eb 100644 --- a/include/battle.h +++ b/include/battle.h @@ -725,6 +725,21 @@ void MarkBufferBankForExecution(u8 bank); extern u8 gBattleTextBuff1[]; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V; +extern u16 gBattle_WIN1H; +extern u16 gBattle_WIN1V; + +extern u8 gDisplayedStringBattle[]; + extern u16 gBattleTypeFlags; extern u8 gUnknown_02023A14_50; extern u16 gTrainerBattleOpponent; diff --git a/include/contest.h b/include/contest.h index 86a5ea4d7..969ae51dd 100644 --- a/include/contest.h +++ b/include/contest.h @@ -438,6 +438,7 @@ extern u16 gUnknown_02038688[4]; extern u8 gContestFinalStandings[4]; extern u8 gUnknown_02038696[4]; extern u8 gUnknown_0203869B; +extern u16 gSpecialVar_ContestRank; extern u16 gSpecialVar_ContestCategory; void SetContestantEffectStringID(u8 a, u8 b); diff --git a/include/graphics.h b/include/graphics.h index 8e95d100d..8e8e0c97e 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3345,6 +3345,9 @@ extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_17; extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_20; extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_21; +extern const u8 gContestConfetti_Gfx[]; +extern const u8 gContestConfetti_Pal[]; + extern const struct CompressedSpriteSheet gBattleTerrainTiles_TallGrass[]; extern const u8 gBattleTerrainTilemap_TallGrass[]; extern const struct CompressedSpriteSheet gBattleTerrainAnimTiles_TallGrass[]; diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index a1a965d81..ad0e4b56b 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -15,6 +15,8 @@ void sub_809D580(u16); void sub_809D608(u16); void sub_809D62C(struct Sprite *sprite); void sub_809D824(struct Sprite *sprite, u8 animNum); +const u8 *GetMonIconPtr(u16 species, u32 personality); u16 mon_icon_convert_unown_species_id(u16 species, u32 personality); +extern const u8 gMonIconPaletteIndices[]; #endif // GUARD_POKEMON_ICON_H diff --git a/include/tv.h b/include/tv.h index 787f0e9c4..a7064f8fd 100644 --- a/include/tv.h +++ b/include/tv.h @@ -27,6 +27,7 @@ void sub_80BE160(TVShow *show); void sub_80BE160(TVShow *); void sub_80BE188(void); void sub_80BE23C(u16); +void sub_80BE284(u8 contestResult); void sub_80BE320(void); void StartMassOutbreak(void); void sub_80BE5FC(void); diff --git a/ld_script.txt b/ld_script.txt index 5d3fa0f4d..9ccf09013 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -160,6 +160,7 @@ SECTIONS { src/debug/sound_check_menu.o(.text); src/secret_base.o(.text); src/tv.o(.text); + src/battle/contest_link_80C2020.o(.text); asm/contest_link_80C2020.o(.text); src/script_pokemon_util_80C4BF0.o(.text); src/field_poison.o(.text); @@ -584,7 +585,7 @@ SECTIONS { src/debug/sound_check_menu.o(.rodata); src/secret_base.o(.rodata); src/tv.o(.rodata); - data/contest_link_80C2020.o(.rodata); + src/battle/contest_link_80C2020.o(.rodata); src/pokemon_size_record.o(.rodata); src/pc_screen_effect.o(.rodata); src/pc_screen_effect.o(.data); diff --git a/src/battle/anim/battle_intro.c b/src/battle/anim/battle_intro.c index d96dc7ea8..a189b1425 100644 --- a/src/battle/anim/battle_intro.c +++ b/src/battle/anim/battle_intro.c @@ -12,11 +12,6 @@ #include "trig.h" extern u16 gBattleTypeFlags; -extern u16 gBattle_BG1_X; -extern u16 gBattle_BG1_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_WIN0V; extern u16 gUnknown_02024DE8; extern u8 gBattleMonForms[]; @@ -376,7 +371,7 @@ static void BattleIntroTask_ScrollAndFadeScenery(u8 taskId) REG_BLDALPHA = gTasks[taskId].data[4]; } -// Seems to only be used for link battles. +// Seems to only be used for link battles. static void BattleIntroTask_80E4C34(u8 taskId) { s32 i; diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 11ddd6b71..7b6004ce0 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -121,22 +121,10 @@ extern u16 gUnknown_02024DE8; extern u8 gActionSelectionCursor[]; extern u8 gMoveSelectionCursor[]; extern u8 gUnknown_02038470[]; -extern u16 gBattle_BG3_X; -extern u16 gBattle_BG1_Y; -extern u16 gBattle_BG3_Y; extern struct Window gUnknown_030041D0; -extern u16 gBattle_WIN1H; extern struct Window gUnknown_03004210; -extern u16 gBattle_WIN1V; extern struct Window gUnknown_03004250; -extern u16 gBattle_WIN0V; -extern u16 gBattle_BG2_Y; extern u32 gUnknown_03004284; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG1_X; -extern u16 gBattle_WIN0H; extern MainCallback gPreBattleCallback1; extern void (*gBattleMainFunc)(void); extern u8 gLeveledUpInBattle; diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index d1435d8ea..54cacd0cb 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -164,7 +164,6 @@ extern u16 gChosenMove; //last used move in battle extern u8 gBankInMenu; extern u8 gActionForBanks[4]; extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch -extern u16 gBattle_BG3_X; extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one extern u8 gCurrentTurnActionNumber; extern u16 gTrappingMoves[]; @@ -1991,7 +1990,7 @@ static void atk0B_healthbarupdate(void) healthValue = currDmg; else healthValue = maxPossibleDmgValue; - + EmitHealthBarUpdate(0, healthValue); */ @@ -5544,6 +5543,7 @@ static void atk23_getexp(void) gBattleResources_statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPDEF); gActiveBattler = gBattleStruct->expGetterBank; + EmitExpBarUpdate(0, gBattleStruct->expGetterID, gBattleMoveDamage); MarkBufferBankForExecution(gActiveBattler); } diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index ebfe2401d..8b729d2ab 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -1311,14 +1311,6 @@ EWRAM_DATA u8 gAnimBankAttacker = 0; EWRAM_DATA u8 gAnimBankTarget = 0; EWRAM_DATA u16 gAnimSpeciesByBanks[4] = {0}; EWRAM_DATA u8 gUnknown_0202F7D2 = 0; // some global pan variable -extern u16 gBattle_BG1_Y; -extern u16 gBattle_WIN1H; -extern u16 gBattle_WIN0V; -extern u16 gBattle_WIN1V; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG1_X; -extern u16 gBattle_WIN0H; u16 gSoundAnimFramesToWait; s16 gBattleAnimArgs[ANIM_ARGS_COUNT]; diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 62df190a5..a759822cd 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -48,8 +48,6 @@ extern u8 gUnknown_02024E68[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u8 gAnimMoveTurn; extern struct Window gUnknown_03004210; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; extern u8 gUnknown_0300434C[]; extern u32 gBattleExecBuffer; extern MainCallback gPreBattleCallback1; @@ -1143,7 +1141,7 @@ void LinkOpponentHandlecmd3(void) u8 *dst; u8 i; - MEMSET_ALT(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1], + MEMSET_ALT(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][3 + i], gBattleBufferA[gActiveBattler][2], i, dst); LinkOpponentBufferExecCompleted(); diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index 12eb62a2b..16aef5791 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -48,8 +48,6 @@ extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; extern u8 gAnimMoveTurn; extern struct Window gUnknown_03004210; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; extern MainCallback gPreBattleCallback1; extern void (*gBattleBankFunc[])(void); extern u8 gHealthboxIDs[]; @@ -1091,7 +1089,7 @@ void LinkPartnerHandlecmd3(void) u8 *dst; u8 i; - MEMSET_ALT(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1], + MEMSET_ALT(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][3 + i], gBattleBufferA[gActiveBattler][2], i, dst); LinkPartnerBufferExecCompleted(); diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index f6e7f92a7..d8760e21f 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -52,8 +52,6 @@ extern u8 gAnimMoveTurn; extern u8 gAnimScriptActive; extern void (*gAnimScriptCallback)(void); extern struct Window gUnknown_03004210; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; extern u8 gDisplayedStringBattle[]; extern u8 gBankTarget; extern u8 gAbsentBattlerFlags; @@ -1115,7 +1113,7 @@ void OpponentHandlecmd3(void) u8 *dst; u8 i; - MEMSET_ALT(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][3 + i], + MEMSET_ALT(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][3 + i], gBattleBufferA[gActiveBattler][2], i, dst); OpponentBufferExecCompleted(); } diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index d1dcf8bf4..a83946554 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -35,9 +35,6 @@ struct MovePpInfo #define SUB_803037C_TILE_DATA_OFFSET 444 #endif -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG0_Y; - extern struct Window gUnknown_03004210; extern void (*gBattleBankFunc[])(void); @@ -71,13 +68,6 @@ extern u8 gUnknown_02024E68[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u8 gAnimMoveTurn; extern u8 gUnknown_02038470[]; -extern u16 gBattle_BG3_X; -extern u16 gBattle_BG1_Y; -extern u16 gBattle_BG3_Y; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG1_X; extern u8 gUnknown_03004344; extern u8 gUnknown_0300434C[]; @@ -151,8 +141,6 @@ extern u8 gAbsentBattlerFlags; extern u8 gUnknown_03004344; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[]; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; extern struct Window gUnknown_03004210; extern const u8 BattleText_SwitchWhich[]; extern u8 gUnknown_03004348; diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 6bc56c19b..72054ee6b 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -24,8 +24,6 @@ extern u8 gActiveBattler; extern const u8 BattleText_MenuOptionsSafari[]; extern void *gBattleBankFunc[]; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; extern u8 gBattleBufferA[][0x200]; extern bool8 gDoingBattleAnim; extern u8 gBankSpriteIds[]; diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 3f88d4c72..ed4eadee6 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -53,8 +53,6 @@ extern u8 gUnknown_02024E68[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u8 gAnimMoveTurn; extern struct Window gUnknown_03004210; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; extern u8 gUnknown_0300434C[]; extern const u8 BattleText_WallyMenu[]; extern const u8 BattleText_MenuOptions[]; diff --git a/src/battle/contest_link_80C2020.c b/src/battle/contest_link_80C2020.c new file mode 100644 index 000000000..10702b142 --- /dev/null +++ b/src/battle/contest_link_80C2020.c @@ -0,0 +1,1044 @@ +#include "global.h" +#include "data2.h" +#include "util.h" +#include "overworld.h" +#include "constants/songs.h" +#include "ewram.h" +#include "main.h" +#include "scanline_effect.h" +#include "decompress.h" +#include "palette.h" +#include "blend_palette.h" +#include "graphics.h" +#include "strings2.h" +#include "text.h" +#include "string_util.h" +#include "menu.h" +#include "sound.h" +#include "pokedex.h" +#include "pokemon_icon.h" +#include "tv.h" +#include "battle.h" +#include "contest.h" +#include "link.h" +#include "field_effect.h" +#include "field_specials.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 unk_03; + u8 unk_04; + 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; +}; + +struct UnkEwramStruct18018 { + u8 filler_00[0x50]; +}; + +#define eContestLink80C2020Struct2018000 (*(struct UnkEwramStruct18000 *)(gSharedMem + 0x18000)) +#define eContestLink80C2020Struct2018018 (*(struct UnkEwramStruct18018 *)(gSharedMem + 0x18018)) +#define eContestLink80C2020Struct2018068 (gSharedMem + 0x18068) + +static void sub_80C2430(void); +static void sub_80C2448(void); +static void sub_80C24F4(u8 taskId); +static void sub_80C255C(u8 taskId); +static void sub_80C25A4(u8 taskId); +static void sub_80C25C0(u8 taskId); +static void sub_80C2600(u8 taskId); +static void sub_80C26E4(u8 taskId); +static void sub_80C2770(u8 taskId); +static void sub_80C27EC(u8 taskId); +static void sub_80C2878(u8 taskId); +static void sub_80C2A8C(u8 taskId); +static void sub_80C2D1C(u8 taskId); +static void sub_80C2D80(u8 taskId); +static void sub_80C2DD8(u8 taskId); +static void sub_80C2E14(u8 taskId); +static void sub_80C2EA0(u8 taskId); +static void sub_80C2F28(u8 taskId); +static void sub_80C2F64(u8 taskId); +static void LoadAllContestMonIcons(u8 srcOffset, bool8 useDmaNow); +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); +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_80C3DF0(struct Sprite *sprite); +void sub_80C3E60(u8 a0, u8 a1); +void sub_80C3F00(void); +void sub_80C40D4(u8 a0, u8 a1); + +const u16 gUnknown_083D1624[] = INCBIN_U16("graphics/unknown/unknown_3D1624/0.4bpp"); +const u16 gUnknown_083D1644[] = INCBIN_U16("graphics/unknown/unknown_3D1624/1.4bpp"); +const u16 gUnknown_083D1664[] = INCBIN_U16("graphics/unknown/unknown_3D1624/2.4bpp"); +const u16 gUnknown_083D1684[] = INCBIN_U16("graphics/unknown/unknown_3D1624/3.4bpp"); +const u16 gUnknown_083D16A4[] = INCBIN_U16("graphics/unknown/unknown_3D1624/4.4bpp"); +const u16 gUnknown_083D16C4[] = INCBIN_U16("graphics/unknown/unknown_3D1624/5.4bpp"); +const u16 gUnknown_083D16E4[] = INCBIN_U16("graphics/unknown/unknown_3D1624/6.4bpp"); +const u16 gUnknown_083D1704[] = INCBIN_U16("graphics/unknown/unknown_3D1624/7.4bpp"); +const u16 gMiscBlank_Pal[] = INCBIN_U16("graphics/interface/blank.gbapal"); + +const struct OamData gOamData_83D1744 = { + .shape = ST_OAM_H_RECTANGLE, + .size = 3, + .priority = 3, + .paletteNum = 2 +}; + +const struct SpriteTemplate gSpriteTemplate_83D174C = { + 0xbc1, + 0xbc1, + &gOamData_83D1744, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const struct SpriteSheet gUnknown_083D1764[] = { + {gMiscBlank_Gfx, 0x400, 0xbc1}, + {gMiscBlank_Gfx, 0x400, 0xbc2}, + {gMiscBlank_Gfx, 0x400, 0xbc3}, + {gMiscBlank_Gfx, 0x400, 0xbc4}, + {gMiscBlank_Gfx, 0x400, 0xbc5}, + {gMiscBlank_Gfx, 0x400, 0xbc6}, + {gMiscBlank_Gfx, 0x400, 0xbc7}, + {gMiscBlank_Gfx, 0x400, 0xbc8}, +}; + +const struct SpritePalette gUnknown_083D17A4 = { + gMiscBlank_Pal, 0xbc1 +}; + +const struct OamData gOamData_83D17AC = {}; + +const struct SpriteTemplate gSpriteTemplate_83D17B4 = { + 0xbc9, + 0xbc9, + &gOamData_83D17AC, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + sub_80C3DF0 +}; + +const struct CompressedSpriteSheet gUnknown_083D17CC = {gContestConfetti_Gfx, 0x220, 0xbc9}; + +const struct CompressedSpritePalette gUnknown_083D17D4 = {gContestConfetti_Pal, 0xbc9}; + +const u8 gUnknown_083D17DC[] = _("{COLOR RED}"); +const u8 gUnknown_083D17E0[] = _("/"); +const u8 gUnknown_083D17E2[] = _("{SIZE 3}{COLOR_HIGHLIGHT_SHADOW WHITE2 DARK_GREY LIGHT_BLUE}"); + +void sub_80C2020(void) +{ + REG_DISPCNT = DISPCNT_OBJ_1D_MAP; + Text_LoadWindowTemplate(&gWindowTemplate_81E6FA0); + Text_InitWindowWithTemplate(&gMenuWindow, &gWindowTemplate_81E6FA0); + REG_BG0CNT = BGCNT_WRAP | BGCNT_SCREENBASE(30); + REG_BG1CNT = BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(24); + REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(28); + REG_BG3CNT = BGCNT_WRAP | BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(26); + REG_MOSAIC = 0; + REG_WININ = 0x3f3f; + REG_WINOUT = 0x3f2e; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_DISPCNT |= DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + gBattle_WIN1H = 0; + gBattle_WIN1V = 0; +} + +void sub_80C2144(void) +{ + int i; + int j; + s8 r7; + s8 r4; + u16 r6; + u16 r3; + + DmaFill32Large(3, 0, VRAM, VRAM_SIZE, 0x1000); + LZDecompressVram(gUnknown_08D1977C, BG_SCREEN_ADDR(0)); + LZDecompressVram(gUnknown_08D1A490, BG_SCREEN_ADDR(26)); + LZDecompressVram(gUnknown_08D1A364, BG_SCREEN_ADDR(28)); + LZDecompressVram(gUnknown_08D1A250, BG_SCREEN_ADDR(30)); + sub_80C37E4(); + LoadCompressedPalette(gUnknown_08D1A618, 0, 0x200); + LoadFontDefaultPalette(&gWindowTemplate_81E6FA0); + for (i = 0; i < 4; i++) + { + r7 = sub_80C3990(i, 1); + r4 = sub_80C39E4(i, 1); + for (j = 0; j < 10; j++) + { + r6 = 0x60b2; + if (j < r7) + r6 = 0x60b4; + if (j < ABS(r4)) + { + r3 = 0x60a4; + if (r4 < 0) + r3 = 0x60a6; + } + else + r3 = 0x60a2; + ((u16 *)BG_VRAM)[i * 0x60 + j + 0x60b3] = r6; + ((u16 *)BG_VRAM)[i * 0x60 + j + 0x60d3] = r3; + } + } +} + +void sub_80C226C(u8 a0) +{ + u8 *strbuf; + + if (a0 == gContestPlayerMonIndex) + strbuf = StringCopy(gDisplayedStringBattle, gUnknown_083D17DC); + else + strbuf = gDisplayedStringBattle; + strbuf[0] = EXT_CTRL_CODE_BEGIN; + strbuf[1] = 0x06; + strbuf[2] = 0x04; + strbuf += 3; + strbuf = StringCopy(strbuf, gContestMons[a0].nickname); + strbuf[0] = EXT_CTRL_CODE_BEGIN; + strbuf[1] = 0x13; + strbuf[2] = 0x32; + strbuf += 3; + strbuf = StringCopy(strbuf, gUnknown_083D17E0); + if (gIsLinkContest & 1) + StringCopy(strbuf, gLinkPlayers[a0].name); + else + StringCopy(strbuf, gContestMons[a0].trainerName); + Text_InitWindowAndPrintText(&gMenuWindow, gDisplayedStringBattle, a0 * 36 + 770, 7, a0 * 3 + 4); +} + +void sub_80C2340(void) +{ + int i; + + for (i = 0; i < 4; i++) + sub_80C226C(i); +} + +void sub_80C2358(void) +{ + gPaletteFade.bufferTransferDisabled = TRUE; + SetVBlankCallback(NULL); + sub_80C2020(); + ScanlineEffect_Clear(); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + FreeAllSpritePalettes(); + sub_80C2144(); + sub_80C310C(); + LoadAllContestMonIcons(0, TRUE); + sub_80C2340(); + eContestLink80C2020Struct2018000 = (struct UnkEwramStruct18000){}; + eContestLink80C2020Struct2018018 = (struct UnkEwramStruct18018){}; + sub_80C33DC(); + BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); + gPaletteFade.bufferTransferDisabled = FALSE; + eContestLink80C2020Struct2018000.unk_02 = CreateTask(sub_80C24F4, 5); + SetMainCallback2(sub_80C2430); + gBattle_WIN1H = 0xf0; + gBattle_WIN1V = 0x80a0; + CreateTask(sub_80C2F28, 20); + sub_80C3F00(); + PlayBGM(MUS_CON_K); + SetVBlankCallback(sub_80C2448); +} + +static void sub_80C2430(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + UpdatePaletteFade(); +} + +static void sub_80C2448(void) +{ + REG_BG0HOFS = gBattle_BG0_X; + REG_BG0VOFS = gBattle_BG0_Y; + REG_BG1HOFS = gBattle_BG1_X; + REG_BG1VOFS = gBattle_BG1_Y; + REG_BG2HOFS = gBattle_BG2_X; + REG_BG2VOFS = gBattle_BG2_Y; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; + REG_WIN0H = gBattle_WIN0H; + REG_WIN0V = gBattle_WIN0V; + REG_WIN1H = gBattle_WIN1H; + REG_WIN1V = gBattle_WIN1V; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + ScanlineEffect_InitHBlankDmaTransfer(); +} + +static void sub_80C24F4(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gIsLinkContest & 1) + { + sub_80C3698(gOtherText_LinkStandby); + gTasks[taskId].func = sub_80C255C; + } + else + { + gTasks[taskId].func = sub_80C2600; + } + } +} + +static void sub_80C255C(u8 taskId) +{ + if (gReceivedRemoteLinkPlayers && GetLinkPlayerCount() == MAX_LINK_PLAYERS) + { + CreateTask(sub_80C25A4, 0); + gTasks[taskId].func = TaskDummy; + } +} + +static void sub_80C25A4(u8 taskId) +{ + SetTaskFuncWithFollowupFunc(taskId, sub_80C89DC, sub_80C25C0); +} + +static void sub_80C25C0(u8 taskId) +{ + if (IsLinkTaskFinished()) + { + DestroyTask(taskId); + gTasks[eContestLink80C2020Struct2018000.unk_02].func = sub_80C2600; + sub_80C3764(); + } +} + +static void sub_80C2600(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + CreateTask(sub_80C2F64, 20); + sub_80C3158(gContestText_AnnounceResults, eContestLink80C2020Struct2018000.unk_00); + sub_80C34CC(sub_80C34AC(gContestText_AnnounceResults), 0x90, 0x78, 0x440); + gTasks[taskId].data[0]++; + } + else if (gTasks[taskId].data[0] == 1) + { + if (eContestLink80C2020Struct2018000.unk_04 == 0) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + } + else if (gTasks[taskId].data[0] == 2) + { + if (++gTasks[taskId].data[1] == 0x15) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + } + else if (gTasks[taskId].data[0] == 3) + { + sub_80C3158(gContestText_PreliminaryResults, eContestLink80C2020Struct2018000.unk_00); + sub_80C34CC(sub_80C34AC(gContestText_PreliminaryResults), 0x90, 0xffff, 0x440); + gTasks[taskId].data[0]++; + } + else if (gTasks[taskId].data[0] == 4) + { + if (eContestLink80C2020Struct2018000.unk_04 == 2) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80C26E4; + } + } +} + +static void sub_80C26E4(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (eContestLink80C2020Struct2018000.unk_0a == 0) + { + sub_80C40D4(0, 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].data[2] = 0; + gTasks[taskId].func = sub_80C2770; + break; + } +} + +static void sub_80C2770(u8 taskId) +{ + if (eContestLink80C2020Struct2018000.unk_04 == 0) + { + if (++gTasks[taskId].data[1] == 21) + { + gTasks[taskId].data[1] = 0; + sub_80C3158(gContestText_Round2Results, eContestLink80C2020Struct2018000.unk_00); + sub_80C34CC(sub_80C34AC(gContestText_Round2Results), 0x90, 0xffff, 0x440); + } + } + else if (eContestLink80C2020Struct2018000.unk_04 == 2) + { + gTasks[taskId].func = sub_80C27EC; + } +} + +static 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; + } +} + +static 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; + } +} + +static 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; + } +} + +static void sub_80C2D1C(u8 taskId) +{ + int i; + + if (gMain.newKeys & A_BUTTON) + { + if (!(gIsLinkContest & 1)) + { + for (i = 0; i < 4; i++) + { + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gContestMons[i].species), FLAG_SET_SEEN); + } + } + gTasks[taskId].func = sub_80C2D80; + } +} + +static void sub_80C2D80(u8 taskId) +{ + if (gIsLinkContest & 1) + { + sub_80C3698(gOtherText_LinkStandby); + sub_800832C(); + gTasks[taskId].func = sub_80C2DD8; + } + else + { + gTasks[taskId].func = sub_80C2E14; + } +} + +static void sub_80C2DD8(u8 taskId) +{ + if (gReceivedRemoteLinkPlayers == 0) + { + gIsLinkContest = 0; + sub_80C3764(); + gTasks[taskId].func = sub_80C2E14; + } +} + +static void sub_80C2E14(u8 taskId) +{ + sub_80BE284(gContestFinalStandings[gContestPlayerMonIndex]); + sub_810FB10(2); + Contest_SaveWinner(gSpecialVar_ContestRank); + Contest_SaveWinner(0xFE); + ewram15DDF = 1; + ewram15DDE = sub_80B2C4C(0xfe, 0); + BeginHardwarePaletteFade(0xff, 0, 0, 16, 0); + gTasks[taskId].func = sub_80C2EA0; +} + +static void sub_80C2EA0(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gTasks[taskId].data[1] == 0) + { + DestroyTask(eContestLink80C2020Struct2018000.unk_03); + BlendPalettes(0x0000ffff, 16, 0); + gTasks[taskId].data[1]++; + } + else if (gTasks[taskId].data[1] == 1) + { + BlendPalettes(0xffff0000, 16, 0); + gTasks[taskId].data[1]++; + } + else + { + REG_BLDCNT = 0; + REG_BLDY = 0; + DestroyTask(taskId); + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + } + } +} + +static void sub_80C2F28(u8 taskId) +{ + gBattle_BG3_X += 2; + gBattle_BG3_Y++; + if (gBattle_BG3_X > 0xff) + gBattle_BG3_X -= 0xff; + if (gBattle_BG3_Y > 0xff) + gBattle_BG3_Y -= 0xff; +} + +static void sub_80C2F64(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, 0x01, gTasks[taskId].data[1], RGB(30, 22, 11)); + BlendPalette(0x68, 0x01, gTasks[taskId].data[1], RGB(31, 31, 31)); + BlendPalette(0x6e, 0x01, gTasks[taskId].data[1], RGB(30, 29, 29)); + } + if (gTasks[taskId].data[1] == 0) + eContestLink80C2020Struct2018000.unk_0a = 0; + else + eContestLink80C2020Struct2018000.unk_0a = 1; +} + +#ifdef NONMATCHING +void sub_80C3024(u16 species, u8 destOffset, u8 srcOffset, bool8 useDmaNow, u32 personality) +{ + int i; + int j; + u16 tile; + u16 offset; + int vOffset; + + if (useDmaNow) + { + DmaCopy32Defvars(3, GetMonIconPtr(species, personality) + (srcOffset << 9) + 0x80, BG_CHAR_ADDR(1) + (destOffset << 9), 0x180); + tile = ((destOffset + 10) << 12); + tile |= (destOffset * 16 + 0x200); + offset = destOffset * 0x60 + 0x83; + for (i = 0; i < 3; i++) + { + vOffset = (i << 5) + offset; + for (j = 0; j < 4; j++) + { + ((u16 *)BG_CHAR_ADDR(3))[vOffset + j] = tile; + tile++; + } + } + } + else + { + RequestSpriteCopy(GetMonIconPtr(species, personality) + (srcOffset << 9) + 0x80, BG_CHAR_ADDR(1) + (destOffset << 9), 0x180); + } +} +#else +__attribute__((naked)) void sub_80C3024(u16 species, u8 destOffset, u8 srcOffset, bool8 useDmaNow, u32 personality) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tldr r6, [sp, 0x10]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tlsls r1, 24\n" + "\tlsrs r4, r1, 24\n" + "\tlsls r2, 24\n" + "\tlsrs r5, r2, 24\n" + "\tlsls r3, 24\n" + "\tcmp r3, 0\n" + "\tbeq _080C30B0\n" + "\tadds r1, r6, 0\n" + "\tbl GetMonIconPtr\n" + "\tlsls r1, r5, 9\n" + "\tadds r0, r1\n" + "\tadds r0, 0x80\n" + "\tlsls r1, r4, 9\n" + "\tldr r2, _080C30A0 @ =0x06004000\n" + "\tadds r1, r2\n" + "\tldr r2, _080C30A4 @ =0x040000d4\n" + "\tstr r0, [r2]\n" + "\tstr r1, [r2, 0x4]\n" + "\tldr r0, _080C30A8 @ =0x84000060\n" + "\tstr r0, [r2, 0x8]\n" + "\tldr r0, [r2, 0x8]\n" + "\tadds r1, r4, 0\n" + "\tadds r1, 0xA\n" + "\tlsls r1, 28\n" + "\tlsls r0, r4, 20\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 18\n" + "\tadds r0, r2\n" + "\torrs r0, r1\n" + "\tlsrs r1, r0, 16\n" + "\tlsls r0, r4, 1\n" + "\tadds r0, r4\n" + "\tlsls r0, 21\n" + "\tmovs r2, 0x83\n" + "\tlsls r2, 16\n" + "\tadds r0, r2\n" + "\tlsrs r5, r0, 16\n" + "\tmovs r2, 0\n" + "\tldr r6, _080C30AC @ =0x0600c000\n" + "_080C307C:\n" + "\tlsls r0, r2, 5\n" + "\tadds r4, r2, 0x1\n" + "\tadds r0, r5\n" + "\tmovs r3, 0x3\n" + "\tlsls r0, 1\n" + "\tadds r2, r0, r6\n" + "_080C3088:\n" + "\tstrh r1, [r2]\n" + "\tadds r0, r1, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r1, r0, 16\n" + "\tadds r2, 0x2\n" + "\tsubs r3, 0x1\n" + "\tcmp r3, 0\n" + "\tbge _080C3088\n" + "\tadds r2, r4, 0\n" + "\tcmp r2, 0x2\n" + "\tble _080C307C\n" + "\tb _080C30CA\n" + "\t.align 2, 0\n" + "_080C30A0: .4byte 0x06004000\n" + "_080C30A4: .4byte 0x040000d4\n" + "_080C30A8: .4byte 0x84000060\n" + "_080C30AC: .4byte 0x0600c000\n" + "_080C30B0:\n" + "\tadds r1, r6, 0\n" + "\tbl GetMonIconPtr\n" + "\tlsls r1, r5, 9\n" + "\tadds r0, r1\n" + "\tadds r0, 0x80\n" + "\tlsls r1, r4, 9\n" + "\tldr r2, _080C30D0 @ =0x06004000\n" + "\tadds r1, r2\n" + "\tmovs r2, 0xC0\n" + "\tlsls r2, 1\n" + "\tbl RequestSpriteCopy\n" + "_080C30CA:\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_080C30D0: .4byte 0x06004000"); +} +#endif + +static void LoadAllContestMonIcons(u8 srcOffset, bool8 useDmaNow) +{ + int i; + + for (i = 0; i < 4; i++) + { + sub_80C3024(gContestMons[i].species, i, srcOffset, useDmaNow, gContestMons[i].personality); + } +} + +#ifdef NONMATCHING +void sub_80C310C(void) +{ + int i; + + for (i = 0; i < 4; i++) + { + u16 species = mon_icon_convert_unown_species_id(gContestMons[i].species, 0); + LoadPalette(gMonIconPalettes[gMonIconPaletteIndices[species]], 0xa0 + 0x10 * i, 0x20); + } +} +#else +__attribute__((naked)) void sub_80C310C(void) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tmovs r4, 0\n" + "\tldr r6, _080C314C @ =gMonIconPaletteIndices\n" + "\tmovs r5, 0xA0\n" + "\tlsls r5, 16\n" + "_080C3116:\n" + "\tldr r1, _080C3150 @ =gContestMons\n" + "\tlsls r0, r4, 6\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0]\n" + "\tmovs r1, 0\n" + "\tbl mon_icon_convert_unown_species_id\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tadds r0, r6\n" + "\tldrb r0, [r0]\n" + "\tlsls r0, 5\n" + "\tldr r1, _080C3154 @ =gMonIconPalettes\n" + "\tadds r0, r1\n" + "\tlsrs r1, r5, 16\n" + "\tmovs r2, 0x20\n" + "\tbl LoadPalette\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 13\n" + "\tadds r5, r0\n" + "\tadds r4, 0x1\n" + "\tcmp r4, 0x3\n" + "\tble _080C3116\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_080C314C: .4byte gMonIconPaletteIndices\n" + "_080C3150: .4byte gContestMons\n" + "_080C3154: .4byte gMonIconPalettes"); +} +#endif + +// void sub_80C3158(const u8 *string, u8 spriteId) +// { +// int i, j; +// u8 width; +// u8 * displayedStringBattle; +// void * dest; +// u8 * d1; +// u8 * d2; +// void *d3; +// void *d4; +// void *d5; +// void *d6; +// int w; +// u16 sp00[4]; +// struct Sprite *sprite = &gSprites[spriteId]; +// sp00[0] = gSprites[spriteId].oam.tileNum; +// sp00[1] = gSprites[sprite->data[0]].oam.tileNum; +// sp00[2] = gSprites[sprite->data[1]].oam.tileNum; +// sp00[3] = gSprites[sprite->data[2]].oam.tileNum; + +// for (i = 0; i < 4; i++) +// { +// DmaClear32(3, (void *)VRAM + 0x10000 + 32 * sp00[i], 0x400); +// } + +// width = Text_GetStringWidthFromWindowTemplate(&gWindowTemplate_81E7278, string); +// displayedStringBattle = gDisplayedStringBattle; +// displayedStringBattle = StringCopy(displayedStringBattle, gUnknown_083D17E2); +// if ((~width + 1) & 7) +// { +// displayedStringBattle[0] = EXT_CTRL_CODE_BEGIN; +// displayedStringBattle[1] = 0x11; +// displayedStringBattle[2] = ((~width + 1) & 7) / 2; +// displayedStringBattle += 3; +// } + +// width += -8 & (width + 7); +// displayedStringBattle = StringCopy(displayedStringBattle, string); + +// displayedStringBattle[0] = EXT_CTRL_CODE_BEGIN; +// displayedStringBattle[1] = 0x13; +// displayedStringBattle[2] = width; +// displayedStringBattle[3] = EOS; + +// sub_80034D4(eContestLink80C2020Struct2018068, gDisplayedStringBattle); + +// CpuSet(&gUnknown_083D1624[0x0], (void *)0x6010000 + 32 * sp00[0], 0x4000008); +// CpuSet(&gUnknown_083D1624[0x40], (void *)0x6010000 + 32 * sp00[0] + 0x100, 0x4000008); +// CpuSet(&gUnknown_083D1624[0x40], (void *)0x6010000 + 32 * sp00[0] + 0x200, 0x4000008); +// CpuSet(&gUnknown_083D1624[0x20], (void *)0x6010000 + 32 * sp00[0] + 0x300, 0x4000008); + +// w = width / 8; +// j = 0; +// if (j <= w) +// { +// d2 = eContestLink80C2020Struct2018068 + 0x20; +// d1 = eContestLink80C2020Struct2018068; +// d3 = (void *)VRAM + 0x0FD20; +// d4 = (void *)VRAM + 0x0FE20; +// d5 = (void *)VRAM + 0x0FF20; +// d6 = (void *)VRAM + 0x10020; +// while (j <= w) +// { +// if (j < 7) +// dest = 32 * sp00[0] + d6; +// else if (j < 15) +// dest = 32 * sp00[1] + d5; +// else if (j < 23) +// dest = 32 * sp00[2] + d4; +// else +// dest = 32 * sp00[3] + d3; + +// if (j == w) +// break; + +// CpuSet(gUnknown_083D16E4, dest, 0x4000008); +// CpuSet(gUnknown_083D16E4 + 0x10, dest + 0x300, 0x4000008); +// CpuSet(j * 0x40 + d2, dest + 0x100, 0x4000008); +// CpuSet(j * 0x40 + d1, dest + 0x200, 0x4000008); + +// d3 += 0x20; +// d4 += 0x20; +// d5 += 0x20; +// d6 += 0x20; +// j++; +// } +// } + +// CpuSet(gUnknown_083D1644, dest, 0x4000008); +// CpuSet(gUnknown_083D1644 + 0x40, dest + 0x100, 0x4000008); +// CpuSet(gUnknown_083D1644 + 0x40, dest + 0x200, 0x4000008); +// CpuSet(gUnknown_083D1644 + 0x20, dest + 0x300, 0x4000008); +// } diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index f602d4835..bc4d394f0 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -11,14 +11,6 @@ extern struct SpriteTemplate gUnknown_02024E8C; extern struct Window gUnknown_03004210; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG1_X; -extern u16 gBattle_BG3_X; -extern u16 gBattle_BG1_Y; -extern u16 gBattle_BG3_Y; -extern u16 gBattle_BG0_Y; extern u8 gReservedSpritePaletteCount; extern u8 gActionSelectionCursor[4]; extern u8 gBankInMenu; diff --git a/src/contest.c b/src/contest.c index 9dff08ea7..78e2da3c0 100644 --- a/src/contest.c +++ b/src/contest.c @@ -48,23 +48,10 @@ extern u8 gBankAttacker; extern u8 gBankTarget; extern u8 gBanksBySide[]; extern u8 gBankSpriteIds[]; -extern u16 gBattle_BG3_X; -extern s16 gBattle_BG1_Y; -extern u16 gBattle_BG3_Y; -extern u16 gBattle_WIN1H; extern struct Window gUnknown_03004210; -extern u16 gBattle_WIN0V; -extern u16 gBattle_WIN1V; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG1_X; -extern u16 gBattle_WIN0H; +extern u32 gContestRngValue; extern struct SpriteTemplate gUnknown_02024E8C; - - extern const struct ContestPokemon gContestOpponents[60]; extern const u8 gUnknown_083CA308[][2]; extern const u8 gUnknown_083CA310[][2]; @@ -583,8 +570,7 @@ void sub_80AB9A0(u8 taskId) gTasks[taskId].data[0]++; break; case 1: - gBattle_BG1_Y += 7; - if (gBattle_BG1_Y <= 160) + if ((s16)(gBattle_BG1_Y += 7) <= 160) break; gTasks[taskId].data[0]++; break; @@ -2021,10 +2007,9 @@ void sub_80ADE54(u8 taskId) void sub_80ADEAC(u8 taskId) { - gBattle_BG1_Y -= 7; - if (gBattle_BG1_Y < 0) + if ((s16)(gBattle_BG1_Y -= 7) < 0) gBattle_BG1_Y = 0; - if (*(u16 *)&gBattle_BG1_Y == 0) // Why cast? + if (gBattle_BG1_Y == 0) // Why cast? { gTasks[taskId].func = sub_80ADEEC; gTasks[taskId].data[0] = 0; @@ -5177,10 +5162,9 @@ void sub_80B237C(u8 taskId) void sub_80B23BC(u8 taskId) { - gBattle_BG1_Y -= 7; - if (gBattle_BG1_Y < 0) + if ((s16)(gBattle_BG1_Y -= 7) < 0) gBattle_BG1_Y = 0; - if (*(u16 *)&gBattle_BG1_Y == 0) // Why cast? + if (gBattle_BG1_Y == 0) // Why cast? { gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; @@ -5240,8 +5224,7 @@ void sub_80B2400(u8 taskId) void sub_80B2508(u8 taskId) { - gBattle_BG1_Y += 7; - if (gBattle_BG1_Y > DISPLAY_HEIGHT) + if ((s16)(gBattle_BG1_Y += 7) > DISPLAY_HEIGHT) gTasks[taskId].func = sub_80ADCDC; } diff --git a/src/contest_ai.c b/src/contest_ai.c index e570dbafb..a6dde8afe 100644 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -1115,7 +1115,7 @@ static void ContestAICmd_check_would_finish_combo(void) if(sContestantStatus[eContestAI->unk41].prevMove) result = AreMovesContestCombo(sContestantStatus[eContestAI->unk41].prevMove, move); - + if(result) result = 1; @@ -1723,7 +1723,7 @@ static void ContestAICmd_unk_85(void) int result = 0; int i; u16 arg = T1_READ_16(gAIScriptPtr + 1); - + for(i = 0; i < 4; i++) { u16 move = gContestMons[eContestAI->unk41].moves[i]; diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index f914163b2..e24868787 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -1,5 +1,6 @@ #include "global.h" #include "matsuda_debug_menu.h" +#include "battle.h" #include "contest.h" #include "contest_link_80C2020.h" #include "contest_link_80C857C.h" @@ -22,15 +23,6 @@ extern u8 gUnknown_02038694; extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG1_X; -extern u16 gBattle_BG1_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG3_X; -extern u16 gBattle_BG3_Y; - extern u8 (*gMenuCallback)(void); static bool8 sub_80A9B78(void); diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 182f85d8d..a855efb1b 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -65,14 +65,6 @@ void nullsub_6(void); bool32 IsHMMove2(u16 move); extern struct Window gUnknown_03004210; -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG1_X; -extern u16 gBattle_BG1_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG3_X; -extern u16 gBattle_BG3_Y; extern u8 gBattleTerrain; extern u8 gReservedSpritePaletteCount; extern u16 gMoveToLearn; diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index 43ad39e6f..6a7ee69b3 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -8,6 +8,8 @@ #include "strings2.h" #include "text.h" +const u16 Unknown_083D17EC[] = INCBIN_U16("graphics/unknown/unknown_3D17EC.gbapal"); + struct UnknownStruct { u16 unk0; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 7fc422125..aabacbe2f 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -123,12 +123,6 @@ extern u8 StorageSystemGetNextMonIndex(struct BoxPokemon *, u8, u8, u8); extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gUnknown_08208238[]; -extern u16 gBattle_BG3_Y; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG1_Y; -extern u16 gBattle_BG1_X; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG3_X; extern TaskFunc gUnknown_03005CF0; extern struct SpriteTemplate gUnknown_02024E8C; @@ -1,6 +1,7 @@ #include "global.h" #include "tv.h" #include "battle_tower.h" +#include "contest.h" #include "contest_painting.h" #include "data2.h" #include "easy_chat.h" @@ -68,10 +69,9 @@ struct UnkTvStruct gUnknown_03005D38; extern u16 gSpecialVar_LastTalked; -extern u8 gSpecialVar_ContestCategory; -extern u8 gSpecialVar_ContestRank; +extern u16 gSpecialVar_ContestCategory; +extern u16 gSpecialVar_ContestRank; extern u8 gBattleOutcome; - extern u16 gLastUsedItem; static EWRAM_DATA u16 gUnknown_020387E0 = 0; @@ -444,9 +444,6 @@ void ClearTVShowData(void) bool8 sub_80BF1B4(u8); void sub_80BF20C(void); -extern u8 gSpecialVar_ContestCategory; -extern u8 gSpecialVar_ContestRank; -extern u8 gBattleOutcome; void InterviewBefore_FanClubLetter(void); void InterviewBefore_RecentHappenings(void); @@ -456,21 +453,9 @@ void InterviewBefore_NameRater(void); void InterviewBefore_BravoTrainerPkmnProfile(void); void InterviewBefore_BravoTrainerBTProfile(void); -void sub_80BE028(void); -void sub_80BE074(void); -void sub_80BE778(void); -void sub_80BEB20(void); u8 GetTVChannelByShowType(u8); -s8 sub_80BF74C(TVShow tvShow[]); - -void sub_80BF55C(TVShow tvShow[], u8 showidx); -void sub_80BEA88(void); - -void sub_80BE138(TVShow *show); -void sub_80BE160(TVShow *show); -extern u16 gLastUsedItem; void InterviewAfter_FanClubLetter(void); void InterviewAfter_RecentHappenings(void); @@ -980,16 +965,16 @@ void sub_80BE23C(u16 a0) } } -void sub_80BE284(u8 a0) +void sub_80BE284(u8 contestResult) { struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer; gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1) { - bravoTrainer->contestResult = a0; + bravoTrainer->contestResult = contestResult; bravoTrainer->contestCategory = gSpecialVar_ContestCategory; - bravoTrainer->contestRank = gSpecialVar_ContestRank; + bravoTrainer->contestRank = (u8)gSpecialVar_ContestRank; bravoTrainer->species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, bravoTrainer->pokemonNickname); } |