diff options
-rw-r--r-- | asm/contest.s | 1389 | ||||
-rw-r--r-- | include/contest.h | 35 | ||||
-rw-r--r-- | include/tv.h | 1 | ||||
-rw-r--r-- | src/contest.c | 497 | ||||
-rw-r--r-- | src/debug/matsuda_debug_menu.c | 2 |
5 files changed, 504 insertions, 1420 deletions
diff --git a/asm/contest.s b/asm/contest.s index 2f363644f..8881ff714 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -5,1395 +5,6 @@ .text - thumb_func_start sub_80AD8DC -sub_80AD8DC: @ 80AD8DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080AD8F8 @ =gSharedMem + 0x19204 - ldrb r2, [r3, 0x7] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r3, 0x7] - bl DestroyTask - pop {r0} - bx r0 - .align 2, 0 -_080AD8F8: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80AD8DC - - thumb_func_start sub_80AD8FC -sub_80AD8FC: @ 80AD8FC - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x24] - movs r3, 0x24 - ldrsh r2, [r1, r3] - cmp r2, 0 - beq _080AD910 - subs r0, 0x2 - strh r0, [r1, 0x24] - b _080AD924 -_080AD910: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _080AD924 - strh r2, [r1, 0x2E] - ldr r0, _080AD928 @ =SpriteCallbackDummy - str r0, [r1, 0x1C] -_080AD924: - pop {r0} - bx r0 - .align 2, 0 -_080AD928: .4byte SpriteCallbackDummy - thumb_func_end sub_80AD8FC - - thumb_func_start sub_80AD92C -sub_80AD92C: @ 80AD92C - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x24] - subs r0, 0x6 - strh r0, [r2, 0x24] - movs r1, 0x20 - ldrsh r0, [r2, r1] - movs r3, 0x24 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bge _080AD956 - ldr r0, _080AD95C @ =SpriteCallbackDummy - str r0, [r2, 0x1C] - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080AD956: - pop {r0} - bx r0 - .align 2, 0 -_080AD95C: .4byte SpriteCallbackDummy - thumb_func_end sub_80AD92C - - thumb_func_start sub_80AD960 -sub_80AD960: @ 80AD960 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AD984 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _080AD9F2 - cmp r0, 0x1 - bgt _080AD988 - cmp r0, 0 - beq _080AD98E - b _080ADA10 - .align 2, 0 -_080AD984: .4byte gTasks -_080AD988: - cmp r0, 0x2 - beq _080ADA08 - b _080ADA10 -_080AD98E: - ldr r0, _080AD9D8 @ =gIsLinkContest - ldrb r1, [r0] - movs r6, 0x1 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _080AD9E8 - ldr r2, _080AD9DC @ =gSharedMem + 0x19204 - ldrb r0, [r2, 0x7] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x7] - bl sub_80AE074 - lsls r0, 24 - cmp r0, 0 - beq _080AD9B8 - bl sub_80AF2FC - bl sub_80AF3C0 -_080AD9B8: - ldr r4, _080AD9E0 @ =sub_80C8C80 - adds r0, r4, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080AD9E4 @ =sub_80AD8DC - adds r1, r4, 0 - bl SetTaskFuncWithFollowupFunc - bl sub_80AF860 - strh r6, [r5, 0x8] - b _080ADA10 - .align 2, 0 -_080AD9D8: .4byte gIsLinkContest -_080AD9DC: .4byte gSharedMem + 0x19204 -_080AD9E0: .4byte sub_80C8C80 -_080AD9E4: .4byte sub_80AD8DC -_080AD9E8: - bl sub_80AF2FC - bl sub_80AF3C0 - b _080AD9FE -_080AD9F2: - ldr r0, _080ADA04 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x7] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080ADA10 -_080AD9FE: - movs r0, 0x2 - strh r0, [r5, 0x8] - b _080ADA10 - .align 2, 0 -_080ADA04: .4byte gSharedMem + 0x19204 -_080ADA08: - movs r0, 0 - strh r0, [r5, 0x8] - ldr r0, _080ADA18 @ =sub_80ADA1C - str r0, [r5] -_080ADA10: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080ADA18: .4byte sub_80ADA1C - thumb_func_end sub_80AD960 - - thumb_func_start sub_80ADA1C -sub_80ADA1C: @ 80ADA1C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - bl sub_80B1FD0 - ldr r1, _080ADA44 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - ldr r1, _080ADA48 @ =sub_80ADA4C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADA44: .4byte gTasks -_080ADA48: .4byte sub_80ADA4C - thumb_func_end sub_80ADA1C - - thumb_func_start sub_80ADA4C -sub_80ADA4C: @ 80ADA4C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADA70 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080ADA92 - cmp r5, 0x1 - bgt _080ADA74 - cmp r5, 0 - beq _080ADA7A - b _080ADACE - .align 2, 0 -_080ADA70: .4byte gTasks -_080ADA74: - cmp r5, 0x2 - beq _080ADAC0 - b _080ADACE -_080ADA7A: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080ADACE - movs r0, 0x2 - bl sub_80B25E4 - strh r5, [r4, 0xA] - b _080ADAB2 -_080ADA92: - ldr r0, _080ADABC @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x7] - movs r0, 0x2 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080ADACE - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080ADACE - strh r1, [r4, 0xA] -_080ADAB2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080ADACE - .align 2, 0 -_080ADABC: .4byte gSharedMem + 0x19204 -_080ADAC0: - bl sub_80AFF10 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - ldr r0, _080ADAD4 @ =sub_80ADAD8 - str r0, [r4] -_080ADACE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ADAD4: .4byte sub_80ADAD8 - thumb_func_end sub_80ADA4C - - thumb_func_start sub_80ADAD8 -sub_80ADAD8: @ 80ADAD8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80AFF28 - lsls r0, 24 - cmp r0, 0 - beq _080ADAF6 - ldr r0, _080ADAFC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ADB00 @ =sub_80ADB04 - str r0, [r1] -_080ADAF6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADAFC: .4byte gTasks -_080ADB00: .4byte sub_80ADB04 - thumb_func_end sub_80ADAD8 - - thumb_func_start sub_80ADB04 -sub_80ADB04: @ 80ADB04 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADB30 @ =gSharedMem + 0x18204 - ldr r3, _080ADB34 @ =gPlttBufferUnfaded - ldr r1, _080ADB38 @ =0x040000d4 - str r2, [r1] - str r3, [r1, 0x4] - ldr r2, _080ADB3C @ =0x84000100 - str r2, [r1, 0x8] - ldr r1, [r1, 0x8] - ldr r2, _080ADB40 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - movs r0, 0x2 - strh r0, [r1, 0xA] - ldr r0, _080ADB44 @ =sub_80ADB48 - str r0, [r1] - bx lr - .align 2, 0 -_080ADB30: .4byte gSharedMem + 0x18204 -_080ADB34: .4byte gPlttBufferUnfaded -_080ADB38: .4byte 0x040000d4 -_080ADB3C: .4byte 0x84000100 -_080ADB40: .4byte gTasks -_080ADB44: .4byte sub_80ADB48 - thumb_func_end sub_80ADB04 - - thumb_func_start sub_80ADB48 -sub_80ADB48: @ 80ADB48 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADB80 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080ADB7A - movs r0, 0 - strh r0, [r1, 0x8] - ldrh r0, [r1, 0xA] - subs r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - cmp r0, 0 - bne _080ADB7A - ldr r0, _080ADB84 @ =sub_80ADB88 - str r0, [r1] -_080ADB7A: - pop {r0} - bx r0 - .align 2, 0 -_080ADB80: .4byte gTasks -_080ADB84: .4byte sub_80ADB88 - thumb_func_end sub_80ADB48 - - thumb_func_start sub_80ADB88 -sub_80ADB88: @ 80ADB88 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _080ADBEC @ =gContestPlayerMonIndex - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _080ADBF0 @ =gSharedMem + 0x19260 - adds r0, r1 - ldrb r4, [r0, 0x1A] - bl sub_80AF138 - ldr r0, _080ADBF4 @ =gStringVar1 - ldrb r1, [r6] - lsls r1, 6 - ldr r2, _080ADBF8 @ =gContestMons + 0x2 - adds r1, r2 - bl StringCopy - ldr r6, _080ADBFC @ =gStringVar4 - ldr r0, _080ADC00 @ =gUnknown_083CB2F0 - lsls r4, 2 - adds r4, r0 - ldr r1, [r4] - adds r0, r6, 0 - bl StringExpandPlaceholders - ldr r0, _080ADC04 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r6, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080ADC08 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ADC0C @ =sub_80ADC10 - str r1, [r0] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080ADBEC: .4byte gContestPlayerMonIndex -_080ADBF0: .4byte gSharedMem + 0x19260 -_080ADBF4: .4byte gStringVar1 -_080ADBF8: .4byte gContestMons + 0x2 -_080ADBFC: .4byte gStringVar4 -_080ADC00: .4byte gUnknown_083CB2F0 -_080ADC04: .4byte gMenuWindow -_080ADC08: .4byte gTasks -_080ADC0C: .4byte sub_80ADC10 - thumb_func_end sub_80ADB88 - - thumb_func_start sub_80ADC10 -sub_80ADC10: @ 80ADC10 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080ADC40 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080ADC3A - ldr r1, _080ADC44 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - ldr r1, _080ADC48 @ =sub_80ADC4C - str r1, [r0] - bl sub_80B0D7C -_080ADC3A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADC40: .4byte gMenuWindow -_080ADC44: .4byte gTasks -_080ADC48: .4byte sub_80ADC4C - thumb_func_end sub_80ADC10 - - thumb_func_start sub_80ADC4C -sub_80ADC4C: @ 80ADC4C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADC7C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1D - ble _080ADC76 - movs r0, 0 - strh r0, [r4, 0x8] - bl sub_80AFF10 - ldr r0, _080ADC80 @ =sub_80ADC84 - str r0, [r4] -_080ADC76: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADC7C: .4byte gTasks -_080ADC80: .4byte sub_80ADC84 - thumb_func_end sub_80ADC4C - - thumb_func_start sub_80ADC84 -sub_80ADC84: @ 80ADC84 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80AFF28 - lsls r0, 24 - cmp r0, 0 - beq _080ADCA6 - ldr r1, _080ADCAC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - ldr r1, _080ADCB0 @ =sub_80ADCB4 - str r1, [r0] -_080ADCA6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADCAC: .4byte gTasks -_080ADCB0: .4byte sub_80ADCB4 - thumb_func_end sub_80ADC84 - - thumb_func_start sub_80ADCB4 -sub_80ADCB4: @ 80ADCB4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80B2184 - ldr r1, _080ADCD4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ADCD8 @ =sub_80B237C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADCD4: .4byte gTasks -_080ADCD8: .4byte sub_80B237C - thumb_func_end sub_80ADCB4 - - thumb_func_start sub_80ADCDC -sub_80ADCDC: @ 80ADCDC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80B2280 - ldr r1, _080ADCFC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ADD00 @ =sub_80ADD04 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADCFC: .4byte gTasks -_080ADD00: .4byte sub_80ADD04 - thumb_func_end sub_80ADCDC - - thumb_func_start sub_80ADD04 -sub_80ADD04: @ 80ADD04 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, _080ADD40 @ =REG_BG0CNT - ldrb r2, [r3] - movs r1, 0x4 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3] - ldr r2, _080ADD44 @ =REG_BG2CNT - ldrb r0, [r2] - ands r1, r0 - strb r1, [r2] - ldr r1, _080ADD48 @ =gSharedMem + 0x19204 - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _080ADD54 - ldr r0, _080ADD4C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ADD50 @ =sub_80ADDA4 - b _080ADD64 - .align 2, 0 -_080ADD40: .4byte REG_BG0CNT -_080ADD44: .4byte REG_BG2CNT -_080ADD48: .4byte gSharedMem + 0x19204 -_080ADD4C: .4byte gTasks -_080ADD50: .4byte sub_80ADDA4 -_080ADD54: - bl sub_80B1B14 - ldr r0, _080ADD6C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ADD70 @ =sub_80ADD74 -_080ADD64: - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADD6C: .4byte gTasks -_080ADD70: .4byte sub_80ADD74 - thumb_func_end sub_80ADD04 - - thumb_func_start sub_80ADD74 -sub_80ADD74: @ 80ADD74 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080ADD98 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x6] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080ADD94 - ldr r0, _080ADD9C @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ADDA0 @ =sub_80ABB70 - str r0, [r1] -_080ADD94: - pop {r0} - bx r0 - .align 2, 0 -_080ADD98: .4byte gSharedMem + 0x19204 -_080ADD9C: .4byte gTasks -_080ADDA0: .4byte sub_80ABB70 - thumb_func_end sub_80ADD74 - - thumb_func_start sub_80ADDA4 -sub_80ADDA4: @ 80ADDA4 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080ADE24 @ =gUnknown_030042A0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080ADE28 @ =gUnknown_03004280 - strh r1, [r0] - ldr r3, _080ADE2C @ =gSharedMem + 0x19260 - ldr r2, _080ADE30 @ =gUnknown_02038680 - movs r1, 0x3 -_080ADDBC: - ldrh r0, [r3, 0x4] - strh r0, [r2] - adds r3, 0x1C - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080ADDBC - movs r5, 0 - bl sub_80AF668 - bl sub_80AF138 - ldr r0, _080ADE34 @ =gContestPlayerMonIndex - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _080ADE2C @ =gSharedMem + 0x19260 - adds r0, r1 - ldrh r0, [r0, 0x8] - bl sub_80BE23C - ldr r1, _080ADE38 @ =gUnknown_03005D28 - ldr r0, _080ADE3C @ =gRngValue - ldr r0, [r0] - str r0, [r1] - ldr r4, _080ADE40 @ =gStringVar4 - ldr r1, _080ADE44 @ =gUnknown_083CB02C - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r0, _080ADE48 @ =gMenuWindow - movs r2, 0xC2 - lsls r2, 2 - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8002EB0 - ldr r1, _080ADE4C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0xC] - ldr r1, _080ADE50 @ =sub_80ADE54 - str r1, [r0] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080ADE24: .4byte gUnknown_030042A0 -_080ADE28: .4byte gUnknown_03004280 -_080ADE2C: .4byte gSharedMem + 0x19260 -_080ADE30: .4byte gUnknown_02038680 -_080ADE34: .4byte gContestPlayerMonIndex -_080ADE38: .4byte gUnknown_03005D28 -_080ADE3C: .4byte gRngValue -_080ADE40: .4byte gStringVar4 -_080ADE44: .4byte gUnknown_083CB02C -_080ADE48: .4byte gMenuWindow -_080ADE4C: .4byte gTasks -_080ADE50: .4byte sub_80ADE54 - thumb_func_end sub_80ADDA4 - - thumb_func_start sub_80ADE54 -sub_80ADE54: @ 80ADE54 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080ADE98 @ =gMenuWindow - bl sub_80037A0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080ADE92 - bl sub_80B2184 - ldr r1, _080ADE9C @ =gUnknown_030042C0 - movs r0, 0 - strh r0, [r1] - ldr r1, _080ADEA0 @ =gUnknown_030041B4 - movs r0, 0xA0 - strh r0, [r1] - movs r0, 0x62 - movs r1, 0 - bl PlaySE12WithPanning - ldr r1, _080ADEA4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - ldr r1, _080ADEA8 @ =sub_80ADEAC - str r1, [r0] -_080ADE92: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADE98: .4byte gMenuWindow -_080ADE9C: .4byte gUnknown_030042C0 -_080ADEA0: .4byte gUnknown_030041B4 -_080ADEA4: .4byte gTasks -_080ADEA8: .4byte sub_80ADEAC - thumb_func_end sub_80ADE54 - - thumb_func_start sub_80ADEAC -sub_80ADEAC: @ 80ADEAC - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _080ADEE0 @ =gUnknown_030041B4 - ldrh r0, [r1] - subs r0, 0x7 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bge _080ADEC4 - movs r0, 0 - strh r0, [r1] -_080ADEC4: - ldrh r2, [r1] - cmp r2, 0 - bne _080ADEDA - ldr r0, _080ADEE4 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - ldr r0, _080ADEE8 @ =sub_80ADEEC - str r0, [r1] - strh r2, [r1, 0x8] -_080ADEDA: - pop {r0} - bx r0 - .align 2, 0 -_080ADEE0: .4byte gUnknown_030041B4 -_080ADEE4: .4byte gTasks -_080ADEE8: .4byte sub_80ADEEC - thumb_func_end sub_80ADEAC - - thumb_func_start sub_80ADEEC -sub_80ADEEC: @ 80ADEEC - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADF20 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x31 - ble _080ADF40 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, _080ADF24 @ =gIsLinkContest - ldrb r0, [r0] - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080ADF2C - ldr r0, _080ADF28 @ =sub_80ADF4C - b _080ADF3E - .align 2, 0 -_080ADF20: .4byte gTasks -_080ADF24: .4byte gIsLinkContest -_080ADF28: .4byte sub_80ADF4C -_080ADF2C: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080ADF48 @ =sub_80ADFD8 -_080ADF3E: - str r0, [r4] -_080ADF40: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ADF48: .4byte sub_80ADFD8 - thumb_func_end sub_80ADEEC - - thumb_func_start sub_80ADF4C -sub_80ADF4C: @ 80ADF4C - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _080ADF88 @ =sub_80C8AD0 - adds r0, r5, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ADF8C @ =sub_80ADF98 - adds r1, r5, 0 - bl SetTaskFuncWithFollowupFunc - ldr r1, _080ADF90 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080ADF94 @ =nullsub_89 - str r1, [r0] - bl sub_80AF860 - movs r0, 0 - bl sub_80AFFE0 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ADF88: .4byte sub_80C8AD0 -_080ADF8C: .4byte sub_80ADF98 -_080ADF90: .4byte gTasks -_080ADF94: .4byte nullsub_89 - thumb_func_end sub_80ADF4C - - thumb_func_start sub_80ADF98 -sub_80ADF98: @ 80ADF98 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r2, _080ADFCC @ =gTasks - ldr r0, _080ADFD0 @ =gSharedMem + 0x19204 - ldrb r1, [r0, 0x8] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _080ADFD4 @ =sub_80ADFD8 - str r1, [r0] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080ADFCC: .4byte gTasks -_080ADFD0: .4byte gSharedMem + 0x19204 -_080ADFD4: .4byte sub_80ADFD8 - thumb_func_end sub_80ADF98 - - thumb_func_start sub_80ADFD8 -sub_80ADFD8: @ 80ADFD8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080AE000 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080ADFFC - adds r0, r2, 0 - bl DestroyTask - ldr r0, _080AE004 @ =gFieldCallback - ldr r1, _080AE008 @ =sub_80AE010 - str r1, [r0] - ldr r0, _080AE00C @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 -_080ADFFC: - pop {r0} - bx r0 - .align 2, 0 -_080AE000: .4byte gPaletteFade -_080AE004: .4byte gFieldCallback -_080AE008: .4byte sub_80AE010 -_080AE00C: .4byte c2_exit_to_overworld_2_switch - thumb_func_end sub_80ADFD8 - - thumb_func_start sub_80AE010 -sub_80AE010: @ 80AE010 - push {lr} - bl ScriptContext2_Disable - bl EnableBothScriptContexts - pop {r0} - bx r0 - thumb_func_end sub_80AE010 - - thumb_func_start sub_80AE020 -sub_80AE020: @ 80AE020 - push {r4,lr} - adds r4, r0, 0 - b _080AE028 -_080AE026: - adds r4, 0x1 -_080AE028: - ldrb r0, [r4] - cmp r0, 0xFF - beq _080AE04C - cmp r0, 0xFC - bne _080AE026 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _080AE026 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - movs r1, 0xFF - strb r1, [r0] - adds r1, r4, 0x2 - bl StringAppend -_080AE04C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AE020 - - thumb_func_start sub_80AE054 -sub_80AE054: @ 80AE054 - push {lr} - ldr r0, _080AE06C @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080AE068 - ldr r1, _080AE070 @ =gContestPlayerMonIndex - movs r0, 0x3 - strb r0, [r1] -_080AE068: - pop {r0} - bx r0 - .align 2, 0 -_080AE06C: .4byte gIsLinkContest -_080AE070: .4byte gContestPlayerMonIndex - thumb_func_end sub_80AE054 - - thumb_func_start sub_80AE074 -sub_80AE074: @ 80AE074 - push {lr} - ldr r0, _080AE088 @ =gContestPlayerMonIndex - ldr r1, _080AE08C @ =gUnknown_0203869B - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - beq _080AE090 - movs r0, 0 - b _080AE092 - .align 2, 0 -_080AE088: .4byte gContestPlayerMonIndex -_080AE08C: .4byte gUnknown_0203869B -_080AE090: - movs r0, 0x1 -_080AE092: - pop {r1} - bx r1 - thumb_func_end sub_80AE074 - - thumb_func_start sub_80AE098 -sub_80AE098: @ 80AE098 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r6, _080AE0F0 @ =gSaveBlock2 - mov r0, sp - adds r1, r6, 0 - bl StringCopy - mov r0, sp - bl StripExtCtrlCodes - ldr r0, _080AE0F4 @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AE0CE - mov r0, sp - ldrb r2, [r0, 0x5] - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x5] - mov r0, sp - strb r2, [r0, 0x7] -_080AE0CE: - ldr r5, _080AE0F8 @ =gContestPlayerMonIndex - ldrb r0, [r5] - lsls r0, 6 - ldr r4, _080AE0FC @ =gUnknown_0203857D - adds r0, r4 - mov r1, sp - movs r2, 0x8 - bl memcpy - ldrb r0, [r6, 0x8] - cmp r0, 0 - bne _080AE100 - ldrb r0, [r5] - lsls r0, 6 - adds r0, r4, r0 - movs r1, 0xD8 - b _080AE108 - .align 2, 0 -_080AE0F0: .4byte gSaveBlock2 -_080AE0F4: .4byte gIsLinkContest -_080AE0F8: .4byte gContestPlayerMonIndex -_080AE0FC: .4byte gUnknown_0203857D -_080AE100: - ldrb r0, [r5] - lsls r0, 6 - adds r0, r4, r0 - movs r1, 0xD9 -_080AE108: - strb r1, [r0, 0x8] - ldr r5, _080AE17C @ =gContestMons - ldr r4, _080AE180 @ =gContestPlayerMonIndex - ldrb r0, [r4] - lsls r0, 6 - adds r1, r5, 0 - adds r1, 0x18 - adds r0, r1 - movs r1, 0 - str r1, [r0] - ldrb r0, [r4] - lsls r0, 6 - adds r0, r5 - adds r0, 0x2C - strb r1, [r0] - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _080AE184 @ =gPlayerParty - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - ldrb r1, [r4] - lsls r1, 6 - adds r1, r5 - strh r0, [r1] - adds r0, r6, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - bl StringGetEnd10 - ldr r0, _080AE188 @ =gIsLinkContest - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080AE19A - mov r0, sp - bl StripExtCtrlCodes - adds r0, r6, 0 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - bne _080AE18C - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x5] - movs r0, 0xFC - strb r0, [r1, 0xA] - b _080AE19A - .align 2, 0 -_080AE17C: .4byte gContestMons -_080AE180: .4byte gContestPlayerMonIndex -_080AE184: .4byte gPlayerParty -_080AE188: .4byte gIsLinkContest -_080AE18C: - mov r0, sp - ldrb r2, [r0, 0x5] - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x5] - mov r0, sp - strb r2, [r0, 0xA] -_080AE19A: - ldr r5, _080AE2C4 @ =gContestPlayerMonIndex - ldrb r0, [r5] - lsls r0, 6 - ldr r1, _080AE2C8 @ =gContestMons + 0x2 - mov r8, r1 - add r0, r8 - mov r1, sp - movs r2, 0xB - bl memcpy - movs r0, 0x64 - adds r4, r7, 0 - muls r4, r0 - ldr r0, _080AE2CC @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x16 - bl GetMonData - mov r6, r8 - subs r6, 0x2 - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x26 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x17 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x18 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x28 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x21 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x29 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2F - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x2A - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x30 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - adds r1, 0x2B - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0xD - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - strh r0, [r1, 0x1E] - adds r0, r4, 0 - movs r1, 0xE - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - strh r0, [r1, 0x20] - adds r0, r4, 0 - movs r1, 0xF - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - strh r0, [r1, 0x22] - adds r0, r4, 0 - movs r1, 0x10 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - adds r1, r6 - strh r0, [r1, 0x24] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - mov r2, r8 - adds r2, 0x36 - adds r1, r2 - str r0, [r1] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - ldrb r1, [r5] - lsls r1, 6 - movs r2, 0x3A - add r8, r2 - add r1, r8 - str r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r2, r0, 16 - mov r8, r2 - ldrb r0, [r5] - lsls r0, 6 - adds r1, r0, r6 - adds r0, r1, 0 - adds r0, 0x26 - ldrb r3, [r0] - adds r0, 0x1 - ldrb r4, [r0] - adds r0, 0x1 - ldrb r5, [r0] - adds r0, 0x1 - ldrb r6, [r0] - adds r0, 0x1 - ldrb r7, [r0] - cmp r2, 0xFE - bne _080AE2D0 - adds r3, 0x14 - b _080AE31E - .align 2, 0 -_080AE2C4: .4byte gContestPlayerMonIndex -_080AE2C8: .4byte gContestMons + 0x2 -_080AE2CC: .4byte gPlayerParty -_080AE2D0: - cmp r2, 0xFF - bne _080AE2E0 - lsls r0, r4, 16 - movs r1, 0xA0 - lsls r1, 13 - adds r0, r1 - lsrs r4, r0, 16 - b _080AE31E -_080AE2E0: - movs r0, 0x80 - lsls r0, 1 - cmp r2, r0 - bne _080AE2F4 - lsls r0, r5, 16 - movs r2, 0xA0 - lsls r2, 13 - adds r0, r2 - lsrs r5, r0, 16 - b _080AE31E -_080AE2F4: - ldr r0, _080AE308 @ =0x00000101 - cmp r2, r0 - bne _080AE30C - lsls r0, r6, 16 - movs r1, 0xA0 - lsls r1, 13 - adds r0, r1 - lsrs r6, r0, 16 - b _080AE31E - .align 2, 0 -_080AE308: .4byte 0x00000101 -_080AE30C: - movs r0, 0x81 - lsls r0, 1 - cmp r8, r0 - bne _080AE31E - lsls r0, r7, 16 - movs r2, 0xA0 - lsls r2, 13 - adds r0, r2 - lsrs r7, r0, 16 -_080AE31E: - cmp r3, 0xFF - ble _080AE324 - movs r3, 0xFF -_080AE324: - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080AE32E - movs r4, 0xFF -_080AE32E: - lsls r0, r5, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080AE338 - movs r5, 0xFF -_080AE338: - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080AE342 - movs r6, 0xFF -_080AE342: - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080AE34C - movs r7, 0xFF -_080AE34C: - ldr r2, _080AE390 @ =gContestMons - ldr r1, _080AE394 @ =gContestPlayerMonIndex - ldrb r0, [r1] - lsls r0, 6 - adds r0, r2 - adds r0, 0x26 - strb r3, [r0] - ldrb r0, [r1] - lsls r0, 6 - adds r0, r2 - adds r0, 0x27 - strb r4, [r0] - ldrb r0, [r1] - lsls r0, 6 - adds r0, r2 - adds r0, 0x28 - strb r5, [r0] - ldrb r0, [r1] - lsls r0, 6 - adds r0, r2 - adds r0, 0x29 - strb r6, [r0] - ldrb r0, [r1] - lsls r0, 6 - adds r0, r2 - adds r0, 0x2A - strb r7, [r0] - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AE390: .4byte gContestMons -_080AE394: .4byte gContestPlayerMonIndex - thumb_func_end sub_80AE098 - thumb_func_start sub_80AE398 sub_80AE398: @ 80AE398 push {r4-r7,lr} diff --git a/include/contest.h b/include/contest.h index 06c356c2f..0203f7dd0 100644 --- a/include/contest.h +++ b/include/contest.h @@ -18,22 +18,25 @@ struct ContestEffect struct ContestPokemon { - /* 0x00 */ u16 species; - /* 0x02 */ u8 nickname[POKEMON_NAME_LENGTH]; - /* 0x0D */ u8 trainerName[8]; - /* 0x15 */ u8 unk15; - /* 0x16 */ u8 unk16; - /* 0x17 */ u8 filler17[7]; - /* 0x1E */ u16 moves[4]; // moves - /* 0x26 */ u8 cool; // cool - /* 0x27 */ u8 beauty; // beauty - /* 0x28 */ u8 cute; // cute - /* 0x29 */ u8 smart; // smart - /* 0x2A */ u8 tough; // tough - /* 0x2B */ u8 sheen; // sheen - /* 0x2C */ u8 filler2C[12]; - /* 0x38 */ u32 unk38; - /* 0x3C */ u32 unk3C; + /*0x00*/ u16 species; + /*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x0D*/ u8 trainerName[8]; + /*0x15*/ u8 unk15; + /*0x16*/ u8 unk16; + /*0x17*/ u8 filler17; + /*0x18*/ u32 unk18; + /*0x1C*/ u8 filler1C[2]; + /*0x1E*/ u16 moves[4]; // moves + /*0x26*/ u8 cool; // cool + /*0x27*/ u8 beauty; // beauty + /*0x28*/ u8 cute; // cute + /*0x29*/ u8 smart; // smart + /*0x2A*/ u8 tough; // tough + /*0x2B*/ u8 sheen; // sheen + /*0x2C*/ u8 unk2C; + /*0x2D*/ u8 unk2D[11]; + /*0x38*/ u32 personality; // personality + /*0x3C*/ u32 otId; // otId }; // wow extern struct ContestPokemon gContestMons[]; diff --git a/include/tv.h b/include/tv.h index 0f355043c..c2158ece0 100644 --- a/include/tv.h +++ b/include/tv.h @@ -26,6 +26,7 @@ void sub_80BE138(TVShow *show); void sub_80BE160(TVShow *show); void sub_80BE160(TVShow *); void sub_80BE188(void); +void sub_80BE23C(u16); void sub_80BE320(void); void StartMassOutbreak(void); void sub_80BE5FC(void); diff --git a/src/contest.c b/src/contest.c index e4c68b11a..2159ec68f 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/items.h" #include "constants/songs.h" #include "battle_anim.h" #include "contest.h" @@ -11,17 +12,21 @@ #include "main.h" #include "menu.h" #include "menu_cursor.h" +#include "overworld.h" #include "palette.h" #include "random.h" +#include "script.h" #include "sound.h" #include "sprite.h" #include "string_util.h" #include "task.h" #include "text.h" +#include "tv.h" #include "unknown_task.h" extern bool8 AreMovesContestCombo(u16, u16); extern void sub_80C8A38(u8); +extern void sub_80C8AD0(u8); extern void sub_80C8C80(u8); struct Shared18000 @@ -39,14 +44,14 @@ struct Shared19204 /*0x19204*/ u8 unk19204; /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; -#if 0 - /*0x1920A*/ u16 unk1920A_0:4; +#if 1 + /*0x1920A*/ u16 unk1920A_0:4; // probably a bitfield u16 unk1920A_4:1; u16 unk1920A_5:1; u16 unk1920A_6:1; u16 unk1920A_7:2; u16 unk1920B_1:1; - u16 unk1920B_2:1; + u16 unk1920B_2:1; // definitely a bitfield #else /*0x1920A*/ u8 unk1920A; /*0x1920B*/ u8 unk1920B; @@ -69,7 +74,7 @@ struct UnknownContestStruct1 { u8 filler0[2]; u16 unk2; // s16? - u8 filler4[2]; + u16 unk4; u16 unk6; // move u16 unk8; u8 unkA; // contest category @@ -103,7 +108,8 @@ struct UnknownContestStruct1 u8 unk17; u8 unk18; u8 unk19; - u8 filler1A[0x1C-0x1A]; + u8 unk1A; + u8 filler1B; }; struct UnknownContestStruct3 @@ -181,13 +187,18 @@ extern u16 gUnknown_030042A4; extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; extern u32 gUnknown_03005D28; + +extern u16 gUnknown_02038680[]; extern u8 gUnknown_02038696[]; +extern u8 gUnknown_0203869B; extern const u8 gUnknown_083CAF84[]; extern const u8 gUnknown_083CAFAE[]; extern const struct ContestMove gContestMoves[]; extern const u8 gUnknownText_UnknownFormatting2[]; extern const u8 gUnknownText_UnknownFormatting3[]; +extern const u8 gUnknown_083CB02C[]; +extern const u8 *const gUnknown_083CB2F0[]; void sub_80AB350(void); void sub_80AB5D4(u8); @@ -218,8 +229,28 @@ void sub_80AD8DC(u8); void sub_80AD8FC(struct Sprite *); void sub_80AD92C(struct Sprite *); void sub_80AD960(u8); -void sub_80AE020(); -u8 sub_80AE074(void); +void sub_80ADA1C(u8); +void sub_80ADA4C(u8); +void sub_80ADAD8(u8); +void sub_80ADB04(u8); +void sub_80ADB48(u8); +void sub_80ADB88(u8); +void sub_80ADC10(u8); +void sub_80ADC4C(u8); +void sub_80ADC84(u8); +void sub_80ADCB4(u8); +void sub_80ADD04(u8); +void sub_80ADD74(u8); +void sub_80ADDA4(u8); +void sub_80ADE54(u8); +void sub_80ADEAC(u8); +void sub_80ADEEC(u8); +void sub_80ADF4C(u8); +void sub_80ADF98(u8); +void sub_80ADFD8(u8); +void sub_80AE010(void); +void sub_80AE020(u8 *, s32); +bool8 sub_80AE074(void); u8 sub_80AE858(void); u8 sub_80AE8B4(void); u8 sub_80AE9FC(); @@ -232,11 +263,15 @@ void sub_80AF120(void); void sub_80AF138(void); u16 sub_80AF15C(u8); void sub_80AF1B8(void); +void sub_80AF2FC(void); +void sub_80AF3C0(void); u8 sub_80AF59C(u8); void sub_80AF860(void); void sub_80AFA5C(void); void sub_80AFBA0(s16, s16, u8); void sub_80AFE30(void); +void sub_80AFF10(void); +u8 sub_80AFF28(void); void sub_80AFFE0(u8); void sub_80B0034(void); void sub_80B00C8(void); @@ -265,6 +300,7 @@ void sub_80B20C4(void); u8 sub_80B214C(u8); void sub_80B2184(void); void sub_80B2280(void); +void sub_80B237C(u8); void sub_80B25E4(); u16 sub_80B2760(); void sub_80B2790(); @@ -732,8 +768,8 @@ void sub_80AB9A0(u8 taskId) break; case 4: default: - //if (shared19204.unk1920A_6) - if (shared19204.unk1920A & 0x40) + if (shared19204.unk1920A_6) + //if (shared19204.unk1920A & 0x40) break; gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; @@ -1234,8 +1270,8 @@ void sub_80AC204(u8 taskId) void sub_80AC250(u8 taskId) { - //if (!shared19204.unk1920A_6 && !shared19204.unk1920B_1) - if (!(shared19204.unk1920A & 0x40) && !(shared19204.unk1920B & 2)) + if (!shared19204.unk1920A_6 && !shared19204.unk1920B_1) + //if (!(shared19204.unk1920A & 0x40) && !(shared19204.unk1920B & 2)) gTasks[taskId].func = sub_80AC284; } @@ -1291,7 +1327,7 @@ void sub_80AC2CC(u8 taskId) //shared19204.unk1920B_2 = 1; shared19204.unk1920B |= 4; - if (sub_80AE074() != 0) + if (sub_80AE074()) sub_80B114C(shared19204.unk19215); taskId2 = CreateTask(sub_80C8C80, 0); SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); @@ -1337,8 +1373,8 @@ void sub_80AC2CC(u8 taskId) sub_80B28F0(shared19204.unk19215); spriteId = sub_80AE9FC( gContestMons[shared19204.unk19215].species, - gContestMons[shared19204.unk19215].unk3C, - gContestMons[shared19204.unk19215].unk38); + gContestMons[shared19204.unk19215].otId, + gContestMons[shared19204.unk19215].personality); gSprites[spriteId].pos2.x = 120; gSprites[spriteId].callback = sub_80AD8FC; gTasks[taskId].data[2] = spriteId; @@ -4819,3 +4855,436 @@ _080AD8CA:\n\ .syntax divided\n"); } +void sub_80AD8DC(u8 taskId) +{ + shared19204.unk1920B_2 = 0; + DestroyTask(taskId); +} + +void sub_80AD8FC(struct Sprite *sprite) +{ + if (sprite->pos2.x != 0) + { + sprite->pos2.x -= 2; + } + else + { + if (++sprite->data[0] == 31) + { + sprite->data[0] = 0; + sprite->callback = SpriteCallbackDummy; + } + } +} + +void sub_80AD92C(struct Sprite *sprite) +{ + sprite->pos2.x -= 6; + if (sprite->pos1.x + sprite->pos2.x < -32) + { + sprite->callback = SpriteCallbackDummy; + sprite->invisible = TRUE; + } +} + +void sub_80AD960(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (gIsLinkContest & 1) + { + u8 taskId2; + + shared19204.unk1920B_2 = 1; + if (sub_80AE074()) + { + sub_80AF2FC(); + sub_80AF3C0(); + } + taskId2 = CreateTask(sub_80C8C80, 0); + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC); + sub_80AF860(); + gTasks[taskId].data[0] = 1; + } + //_080AD9E8 + else + { + sub_80AF2FC(); + sub_80AF3C0(); + gTasks[taskId].data[0] = 2; + } + break; + case 1: + if (!shared19204.unk1920B_2) + gTasks[taskId].data[0] = 2; + break; + case 2: + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80ADA1C; + break; + } +} + +void sub_80ADA1C(u8 taskId) +{ + sub_80B1FD0(0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80ADA4C; +} + +void sub_80ADA4C(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (++gTasks[taskId].data[1] > 20) + { + sub_80B25E4(2); + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + break; + case 1: + if (!shared19204.unk1920B_1) + { + if (++gTasks[taskId].data[1] > 20) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + } + break; + case 2: + sub_80AFF10(); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_80ADAD8; + break; + } +} + +void sub_80ADAD8(u8 taskId) +{ + if (sub_80AFF28() != 0) + gTasks[taskId].func = sub_80ADB04; +} + +void sub_80ADB04(u8 taskId) +{ + { + void *src = shared18000.unk18204; + void *dest = gPlttBufferUnfaded; + DmaCopy32(3, src, dest, 0x400); + } + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 2; + gTasks[taskId].func = sub_80ADB48; +} + +void sub_80ADB48(u8 taskId) +{ + if (++gTasks[taskId].data[0] > 2) + { + gTasks[taskId].data[0] = 0; + if (--gTasks[taskId].data[1] == 0) + gTasks[taskId].func = sub_80ADB88; + } +} + +void sub_80ADB88(u8 taskId) +{ + struct UnknownContestStruct1 *s = &shared19260.unk19260[gContestPlayerMonIndex]; + u8 r4 = s->unk1A; + + sub_80AF138(); + StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname); + StringExpandPlaceholders(gStringVar4, gUnknown_083CB2F0[r4]); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].func = sub_80ADC10; +} + +void sub_80ADC10(u8 taskId) +{ + if (sub_80037A0(&gMenuWindow) == 1) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80ADC4C; + sub_80B0D7C(); + } +} + +void sub_80ADC4C(u8 taskId) +{ + if (gTasks[taskId].data[0]++ > 29) + { + gTasks[taskId].data[0] = 0; + sub_80AFF10(); + gTasks[taskId].func = sub_80ADC84; + } +} + +void sub_80ADC84(u8 taskId) +{ + if (sub_80AFF28() != 0) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80ADCB4; + } +} + +void sub_80ADCB4(u8 taskId) +{ + sub_80B2184(); + gTasks[taskId].func = sub_80B237C; +} + +void sub_80ADCDC(u8 taskId) +{ + sub_80B2280(); + gTasks[taskId].func = sub_80ADD04; +} + +void sub_80ADD04(u8 taskId) +{ + REG_BG0CNT_BITFIELD.priority = 0; + REG_BG2CNT_BITFIELD.priority = 0; + if (++shared19204.unk19205 == 5) + { + gTasks[taskId].func = sub_80ADDA4; + } + else + { + sub_80B1B14(); + gTasks[taskId].func = sub_80ADD74; + } +} + +void sub_80ADD74(u8 taskId) +{ + if (!shared19204.unk1920A_6) + gTasks[taskId].func = sub_80ABB70; +} + +void sub_80ADDA4(u8 taskId) +{ + s32 i; + struct UnknownContestStruct1 *s; + + gUnknown_030042A0 = 0; + gUnknown_03004280 = 0; + for (i = 0; i < 4; i++) + gUnknown_02038680[i] = shared19260.unk19260[i].unk4; + sub_80AF668(); + sub_80AF138(); + s = &shared19260.unk19260[gContestPlayerMonIndex]; + sub_80BE23C(s->unk8); + gUnknown_03005D28 = gRngValue; + StringExpandPlaceholders(gStringVar4, gUnknown_083CB02C); + sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80ADE54; +} + +void sub_80ADE54(u8 taskId) +{ + if (sub_80037A0(&gMenuWindow) == 1) + { + sub_80B2184(); + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 160; + PlaySE12WithPanning(SE_C_MAKU_D, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80ADEAC; + } +} + +void sub_80ADEAC(u8 taskId) +{ + gUnknown_030041B4 -= 7; + if (gUnknown_030041B4 < 0) + gUnknown_030041B4 = 0; + if (*(u16 *)&gUnknown_030041B4 == 0) // Why cast? + { + gTasks[taskId].func = sub_80ADEEC; + gTasks[taskId].data[0] = 0; + } +} + +void sub_80ADEEC(u8 taskId) +{ + if (gTasks[taskId].data[0]++ >= 50) + { + gTasks[taskId].data[0] = 0; + if (gIsLinkContest & 1) + { + gTasks[taskId].func = sub_80ADF4C; + } + else + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80ADFD8; + } + } +} + +void sub_80ADF4C(u8 taskId) +{ + u8 taskId2 = CreateTask(sub_80C8AD0, 0); + + SetTaskFuncWithFollowupFunc(taskId2, sub_80C8AD0, sub_80ADF98); + gTasks[taskId].func = nullsub_89; + sub_80AF860(); + sub_80AFFE0(0); +} + +void sub_80ADF98(u8 taskId) +{ + DestroyTask(taskId); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[shared19204.unk1920C].func = sub_80ADFD8; +} + +void sub_80ADFD8(u8 taskId) +{ + if (!gPaletteFade.active) + { + DestroyTask(taskId); + gFieldCallback = sub_80AE010; + SetMainCallback2(c2_exit_to_overworld_2_switch); + } +} + +void sub_80AE010(void) +{ + // Why disable and re-enable again? + ScriptContext2_Disable(); + EnableBothScriptContexts(); +} + +void sub_80AE020(u8 *a, s32 b) +{ + while (1) + { + if (*a == EOS) + break; + if (*a == EXT_CTRL_CODE_BEGIN && *(a + 1) == 0) + { + u8 *end; + + end = ConvertIntToDecimalStringN(a, b, 0, 1); + *end = EOS; // ConvertIntToDecimalStringN already does this. + StringAppend(end, a + 2); + break; + } + a++; + } +} + +void sub_80AE054(void) +{ + if (!(gIsLinkContest & 1)) + gContestPlayerMonIndex = 3; +} + +bool8 sub_80AE074(void) +{ + if (gContestPlayerMonIndex == gUnknown_0203869B) + return TRUE; + else + return FALSE; +} + +// CreateContestMon +void sub_80AE098(u8 a) +{ + u8 name[20]; + u16 heldItem; + s16 cool; + s16 beauty; + s16 cute; + s16 smart; + s16 tough; + + StringCopy(name, gSaveBlock2.playerName); + StripExtCtrlCodes(name); + if (gIsLinkContest & 1) + { + u8 temp = name[5]; + + name[5] = EOS; + name[7] = temp; + } + memcpy(gContestMons[gContestPlayerMonIndex].trainerName, name, 8); + if (gSaveBlock2.playerGender == MALE) + gContestMons[gContestPlayerMonIndex].unk15 = 0xD8; + else + gContestMons[gContestPlayerMonIndex].unk15 = 0xD9; + gContestMons[gContestPlayerMonIndex].unk18 = 0; + gContestMons[gContestPlayerMonIndex].unk2C = 0; + gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES); + GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, name); + StringGetEnd10(name); + if (gIsLinkContest & 1) + { + StripExtCtrlCodes(name); + if (GetMonData(&gPlayerParty[a], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE) + { + name[5] = EOS; + name[10] = EXT_CTRL_CODE_BEGIN; + } + else + { + u8 temp = name[5]; + + name[5] = EOS; + name[10] = temp; + } + } + memcpy(gContestMons[gContestPlayerMonIndex].nickname, name, 11); + gContestMons[gContestPlayerMonIndex].cool = GetMonData(&gPlayerParty[a], MON_DATA_COOL); + gContestMons[gContestPlayerMonIndex].beauty = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY); + gContestMons[gContestPlayerMonIndex].cute = GetMonData(&gPlayerParty[a], MON_DATA_CUTE); + gContestMons[gContestPlayerMonIndex].smart = GetMonData(&gPlayerParty[a], MON_DATA_SMART); + gContestMons[gContestPlayerMonIndex].tough = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH); + gContestMons[gContestPlayerMonIndex].sheen = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN); + gContestMons[gContestPlayerMonIndex].moves[0] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1); + gContestMons[gContestPlayerMonIndex].moves[1] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE2); + gContestMons[gContestPlayerMonIndex].moves[2] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE3); + gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE4); + gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); + gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID); + + heldItem = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM); + cool = gContestMons[gContestPlayerMonIndex].cool; + beauty = gContestMons[gContestPlayerMonIndex].beauty; + cute = gContestMons[gContestPlayerMonIndex].cute; + smart = gContestMons[gContestPlayerMonIndex].smart; + tough = gContestMons[gContestPlayerMonIndex].tough; + if (heldItem == ITEM_RED_SCARF) + cool += 20; + else if (heldItem == ITEM_BLUE_SCARF) + beauty += 20; + else if (heldItem == ITEM_PINK_SCARF) + cute += 20; + else if (heldItem == ITEM_GREEN_SCARF) + smart += 20; + else if (heldItem == ITEM_YELLOW_SCARF) + tough += 20; + if (cool > 255) + cool = 255; + if (beauty > 255) + beauty = 255; + if (cute > 255) + cute = 255; + if (smart > 255) + smart = 255; + if (tough > 255) + tough = 255; + gContestMons[gContestPlayerMonIndex].cool = cool; + gContestMons[gContestPlayerMonIndex].beauty = beauty; + gContestMons[gContestPlayerMonIndex].cute = cute; + gContestMons[gContestPlayerMonIndex].smart = smart; + gContestMons[gContestPlayerMonIndex].tough = tough; +} diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 0f77d2814..b99dfb831 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -18,7 +18,7 @@ #include "ewram.h" extern u8 gUnknown_0203856C; -extern u8 gUnknown_0203857D[][64]; +extern u8 gUnknown_0203857D[][64]; // TODO: This is actually part of gContestMons extern u16 gUnknown_02038670[]; extern u16 gUnknown_02038678[]; extern u16 gUnknown_02038680[]; |