diff options
-rw-r--r-- | asm/contest.s | 1817 | ||||
-rw-r--r-- | include/global.h | 4 | ||||
-rw-r--r-- | src/contest.c | 789 |
3 files changed, 714 insertions, 1896 deletions
diff --git a/asm/contest.s b/asm/contest.s index ab1089ffc..09d347f7d 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -5,1823 +5,6 @@ .text - thumb_func_start sub_80AF438 -sub_80AF438: @ 80AF438 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r5, 0 - ldr r0, _080AF594 @ =gSharedMem + 0x19260 - mov r10, r0 - movs r1, 0 - mov r12, r1 - movs r0, 0x7 - negs r0, r0 - mov r9, r0 - movs r1, 0x2 - negs r1, r1 - mov r8, r1 -_080AF458: - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - mov r1, r10 - adds r3, r0, r1 - movs r0, 0 - strh r0, [r3, 0x2] - strh r0, [r3] - mov r0, r12 - strb r0, [r3, 0x12] - ldrb r2, [r3, 0xC] - movs r0, 0x6 - ands r0, r2 - cmp r0, 0 - beq _080AF48A - lsls r0, r2, 29 - lsrs r0, 30 - subs r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 1 - mov r1, r9 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0xC] -_080AF48A: - mov r1, r12 - strb r1, [r3, 0xE] - ldrb r0, [r3, 0x10] - mov r1, r8 - ands r1, r0 - mov r0, r12 - strb r0, [r3, 0xF] - movs r0, 0x3 - negs r0, r0 - ands r1, r0 - movs r6, 0x5 - negs r6, r6 - ands r1, r6 - movs r7, 0x9 - negs r7, r7 - ands r1, r7 - ldrb r0, [r3, 0xC] - mov r4, r8 - ands r4, r0 - strb r4, [r3, 0xC] - movs r0, 0xFF - strb r0, [r3, 0x13] - movs r0, 0x1 - negs r0, r0 - strb r0, [r3, 0x14] - subs r0, 0x30 - ands r1, r0 - strb r1, [r3, 0x10] - ldrb r2, [r3, 0x15] - lsls r1, r2, 31 - lsrs r1, 31 - lsls r1, 2 - adds r0, r6, 0 - ands r0, r2 - orrs r0, r1 - mov r1, r8 - ands r0, r1 - strb r0, [r3, 0x15] - ldrb r0, [r3, 0x11] - movs r2, 0x4 - negs r2, r2 - ands r2, r0 - movs r0, 0x21 - negs r0, r0 - ands r2, r0 - strb r2, [r3, 0x11] - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - beq _080AF500 - adds r0, r4, 0 - mov r1, r9 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3, 0xC] - adds r0, r2, 0 - ands r0, r6 - strb r0, [r3, 0x11] -_080AF500: - ldrb r2, [r3, 0x11] - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _080AF518 - ldrb r0, [r3, 0xB] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r3, 0xB] - adds r0, r7, 0 - ands r0, r2 - strb r0, [r3, 0x11] -_080AF518: - ldrb r0, [r3, 0x11] - movs r1, 0x11 - negs r1, r1 - ands r1, r0 - strb r1, [r3, 0x11] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080AF458 - movs r5, 0 - mov r6, r10 - mov r9, r5 - adds r7, r6, 0 - subs r7, 0x5C - movs r0, 0x18 - negs r0, r0 - adds r0, r6 - mov r8, r0 -_080AF53E: - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - adds r4, r6 - ldrh r2, [r4, 0x6] - strh r2, [r4, 0x8] - lsls r1, r5, 1 - ldrb r0, [r7, 0x1] - lsls r0, 3 - adds r1, r0 - adds r0, r6, 0 - subs r0, 0x40 - adds r0, r1 - strh r2, [r0] - ldrh r0, [r4, 0x6] - bl contest_get_move_excitement - ldrb r1, [r7, 0x1] - lsls r1, 2 - adds r1, r5, r1 - add r1, r8 - strb r0, [r1] - mov r1, r9 - strh r1, [r4, 0x6] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080AF53E - ldr r2, _080AF598 @ =gSharedMem + 0x19328 - ldrb r1, [r2, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AF594: .4byte gSharedMem + 0x19260 -_080AF598: .4byte gSharedMem + 0x19328 - thumb_func_end sub_80AF438 - - thumb_func_start sub_80AF59C -sub_80AF59C: @ 80AF59C - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _080AF5C4 @ =gSharedMem + 0x19260 - adds r2, r1, r0 - ldrb r1, [r2, 0xC] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - bne _080AF5C0 - ldrb r1, [r2, 0xB] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080AF5C8 -_080AF5C0: - movs r0, 0x1 - b _080AF5CA - .align 2, 0 -_080AF5C4: .4byte gSharedMem + 0x19260 -_080AF5C8: - movs r0, 0 -_080AF5CA: - pop {r1} - bx r1 - thumb_func_end sub_80AF59C - - thumb_func_start unref_sub_80AF5D0 -unref_sub_80AF5D0: @ 80AF5D0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - ldr r1, _080AF5E8 @ =gContestPlayerMonIndex - ldrb r1, [r1] - cmp r0, r1 - beq _080AF600 -_080AF5E2: - movs r0, 0x1 - b _080AF626 - .align 2, 0 -_080AF5E8: .4byte gContestPlayerMonIndex -_080AF5EC: - ldrb r0, [r4, 0x6] - movs r1, 0x1 - b _080AF5F6 -_080AF5F2: - ldrb r0, [r4, 0x6] - movs r1, 0x2 -_080AF5F6: - orrs r0, r1 - strb r0, [r4, 0x6] - b _080AF5E2 -_080AF5FC: - strb r3, [r2] - b _080AF5E2 -_080AF600: - movs r0, 0 - ldr r4, _080AF62C @ =gSharedMem + 0x19204 - adds r5, r4, 0x2 -_080AF606: - cmp r3, 0x3 - beq _080AF5EC - cmp r3, 0x4 - beq _080AF5F2 - adds r2, r0, r5 - ldrb r1, [r2] - cmp r1, r3 - beq _080AF5E2 - cmp r1, 0xFF - beq _080AF5FC - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _080AF606 - movs r0, 0 -_080AF626: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080AF62C: .4byte gSharedMem + 0x19204 - thumb_func_end unref_sub_80AF5D0 - - thumb_func_start sub_80AF630 -sub_80AF630: @ 80AF630 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80AF688 - ldr r1, _080AF65C @ =gUnknown_02038688 - lsls r4, 1 - adds r1, r4, r1 - strh r0, [r1] - ldr r2, _080AF660 @ =gUnknown_02038678 - adds r2, r4, r2 - ldr r1, _080AF664 @ =gUnknown_02038670 - adds r4, r1 - ldrh r4, [r4] - adds r0, r4 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AF65C: .4byte gUnknown_02038688 -_080AF660: .4byte gUnknown_02038678 -_080AF664: .4byte gUnknown_02038670 - thumb_func_end sub_80AF630 - - thumb_func_start sub_80AF668 -sub_80AF668: @ 80AF668 - push {r4,lr} - movs r4, 0 -_080AF66C: - adds r0, r4, 0 - bl sub_80AF630 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080AF66C - bl sub_80AF6A0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AF668 - - thumb_func_start sub_80AF688 -sub_80AF688: @ 80AF688 - lsls r0, 24 - ldr r1, _080AF69C @ =gUnknown_02038680 - lsrs r0, 23 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - lsls r0, 17 - asrs r0, 16 - bx lr - .align 2, 0 -_080AF69C: .4byte gUnknown_02038680 - thumb_func_end sub_80AF688 - - thumb_func_start sub_80AF6A0 -sub_80AF6A0: @ 80AF6A0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x70 - mov r0, sp - movs r1, 0 - movs r2, 0x8 - bl memset - movs r0, 0 - mov r9, r0 - mov r1, sp - adds r1, 0x8 - str r1, [sp, 0x64] - mov r3, sp - adds r3, 0xC - str r3, [sp, 0x68] - mov r6, sp - adds r6, 0x14 - str r6, [sp, 0x6C] - mov r4, sp -_080AF6CE: - bl Random - strh r0, [r4] - movs r2, 0 - cmp r2, r9 - bge _080AF70C - mov r1, sp - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1] - cmp r0, r1 - bne _080AF6F0 - subs r4, 0x2 - movs r7, 0x1 - negs r7, r7 - add r9, r7 - b _080AF70C -_080AF6F0: - adds r2, 0x1 - cmp r2, r9 - bge _080AF70C - lsls r0, r2, 1 - mov r3, sp - adds r1, r3, r0 - ldrh r0, [r4] - ldrh r1, [r1] - cmp r0, r1 - bne _080AF6F0 - subs r4, 0x2 - movs r6, 0x1 - negs r6, r6 - add r9, r6 -_080AF70C: - adds r4, 0x2 - movs r7, 0x1 - add r9, r7 - mov r0, r9 - cmp r0, 0x3 - ble _080AF6CE - movs r1, 0 - mov r9, r1 - mov r4, sp - ldr r6, _080AF81C @ =gUnknown_02038678 - ldr r2, [sp, 0x64] - ldr r5, _080AF820 @ =gUnknown_02038670 - ldr r3, [sp, 0x68] -_080AF726: - mov r7, r9 - lsls r1, r7, 4 - movs r7, 0 - ldrsh r0, [r6, r7] - str r0, [r2] - movs r7, 0 - ldrsh r0, [r5, r7] - str r0, [r3] - ldrh r0, [r4] - str r0, [r2, 0x8] - ldr r0, [sp, 0x6C] - adds r1, r0, r1 - mov r7, r9 - str r7, [r1] - adds r4, 0x2 - adds r6, 0x2 - adds r2, 0x10 - adds r5, 0x2 - adds r3, 0x10 - movs r0, 0x1 - add r9, r0 - mov r1, r9 - cmp r1, 0x3 - ble _080AF726 - movs r3, 0 - mov r9, r3 -_080AF75A: - movs r4, 0x3 - cmp r4, r9 - ble _080AF7E4 - add r7, sp, 0x48 - ldr r6, [sp, 0x68] - str r6, [sp, 0x58] - ldr r0, [sp, 0x64] - adds r0, 0x8 - str r0, [sp, 0x5C] - ldr r1, [sp, 0x6C] - str r1, [sp, 0x60] -_080AF770: - subs r3, r4, 0x1 - mov r10, r3 - mov r0, r10 - adds r1, r4, 0 - ldr r2, [sp, 0x64] - bl sub_80AF828 - lsls r0, 24 - cmp r0, 0 - beq _080AF7DE - mov r6, r10 - lsls r2, r6, 4 - ldr r0, [sp, 0x64] - adds r3, r0, r2 - ldr r0, [r3] - str r0, [sp, 0x48] - ldr r1, [sp, 0x58] - adds r6, r1, r2 - ldr r0, [r6] - str r0, [r7, 0x4] - ldr r0, [sp, 0x5C] - adds r0, r2 - mov r8, r0 - ldr r0, [r0] - str r0, [r7, 0x8] - ldr r1, [sp, 0x60] - adds r2, r1, r2 - ldr r0, [r2] - str r0, [r7, 0xC] - lsls r1, r4, 4 - ldr r0, [sp, 0x64] - adds r5, r0, r1 - ldr r0, [r5] - str r0, [r3] - ldr r3, [sp, 0x58] - adds r4, r3, r1 - ldr r0, [r4] - str r0, [r6] - ldr r6, [sp, 0x5C] - adds r3, r6, r1 - ldr r0, [r3] - mov r6, r8 - str r0, [r6] - ldr r0, [sp, 0x60] - adds r1, r0, r1 - ldr r0, [r1] - str r0, [r2] - ldr r0, [sp, 0x48] - str r0, [r5] - ldr r0, [r7, 0x4] - str r0, [r4] - ldr r0, [r7, 0x8] - str r0, [r3] - ldr r0, [r7, 0xC] - str r0, [r1] -_080AF7DE: - mov r4, r10 - cmp r4, r9 - bgt _080AF770 -_080AF7E4: - movs r1, 0x1 - add r9, r1 - mov r3, r9 - cmp r3, 0x2 - ble _080AF75A - movs r6, 0 - mov r9, r6 - ldr r2, _080AF824 @ =gUnknown_02038690 - ldr r1, [sp, 0x6C] -_080AF7F6: - ldr r0, [r1] - adds r0, r2 - mov r7, r9 - strb r7, [r0] - adds r1, 0x10 - movs r0, 0x1 - add r9, r0 - mov r3, r9 - cmp r3, 0x3 - ble _080AF7F6 - add sp, 0x70 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AF81C: .4byte gUnknown_02038678 -_080AF820: .4byte gUnknown_02038670 -_080AF824: .4byte gUnknown_02038690 - thumb_func_end sub_80AF6A0 - - thumb_func_start sub_80AF828 -sub_80AF828: @ 80AF828 - push {lr} - lsls r0, 4 - adds r0, r2 - lsls r1, 4 - adds r3, r1, r2 - ldr r2, [r0] - ldr r1, [r3] - cmp r2, r1 - blt _080AF858 - cmp r2, r1 - bgt _080AF84A - ldr r2, [r0, 0x4] - ldr r1, [r3, 0x4] - cmp r2, r1 - blt _080AF858 - cmp r2, r1 - ble _080AF84E -_080AF84A: - movs r2, 0 - b _080AF85A -_080AF84E: - ldr r1, [r0, 0x8] - ldr r0, [r3, 0x8] - movs r2, 0 - cmp r1, r0 - bge _080AF85A -_080AF858: - movs r2, 0x1 -_080AF85A: - adds r0, r2, 0 - pop {r1} - bx r1 - thumb_func_end sub_80AF828 - - thumb_func_start sub_80AF860 -sub_80AF860: @ 80AF860 - push {lr} - sub sp, 0x4 - ldr r0, _080AF88C @ =gUnknown_030042A0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080AF890 @ =gUnknown_03004280 - strh r1, [r0] - bl sub_80AF138 - ldr r0, _080AF894 @ =gMenuWindow - ldr r1, _080AF898 @ =gUnknownText_LinkStandbyAndWinner - movs r2, 0xC2 - lsls r2, 2 - movs r3, 0xF - str r3, [sp] - movs r3, 0x1 - bl sub_8003460 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080AF88C: .4byte gUnknown_030042A0 -_080AF890: .4byte gUnknown_03004280 -_080AF894: .4byte gMenuWindow -_080AF898: .4byte gUnknownText_LinkStandbyAndWinner - thumb_func_end sub_80AF860 - - thumb_func_start unref_sub_80AF89C -unref_sub_80AF89C: @ 80AF89C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r4, r0, 0 - adds r6, r1, 0 - mov r8, r2 - lsls r4, 16 - lsrs r4, 16 - lsls r6, 16 - lsrs r6, 16 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - lsls r2, r3, 2 - ldr r0, _080AF940 @ =gSharedMem + 0x19338 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r0, _080AF944 @ =sub_80AF94C - movs r1, 0x14 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - bl sub_80AFB74 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 16 - asrs r6, 16 - adds r4, r6 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - bl sub_80AFB74 - adds r4, r0, 0 - subs r4, r5 - lsls r4, 24 - lsrs r4, 24 - mov r0, r9 - bl sub_80AFB40 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080AF948 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - lsls r4, 24 - asrs r4, 24 - strh r4, [r1, 0xA] - add r0, r8 - strh r0, [r1, 0xC] - mov r0, r9 - strh r0, [r1, 0xE] - cmp r6, 0 - bge _080AF932 - mov r0, r9 - bl nullsub_19 -_080AF932: - adds r0, r7, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080AF940: .4byte gSharedMem + 0x19338 -_080AF944: .4byte sub_80AF94C -_080AF948: .4byte gTasks - thumb_func_end unref_sub_80AF89C - - thumb_func_start sub_80AF94C -sub_80AF94C: @ 80AF94C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080AF988 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrb r5, [r2, 0xE] - ldrh r3, [r2, 0xA] - movs r0, 0xA - ldrsh r1, [r2, r0] - cmp r1, 0 - bne _080AF990 - adds r0, r5, 0 - bl nullsub_19 - adds r0, r4, 0 - bl DestroyTask - lsls r1, r5, 2 - ldr r0, _080AF98C @ =gSharedMem + 0x19338 - adds r1, r0 - ldrb r2, [r1, 0x2] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x2] - b _080AFA56 - .align 2, 0 -_080AF988: .4byte gTasks -_080AF98C: .4byte gSharedMem + 0x19338 -_080AF990: - ldrh r0, [r2, 0x1C] - adds r0, 0x1 - strh r0, [r2, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1D - ble _080AFA56 - movs r0, 0 - strh r0, [r2, 0x1C] - cmp r1, 0 - bge _080AF9BC - ldrh r0, [r2, 0x8] - subs r1, r0, 0x1 - strh r1, [r2, 0x8] - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r3, 0x1 - strh r0, [r2, 0xA] - movs r0, 0x16 - bl PlaySE - b _080AF9D0 -_080AF9BC: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - lsls r0, 24 - lsrs r6, r0, 24 - subs r0, r3, 0x1 - strh r0, [r2, 0xA] - movs r0, 0x15 - bl PlaySE -_080AF9D0: - ldr r3, _080AFA00 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r2, r0, 3 - adds r0, r2, r3 - ldrh r1, [r0, 0xC] - ldr r0, _080AFA04 @ =0x0000ffff - cmp r1, r0 - beq _080AFA38 - adds r0, r3, r2 - adds r0, 0xC - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 5 - adds r1, 0x93 - adds r1, r6, r1 - lsls r1, 1 - ldr r2, _080AFA08 @ =0x0600c000 - adds r1, r2 - movs r2, 0x2 - bl RequestSpriteCopy - b _080AFA56 - .align 2, 0 -_080AFA00: .4byte gTasks -_080AFA04: .4byte 0x0000ffff -_080AFA08: .4byte 0x0600c000 -_080AFA0C: - adds r0, r2, r3 - lsls r1, 1 - adds r1, 0xE - adds r0, r1 - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 5 - adds r1, 0x93 - adds r1, r6, r1 - lsls r1, 1 - ldr r7, _080AFA34 @ =0x0600c000 - adds r1, r7 - movs r2, 0x2 - bl RequestSpriteCopy - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _080AFA56 - .align 2, 0 -_080AFA34: .4byte 0x0600c000 -_080AFA38: - movs r1, 0 - adds r3, 0x8 -_080AFA3C: - adds r0, r1, 0x4 - lsls r0, 1 - adds r0, r2 - adds r4, r0, r3 - movs r7, 0 - ldrsh r0, [r4, r7] - cmp r0, 0 - blt _080AFA0C - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bls _080AFA3C -_080AFA56: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80AF94C - - thumb_func_start sub_80AFA5C -sub_80AFA5C: @ 80AFA5C - push {r4-r7,lr} - sub sp, 0x4 - movs r3, 0 - ldr r0, _080AFAAC @ =0x0600c000 - mov r12, r0 - mov r4, sp - movs r6, 0 - ldr r2, _080AFAB0 @ =0x040000d4 - ldr r5, _080AFAB4 @ =0x81000008 -_080AFA6E: - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 5 - adds r0, r1, 0 - adds r0, 0x56 - lsls r0, 1 - add r0, r12 - strh r6, [r4] - mov r7, sp - str r7, [r2] - str r0, [r2, 0x4] - str r5, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r1, 0x76 - lsls r1, 1 - add r1, r12 - strh r6, [r4] - str r7, [r2] - str r1, [r2, 0x4] - str r5, [r2, 0x8] - ldr r0, [r2, 0x8] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080AFA6E - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AFAAC: .4byte 0x0600c000 -_080AFAB0: .4byte 0x040000d4 -_080AFAB4: .4byte 0x81000008 - thumb_func_end sub_80AFA5C - - thumb_func_start unref_sub_80AFAB8 -unref_sub_80AFAB8: @ 80AFAB8 - push {r4-r6,lr} - sub sp, 0x14 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r0, 16 - asrs r0, 16 - bl sub_80AFB74 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _080AFAF4 @ =0x000050a2 - cmp r4, 0 - beq _080AFAE0 - ldr r2, _080AFAF8 @ =0x000060a2 - cmp r4, 0x1 - beq _080AFAE0 - ldr r2, _080AFAFC @ =0x000080a2 - cmp r4, 0x2 - bne _080AFAE0 - ldr r2, _080AFB00 @ =0x000070a2 -_080AFAE0: - movs r1, 0 - lsls r3, r4, 2 - movs r6, 0 -_080AFAE6: - cmp r1, r5 - bcs _080AFB04 - lsls r0, r1, 1 - add r0, sp - strh r2, [r0] - b _080AFB0A - .align 2, 0 -_080AFAF4: .4byte 0x000050a2 -_080AFAF8: .4byte 0x000060a2 -_080AFAFC: .4byte 0x000080a2 -_080AFB00: .4byte 0x000070a2 -_080AFB04: - lsls r0, r1, 1 - add r0, sp - strh r6, [r0] -_080AFB0A: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x8 - bls _080AFAE6 - adds r0, r3, r4 - lsls r0, 6 - ldr r1, _080AFB34 @ =0x0600c128 - adds r0, r1 - ldr r1, _080AFB38 @ =0x040000d4 - mov r2, sp - str r2, [r1] - str r0, [r1, 0x4] - ldr r0, _080AFB3C @ =0x80000009 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AFB34: .4byte 0x0600c128 -_080AFB38: .4byte 0x040000d4 -_080AFB3C: .4byte 0x80000009 - thumb_func_end unref_sub_80AFAB8 - - thumb_func_start sub_80AFB40 -sub_80AFB40: @ 80AFB40 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080AFB64 @ =0x00005011 - cmp r0, 0 - beq _080AFB5A - ldr r1, _080AFB68 @ =0x00006011 - cmp r0, 0x1 - beq _080AFB5A - ldr r1, _080AFB6C @ =0x00008011 - cmp r0, 0x2 - bne _080AFB5A - ldr r1, _080AFB70 @ =0x00007011 -_080AFB5A: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_080AFB64: .4byte 0x00005011 -_080AFB68: .4byte 0x00006011 -_080AFB6C: .4byte 0x00008011 -_080AFB70: .4byte 0x00007011 - thumb_func_end sub_80AFB40 - - thumb_func_start sub_80AFB74 -sub_80AFB74: @ 80AFB74 - push {lr} - lsls r0, 16 - asrs r0, 16 - movs r1, 0xA - bl __divsi3 - lsls r0, 24 - lsrs r1, r0, 24 - asrs r2, r0, 24 - cmp r2, 0x10 - ble _080AFB8E - movs r1, 0x10 - b _080AFB98 -_080AFB8E: - movs r0, 0x10 - negs r0, r0 - cmp r2, r0 - bge _080AFB98 - movs r1, 0xF0 -_080AFB98: - lsls r0, r1, 24 - asrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80AFB74 - - thumb_func_start sub_80AFBA0 -sub_80AFBA0: @ 80AFBA0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r2, r7, 2 - ldr r0, _080AFC30 @ =gSharedMem + 0x19338 - adds r2, r0 - ldrb r0, [r2, 0x2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x2] - ldr r0, _080AFC34 @ =sub_80AFC74 - movs r1, 0x14 - bl CreateTask - lsls r0, 24 - lsrs r6, r0, 24 - lsls r5, 16 - asrs r5, 16 - adds r0, r5, 0 - bl sub_80AFB74 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - adds r5, r0 - lsls r5, 16 - asrs r5, 16 - adds r0, r5, 0 - bl sub_80AFB74 - lsls r4, 24 - asrs r4, 24 - subs r0, r4 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r7, 0 - bl sub_80AFB40 - ldr r2, _080AFC38 @ =gTasks - lsls r3, r6, 2 - adds r0, r3, r6 - lsls r0, 3 - adds r1, r0, r2 - adds r0, r4, 0 - cmp r4, 0 - bge _080AFC14 - negs r0, r4 -_080AFC14: - strh r0, [r1, 0x8] - lsls r0, r5, 24 - asrs r0, 24 - strh r0, [r1, 0xA] - cmp r4, 0 - bgt _080AFC28 - cmp r4, 0 - bne _080AFC3C - cmp r0, 0 - ble _080AFC3C -_080AFC28: - movs r0, 0x1 - strh r0, [r1, 0xC] - b _080AFC4A - .align 2, 0 -_080AFC30: .4byte gSharedMem + 0x19338 -_080AFC34: .4byte sub_80AFC74 -_080AFC38: .4byte gTasks -_080AFC3C: - ldr r2, _080AFC6C @ =gTasks - lsls r3, r6, 2 - adds r0, r3, r6 - lsls r0, 3 - adds r0, r2 - ldr r1, _080AFC70 @ =0x0000ffff - strh r1, [r0, 0xC] -_080AFC4A: - adds r0, r3, r6 - lsls r0, 3 - adds r0, r2 - strh r7, [r0, 0xE] - mov r1, r8 - lsls r0, r1, 16 - cmp r0, 0 - bge _080AFC60 - adds r0, r7, 0 - bl nullsub_19 -_080AFC60: - adds r0, r6, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080AFC6C: .4byte gTasks -_080AFC70: .4byte 0x0000ffff - thumb_func_end sub_80AFBA0 - - thumb_func_start sub_80AFC74 -sub_80AFC74: @ 80AFC74 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080AFCD4 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r4, r0, r1 - ldrb r7, [r4, 0xE] - ldrh r3, [r4, 0x8] - ldrh r1, [r4, 0xA] - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xE - bgt _080AFCA6 - b _080AFE1C -_080AFCA6: - movs r0, 0 - strh r0, [r4, 0x1C] - ldrh r2, [r4, 0xA] - movs r5, 0xA - ldrsh r0, [r4, r5] - cmp r0, 0 - bne _080AFCDC - adds r0, r7, 0 - bl nullsub_19 - mov r0, r8 - bl DestroyTask - lsls r1, r7, 2 - ldr r0, _080AFCD8 @ =gSharedMem + 0x19338 - adds r1, r0 - ldrb r2, [r1, 0x2] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x2] - b _080AFE1C - .align 2, 0 -_080AFCD4: .4byte gTasks -_080AFCD8: .4byte gSharedMem + 0x19338 -_080AFCDC: - cmp r3, 0 - bne _080AFD28 - lsls r0, r1, 16 - mov r9, r0 - cmp r0, 0 - bge _080AFCFA - adds r0, r7, 0 - bl sub_80AFB40 - adds r0, 0x2 - lsls r0, 16 - lsrs r6, r0, 16 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - b _080AFD08 -_080AFCFA: - adds r0, r7, 0 - bl sub_80AFB40 - lsls r0, 16 - lsrs r6, r0, 16 - ldrh r0, [r4, 0xA] - subs r0, 0x1 -_080AFD08: - strh r0, [r4, 0xA] - ldr r1, _080AFD24 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - adds r2, r1, 0x1 - strh r2, [r0, 0x8] - lsls r1, 24 - lsrs r5, r1, 24 - b _080AFD94 - .align 2, 0 -_080AFD24: .4byte gTasks -_080AFD28: - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0 - bge _080AFD62 - lsls r0, r1, 16 - mov r9, r0 - cmp r0, 0 - bge _080AFD50 - ldrh r0, [r4, 0x8] - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r2, 0x1 - strh r0, [r4, 0xA] - adds r0, r7, 0 - bl sub_80AFB40 - adds r0, 0x2 - b _080AFD90 -_080AFD50: - ldrh r0, [r4, 0x8] - subs r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - subs r0, r2, 0x1 - strh r0, [r4, 0xA] - b _080AFD94 -_080AFD62: - lsls r0, r1, 16 - mov r9, r0 - cmp r0, 0 - bge _080AFD7C - ldrh r0, [r4, 0x8] - subs r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - adds r0, r2, 0x1 - strh r0, [r4, 0xA] - b _080AFD94 -_080AFD7C: - ldrh r0, [r4, 0x8] - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - lsls r0, 24 - lsrs r5, r0, 24 - subs r0, r2, 0x1 - strh r0, [r4, 0xA] - adds r0, r7, 0 - bl sub_80AFB40 -_080AFD90: - lsls r0, 16 - lsrs r6, r0, 16 -_080AFD94: - mov r10, r5 - cmp r5, 0x7 - bls _080AFDA2 - adds r0, r5, 0 - adds r0, 0x18 - lsls r0, 24 - lsrs r5, r0, 24 -_080AFDA2: - mov r0, sp - strh r6, [r0] - ldr r0, _080AFDE8 @ =gUnknown_02038696 - adds r0, r7, r0 - ldrb r0, [r0] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 5 - adds r1, 0x56 - adds r1, r5, r1 - lsls r1, 1 - ldr r0, _080AFDEC @ =0x0600c000 - adds r1, r0 - ldr r2, _080AFDF0 @ =0x01000001 - mov r0, sp - bl CpuSet - mov r2, r9 - cmp r2, 0 - ble _080AFDFC - movs r0, 0x60 - bl PlaySE - ldr r4, _080AFDF4 @ =gMPlay_SE1 - adds r0, r4, 0 - bl m4aMPlayImmInit - ldr r1, _080AFDF8 @ =0x0000ffff - mov r3, r10 - lsls r2, r3, 24 - asrs r2, 16 - adds r0, r4, 0 - bl m4aMPlayPitchControl - b _080AFE02 - .align 2, 0 -_080AFDE8: .4byte gUnknown_02038696 -_080AFDEC: .4byte 0x0600c000 -_080AFDF0: .4byte 0x01000001 -_080AFDF4: .4byte gMPlay_SE1 -_080AFDF8: .4byte 0x0000ffff -_080AFDFC: - movs r0, 0x16 - bl PlaySE -_080AFE02: - cmp r5, 0 - bne _080AFE1C - cmp r6, 0 - bne _080AFE1C - ldr r0, _080AFE2C @ =gTasks - mov r5, r8 - lsls r1, r5, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xC] - negs r0, r0 - strh r0, [r1, 0xC] -_080AFE1C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AFE2C: .4byte gTasks - thumb_func_end sub_80AFC74 - - thumb_func_start sub_80AFE30 -sub_80AFE30: @ 80AFE30 - push {r4,r5,lr} - ldr r0, _080AFE64 @ =gUnknown_083CA350 - bl LoadSpriteSheet - movs r4, 0 - ldr r5, _080AFE68 @ =gUnknown_083CA338 -_080AFE3C: - ldr r0, _080AFE6C @ =gUnknown_02038696 - adds r0, r4, r0 - ldrb r0, [r0] - adds r0, r5 - ldrb r2, [r0] - ldr r0, _080AFE70 @ =gSpriteTemplate_83CA3AC - movs r1, 0xB4 - movs r3, 0x1 - bl CreateSprite - lsls r1, r4, 2 - ldr r2, _080AFE74 @ =gSharedMem + 0x19338 - adds r1, r2 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _080AFE3C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AFE64: .4byte gUnknown_083CA350 -_080AFE68: .4byte gUnknown_083CA338 -_080AFE6C: .4byte gUnknown_02038696 -_080AFE70: .4byte gSpriteTemplate_83CA3AC -_080AFE74: .4byte gSharedMem + 0x19338 - thumb_func_end sub_80AFE30 - - thumb_func_start sub_80AFE78 -sub_80AFE78: @ 80AFE78 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, r6, 2 - ldr r3, _080AFEB0 @ =gSharedMem + 0x19338 - adds r2, r3 - ldrb r0, [r2, 0x2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x2] - ldrb r7, [r2] - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - subs r3, 0xD8 - adds r0, r3 - movs r1, 0x4 - ldrsh r0, [r0, r1] - movs r1, 0xA - bl __divsi3 - lsls r0, 17 - lsrs r5, r0, 16 - asrs r0, 16 - cmp r0, 0x38 - ble _080AFEB4 - movs r5, 0x38 - b _080AFEBA - .align 2, 0 -_080AFEB0: .4byte gSharedMem + 0x19338 -_080AFEB4: - cmp r0, 0 - bge _080AFEBA - movs r5, 0 -_080AFEBA: - ldr r2, _080AFEEC @ =gSprites - lsls r3, r7, 4 - adds r0, r3, r7 - lsls r0, 2 - adds r4, r0, r2 - movs r0, 0x3E - adds r0, r4 - mov r12, r0 - ldrb r1, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - mov r1, r12 - strb r0, [r1] - strh r6, [r4, 0x2E] - strh r5, [r4, 0x30] - lsls r0, r5, 16 - asrs r0, 16 - movs r5, 0x24 - ldrsh r1, [r4, r5] - cmp r0, r1 - ble _080AFEF0 - movs r0, 0x1 - b _080AFEF2 - .align 2, 0 -_080AFEEC: .4byte gSprites -_080AFEF0: - ldr r0, _080AFF08 @ =0x0000ffff -_080AFEF2: - strh r0, [r4, 0x32] - adds r0, r3, r7 - lsls r0, 2 - adds r1, r2, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080AFF0C @ =sub_80AFF60 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AFF08: .4byte 0x0000ffff -_080AFF0C: .4byte sub_80AFF60 - thumb_func_end sub_80AFE78 - - thumb_func_start sub_80AFF10 -sub_80AFF10: @ 80AFF10 - push {r4,lr} - movs r4, 0 -_080AFF14: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80AFE78 - adds r4, 0x1 - cmp r4, 0x3 - ble _080AFF14 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AFF10 - - thumb_func_start sub_80AFF28 -sub_80AFF28: @ 80AFF28 - push {r4,lr} - movs r3, 0 - ldr r2, _080AFF54 @ =gSharedMem + 0x19338 - ldrb r1, [r2, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080AFF4C - movs r4, 0x1 -_080AFF3A: - adds r2, 0x4 - adds r3, 0x1 - cmp r3, 0x3 - bgt _080AFF4C - ldrb r1, [r2, 0x2] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080AFF3A -_080AFF4C: - cmp r3, 0x4 - beq _080AFF58 - movs r0, 0 - b _080AFF5A - .align 2, 0 -_080AFF54: .4byte gSharedMem + 0x19338 -_080AFF58: - movs r0, 0x1 -_080AFF5A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80AFF28 - - thumb_func_start sub_80AFF60 -sub_80AFF60: @ 80AFF60 - push {r4,lr} - adds r3, r0, 0 - ldrh r2, [r3, 0x24] - movs r0, 0x24 - ldrsh r1, [r3, r0] - movs r4, 0x30 - ldrsh r0, [r3, r4] - cmp r1, r0 - bne _080AFF94 - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r1, 2 - ldr r0, _080AFF8C @ =gSharedMem + 0x19338 - adds r1, r0 - ldrb r2, [r1, 0x2] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x2] - ldr r0, _080AFF90 @ =SpriteCallbackDummy - str r0, [r3, 0x1C] - b _080AFF9A - .align 2, 0 -_080AFF8C: .4byte gSharedMem + 0x19338 -_080AFF90: .4byte SpriteCallbackDummy -_080AFF94: - ldrh r0, [r3, 0x32] - adds r0, r2, r0 - strh r0, [r3, 0x24] -_080AFF9A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AFF60 - - thumb_func_start sub_80AFFA0 -sub_80AFFA0: @ 80AFFA0 - push {r4-r6,lr} - movs r2, 0 - ldr r6, _080AFFD0 @ =gSprites - ldr r5, _080AFFD4 @ =gUnknown_083CA338 - ldr r3, _080AFFD8 @ =gSharedMem + 0x19338 - ldr r4, _080AFFDC @ =gUnknown_02038696 -_080AFFAC: - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r0, r2, r4 - ldrb r0, [r0] - adds r0, r5 - ldrb r0, [r0] - strh r0, [r1, 0x22] - adds r3, 0x4 - adds r2, 0x1 - cmp r2, 0x3 - ble _080AFFAC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AFFD0: .4byte gSprites -_080AFFD4: .4byte gUnknown_083CA338 -_080AFFD8: .4byte gSharedMem + 0x19338 -_080AFFDC: .4byte gUnknown_02038696 - thumb_func_end sub_80AFFA0 - - thumb_func_start sub_80AFFE0 -sub_80AFFE0: @ 80AFFE0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - ldr r6, _080B0008 @ =gUnknown_02038696 - ldr r4, _080B000C @ =gSprites - ldr r2, _080B0010 @ =gSharedMem + 0x19338 -_080AFFEE: - adds r0, r3, r6 - ldrb r0, [r0] - cmp r0, 0x1 - bls _080B0024 - cmp r5, 0 - bne _080B0014 - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r0, 0xB4 - b _080B0022 - .align 2, 0 -_080B0008: .4byte gUnknown_02038696 -_080B000C: .4byte gSprites -_080B0010: .4byte gSharedMem + 0x19338 -_080B0014: - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r0, 0x80 - lsls r0, 1 -_080B0022: - strh r0, [r1, 0x20] -_080B0024: - adds r2, 0x4 - adds r3, 0x1 - cmp r3, 0x3 - ble _080AFFEE - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80AFFE0 - - thumb_func_start sub_80B0034 -sub_80B0034: @ 80B0034 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080B00A8 @ =gUnknown_083CA3E4 - bl LoadSpritePalette - movs r5, 0 - ldr r0, _080B00AC @ =gUnknown_083CA33C - mov r8, r0 - ldr r7, _080B00B0 @ =gSprites - movs r6, 0 -_080B004A: - lsls r0, r5, 3 - ldr r1, _080B00B4 @ =gUnknown_083CA3C4 - adds r0, r1 - bl LoadCompressedObjectPic - ldr r0, _080B00B8 @ =gSpriteTemplate_83CA3F4 - adds r0, r6, r0 - ldr r1, _080B00BC @ =gUnknown_02038696 - adds r1, r5, r1 - ldrb r1, [r1] - add r1, r8 - ldrb r2, [r1] - movs r1, 0xCC - movs r3, 0 - bl CreateSprite - lsls r4, r5, 2 - ldr r1, _080B00C0 @ =gSharedMem + 0x19338 - adds r4, r1 - strb r0, [r4, 0x1] - ldrb r1, [r4, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldr r1, _080B00C4 @ =gSubspriteTables_83CA464 - bl SetSubspriteTables - ldrb r1, [r4, 0x1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r6, 0x18 - adds r5, 0x1 - cmp r5, 0x3 - ble _080B004A - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B00A8: .4byte gUnknown_083CA3E4 -_080B00AC: .4byte gUnknown_083CA33C -_080B00B0: .4byte gSprites -_080B00B4: .4byte gUnknown_083CA3C4 -_080B00B8: .4byte gSpriteTemplate_83CA3F4 -_080B00BC: .4byte gUnknown_02038696 -_080B00C0: .4byte gSharedMem + 0x19338 -_080B00C4: .4byte gSubspriteTables_83CA464 - thumb_func_end sub_80B0034 - - thumb_func_start sub_80B00C8 -sub_80B00C8: @ 80B00C8 - push {lr} - ldr r0, _080B0104 @ =gUnknown_083CA46C - bl LoadCompressedObjectPic - ldr r0, _080B0108 @ =gUnknown_083CA474 - bl LoadSpritePalette - ldr r0, _080B010C @ =gSpriteTemplate_83CA484 - movs r1, 0x1E - movs r2, 0x2C - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080B0110 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r2, [r1] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r1] - ldr r1, _080B0114 @ =gSharedMem + 0x19204 - adds r1, 0x58 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080B0104: .4byte gUnknown_083CA46C -_080B0108: .4byte gUnknown_083CA474 -_080B010C: .4byte gSpriteTemplate_83CA484 -_080B0110: .4byte gSprites -_080B0114: .4byte gSharedMem + 0x19204 - thumb_func_end sub_80B00C8 - - thumb_func_start nullsub_18 -nullsub_18: @ 80B0118 - bx lr - thumb_func_end nullsub_18 - - thumb_func_start unref_sub_80B011C -unref_sub_80B011C: @ 80B011C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080B0198 @ =gUnknown_083CC3AC - bl LoadCompressedObjectPic - movs r4, 0 - ldr r5, _080B019C @ =gUnknown_083CC3B4 -_080B012C: - lsls r0, r4, 3 - adds r0, r5 - bl LoadCompressedObjectPalette - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B012C - movs r4, 0 - ldr r5, _080B01A0 @ =gUnknown_083CA330 - adds r0, r5, 0x1 - mov r8, r0 - ldr r7, _080B01A4 @ =gSprites - ldr r6, _080B01A8 @ =gSharedMem + 0x1920D -_080B014A: - lsls r2, r4, 1 - adds r0, r2, r4 - lsls r0, 3 - ldr r1, _080B01AC @ =gSpriteTemplate_83CC454 - adds r0, r1 - adds r1, r2, r5 - ldrb r1, [r1] - add r2, r8 - ldrb r2, [r2] - movs r3, 0x5 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - movs r2, 0x3E - adds r2, r1 - mov r12, r2 - ldrb r2, [r2] - movs r3, 0x4 - orrs r2, r3 - mov r3, r12 - strb r2, [r3] - strh r4, [r1, 0x2E] - adds r1, r4, r6 - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080B014A - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B0198: .4byte gUnknown_083CC3AC -_080B019C: .4byte gUnknown_083CC3B4 -_080B01A0: .4byte gUnknown_083CA330 -_080B01A4: .4byte gSprites -_080B01A8: .4byte gSharedMem + 0x1920D -_080B01AC: .4byte gSpriteTemplate_83CC454 - thumb_func_end unref_sub_80B011C - - thumb_func_start unref_sub_80B01B0 -unref_sub_80B01B0: @ 80B01B0 - push {r4,r5,lr} - movs r2, 0 - ldr r5, _080B01D4 @ =gSharedMem + 0x1920D - ldr r4, _080B01D8 @ =gSprites + 0x1C - ldr r3, _080B01DC @ =sub_80B0238 -_080B01BA: - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - str r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _080B01BA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080B01D4: .4byte gSharedMem + 0x1920D -_080B01D8: .4byte gSprites + 0x1C -_080B01DC: .4byte sub_80B0238 - thumb_func_end unref_sub_80B01B0 - thumb_func_start unref_sub_80B01E0 unref_sub_80B01E0: @ 80B01E0 push {r4,r5,lr} diff --git a/include/global.h b/include/global.h index 6670f3837..620806d1a 100644 --- a/include/global.h +++ b/include/global.h @@ -41,8 +41,8 @@ fndec\ #define POKEMON_NAME_LENGTH 10 #define OT_NAME_LENGTH 7 -#define min(a, b) (a >= b ? a : b) -#define max(a, b) (a <= b ? a : b) +#define min(a, b) ((a) <= (b) ? (a) : (b)) +#define max(a, b) ((a) >= (b) ? (a) : (b)) // why does GF hate 2d arrays #define MULTI_DIM_ARR(x, dim, y) ((x) * dim + (y)) diff --git a/src/contest.c b/src/contest.c index afcc75743..c44b07dea 100644 --- a/src/contest.c +++ b/src/contest.c @@ -11,6 +11,7 @@ #include "ewram.h" #include "graphics.h" #include "link.h" +#include "m4a.h" #include "main.h" #include "menu.h" #include "menu_cursor.h" @@ -49,7 +50,9 @@ struct Shared19204 /*0x19204*/ u8 unk19204; /*0x19205*/ u8 unk19205; /*0x19206*/ u8 unk19206[4]; - /*0x1920A*/ u16 unk1920A_0:4; + /*0x1920A*/ u16 unk1920A_0:1; + /*0x1920A*/ u16 unk1920A_1:1; + /*0x1920A*/ u16 unk1920A_2:2; u16 unk1920A_4:1; u16 unk1920A_5:1; u16 unk1920A_6:1; @@ -58,19 +61,27 @@ struct Shared19204 u16 unk1920B_1:1; u16 unk1920B_2:1; /*0x1920C*/ u8 unk1920C; - /*0x1920D*/ u8 filler1920D[0x14-0xD]; + /*0x1920D*/ u8 unk1920D[0x14-0xD]; /*0x19214*/ u8 unk19214; /*0x19215*/ u8 unk19215; /*0x19216*/ u8 unk19216; /*0x19217*/ s8 unk19217; /*0x19218*/ u8 unk19218[4]; /*0x1921C*/ u32 unk1921C; - u8 filler19220[0x5D-0x20]; + u16 unk19220[2][4]; // unknown length + u8 filler19230[0x48-0x30]; + u8 unk19248[5][4]; + u8 unk1925C; /*0x1925D*/ u8 unk1925D; /*0x1925E*/ u8 unk1925E; /*0x1925F*/ u8 filler1925F; }; +#define static_assert(expr) \ + typedef char ____[(expr) ? 1 : -1] + +static_assert(offsetof(struct Shared19204, filler19230) == 0x19230 - 0x19204); + struct UnknownContestStruct1 { u16 unk0; @@ -82,24 +93,29 @@ struct UnknownContestStruct1 u8 unkB_0:2; u8 unkB_2:5; u8 unkB_7:1; - /* u8 unkC_0:1; - u8 unkC_1:1; - u8 unkC_2:1; - */ - u8 unkC; + u8 unkC_1:2; s8 unkD; u8 unkE; u8 unkF; - u8 unk10_0:2; - u8 unk10_2:2; - u8 unk10_4:2; // definitely a bitfield - u8 unk11; + u8 unk10_0:1; // * + u8 unk10_1:1; // * + u8 unk10_2:1; + u8 unk10_3:1; + u8 unk10_4:2; // * + u8 unk10_6:2; + u8 unk11_0:2; + u8 unk11_2:1; + u8 unk11_3:1; + u8 unk11_4:1; + u8 unk11_5:1; u8 unk12; u8 unk13; - u8 unk14; - u8 unk15_0:1; // Is this a bitfield or not? sub_80ABCDC says no. - u8 unk15_1:3; + u8 unk14; // s8? + u8 unk15_0:1; + u8 unk15_1:1; + u8 unk15_2:1; + u8 unk15_3:1; u8 unk15_4:1; u8 unk15_5:1; u8 unk15_6:1; @@ -123,20 +139,13 @@ struct UnknownContestStruct3 // possibly the same as UnknownContestStruct3? struct UnknownContestStruct4 { - u8 filler0[2]; - u8 unk2; // maybe a bitfield - u8 filler3; -}; - -/* -struct UnknownContestStruct5_alt -{ - u8 bits_0; + u8 unk0; u8 unk1; - s8 unk2; + u8 unk2_0:1; + u8 unk2_1:1; + u8 unk2_2:1; u8 filler3; }; -*/ struct UnknownContestStruct5 { @@ -148,6 +157,7 @@ struct UnknownContestStruct5 u8 filler3; }; +#if 0 struct Shared19260 { /*0x19260*/ struct UnknownContestStruct1 unk19260[4]; @@ -159,11 +169,12 @@ struct Shared19260 /*0x19338*/ struct UnknownContestStruct4 unk19338[4]; /*0x19348*/ struct UnknownContestStruct3 unk19348[5]; }; +#endif #define shared15800 (gSharedMem + 0x15800) #define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000)) #define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204)) -#define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) +//#define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260)) // These are separate structs because sub_80AC2CC requires that to match. #define shared19260_ ((struct UnknownContestStruct1 *)(gSharedMem + 0x19260)) @@ -173,6 +184,15 @@ struct Shared19260 #define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338)) #define shared19348 ((struct UnknownContestStruct3 *)(gSharedMem + 0x19348)) +struct UnknownContestStruct6 +{ + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; +}; + +extern struct MusicPlayerInfo gMPlay_SE1; extern u16 gScriptContestCategory; extern u16 gScriptContestRank; extern u8 gBattleMonForms[]; @@ -199,20 +219,39 @@ extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; extern u32 gUnknown_03005D28; -extern u16 gUnknown_02038680[]; +extern s16 gUnknown_02038680[]; +extern u16 gUnknown_02038688[]; extern u8 gUnknown_02038694; extern u8 gUnknown_02038696[]; extern u8 gUnknown_0203869B; -extern u16 gUnknown_02038670[]; +extern s16 gUnknown_02038670[]; +extern s16 gUnknown_02038678[]; +extern u8 gUnknown_02038690[]; extern struct SpriteTemplate gUnknown_02024E8C; + #define gContestOpponents gUnknown_083C9408 extern const struct ContestPokemon gContestOpponents[60]; extern const u8 gUnknown_083CA308[][2]; extern const u8 gUnknown_083CA310[][2]; extern const u8 gUnknown_083CA318[][2]; -extern const struct CompressedSpriteSheet gUnknown_083CA4BC; +extern const u8 gUnknown_083CA330[][2]; +extern const u8 gUnknown_083CA338[]; +extern const u8 gUnknown_083CA33C[]; +extern const struct CompressedSpriteSheet gUnknown_083CC3AC; +extern const struct CompressedSpritePalette gUnknown_083CC3B4[]; +extern const struct SpriteTemplate gSpriteTemplate_83CC454[]; +extern const struct SpriteSheet gUnknown_083CA350; +extern const struct SpriteTemplate gSpriteTemplate_83CA3AC; +extern const struct CompressedSpriteSheet gUnknown_083CA3C4[]; +extern const struct SpritePalette gUnknown_083CA3E4; +extern const struct SpriteTemplate gSpriteTemplate_83CA3F4[]; +extern const struct SubspriteTable gSubspriteTables_83CA464[]; +extern const struct CompressedSpriteSheet gUnknown_083CA46C; +extern const struct SpritePalette gUnknown_083CA474; +extern const struct SpriteTemplate gSpriteTemplate_83CA484; extern const struct SpriteTemplate gSpriteTemplate_83CA4A4; +extern const struct CompressedSpriteSheet gUnknown_083CA4BC; extern const struct CompressedSpriteSheet gUnknown_083CA4C4; extern const struct CompressedSpritePalette gUnknown_083CA4CC; extern const struct SpriteTemplate gUnknown_083CA4D4; @@ -225,6 +264,8 @@ extern const u8 gUnknown_083CBD79[]; extern const u8 gUnknown_083CBD9D[]; extern const u8 gUnknown_083CBDC6[]; extern const u8 gUnknown_083CBF60[]; +extern const u8 gUnknown_083CB02C[]; +extern const u8 *const gUnknown_083CB2F0[]; extern const u8 gUnknown_083CC075[]; extern const u8 gUnknown_083CC0A0[]; extern const u8 gUnknown_083CC0BC[]; @@ -236,11 +277,10 @@ extern const u8 *const gUnknown_083CC2D8[]; extern const u8 *const gUnknown_083CC330[]; extern const u8 gUnknownText_UnknownFormatting2[]; extern const u8 gUnknownText_UnknownFormatting3[]; -extern const u8 gUnknown_083CB02C[]; -extern const u8 *const gUnknown_083CB2F0[]; extern const u8 gUnknown_083CC59C[]; extern const u8 gUnknown_083CC5A2[]; extern const u8 gUnknownText_MissedTurn[]; +extern const u8 gUnknownText_LinkStandbyAndWinner[]; void sub_80AB350(void); @@ -315,20 +355,30 @@ void sub_80AF1B8(void); void sub_80AF2A0(u8); void sub_80AF2FC(void); void sub_80AF3C0(void); -u8 sub_80AF59C(u8); +bool8 sub_80AF59C(u8); +s16 sub_80AF688(u8); +void sub_80AF6A0(void); +bool8 sub_80AF828(s32, s32, struct UnknownContestStruct6 *); void sub_80AF860(void); +void sub_80AF94C(u8); void sub_80AFA5C(void); -void sub_80AFBA0(s16, s16, u8); +u16 sub_80AFB40(u8); +s8 sub_80AFB74(s16); +u8 sub_80AFBA0(s16, s16, u8); +void sub_80AFC74(u8); void sub_80AFE30(void); void sub_80AFF10(void); -u8 sub_80AFF28(void); -void sub_80AFFE0(u8); +bool8 sub_80AFF28(void); +void sub_80AFF60(struct Sprite *); +void sub_80AFFE0(bool8); void sub_80B0034(void); void sub_80B00C8(void); -void nullsub_18(); +void nullsub_18(int); +void sub_80B0238(struct Sprite *); void sub_80B0324(void); void sub_80B03A8(u8); void sub_80B0518(void); +void nullsub_19(); void sub_80B09B0(); u8 sub_80B09E4(); void sub_80B0BC4(); @@ -340,6 +390,7 @@ void sub_80B146C(u8, u8); void sub_80B159C(void); void sub_80B1710(); void sub_80B1928(void); +s8 contest_get_move_excitement(u16); void sub_80B1B14(void); void sub_80B1BDC(void); void sub_80B1CBC(); @@ -749,7 +800,7 @@ void sub_80ABB70(u8 taskId) void *dest = shared18000.unk18204; DmaCopy32(3, src, dest, 0x400); } - if (sub_80AF59C(gContestPlayerMonIndex) == 0) + if (!sub_80AF59C(gContestPlayerMonIndex)) StringCopy(gDisplayedStringBattle, gUnknown_083CAF84); else StringCopy(gDisplayedStringBattle, gUnknown_083CAFAE); @@ -771,9 +822,9 @@ void sub_80ABC70(u8 taskId) if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys == B_BUTTON)) { PlaySE(SE_SELECT); - if (sub_80AF59C(gContestPlayerMonIndex) == 0) + if (!sub_80AF59C(gContestPlayerMonIndex)) { - sub_80AFFE0(1); + sub_80AFFE0(TRUE); gTasks[taskId].func = sub_80ABCDC; } else @@ -812,7 +863,6 @@ void sub_80ABCDC(u8 taskId) { r5 = StringCopy(sp8, gUnknownText_UnknownFormatting2); } - //_080ABDA0 else if (r4 != 0 && shared19260_[gContestPlayerMonIndex].unk8 == r4 && gContestMoves[r4].effect != 3) @@ -861,7 +911,7 @@ void sub_80ABEA0(u8 taskId) case B_BUTTON: sub_814A904(); PlaySE(SE_SELECT); - sub_80AFFE0(0); + sub_80AFFE0(FALSE); FillWindowRect_DefaultPalette( &gUnknown_03004210, 0, @@ -869,7 +919,7 @@ void sub_80ABEA0(u8 taskId) gUnknown_083CA340[0][1], gUnknown_083CA340[0][2], gUnknown_083CA340[0][3]); - if (sub_80AF59C(gContestPlayerMonIndex) == 0) + if (!sub_80AF59C(gContestPlayerMonIndex)) StringCopy(gDisplayedStringBattle, gUnknown_083CAF84); else StringCopy(gDisplayedStringBattle, gUnknown_083CAFAE); @@ -933,7 +983,7 @@ void sub_80AC0C8(u8 taskId) SetTaskFuncWithFollowupFunc(taskId2, sub_80C8A38, sub_80AC15C); gTasks[taskId].func = nullsub_89; sub_80AF860(); - sub_80AFFE0(0); + sub_80AFFE0(FALSE); } else { @@ -953,7 +1003,7 @@ void sub_80AC188(u8 taskId) sub_80AF138(); gUnknown_030042A0 = 0; gUnknown_03004280 = 0; - sub_80AFFE0(0); + sub_80AFFE0(FALSE); { void *src = gPlttBufferFaded; void *dest = shared18000.unk18604; @@ -1036,8 +1086,8 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 2; return; case 2: - if ((shared19260_[r7].unkC & 6) - || (shared19260_[r7].unkB_7)) + if (shared19260_[r7].unkC_1 != 0 + || shared19260_[r7].unkB_7) { gTasks[taskId].data[0] = 31; } @@ -1069,12 +1119,12 @@ void sub_80AC2CC(u8 taskId) spriteId = gTasks[taskId].data[2]; if (gSprites[spriteId].callback == SpriteCallbackDummy) { - if (!(shared19338[r7].unk2 & 2)) + if (!shared19338[r7].unk2_1) gTasks[taskId].data[0] = 5; } return; case 5: - if (shared19260_[r7].unkC & 1) + if (shared19260_[r7].unkC_0) { gTasks[taskId].data[0] = 33; } @@ -1174,15 +1224,15 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 23; return; case 48: - if ((shared19260_[r7].unk11 & 3) == 1) + if (shared19260_[r7].unk11_0 == 1) { sub_80B1710(5); } - else if ((shared19260_[r7].unk11 & 3) == 2) + else if (shared19260_[r7].unk11_0 == 2) { sub_80B1710(6); } - else if ((shared19260_[r7].unk11 & 3) == 3) + else if (shared19260_[r7].unk11_0 == 3) { sub_80B1710(7); } @@ -1206,7 +1256,7 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 13; return; case 13: - if (!(shared19338[shared19204.unk19215].unk2 & 4)) + if (!shared19338[shared19204.unk19215].unk2_2) gTasks[taskId].data[0] = 35; return; case 35: @@ -1294,7 +1344,7 @@ void sub_80AC2CC(u8 taskId) case 29: for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++) ; - if (!(shared19338[r6].unk2 & 4)) + if (!shared19338[r6].unk2_2) gTasks[taskId].data[0] = 39; return; case 39: @@ -1339,8 +1389,8 @@ void sub_80AC2CC(u8 taskId) if (gTasks[taskId].data[10]++ > 9) { gTasks[taskId].data[10] = 0; - if ((shared19260_[r7].unkC & 6) - || (shared19260_[r7].unk11 & 4)) + if (shared19260_[r7].unkC_1 != 0 + || shared19260_[r7].unk11_2) { sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); @@ -1410,7 +1460,7 @@ void sub_80AC2CC(u8 taskId) } return; case 16: - if (!(shared19338[r7].unk2 & 4)) + if (!shared19338[r7].unk2_2) { gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 17; @@ -1446,7 +1496,7 @@ void sub_80AC2CC(u8 taskId) return; case 18: sub_80B0D7C(); - if (!(shared19338[r7].unk2 & 4)) + if (!shared19338[r7].unk2_2) { gTasks[taskId].data[10] = 0; sub_80AF138(); @@ -1461,7 +1511,7 @@ void sub_80AC2CC(u8 taskId) else { r4 = shared19328.bits_0; - if (shared19260_[r7].unk11 & 0x10) + if (shared19260_[r7].unk11_4) { r4 = 1; StringCopy(gStringVar3, gMoveNames[shared19260_[r7].unk6]); @@ -1570,7 +1620,7 @@ void sub_80AC2CC(u8 taskId) } break; case 3: - if (!(shared19338[r7].unk2 & 4)) + if (!shared19338[r7].unk2_2) { if (!shared19204.unk1920A_7) { @@ -1590,7 +1640,7 @@ void sub_80AC2CC(u8 taskId) } return; case 43: - if (!(shared19338[r7].unk2 & 4)) + if (!shared19338[r7].unk2_2) { sub_80AF138(); gTasks[taskId].data[0] = 55; @@ -1816,7 +1866,7 @@ void sub_80ADA4C(u8 taskId) void sub_80ADAD8(u8 taskId) { - if (sub_80AFF28() != 0) + if (sub_80AFF28()) gTasks[taskId].func = sub_80ADB04; } @@ -1875,7 +1925,7 @@ void sub_80ADC4C(u8 taskId) void sub_80ADC84(u8 taskId) { - if (sub_80AFF28() != 0) + if (sub_80AFF28()) { gTasks[taskId].data[0] = 0; gTasks[taskId].func = sub_80ADCB4; @@ -1982,7 +2032,7 @@ void sub_80ADF4C(u8 taskId) SetTaskFuncWithFollowupFunc(taskId2, sub_80C8AD0, sub_80ADF98); gTasks[taskId].func = nullsub_89; sub_80AF860(); - sub_80AFFE0(0); + sub_80AFFE0(FALSE); } void sub_80ADF98(u8 taskId) @@ -2561,7 +2611,7 @@ void sub_80AED7C(u16 a, u8 b) { u8 r5 = gUnknown_02038696[b] * 5 + 2; - if (sub_80AF59C(b) == 0 && a != 0) + if (!sub_80AF59C(b) && a != 0) { u16 tile = sub_80AEB68(a, b); @@ -2694,11 +2744,11 @@ bool8 sub_80AF038(u8 a) u16 r4 = 0; u8 r6 = gUnknown_02038696[a] * 5 + 2; - if (shared19260_[a].unk10_0 != 0 || shared19260_[a].unk12 != 0 || shared19260_[a].unkF != 0) + if (shared19260_[a].unk10_0 != 0 || shared19260_[a].unk10_1 != 0 || shared19260_[a].unk12 != 0 || shared19260_[a].unkF != 0) r4 = sub_80AEFE8(a, 0); - else if (shared19260_[a].unkC & 1) + else if (shared19260_[a].unkC_0) r4 = sub_80AEFE8(a, 1); - else if ((shared19260_[a].unkC & 6) || (shared19260_[a].unkB_7)) + else if (shared19260_[a].unkC_1 != 0 || shared19260_[a].unkB_7) r4 = sub_80AEFE8(a, 2); else r5 = FALSE; @@ -2734,7 +2784,7 @@ void sub_80AF138(void) u16 sub_80AF15C(u8 a) { - if (sub_80AF59C(a) != 0) + if (sub_80AF59C(a)) return 0; if (a == gContestPlayerMonIndex) { @@ -2872,24 +2922,609 @@ void sub_80AF3C0(void) bool8 sub_80AF404(u8 a) { - if ((shared19260_[a].unkC & 6) || shared19260_[a].unkB_7) + if (shared19260_[a].unkC_1 != 0 || shared19260_[a].unkB_7) return FALSE; else return TRUE; } -/* void sub_80AF438(void) { + u8 i; + + for (i = 0; i < 4; i++) + { + // This is bitfield hell... + shared19260_[i].unk2 = 0; + shared19260_[i].unk0 = 0; + shared19260_[i].unk12 = 0; + if (shared19260_[i].unkC_1 > 0) + shared19260_[i].unkC_1--; + shared19260_[i].unkE = 0; + shared19260_[i].unk10_0 = 0; + shared19260_[i].unkF = 0; + shared19260_[i].unk10_1 = 0; + shared19260_[i].unk10_2 = 0; + shared19260_[i].unk10_3 = 0; + shared19260_[i].unkC_0 = 0; + shared19260_[i].unk13 = 0xFF; + shared19260_[i].unk14 = -1; + shared19260_[i].unk10_4 = 0; + shared19260_[i].unk15_2 = shared19260_[i].unk15_0; + shared19260_[i].unk15_0 = 0; + shared19260_[i].unk11_0 = 0; + shared19260_[i].unk11_5 = 0; + if (shared19260_[i].unk11_2) + { + shared19260_[i].unkC_1 = 1; + shared19260_[i].unk11_2 = 0; + } + if (shared19260_[i].unk11_3) + { + shared19260_[i].unkB_7 = 1; + shared19260_[i].unk11_3 = 0; + } + shared19260_[i].unk11_4 = 0; + } + for (i = 0; i < 4; i++) + { + shared19260_[i].unk8 = shared19260_[i].unk6; + shared19204.unk19220[shared19204.unk19205][i] = shared19260_[i].unk8; + shared19204.unk19248[shared19204.unk19205][i] = contest_get_move_excitement(shared19260_[i].unk6); + shared19260_[i].unk6 = 0; + } + shared19328.bits_8 = 0; +} + +bool8 sub_80AF59C(u8 a) +{ + if (shared19260_[a].unkC_1 != 0 || shared19260_[a].unkB_7) + return TRUE; + else + return FALSE; +} + +bool8 unref_sub_80AF5D0(u8 a, u8 b) +{ + u8 i; + + if (a != gContestPlayerMonIndex) + return TRUE; + for (i = 0; i < 4; i++) + { + if (b == 3) + { + shared19204.unk1920A_0 = 1; + return TRUE; + } + if (b == 4) + { + shared19204.unk1920A_1 = 1; + return TRUE; + } + if (shared19204.unk19206[i] == b) + return TRUE; + if (shared19204.unk19206[i] == 0xFF) + { + shared19204.unk19206[i] = b; + return TRUE; + } + } + return FALSE; +} + +void sub_80AF630(u8 a) +{ + gUnknown_02038688[a] = sub_80AF688(a); + gUnknown_02038678[a] = gUnknown_02038670[a] + gUnknown_02038688[a]; +} + +void sub_80AF668(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + sub_80AF630(i); + sub_80AF6A0(); +} + +s16 sub_80AF688(u8 a) +{ + return gUnknown_02038680[a] * 2; +} + +// Sorts something. Determines turn order, maybe? +void sub_80AF6A0(void) +{ + u16 sp0[4] = {0}; + struct UnknownContestStruct6 sp8[4]; + s32 i; + s32 j; + + for (i = 0; i < 4; i++) + { + s32 r2; + + sp0[i] = Random(); + for (r2 = 0; r2 < i; r2++) + { + if (sp0[i] == sp0[r2]) + { + i--; + break; + } + } + } + + for (i = 0; i < 4; i++) + { + sp8[i].unk0 = gUnknown_02038678[i]; + sp8[i].unk4 = gUnknown_02038670[i]; + sp8[i].unk8 = sp0[i]; + sp8[i].unkC = i; + } + + for (i = 0; i < 3; i++) + { + for (j = 3; j > i; j--) + { + if (sub_80AF828(j - 1, j, sp8)) + { + struct UnknownContestStruct6 temp; + + temp.unk0 = sp8[j - 1].unk0; + temp.unk4 = sp8[j - 1].unk4; + temp.unk8 = sp8[j - 1].unk8; + temp.unkC = sp8[j - 1].unkC; + + sp8[j - 1].unk0 = sp8[j].unk0; + sp8[j - 1].unk4 = sp8[j].unk4; + sp8[j - 1].unk8 = sp8[j].unk8; + sp8[j - 1].unkC = sp8[j].unkC; + + sp8[j].unk0 = temp.unk0; + sp8[j].unk4 = temp.unk4; + sp8[j].unk8 = temp.unk8; + sp8[j].unkC = temp.unkC; + } + } + } + + for (i = 0; i < 4; i++) + gUnknown_02038690[sp8[i].unkC] = i; +} + +bool8 sub_80AF828(s32 a, s32 b, struct UnknownContestStruct6 *c) +{ + bool8 retVal; + + if (c[a].unk0 < c[b].unk0) + retVal = TRUE; + else if (c[a].unk0 > c[b].unk0) + retVal = FALSE; + else if (c[a].unk4 < c[b].unk4) + retVal = TRUE; + else if (c[a].unk4 > c[b].unk4) + retVal = FALSE; + else if (c[a].unk8 < c[b].unk8) + retVal = TRUE; + else + retVal = FALSE; + return retVal; +} + +void sub_80AF860(void) +{ + gUnknown_030042A0 = 0; + gUnknown_03004280 = 0; + sub_80AF138(); + sub_8003460(&gMenuWindow, gUnknownText_LinkStandbyAndWinner, 776, 1, 15); +} + +u8 unref_sub_80AF89C(s16 a, s16 b, u8 c, u8 d) +{ + u8 taskId; u8 r5; + s8 r4; + u16 r0; + + shared19338[d].unk2_2 = 1; + taskId = CreateTask(sub_80AF94C, 20); + r5 = sub_80AFB74(a); + r4 = sub_80AFB74(a + b) - r5; + r0 = sub_80AFB40(d); + gTasks[taskId].data[0] = r5; + gTasks[taskId].data[1] = r4; + gTasks[taskId].data[2] = r0 + c; + gTasks[taskId].data[3] = d; + if (b < 0) + nullsub_19(d); + return taskId; +} + +void sub_80AF94C(u8 taskId) +{ + u8 r5 = gTasks[taskId].data[3]; + + if (gTasks[taskId].data[1] == 0) + { + nullsub_19(r5); + DestroyTask(taskId); + shared19338[r5].unk2_2 = 0; + } + else if (++gTasks[taskId].data[10] > 29) + { + u8 r6; + + gTasks[taskId].data[10] = 0; + if (gTasks[taskId].data[1] < 0) + { + r6 = gTasks[taskId].data[0]--; + gTasks[taskId].data[1]++; + PlaySE(SE_BOO); + } + else + { + r6 = ++gTasks[taskId].data[0]; + gTasks[taskId].data[1]--; + PlaySE(SE_PIN); + } + if ((u16)gTasks[taskId].data[2] != 0xFFFF) + { + RequestSpriteCopy( + &gTasks[taskId].data[2], + (void *)(VRAM + 0xC000 + (147 + r6 + r5 * 160) * 2), + 2); + } + else + { + u8 i; + + for (i = 0; i < 3; i++) + { + if (gTasks[taskId].data[i + 4] < 0) + { + RequestSpriteCopy( + &gTasks[taskId].data[i + 7], + (void *)(VRAM + 0xC000 + (147 + r6 + r5 * 160) * 2), + 2); + gTasks[taskId].data[i + 4]++; + break; + } + } + } + } +} + +void sub_80AFA5C(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + DmaClear16(3, (void *)(VRAM + 0xC000 + (86 + i * 160) * 2), 16); + DmaClear16(3, (void *)(VRAM + 0xC000 + (118 + i * 160) * 2), 16); + } +} + +void unref_sub_80AFAB8(s16 a, u8 b) +{ + u8 r5 = sub_80AFB74(a); + u16 r2; + u8 i; + u16 arr[9]; + + if (b == 0) + r2 = 0x50A2; + else if (b == 1) + r2 = 0x60A2; + else if (b == 2) + r2 = 0x70A2; + else + r2 = 0x80A2; - for (r5 = 0; r5 < 4; r5++) + for (i = 0; i < 9; i++) { - shared19260_[r5].unk2 = 0; - shared19260_[r5].unk0 = 0; - shared19260_[r5].unk12 = 0; - if (shared19260_[r5].unkC & 6) + if (i < r5) + arr[i] = r2; + else + arr[i] = 0; + } + + { + void *src = arr; + void *dest = (void *)(VRAM + 0xC000 + (148 + b * 160) * 2); + DmaCopy16(3, src, dest, sizeof(arr)); + } +} + +u16 sub_80AFB40(u8 a) +{ + u16 var; + + if (a == 0) + var = 0x5011; + else if (a == 1) + var = 0x6011; + else if (a == 2) + var = 0x7011; + else + var = 0x8011; + return var + 1; +} + +s8 sub_80AFB74(s16 a) +{ + s8 retVal = a / 10; + + if (retVal > 16) + retVal = 16; + else if (retVal < -16) + retVal = -16; + return retVal; +} + +u8 sub_80AFBA0(s16 a, s16 b, u8 c) +{ + u8 taskId; + s8 r4; + s8 r5; + + shared19338[c].unk2_2 = 1; + taskId = CreateTask(sub_80AFC74, 20); + r4 = sub_80AFB74(a); + r5 = sub_80AFB74(a + b) - r4; + sub_80AFB40(c); // unused return value + gTasks[taskId].data[0] = abs(r4); + gTasks[taskId].data[1] = r5; + if (r4 > 0 || (r4 == 0 && r5 > 0)) + gTasks[taskId].data[2] = 1; + else + gTasks[taskId].data[2] = -1; + gTasks[taskId].data[3] = c; + if (b < 0) + nullsub_19(c); + return taskId; +} + +void sub_80AFC74(u8 taskId) +{ + u8 r7 = gTasks[taskId].data[3]; + s16 r3 = gTasks[taskId].data[0]; + s16 r1 = gTasks[taskId].data[1]; + + if (++gTasks[taskId].data[10] > 14) + { + u16 r6; + u8 r5; + u8 r10; + + gTasks[taskId].data[10] = 0; + if (gTasks[taskId].data[1] == 0) + { + nullsub_19(r7); + DestroyTask(taskId); + shared19338[r7].unk2_2 = 0; + return; + } + else if (r3 == 0) + { + if (r1 < 0) + { + r6 = sub_80AFB40(r7) + 2; + gTasks[taskId].data[1]++; + } + else + { + r6 = sub_80AFB40(r7); + gTasks[taskId].data[1]--; + } + r5 = gTasks[taskId].data[0]++; + } + else + { + if (gTasks[taskId].data[2] < 0) + { + if (r1 < 0) + { + r5 = gTasks[taskId].data[0]++; + gTasks[taskId].data[1]++; + r6 = sub_80AFB40(r7) + 2; + } + else + { + r5 = --gTasks[taskId].data[0]; + r6 = 0; + gTasks[taskId].data[1]--; + } + } + else + { + if (r1 < 0) + { + r5 = --gTasks[taskId].data[0]; + r6 = 0; + gTasks[taskId].data[1]++; + } + else + { + r5 = gTasks[taskId].data[0]++; + gTasks[taskId].data[1]--; + r6 = sub_80AFB40(r7); + } + } + } + r10 = r5; + if (r5 > 7) + r5 += 24; + // Seriously, a 2-byte CpuFill? Why? + CpuFill16(r6, (void *)(VRAM + 0xC000 + (0x56 + r5 + gUnknown_02038696[r7] * 160) * 2), 2); + if (r1 > 0) + { + PlaySE(SE_C_GAJI); + m4aMPlayImmInit(&gMPlay_SE1); + m4aMPlayPitchControl(&gMPlay_SE1, 0xFFFF, r10 * 256); + } + else + { + PlaySE(SE_BOO); + } + if (r5 == 0 && r6 == 0) + gTasks[taskId].data[2] = -gTasks[taskId].data[2]; + } +} +void sub_80AFE30(void) +{ + s32 i; + + LoadSpriteSheet(&gUnknown_083CA350); + for (i = 0; i < 4; i++) + { + u8 y = gUnknown_083CA338[gUnknown_02038696[i]]; + + shared19338[i].unk0 = CreateSprite(&gSpriteTemplate_83CA3AC, 180, y, 1); } } -*/
\ No newline at end of file + +void sub_80AFE78(u8 a) +{ + u8 spriteId; + s16 r5; + + shared19338[a].unk2_0 = 1; + spriteId = shared19338[a].unk0; + r5 = shared19260_[a].unk4 / 10 * 2; + if (r5 > 56) + r5 = 56; + else if (r5 < 0) + r5 = 0; + gSprites[spriteId].invisible = FALSE; + gSprites[spriteId].data[0] = a; + gSprites[spriteId].data[1] = r5; + if (gSprites[spriteId].data[1] > gSprites[spriteId].pos2.x) + gSprites[spriteId].data[2] = 1; + else + gSprites[spriteId].data[2] = -1; + gSprites[spriteId].callback = sub_80AFF60; +} + +void sub_80AFF10(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + sub_80AFE78(i); +} + +bool8 sub_80AFF28(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (shared19338[i].unk2_0) + break; + } + if (i == 4) + return TRUE; + else + return FALSE; +} + +void sub_80AFF60(struct Sprite *sprite) +{ + if (sprite->pos2.x == sprite->data[1]) + { + shared19338[sprite->data[0]].unk2_0 = 0; + sprite->callback = SpriteCallbackDummy; + } + else + { + sprite->pos2.x += sprite->data[2]; + } +} + +void sub_80AFFA0(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + gSprites[shared19338[i].unk0].pos1.y = gUnknown_083CA338[gUnknown_02038696[i]]; +} + +void sub_80AFFE0(bool8 a) +{ + s32 i; + + for (i = 0; i < 4; i++) + { + if (gUnknown_02038696[i] > 1) + { + if (!a) + gSprites[shared19338[i].unk0].pos1.x = 180; + else + gSprites[shared19338[i].unk0].pos1.x = 256; + } + } +} + +void sub_80B0034(void) +{ + s32 i; + + LoadSpritePalette(&gUnknown_083CA3E4); + for (i = 0; i < 4; i++) + { + LoadCompressedObjectPic(&gUnknown_083CA3C4[i]); + shared19338[i].unk1 = CreateSprite( + &gSpriteTemplate_83CA3F4[i], + 204, gUnknown_083CA33C[gUnknown_02038696[i]], + 0); + SetSubspriteTables(&gSprites[shared19338[i].unk1], gSubspriteTables_83CA464); + gSprites[shared19338[i].unk1].invisible = TRUE; + } +} + +void sub_80B00C8(void) +{ + u8 spriteId; + + LoadCompressedObjectPic(&gUnknown_083CA46C); + LoadSpritePalette(&gUnknown_083CA474); + spriteId = CreateSprite(&gSpriteTemplate_83CA484, 30, 44, 1); + gSprites[spriteId].invisible = TRUE; + shared19204.unk1925C = spriteId; +} + +void nullsub_18(int unused) +{ +} + +void unref_sub_80B011C(void) +{ + u8 i; + + LoadCompressedObjectPic(&gUnknown_083CC3AC); + for (i = 0; i < 4; i++) + LoadCompressedObjectPalette(&gUnknown_083CC3B4[i]); + for (i = 0; i < 4; i++) + { + u8 spriteId = CreateSprite( + &gSpriteTemplate_83CC454[i], + gUnknown_083CA330[i][0], gUnknown_083CA330[i][1], + 5); + + gSprites[spriteId].invisible = TRUE; + gSprites[spriteId].data[0] = i; + shared19204.unk1920D[i] = spriteId; + } +} + +void unref_sub_80B01B0(void) +{ + s32 i; + + for (i = 0; i < 4; i++) + gSprites[shared19204.unk1920D[i]].callback = sub_80B0238; +} |