summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/unk_0202F150.s723
-rw-r--r--arm9/global.inc6
-rw-r--r--arm9/src/unk_0202F150_c.c549
3 files changed, 535 insertions, 743 deletions
diff --git a/arm9/asm/unk_0202F150.s b/arm9/asm/unk_0202F150.s
index 873f7d0b..395ebd44 100644
--- a/arm9/asm/unk_0202F150.s
+++ b/arm9/asm/unk_0202F150.s
@@ -12,729 +12,6 @@
.text
-
-
-
-
-
-
-
-
-
-
-
-
- thumb_func_start FUN_0202F950
-FUN_0202F950: ; 0x0202F950
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- add r7, r2, #0x0
- mov r4, #0x1
- bl FUN_02033534
- cmp r0, #0x13
- bge _0202F96C
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_0202E66C
- add r4, r0, #0x0
-_0202F96C:
- add r0, r5, #0x0
- add r1, r7, #0x0
- bl FUN_0202F150
- ldr r0, _0202F980 ; =UNK_02105D58
- mov r1, #0x4
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- pop {r3-r7, pc}
- nop
-_0202F980: .word UNK_02105D58
-
- thumb_func_start FUN_0202F984
-FUN_0202F984: ; 0x0202F984
- push {r4, lr}
- mov r4, #0x0
- bl FUN_02031190
- cmp r0, #0x0
- bne _0202F99A
- ldr r0, _0202F9D4 ; =UNK_02105D58
- ldrb r0, [r0, #0x1]
- cmp r0, #0x4
- beq _0202F9A2
- pop {r4, pc}
-_0202F99A:
- ldr r0, _0202F9D4 ; =UNK_02105D58
- ldrb r0, [r0, #0x0]
- cmp r0, #0x4
- bne _0202F9D0
-_0202F9A2:
- ldr r0, _0202F9D8 ; =UNK_021C59F4
- ldr r2, [r0, #0x4]
- ldr r0, _0202F9DC ; =0x0000067D
- ldrb r1, [r2, r0]
- cmp r1, #0x2
- bne _0202F9B4
- mov r1, #0x0
- strb r1, [r2, r0]
- mov r4, #0x1
-_0202F9B4:
- ldr r0, _0202F9D8 ; =UNK_021C59F4
- ldr r2, [r0, #0x4]
- ldr r0, _0202F9DC ; =0x0000067D
- ldrb r1, [r2, r0]
- cmp r1, #0x3
- bne _0202F9C4
- mov r4, #0x1
- strb r4, [r2, r0]
-_0202F9C4:
- cmp r4, #0x0
- beq _0202F9CC
- bl FUN_0202F5A4
-_0202F9CC:
- bl FUN_02031088
-_0202F9D0:
- pop {r4, pc}
- nop
-_0202F9D4: .word UNK_02105D58
-_0202F9D8: .word UNK_021C59F4
-_0202F9DC: .word 0x0000067D
-
- thumb_func_start FUN_0202F9E0
-FUN_0202F9E0: ; 0x0202F9E0
- ldr r1, _0202FA08 ; =UNK_021C59F4
- ldr r3, [r1, #0x4]
- ldr r1, _0202FA0C ; =0x0000067D
- ldrb r2, [r3, r1]
- cmp r2, #0x0
- bne _0202F9F6
- cmp r0, #0x1
- bne _0202F9F6
- mov r0, #0x3
- strb r0, [r3, r1]
- bx lr
-_0202F9F6:
- cmp r2, #0x1
- bne _0202FA04
- cmp r0, #0x0
- bne _0202FA04
- ldr r0, _0202FA0C ; =0x0000067D
- mov r1, #0x2
- strb r1, [r3, r0]
-_0202FA04:
- bx lr
- nop
-_0202FA08: .word UNK_021C59F4
-_0202FA0C: .word 0x0000067D
-
- thumb_func_start FUN_0202FA10
-FUN_0202FA10: ; 0x0202FA10
- ldr r3, _0202FA18 ; =FUN_0202F9E0
- mov r0, #0x1
- bx r3
- nop
-_0202FA18: .word FUN_0202F9E0
-
- thumb_func_start FUN_0202FA1C
-FUN_0202FA1C: ; 0x0202FA1C
- ldr r3, _0202FA24 ; =FUN_0202F9E0
- mov r0, #0x0
- bx r3
- nop
-_0202FA24: .word FUN_0202F9E0
-
- thumb_func_start FUN_0202FA28
-FUN_0202FA28: ; 0x0202FA28
- ldr r0, _0202FA40 ; =UNK_021C59F4
- ldr r1, [r0, #0x4]
- ldr r0, _0202FA44 ; =0x0000067D
- ldrb r0, [r1, r0]
- cmp r0, #0x2
- bne _0202FA38
- mov r0, #0x1
- bx lr
-_0202FA38:
- cmp r0, #0x3
- bne _0202FA3E
- mov r0, #0x0
-_0202FA3E:
- bx lr
- .balign 4
-_0202FA40: .word UNK_021C59F4
-_0202FA44: .word 0x0000067D
-
- thumb_func_start FUN_0202FA48
-FUN_0202FA48: ; 0x0202FA48
- push {r3, lr}
- bl FUN_0202FA28
- cmp r0, #0x1
- bne _0202FA56
- mov r0, #0x1
- pop {r3, pc}
-_0202FA56:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0202FA5C
-FUN_0202FA5C: ; 0x0202FA5C
- push {r4, lr}
- ldr r0, _0202FB00 ; =UNK_021C59F4
- mov r4, #0x0
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- beq _0202FA82
- bl FUN_02033534
- cmp r0, #0x13
- blt _0202FA78
- bl MOD04_021D83C0
- mov r4, #0x1
- b _0202FA82
-_0202FA78:
- bl FUN_0202E784
- cmp r0, #0x0
- beq _0202FA82
- mov r4, #0x1
-_0202FA82:
- cmp r4, #0x0
- beq _0202FAFE
- bl FUN_020314D0
- bl FUN_0202DBA4
- ldr r0, _0202FB00 ; =UNK_021C59F4
- mov r1, #0x0
- strb r1, [r0, #0x0]
- ldr r1, [r0, #0x4]
- ldr r0, _0202FB04 ; =0x00000548
- ldr r0, [r1, r0]
- bl FUN_0200CAB4
- ldr r1, _0202FB00 ; =UNK_021C59F4
- ldr r0, _0202FB04 ; =0x00000548
- ldr r2, [r1, #0x4]
- mov r3, #0x0
- str r3, [r2, r0]
- ldr r1, [r1, #0x4]
- sub r0, #0xec
- ldr r0, [r1, r0]
- bl FreeToHeap
- ldr r0, _0202FB00 ; =UNK_021C59F4
- ldr r1, [r0, #0x4]
- mov r0, #0x46
- lsl r0, r0, #0x4
- ldr r0, [r1, r0]
- bl FreeToHeap
- ldr r0, _0202FB00 ; =UNK_021C59F4
- ldr r1, [r0, #0x4]
- ldr r0, _0202FB08 ; =0x00000458
- ldr r0, [r1, r0]
- bl FreeToHeap
- ldr r0, _0202FB00 ; =UNK_021C59F4
- ldr r1, [r0, #0x4]
- ldr r0, _0202FB0C ; =0x00000454
- ldr r0, [r1, r0]
- bl FreeToHeap
- ldr r0, _0202FB00 ; =UNK_021C59F4
- ldr r1, [r0, #0x4]
- ldr r0, _0202FB10 ; =0x0000056C
- add r0, r1, r0
- bl FUN_0202D824
- ldr r0, _0202FB00 ; =UNK_021C59F4
- ldr r1, [r0, #0x4]
- ldr r0, _0202FB14 ; =0x0000054C
- add r0, r1, r0
- bl FUN_0202D824
- ldr r0, _0202FB00 ; =UNK_021C59F4
- ldr r0, [r0, #0x4]
- bl FreeToHeap
- ldr r0, _0202FB00 ; =UNK_021C59F4
- mov r1, #0x0
- str r1, [r0, #0x4]
-_0202FAFE:
- pop {r4, pc}
- .balign 4
-_0202FB00: .word UNK_021C59F4
-_0202FB04: .word 0x00000548
-_0202FB08: .word 0x00000458
-_0202FB0C: .word 0x00000454
-_0202FB10: .word 0x0000056C
-_0202FB14: .word 0x0000054C
-
- thumb_func_start FUN_0202FB18
-FUN_0202FB18: ; 0x0202FB18
- ldr r3, _0202FB1C ; =FUN_0202E9E8
- bx r3
- .balign 4
-_0202FB1C: .word FUN_0202E9E8
-
- thumb_func_start FUN_0202FB20
-FUN_0202FB20: ; 0x0202FB20
- push {r3, lr}
- ldr r0, _0202FB54 ; =UNK_021C59F4
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0202FB52
- bl FUN_0203050C
- bl FUN_02031190
- cmp r0, #0x0
- bne _0202FB40
- mov r0, #0x0
- bl FUN_02030E7C
- cmp r0, #0x0
- bne _0202FB48
-_0202FB40:
- bl FUN_02031280
- cmp r0, #0x0
- beq _0202FB4C
-_0202FB48:
- bl FUN_0202FEEC
-_0202FB4C:
- ldr r0, _0202FB54 ; =UNK_021C59F4
- mov r1, #0x0
- strb r1, [r0, #0x0]
-_0202FB52:
- pop {r3, pc}
- .balign 4
-_0202FB54: .word UNK_021C59F4
-
- thumb_func_start FUN_0202FB58
-FUN_0202FB58: ; 0x0202FB58
- push {r3, lr}
- bl FUN_0202F03C
- cmp r0, #0x0
- beq _0202FB7C
- bl FUN_02031190
- cmp r0, #0x0
- bne _0202FB78
- bl FUN_0202EE24
- cmp r0, #0x0
- bne _0202FB7C
- bl FUN_0202FA5C
- pop {r3, pc}
-_0202FB78:
- bl FUN_0202FA5C
-_0202FB7C:
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0202FB80
-FUN_0202FB80: ; 0x0202FB80
- push {r4, lr}
- bl FUN_02031CDC
- ldr r1, _0202FC48 ; =UNK_021C59F4
- ldr r2, [r1, #0x4]
- cmp r2, #0x0
- beq _0202FC34
- ldr r0, _0202FC4C ; =0x0000068A
- ldrb r0, [r2, r0]
- cmp r0, #0x0
- bne _0202FC16
- mov r0, #0x0
- strb r0, [r1, #0x0]
- bl FUN_0202F984
- ldr r0, _0202FC48 ; =UNK_021C59F4
- ldr r1, _0202FC50 ; =gMain
- ldr r0, [r0, #0x4]
- ldr r2, _0202FC54 ; =0x00000628
- ldr r3, [r1, #0x44]
- ldr r1, _0202FC58 ; =0x00007FFF
- ldrh r4, [r0, r2]
- and r1, r3
- orr r1, r4
- strh r1, [r0, r2]
- bl FUN_02030674
- bl FUN_0202FCCC
- ldr r0, _0202FC48 ; =UNK_021C59F4
- ldr r1, _0202FC54 ; =0x00000628
- ldr r3, [r0, #0x4]
- mov r0, #0x2
- ldrh r2, [r3, r1]
- lsl r0, r0, #0xe
- and r0, r2
- strh r0, [r3, r1]
- bl FUN_0202FA28
- cmp r0, #0x0
- bne _0202FBD6
- bl FUN_02030DA4
-_0202FBD6:
- bl FUN_02031190
- cmp r0, #0x0
- bne _0202FBE8
- mov r0, #0x0
- bl FUN_02030E7C
- cmp r0, #0x0
- bne _0202FBF0
-_0202FBE8:
- bl FUN_02031280
- cmp r0, #0x0
- beq _0202FBF4
-_0202FBF0:
- bl FUN_02030074
-_0202FBF4:
- bl FUN_02031190
- cmp r0, #0x0
- beq _0202FC0C
- bl FUN_0202FA28
- cmp r0, #0x1
- beq _0202FC0C
- bl FUN_02031280
- cmp r0, #0x0
- beq _0202FC10
-_0202FC0C:
- bl FUN_02030DFC
-_0202FC10:
- ldr r0, _0202FC48 ; =UNK_021C59F4
- mov r1, #0x1
- strb r1, [r0, #0x0]
-_0202FC16:
- ldr r0, _0202FC48 ; =UNK_021C59F4
- ldr r1, [r0, #0x4]
- ldr r0, _0202FC5C ; =0x0000065C
- ldrh r0, [r1, r0]
- bl FUN_0202ED70
- bl FUN_02031190
- cmp r0, #0x0
- bne _0202FC2E
- bl FUN_0202F8D4
-_0202FC2E:
- bl FUN_0202FB58
- b _0202FC3A
-_0202FC34:
- mov r0, #0x0
- bl FUN_0202ED70
-_0202FC3A:
- mov r0, #0x0
- bl FUN_020335F4
- bl FUN_020315A4
- mov r0, #0x1
- pop {r4, pc}
- .balign 4
-_0202FC48: .word UNK_021C59F4
-_0202FC4C: .word 0x0000068A
-_0202FC50: .word gMain
-_0202FC54: .word 0x00000628
-_0202FC58: .word 0x00007FFF
-_0202FC5C: .word 0x0000065C
-
- thumb_func_start FUN_0202FC60
-FUN_0202FC60: ; 0x0202FC60
- push {r4, lr}
- ldr r0, _0202FC7C ; =UNK_021C59F4
- mov r1, #0x0
- ldrb r4, [r0, #0x0]
- strb r1, [r0, #0x0]
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- beq _0202FC74
- bl FUN_0202F2F0
-_0202FC74:
- ldr r0, _0202FC7C ; =UNK_021C59F4
- strb r4, [r0, #0x0]
- pop {r4, pc}
- nop
-_0202FC7C: .word UNK_021C59F4
-
- thumb_func_start FUN_0202FC80
-FUN_0202FC80: ; 0x0202FC80
- push {r4, lr}
- ldr r0, _0202FCA0 ; =UNK_021C59F4
- mov r1, #0x0
- ldrb r4, [r0, #0x0]
- strb r1, [r0, #0x0]
- ldr r2, [r0, #0x4]
- cmp r2, #0x0
- beq _0202FC9A
- ldr r0, _0202FCA4 ; =0x0000067D
- mov r1, #0x1
- strb r1, [r2, r0]
- bl FUN_0202F2F0
-_0202FC9A:
- ldr r0, _0202FCA0 ; =UNK_021C59F4
- strb r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-_0202FCA0: .word UNK_021C59F4
-_0202FCA4: .word 0x0000067D
-
- thumb_func_start FUN_0202FCA8
-FUN_0202FCA8: ; 0x0202FCA8
- push {r4, lr}
- ldr r0, _0202FCC8 ; =UNK_021C59F4
- mov r1, #0x0
- ldrb r4, [r0, #0x0]
- strb r1, [r0, #0x0]
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- beq _0202FCC0
- bl FUN_0202F2F0
- bl FUN_0202E538
-_0202FCC0:
- ldr r0, _0202FCC8 ; =UNK_021C59F4
- strb r4, [r0, #0x0]
- pop {r4, pc}
- nop
-_0202FCC8: .word UNK_021C59F4
-
- thumb_func_start FUN_0202FCCC
-FUN_0202FCCC: ; 0x0202FCCC
- push {r3, lr}
- ldr r0, _0202FE14 ; =UNK_021C59F4
- ldr r1, [r0, #0x4]
- ldr r0, _0202FE18 ; =0x00000683
- ldrb r0, [r1, r0]
- cmp r0, #0x0
- beq _0202FD40
- bl FUN_02033534
- cmp r0, #0x13
- blt _0202FD06
- ldr r0, _0202FE14 ; =UNK_021C59F4
- ldr r1, _0202FE1C ; =0x00000687
- ldr r0, [r0, #0x4]
- ldrb r1, [r0, r1]
- cmp r1, #0x0
- beq _0202FCF8
- mov r1, #0x26
- bl MOD04_021D78FC
- cmp r0, #0x0
- bne _0202FCFA
-_0202FCF8:
- b _0202FE10
-_0202FCFA:
- ldr r0, _0202FE14 ; =UNK_021C59F4
- mov r2, #0x0
- ldr r1, [r0, #0x4]
- ldr r0, _0202FE18 ; =0x00000683
- strb r2, [r1, r0]
- pop {r3, pc}
-_0202FD06:
- bl FUN_0202CBD4
- cmp r0, #0x4
- bne _0202FD1A
- bl FUN_02031190
- bl FUN_02030E7C
- cmp r0, #0x0
- bne _0202FD22
-_0202FD1A:
- bl FUN_02031280
- cmp r0, #0x0
- beq _0202FE10
-_0202FD22:
- ldr r0, _0202FE20 ; =UNK_02105D58
- mov r1, #0x0
- strb r1, [r0, #0x0]
- bl FUN_0203050C
- ldr r0, _0202FE20 ; =UNK_02105D58
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0202FE10
- ldr r0, _0202FE14 ; =UNK_021C59F4
- mov r2, #0x0
- ldr r1, [r0, #0x4]
- ldr r0, _0202FE18 ; =0x00000683
- strb r2, [r1, r0]
- pop {r3, pc}
-_0202FD40:
- bl FUN_02033534
- cmp r0, #0x13
- blt _0202FDB2
- ldr r0, _0202FE14 ; =UNK_021C59F4
- ldr r2, _0202FE1C ; =0x00000687
- ldr r0, [r0, #0x4]
- ldrb r1, [r0, r2]
- cmp r1, #0x0
- beq _0202FE10
- add r1, r2, #0x0
- sub r1, #0x57
- ldr r1, [r0, r1]
- cmp r1, #0x0
- beq _0202FD7A
- sub r2, #0x53
- ldr r1, [r0, r2]
- cmp r1, #0x3
- bgt _0202FE10
- ldr r1, _0202FE20 ; =UNK_02105D58
- ldrb r1, [r1, #0x0]
- cmp r1, #0x4
- bne _0202FD90
- bl FUN_02030930
- ldr r0, _0202FE20 ; =UNK_02105D58
- mov r1, #0x2
- strb r1, [r0, #0x0]
- b _0202FD90
-_0202FD7A:
- ldr r1, _0202FE20 ; =UNK_02105D58
- ldrb r1, [r1, #0x0]
- cmp r1, #0x4
- bne _0202FD90
- bl FUN_02030930
- cmp r0, #0x0
- beq _0202FE10
- ldr r0, _0202FE20 ; =UNK_02105D58
- mov r1, #0x2
- strb r1, [r0, #0x0]
-_0202FD90:
- ldr r0, _0202FE14 ; =UNK_021C59F4
- mov r1, #0x26
- ldr r0, [r0, #0x4]
- bl MOD04_021D78FC
- cmp r0, #0x0
- beq _0202FE10
- ldr r0, _0202FE20 ; =UNK_02105D58
- mov r1, #0x4
- strb r1, [r0, #0x0]
- ldr r0, _0202FE14 ; =UNK_021C59F4
- ldr r2, [r0, #0x4]
- ldr r0, _0202FE24 ; =0x00000634
- ldr r1, [r2, r0]
- add r1, r1, #0x1
- str r1, [r2, r0]
- pop {r3, pc}
-_0202FDB2:
- bl FUN_0202CBD4
- cmp r0, #0x4
- bne _0202FDC6
- bl FUN_02031190
- bl FUN_02030E7C
- cmp r0, #0x0
- bne _0202FDCE
-_0202FDC6:
- bl FUN_02031280
- cmp r0, #0x0
- beq _0202FE10
-_0202FDCE:
- ldr r0, _0202FE20 ; =UNK_02105D58
- ldrb r0, [r0, #0x0]
- cmp r0, #0x4
- bne _0202FE10
- ldr r0, _0202FE14 ; =UNK_021C59F4
- ldr r2, [r0, #0x4]
- ldr r0, _0202FE24 ; =0x00000634
- ldr r1, [r2, r0]
- cmp r1, #0x3
- bgt _0202FE10
- add r0, #0x4b
- ldrb r1, [r2, r0]
- mov r0, #0x26
- mul r0, r1
- add r0, r2, r0
- bl FUN_02030930
- ldr r0, _0202FE14 ; =UNK_021C59F4
- ldr r2, [r0, #0x4]
- ldr r0, _0202FE28 ; =0x0000067F
- ldrb r1, [r2, r0]
- mov r0, #0x1
- sub r1, r0, r1
- mov r0, #0x26
- mul r0, r1
- add r0, r2, r0
- bl FUN_02030930
- ldr r0, _0202FE20 ; =UNK_02105D58
- mov r1, #0x0
- strb r1, [r0, #0x0]
- bl FUN_0203050C
-_0202FE10:
- pop {r3, pc}
- nop
-_0202FE14: .word UNK_021C59F4
-_0202FE18: .word 0x00000683
-_0202FE1C: .word 0x00000687
-_0202FE20: .word UNK_02105D58
-_0202FE24: .word 0x00000634
-_0202FE28: .word 0x0000067F
-
- thumb_func_start FUN_0202FE2C
-FUN_0202FE2C: ; 0x0202FE2C
- push {r3-r7, lr}
- sub sp, #0x10
- str r0, [sp, #0x0]
- mov r0, #0x0
- str r0, [sp, #0x4]
- bl FUN_02033534
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl FUN_02031228
- str r0, [sp, #0xc]
- bl FUN_02033534
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl FUN_0202D858
- add r0, r0, #0x1
- mov r7, #0x0
- str r0, [sp, #0x8]
- cmp r0, #0x0
- ble _0202FED0
- ldr r0, [sp, #0x0]
- mov r1, #0xc0
- add r6, r0, #0x0
- add r4, r7, #0x0
- add r5, r7, #0x0
- mul r6, r1
-_0202FE66:
- ldr r0, _0202FEE4 ; =UNK_021C59F4
- ldr r1, [r0, #0x4]
- ldr r0, _0202FEE8 ; =0x0000047C
- add r0, r1, r0
- add r0, r0, r4
- bl FUN_0202D4BC
- lsl r0, r7, #0x10
- lsr r0, r0, #0x10
- bl FUN_02030E7C
- cmp r0, #0x0
- beq _0202FE90
- ldr r0, _0202FEE4 ; =UNK_021C59F4
- mov r1, #0xe
- ldr r0, [r0, #0x4]
- add r0, r6, r0
- add r2, r5, r0
- mov r0, #0x55
- lsl r0, r0, #0x2
- strb r1, [r2, r0]
-_0202FE90:
- ldr r0, _0202FEE4 ; =UNK_021C59F4
- mov r2, #0x55
- ldr r1, [r0, #0x4]
- ldr r0, _0202FEE8 ; =0x0000047C
- lsl r2, r2, #0x2
- add r0, r1, r0
- add r1, r1, r2
- add r1, r1, r6
- ldr r2, [sp, #0xc]
- add r0, r0, r4
- add r1, r1, r5
- bl FUN_0202D400
- ldr r0, _0202FEE4 ; =UNK_021C59F4
- ldr r0, [r0, #0x4]
- add r0, r6, r0
- add r1, r5, r0
- mov r0, #0x55
- lsl r0, r0, #0x2
- ldrb r0, [r1, r0]
- cmp r0, #0xe
- bne _0202FEC2
- ldr r0, [sp, #0x4]
- add r0, r0, #0x1
- str r0, [sp, #0x4]
-_0202FEC2:
- ldr r0, [sp, #0xc]
- add r7, r7, #0x1
- add r5, r5, r0
- ldr r0, [sp, #0x8]
- add r4, #0xc
- cmp r7, r0
- blt _0202FE66
-_0202FED0:
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x8]
- cmp r1, r0
- bne _0202FEDE
- add sp, #0x10
- mov r0, #0x0
- pop {r3-r7, pc}
-_0202FEDE:
- mov r0, #0x1
- add sp, #0x10
- pop {r3-r7, pc}
- .balign 4
-_0202FEE4: .word UNK_021C59F4
-_0202FEE8: .word 0x0000047C
-
thumb_func_start FUN_0202FEEC
FUN_0202FEEC: ; 0x0202FEEC
push {r3-r7, lr}
diff --git a/arm9/global.inc b/arm9/global.inc
index 2e1926cd..1fc85f18 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -8526,3 +8526,9 @@
.extern FUN_0202F8D4
.extern FUN_0202F910
.extern FUN_0202F918
+.extern FUN_0202F984
+.extern FUN_0202F9E0
+.extern FUN_0202FA28
+.extern FUN_0202FB58
+.extern FUN_0202FB80
+.extern FUN_0202FE2C
diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c
index e618469a..b0a249cf 100644
--- a/arm9/src/unk_0202F150_c.c
+++ b/arm9/src/unk_0202F150_c.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "MI_memory.h"
#include "heap.h"
+#include "main.h"
struct
{
@@ -17,7 +18,7 @@ u8 UNK_02105D58 = 4;
u8 UNK_02105D59 = 4;
extern int FUN_02033534();
-extern u32 FUN_0202D858(u16 param0);
+extern int FUN_0202D858(u16 param0);
extern void FUN_02031480(u32 param0);
extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2);
extern void FUN_0202F2F0();
@@ -32,11 +33,11 @@ extern u32 FUN_02030E7C(u16 param0);
struct UnkStruct1
{
- u8 unk000[38];
- u8 unk026[38];
+ u8 unk000[2][38];
+ // u8 unk026[38];
u8 unk04c[264];
- u8 unk154[192];
- u8 unk214[192];
+ u8 unk154[2][192];
+ // u8 unk214[192];
u8 unk2D4[384];
u32 unk454;
u32 unk458;
@@ -79,7 +80,9 @@ struct UnkStruct1
u32 unk5F8;
u8 unk5FC[0x14];
u16 unk610[8];
- u8 unk620[0xc];
+ u8 unk620[0x8];
+ u16 unk628;
+ u8 unk62A[0x2];
u8 unk62C;
u8 unk62D;
u8 unk62E[0x2];
@@ -106,7 +109,9 @@ struct UnkStruct1
u8 unk686;
u8 unk687;
u8 unk688;
- u8 unk689[0x3];
+ u8 unk689;
+ u8 unk68A;
+ u8 unk68B;
};
THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1)
@@ -219,20 +224,20 @@ THUMB_FUNC void FUN_0202F2F0()
for (i = 0; i < 0xc0; i++)
{
- UNK_021C59F4.unk04->unk154[i] = 0xee;
- UNK_021C59F4.unk04->unk214[i] = 0xee;
+ UNK_021C59F4.unk04->unk154[0][i] = 0xee;
+ UNK_021C59F4.unk04->unk154[1][i] = 0xee;
}
MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2);
FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2);
- UNK_021C59F4.unk04->unk000[0] = 0xff;
- UNK_021C59F4.unk04->unk026[0] = 0xff;
+ UNK_021C59F4.unk04->unk000[0][0] = 0xff;
+ UNK_021C59F4.unk04->unk000[1][0] = 0xff;
for (i = 1; i < 0x26; i++)
{
- UNK_021C59F4.unk04->unk000[i] = 0xee;
- UNK_021C59F4.unk04->unk026[i] = 0xee;
+ UNK_021C59F4.unk04->unk000[0][i] = 0xee;
+ UNK_021C59F4.unk04->unk000[1][i] = 0xee;
}
MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1);
@@ -307,20 +312,20 @@ THUMB_FUNC void FUN_0202F5A4()
for (i = 0; i < 0xc0; i++)
{
- UNK_021C59F4.unk04->unk154[i] = 0xee;
- UNK_021C59F4.unk04->unk214[i] = 0xee;
+ UNK_021C59F4.unk04->unk154[0][i] = 0xee;
+ UNK_021C59F4.unk04->unk154[1][i] = 0xee;
}
MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2);
FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2);
- UNK_021C59F4.unk04->unk000[0] = 0xff;
- UNK_021C59F4.unk04->unk026[0] = 0xff;
+ UNK_021C59F4.unk04->unk000[0][0] = 0xff;
+ UNK_021C59F4.unk04->unk000[1][0] = 0xff;
for (i = 1; i < 0x26; i++)
{
- UNK_021C59F4.unk04->unk000[i] = 0xee;
- UNK_021C59F4.unk04->unk026[i] = 0xee;
+ UNK_021C59F4.unk04->unk000[0][i] = 0xee;
+ UNK_021C59F4.unk04->unk000[1][i] = 0xee;
}
MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1);
@@ -414,4 +419,508 @@ THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3)
FUN_0202F150(param0, param2);
return ret;
-} \ No newline at end of file
+}
+
+extern u32 FUN_0202E66C(u32 param0, u32 param1);
+
+THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) {
+ u32 ret = 1;
+ if (FUN_02033534() < 0x13)
+ {
+ ret = FUN_0202E66C(param0, param1);
+ }
+
+ FUN_0202F150(param0, param2);
+
+ UNK_02105D58 = 4;
+
+ return ret;
+}
+
+extern u16 FUN_02031190();
+extern void FUN_02031088();
+
+
+
+
+
+THUMB_FUNC void FUN_0202F984() {
+ u32 r4 = 0;
+ if (FUN_02031190() == 0 ) {
+ if (UNK_02105D59 != 4) {
+ return;
+ }
+ } else {
+ if (UNK_02105D58 != 4) {
+ return;
+ }
+ }
+
+ if (UNK_021C59F4.unk04->unk67D == 2) {
+ UNK_021C59F4.unk04->unk67D = 0;
+ r4 = 1;
+ }
+
+ if (UNK_021C59F4.unk04->unk67D == 3) {
+ UNK_021C59F4.unk04->unk67D = 1;
+ r4 = 1;
+ }
+
+ if (r4 != 0) {
+ FUN_0202F5A4();
+ }
+ FUN_02031088();
+}
+
+
+
+
+THUMB_FUNC void FUN_0202F9E0(u32 param0) {
+ u8 r2 = UNK_021C59F4.unk04->unk67D;
+ if (r2 == 0 && param0 == 1) {
+ UNK_021C59F4.unk04->unk67D = 3;
+ } else if (r2 == 1 && param0 == 0) {
+ UNK_021C59F4.unk04->unk67D = 2;
+ }
+}
+
+
+THUMB_FUNC void FUN_0202FA10() {
+ FUN_0202F9E0(1);
+}
+
+
+THUMB_FUNC void FUN_0202FA1C() {
+ FUN_0202F9E0(0);
+}
+
+
+
+THUMB_FUNC u8 FUN_0202FA28() {
+ u8 ret = UNK_021C59F4.unk04->unk67D;
+ if (ret == 2){
+ return 1;
+ } else if (ret == 3) {
+ return 0;
+ }
+
+ return ret;
+}
+
+THUMB_FUNC u32 FUN_0202FA48() {
+ if (FUN_0202FA28() == 1) {
+ return 1;
+ }
+
+ return 0;
+}
+
+extern void MOD04_021D83C0();
+extern u32 FUN_0202E784();
+extern void FUN_020314D0();
+extern void FUN_0202DBA4();
+extern void FUN_0200CAB4(u32 param0);
+extern void FUN_0202D824(u32 *param0);
+
+THUMB_FUNC void FUN_0202FA5C() {
+ u32 r4 = 0;
+ if (UNK_021C59F4.unk04 != 0) {
+ if (FUN_02033534() >= 0x13) {
+ MOD04_021D83C0();
+ r4 = 1;
+ } else {
+ if (FUN_0202E784() != 0) {
+ r4 = 1;
+ }
+ }
+ }
+
+ if (r4 != 0) {
+ FUN_020314D0();
+ FUN_0202DBA4();
+ UNK_021C59F4.unk00 = 0;
+
+ FUN_0200CAB4(UNK_021C59F4.unk04->unk548);
+ UNK_021C59F4.unk04->unk548 = 0;
+ FreeToHeap(UNK_021C59F4.unk04->unk45C);
+ FreeToHeap(UNK_021C59F4.unk04->unk460);
+ FreeToHeap(UNK_021C59F4.unk04->unk458);
+ FreeToHeap(UNK_021C59F4.unk04->unk454);
+ FUN_0202D824(UNK_021C59F4.unk04->unk56C);
+ FUN_0202D824(UNK_021C59F4.unk04->unk54C);
+ FreeToHeap(UNK_021C59F4.unk04);
+ UNK_021C59F4.unk04 = NULL;
+ }
+}
+
+extern u32 FUN_0202E9E8(u32 param0);
+
+THUMB_FUNC u32 FUN_0202FB18(u32 param0) {
+ return FUN_0202E9E8(param0);
+}
+
+
+extern void FUN_0203050C();
+extern void FUN_0202FEEC();
+extern u32 FUN_0202F03C();
+extern u32 FUN_0202EE24();
+
+
+
+THUMB_FUNC void FUN_0202FB20() {
+ if (UNK_021C59F4.unk00 != 0) {
+ FUN_0203050C();
+ if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){
+ FUN_0202FEEC();
+ }
+
+ UNK_021C59F4.unk00 = 0;
+ }
+}
+
+THUMB_FUNC void FUN_0202FB58() {
+ if (FUN_0202F03C() != 0) {
+ if (FUN_02031190() == 0 ) {
+ if (FUN_0202EE24() == 0) {
+ FUN_0202FA5C();
+ }
+ } else {
+ FUN_0202FA5C();
+ }
+ }
+}
+
+extern void FUN_02031CDC();
+extern void FUN_02030674();
+extern void FUN_0202FCCC();
+extern void FUN_02030DA4();
+extern void FUN_02030074();
+extern void FUN_02030DFC();
+extern void FUN_0202EBD0(u16 param0);
+extern void FUN_0202ED70(u32 param0);
+extern void FUN_020335F4(u32 param0);
+extern void FUN_020315A4();
+
+
+
+THUMB_FUNC u32 FUN_0202FB80() {
+ FUN_02031CDC();
+
+ if (UNK_021C59F4.unk04 != NULL) {
+ if (UNK_021C59F4.unk04->unk68A == 0) {
+ UNK_021C59F4.unk00 = 0;
+ FUN_0202F984();
+ UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF;
+ FUN_02030674();
+ FUN_0202FCCC();
+
+ UNK_021C59F4.unk04->unk628 &= 2<<0xe;
+ if (FUN_0202FA28() == 0) {
+ FUN_02030DA4();
+ }
+
+ if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){
+ FUN_02030074();
+ }
+
+ if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) {
+ FUN_02030DFC();
+ }
+
+ UNK_021C59F4.unk00 = 1;
+ }
+
+
+ FUN_0202ED70(UNK_021C59F4.unk04->unk65C);
+
+ if (FUN_02031190() == 0) {
+ FUN_0202F8D4();
+ }
+
+ FUN_0202FB58();
+ } else {
+ FUN_0202ED70(0);
+ }
+
+
+ FUN_020335F4(0);
+ FUN_020315A4();
+
+ return 1;
+}
+
+
+THUMB_FUNC void FUN_0202FC60() {
+ u8 r4 = UNK_021C59F4.unk00;
+
+ UNK_021C59F4.unk00 = 0;
+
+ if (UNK_021C59F4.unk04 != NULL) {
+ FUN_0202F2F0();
+ }
+
+ UNK_021C59F4.unk00 = r4;
+}
+
+
+THUMB_FUNC void FUN_0202FC80() {
+ u8 r4 = UNK_021C59F4.unk00;
+
+ UNK_021C59F4.unk00 = 0;
+
+ if (UNK_021C59F4.unk04 != NULL) {
+ UNK_021C59F4.unk04->unk67D = 1;
+ FUN_0202F2F0();
+ }
+
+ UNK_021C59F4.unk00 = r4;
+}
+
+
+extern void FUN_0202E538();
+
+
+THUMB_FUNC void FUN_0202FCA8() {
+ u8 r4 = UNK_021C59F4.unk00;
+
+ UNK_021C59F4.unk00 = 0;
+
+ if (UNK_021C59F4.unk04 != NULL) {
+ FUN_0202F2F0();
+ FUN_0202E538();
+ }
+
+ UNK_021C59F4.unk00 = r4;
+}
+
+
+extern u32 MOD04_021D78FC(void *param0, u32 param1);
+extern u32 FUN_0202CBD4();
+extern u32 FUN_02030930(void *param0);
+
+
+
+THUMB_FUNC void FUN_0202FCCC() {
+ if (UNK_021C59F4.unk04->unk683 != 0 ) {
+ if (FUN_02033534() >= 0x13) {
+ if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) {
+ return;
+ }
+
+ UNK_021C59F4.unk04->unk683 = 0;
+ return;
+ }
+
+ if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) {
+ if (FUN_02031280() == 0) {
+ return;
+ }
+ }
+
+ UNK_02105D58 = 0;
+ FUN_0203050C();
+ if (UNK_02105D58 == 0) {
+ return;
+ }
+
+ UNK_021C59F4.unk04->unk683 = 0;
+ return;
+ }
+
+
+ if (FUN_02033534() >= 0x13) {
+ if (UNK_021C59F4.unk04->unk687 == 0) {
+ return;
+ }
+
+ if (UNK_021C59F4.unk04->unk630 != 0){
+ if ((int)UNK_021C59F4.unk04->unk634 > 3) {
+ return;
+ }
+
+ if (UNK_02105D58 == 4) {
+ FUN_02030930(UNK_021C59F4.unk04);
+ UNK_02105D58 = 2;
+ }
+ } else {
+ if (UNK_02105D58 == 4) {
+ if (FUN_02030930(UNK_021C59F4.unk04) == 0) {
+ return;
+ }
+
+ UNK_02105D58 = 2;
+ }
+ }
+
+
+ if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) {
+ return;
+ }
+
+ UNK_02105D58 = 4;
+ UNK_021C59F4.unk04->unk634++;
+ return;
+ }
+
+
+ if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) {
+ if (FUN_02031280() == 0) {
+ return;
+ }
+ }
+
+ if (UNK_02105D58 != 4) {
+ return;
+ }
+
+
+
+ //nonmatching
+ if ((int)UNK_021C59F4.unk04->unk634 > 3) {
+ return;
+ }
+
+ FUN_02030930(&UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F]);
+
+ FUN_02030930(&UNK_021C59F4.unk04->unk000[1-UNK_021C59F4.unk04->unk67F]);
+
+ UNK_02105D58 = 0;
+ FUN_0203050C();
+}
+
+extern int FUN_02031228(u16 param0);
+extern void FUN_0202D4BC(void *param0);
+extern int FUN_0202D400(u32 param0, u32 param1, u32 param2);
+
+
+
+
+
+
+#ifdef NONMATCHING
+THUMB_FUNC u32 FUN_0202FE2C(int param0) {
+
+ // these 3 variables are shuffled on the stack, everything else matches
+ int st4 = 0;
+ int stc = FUN_02031228(FUN_02033534());
+ int st8 = FUN_0202D858(FUN_02033534()) + 1;
+
+
+ for (int r7 = 0; r7 < st8 ; r7++) {
+
+ FUN_0202D4BC(&UNK_021C59F4.unk04->unk47C[r7]);
+
+ if (FUN_02030E7C(r7) != 0) {
+ UNK_021C59F4.unk04->unk154[param0][r7*stc] = 0xe;
+ }
+
+ FUN_0202D400(&UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7*stc], stc);
+
+ if (UNK_021C59F4.unk04->unk154[param0][r7*stc] == 0xe) {
+ st4++;
+ }
+ }
+
+ if (st4 == st8) {
+ return 0;
+ }
+
+ return 1;
+}
+#else
+THUMB_FUNC asm u32 FUN_0202FE2C(int param0) {
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02031228
+ str r0, [sp, #0xc]
+ bl FUN_02033534
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0202D858
+ add r0, r0, #0x1
+ mov r7, #0x0
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ ble _0202FED0
+ ldr r0, [sp, #0x0]
+ mov r1, #0xc0
+ add r6, r0, #0x0
+ add r4, r7, #0x0
+ add r5, r7, #0x0
+ mul r6, r1
+_0202FE66:
+ ldr r0, =UNK_021C59F4
+ ldr r1, [r0, #0x4]
+ ldr r0, =0x0000047C
+ add r0, r1, r0
+ add r0, r0, r4
+ bl FUN_0202D4BC
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0x0
+ beq _0202FE90
+ ldr r0, =UNK_021C59F4
+ mov r1, #0xe
+ ldr r0, [r0, #0x4]
+ add r0, r6, r0
+ add r2, r5, r0
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ strb r1, [r2, r0]
+_0202FE90:
+ ldr r0, =UNK_021C59F4
+ mov r2, #0x55
+ ldr r1, [r0, #0x4]
+ ldr r0, =0x0000047C
+ lsl r2, r2, #0x2
+ add r0, r1, r0
+ add r1, r1, r2
+ add r1, r1, r6
+ ldr r2, [sp, #0xc]
+ add r0, r0, r4
+ add r1, r1, r5
+ bl FUN_0202D400
+ ldr r0, =UNK_021C59F4
+ ldr r0, [r0, #0x4]
+ add r0, r6, r0
+ add r1, r5, r0
+ mov r0, #0x55
+ lsl r0, r0, #0x2
+ ldrb r0, [r1, r0]
+ cmp r0, #0xe
+ bne _0202FEC2
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x1
+ str r0, [sp, #0x4]
+_0202FEC2:
+ ldr r0, [sp, #0xc]
+ add r7, r7, #0x1
+ add r5, r5, r0
+ ldr r0, [sp, #0x8]
+ add r4, #0xc
+ cmp r7, r0
+ blt _0202FE66
+_0202FED0:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ cmp r1, r0
+ bne _0202FEDE
+ add sp, #0x10
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_0202FEDE:
+ mov r0, #0x1
+ add sp, #0x10
+ pop {r3-r7, pc}
+}
+#endif
+
+
+