summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest.s1817
-rw-r--r--include/global.h4
-rw-r--r--src/contest.c789
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;
+}