From a4a5cc6169360abd5687cbf39b9fa6bd3fb7ca5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 7 Apr 2021 21:47:39 +0200 Subject: decomp start of unk_0202F150.s --- arm9/arm9.lsf | 1 + arm9/asm/unk_0202F150.s | 959 +--------------------------------------------- arm9/global.inc | 9 + arm9/src/unk_0202F150_c.c | 417 ++++++++++++++++++++ 4 files changed, 433 insertions(+), 953 deletions(-) create mode 100644 arm9/src/unk_0202F150_c.c diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 05a905ee..7aad650f 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -127,6 +127,7 @@ Static arm9 Object unk_0202D8D0.o Object unk_0202DB14.o Object unk_0202E29C.o + Object unk_0202F150_c.o Object unk_0202F150.o Object unk_02031480.o Object unk_02031734.o diff --git a/arm9/asm/unk_0202F150.s b/arm9/asm/unk_0202F150.s index a4efe28d..873f7d0b 100644 --- a/arm9/asm/unk_0202F150.s +++ b/arm9/asm/unk_0202F150.s @@ -5,971 +5,24 @@ .section .bss - .global UNK_021C59F4 -UNK_021C59F4: ; 0x021C59F4 - .space 0x8 .section .data - .global UNK_02105D58 -UNK_02105D58: ; 0x02105D58 - .byte 4, 4 + .text - thumb_func_start FUN_0202F150 -FUN_0202F150: ; 0x0202F150 - push {r4-r6, lr} - add r6, r1, #0x0 - mov r4, #0x0 - ldr r1, _0202F2BC ; =UNK_021C59F4 - cmp r0, #0x0 - strb r4, [r1, #0x0] - beq _0202F25C - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r5, r0, #0x1 - ldr r0, _0202F2BC ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0202F178 - mov r0, #0x1 - pop {r4-r6, pc} -_0202F178: - mov r0, #0xf - bl FUN_02031480 - ldr r1, _0202F2C0 ; =0x0000068C - mov r0, #0xf - bl AllocFromHeap - ldr r1, _0202F2BC ; =UNK_021C59F4 - ldr r2, _0202F2C0 ; =0x0000068C - str r0, [r1, #0x4] - add r1, r4, #0x0 - bl MI_CpuFill8 - ldr r2, _0202F2BC ; =UNK_021C59F4 - ldr r1, _0202F2C4 ; =0x00000658 - ldr r0, [r2, #0x4] - add r6, #0x40 - str r6, [r0, r1] - add r0, r1, #0x0 - ldr r3, [r2, #0x4] - add r6, r4, #0x0 - add r0, #0x25 - strb r6, [r3, r0] - add r0, r1, #0x0 - ldr r3, [r2, #0x4] - mov r6, #0x1b - add r0, #0x26 - strb r6, [r3, r0] - ldr r2, [r2, #0x4] - mov r0, #0xf - ldr r1, [r2, r1] - lsl r1, r1, #0x1 - bl AllocFromHeap - ldr r2, _0202F2BC ; =UNK_021C59F4 - ldr r1, _0202F2C8 ; =0x0000045C - ldr r3, [r2, #0x4] - str r0, [r3, r1] - ldr r2, [r2, #0x4] - ldr r1, _0202F2C4 ; =0x00000658 - mov r0, #0xf - ldr r1, [r2, r1] - bl AllocFromHeap - ldr r2, _0202F2BC ; =UNK_021C59F4 - mov r1, #0x46 - ldr r3, [r2, #0x4] - lsl r1, r1, #0x4 - str r0, [r3, r1] - ldr r2, [r2, #0x4] - ldr r1, _0202F2C4 ; =0x00000658 - mov r0, #0xf - ldr r1, [r2, r1] - mul r1, r5 - bl AllocFromHeap - ldr r2, _0202F2BC ; =UNK_021C59F4 - ldr r1, _0202F2CC ; =0x00000458 - ldr r3, [r2, #0x4] - str r0, [r3, r1] - ldr r2, [r2, #0x4] - ldr r1, _0202F2C4 ; =0x00000658 - mov r0, #0xf - ldr r1, [r2, r1] - mul r1, r5 - bl AllocFromHeap - ldr r1, _0202F2BC ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - ldr r1, _0202F2D0 ; =0x00000454 - str r0, [r2, r1] - bl FUN_02033534 - cmp r0, #0xa - ldr r2, _0202F2D4 ; =0x0000054C - bne _0202F236 - ldr r0, _0202F2BC ; =UNK_021C59F4 - mov r1, #0x64 - ldr r3, [r0, #0x4] - add r0, r3, r2 - sub r2, #0xe8 - add r2, r3, r2 - bl FUN_0202D7D8 - ldr r0, _0202F2BC ; =UNK_021C59F4 - mov r1, #0x32 - ldr r3, [r0, #0x4] - ldr r2, _0202F2D8 ; =0x0000056C - lsl r1, r1, #0x4 - add r0, r3, r2 - sub r2, #0x90 - add r2, r3, r2 - bl FUN_0202D7D8 - b _0202F268 -_0202F236: - ldr r0, _0202F2BC ; =UNK_021C59F4 - mov r1, #0x14 - ldr r3, [r0, #0x4] - add r0, r3, r2 - sub r2, #0xe8 - add r2, r3, r2 - bl FUN_0202D7D8 - ldr r0, _0202F2BC ; =UNK_021C59F4 - add r1, r6, #0x0 - ldr r3, [r0, #0x4] - ldr r2, _0202F2D8 ; =0x0000056C - add r1, #0xfd - add r0, r3, r2 - sub r2, #0x90 - add r2, r3, r2 - bl FUN_0202D7D8 - b _0202F268 -_0202F25C: - ldr r0, [r1, #0x4] - mov r4, #0x1 - cmp r0, #0x0 - bne _0202F268 - bl ErrorHandling -_0202F268: - ldr r2, _0202F2BC ; =UNK_021C59F4 - ldr r1, _0202F2DC ; =0x0000065C - ldr r3, [r2, #0x4] - mov r0, #0x0 - strh r0, [r3, r1] - mov r5, #0xff - add r1, #0x1b -_0202F276: - ldr r3, [r2, #0x4] - add r3, r3, r0 - add r0, r0, #0x1 - strb r5, [r3, r1] - cmp r0, #0x4 - blt _0202F276 - cmp r4, #0x0 - bne _0202F28A - bl FUN_0202F2F0 -_0202F28A: - ldr r0, _0202F2BC ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202F2E0 ; =0x000005F8 - add r0, r1, r0 - bl FUN_020312BC - cmp r4, #0x0 - bne _0202F2AC - mov r1, #0x0 - ldr r0, _0202F2E4 ; =FUN_0202FB20 - add r2, r1, #0x0 - bl FUN_0200CA60 - ldr r1, _0202F2BC ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - ldr r1, _0202F2E8 ; =0x00000548 - str r0, [r2, r1] -_0202F2AC: - ldr r0, _0202F2BC ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0202F2EC ; =0x00000687 - strb r2, [r1, r0] - mov r0, #0x1 - pop {r4-r6, pc} - nop -_0202F2BC: .word UNK_021C59F4 -_0202F2C0: .word 0x0000068C -_0202F2C4: .word 0x00000658 -_0202F2C8: .word 0x0000045C -_0202F2CC: .word 0x00000458 -_0202F2D0: .word 0x00000454 -_0202F2D4: .word 0x0000054C -_0202F2D8: .word 0x0000056C -_0202F2DC: .word 0x0000065C -_0202F2E0: .word 0x000005F8 -_0202F2E4: .word FUN_0202FB20 -_0202F2E8: .word 0x00000548 -_0202F2EC: .word 0x00000687 - thumb_func_start FUN_0202F2F0 -FUN_0202F2F0: ; 0x0202F2F0 - push {r3-r7, lr} - ldr r3, _0202F54C ; =UNK_021C59F4 - ldr r2, _0202F550 ; =0x0000062C - ldr r1, [r3, #0x4] - mov r0, #0x0 - strb r0, [r1, r2] - ldr r4, [r3, #0x4] - add r1, r2, #0x1 - strb r0, [r4, r1] - add r1, r2, #0x0 - ldr r4, [r3, #0x4] - add r1, #0x53 - strb r0, [r4, r1] - ldr r1, [r3, #0x4] - add r2, #0x54 - strb r0, [r1, r2] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r6, r0, #0x1 - ldr r0, _0202F54C ; =UNK_021C59F4 - ldr r2, _0202F554 ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F558 ; =0x00000458 - mov r1, #0x0 - ldr r0, [r3, r0] - ldr r3, [r3, r2] - add r2, r3, #0x0 - mul r2, r6 - bl MI_CpuFill8 - mov r4, #0x0 - cmp r6, #0x0 - ble _0202F360 - ldr r7, _0202F54C ; =UNK_021C59F4 - add r5, r4, #0x0 -_0202F33E: - ldr r3, [r7, #0x4] - ldr r0, _0202F554 ; =0x00000658 - ldr r1, _0202F558 ; =0x00000458 - ldr r2, [r3, r0] - ldr r0, _0202F55C ; =0x000004E8 - add r0, r3, r0 - ldr r3, [r3, r1] - add r1, r4, #0x0 - mul r1, r2 - add r0, r0, r5 - add r1, r3, r1 - bl FUN_0202D394 - add r4, r4, #0x1 - add r5, #0xc - cmp r4, r6 - blt _0202F33E -_0202F360: - ldr r0, _0202F54C ; =UNK_021C59F4 - ldr r2, _0202F554 ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F560 ; =0x00000454 - mov r1, #0x0 - ldr r0, [r3, r0] - ldr r3, [r3, r2] - add r2, r3, #0x0 - mul r2, r6 - bl MI_CpuFill8 - mov r5, #0x0 - cmp r6, #0x0 - ble _0202F3A2 - ldr r7, _0202F54C ; =UNK_021C59F4 - add r4, r5, #0x0 -_0202F380: - ldr r3, [r7, #0x4] - ldr r0, _0202F554 ; =0x00000658 - ldr r1, _0202F560 ; =0x00000454 - ldr r2, [r3, r0] - ldr r0, _0202F564 ; =0x0000047C - add r0, r3, r0 - ldr r3, [r3, r1] - add r1, r5, #0x0 - mul r1, r2 - add r0, r0, r4 - add r1, r3, r1 - bl FUN_0202D394 - add r5, r5, #0x1 - add r4, #0xc - cmp r5, r6 - blt _0202F380 -_0202F3A2: - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r2, #0x6 - ldr r1, [r0, #0x4] - mov r0, #0xb5 - lsl r0, r0, #0x2 - add r0, r1, r0 - mov r1, #0x0 - lsl r2, r2, #0x6 - bl MI_CpuFill8 - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r1, #0xb5 - ldr r2, [r0, #0x4] - ldr r0, _0202F568 ; =0x000004DC - lsl r1, r1, #0x2 - add r0, r2, r0 - add r1, r2, r1 - mov r2, #0x6 - lsl r2, r2, #0x6 - bl FUN_0202D394 - mov r0, #0xee - add r2, r0, #0x0 - mov r3, #0x85 - ldr r4, _0202F54C ; =UNK_021C59F4 - mov r1, #0x0 - add r2, #0x66 - lsl r3, r3, #0x2 -_0202F3DA: - ldr r5, [r4, #0x4] - add r5, r5, r1 - strb r0, [r5, r2] - ldr r5, [r4, #0x4] - add r5, r5, r1 - add r1, r1, #0x1 - strb r0, [r5, r3] - cmp r1, #0xc0 - blt _0202F3DA - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r2, #0x42 - ldr r0, [r0, #0x4] - mov r1, #0x0 - add r0, #0x4c - lsl r2, r2, #0x2 - bl MI_CpuFill8 - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r2, #0x42 - ldr r1, [r0, #0x4] - ldr r0, _0202F56C ; =0x00000464 - lsl r2, r2, #0x2 - add r0, r1, r0 - add r1, #0x4c - bl FUN_0202D394 - ldr r1, _0202F54C ; =UNK_021C59F4 - mov r2, #0xff - ldr r0, [r1, #0x4] - mov r3, #0x1 - strb r2, [r0, #0x0] - ldr r0, [r1, #0x4] - add r0, #0x26 - strb r2, [r0, #0x0] - mov r2, #0xee -_0202F420: - ldr r0, [r1, #0x4] - strb r2, [r0, r3] - ldr r0, [r1, #0x4] - add r0, r0, r3 - add r0, #0x26 - add r3, r3, #0x1 - strb r2, [r0, #0x0] - cmp r3, #0x26 - blt _0202F420 - ldr r0, _0202F54C ; =UNK_021C59F4 - ldr r2, _0202F554 ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F570 ; =0x0000045C - ldr r2, [r3, r2] - ldr r0, [r3, r0] - mov r1, #0x0 - lsl r2, r2, #0x1 - bl MI_CpuFill8 - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r1, #0x47 - ldr r3, [r0, #0x4] - ldr r2, _0202F554 ; =0x00000658 - lsl r1, r1, #0x4 - add r0, r3, r1 - sub r1, #0x14 - ldr r2, [r3, r2] - ldr r1, [r3, r1] - lsl r2, r2, #0x1 - bl FUN_0202D394 - mov r2, #0x0 - ldr r0, _0202F54C ; =UNK_021C59F4 - ldr r1, _0202F574 ; =0x00000684 - ldr r3, [r0, #0x4] - mov r12, r2 - strb r2, [r3, r1] - ldr r3, [r0, #0x4] - add r1, r1, #0x1 - strb r2, [r3, r1] - add r1, r2, #0x0 - add r7, r2, #0x0 - add r6, r2, #0x0 -_0202F476: - ldr r3, [r0, #0x4] - add r4, r3, r2 - ldr r3, _0202F578 ; =0x0000065F - strb r6, [r4, r3] - ldr r3, [r0, #0x4] - ldr r4, _0202F57C ; =0x00000667 - add r5, r3, r2 - mov r3, #0x1 - strb r3, [r5, r4] - ldr r3, [r0, #0x4] - add r4, #0x8 - add r5, r3, r2 - mov r3, #0x1 - strb r3, [r5, r4] - ldr r4, [r0, #0x4] - mov r3, r12 - add r4, r4, r3 - mov r3, #0x61 - lsl r3, r3, #0x4 - strh r6, [r4, r3] - ldr r3, [r0, #0x4] - mov r4, #0xee - add r5, r3, r1 - ldr r3, _0202F580 ; =0x00000596 - add r2, r2, #0x1 - strb r4, [r5, r3] - ldr r3, [r0, #0x4] - ldr r4, _0202F584 ; =0x0000FFFF - add r5, r3, r1 - ldr r3, _0202F588 ; =0x00000594 - strh r4, [r5, r3] - ldr r3, [r0, #0x4] - add r4, r3, r1 - mov r3, #0x59 - lsl r3, r3, #0x4 - str r6, [r4, r3] - ldr r3, [r0, #0x4] - add r4, r3, r1 - ldr r3, _0202F58C ; =0x0000058C - add r1, #0xc - str r6, [r4, r3] - ldr r3, [r0, #0x4] - add r4, r3, r7 - ldr r3, _0202F590 ; =0x00000638 - add r7, r7, #0x4 - str r6, [r4, r3] - mov r3, r12 - add r3, r3, #0x2 - mov r12, r3 - cmp r2, #0x8 - blt _0202F476 - ldr r1, _0202F54C ; =UNK_021C59F4 - ldr r0, _0202F594 ; =0x00000634 - ldr r2, [r1, #0x4] - sub r3, r0, #0x4 - str r6, [r2, r0] - ldr r4, [r1, #0x4] - mov r2, #0x1 - str r2, [r4, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - sub r3, #0x3e - mov r2, #0xee - strb r2, [r4, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - ldr r2, _0202F584 ; =0x0000FFFF - sub r3, #0x40 - strh r2, [r4, r3] - add r2, r0, #0x0 - ldr r3, [r1, #0x4] - sub r2, #0x44 - str r6, [r3, r2] - add r2, r0, #0x0 - ldr r3, [r1, #0x4] - sub r2, #0x48 - str r6, [r3, r2] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - add r3, #0x4e - mov r2, #0x1 - strb r2, [r4, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - add r3, #0x4f - strb r2, [r4, r3] - ldr r2, _0202F598 ; =UNK_02105D58 - mov r3, #0x4 - strb r3, [r2, #0x1] - strb r3, [r2, #0x0] - ldr r1, [r1, #0x4] - sub r0, #0xe8 - add r0, r1, r0 - bl FUN_0202D804 - ldr r0, _0202F54C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202F59C ; =0x0000056C - add r0, r1, r0 - bl FUN_0202D804 - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0202F5A0 ; =0x00000688 - strb r2, [r1, r0] - pop {r3-r7, pc} - .balign 4 -_0202F54C: .word UNK_021C59F4 -_0202F550: .word 0x0000062C -_0202F554: .word 0x00000658 -_0202F558: .word 0x00000458 -_0202F55C: .word 0x000004E8 -_0202F560: .word 0x00000454 -_0202F564: .word 0x0000047C -_0202F568: .word 0x000004DC -_0202F56C: .word 0x00000464 -_0202F570: .word 0x0000045C -_0202F574: .word 0x00000684 -_0202F578: .word 0x0000065F -_0202F57C: .word 0x00000667 -_0202F580: .word 0x00000596 -_0202F584: .word 0x0000FFFF -_0202F588: .word 0x00000594 -_0202F58C: .word 0x0000058C -_0202F590: .word 0x00000638 -_0202F594: .word 0x00000634 -_0202F598: .word UNK_02105D58 -_0202F59C: .word 0x0000056C -_0202F5A0: .word 0x00000688 - thumb_func_start FUN_0202F5A4 -FUN_0202F5A4: ; 0x0202F5A4 - push {r3-r7, lr} - ldr r1, _0202F7D4 ; =UNK_021C59F4 - ldr r0, _0202F7D8 ; =0x0000062C - ldr r2, [r1, #0x4] - mov r3, #0x0 - strb r3, [r2, r0] - ldr r1, [r1, #0x4] - add r0, r0, #0x1 - strb r3, [r1, r0] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r6, r0, #0x1 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - ldr r2, _0202F7DC ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F7E0 ; =0x00000458 - mov r1, #0x0 - ldr r0, [r3, r0] - ldr r3, [r3, r2] - add r2, r3, #0x0 - mul r2, r6 - bl MI_CpuFill8 - mov r4, #0x0 - cmp r6, #0x0 - ble _0202F606 - ldr r7, _0202F7D4 ; =UNK_021C59F4 - add r5, r4, #0x0 -_0202F5E4: - ldr r3, [r7, #0x4] - ldr r0, _0202F7DC ; =0x00000658 - ldr r1, _0202F7E0 ; =0x00000458 - ldr r2, [r3, r0] - ldr r0, _0202F7E4 ; =0x000004E8 - add r0, r3, r0 - ldr r3, [r3, r1] - add r1, r4, #0x0 - mul r1, r2 - add r0, r0, r5 - add r1, r3, r1 - bl FUN_0202D394 - add r4, r4, #0x1 - add r5, #0xc - cmp r4, r6 - blt _0202F5E4 -_0202F606: - ldr r0, _0202F7D4 ; =UNK_021C59F4 - ldr r2, _0202F7DC ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F7E8 ; =0x00000454 - mov r1, #0x0 - ldr r0, [r3, r0] - ldr r3, [r3, r2] - add r2, r3, #0x0 - mul r2, r6 - bl MI_CpuFill8 - mov r5, #0x0 - cmp r6, #0x0 - ble _0202F648 - ldr r7, _0202F7D4 ; =UNK_021C59F4 - add r4, r5, #0x0 -_0202F626: - ldr r3, [r7, #0x4] - ldr r0, _0202F7DC ; =0x00000658 - ldr r1, _0202F7E8 ; =0x00000454 - ldr r2, [r3, r0] - ldr r0, _0202F7EC ; =0x0000047C - add r0, r3, r0 - ldr r3, [r3, r1] - add r1, r5, #0x0 - mul r1, r2 - add r0, r0, r4 - add r1, r3, r1 - bl FUN_0202D394 - add r5, r5, #0x1 - add r4, #0xc - cmp r5, r6 - blt _0202F626 -_0202F648: - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r2, #0x6 - ldr r1, [r0, #0x4] - mov r0, #0xb5 - lsl r0, r0, #0x2 - add r0, r1, r0 - mov r1, #0x0 - lsl r2, r2, #0x6 - bl MI_CpuFill8 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r1, #0xb5 - ldr r2, [r0, #0x4] - ldr r0, _0202F7F0 ; =0x000004DC - lsl r1, r1, #0x2 - add r0, r2, r0 - add r1, r2, r1 - mov r2, #0x6 - lsl r2, r2, #0x6 - bl FUN_0202D394 - mov r0, #0xee - add r2, r0, #0x0 - mov r3, #0x85 - ldr r4, _0202F7D4 ; =UNK_021C59F4 - mov r1, #0x0 - add r2, #0x66 - lsl r3, r3, #0x2 -_0202F680: - ldr r5, [r4, #0x4] - add r5, r5, r1 - strb r0, [r5, r2] - ldr r5, [r4, #0x4] - add r5, r5, r1 - add r1, r1, #0x1 - strb r0, [r5, r3] - cmp r1, #0xc0 - blt _0202F680 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r2, #0x42 - ldr r0, [r0, #0x4] - mov r1, #0x0 - add r0, #0x4c - lsl r2, r2, #0x2 - bl MI_CpuFill8 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r2, #0x42 - ldr r1, [r0, #0x4] - ldr r0, _0202F7F4 ; =0x00000464 - lsl r2, r2, #0x2 - add r0, r1, r0 - add r1, #0x4c - bl FUN_0202D394 - ldr r1, _0202F7D4 ; =UNK_021C59F4 - mov r2, #0xff - ldr r0, [r1, #0x4] - mov r3, #0x1 - strb r2, [r0, #0x0] - ldr r0, [r1, #0x4] - add r0, #0x26 - strb r2, [r0, #0x0] - mov r2, #0xee -_0202F6C6: - ldr r0, [r1, #0x4] - strb r2, [r0, r3] - ldr r0, [r1, #0x4] - add r0, r0, r3 - add r0, #0x26 - add r3, r3, #0x1 - strb r2, [r0, #0x0] - cmp r3, #0x26 - blt _0202F6C6 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - ldr r2, _0202F7DC ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F7F8 ; =0x0000045C - ldr r2, [r3, r2] - ldr r0, [r3, r0] - mov r1, #0x0 - lsl r2, r2, #0x1 - bl MI_CpuFill8 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r1, #0x47 - ldr r3, [r0, #0x4] - ldr r2, _0202F7DC ; =0x00000658 - lsl r1, r1, #0x4 - add r0, r3, r1 - sub r1, #0x14 - ldr r2, [r3, r2] - ldr r1, [r3, r1] - lsl r2, r2, #0x1 - bl FUN_0202D394 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r3, #0x0 - ldr r2, [r0, #0x4] - ldr r1, _0202F7FC ; =0x00000684 - add r7, r3, #0x0 - strb r3, [r2, r1] - ldr r2, [r0, #0x4] - add r1, r1, #0x1 - strb r3, [r2, r1] - add r1, r3, #0x0 - add r2, r3, #0x0 -_0202F71A: - ldr r4, [r0, #0x4] - add r5, r4, r3 - ldr r4, _0202F800 ; =0x0000065F - strb r7, [r5, r4] - ldr r4, [r0, #0x4] - ldr r5, _0202F804 ; =0x00000667 - add r6, r4, r3 - mov r4, #0x1 - strb r4, [r6, r5] - ldr r4, [r0, #0x4] - add r5, #0x8 - add r6, r4, r3 - mov r4, #0x1 - strb r4, [r6, r5] - ldr r4, [r0, #0x4] - add r3, r3, #0x1 - add r5, r4, r1 - mov r4, #0x61 - lsl r4, r4, #0x4 - strh r7, [r5, r4] - ldr r4, [r0, #0x4] - ldr r5, _0202F808 ; =0x00000596 - add r6, r4, r2 - mov r4, #0xee - strb r4, [r6, r5] - ldr r4, [r0, #0x4] - ldr r5, _0202F80C ; =0x0000FFFF - add r6, r4, r2 - ldr r4, _0202F810 ; =0x00000594 - add r1, r1, #0x2 - strh r5, [r6, r4] - ldr r4, [r0, #0x4] - add r5, r4, r2 - mov r4, #0x59 - lsl r4, r4, #0x4 - str r7, [r5, r4] - ldr r4, [r0, #0x4] - add r5, r4, r2 - ldr r4, _0202F814 ; =0x0000058C - add r2, #0xc - str r7, [r5, r4] - cmp r3, #0x8 - blt _0202F71A - ldr r1, _0202F7D4 ; =UNK_021C59F4 - add r0, r4, #0x0 - ldr r3, [r1, #0x4] - add r0, #0xa4 - mov r2, #0x1 - str r2, [r3, r0] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - sub r3, #0x3a - mov r2, #0xee - strb r2, [r4, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - ldr r2, _0202F80C ; =0x0000FFFF - sub r3, #0x3c - strh r2, [r4, r3] - add r2, r0, #0x0 - ldr r3, [r1, #0x4] - sub r2, #0x40 - str r7, [r3, r2] - add r2, r0, #0x0 - ldr r3, [r1, #0x4] - sub r2, #0x44 - str r7, [r3, r2] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - add r3, #0x52 - mov r2, #0x1 - strb r2, [r4, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - add r3, #0x53 - strb r2, [r4, r3] - ldr r1, [r1, #0x4] - sub r0, #0xe4 - add r0, r1, r0 - bl FUN_0202D804 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202F818 ; =0x0000056C - add r0, r1, r0 - bl FUN_0202D804 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0202F81C ; =0x00000688 - strb r2, [r1, r0] - pop {r3-r7, pc} - .balign 4 -_0202F7D4: .word UNK_021C59F4 -_0202F7D8: .word 0x0000062C -_0202F7DC: .word 0x00000658 -_0202F7E0: .word 0x00000458 -_0202F7E4: .word 0x000004E8 -_0202F7E8: .word 0x00000454 -_0202F7EC: .word 0x0000047C -_0202F7F0: .word 0x000004DC -_0202F7F4: .word 0x00000464 -_0202F7F8: .word 0x0000045C -_0202F7FC: .word 0x00000684 -_0202F800: .word 0x0000065F -_0202F804: .word 0x00000667 -_0202F808: .word 0x00000596 -_0202F80C: .word 0x0000FFFF -_0202F810: .word 0x00000594 -_0202F814: .word 0x0000058C -_0202F818: .word 0x0000056C -_0202F81C: .word 0x00000688 - thumb_func_start FUN_0202F820 -FUN_0202F820: ; 0x0202F820 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r0, _0202F8B8 ; =UNK_021C59F4 - ldr r3, _0202F8BC ; =0x0000065F - ldr r1, [r0, #0x4] - mov r2, #0x0 - add r1, r1, r5 - strb r2, [r1, r3] - ldr r4, [r0, #0x4] - mov r1, #0x1 - add r6, r4, r5 - add r4, r3, #0x0 - add r4, #0x8 - strb r1, [r6, r4] - ldr r6, [r0, #0x4] - lsl r4, r5, #0x2 - add r6, r6, r4 - add r4, r3, #0x0 - sub r4, #0x27 - str r2, [r6, r4] - ldr r2, [r0, #0x4] - add r4, r2, r5 - add r2, r3, #0x0 - add r2, #0x10 - strb r1, [r4, r2] - ldr r1, [r0, #0x4] - sub r0, r3, #0x7 - ldr r2, [r1, r0] - ldr r3, _0202F8C0 ; =0x0000047C - mov r0, #0xc - add r4, r5, #0x0 - mul r4, r0 - add r0, r1, r3 - sub r3, #0x28 - ldr r3, [r1, r3] - add r1, r5, #0x0 - mul r1, r2 - add r0, r0, r4 - add r1, r3, r1 - bl FUN_0202D394 - ldr r0, _0202F8B8 ; =UNK_021C59F4 - ldr r3, _0202F8C4 ; =0x000004E8 - ldr r1, [r0, #0x4] - ldr r0, _0202F8C8 ; =0x00000658 - ldr r2, [r1, r0] - add r0, r1, r3 - sub r3, #0x90 - ldr r3, [r1, r3] - add r1, r5, #0x0 - mul r1, r2 - add r0, r0, r4 - add r1, r3, r1 - bl FUN_0202D394 - ldr r3, _0202F8B8 ; =UNK_021C59F4 - ldr r2, _0202F8CC ; =0x00000596 - ldr r0, [r3, #0x4] - mov r1, #0xee - add r0, r0, r4 - strb r1, [r0, r2] - ldr r0, [r3, #0x4] - ldr r5, _0202F8D0 ; =0x0000FFFF - add r1, r0, r4 - sub r0, r2, #0x2 - strh r5, [r1, r0] - ldr r1, [r3, #0x4] - mov r0, #0x0 - add r5, r1, r4 - sub r1, r2, #0x6 - str r0, [r5, r1] - ldr r1, [r3, #0x4] - sub r2, #0xa - add r1, r1, r4 - str r0, [r1, r2] - pop {r4-r6, pc} - .balign 4 -_0202F8B8: .word UNK_021C59F4 -_0202F8BC: .word 0x0000065F -_0202F8C0: .word 0x0000047C -_0202F8C4: .word 0x000004E8 -_0202F8C8: .word 0x00000658 -_0202F8CC: .word 0x00000596 -_0202F8D0: .word 0x0000FFFF - thumb_func_start FUN_0202F8D4 -FUN_0202F8D4: ; 0x0202F8D4 - push {r4-r6, lr} - ldr r4, _0202F908 ; =UNK_021C59F4 - ldr r6, _0202F90C ; =0x00000667 - mov r5, #0x1 -_0202F8DC: - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - bne _0202F900 - ldr r0, [r4, #0x4] - add r0, r0, r5 - ldrb r0, [r0, r6] - cmp r0, #0x0 - bne _0202F900 - bl FUN_02031280 - cmp r0, #0x0 - bne _0202F900 - add r0, r5, #0x0 - bl FUN_0202F820 -_0202F900: - add r5, r5, #0x1 - cmp r5, #0x8 - blt _0202F8DC - pop {r4-r6, pc} - .balign 4 -_0202F908: .word UNK_021C59F4 -_0202F90C: .word 0x00000667 - thumb_func_start FUN_0202F910 -FUN_0202F910: ; 0x0202F910 - ldr r3, _0202F914 ; =FUN_0202F820 - bx r3 - .balign 4 -_0202F914: .word FUN_0202F820 - thumb_func_start FUN_0202F918 -FUN_0202F918: ; 0x0202F918 - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - add r7, r2, #0x0 - str r3, [sp, #0x0] - mov r4, #0x1 - bl FUN_02033534 - cmp r0, #0x13 - bge _0202F93E - ldr r2, [sp, #0x0] - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_0202E5F8 - add r4, r0, #0x0 - ldr r0, _0202F94C ; =FUN_0202F910 - bl FUN_0202D330 -_0202F93E: - add r0, r5, #0x0 - add r1, r7, #0x0 - bl FUN_0202F150 - add r0, r4, #0x0 - pop {r3-r7, pc} - nop -_0202F94C: .word FUN_0202F910 + + + + + thumb_func_start FUN_0202F950 FUN_0202F950: ; 0x0202F950 diff --git a/arm9/global.inc b/arm9/global.inc index a00970de..2e1926cd 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8517,3 +8517,12 @@ .extern FUN_02025490 .extern FUN_020254A0 .extern FUN_020254B4 +.extern UNK_021C59F4 +.extern UNK_02105D58 +.extern FUN_0202F150 +.extern FUN_0202F2F0 +.extern FUN_0202F5A4 +.extern FUN_0202F820 +.extern FUN_0202F8D4 +.extern FUN_0202F910 +.extern FUN_0202F918 diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c new file mode 100644 index 00000000..e618469a --- /dev/null +++ b/arm9/src/unk_0202F150_c.c @@ -0,0 +1,417 @@ +#include "global.h" +#include "MI_memory.h" +#include "heap.h" + +struct +{ + u8 unk00; + struct UnkStruct1 *unk04; +} UNK_021C59F4; + +// struct UnkStruct2 { +// u8 unk00; +// u8 unk01; +// }; + +u8 UNK_02105D58 = 4; +u8 UNK_02105D59 = 4; + +extern int FUN_02033534(); +extern u32 FUN_0202D858(u16 param0); +extern void FUN_02031480(u32 param0); +extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); +extern void FUN_0202F2F0(); +extern void FUN_020312BC(u32 param0); +extern void FUN_0202FB20(); + +extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); +extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); + +extern void FUN_0202D804(u32 *param0); +extern u32 FUN_02030E7C(u16 param0); + +struct UnkStruct1 +{ + u8 unk000[38]; + u8 unk026[38]; + u8 unk04c[264]; + u8 unk154[192]; + u8 unk214[192]; + u8 unk2D4[384]; + u32 unk454; + u32 unk458; + u32 unk45C; + u32 unk460; + u32 unk464; + u8 unk468[0x8]; + u32 unk470; + u8 unk474[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk47C[8]; + u32 unk4DC; + u8 unk4E0[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk4E8[8]; + u32 unk548; + u8 unk54C[32]; + u8 unk56C[32]; + struct + { + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; + u8 unk0b; + } unk58C[8]; + u32 unk5EC; + u32 unk5F0; + u16 unk5F4; + u8 unk5F6; + u8 unk5F7; + u32 unk5F8; + u8 unk5FC[0x14]; + u16 unk610[8]; + u8 unk620[0xc]; + u8 unk62C; + u8 unk62D; + u8 unk62E[0x2]; + u32 unk630; + u32 unk634; + u32 unk638[8]; + u32 unk658; + u16 unk65C; + u8 unk65E; + u8 unk65F[8]; + u8 unk667[8]; + u8 unk66F[8]; + u8 unk677[4]; + u8 unk67B[0x2]; + u8 unk67D; + u8 unk67E; + u8 unk67F; + u8 unk680; + u8 unk681; + u8 unk682; + u8 unk683; + u8 unk684; + u8 unk685; + u8 unk686; + u8 unk687; + u8 unk688; + u8 unk689[0x3]; +}; + +THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) +{ + u32 r4 = 0; + UNK_021C59F4.unk00 = 0; + if (param0 != 0) + { + u32 res = FUN_0202D858(FUN_02033534()) + 1; + + if (UNK_021C59F4.unk04 != 0) + { + return 1; + } + + FUN_02031480(0xf); + struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, 0x68C); + UNK_021C59F4.unk04 = ptr; + MI_CpuFill8(ptr, 0, 0x68C); + + UNK_021C59F4.unk04->unk658 = param1 + 0x40; + UNK_021C59F4.unk04->unk67D = 0; + UNK_021C59F4.unk04->unk67E = 0x1b; + + UNK_021C59F4.unk04->unk45C = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658 << 1); + + UNK_021C59F4.unk04->unk460 = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk458 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk454 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + if (FUN_02033534() == 0xa) + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x64, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x32 << 4, &UNK_021C59F4.unk04->unk4DC); + } + else + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x14, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x1b + 0xfd, &UNK_021C59F4.unk04->unk4DC); + } + } + else + { + + r4 = 1; + if (UNK_021C59F4.unk04 == 0) + { + ErrorHandling(); + } + } + + UNK_021C59F4.unk04->unk65C = 0; + + for (int i = 0; i < 4; i++) + { + UNK_021C59F4.unk04->unk677[i] = 0xff; + } + + if (r4 == 0) + { + FUN_0202F2F0(); + } + + FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); + + if (r4 == 0) + { + u32 res2 = FUN_0200CA60(FUN_0202FB20, 0, 0); + + UNK_021C59F4.unk04->unk548 = res2; + } + + UNK_021C59F4.unk04->unk687 = 0; + + return 1; +} + +THUMB_FUNC void FUN_0202F2F0() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + UNK_021C59F4.unk04->unk67F = 0; + UNK_021C59F4.unk04->unk680 = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + UNK_021C59F4.unk04->unk154[i] = 0xee; + UNK_021C59F4.unk04->unk214[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; + + for (i = 1; i < 0x26; i++) + { + UNK_021C59F4.unk04->unk000[i] = 0xee; + UNK_021C59F4.unk04->unk026[i] = 0xee; + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); + + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + + UNK_021C59F4.unk04->unk638[i] = 0; + } + + UNK_021C59F4.unk04->unk634 = 0; + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + UNK_02105D59 = 4; + UNK_02105D58 = 4; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F5A4() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + UNK_021C59F4.unk04->unk154[i] = 0xee; + UNK_021C59F4.unk04->unk214[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; + + for (i = 1; i < 0x26; i++) + { + UNK_021C59F4.unk04->unk000[i] = 0xee; + UNK_021C59F4.unk04->unk026[i] = 0xee; + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + } + + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F820(u32 param0) +{ + UNK_021C59F4.unk04->unk65F[param0] = 0; + + UNK_021C59F4.unk04->unk667[param0] = 1; + + UNK_021C59F4.unk04->unk638[param0] = 0; + + UNK_021C59F4.unk04->unk66F[param0] = 1; + + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[param0], + UNK_021C59F4.unk04->unk454 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[param0], + UNK_021C59F4.unk04->unk458 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk58C[param0].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[param0].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[param0].unk04 = 0; + UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; +} + +extern u32 FUN_02031280(); + +THUMB_FUNC void FUN_0202F8D4() +{ + for (int i = 1; i < 8; i++) + { + if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) + { + FUN_0202F820(i); + } + } +} + +THUMB_FUNC void FUN_0202F910(u32 param0) +{ + FUN_0202F820(param0); +} + +extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); +extern void FUN_0202D330(void (*param0)(u32)); + +THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) +{ + u32 ret = 1; + if (FUN_02033534() < 0x13) + { + ret = FUN_0202E5F8(param0, param1, param3); + FUN_0202D330(FUN_0202F910); + } + + FUN_0202F150(param0, param2); + + return ret; +} \ No newline at end of file -- cgit v1.2.3 From c0dc03771119177fed8cf15d12bebcc1b3aa9206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 8 Apr 2021 22:26:10 +0200 Subject: first nonmatching --- arm9/asm/unk_0202F150.s | 723 ---------------------------------------------- arm9/global.inc | 6 + arm9/src/unk_0202F150_c.c | 549 +++++++++++++++++++++++++++++++++-- 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 + + + -- cgit v1.2.3 From 419991733b49432fbd2f130e960736469af85400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Fri, 9 Apr 2021 20:12:14 +0200 Subject: more decomp --- arm9/asm/unk_0202F150.s | 948 ---------------------------------------------- arm9/global.inc | 5 + arm9/src/unk_0202F150_c.c | 368 +++++++++++++++++- 3 files changed, 371 insertions(+), 950 deletions(-) diff --git a/arm9/asm/unk_0202F150.s b/arm9/asm/unk_0202F150.s index 395ebd44..802807f5 100644 --- a/arm9/asm/unk_0202F150.s +++ b/arm9/asm/unk_0202F150.s @@ -12,954 +12,6 @@ .text - thumb_func_start FUN_0202FEEC -FUN_0202FEEC: ; 0x0202FEEC - push {r3-r7, lr} - ldr r0, _02030064 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0202FEFE - bl FUN_02033534 - cmp r0, #0x13 - blt _0202FF00 -_0202FEFE: - b _02030062 -_0202FF00: - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - str r0, [sp, #0x0] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r6, r0, #0x1 - ldr r0, _02030068 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - cmp r1, #0x2 - beq _0202FF2C - ldrb r0, [r0, #0x1] - cmp r0, #0x0 - beq _0202FF2C - b _02030062 -_0202FF2C: - ldr r0, _02030068 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - add r1, r1, #0x1 - strb r1, [r0, #0x1] - bl FUN_0202FA28 - cmp r0, #0x1 - bne _0202FF4A - ldr r0, _02030064 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x1a - lsl r0, r0, #0x6 - ldrb r0, [r1, r0] - bl FUN_0202FE2C -_0202FF4A: - bl FUN_0202CBD4 - cmp r0, #0x4 - bne _0202FF86 - bl FUN_02031280 - cmp r0, #0x0 - bne _0202FF86 - ldr r0, _02030064 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x55 - lsl r0, r0, #0x2 - add r3, r1, r0 - mov r0, #0x1a - lsl r0, r0, #0x6 - ldrb r0, [r1, r0] - mov r1, #0xc0 - add r2, r0, #0x0 - mul r2, r1 - add r0, r3, r2 - ldr r3, _0203006C ; =FUN_020304F0 - mov r2, #0xe - bl FUN_0202D0D0 - cmp r0, #0x0 - bne _0202FF86 - ldr r0, _02030068 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - sub r1, r1, #0x1 - strb r1, [r0, #0x1] -_0202FF86: - ldr r0, _02030068 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - cmp r1, #0x1 - beq _0202FF94 - ldrb r0, [r0, #0x1] - cmp r0, #0x3 - bne _0203000A -_0202FF94: - mov r4, #0x0 - cmp r6, #0x0 - ble _0202FFDC - ldr r7, _02030064 ; =UNK_021C59F4 - add r5, r4, #0x0 -_0202FF9E: - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _0202FFBA - ldr r0, [r7, #0x4] - ldr r1, _02030070 ; =0x00000638 - add r0, r0, r5 - ldr r1, [r0, r1] - add r2, r1, #0x1 - ldr r1, _02030070 ; =0x00000638 - str r2, [r0, r1] - b _0202FFD4 -_0202FFBA: - bl FUN_02031280 - cmp r0, #0x0 - beq _0202FFD4 - cmp r4, #0x0 - bne _0202FFD4 - ldr r0, [r7, #0x4] - ldr r1, _02030070 ; =0x00000638 - add r0, r0, r5 - ldr r1, [r0, r1] - add r2, r1, #0x1 - ldr r1, _02030070 ; =0x00000638 - str r2, [r0, r1] -_0202FFD4: - add r4, r4, #0x1 - add r5, r5, #0x4 - cmp r4, r6 - blt _0202FF9E -_0202FFDC: - ldr r0, _02030064 ; =UNK_021C59F4 - mov r1, #0x55 - ldr r2, [r0, #0x4] - lsl r1, r1, #0x2 - add r4, r2, r1 - mov r1, #0x1a - lsl r1, r1, #0x6 - ldrb r1, [r2, r1] - mov r2, #0xc0 - mov r0, #0x0 - add r3, r1, #0x0 - mul r3, r2 - add r1, r4, r3 - bl FUN_0203026C - ldr r0, _02030064 ; =UNK_021C59F4 - mov r1, #0x1a - ldr r3, [r0, #0x4] - lsl r1, r1, #0x6 - ldrb r2, [r3, r1] - mov r0, #0x1 - sub r0, r0, r2 - strb r0, [r3, r1] -_0203000A: - mov r5, #0x0 - cmp r6, #0x0 - ble _0203004A - add r4, r5, #0x0 - mov r7, #0xff -_02030014: - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - bne _02030040 - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030040 - ldr r0, _02030064 ; =UNK_021C59F4 - mov r1, #0x1a - ldr r0, [r0, #0x4] - lsl r1, r1, #0x6 - ldrb r2, [r0, r1] - mov r1, #0xc0 - mul r1, r2 - add r0, r0, r1 - add r1, r4, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - strb r7, [r1, r0] -_02030040: - ldr r0, [sp, #0x0] - add r5, r5, #0x1 - add r4, r4, r0 - cmp r5, r6 - blt _02030014 -_0203004A: - bl FUN_0202CBD4 - cmp r0, #0x4 - bne _0203005A - bl FUN_02031280 - cmp r0, #0x0 - beq _02030062 -_0203005A: - ldr r0, _02030068 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - add r1, r1, #0x1 - strb r1, [r0, #0x1] -_02030062: - pop {r3-r7, pc} - .balign 4 -_02030064: .word UNK_021C59F4 -_02030068: .word UNK_02105D58 -_0203006C: .word FUN_020304F0 -_02030070: .word 0x00000638 - - thumb_func_start FUN_02030074 -FUN_02030074: ; 0x02030074 - push {r3-r7, lr} - ldr r0, _02030228 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0203022C ; =0x00000683 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _020300DC - bl FUN_02033534 - cmp r0, #0x13 - blt _020300B4 - mov r0, #0x0 - bl FUN_02030E7C - cmp r0, #0x0 - beq _020300DC - ldr r0, _02030228 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x55 - lsl r0, r0, #0x2 - add r0, r1, r0 - mov r1, #0x4c - bl MOD04_021D79B4 - cmp r0, #0x0 - beq _020300DC - ldr r0, _02030228 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0203022C ; =0x00000683 - strb r2, [r1, r0] - pop {r3-r7, pc} -_020300B4: - bl FUN_0202CBD4 - cmp r0, #0x4 - beq _020300C4 - bl FUN_02031280 - cmp r0, #0x0 - beq _020300DC -_020300C4: - bl FUN_0202FEEC - ldr r0, _02030230 ; =UNK_02105D58 - ldrb r0, [r0, #0x1] - cmp r0, #0x2 - bne _020300DC - ldr r0, _02030228 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0203022C ; =0x00000683 - strb r2, [r1, r0] - pop {r3-r7, pc} -_020300DC: - bl FUN_02033534 - cmp r0, #0x13 - blt _02030184 - mov r0, #0x0 - bl FUN_02030E7C - cmp r0, #0x0 - bne _020300F0 - b _02030224 -_020300F0: - ldr r0, _02030228 ; =UNK_021C59F4 - mov r1, #0x63 - ldr r2, [r0, #0x4] - lsl r1, r1, #0x4 - ldr r0, [r2, r1] - cmp r0, #0x0 - beq _02030130 - add r0, r1, #0x0 - add r0, #0xc - ldr r0, [r2, r0] - cmp r0, #0x3 - bgt _02030110 - add r1, #0x8 - ldr r0, [r2, r1] - cmp r0, #0x3 - ble _02030112 -_02030110: - b _02030224 -_02030112: - ldr r0, _02030230 ; =UNK_02105D58 - ldrb r0, [r0, #0x1] - cmp r0, #0x4 - bne _02030150 - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030128 - mov r0, #0x0 - bl FUN_0202FE2C -_02030128: - ldr r0, _02030230 ; =UNK_02105D58 - mov r1, #0x2 - strb r1, [r0, #0x1] - b _02030150 -_02030130: - ldr r0, _02030230 ; =UNK_02105D58 - ldrb r0, [r0, #0x1] - cmp r0, #0x4 - bne _0203014A - bl FUN_0202FA28 - cmp r0, #0x1 - bne _0203014A - mov r0, #0x0 - bl FUN_0202FE2C - cmp r0, #0x0 - beq _02030224 -_0203014A: - ldr r0, _02030230 ; =UNK_02105D58 - mov r1, #0x2 - strb r1, [r0, #0x1] -_02030150: - ldr r0, _02030228 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x55 - lsl r0, r0, #0x2 - add r0, r1, r0 - mov r1, #0x4c - bl MOD04_021D79B4 - cmp r0, #0x0 - beq _02030224 - ldr r0, _02030230 ; =UNK_02105D58 - mov r1, #0x4 - strb r1, [r0, #0x1] - ldr r1, _02030228 ; =UNK_021C59F4 - ldr r0, _02030234 ; =0x00000638 - ldr r3, [r1, #0x4] - ldr r2, [r3, r0] - add r2, r2, #0x1 - str r2, [r3, r0] - ldr r2, [r1, #0x4] - add r1, r0, #0x4 - ldr r1, [r2, r1] - add r0, r0, #0x4 - add r1, r1, #0x1 - str r1, [r2, r0] - pop {r3-r7, pc} -_02030184: - bl FUN_0202CBD4 - cmp r0, #0x4 - beq _02030194 - bl FUN_02031280 - cmp r0, #0x0 - beq _02030224 -_02030194: - ldr r0, _02030230 ; =UNK_02105D58 - ldrb r0, [r0, #0x1] - cmp r0, #0x4 - bne _02030224 - ldr r6, _02030228 ; =UNK_021C59F4 - ldr r7, _02030234 ; =0x00000638 - mov r4, #0x1 - mov r5, #0x4 -_020301A4: - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _020301BC - ldr r0, [r6, #0x4] - add r0, r0, r5 - ldr r0, [r0, r7] - cmp r0, #0x3 - ble _020301D2 - pop {r3-r7, pc} -_020301BC: - cmp r4, #0x0 - bne _020301D2 - bl FUN_02031280 - cmp r0, #0x0 - beq _020301D2 - ldr r1, [r6, #0x4] - ldr r0, _02030234 ; =0x00000638 - ldr r0, [r1, r0] - cmp r0, #0x3 - bgt _02030224 -_020301D2: - add r4, r4, #0x1 - add r5, r5, #0x4 - cmp r4, #0x8 - blt _020301A4 - bl FUN_0202FA28 - cmp r0, #0x0 - bne _0203021A - ldr r0, _02030228 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x55 - lsl r0, r0, #0x2 - add r2, r1, r0 - mov r0, #0x1a - lsl r0, r0, #0x6 - ldrb r1, [r1, r0] - mov r0, #0xc0 - mul r0, r1 - add r0, r2, r0 - bl FUN_02030A00 - ldr r0, _02030228 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x55 - lsl r0, r0, #0x2 - add r2, r1, r0 - mov r0, #0x1a - lsl r0, r0, #0x6 - ldrb r1, [r1, r0] - mov r0, #0x1 - sub r1, r0, r1 - mov r0, #0xc0 - mul r0, r1 - add r0, r2, r0 - bl FUN_02030A00 -_0203021A: - ldr r0, _02030230 ; =UNK_02105D58 - mov r1, #0x0 - strb r1, [r0, #0x1] - bl FUN_0202FEEC -_02030224: - pop {r3-r7, pc} - nop -_02030228: .word UNK_021C59F4 -_0203022C: .word 0x00000683 -_02030230: .word UNK_02105D58 -_02030234: .word 0x00000638 - - thumb_func_start FUN_02030238 -FUN_02030238: ; 0x02030238 - push {r4-r6, lr} - ldr r4, _02030264 ; =UNK_021C59F4 - ldr r3, _02030268 ; =0x0000066F - ldr r5, [r4, #0x4] - ldrb r6, [r5, r3] - cmp r6, #0x0 - beq _0203025C - add r0, r3, #0x0 - sub r0, #0x3b - ldr r0, [r5, r0] - sub r1, r0, #0x1 - add r0, r3, #0x0 - sub r0, #0x3b - str r1, [r5, r0] - ldr r0, [r4, #0x4] - mov r1, #0x0 - strb r1, [r0, r3] - pop {r4-r6, pc} -_0203025C: - bl FUN_0203026C - pop {r4-r6, pc} - nop -_02030264: .word UNK_021C59F4 -_02030268: .word 0x0000066F - - thumb_func_start FUN_0203026C -FUN_0203026C: ; 0x0203026C - push {r3-r7, lr} - sub sp, #0x8 - ldr r0, _020303A0 ; =UNK_021C59F4 - add r5, r1, #0x0 - ldr r2, [r0, #0x4] - ldr r0, _020303A4 ; =0x00000634 - ldr r1, [r2, r0] - sub r1, r1, #0x1 - str r1, [r2, r0] - cmp r5, #0x0 - beq _02030290 - ldrb r0, [r5, #0x0] - cmp r0, #0xb - bne _02030296 - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030292 -_02030290: - b _0203039C -_02030292: - add r5, r5, #0x1 - b _0203029E -_02030296: - bl FUN_0202FA28 - cmp r0, #0x0 - beq _0203039C -_0203029E: - ldr r0, _020303A0 ; =UNK_021C59F4 - ldr r1, _020303A8 ; =0x00000682 - ldr r0, [r0, #0x4] - ldrb r1, [r0, r1] - cmp r1, #0x0 - beq _020302B2 - ldrb r2, [r5, #0x0] - mov r1, #0x1 - tst r1, r2 - bne _0203039C -_020302B2: - ldr r1, _020303A8 ; =0x00000682 - mov r2, #0x0 - strb r2, [r0, r1] - bl FUN_0202FA28 - cmp r0, #0x1 - bne _0203036E - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - add r6, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r0, r0, #0x1 - mov r4, #0x0 - str r0, [sp, #0x4] - cmp r0, #0x0 - ble _0203039C - sub r0, r6, #0x1 - add r7, r4, #0x0 - str r0, [sp, #0x0] -_020302EA: - ldrb r0, [r5, #0x0] - cmp r0, #0xff - bne _02030302 - ldr r0, _020303A0 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _020303AC ; =0x0000065C - lsl r2, r4 - ldrh r0, [r1, r0] - mvn r2, r2 - and r2, r0 - b _02030310 -_02030302: - ldr r0, _020303A0 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _020303AC ; =0x0000065C - lsl r2, r4 - ldrh r0, [r1, r0] - orr r2, r0 -_02030310: - ldr r0, _020303AC ; =0x0000065C - strh r2, [r1, r0] - ldrb r2, [r5, #0x0] - cmp r2, #0xff - bne _0203031E - add r5, r5, r6 - b _02030360 -_0203031E: - cmp r2, #0xe - bne _02030326 - add r5, r5, r6 - b _02030360 -_02030326: - ldr r0, _020303A0 ; =UNK_021C59F4 - ldr r3, [r0, #0x4] - ldr r0, _020303B0 ; =0x00000667 - add r1, r3, r4 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _0203033E - mov r0, #0x1 - tst r0, r2 - beq _0203033E - add r5, r5, r6 - b _02030360 -_0203033E: - ldr r0, _020303B4 ; =0x000004E8 - add r5, r5, #0x1 - add r0, r3, r0 - ldr r2, [sp, #0x0] - ldr r3, _020303B8 ; =0x000005E6 - add r0, r0, r7 - add r1, r5, #0x0 - bl FUN_0202D3A4 - ldr r0, [sp, #0x0] - mov r1, #0x0 - add r5, r5, r0 - ldr r0, _020303A0 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - add r2, r0, r4 - ldr r0, _020303B0 ; =0x00000667 - strb r1, [r2, r0] -_02030360: - ldr r0, [sp, #0x4] - add r4, r4, #0x1 - add r7, #0xc - cmp r4, r0 - blt _020302EA - add sp, #0x8 - pop {r3-r7, pc} -_0203036E: - ldr r0, _020303A0 ; =UNK_021C59F4 - ldrb r2, [r5, #0x1] - ldr r1, [r0, #0x4] - ldr r3, _020303AC ; =0x0000065C - strh r2, [r1, r3] - ldr r2, [r0, #0x4] - ldrh r1, [r2, r3] - lsl r1, r1, #0x8 - strh r1, [r2, r3] - ldr r4, [r0, #0x4] - ldrb r1, [r5, #0x2] - ldrh r2, [r4, r3] - add r1, r2, r1 - strh r1, [r4, r3] - ldr r1, [r0, #0x4] - mov r0, #0x47 - lsl r0, r0, #0x4 - add r0, r1, r0 - ldrb r2, [r5, #0x3] - add r1, r5, #0x4 - sub r3, #0x5d - bl FUN_0202D3A4 -_0203039C: - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_020303A0: .word UNK_021C59F4 -_020303A4: .word 0x00000634 -_020303A8: .word 0x00000682 -_020303AC: .word 0x0000065C -_020303B0: .word 0x00000667 -_020303B4: .word 0x000004E8 -_020303B8: .word 0x000005E6 - - thumb_func_start FUN_020303BC -FUN_020303BC: ; 0x020303BC - push {r4-r6, lr} - ldr r3, _020303EC ; =UNK_021C59F4 - ldr r6, _020303F0 ; =0x0000066F - ldr r5, [r3, #0x4] - add r4, r5, r0 - ldrb r4, [r4, r6] - cmp r4, #0x0 - beq _020303E4 - add r1, r6, #0x0 - sub r1, #0x37 - add r4, r5, r1 - lsl r2, r0, #0x2 - ldr r1, [r4, r2] - sub r1, r1, #0x1 - str r1, [r4, r2] - ldr r1, [r3, #0x4] - mov r2, #0x0 - add r0, r1, r0 - strb r2, [r0, r6] - pop {r4-r6, pc} -_020303E4: - bl FUN_020303F4 - pop {r4-r6, pc} - nop -_020303EC: .word UNK_021C59F4 -_020303F0: .word 0x0000066F - - thumb_func_start FUN_020303F4 -FUN_020303F4: ; 0x020303F4 - push {r4-r6, lr} - ldr r3, _020304B8 ; =UNK_021C59F4 - add r5, r0, #0x0 - ldr r0, [r3, #0x4] - ldr r2, _020304BC ; =0x00000638 - add r4, r1, #0x0 - add r1, r0, r2 - lsl r0, r5, #0x2 - ldr r6, [r1, r0] - sub r6, r6, #0x1 - str r6, [r1, r0] - cmp r4, #0x0 - beq _020304B4 - ldr r0, [r3, #0x4] - add r2, #0x2f - add r0, r0, r2 - ldrb r1, [r0, r5] - cmp r1, #0x0 - beq _02030422 - ldrb r2, [r4, #0x0] - mov r1, #0x1 - tst r1, r2 - bne _020304B4 -_02030422: - mov r1, #0x0 - strb r1, [r0, r5] - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030478 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - add r6, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - ldrb r1, [r4, #0x0] - mov r0, #0x2 - tst r0, r1 - bne _02030468 - ldr r0, _020304B8 ; =UNK_021C59F4 - ldr r3, _020304C0 ; =0x0000065E - ldr r1, [r0, #0x4] - ldr r0, _020304C4 ; =0x0000047C - add r2, r6, #0x0 - add r1, r1, r0 - mov r0, #0xc - mul r0, r5 - add r0, r1, r0 - add r1, r4, #0x0 - bl FUN_0202D3A4 -_02030468: - ldr r0, _020304B8 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _020304C8 ; =0x0000065F - add r1, r1, r0 - ldrb r0, [r1, r5] - add r0, r0, #0x1 - strb r0, [r1, r5] - pop {r4-r6, pc} -_02030478: - add r0, r4, #0x0 - add r1, r5, #0x0 - bl FUN_020307E4 - ldrb r1, [r4, #0x0] - mov r0, #0x2 - tst r0, r1 - bne _020304B4 - mov r0, #0xc - add r6, r5, #0x0 - mul r6, r0 - ldr r0, _020304B8 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _020304CC ; =0x000004E8 - add r0, r1, r0 - add r0, r0, r6 - bl FUN_0202D498 - cmp r0, #0xb - blt _020304B4 - ldr r0, _020304B8 ; =UNK_021C59F4 - ldr r3, _020304D0 ; =0x0000066E - ldr r1, [r0, #0x4] - ldr r0, _020304CC ; =0x000004E8 - mov r2, #0xb - add r0, r1, r0 - add r0, r0, r6 - add r1, r4, #0x1 - bl FUN_0202D3A4 -_020304B4: - pop {r4-r6, pc} - nop -_020304B8: .word UNK_021C59F4 -_020304BC: .word 0x00000638 -_020304C0: .word 0x0000065E -_020304C4: .word 0x0000047C -_020304C8: .word 0x0000065F -_020304CC: .word 0x000004E8 -_020304D0: .word 0x0000066E - - thumb_func_start FUN_020304D4 -FUN_020304D4: ; 0x020304D4 - push {r3, lr} - cmp r0, #0x0 - beq _020304E4 - ldr r0, _020304EC ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - add r1, r1, #0x1 - strb r1, [r0, #0x0] - pop {r3, pc} -_020304E4: - bl ErrorHandling - pop {r3, pc} - nop -_020304EC: .word UNK_02105D58 - - thumb_func_start FUN_020304F0 -FUN_020304F0: ; 0x020304F0 - push {r3, lr} - cmp r0, #0x0 - beq _02030500 - ldr r0, _02030508 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - add r1, r1, #0x1 - strb r1, [r0, #0x1] - pop {r3, pc} -_02030500: - bl ErrorHandling - pop {r3, pc} - nop -_02030508: .word UNK_02105D58 - - thumb_func_start FUN_0203050C -FUN_0203050C: ; 0x0203050C - push {r4, lr} - ldr r0, _02030660 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0203051E - bl FUN_02033534 - cmp r0, #0x13 - blt _02030520 -_0203051E: - b _0203065E -_02030520: - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - add r4, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - bl FUN_02031280 - cmp r0, #0x0 - beq _02030594 - ldr r0, _02030664 ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - cmp r1, #0x2 - beq _02030550 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _02030594 -_02030550: - ldr r0, _02030664 ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - add r1, r1, #0x1 - strb r1, [r0, #0x0] - mov r0, #0x1 - bl FUN_020304D4 - ldr r0, _02030660 ; =UNK_021C59F4 - ldr r1, _02030668 ; =0x0000067F - ldr r3, [r0, #0x4] - mov r0, #0x0 - ldrb r2, [r3, r1] - mov r1, #0x26 - mul r1, r2 - lsl r2, r4, #0x10 - add r1, r3, r1 - lsr r2, r2, #0x10 - bl FUN_020303F4 - ldr r2, _02030660 ; =UNK_021C59F4 - ldr r1, _02030668 ; =0x0000067F - ldr r4, [r2, #0x4] - mov r0, #0x1 - ldrb r3, [r4, r1] - sub r0, r0, r3 - strb r0, [r4, r1] - add r0, r1, #0x0 - ldr r2, [r2, #0x4] - sub r0, #0x4b - ldr r0, [r2, r0] - sub r1, #0x4b - add r0, r0, #0x1 - str r0, [r2, r1] - pop {r4, pc} -_02030594: - bl FUN_0202CBD4 - cmp r0, #0x4 - bne _0203065E - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - bne _020305AE - bl FUN_02031190 - pop {r4, pc} -_020305AE: - ldr r0, _02030664 ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - cmp r1, #0x2 - beq _020305BC - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0203065E -_020305BC: - bl FUN_02031190 - cmp r0, #0x0 - beq _02030612 - ldr r0, _02030664 ; =UNK_02105D58 - ldr r3, _0203066C ; =FUN_020304D4 - ldrb r1, [r0, #0x0] - add r1, r1, #0x1 - strb r1, [r0, #0x0] - ldr r0, _02030660 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - ldr r0, _02030668 ; =0x0000067F - ldrb r1, [r2, r0] - mov r0, #0x26 - mul r0, r1 - lsl r1, r4, #0x10 - add r0, r2, r0 - lsr r1, r1, #0x10 - mov r2, #0xe - bl FUN_0202D0D0 - cmp r0, #0x0 - bne _020305F4 - ldr r0, _02030664 ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - sub r1, r1, #0x1 - strb r1, [r0, #0x0] - pop {r4, pc} -_020305F4: - ldr r2, _02030660 ; =UNK_021C59F4 - ldr r1, _02030668 ; =0x0000067F - ldr r4, [r2, #0x4] - mov r0, #0x1 - ldrb r3, [r4, r1] - sub r0, r0, r3 - strb r0, [r4, r1] - add r0, r1, #0x0 - ldr r2, [r2, #0x4] - sub r0, #0x4b - ldr r0, [r2, r0] - sub r1, #0x4b - add r0, r0, #0x1 - str r0, [r2, r1] - pop {r4, pc} -_02030612: - bl FUN_0202CB8C - ldr r1, _02030670 ; =0x0000FFFE - tst r0, r1 - beq _0203065E - ldr r0, _02030664 ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - add r1, r1, #0x1 - strb r1, [r0, #0x0] - mov r0, #0x1 - bl FUN_020304D4 - ldr r0, _02030660 ; =UNK_021C59F4 - ldr r1, _02030668 ; =0x0000067F - ldr r3, [r0, #0x4] - mov r0, #0x0 - ldrb r2, [r3, r1] - mov r1, #0x26 - mul r1, r2 - lsl r2, r4, #0x10 - add r1, r3, r1 - lsr r2, r2, #0x10 - bl FUN_020303F4 - ldr r2, _02030660 ; =UNK_021C59F4 - ldr r1, _02030668 ; =0x0000067F - ldr r4, [r2, #0x4] - mov r0, #0x1 - ldrb r3, [r4, r1] - sub r0, r0, r3 - strb r0, [r4, r1] - add r0, r1, #0x0 - ldr r2, [r2, #0x4] - sub r0, #0x4b - ldr r0, [r2, r0] - sub r1, #0x4b - add r0, r0, #0x1 - str r0, [r2, r1] -_0203065E: - pop {r4, pc} - .balign 4 -_02030660: .word UNK_021C59F4 -_02030664: .word UNK_02105D58 -_02030668: .word 0x0000067F -_0203066C: .word FUN_020304D4 -_02030670: .word 0x0000FFFE - thumb_func_start FUN_02030674 FUN_02030674: ; 0x02030674 push {r3-r7, lr} diff --git a/arm9/global.inc b/arm9/global.inc index 1fc85f18..5700a247 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8532,3 +8532,8 @@ .extern FUN_0202FB58 .extern FUN_0202FB80 .extern FUN_0202FE2C +.extern FUN_0202FEEC +.extern FUN_02030074 +.extern FUN_020303F4 +.extern FUN_020304D4 +.extern FUN_020304F0 diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c index b0a249cf..162761a8 100644 --- a/arm9/src/unk_0202F150_c.c +++ b/arm9/src/unk_0202F150_c.c @@ -14,8 +14,8 @@ struct // u8 unk01; // }; -u8 UNK_02105D58 = 4; -u8 UNK_02105D59 = 4; +vu8 UNK_02105D58 = 4; +vu8 UNK_02105D59 = 4; extern int FUN_02033534(); extern int FUN_0202D858(u16 param0); @@ -796,6 +796,7 @@ extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); +THUMB_FUNC u32 FUN_0202FE2C(int param0); #ifdef NONMATCHING THUMB_FUNC u32 FUN_0202FE2C(int param0) { @@ -923,4 +924,367 @@ _0202FEDE: #endif +extern void FUN_020304F0(u32 param0); +extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); +extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); + +THUMB_FUNC void FUN_0202FEEC() { + if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { + return; + } + + int st0 = FUN_02031228(FUN_02033534()); + int r6 = FUN_0202D858(FUN_02033534())+1; + + if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ + + UNK_02105D59++; + + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(UNK_021C59F4.unk04->unk680); + } + + if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { + UNK_02105D59--; + } + } + + int i; + if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) != 0) { + UNK_021C59F4.unk04->unk638[i]++; + } else if (FUN_02031280() != 0 && i == 0) { + UNK_021C59F4.unk04->unk638[i]++; + } + } + + + FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); + + UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; + } + + + + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { + UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; + } + } + + + if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { + UNK_02105D59++; + } + } +} + + +extern u32 MOD04_021D79B4(void *param0, u32 param1); +extern void FUN_02030A00(void *param0); + + + +THUMB_FUNC void FUN_02030074() { + if (UNK_021C59F4.unk04->unk683 != 0) { + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + FUN_0202FEEC(); + if (UNK_02105D59 == 2) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } + } + + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0) { + if (UNK_021C59F4.unk04->unk630 != 0) { + if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + + if (UNK_02105D59 == 4) { + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(0); + } + + UNK_02105D59 = 2; + } + } else { + if (UNK_02105D59 == 4 ) { + if (FUN_0202FA28() == 1) { + if (FUN_0202FE2C(0) == 0) { + return; + } + } + } + + + UNK_02105D59 = 2; + } + + + + if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { + return; + } + + UNK_02105D59 = 4; + UNK_021C59F4.unk04->unk638[0]++; + UNK_021C59F4.unk04->unk638[1]++; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + if (UNK_02105D59 == 4) { + for (int r4 = 1; r4 < 8; r4++) + { + if (FUN_02030E7C(r4) != 0) { + if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { + return; + } + } else if (r4 == 0) { + if (FUN_02031280() != 0) { + if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + } + } + } + + + if (FUN_0202FA28() == 0) { + FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); + FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); + } + + + UNK_02105D59 = 0; + FUN_0202FEEC(); + } + } +} + + + +THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { + if (UNK_021C59F4.unk04->unk66F[0] != 0) { + UNK_021C59F4.unk04->unk634--; + UNK_021C59F4.unk04->unk66F[0] = 0; + return; + } + + FUN_0203026C(param0, param1, param2); +} + +extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); + + + +THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { + UNK_021C59F4.unk04->unk634--; + if (param1 == 0) { + return; + } + + if (param1[0] == 0xb) { + if (FUN_0202FA28() == 1) { + return; + } + param1++; + } else { + if (FUN_0202FA28() == 0) { + return; + } + } + + + if (UNK_021C59F4.unk04->unk682 != 0) { + if ((param1[0] & 1) != 0) { + return; + } + } + + UNK_021C59F4.unk04->unk682 = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + int st4 = FUN_0202D858(FUN_02033534())+1; + + int r4 = 0; + while (r4 < st4) { + u32 new; + if (param1[0] == 0xff) { + new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C = new; + + if (param1[0] == 0xff) { + param1 += r6; + } else if (param1[0] == 0xe){ + param1 += r6; + } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { + param1 += r6; + } else { + param1++; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); + + param1 += r6-1; + UNK_021C59F4.unk04->unk667[r4] = 0; + } + + + r4++; + } + + return; + } + + + UNK_021C59F4.unk04->unk65C = param1[1]; + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; + + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); +} + +extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); + + +THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { + if (UNK_021C59F4.unk04->unk66F[param0] != 0) { + + UNK_021C59F4.unk04->unk638[param0]--; + UNK_021C59F4.unk04->unk66F[param0] = 0; + return; + } + + FUN_020303F4(param0, param1, param2); +} + +extern void FUN_020307E4(u8 *param0, u32 param1); +extern int FUN_0202D498(void *param0); + + + +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { + UNK_021C59F4.unk04->unk638[param0]--; + if (param1 == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { + return; + } + + UNK_021C59F4.unk04->unk667[param0] = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if ((param1[0] & 2) == 0) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); + } + + UNK_021C59F4.unk04->unk65F[param0]++; + return; + } + + + FUN_020307E4(param1, param0); + + if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); + } +} + + +THUMB_FUNC void FUN_020304D4(u32 param0) { + if (param0 != 0) { + UNK_02105D58++; + return; + } + + ErrorHandling(); +} + +THUMB_FUNC void FUN_020304F0(u32 param0) { + if (param0 != 0) { + UNK_02105D59++; + return; + } + + ErrorHandling(); +} + +extern u16 FUN_0202CB8C(); + + +THUMB_FUNC void FUN_0203050C() { + if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { + return; + } + + int r4 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + if (FUN_0202CBD4() != 4) { + return; + } + + if (FUN_02030E7C(FUN_02031190()) == 0) { + FUN_02031190(); + return; + } + + if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { + return; + } + + + if (FUN_02031190() != 0) { + UNK_02105D58++; + + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { + UNK_02105D58--; + return; + } + + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + + if ((FUN_0202CB8C() & 0xFFFE) != 0) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + } +} \ No newline at end of file -- cgit v1.2.3 From 405d77ac981ce6ece1c529ab153543d118014661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 17:26:38 +0200 Subject: decomp finished --- arm9/arm9.lsf | 1 - arm9/asm/unk_0202F150.s | 1898 ------------------------------------ arm9/global.inc | 25 +- arm9/src/unk_0202F150.c | 2382 +++++++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_0202F150_c.c | 1290 ------------------------ 5 files changed, 2383 insertions(+), 3213 deletions(-) delete mode 100644 arm9/asm/unk_0202F150.s create mode 100644 arm9/src/unk_0202F150.c delete mode 100644 arm9/src/unk_0202F150_c.c diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 7aad650f..05a905ee 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -127,7 +127,6 @@ Static arm9 Object unk_0202D8D0.o Object unk_0202DB14.o Object unk_0202E29C.o - Object unk_0202F150_c.o Object unk_0202F150.o Object unk_02031480.o Object unk_02031734.o diff --git a/arm9/asm/unk_0202F150.s b/arm9/asm/unk_0202F150.s deleted file mode 100644 index 802807f5..00000000 --- a/arm9/asm/unk_0202F150.s +++ /dev/null @@ -1,1898 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - - .section .bss - - - .section .data - - - - .text - - thumb_func_start FUN_02030674 -FUN_02030674: ; 0x02030674 - push {r3-r7, lr} - ldr r7, _02030798 ; =UNK_021C59F4 - mov r6, #0x0 - ldr r5, [r7, #0x4] - ldr r2, _0203079C ; =0x0000062C - add r4, r6, #0x0 - ldrb r0, [r5, r2] - cmp r0, #0x0 - beq _02030690 - sub r1, r2, #0x4 - ldrh r1, [r5, r1] - mov r3, #0xf0 - tst r3, r1 - bne _02030692 -_02030690: - b _02030794 -_02030692: - cmp r0, #0x2 - bne _020306D0 - mov r0, #0x20 - tst r0, r1 - beq _020306A4 - mov r0, #0x10 - orr r0, r6 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306A4: - mov r0, #0x10 - tst r0, r1 - beq _020306B2 - mov r0, #0x20 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306B2: - mov r0, #0x40 - tst r0, r1 - beq _020306C0 - mov r0, #0x80 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306C0: - mov r0, #0x80 - tst r0, r1 - beq _0203077E - mov r0, #0x40 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - b _0203077E -_020306D0: - add r0, r2, #0x2 - ldrh r0, [r5, r0] - cmp r0, #0x0 - beq _020306F2 - add r4, r0, #0x0 - add r0, r2, #0x1 - ldrsb r0, [r5, r0] - sub r1, r0, #0x1 - add r0, r2, #0x1 - strb r1, [r5, r0] - ldr r1, [r7, #0x4] - ldrsb r0, [r1, r0] - cmp r0, #0x0 - bge _0203077E - add r0, r2, #0x2 - strh r6, [r1, r0] - b _0203077E -_020306F2: - add r0, r2, #0x0 - sub r0, #0x34 - add r6, r5, r0 - sub r2, #0x34 - ldr r0, [r6, #0x8] - ldr r1, [r6, #0xc] - ldr r2, [r5, r2] - ldr r3, [r6, #0x4] - bl _ll_mul - add r3, r0, #0x0 - add r2, r1, #0x0 - ldr r0, [r6, #0x10] - ldr r1, [r6, #0x14] - add r0, r0, r3 - adc r1, r2 - ldr r2, _020307A0 ; =0x000005F8 - str r0, [r5, r2] - mov r2, #0x0 - str r1, [r6, #0x4] - lsr r0, r1, #0x1e - lsl r1, r2, #0x2 - orr r1, r0 - cmp r1, #0x3 - bhi _02030746 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02030730: ; jump table (using 16-bit offset) - .short _02030738 - _02030730 - 2; case 0 - .short _0203073C - _02030730 - 2; case 1 - .short _02030740 - _02030730 - 2; case 2 - .short _02030744 - _02030730 - 2; case 3 -_02030738: - mov r4, #0x20 - b _02030746 -_0203073C: - mov r4, #0x10 - b _02030746 -_02030740: - mov r4, #0x40 - b _02030746 -_02030744: - mov r4, #0x80 -_02030746: - ldr r0, _02030798 ; =UNK_021C59F4 - ldr r5, [r0, #0x4] - ldr r0, _020307A0 ; =0x000005F8 - add r6, r5, r0 - ldr r0, [r6, #0x8] - ldr r1, [r6, #0xc] - ldr r2, [r6, #0x0] - ldr r3, [r6, #0x4] - bl _ll_mul - ldr r3, [r6, #0x10] - ldr r2, [r6, #0x14] - add r0, r3, r0 - adc r2, r1 - ldr r1, _020307A0 ; =0x000005F8 - mov r3, #0x0 - str r0, [r5, r1] - str r2, [r6, #0x4] - lsr r0, r2, #0x1c - lsl r2, r3, #0x4 - orr r2, r0 - add r0, r1, #0x0 - add r0, #0x35 - strb r2, [r5, r0] - ldr r0, _02030798 ; =UNK_021C59F4 - add r1, #0x36 - ldr r0, [r0, #0x4] - strh r4, [r0, r1] -_0203077E: - ldr r2, _02030798 ; =UNK_021C59F4 - ldr r1, _020307A4 ; =0x00000628 - ldr r5, [r2, #0x4] - mov r0, #0xf0 - ldrh r3, [r5, r1] - bic r3, r0 - strh r3, [r5, r1] - ldr r2, [r2, #0x4] - ldrh r0, [r2, r1] - add r0, r0, r4 - strh r0, [r2, r1] -_02030794: - pop {r3-r7, pc} - nop -_02030798: .word UNK_021C59F4 -_0203079C: .word 0x0000062C -_020307A0: .word 0x000005F8 -_020307A4: .word 0x00000628 - - thumb_func_start FUN_020307A8 -FUN_020307A8: ; 0x020307A8 - ldr r0, _020307B4 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _020307B8 ; =0x0000062C - strb r2, [r1, r0] - bx lr - .balign 4 -_020307B4: .word UNK_021C59F4 -_020307B8: .word 0x0000062C - - thumb_func_start FUN_020307BC -FUN_020307BC: ; 0x020307BC - ldr r0, _020307C8 ; =UNK_021C59F4 - mov r2, #0x2 - ldr r1, [r0, #0x4] - ldr r0, _020307CC ; =0x0000062C - strb r2, [r1, r0] - bx lr - .balign 4 -_020307C8: .word UNK_021C59F4 -_020307CC: .word 0x0000062C - - thumb_func_start FUN_020307D0 -FUN_020307D0: ; 0x020307D0 - ldr r0, _020307DC ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _020307E0 ; =0x0000062C - strb r2, [r1, r0] - bx lr - .balign 4 -_020307DC: .word UNK_021C59F4 -_020307E0: .word 0x0000062C - - thumb_func_start FUN_020307E4 -FUN_020307E4: ; 0x020307E4 - push {r4-r7} - ldr r4, _02030868 ; =UNK_021C59F4 - lsl r6, r1, #0x1 - ldr r2, [r4, #0x4] - mov r5, #0x0 - add r3, r2, r6 - mov r2, #0x61 - lsl r2, r2, #0x4 - strh r5, [r3, r2] - ldrb r5, [r0, #0x0] - mov r3, #0x10 - add r7, r5, #0x0 - and r7, r3 - cmp r7, #0x10 - bne _02030860 - mov r7, #0xc - and r5, r7 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - bne _0203081A - ldr r3, [r4, #0x4] - add r4, r3, r2 - ldrh r3, [r4, r6] - mov r2, #0x40 - orr r2, r3 - strh r2, [r4, r6] - b _0203084C -_0203081A: - cmp r5, #0x4 - bne _0203082C - ldr r3, [r4, #0x4] - add r4, r3, r2 - ldrh r3, [r4, r6] - mov r2, #0x80 - orr r2, r3 - strh r2, [r4, r6] - b _0203084C -_0203082C: - cmp r5, #0x8 - bne _0203083E - ldr r3, [r4, #0x4] - add r4, r3, r2 - ldrh r3, [r4, r6] - mov r2, #0x20 - orr r2, r3 - strh r2, [r4, r6] - b _0203084C -_0203083E: - cmp r5, #0xc - bne _0203084C - ldr r4, [r4, #0x4] - add r4, r4, r2 - ldrh r2, [r4, r6] - orr r2, r3 - strh r2, [r4, r6] -_0203084C: - ldrb r0, [r0, #0x0] - asr r2, r0, #0x5 - mov r0, #0x7 - and r2, r0 - ldr r0, _02030868 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - add r1, r0, r1 - mov r0, #0x62 - lsl r0, r0, #0x4 - strb r2, [r1, r0] -_02030860: - mov r0, #0x1 - pop {r4-r7} - bx lr - nop -_02030868: .word UNK_021C59F4 - - thumb_func_start FUN_0203086C -FUN_0203086C: ; 0x0203086C - bx lr - .balign 4 - - thumb_func_start FUN_02030870 -FUN_02030870: ; 0x02030870 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _0203091C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02030920 ; =0x0000062A - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _02030884 - mov r0, #0x0 - pop {r4, pc} -_02030884: - bl FUN_02030FE0 - cmp r0, #0x0 - bne _02030890 - mov r0, #0x0 - pop {r4, pc} -_02030890: - ldr r0, _0203091C ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - ldr r0, _02030924 ; =0x00000681 - ldrb r1, [r2, r0] - cmp r1, #0x0 - beq _020308A0 - sub r1, r1, #0x1 - strb r1, [r2, r0] -_020308A0: - ldr r1, _0203091C ; =UNK_021C59F4 - ldr r0, _02030928 ; =0x00000628 - ldr r2, [r1, #0x4] - mov r3, #0x40 - ldrh r2, [r2, r0] - tst r3, r2 - beq _020308C0 - ldrb r3, [r4, #0x0] - mov r2, #0x10 - add r0, #0x59 - orr r2, r3 - strb r2, [r4, #0x0] - ldr r1, [r1, #0x4] - mov r2, #0x8 - strb r2, [r1, r0] - b _02030906 -_020308C0: - mov r3, #0x80 - tst r3, r2 - beq _020308D8 - ldrb r3, [r4, #0x0] - mov r2, #0x14 - add r0, #0x59 - orr r2, r3 - strb r2, [r4, #0x0] - ldr r1, [r1, #0x4] - mov r2, #0x8 - strb r2, [r1, r0] - b _02030906 -_020308D8: - mov r3, #0x20 - tst r3, r2 - beq _020308F0 - ldrb r3, [r4, #0x0] - mov r2, #0x18 - add r0, #0x59 - orr r2, r3 - strb r2, [r4, #0x0] - ldr r1, [r1, #0x4] - mov r2, #0x8 - strb r2, [r1, r0] - b _02030906 -_020308F0: - mov r3, #0x10 - tst r2, r3 - beq _02030906 - ldrb r3, [r4, #0x0] - mov r2, #0x1c - add r0, #0x59 - orr r2, r3 - strb r2, [r4, #0x0] - ldr r1, [r1, #0x4] - mov r2, #0x8 - strb r2, [r1, r0] -_02030906: - ldr r0, _0203091C ; =UNK_021C59F4 - ldrb r2, [r4, #0x0] - ldr r1, [r0, #0x4] - ldr r0, _0203092C ; =0x0000062B - ldrb r0, [r1, r0] - lsl r0, r0, #0x5 - orr r0, r2 - strb r0, [r4, #0x0] - mov r0, #0x0 - pop {r4, pc} - nop -_0203091C: .word UNK_021C59F4 -_02030920: .word 0x0000062A -_02030924: .word 0x00000681 -_02030928: .word 0x00000628 -_0203092C: .word 0x0000062B - - thumb_func_start FUN_02030930 -FUN_02030930: ; 0x02030930 - push {r3-r5, lr} - sub sp, #0x8 - add r4, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - add r5, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - ldr r0, _020309F0 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _020309F4 ; =0x00000684 - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _02030960 - mov r0, #0x0 - b _02030962 -_02030960: - mov r0, #0x1 -_02030962: - strb r0, [r4, #0x0] - bl FUN_0202FA28 - cmp r0, #0x0 - bne _02030972 - add r0, r4, #0x0 - bl FUN_02030870 -_02030972: - ldr r1, _020309F0 ; =UNK_021C59F4 - ldr r0, _020309F4 ; =0x00000684 - ldr r2, [r1, #0x4] - mov r3, #0x0 - strb r3, [r2, r0] - ldr r1, [r1, #0x4] - ldr r0, _020309F8 ; =0x0000054C - add r0, r1, r0 - bl FUN_0202D4E4 - cmp r0, #0x0 - beq _0203099E - ldrb r1, [r4, #0x0] - mov r0, #0x2 - orr r0, r1 - strb r0, [r4, #0x0] - ldrb r0, [r4, #0x0] - cmp r0, #0x2 - bne _020309E8 - add sp, #0x8 - mov r0, #0x0 - pop {r3-r5, pc} -_0203099E: - sub r0, r5, #0x1 - str r0, [sp, #0x4] - add r0, r4, #0x1 - str r0, [sp, #0x0] - ldr r0, _020309F0 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _020309F8 ; =0x0000054C - add r0, r1, r0 - add r1, sp, #0x0 - bl FUN_0202D760 - cmp r0, #0x0 - bne _020309C4 - ldr r0, _020309F0 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _020309F4 ; =0x00000684 - strb r2, [r1, r0] -_020309C4: - bl FUN_0202FA28 - cmp r0, #0x1 - bne _020309E8 - ldr r2, _020309F0 ; =UNK_021C59F4 - ldr r1, _020309FC ; =0x0000065E - ldr r3, [r2, #0x4] - ldrb r0, [r3, r1] - add r0, r0, #0x1 - strb r0, [r3, r1] - ldr r2, [r2, #0x4] - ldrb r0, [r4, #0x0] - ldrb r1, [r2, r1] - lsl r2, r1, #0x4 - mov r1, #0xf0 - and r1, r2 - orr r0, r1 - strb r0, [r4, #0x0] -_020309E8: - mov r0, #0x1 - add sp, #0x8 - pop {r3-r5, pc} - nop -_020309F0: .word UNK_021C59F4 -_020309F4: .word 0x00000684 -_020309F8: .word 0x0000054C -_020309FC: .word 0x0000065E - - thumb_func_start FUN_02030A00 -FUN_02030A00: ; 0x02030A00 - push {r4, lr} - sub sp, #0x8 - add r4, r0, #0x0 - mov r0, #0xb - strb r0, [r4, #0x0] - ldr r0, _02030A6C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02030A70 ; =0x00000685 - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _02030A1A - mov r0, #0x0 - b _02030A1C -_02030A1A: - mov r0, #0x1 -_02030A1C: - strb r0, [r4, #0x1] - bl FUN_0202CB8C - asr r1, r0, #0x8 - strb r1, [r4, #0x2] - strb r0, [r4, #0x3] - mov r0, #0xbb - str r0, [sp, #0x4] - add r0, r4, #0x5 - str r0, [sp, #0x0] - ldr r0, _02030A6C ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030A74 ; =0x0000056C - add r0, r1, r0 - add r1, sp, #0x0 - bl FUN_0202D760 - cmp r0, #0x0 - beq _02030A5A - ldr r0, _02030A6C ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030A70 ; =0x00000685 - strb r2, [r1, r0] - ldr r1, [sp, #0x4] - mov r0, #0xbb - sub r0, r0, r1 - add sp, #0x8 - strb r0, [r4, #0x4] - pop {r4, pc} -_02030A5A: - ldr r0, _02030A6C ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _02030A70 ; =0x00000685 - strb r2, [r1, r0] - mov r0, #0xbb - strb r0, [r4, #0x4] - add sp, #0x8 - pop {r4, pc} - .balign 4 -_02030A6C: .word UNK_021C59F4 -_02030A70: .word 0x00000685 -_02030A74: .word 0x0000056C - - thumb_func_start FUN_02030A78 -FUN_02030A78: ; 0x02030A78 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - bne _02030A9C - bl FUN_02031280 - cmp r0, #0x0 - bne _02030A9C - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030A9C: - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - ldr r0, _02030AD4 ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030AD8 ; =0x0000054C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - cmp r0, #0x0 - beq _02030AC0 - add sp, #0x8 - mov r0, #0x1 - pop {r4-r6, pc} -_02030AC0: - bl FUN_02033534 - cmp r0, #0xa - bne _02030ACC - bl FUN_02031454 -_02030ACC: - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - nop -_02030AD4: .word UNK_021C59F4 -_02030AD8: .word 0x0000054C - - thumb_func_start FUN_02030ADC -FUN_02030ADC: ; 0x02030ADC - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - bne _02030B00 - bl FUN_02031280 - cmp r0, #0x0 - bne _02030B00 - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030B00: - mov r0, #0x1 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, _02030B34 ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030B38 ; =0x0000054C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - cmp r0, #0x0 - beq _02030B22 - add sp, #0x8 - mov r0, #0x1 - pop {r4-r6, pc} -_02030B22: - bl FUN_02033534 - cmp r0, #0xa - bne _02030B2E - bl FUN_02031454 -_02030B2E: - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - .balign 4 -_02030B34: .word UNK_021C59F4 -_02030B38: .word 0x0000054C - - thumb_func_start FUN_02030B3C -FUN_02030B3C: ; 0x02030B3C - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - beq _02030B58 - bl ErrorHandling - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030B58: - mov r0, #0x0 - bl FUN_02030E7C - cmp r0, #0x0 - bne _02030B70 - bl FUN_02031280 - cmp r0, #0x0 - bne _02030B70 - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030B70: - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030B86 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_02030A78 - add sp, #0x8 - pop {r4-r6, pc} -_02030B86: - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - ldr r0, _02030BBC ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030BC0 ; =0x0000056C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - cmp r0, #0x0 - beq _02030BAA - add sp, #0x8 - mov r0, #0x1 - pop {r4-r6, pc} -_02030BAA: - bl FUN_02033534 - cmp r0, #0xa - bne _02030BB6 - bl FUN_02031454 -_02030BB6: - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - .balign 4 -_02030BBC: .word UNK_021C59F4 -_02030BC0: .word 0x0000056C - - thumb_func_start FUN_02030BC4 -FUN_02030BC4: ; 0x02030BC4 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - beq _02030BE0 - bl FUN_02031454 - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030BE0: - mov r0, #0x0 - bl FUN_02030E7C - cmp r0, #0x0 - bne _02030BF8 - bl FUN_02031280 - cmp r0, #0x0 - bne _02030BF8 - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030BF8: - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030C0E - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_02030ADC - add sp, #0x8 - pop {r4-r6, pc} -_02030C0E: - mov r0, #0x1 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, _02030C44 ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030C48 ; =0x0000056C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - cmp r0, #0x0 - beq _02030C30 - add sp, #0x8 - mov r0, #0x1 - pop {r4-r6, pc} -_02030C30: - bl FUN_02033534 - cmp r0, #0xa - bne _02030C3C - bl FUN_02031454 -_02030C3C: - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - nop -_02030C44: .word UNK_021C59F4 -_02030C48: .word 0x0000056C - - thumb_func_start FUN_02030C4C -FUN_02030C4C: ; 0x02030C4C - ldr r3, _02030C54 ; =FUN_02030BC4 - mov r2, #0x0 - bx r3 - nop -_02030C54: .word FUN_02030BC4 - - thumb_func_start FUN_02030C58 -FUN_02030C58: ; 0x02030C58 - ldr r0, _02030C64 ; =UNK_021C59F4 - ldr r3, _02030C68 ; =FUN_0202D498 - ldr r1, [r0, #0x4] - ldr r0, _02030C6C ; =0x00000464 - add r0, r1, r0 - bx r3 - .balign 4 -_02030C64: .word UNK_021C59F4 -_02030C68: .word FUN_0202D498 -_02030C6C: .word 0x00000464 - - thumb_func_start FUN_02030C70 -FUN_02030C70: ; 0x02030C70 - push {r4, lr} - ldr r4, [sp, #0x8] - bl FUN_0202D934 - mov r0, #0xee - strb r0, [r4, #0xa] - ldr r0, _02030C88 ; =0x0000FFFF - strh r0, [r4, #0x8] - mov r0, #0x0 - str r0, [r4, #0x4] - str r0, [r4, #0x0] - pop {r4, pc} - .balign 4 -_02030C88: .word 0x0000FFFF - - thumb_func_start FUN_02030C8C -FUN_02030C8C: ; 0x02030C8C - push {r4-r7, lr} - sub sp, #0x14 - add r6, r0, #0x0 - str r1, [sp, #0x4] - str r2, [sp, #0x8] - ldr r5, [sp, #0x28] - bl FUN_0202D478 - cmp r0, #0x0 - beq _02030D94 -_02030CA0: - ldrb r7, [r5, #0xa] - cmp r7, #0xee - bne _02030CB2 - add r0, r6, #0x0 - bl FUN_0202D41C - add r7, r0, #0x0 - cmp r7, #0xee - beq _02030D8A -_02030CB2: - mov r0, #0x4 - ldrsh r0, [r6, r0] - strb r7, [r5, #0xa] - ldrh r4, [r5, #0x8] - str r0, [sp, #0x10] - ldr r0, _02030D98 ; =0x0000FFFF - cmp r4, r0 - bne _02030D06 - add r0, r7, #0x0 - bl FUN_0202D9A0 - add r4, r0, #0x0 - ldr r0, _02030D9C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02030DA0 ; =0x00000689 - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _02030D94 - ldr r0, _02030D98 ; =0x0000FFFF - cmp r4, r0 - bne _02030D04 - add r0, r6, #0x0 - bl FUN_0202D478 - cmp r0, #0x1 - bge _02030CEE - ldr r0, [sp, #0x10] - add sp, #0x14 - strh r0, [r6, #0x4] - pop {r4-r7, pc} -_02030CEE: - add r0, r6, #0x0 - bl FUN_0202D41C - lsl r4, r0, #0x8 - add r0, r6, #0x0 - bl FUN_0202D41C - add r4, r4, r0 - mov r0, #0x4 - ldrsh r0, [r6, r0] - str r0, [sp, #0x10] -_02030D04: - strh r4, [r5, #0x8] -_02030D06: - add r0, r7, #0x0 - bl FUN_0202DA04 - cmp r0, #0x0 - beq _02030D5E - ldr r0, [r5, #0x4] - cmp r0, #0x0 - bne _02030D22 - ldrh r2, [r5, #0x8] - ldr r1, [sp, #0x4] - add r0, r7, #0x0 - bl FUN_0202DA40 - str r0, [r5, #0x4] -_02030D22: - ldr r2, [r5, #0x0] - ldr r1, [sp, #0x8] - add r0, r6, #0x0 - sub r2, r4, r2 - bl FUN_0202D400 - ldr r2, [r5, #0x4] - str r0, [sp, #0xc] - cmp r2, #0x0 - beq _02030D42 - ldr r1, [r5, #0x0] - ldr r0, [sp, #0x8] - add r1, r2, r1 - ldr r2, [sp, #0xc] - bl MI_CpuCopy8 -_02030D42: - ldr r1, [r5, #0x0] - ldr r0, [sp, #0xc] - add r0, r1, r0 - str r0, [r5, #0x0] - cmp r0, r4 - blt _02030D8A - str r5, [sp, #0x0] - ldr r0, [sp, #0x4] - ldr r3, [r5, #0x4] - add r1, r7, #0x0 - add r2, r4, #0x0 - bl FUN_02030C70 - b _02030D8A -_02030D5E: - add r0, r6, #0x0 - bl FUN_0202D478 - cmp r0, r4 - blt _02030D82 - ldr r1, [sp, #0x8] - add r0, r6, #0x0 - add r2, r4, #0x0 - bl FUN_0202D400 - ldr r0, [sp, #0x4] - ldr r3, [sp, #0x8] - add r1, r7, #0x0 - add r2, r4, #0x0 - str r5, [sp, #0x0] - bl FUN_02030C70 - b _02030D8A -_02030D82: - ldr r0, [sp, #0x10] - add sp, #0x14 - strh r0, [r6, #0x4] - pop {r4-r7, pc} -_02030D8A: - add r0, r6, #0x0 - bl FUN_0202D478 - cmp r0, #0x0 - bne _02030CA0 -_02030D94: - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 -_02030D98: .word 0x0000FFFF -_02030D9C: .word UNK_021C59F4 -_02030DA0: .word 0x00000689 - - thumb_func_start FUN_02030DA4 -FUN_02030DA4: ; 0x02030DA4 - push {r3, lr} - ldr r0, _02030DF0 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - beq _02030DEE - ldr r0, _02030DF4 ; =0x0000068B - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _02030DEE - mov r0, #0x47 - lsl r0, r0, #0x4 - add r0, r1, r0 - bl FUN_0202D4BC - ldr r0, _02030DF0 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x47 - lsl r0, r0, #0x4 - add r0, r1, r0 - bl FUN_0202D478 - cmp r0, #0x0 - ble _02030DEE - ldr r0, _02030DF0 ; =UNK_021C59F4 - mov r2, #0x47 - ldr r3, [r0, #0x4] - ldr r0, _02030DF8 ; =0x000005EC - lsl r2, r2, #0x4 - add r0, r3, r0 - str r0, [sp, #0x0] - add r0, r3, r2 - sub r2, #0x10 - ldr r2, [r3, r2] - mov r1, #0x0 - mov r3, #0x1 - bl FUN_02030C8C -_02030DEE: - pop {r3, pc} - .balign 4 -_02030DF0: .word UNK_021C59F4 -_02030DF4: .word 0x0000068B -_02030DF8: .word 0x000005EC - - thumb_func_start FUN_02030DFC -FUN_02030DFC: ; 0x02030DFC - push {r3-r7, lr} - ldr r0, _02030E6C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - beq _02030E68 - ldr r0, _02030E70 ; =0x0000068B - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _02030E68 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r7, r0, #0x1 - mov r4, #0x0 - cmp r7, #0x0 - ble _02030E68 - ldr r6, _02030E6C ; =UNK_021C59F4 - add r5, r4, #0x0 -_02030E26: - ldr r1, [r6, #0x4] - ldr r0, _02030E74 ; =0x000004E8 - add r0, r1, r0 - add r0, r0, r5 - bl FUN_0202D4BC - ldr r1, [r6, #0x4] - ldr r0, _02030E74 ; =0x000004E8 - add r0, r1, r0 - add r0, r0, r5 - bl FUN_0202D478 - cmp r0, #0x0 - ble _02030E60 - ldr r3, [r6, #0x4] - ldr r0, _02030E78 ; =0x0000058C - mov r2, #0x46 - add r0, r3, r0 - add r0, r0, r5 - str r0, [sp, #0x0] - ldr r0, _02030E74 ; =0x000004E8 - lsl r2, r2, #0x4 - add r0, r3, r0 - ldr r2, [r3, r2] - add r0, r0, r5 - add r1, r4, #0x0 - mov r3, #0x0 - bl FUN_02030C8C -_02030E60: - add r4, r4, #0x1 - add r5, #0xc - cmp r4, r7 - blt _02030E26 -_02030E68: - pop {r3-r7, pc} - nop -_02030E6C: .word UNK_021C59F4 -_02030E70: .word 0x0000068B -_02030E74: .word 0x000004E8 -_02030E78: .word 0x0000058C - - thumb_func_start FUN_02030E7C -FUN_02030E7C: ; 0x02030E7C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _02030F14 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - bne _02030E8C - mov r0, #0x0 - pop {r4, pc} -_02030E8C: - bl FUN_02033534 - cmp r0, #0x13 - blt _02030EC0 - ldr r0, _02030F14 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02030F18 ; =0x00000687 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _02030EBC - bl MOD04_021D8018 - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - beq _02030EBC - cmp r4, #0x0 - bne _02030EB4 - mov r0, #0x1 - pop {r4, pc} -_02030EB4: - cmp r4, #0x1 - bne _02030EBC - mov r0, #0x1 - pop {r4, pc} -_02030EBC: - mov r0, #0x0 - pop {r4, pc} -_02030EC0: - bl FUN_02030F40 - cmp r0, #0x0 - bne _02030ECC - mov r0, #0x0 - pop {r4, pc} -_02030ECC: - bl FUN_0202CBD4 - cmp r0, #0x4 - beq _02030ED8 - mov r0, #0x0 - pop {r4, pc} -_02030ED8: - bl FUN_02031190 - cmp r4, r0 - bne _02030EE4 - mov r0, #0x1 - pop {r4, pc} -_02030EE4: - bl FUN_02031190 - cmp r0, #0x0 - bne _02030EFE - bl FUN_0202CB8C - mov r1, #0x1 - add r2, r1, #0x0 - lsl r2, r4 - tst r0, r2 - beq _02030F10 - add r0, r1, #0x0 - pop {r4, pc} -_02030EFE: - ldr r0, _02030F14 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02030F1C ; =0x0000065C - ldrh r2, [r1, r0] - mov r0, #0x1 - add r1, r0, #0x0 - lsl r1, r4 - tst r1, r2 - bne _02030F12 -_02030F10: - mov r0, #0x0 -_02030F12: - pop {r4, pc} - .balign 4 -_02030F14: .word UNK_021C59F4 -_02030F18: .word 0x00000687 -_02030F1C: .word 0x0000065C - - thumb_func_start FUN_02030F20 -FUN_02030F20: ; 0x02030F20 - push {r3-r5, lr} - mov r4, #0x0 - add r5, r4, #0x0 -_02030F26: - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _02030F34 - add r4, r4, #0x1 -_02030F34: - add r5, r5, #0x1 - cmp r5, #0x8 - blt _02030F26 - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02030F40 -FUN_02030F40: ; 0x02030F40 - push {r3, lr} - ldr r0, _02030F5C ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _02030F56 - bl FUN_02033534 - cmp r0, #0x13 - blt _02030F56 - mov r0, #0x1 - pop {r3, pc} -_02030F56: - bl FUN_0202EDF8 - pop {r3, pc} - .balign 4 -_02030F5C: .word UNK_021C59F4 - - thumb_func_start FUN_02030F60 -FUN_02030F60: ; 0x02030F60 - ldr r1, _02030F6C ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - ldr r1, _02030F70 ; =0x0000062B - strb r0, [r2, r1] - bx lr - nop -_02030F6C: .word UNK_021C59F4 -_02030F70: .word 0x0000062B - - thumb_func_start FUN_02030F74 -FUN_02030F74: ; 0x02030F74 - ldr r1, _02030F84 ; =UNK_021C59F4 - ldr r1, [r1, #0x4] - add r1, r1, r0 - mov r0, #0x62 - lsl r0, r0, #0x4 - ldrb r0, [r1, r0] - bx lr - nop -_02030F84: .word UNK_021C59F4 - - thumb_func_start FUN_02030F88 -FUN_02030F88: ; 0x02030F88 - ldr r1, _02030FA4 ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - cmp r2, #0x0 - bne _02030F94 - mov r0, #0x0 - bx lr -_02030F94: - mov r1, #0x61 - lsl r1, r1, #0x4 - add r3, r2, r1 - lsl r2, r0, #0x1 - ldrh r0, [r3, r2] - mov r1, #0x0 - strh r1, [r3, r2] - bx lr - .balign 4 -_02030FA4: .word UNK_021C59F4 - - thumb_func_start FUN_02030FA8 -FUN_02030FA8: ; 0x02030FA8 - ldr r0, _02030FC0 ; =UNK_021C59F4 - ldr r3, [r0, #0x4] - cmp r3, #0x0 - beq _02030FBC - ldr r1, _02030FC4 ; =0x00000628 - mov r0, #0x2 - ldrh r2, [r3, r1] - lsl r0, r0, #0xe - orr r0, r2 - strh r0, [r3, r1] -_02030FBC: - bx lr - nop -_02030FC0: .word UNK_021C59F4 -_02030FC4: .word 0x00000628 - - thumb_func_start FUN_02030FC8 -FUN_02030FC8: ; 0x02030FC8 - ldr r0, _02030FD8 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - cmp r2, #0x0 - beq _02030FD6 - ldr r0, _02030FDC ; =0x00000628 - mov r1, #0x0 - strh r1, [r2, r0] -_02030FD6: - bx lr - .balign 4 -_02030FD8: .word UNK_021C59F4 -_02030FDC: .word 0x00000628 - - thumb_func_start FUN_02030FE0 -FUN_02030FE0: ; 0x02030FE0 - ldr r0, _02030FF8 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - beq _02030FF4 - ldr r0, _02030FFC ; =0x00000628 - ldrh r1, [r1, r0] - mov r0, #0x2 - lsl r0, r0, #0xe - and r0, r1 - bx lr -_02030FF4: - mov r0, #0x1 - bx lr - .balign 4 -_02030FF8: .word UNK_021C59F4 -_02030FFC: .word 0x00000628 - - thumb_func_start FUN_02031000 -FUN_02031000: ; 0x02031000 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02031030 - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - ldr r0, _02031050 ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02031054 ; =0x0000054C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - add sp, #0x8 - pop {r4-r6, pc} -_02031030: - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - ldr r0, _02031050 ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02031058 ; =0x0000056C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - add sp, #0x8 - pop {r4-r6, pc} - nop -_02031050: .word UNK_021C59F4 -_02031054: .word 0x0000054C -_02031058: .word 0x0000056C - - thumb_func_start FUN_0203105C -FUN_0203105C: ; 0x0203105C - push {r3-r5, lr} - sub sp, #0x8 - add r5, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, _02031080 ; =UNK_021C59F4 - add r4, r1, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02031084 ; =0x0000054C - add r3, r2, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl FUN_0202D684 - add sp, #0x8 - pop {r3-r5, pc} - .balign 4 -_02031080: .word UNK_021C59F4 -_02031084: .word 0x0000054C - - thumb_func_start FUN_02031088 -FUN_02031088: ; 0x02031088 - push {r3, lr} - ldr r0, _02031100 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - cmp r2, #0x0 - beq _020310FC - ldr r1, _02031104 ; =0x0000067B - ldrb r0, [r2, r1] - cmp r0, #0x1 - beq _020310A0 - cmp r0, #0x3 - beq _020310D8 - pop {r3, pc} -_020310A0: - bl FUN_0202FA28 - cmp r0, #0x1 - bne _020310B8 - ldr r1, _02031100 ; =UNK_021C59F4 - mov r0, #0xb - ldr r2, [r1, #0x4] - ldr r1, _02031108 ; =0x0000067C - add r1, r2, r1 - bl FUN_020311D0 - b _020310C8 -_020310B8: - ldr r1, _02031100 ; =UNK_021C59F4 - mov r0, #0xb - ldr r2, [r1, #0x4] - ldr r1, _02031108 ; =0x0000067C - add r1, r2, r1 - mov r2, #0x1 - bl FUN_02030BC4 -_020310C8: - cmp r0, #0x0 - beq _020310FC - ldr r0, _02031100 ; =UNK_021C59F4 - mov r2, #0x2 - ldr r1, [r0, #0x4] - ldr r0, _02031104 ; =0x0000067B - strb r2, [r1, r0] - pop {r3, pc} -_020310D8: - add r1, r1, #0x1 - mov r0, #0xc - add r1, r2, r1 - bl FUN_020311D0 - cmp r0, #0x0 - beq _020310FC - ldr r0, _02031100 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02031108 ; =0x0000067C - ldrb r0, [r1, r0] - bl FUN_0202F9E0 - ldr r0, _02031100 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02031104 ; =0x0000067B - strb r2, [r1, r0] -_020310FC: - pop {r3, pc} - nop -_02031100: .word UNK_021C59F4 -_02031104: .word 0x0000067B -_02031108: .word 0x0000067C - - thumb_func_start FUN_0203110C -FUN_0203110C: ; 0x0203110C - push {r4, lr} - add r4, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - bne _0203112A - ldr r1, _0203112C ; =UNK_021C59F4 - ldr r0, _02031130 ; =0x0000067B - ldr r2, [r1, #0x4] - mov r3, #0x1 - strb r3, [r2, r0] - ldrb r2, [r4, #0x0] - ldr r1, [r1, #0x4] - add r0, r0, #0x1 - strb r2, [r1, r0] -_0203112A: - pop {r4, pc} - .balign 4 -_0203112C: .word UNK_021C59F4 -_02031130: .word 0x0000067B - - thumb_func_start FUN_02031134 -FUN_02031134: ; 0x02031134 - push {r4, lr} - add r4, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - beq _02031152 - ldr r1, _02031154 ; =UNK_021C59F4 - ldrb r3, [r4, #0x0] - ldr r2, [r1, #0x4] - ldr r0, _02031158 ; =0x0000067C - strb r3, [r2, r0] - ldr r1, [r1, #0x4] - mov r2, #0x3 - sub r0, r0, #0x1 - strb r2, [r1, r0] -_02031152: - pop {r4, pc} - .balign 4 -_02031154: .word UNK_021C59F4 -_02031158: .word 0x0000067C - - thumb_func_start FUN_0203115C -FUN_0203115C: ; 0x0203115C - push {r4, lr} - add r4, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - bne _02031184 - ldr r0, _02031188 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0203118C ; =0x0000067B - ldrb r0, [r1, r0] - cmp r0, #0x2 - bne _02031184 - ldrb r0, [r4, #0x0] - bl FUN_0202F9E0 - ldr r0, _02031188 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0203118C ; =0x0000067B - strb r2, [r1, r0] -_02031184: - pop {r4, pc} - nop -_02031188: .word UNK_021C59F4 -_0203118C: .word 0x0000067B - - thumb_func_start FUN_02031190 -FUN_02031190: ; 0x02031190 - push {r3, lr} - ldr r0, _020311CC ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _020311C6 - bl FUN_02033534 - cmp r0, #0x13 - blt _020311B4 - bl MOD04_021D8018 - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - beq _020311C6 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - pop {r3, pc} -_020311B4: - bl FUN_02031280 - cmp r0, #0x0 - beq _020311C0 - mov r0, #0x0 - pop {r3, pc} -_020311C0: - bl FUN_0202D19C - pop {r3, pc} -_020311C6: - mov r0, #0x0 - pop {r3, pc} - nop -_020311CC: .word UNK_021C59F4 - - thumb_func_start FUN_020311D0 -FUN_020311D0: ; 0x020311D0 - ldr r3, _020311D8 ; =FUN_02030ADC - mov r2, #0x0 - bx r3 - nop -_020311D8: .word FUN_02030ADC - - thumb_func_start FUN_020311DC -FUN_020311DC: ; 0x020311DC - ldr r3, _020311E4 ; =FUN_02030ADC - mov r1, #0x0 - add r2, r1, #0x0 - bx r3 - .balign 4 -_020311E4: .word FUN_02030ADC - - thumb_func_start FUN_020311E8 -FUN_020311E8: ; 0x020311E8 - ldr r3, _020311EC ; =FUN_0202EE24 - bx r3 - .balign 4 -_020311EC: .word FUN_0202EE24 - - thumb_func_start FUN_020311F0 -FUN_020311F0: ; 0x020311F0 - push {r3, lr} - bl FUN_02031280 - cmp r0, #0x0 - beq _020311FE - mov r0, #0x0 - pop {r3, pc} -_020311FE: - ldr r0, _02031220 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - beq _0203121A - ldr r0, _02031224 ; =0x00000689 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _0203121A - mov r0, #0x1 - add r1, r0, #0x0 - bl FUN_020334E8 - mov r0, #0x1 - pop {r3, pc} -_0203121A: - bl FUN_0202EE60 - pop {r3, pc} - .balign 4 -_02031220: .word UNK_021C59F4 -_02031224: .word 0x00000689 - - thumb_func_start FUN_02031228 -FUN_02031228: ; 0x02031228 - push {r3, lr} - bl FUN_0202D858 - cmp r0, #0x5 - blo _02031236 - mov r0, #0xc - pop {r3, pc} -_02031236: - bl FUN_0202FA28 - cmp r0, #0x0 - bne _02031242 - mov r0, #0xc - pop {r3, pc} -_02031242: - mov r0, #0x26 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02031248 -FUN_02031248: ; 0x02031248 - push {r3, lr} - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r0, r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02031258 -FUN_02031258: ; 0x02031258 - push {r3, lr} - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D884 - add r0, r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02031268 -FUN_02031268: ; 0x02031268 - ldr r1, _02031278 ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - cmp r2, #0x0 - beq _02031274 - ldr r1, _0203127C ; =0x00000686 - strb r0, [r2, r1] -_02031274: - bx lr - nop -_02031278: .word UNK_021C59F4 -_0203127C: .word 0x00000686 - - thumb_func_start FUN_02031280 -FUN_02031280: ; 0x02031280 - ldr r0, _02031294 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - beq _0203128E - ldr r0, _02031298 ; =0x00000686 - ldrb r0, [r1, r0] - bx lr -_0203128E: - mov r0, #0x0 - bx lr - nop -_02031294: .word UNK_021C59F4 -_02031298: .word 0x00000686 - - thumb_func_start FUN_0203129C -FUN_0203129C: ; 0x0203129C - push {r3, lr} - bl FUN_0202F03C - cmp r0, #0x0 - bne _020312B6 - bl FUN_02031190 - cmp r0, #0x0 - bne _020312B6 - mov r0, #0x2 - add r1, sp, #0x0 - bl FUN_02030C4C -_020312B6: - bl FUN_0202F05C - pop {r3, pc} - - thumb_func_start FUN_020312BC -FUN_020312BC: ; 0x020312BC - push {r3-r7, lr} - sub sp, #0x20 - add r4, r0, #0x0 - add r0, sp, #0x10 - add r1, sp, #0x4 - bl GF_RTC_CopyDateTime - ldr r0, _02031340 ; =gMain - ldr r6, [sp, #0x10] - mov r5, #0x0 - lsr r7, r6, #0x1c - lsl r5, r5, #0x4 - ldr r1, [sp, #0xc] - ldr r0, [r0, #0x2c] - lsl r6, r6, #0x4 - add r3, r1, r0 - ldr r0, [sp, #0x18] - orr r5, r7 - str r0, [sp, #0x0] - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x4] - add r6, r0, r6 - ldr r0, _02031344 ; =0x00000000 - ldr r2, [sp, #0x8] - adc r0, r5 - lsr r5, r6, #0x1b - lsl r0, r0, #0x5 - orr r0, r5 - ldr r5, [sp, #0x0] - lsl r6, r6, #0x5 - add r6, r5, r6 - ldr r5, _02031344 ; =0x00000000 - adc r5, r0 - lsr r0, r6, #0x1b - lsl r5, r5, #0x5 - orr r5, r0 - lsl r0, r6, #0x5 - add r6, r1, r0 - ldr r1, _02031344 ; =0x00000000 - adc r1, r5 - lsr r0, r6, #0x1a - lsl r1, r1, #0x6 - orr r1, r0 - lsl r0, r6, #0x6 - add r5, r2, r0 - ldr r2, _02031344 ; =0x00000000 - adc r2, r1 - lsr r0, r5, #0x1a - lsl r1, r2, #0x6 - orr r1, r0 - lsl r0, r5, #0x6 - add r2, r3, r0 - ldr r0, _02031344 ; =0x00000000 - str r2, [r4, #0x0] - adc r0, r1 - str r0, [r4, #0x4] - ldr r1, _02031348 ; =0x6C078965 - ldr r0, _0203134C ; =0x5D588B65 - str r1, [r4, #0x8] - str r0, [r4, #0xc] - ldr r0, _02031350 ; =0x00269EC3 - str r0, [r4, #0x10] - mov r0, #0x0 - str r0, [r4, #0x14] - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 -_02031340: .word gMain -_02031344: .word 0x00000000 -_02031348: .word 0x6C078965 -_0203134C: .word 0x5D588B65 -_02031350: .word 0x00269EC3 - - thumb_func_start FUN_02031354 -FUN_02031354: ; 0x02031354 - add r1, r0, #0x0 - ldr r0, _02031364 ; =UNK_021C59F4 - ldr r3, _02031368 ; =FUN_0202D830 - ldr r2, [r0, #0x4] - ldr r0, _0203136C ; =0x0000056C - add r0, r2, r0 - bx r3 - nop -_02031364: .word UNK_021C59F4 -_02031368: .word FUN_0202D830 -_0203136C: .word 0x0000056C - - thumb_func_start FUN_02031370 -FUN_02031370: ; 0x02031370 - ldr r0, _0203137C ; =UNK_021C59F4 - ldr r3, _02031380 ; =FUN_0202D4E4 - ldr r1, [r0, #0x4] - ldr r0, _02031384 ; =0x0000056C - add r0, r1, r0 - bx r3 - .balign 4 -_0203137C: .word UNK_021C59F4 -_02031380: .word FUN_0202D4E4 -_02031384: .word 0x0000056C - - thumb_func_start FUN_02031388 -FUN_02031388: ; 0x02031388 - ldr r0, _02031394 ; =UNK_021C59F4 - ldr r3, _02031398 ; =FUN_0202D4E4 - ldr r1, [r0, #0x4] - ldr r0, _0203139C ; =0x0000054C - add r0, r1, r0 - bx r3 - .balign 4 -_02031394: .word UNK_021C59F4 -_02031398: .word FUN_0202D4E4 -_0203139C: .word 0x0000054C - - thumb_func_start FUN_020313A0 -FUN_020313A0: ; 0x020313A0 - ldr r1, _020313AC ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - ldr r1, _020313B0 ; =0x00000687 - strb r0, [r2, r1] - bx lr - nop -_020313AC: .word UNK_021C59F4 -_020313B0: .word 0x00000687 - - thumb_func_start FUN_020313B4 -FUN_020313B4: ; 0x020313B4 - ldr r2, _020313C4 ; =UNK_021C59F4 - ldr r2, [r2, #0x4] - cmp r2, #0x0 - beq _020313C2 - add r2, r2, r1 - ldr r1, _020313C8 ; =0x00000677 - strb r0, [r2, r1] -_020313C2: - bx lr - .balign 4 -_020313C4: .word UNK_021C59F4 -_020313C8: .word 0x00000677 - - thumb_func_start FUN_020313CC -FUN_020313CC: ; 0x020313CC - ldr r1, _020313E4 ; =UNK_021C59F4 - ldr r1, [r1, #0x4] - cmp r1, #0x0 - beq _020313E0 - add r2, r1, r0 - ldr r1, _020313E8 ; =0x00000677 - ldrb r1, [r2, r1] - cmp r1, #0xff - beq _020313E0 - add r0, r1, #0x0 -_020313E0: - bx lr - nop -_020313E4: .word UNK_021C59F4 -_020313E8: .word 0x00000677 - - thumb_func_start FUN_020313EC -FUN_020313EC: ; 0x020313EC - push {r3, lr} - bl FUN_02033534 - cmp r0, #0x13 - bge _020313FA - mov r0, #0x0 - pop {r3, pc} -_020313FA: - bl MOD04_021D8624 - pop {r3, pc} - - thumb_func_start FUN_02031400 -FUN_02031400: ; 0x02031400 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02033534 - cmp r0, #0x13 - blt _02031430 - ldr r2, _02031434 ; =UNK_021C59F4 - mov r1, #0x63 - ldr r0, [r2, #0x4] - lsl r1, r1, #0x4 - str r4, [r0, r1] - cmp r4, #0x0 - beq _02031430 - ldr r3, [r2, #0x4] - mov r4, #0x0 - add r0, r1, #0x4 - str r4, [r3, r0] - add r0, r1, #0x0 - ldr r3, [r2, #0x4] - add r0, #0x8 - str r4, [r3, r0] - ldr r0, [r2, #0x4] - add r1, #0xc - str r4, [r0, r1] -_02031430: - pop {r4, pc} - nop -_02031434: .word UNK_021C59F4 - - thumb_func_start FUN_02031438 -FUN_02031438: ; 0x02031438 - ldr r0, _0203144C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02031450 ; =0x00000681 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _02031448 - mov r0, #0x1 - bx lr -_02031448: - mov r0, #0x0 - bx lr - .balign 4 -_0203144C: .word UNK_021C59F4 -_02031450: .word 0x00000681 - - thumb_func_start FUN_02031454 -FUN_02031454: ; 0x02031454 - ldr r0, _02031460 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _02031464 ; =0x00000689 - strb r2, [r1, r0] - bx lr - .balign 4 -_02031460: .word UNK_021C59F4 -_02031464: .word 0x00000689 - - thumb_func_start FUN_02031468 -FUN_02031468: ; 0x02031468 - ldr r0, _02031478 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - cmp r2, #0x0 - beq _02031476 - ldr r0, _0203147C ; =0x0000068A - mov r1, #0x1 - strb r1, [r2, r0] -_02031476: - bx lr - .balign 4 -_02031478: .word UNK_021C59F4 -_0203147C: .word 0x0000068A diff --git a/arm9/global.inc b/arm9/global.inc index 5700a247..c28b0d53 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8513,27 +8513,4 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon -.extern FUN_02025484 -.extern FUN_02025490 -.extern FUN_020254A0 -.extern FUN_020254B4 -.extern UNK_021C59F4 -.extern UNK_02105D58 -.extern FUN_0202F150 -.extern FUN_0202F2F0 -.extern FUN_0202F5A4 -.extern FUN_0202F820 -.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 -.extern FUN_0202FEEC -.extern FUN_02030074 -.extern FUN_020303F4 -.extern FUN_020304D4 -.extern FUN_020304F0 + diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c new file mode 100644 index 00000000..dd86b10d --- /dev/null +++ b/arm9/src/unk_0202F150.c @@ -0,0 +1,2382 @@ +#include "global.h" +#include "MI_memory.h" +#include "heap.h" +#include "main.h" +#include "RTC_api.h" + +struct +{ + u8 unk00; + struct UnkStruct1 *unk04; +} UNK_021C59F4; + + +vu8 UNK_02105D58 = 4; +vu8 UNK_02105D59 = 4; + +extern int FUN_02033534(); +extern u32 FUN_0202D858(u16 param0); +extern void FUN_02031480(u32 param0); +extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); +extern void FUN_0202F2F0(); +extern void FUN_020312BC(u32 param0); +extern void FUN_0202FB20(); + +extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); +extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); + +extern void FUN_0202D804(u32 *param0); +extern u32 FUN_02030E7C(u16 param0); + +struct UnkStruct1 +{ + u8 unk000[2][38]; + u8 unk04c[264]; + u8 unk154[2][192]; + u8 unk2D4[384]; + u32 unk454; + u32 unk458; + u32 unk45C; + u32 unk460; + u32 unk464; + u8 unk468[0x8]; + u32 unk470; + u8 unk474[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk47C[8]; + u32 unk4DC; + u8 unk4E0[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk4E8[8]; + u32 unk548; + u8 unk54C[32]; + u8 unk56C[32]; + struct + { + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; + u8 unk0b; + } unk58C[8]; + u32 unk5EC; + u32 unk5F0; + u16 unk5F4; + u8 unk5F6; + u8 unk5F7; + s64 unk5F8[3]; + u16 unk610[8]; + u8 unk620[0x8]; + u16 unk628; + u8 unk62A; + u8 unk62B; + u8 unk62C; + s8 unk62D; + u16 unk62E; + u32 unk630; + u32 unk634; + u32 unk638[8]; + u32 unk658; + u16 unk65C; + u8 unk65E; + u8 unk65F[8]; + u8 unk667[8]; + u8 unk66F[8]; + u8 unk677[4]; + u8 unk67B; + u8 unk67C; + u8 unk67D; + u8 unk67E; + u8 unk67F; + u8 unk680; + u8 unk681; + u8 unk682; + u8 unk683; + u8 unk684; + u8 unk685; + u8 unk686; + u8 unk687; + u8 unk688; + u8 unk689; + u8 unk68A; + u8 unk68B; +}; + +THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) +{ + u32 r4 = 0; + UNK_021C59F4.unk00 = 0; + if (param0 != 0) + { + u32 res = FUN_0202D858(FUN_02033534()) + 1; + + if (UNK_021C59F4.unk04 != 0) + { + return 1; + } + + FUN_02031480(0xf); + struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, sizeof(struct UnkStruct1)); + UNK_021C59F4.unk04 = ptr; + MI_CpuFill8(ptr, 0, 0x68C); + + UNK_021C59F4.unk04->unk658 = param1 + 0x40; + UNK_021C59F4.unk04->unk67D = 0; + UNK_021C59F4.unk04->unk67E = 0x1b; + + UNK_021C59F4.unk04->unk45C = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658 << 1); + + UNK_021C59F4.unk04->unk460 = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk458 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk454 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + if (FUN_02033534() == 0xa) + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x64, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x32 << 4, &UNK_021C59F4.unk04->unk4DC); + } + else + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x14, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x1b + 0xfd, &UNK_021C59F4.unk04->unk4DC); + } + } + else + { + + r4 = 1; + if (UNK_021C59F4.unk04 == 0) + { + ErrorHandling(); + } + } + + UNK_021C59F4.unk04->unk65C = 0; + + for (int i = 0; i < 4; i++) + { + UNK_021C59F4.unk04->unk677[i] = 0xff; + } + + if (r4 == 0) + { + FUN_0202F2F0(); + } + + FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); + + if (r4 == 0) + { + u32 res2 = FUN_0200CA60(FUN_0202FB20, 0, 0); + + UNK_021C59F4.unk04->unk548 = res2; + } + + UNK_021C59F4.unk04->unk687 = 0; + + return 1; +} + +THUMB_FUNC void FUN_0202F2F0() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + UNK_021C59F4.unk04->unk67F = 0; + UNK_021C59F4.unk04->unk680 = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + 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][0] = 0xff; + UNK_021C59F4.unk04->unk000[1][0] = 0xff; + + for (i = 1; i < 0x26; i++) + { + 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); + + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + + UNK_021C59F4.unk04->unk638[i] = 0; + } + + UNK_021C59F4.unk04->unk634 = 0; + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + UNK_02105D59 = 4; + UNK_02105D58 = 4; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F5A4() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + 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][0] = 0xff; + UNK_021C59F4.unk04->unk000[1][0] = 0xff; + + for (i = 1; i < 0x26; i++) + { + 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); + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + } + + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F820(u32 param0) +{ + UNK_021C59F4.unk04->unk65F[param0] = 0; + + UNK_021C59F4.unk04->unk667[param0] = 1; + + UNK_021C59F4.unk04->unk638[param0] = 0; + + UNK_021C59F4.unk04->unk66F[param0] = 1; + + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[param0], + UNK_021C59F4.unk04->unk454 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[param0], + UNK_021C59F4.unk04->unk458 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk58C[param0].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[param0].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[param0].unk04 = 0; + UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; +} + +extern u8 FUN_02031280(); + +THUMB_FUNC void FUN_0202F8D4() +{ + for (int i = 1; i < 8; i++) + { + if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) + { + FUN_0202F820(i); + } + } +} + +THUMB_FUNC void FUN_0202F910(u32 param0) +{ + FUN_0202F820(param0); +} + +extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); +extern void FUN_0202D330(void (*param0)(u32)); + +THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) +{ + u32 ret = 1; + if (FUN_02033534() < 0x13) + { + ret = FUN_0202E5F8(param0, param1, param3); + FUN_0202D330(FUN_0202F910); + } + + FUN_0202F150(param0, param2); + + return ret; +} + +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(u8 *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->unk000[0]); + UNK_02105D58 = 2; + } + } else { + if (UNK_02105D58 == 4) { + if (FUN_02030930(UNK_021C59F4.unk04->unk000[0]) == 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); + + + + + +THUMB_FUNC u32 FUN_0202FE2C(int param0); + +#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 + + +extern void FUN_020304F0(u32 param0); +extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); +extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); + + +THUMB_FUNC void FUN_0202FEEC() { + if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { + return; + } + + int st0 = FUN_02031228(FUN_02033534()); + int r6 = FUN_0202D858(FUN_02033534())+1; + + if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ + + UNK_02105D59++; + + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(UNK_021C59F4.unk04->unk680); + } + + if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { + UNK_02105D59--; + } + } + + int i; + if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) != 0) { + UNK_021C59F4.unk04->unk638[i]++; + } else if (FUN_02031280() != 0 && i == 0) { + UNK_021C59F4.unk04->unk638[i]++; + } + } + + + FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); + + UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; + } + + + + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { + UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; + } + } + + + if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { + UNK_02105D59++; + } + } +} + + +extern u32 MOD04_021D79B4(void *param0, u32 param1); +extern void FUN_02030A00(u8 *param0); + + + +THUMB_FUNC void FUN_02030074() { + if (UNK_021C59F4.unk04->unk683 != 0) { + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + FUN_0202FEEC(); + if (UNK_02105D59 == 2) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } + } + + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0) { + if (UNK_021C59F4.unk04->unk630 != 0) { + if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + + if (UNK_02105D59 == 4) { + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(0); + } + + UNK_02105D59 = 2; + } + } else { + if (UNK_02105D59 == 4 ) { + if (FUN_0202FA28() == 1) { + if (FUN_0202FE2C(0) == 0) { + return; + } + } + } + + + UNK_02105D59 = 2; + } + + + + if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { + return; + } + + UNK_02105D59 = 4; + UNK_021C59F4.unk04->unk638[0]++; + UNK_021C59F4.unk04->unk638[1]++; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + if (UNK_02105D59 == 4) { + for (int r4 = 1; r4 < 8; r4++) + { + if (FUN_02030E7C(r4) != 0) { + if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { + return; + } + } else if (r4 == 0) { + if (FUN_02031280() != 0) { + if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + } + } + } + + + if (FUN_0202FA28() == 0) { + FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); + FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); + } + + + UNK_02105D59 = 0; + FUN_0202FEEC(); + } + } +} + + + +THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { + if (UNK_021C59F4.unk04->unk66F[0] != 0) { + UNK_021C59F4.unk04->unk634--; + UNK_021C59F4.unk04->unk66F[0] = 0; + return; + } + + FUN_0203026C(param0, param1, param2); +} + +extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); + + + +THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { + UNK_021C59F4.unk04->unk634--; + if (param1 == 0) { + return; + } + + if (param1[0] == 0xb) { + if (FUN_0202FA28() == 1) { + return; + } + param1++; + } else { + if (FUN_0202FA28() == 0) { + return; + } + } + + + if (UNK_021C59F4.unk04->unk682 != 0) { + if ((param1[0] & 1) != 0) { + return; + } + } + + UNK_021C59F4.unk04->unk682 = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + int st4 = FUN_0202D858(FUN_02033534())+1; + + int r4 = 0; + while (r4 < st4) { + u32 new; + if (param1[0] == 0xff) { + new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C = new; + + if (param1[0] == 0xff) { + param1 += r6; + } else if (param1[0] == 0xe){ + param1 += r6; + } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { + param1 += r6; + } else { + param1++; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); + + param1 += r6-1; + UNK_021C59F4.unk04->unk667[r4] = 0; + } + + + r4++; + } + + return; + } + + + UNK_021C59F4.unk04->unk65C = param1[1]; + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; + + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); +} + +extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); + + +THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { + if (UNK_021C59F4.unk04->unk66F[param0] != 0) { + + UNK_021C59F4.unk04->unk638[param0]--; + UNK_021C59F4.unk04->unk66F[param0] = 0; + return; + } + + FUN_020303F4(param0, param1, param2); +} + +extern u32 FUN_020307E4(u8 *param0, u32 param1); +extern int FUN_0202D498(void *param0); + + + +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { + UNK_021C59F4.unk04->unk638[param0]--; + if (param1 == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { + return; + } + + UNK_021C59F4.unk04->unk667[param0] = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if ((param1[0] & 2) == 0) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); + } + + UNK_021C59F4.unk04->unk65F[param0]++; + return; + } + + + FUN_020307E4(param1, param0); + + if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); + } +} + + +THUMB_FUNC void FUN_020304D4(u32 param0) { + if (param0 != 0) { + UNK_02105D58++; + return; + } + + ErrorHandling(); +} + +THUMB_FUNC void FUN_020304F0(u32 param0) { + if (param0 != 0) { + UNK_02105D59++; + return; + } + + ErrorHandling(); +} + +extern u16 FUN_0202CB8C(); + + +THUMB_FUNC void FUN_0203050C() { + if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { + return; + } + + int r4 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + if (FUN_0202CBD4() != 4) { + return; + } + + if (FUN_02030E7C(FUN_02031190()) == 0) { + FUN_02031190(); + return; + } + + if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { + return; + } + + + if (FUN_02031190() != 0) { + UNK_02105D58++; + + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { + UNK_02105D58--; + return; + } + + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + + if ((FUN_0202CB8C() & 0xFFFE) != 0) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + } +} + +extern s64 _ll_mul(s64, s64); + +#ifdef NONMATCHING +THUMB_FUNC void FUN_02030674() { + u16 r4 = 0; + if (UNK_021C59F4.unk04->unk62C == 0 || (UNK_021C59F4.unk04->unk628 & 0xf0) == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk62C == 2) { + if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + r4 = r4 | 0x10; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + r4 = r4 | 0x20; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + r4 = r4 | 0x80; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + r4 = r4 | 0x40; + } + } else { + if (UNK_021C59F4.unk04->unk62E != 0) { + r4 = UNK_021C59F4.unk04->unk62E; + UNK_021C59F4.unk04->unk62D--; + + if (UNK_021C59F4.unk04->unk62D < 0) { + UNK_021C59F4.unk04->unk62E = 0; + } + + } else { + UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0] + UNK_021C59F4.unk04->unk5F8[2]; + + switch ((u32)(UNK_021C59F4.unk04->unk5F8[0] >> 0x3E) | (0 << 2)) { + case 0: + r4 = 0x20; + break; + case 1: + r4 = 0x10; + break; + case 2: + r4 = 0x40; + break; + case 3: + r4 = 0x80; + break; + } + + + UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[2] + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0]; + UNK_021C59F4.unk04->unk62D = UNK_021C59F4.unk04->unk5F8[0]>>0x3c | (0 << 4); + UNK_021C59F4.unk04->unk62E = r4; + } + } + + + UNK_021C59F4.unk04->unk628 &= ~0xf0; + UNK_021C59F4.unk04->unk628 += r4; +} +#else +THUMB_FUNC asm void FUN_02030674() { + push {r3-r7, lr} + ldr r7, =UNK_021C59F4 + mov r6, #0x0 + ldr r5, [r7, #0x4] + ldr r2, =0x0000062C + add r4, r6, #0x0 + ldrb r0, [r5, r2] + cmp r0, #0x0 + beq _02030690 + sub r1, r2, #0x4 + ldrh r1, [r5, r1] + mov r3, #0xf0 + tst r3, r1 + bne _02030692 +_02030690: + b _02030794 +_02030692: + cmp r0, #0x2 + bne _020306D0 + mov r0, #0x20 + tst r0, r1 + beq _020306A4 + mov r0, #0x10 + orr r0, r6 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306A4: + mov r0, #0x10 + tst r0, r1 + beq _020306B2 + mov r0, #0x20 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306B2: + mov r0, #0x40 + tst r0, r1 + beq _020306C0 + mov r0, #0x80 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306C0: + mov r0, #0x80 + tst r0, r1 + beq _0203077E + mov r0, #0x40 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203077E +_020306D0: + add r0, r2, #0x2 + ldrh r0, [r5, r0] + cmp r0, #0x0 + beq _020306F2 + add r4, r0, #0x0 + add r0, r2, #0x1 + ldrsb r0, [r5, r0] + sub r1, r0, #0x1 + add r0, r2, #0x1 + strb r1, [r5, r0] + ldr r1, [r7, #0x4] + ldrsb r0, [r1, r0] + cmp r0, #0x0 + bge _0203077E + add r0, r2, #0x2 + strh r6, [r1, r0] + b _0203077E +_020306F2: + add r0, r2, #0x0 + sub r0, #0x34 + add r6, r5, r0 + sub r2, #0x34 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r5, r2] + ldr r3, [r6, #0x4] + bl _ll_mul + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + ldr r2, =0x000005F8 + str r0, [r5, r2] + mov r2, #0x0 + str r1, [r6, #0x4] + lsr r0, r1, #0x1e + lsl r1, r2, #0x2 + orr r1, r0 + cmp r1, #0x3 + bhi _02030746 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02030730: // jump table (using 16-bit offset) + // huge hack to get the correct jump offset. Is there a way to write constants? + lsl r6, r0, #0x0 // case 0 + lsl r2, r1, #0x0 // case 1 + lsl r6, r1, #0x0 // case 2 + lsl r2, r2, #0x0 // case 3 + + // intended jump offset + // .short _02030738 - _02030730 - 2; case 0 + // .short _0203073C - _02030730 - 2; case 1 + // .short _02030740 - _02030730 - 2; case 2 + // .short _02030744 - _02030730 - 2; case 3 +_02030738: + mov r4, #0x20 + b _02030746 +_0203073C: + mov r4, #0x10 + b _02030746 +_02030740: + mov r4, #0x40 + b _02030746 +_02030744: + mov r4, #0x80 +_02030746: + ldr r0, =UNK_021C59F4 + ldr r5, [r0, #0x4] + ldr r0, =0x000005F8 + add r6, r5, r0 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r6, #0x0] + ldr r3, [r6, #0x4] + bl _ll_mul + ldr r3, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r3, r0 + adc r2, r1 + ldr r1, =0x000005F8 + mov r3, #0x0 + str r0, [r5, r1] + str r2, [r6, #0x4] + lsr r0, r2, #0x1c + lsl r2, r3, #0x4 + orr r2, r0 + add r0, r1, #0x0 + add r0, #0x35 + strb r2, [r5, r0] + ldr r0, =UNK_021C59F4 + add r1, #0x36 + ldr r0, [r0, #0x4] + strh r4, [r0, r1] +_0203077E: + ldr r2, =UNK_021C59F4 + ldr r1, =0x00000628 + ldr r5, [r2, #0x4] + mov r0, #0xf0 + ldrh r3, [r5, r1] + bic r3, r0 + strh r3, [r5, r1] + ldr r2, [r2, #0x4] + ldrh r0, [r2, r1] + add r0, r0, r4 + strh r0, [r2, r1] +_02030794: + pop {r3-r7, pc} +} +#endif + + +THUMB_FUNC void FUN_020307A8() { + UNK_021C59F4.unk04->unk62C = 1; +} + + +THUMB_FUNC void FUN_020307BC() { + UNK_021C59F4.unk04->unk62C = 2; +} + + +THUMB_FUNC void FUN_020307D0() { + UNK_021C59F4.unk04->unk62C = 0; +} + + + +THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) { + UNK_021C59F4.unk04->unk610[param1] = 0; + + u32 r7 = param0[0] & 0x10; + if (r7 == 0x10) { + + + u8 r5 = param0[0] & 0xc; + if (r5 == 0) { + UNK_021C59F4.unk04->unk610[param1] |= 0x40; + } else if (r5 == 4) { + UNK_021C59F4.unk04->unk610[param1] |= 0x80; + } else if (r5 == 8) { + UNK_021C59F4.unk04->unk610[param1] |= 0x20; + } else if (r5 == 0xc) { + UNK_021C59F4.unk04->unk610[param1] |= 0x10; + } + + UNK_021C59F4.unk04->unk620[param1] = (param0[0]>>5) & 0x7; + } + + + return 1; +} + +THUMB_FUNC void FUN_0203086C() { +} + +extern u32 FUN_02030FE0(); + + +THUMB_FUNC u32 FUN_02030870(u8 *param0) { + if (UNK_021C59F4.unk04->unk62A != 0){ + return 0; + } + + if (FUN_02030FE0() == 0) { + return 0; + } + + if (UNK_021C59F4.unk04->unk681 != 0) { + UNK_021C59F4.unk04->unk681--; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + param0[0] |= 0x10; + UNK_021C59F4.unk04->unk681 = 8; + } else if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + param0[0] |= 0x14; + UNK_021C59F4.unk04->unk681 = 8; + } else if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + param0[0] |= 0x18; + UNK_021C59F4.unk04->unk681 = 8; + } else if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + param0[0] |= 0x1c; + UNK_021C59F4.unk04->unk681 = 8; + } + + + param0[0] |= UNK_021C59F4.unk04->unk62B<<5; + + return 0; +} + + +extern u32 FUN_0202D4E4(u8 *param0); +extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); + + +THUMB_FUNC u32 FUN_02030930(u8 *param0) { + int r5 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + u8 r0; + if (UNK_021C59F4.unk04->unk684 == 0) { + param0[0] = 0; + } else { + param0[0] = 1; + } + + if (FUN_0202FA28() == 0) { + FUN_02030870(param0); + } + + UNK_021C59F4.unk04->unk684 = 0; + + if (FUN_0202D4E4(UNK_021C59F4.unk04->unk54C) != 0) { + param0[0] |= 2; + if (param0[0] == 2) { + return 0; + } + } else { + int st0[2]; + st0[1] = r5-1; + st0[0] = param0+1; + if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) { + UNK_021C59F4.unk04->unk684 = 1; + } + + + if (FUN_0202FA28() == 1) { + UNK_021C59F4.unk04->unk65E++; + + param0[0] |= UNK_021C59F4.unk04->unk65E<<4 & 0xf0; + } + } + + return 1; + +} + + +THUMB_FUNC void FUN_02030A00(u8 *param0) { + param0[0] = 0xb; + if (UNK_021C59F4.unk04->unk685 == 0) { + param0[1] = 0; + } else { + param0[1] = 1; + } + + u16 res = FUN_0202CB8C(); + param0[2] = res >>8; + param0[3] = res; + + + int st0[2]; + st0[1] = 0xbb; + st0[0] = param0+5; + if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) { + UNK_021C59F4.unk04->unk685 = 0; + param0[4] = 0xbb - st0[1]; + + return; + } + + UNK_021C59F4.unk04->unk685 = 1; + param0[4] = 0xbb; +} + +extern u32 FUN_0202D684(u8 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); +extern void FUN_02031454(); + +THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) { + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0) != 0) { + return 1; + } + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) { + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 1) != 0) { + return 1; + } + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) { + if (FUN_02031190() != 0) { + ErrorHandling(); + return 0; + } + + + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202FA28() == 1) { + return FUN_02030A78(param0, param1, param2); + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0) != 0) { + return 1; + } + + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + + +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) { + if (FUN_02031190() != 0) { + FUN_02031454(); + return 0; + } + + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202FA28() == 1) { + return FUN_02030ADC(param0, param1, param2); + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 1) != 0) { + return 1; + } + + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + + +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) { + return FUN_02030BC4(param0, param1, 0); +} + + +THUMB_FUNC int FUN_02030C58() { + return FUN_0202D498(&UNK_021C59F4.unk04->unk464); +} + +extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, u32 param3); + +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) { + FUN_0202D934(param0, param1, param2, param3); + + *(u8 *)(param4+0xa) = 0xee; + *(u16 *)(param4+0x8) = 0xffff; + *(u32 *)(param4+0x4) = 0; + *(u32 *)(param4) = 0; +} + + +extern int FUN_0202D478(s16 *param0); +extern u32 FUN_0202D41C(s16 *param0); +extern s16 FUN_0202D9A0(u32 param0); +extern u32 FUN_0202DA04(u32 param0); +extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); + +struct UnkStruct2 { + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; +}; + + + +THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) { + while (FUN_0202D478(param0) != 0) { + + + u32 r7 = param4->unk0a; + if (r7 == 0xee) { + r7 = FUN_0202D41C(param0); + if (r7 == 0xee) { + continue; + } + } + + int st10 = param0[2]; + param4->unk0a = r7; + int r4 = param4->unk08; + if (r4 == 0xffff) { + r4 = FUN_0202D9A0(r7); + + if (UNK_021C59F4.unk04->unk689 != 0) { + return; + } + + if (r4 == 0xffff) { + if (FUN_0202D478(param0) < 1) { + param0[2] = st10; + return; + } + + + r4 = FUN_0202D41C(param0) <<8; + r4 += FUN_0202D41C(param0); + + st10 = param0[2]; + } + + param4->unk08 = r4; + } + + + if (FUN_0202DA04(r7) != 0) { + if (param4->unk04 == 0) { + param4->unk04 = FUN_0202DA40(r7, param1, param4->unk08); + } + + int stc = FUN_0202D400(param0, param2, r4 - param4->unk00); + + if (param4->unk04 != 0) { + MI_CpuCopy8(param2, param4->unk04 + param4->unk00, stc); + } + + + if ((int)(param4->unk00 += stc) < (int)r4) { + continue; + } + + FUN_02030C70(param1, r7, r4, param4->unk04, param4); + } else { + if (FUN_0202D478(param0) >= r4) { + FUN_0202D400(param0, param2, r4); + FUN_02030C70(param1, r7, r4, param2, param4); + } else { + param0[2] = st10; + return; + } + } + + } +} + + + +THUMB_FUNC void FUN_02030DA4() { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk68B == 0) { + FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); + if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) { + UNK_021C59F4.unk04->unk470; + + + FUN_02030C8C(&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); + } + } + } +} + + +THUMB_FUNC void FUN_02030DFC() { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk68B == 0) { + int r7 = FUN_0202D858(FUN_02033534()) + 1; + int r4; + for (r4 = 0; r4 < r7; r4++) { + FUN_0202D4BC(&UNK_021C59F4.unk04->unk4E8[r4]); + if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) { + + + FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], r4, UNK_021C59F4.unk04->unk460, 0, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); + } + } + } + } +} + +extern u32 MOD04_021D8018(); +extern u32 FUN_02030F40(); + + + +THUMB_FUNC u32 FUN_02030E7C(u16 param0) { + if (UNK_021C59F4.unk04 == NULL) { + return 0; + } + + + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 != 0 && MOD04_021D8018() != 0xffffffff) { + if (param0 == 0) { + return 1; + } + + if (param0 == 1) { + return 1; + } + } + + return 0; + } + + if (FUN_02030F40() == 0) { + return 0; + } + + if (FUN_0202CBD4() != 4) { + return 0; + } + + if (FUN_02031190() == param0) { + return 1; + } + + if (FUN_02031190() == 0) { + u16 r0 = FUN_0202CB8C(); + + if ((r0 & (1<unk65C & (1<= 0x13) { + return 1; + } + + return FUN_0202EDF8(); +} + + + +THUMB_FUNC void FUN_02030F60(u8 param0) { + UNK_021C59F4.unk04->unk62B = param0; +} + + +THUMB_FUNC u8 FUN_02030F74(u32 param0) { + return UNK_021C59F4.unk04->unk620[param0]; +} + + +THUMB_FUNC u32 FUN_02030F88(u32 param0) { + if (UNK_021C59F4.unk04 == NULL) { + return 0; + } + + u32 ret = UNK_021C59F4.unk04->unk610[param0]; + UNK_021C59F4.unk04->unk610[param0] = 0; + + return ret; +} + +THUMB_FUNC void FUN_02030FA8() { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk628 |= 0x8000; + } +} + + +THUMB_FUNC void FUN_02030FC8() { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk628 = 0; + } +} + + +THUMB_FUNC u32 FUN_02030FE0() { + if (UNK_021C59F4.unk04 != NULL) { + return UNK_021C59F4.unk04->unk628 & 0x8000; + } + + return 1; +} + + + +THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) { + if (FUN_0202FA28() == 1) { + FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0); + return; + } + + + FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0); + +} + + +THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) { + FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); +} + + +extern u32 FUN_020311D0(u32 param0, u8 *param1); + + + +THUMB_FUNC void FUN_02031088() { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk67B != 1) { + if (UNK_021C59F4.unk04->unk67B != 3) { + return; + } + } else { + u32 res; + if (FUN_0202FA28() == 1) { + res = FUN_020311D0(0xb, &UNK_021C59F4.unk04->unk67C); + } else { + res = FUN_02030BC4(0xb, &UNK_021C59F4.unk04->unk67C, 1); + } + + if (res == 0) { + return; + } + UNK_021C59F4.unk04->unk67B = 2; + return; + + + } + + if (FUN_020311D0(0xc, &UNK_021C59F4.unk04->unk67C) != 0) { + FUN_0202F9E0(UNK_021C59F4.unk04->unk67C); + UNK_021C59F4.unk04->unk67B = 0; + } + + } +} + + +THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) { + if (FUN_02031190() == 0) { + UNK_021C59F4.unk04->unk67B = 1; + UNK_021C59F4.unk04->unk67C = param2[0]; + } +} + +THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) { + if (FUN_02031190() != 0) { + UNK_021C59F4.unk04->unk67C = param2[0]; + UNK_021C59F4.unk04->unk67B = 3; + } +} + + +THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) { + if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) { + FUN_0202F9E0(*param2); + UNK_021C59F4.unk04->unk67B = 0; + } +} + + +extern u16 FUN_0202D19C(); + +THUMB_FUNC u16 FUN_02031190() { + if (UNK_021C59F4.unk04 != NULL) { + if (FUN_02033534() >= 0x13) { + u32 res = MOD04_021D8018(); + if (res != 0xffffffff) { + return res; + } + } else { + if (FUN_02031280() != 0) { + return 0; + } + + return FUN_0202D19C(); + } + } + + return 0; +} + + +THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1) { + return FUN_02030ADC(param0, param1, 0); +} + + +THUMB_FUNC u32 FUN_020311DC(u32 param0) { + return FUN_02030ADC(param0, 0, 0); +} + + +THUMB_FUNC u32 FUN_020311E8() { + return FUN_0202EE24(); +} + + +extern void FUN_020334E8(u32 param0, u32 param1); +extern u32 FUN_0202EE60(); + +THUMB_FUNC u32 FUN_020311F0() { + if (FUN_02031280() != 0) { + return 0; + } + + if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) { + FUN_020334E8(1, 1); + return 1; + } + + return FUN_0202EE60(); +} + + + +THUMB_FUNC int FUN_02031228(u16 param0) { + if (FUN_0202D858(param0) >= 5) { + return 0xc; + } + + if (FUN_0202FA28() == 0) { + return 0xc; + } + + return 0x26; +} + +THUMB_FUNC u32 FUN_02031248(u32 param0) { + return FUN_0202D858(param0) +1; +} + +extern u32 FUN_0202D884(u16 param0); + + + +THUMB_FUNC u32 FUN_02031258(u32 param0) { + return FUN_0202D884(param0) +1; +} + +THUMB_FUNC void FUN_02031268(u8 param0) { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk686 = param0; + } +} + +THUMB_FUNC u8 FUN_02031280() { + if (UNK_021C59F4.unk04 != NULL) { + return UNK_021C59F4.unk04->unk686; + } + + return 0; +} + +extern void FUN_0202F05C(); + +THUMB_FUNC void FUN_0203129C() { + if (FUN_0202F03C() == 0 && FUN_02031190() == 0) { + u32 st0; + FUN_02030C4C(2, &st0); + } + + FUN_0202F05C(); +} + +extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); + + +#ifdef NONMATCHING +THUMB_FUNC void FUN_020312BC(u32 param0) { + RTCDate st10; + RTCTime st4; + GF_RTC_CopyDateTime(&st10, &st4); + + gMain.unk2C + st4.second; + u32 r6 = st10.year<<4 + st10.month; + u32 r5 = 0<<4 | st10.year>>0x1c; + st4.second; + + u32 st0 = st10.day; + st4.hour; + st4.minute; + + 0x00000000; + (0x00000000 + r5) <<5; + + +} +#else +THUMB_FUNC asm void FUN_020312BC(u32 param0) { + push {r3-r7, lr} + sub sp, #0x20 + add r4, r0, #0x0 + add r0, sp, #0x10 + add r1, sp, #0x4 + bl GF_RTC_CopyDateTime + ldr r0, =gMain + ldr r6, [sp, #0x10] + mov r5, #0x0 + lsr r7, r6, #0x1c + lsl r5, r5, #0x4 + ldr r1, [sp, #0xc] + ldr r0, [r0, #0x2c] + lsl r6, r6, #0x4 + add r3, r1, r0 + ldr r0, [sp, #0x18] + orr r5, r7 + str r0, [sp, #0x0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x4] + add r6, r0, r6 + ldr r0, =0x00000000 + ldr r2, [sp, #0x8] + adc r0, r5 + lsr r5, r6, #0x1b + lsl r0, r0, #0x5 + orr r0, r5 + ldr r5, [sp, #0x0] + lsl r6, r6, #0x5 + add r6, r5, r6 + ldr r5, =0x00000000 + adc r5, r0 + lsr r0, r6, #0x1b + lsl r5, r5, #0x5 + orr r5, r0 + lsl r0, r6, #0x5 + add r6, r1, r0 + ldr r1, =0x00000000 + adc r1, r5 + lsr r0, r6, #0x1a + lsl r1, r1, #0x6 + orr r1, r0 + lsl r0, r6, #0x6 + add r5, r2, r0 + ldr r2, =0x00000000 + adc r2, r1 + lsr r0, r5, #0x1a + lsl r1, r2, #0x6 + orr r1, r0 + lsl r0, r5, #0x6 + add r2, r3, r0 + ldr r0, =0x00000000 + str r2, [r4, #0x0] + adc r0, r1 + str r0, [r4, #0x4] + ldr r1, =0x6C078965 + ldr r0, =0x5D588B65 + str r1, [r4, #0x8] + str r0, [r4, #0xc] + ldr r0, =0x00269EC3 + str r0, [r4, #0x10] + mov r0, #0x0 + str r0, [r4, #0x14] + add sp, #0x20 + pop {r3-r7, pc} +} +#endif + +extern void FUN_0202D830(u8 *param0, u32 param1); + +THUMB_FUNC void FUN_02031354(u32 param0) { + FUN_0202D830(UNK_021C59F4.unk04->unk56C, param0); +} + + +THUMB_FUNC u32 FUN_02031370() { + return FUN_0202D4E4(UNK_021C59F4.unk04->unk56C); +} + +THUMB_FUNC u32 FUN_02031388() { + return FUN_0202D4E4(UNK_021C59F4.unk04->unk54C); +} + +THUMB_FUNC void FUN_020313A0(u8 param0) { + UNK_021C59F4.unk04->unk687 = param0; +} + +THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1) { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk677[param1] = param0; + } +} + +THUMB_FUNC u32 FUN_020313CC(u32 param0) { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk677[param0] != 0xff) { + return UNK_021C59F4.unk04->unk677[param0]; + } + } + + return param0; +} + +extern u32 MOD04_021D8624(); + +THUMB_FUNC u32 FUN_020313EC() { + if (FUN_02033534() < 0x13) { + return 0; + } + + return MOD04_021D8624(); +} + +THUMB_FUNC void FUN_02031400(u32 param0) { + if (FUN_02033534() >= 0x13) { + UNK_021C59F4.unk04->unk630 = param0; + if (param0 != 0) { + UNK_021C59F4.unk04->unk634 = 0; + UNK_021C59F4.unk04->unk638[0] = 0; + UNK_021C59F4.unk04->unk638[1] = 0; + } + } +} + + +THUMB_FUNC u32 FUN_02031438() { + if (UNK_021C59F4.unk04->unk681 != 0) { + return 1; + } + + return 0; +} + + +THUMB_FUNC void FUN_02031454() { + UNK_021C59F4.unk04->unk689 = 1; +} + +THUMB_FUNC void FUN_02031468() { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk68A = 1; + } +} \ No newline at end of file diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c deleted file mode 100644 index 162761a8..00000000 --- a/arm9/src/unk_0202F150_c.c +++ /dev/null @@ -1,1290 +0,0 @@ -#include "global.h" -#include "MI_memory.h" -#include "heap.h" -#include "main.h" - -struct -{ - u8 unk00; - struct UnkStruct1 *unk04; -} UNK_021C59F4; - -// struct UnkStruct2 { -// u8 unk00; -// u8 unk01; -// }; - -vu8 UNK_02105D58 = 4; -vu8 UNK_02105D59 = 4; - -extern int FUN_02033534(); -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(); -extern void FUN_020312BC(u32 param0); -extern void FUN_0202FB20(); - -extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); -extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); - -extern void FUN_0202D804(u32 *param0); -extern u32 FUN_02030E7C(u16 param0); - -struct UnkStruct1 -{ - u8 unk000[2][38]; - // u8 unk026[38]; - u8 unk04c[264]; - u8 unk154[2][192]; - // u8 unk214[192]; - u8 unk2D4[384]; - u32 unk454; - u32 unk458; - u32 unk45C; - u32 unk460; - u32 unk464; - u8 unk468[0x8]; - u32 unk470; - u8 unk474[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk47C[8]; - u32 unk4DC; - u8 unk4E0[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk4E8[8]; - u32 unk548; - u8 unk54C[32]; - u8 unk56C[32]; - struct - { - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; - u8 unk0b; - } unk58C[8]; - u32 unk5EC; - u32 unk5F0; - u16 unk5F4; - u8 unk5F6; - u8 unk5F7; - u32 unk5F8; - u8 unk5FC[0x14]; - u16 unk610[8]; - u8 unk620[0x8]; - u16 unk628; - u8 unk62A[0x2]; - u8 unk62C; - u8 unk62D; - u8 unk62E[0x2]; - u32 unk630; - u32 unk634; - u32 unk638[8]; - u32 unk658; - u16 unk65C; - u8 unk65E; - u8 unk65F[8]; - u8 unk667[8]; - u8 unk66F[8]; - u8 unk677[4]; - u8 unk67B[0x2]; - u8 unk67D; - u8 unk67E; - u8 unk67F; - u8 unk680; - u8 unk681; - u8 unk682; - u8 unk683; - u8 unk684; - u8 unk685; - u8 unk686; - u8 unk687; - u8 unk688; - u8 unk689; - u8 unk68A; - u8 unk68B; -}; - -THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) -{ - u32 r4 = 0; - UNK_021C59F4.unk00 = 0; - if (param0 != 0) - { - u32 res = FUN_0202D858(FUN_02033534()) + 1; - - if (UNK_021C59F4.unk04 != 0) - { - return 1; - } - - FUN_02031480(0xf); - struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, 0x68C); - UNK_021C59F4.unk04 = ptr; - MI_CpuFill8(ptr, 0, 0x68C); - - UNK_021C59F4.unk04->unk658 = param1 + 0x40; - UNK_021C59F4.unk04->unk67D = 0; - UNK_021C59F4.unk04->unk67E = 0x1b; - - UNK_021C59F4.unk04->unk45C = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658 << 1); - - UNK_021C59F4.unk04->unk460 = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658); - - UNK_021C59F4.unk04->unk458 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); - - UNK_021C59F4.unk04->unk454 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); - - if (FUN_02033534() == 0xa) - { - FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x64, &UNK_021C59F4.unk04->unk464); - FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x32 << 4, &UNK_021C59F4.unk04->unk4DC); - } - else - { - FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x14, &UNK_021C59F4.unk04->unk464); - FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x1b + 0xfd, &UNK_021C59F4.unk04->unk4DC); - } - } - else - { - - r4 = 1; - if (UNK_021C59F4.unk04 == 0) - { - ErrorHandling(); - } - } - - UNK_021C59F4.unk04->unk65C = 0; - - for (int i = 0; i < 4; i++) - { - UNK_021C59F4.unk04->unk677[i] = 0xff; - } - - if (r4 == 0) - { - FUN_0202F2F0(); - } - - FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); - - if (r4 == 0) - { - u32 res2 = FUN_0200CA60(FUN_0202FB20, 0, 0); - - UNK_021C59F4.unk04->unk548 = res2; - } - - UNK_021C59F4.unk04->unk687 = 0; - - return 1; -} - -THUMB_FUNC void FUN_0202F2F0() -{ - UNK_021C59F4.unk04->unk62C = 0; - UNK_021C59F4.unk04->unk62D = 0; - UNK_021C59F4.unk04->unk67F = 0; - UNK_021C59F4.unk04->unk680 = 0; - - s32 res = FUN_0202D858(FUN_02033534()) + 1; - - MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); - - int i; - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], - UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); - - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], - UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); - - for (i = 0; i < 0xc0; i++) - { - 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][0] = 0xff; - UNK_021C59F4.unk04->unk000[1][0] = 0xff; - - for (i = 1; i < 0x26; i++) - { - 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); - - FUN_0202D394( - &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); - - UNK_021C59F4.unk04->unk684 = 0; - UNK_021C59F4.unk04->unk685 = 0; - - for (i = 0; i < 8; i++) - { - UNK_021C59F4.unk04->unk65F[i] = 0; - UNK_021C59F4.unk04->unk667[i] = 1; - UNK_021C59F4.unk04->unk66F[i] = 1; - UNK_021C59F4.unk04->unk610[i] = 0; - - UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; - UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; - UNK_021C59F4.unk04->unk58C[i].unk04 = 0; - UNK_021C59F4.unk04->unk58C[i].unk00 = 0; - - UNK_021C59F4.unk04->unk638[i] = 0; - } - - UNK_021C59F4.unk04->unk634 = 0; - UNK_021C59F4.unk04->unk630 = 1; - UNK_021C59F4.unk04->unk5F6 = 0xee; - UNK_021C59F4.unk04->unk5F4 = 0xffff; - UNK_021C59F4.unk04->unk5F0 = 0; - UNK_021C59F4.unk04->unk5EC = 0; - UNK_021C59F4.unk04->unk682 = 1; - UNK_021C59F4.unk04->unk683 = 1; - - UNK_02105D59 = 4; - UNK_02105D58 = 4; - - FUN_0202D804(UNK_021C59F4.unk04->unk54C); - FUN_0202D804(UNK_021C59F4.unk04->unk56C); - - UNK_021C59F4.unk04->unk688 = 0; -} - -THUMB_FUNC void FUN_0202F5A4() -{ - UNK_021C59F4.unk04->unk62C = 0; - UNK_021C59F4.unk04->unk62D = 0; - - s32 res = FUN_0202D858(FUN_02033534()) + 1; - - MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); - - int i; - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], - UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); - - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], - UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); - - for (i = 0; i < 0xc0; i++) - { - 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][0] = 0xff; - UNK_021C59F4.unk04->unk000[1][0] = 0xff; - - for (i = 1; i < 0x26; i++) - { - 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); - FUN_0202D394( - &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); - - UNK_021C59F4.unk04->unk684 = 0; - UNK_021C59F4.unk04->unk685 = 0; - - for (i = 0; i < 8; i++) - { - UNK_021C59F4.unk04->unk65F[i] = 0; - UNK_021C59F4.unk04->unk667[i] = 1; - UNK_021C59F4.unk04->unk66F[i] = 1; - UNK_021C59F4.unk04->unk610[i] = 0; - - UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; - UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; - UNK_021C59F4.unk04->unk58C[i].unk04 = 0; - UNK_021C59F4.unk04->unk58C[i].unk00 = 0; - } - - UNK_021C59F4.unk04->unk630 = 1; - UNK_021C59F4.unk04->unk5F6 = 0xee; - UNK_021C59F4.unk04->unk5F4 = 0xffff; - UNK_021C59F4.unk04->unk5F0 = 0; - UNK_021C59F4.unk04->unk5EC = 0; - UNK_021C59F4.unk04->unk682 = 1; - UNK_021C59F4.unk04->unk683 = 1; - - FUN_0202D804(UNK_021C59F4.unk04->unk54C); - FUN_0202D804(UNK_021C59F4.unk04->unk56C); - - UNK_021C59F4.unk04->unk688 = 0; -} - -THUMB_FUNC void FUN_0202F820(u32 param0) -{ - UNK_021C59F4.unk04->unk65F[param0] = 0; - - UNK_021C59F4.unk04->unk667[param0] = 1; - - UNK_021C59F4.unk04->unk638[param0] = 0; - - UNK_021C59F4.unk04->unk66F[param0] = 1; - - FUN_0202D394(&UNK_021C59F4.unk04->unk47C[param0], - UNK_021C59F4.unk04->unk454 + param0 * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - - FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[param0], - UNK_021C59F4.unk04->unk458 + param0 * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - - UNK_021C59F4.unk04->unk58C[param0].unk0a = 0xee; - UNK_021C59F4.unk04->unk58C[param0].unk08 = 0xffff; - UNK_021C59F4.unk04->unk58C[param0].unk04 = 0; - UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; -} - -extern u32 FUN_02031280(); - -THUMB_FUNC void FUN_0202F8D4() -{ - for (int i = 1; i < 8; i++) - { - if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) - { - FUN_0202F820(i); - } - } -} - -THUMB_FUNC void FUN_0202F910(u32 param0) -{ - FUN_0202F820(param0); -} - -extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); -extern void FUN_0202D330(void (*param0)(u32)); - -THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) -{ - u32 ret = 1; - if (FUN_02033534() < 0x13) - { - ret = FUN_0202E5F8(param0, param1, param3); - FUN_0202D330(FUN_0202F910); - } - - FUN_0202F150(param0, param2); - - return ret; -} - -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); - - - - - -THUMB_FUNC u32 FUN_0202FE2C(int param0); - -#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 - - -extern void FUN_020304F0(u32 param0); -extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); -extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); - - -THUMB_FUNC void FUN_0202FEEC() { - if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { - return; - } - - int st0 = FUN_02031228(FUN_02033534()); - int r6 = FUN_0202D858(FUN_02033534())+1; - - if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ - - UNK_02105D59++; - - if (FUN_0202FA28() == 1) { - FUN_0202FE2C(UNK_021C59F4.unk04->unk680); - } - - if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { - - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { - UNK_02105D59--; - } - } - - int i; - if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) != 0) { - UNK_021C59F4.unk04->unk638[i]++; - } else if (FUN_02031280() != 0 && i == 0) { - UNK_021C59F4.unk04->unk638[i]++; - } - } - - - FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); - - UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; - } - - - - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { - UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; - } - } - - - if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { - UNK_02105D59++; - } - } -} - - -extern u32 MOD04_021D79B4(void *param0, u32 param1); -extern void FUN_02030A00(void *param0); - - - -THUMB_FUNC void FUN_02030074() { - if (UNK_021C59F4.unk04->unk683 != 0) { - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { - UNK_021C59F4.unk04->unk683 = 0; - return; - } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { - FUN_0202FEEC(); - if (UNK_02105D59 == 2) { - UNK_021C59F4.unk04->unk683 = 0; - return; - } - } - } - - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0) { - if (UNK_021C59F4.unk04->unk630 != 0) { - if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { - return; - } - - if (UNK_02105D59 == 4) { - if (FUN_0202FA28() == 1) { - FUN_0202FE2C(0); - } - - UNK_02105D59 = 2; - } - } else { - if (UNK_02105D59 == 4 ) { - if (FUN_0202FA28() == 1) { - if (FUN_0202FE2C(0) == 0) { - return; - } - } - } - - - UNK_02105D59 = 2; - } - - - - if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { - return; - } - - UNK_02105D59 = 4; - UNK_021C59F4.unk04->unk638[0]++; - UNK_021C59F4.unk04->unk638[1]++; - } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { - if (UNK_02105D59 == 4) { - for (int r4 = 1; r4 < 8; r4++) - { - if (FUN_02030E7C(r4) != 0) { - if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { - return; - } - } else if (r4 == 0) { - if (FUN_02031280() != 0) { - if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { - return; - } - } - } - } - - - if (FUN_0202FA28() == 0) { - FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); - FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); - } - - - UNK_02105D59 = 0; - FUN_0202FEEC(); - } - } -} - - - -THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { - if (UNK_021C59F4.unk04->unk66F[0] != 0) { - UNK_021C59F4.unk04->unk634--; - UNK_021C59F4.unk04->unk66F[0] = 0; - return; - } - - FUN_0203026C(param0, param1, param2); -} - -extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); - - - -THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { - UNK_021C59F4.unk04->unk634--; - if (param1 == 0) { - return; - } - - if (param1[0] == 0xb) { - if (FUN_0202FA28() == 1) { - return; - } - param1++; - } else { - if (FUN_0202FA28() == 0) { - return; - } - } - - - if (UNK_021C59F4.unk04->unk682 != 0) { - if ((param1[0] & 1) != 0) { - return; - } - } - - UNK_021C59F4.unk04->unk682 = 0; - if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - int st4 = FUN_0202D858(FUN_02033534())+1; - - int r4 = 0; - while (r4 < st4) { - u32 new; - if (param1[0] == 0xff) { - new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C = new; - - if (param1[0] == 0xff) { - param1 += r6; - } else if (param1[0] == 0xe){ - param1 += r6; - } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { - param1 += r6; - } else { - param1++; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); - - param1 += r6-1; - UNK_021C59F4.unk04->unk667[r4] = 0; - } - - - r4++; - } - - return; - } - - - UNK_021C59F4.unk04->unk65C = param1[1]; - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; - - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); -} - -extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); - - -THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { - if (UNK_021C59F4.unk04->unk66F[param0] != 0) { - - UNK_021C59F4.unk04->unk638[param0]--; - UNK_021C59F4.unk04->unk66F[param0] = 0; - return; - } - - FUN_020303F4(param0, param1, param2); -} - -extern void FUN_020307E4(u8 *param0, u32 param1); -extern int FUN_0202D498(void *param0); - - - -THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { - UNK_021C59F4.unk04->unk638[param0]--; - if (param1 == 0) { - return; - } - - if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { - return; - } - - UNK_021C59F4.unk04->unk667[param0] = 0; - if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); - - if ((param1[0] & 2) == 0) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); - } - - UNK_021C59F4.unk04->unk65F[param0]++; - return; - } - - - FUN_020307E4(param1, param0); - - if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); - } -} - - -THUMB_FUNC void FUN_020304D4(u32 param0) { - if (param0 != 0) { - UNK_02105D58++; - return; - } - - ErrorHandling(); -} - -THUMB_FUNC void FUN_020304F0(u32 param0) { - if (param0 != 0) { - UNK_02105D59++; - return; - } - - ErrorHandling(); -} - -extern u16 FUN_0202CB8C(); - - -THUMB_FUNC void FUN_0203050C() { - if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { - return; - } - - int r4 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); - - if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { - UNK_02105D58++; - FUN_020304D4(1); - - - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; - UNK_021C59F4.unk04->unk634++; - return; - } - - if (FUN_0202CBD4() != 4) { - return; - } - - if (FUN_02030E7C(FUN_02031190()) == 0) { - FUN_02031190(); - return; - } - - if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { - return; - } - - - if (FUN_02031190() != 0) { - UNK_02105D58++; - - - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { - UNK_02105D58--; - return; - } - - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; - UNK_021C59F4.unk04->unk634++; - return; - } - - - if ((FUN_0202CB8C() & 0xFFFE) != 0) { - UNK_02105D58++; - FUN_020304D4(1); - - - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; - UNK_021C59F4.unk04->unk634++; - } -} \ No newline at end of file -- cgit v1.2.3 From 8e3505c4162c51c3870fbe371fa46c061e6d8b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 17:47:33 +0200 Subject: headers --- arm9/src/unk_0202F150.c | 2011 ++++++++++++++++++++++++----------------------- include/unk_0202F150.h | 198 +++++ 2 files changed, 1232 insertions(+), 977 deletions(-) create mode 100644 include/unk_0202F150.h diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index dd86b10d..15a67f8d 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -1,16 +1,10 @@ -#include "global.h" -#include "MI_memory.h" -#include "heap.h" -#include "main.h" -#include "RTC_api.h" - +#include "unk_0202F150.h" struct { u8 unk00; struct UnkStruct1 *unk04; } UNK_021C59F4; - vu8 UNK_02105D58 = 4; vu8 UNK_02105D59 = 4; @@ -18,97 +12,9 @@ extern int FUN_02033534(); extern u32 FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); -extern void FUN_0202F2F0(); -extern void FUN_020312BC(u32 param0); -extern void FUN_0202FB20(); - extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); - extern void FUN_0202D804(u32 *param0); -extern u32 FUN_02030E7C(u16 param0); - -struct UnkStruct1 -{ - u8 unk000[2][38]; - u8 unk04c[264]; - u8 unk154[2][192]; - u8 unk2D4[384]; - u32 unk454; - u32 unk458; - u32 unk45C; - u32 unk460; - u32 unk464; - u8 unk468[0x8]; - u32 unk470; - u8 unk474[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk47C[8]; - u32 unk4DC; - u8 unk4E0[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk4E8[8]; - u32 unk548; - u8 unk54C[32]; - u8 unk56C[32]; - struct - { - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; - u8 unk0b; - } unk58C[8]; - u32 unk5EC; - u32 unk5F0; - u16 unk5F4; - u8 unk5F6; - u8 unk5F7; - s64 unk5F8[3]; - u16 unk610[8]; - u8 unk620[0x8]; - u16 unk628; - u8 unk62A; - u8 unk62B; - u8 unk62C; - s8 unk62D; - u16 unk62E; - u32 unk630; - u32 unk634; - u32 unk638[8]; - u32 unk658; - u16 unk65C; - u8 unk65E; - u8 unk65F[8]; - u8 unk667[8]; - u8 unk66F[8]; - u8 unk677[4]; - u8 unk67B; - u8 unk67C; - u8 unk67D; - u8 unk67E; - u8 unk67F; - u8 unk680; - u8 unk681; - u8 unk682; - u8 unk683; - u8 unk684; - u8 unk685; - u8 unk686; - u8 unk687; - u8 unk688; - u8 unk689; - u8 unk68A; - u8 unk68B; -}; THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) { @@ -382,8 +288,6 @@ THUMB_FUNC void FUN_0202F820(u32 param0) UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; } -extern u8 FUN_02031280(); - THUMB_FUNC void FUN_0202F8D4() { for (int i = 1; i < 8; i++) @@ -419,7 +323,8 @@ THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) extern u32 FUN_0202E66C(u32 param0, u32 param1); -THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { +THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) +{ u32 ret = 1; if (FUN_02033534() < 0x13) { @@ -430,81 +335,88 @@ THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { UNK_02105D58 = 4; - return ret; + return ret; } -extern u16 FUN_02031190(); -extern void FUN_02031088(); - - - - - -THUMB_FUNC void FUN_0202F984() { +THUMB_FUNC void FUN_0202F984() +{ u32 r4 = 0; - if (FUN_02031190() == 0 ) { - if (UNK_02105D59 != 4) { + if (FUN_02031190() == 0) + { + if (UNK_02105D59 != 4) + { return; } - } else { - if (UNK_02105D58 != 4) { + } + else + { + if (UNK_02105D58 != 4) + { return; } } - if (UNK_021C59F4.unk04->unk67D == 2) { + if (UNK_021C59F4.unk04->unk67D == 2) + { UNK_021C59F4.unk04->unk67D = 0; r4 = 1; } - if (UNK_021C59F4.unk04->unk67D == 3) { + if (UNK_021C59F4.unk04->unk67D == 3) + { UNK_021C59F4.unk04->unk67D = 1; r4 = 1; } - if (r4 != 0) { + if (r4 != 0) + { FUN_0202F5A4(); } FUN_02031088(); } - - - -THUMB_FUNC void FUN_0202F9E0(u32 param0) { +THUMB_FUNC void FUN_0202F9E0(u32 param0) +{ u8 r2 = UNK_021C59F4.unk04->unk67D; - if (r2 == 0 && param0 == 1) { + if (r2 == 0 && param0 == 1) + { UNK_021C59F4.unk04->unk67D = 3; - } else if (r2 == 1 && param0 == 0) { + } + else if (r2 == 1 && param0 == 0) + { UNK_021C59F4.unk04->unk67D = 2; } } - -THUMB_FUNC void FUN_0202FA10() { +THUMB_FUNC void FUN_0202FA10() +{ FUN_0202F9E0(1); } - -THUMB_FUNC void FUN_0202FA1C() { +THUMB_FUNC void FUN_0202FA1C() +{ FUN_0202F9E0(0); } - - -THUMB_FUNC u8 FUN_0202FA28() { +THUMB_FUNC u8 FUN_0202FA28() +{ u8 ret = UNK_021C59F4.unk04->unk67D; - if (ret == 2){ + if (ret == 2) + { return 1; - } else if (ret == 3) { + } + else if (ret == 3) + { return 0; } return ret; } -THUMB_FUNC u32 FUN_0202FA48() { - if (FUN_0202FA28() == 1) { +THUMB_FUNC u32 FUN_0202FA48() +{ + if (FUN_0202FA28() == 1) + { return 1; } @@ -518,20 +430,27 @@ extern void FUN_0202DBA4(); extern void FUN_0200CAB4(u32 param0); extern void FUN_0202D824(u32 *param0); -THUMB_FUNC void FUN_0202FA5C() { +THUMB_FUNC void FUN_0202FA5C() +{ u32 r4 = 0; - if (UNK_021C59F4.unk04 != 0) { - if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04 != 0) + { + if (FUN_02033534() >= 0x13) + { MOD04_021D83C0(); r4 = 1; - } else { - if (FUN_0202E784() != 0) { + } + else + { + if (FUN_0202E784() != 0) + { r4 = 1; } } } - if (r4 != 0) { + if (r4 != 0) + { FUN_020314D0(); FUN_0202DBA4(); UNK_021C59F4.unk00 = 0; @@ -551,22 +470,21 @@ THUMB_FUNC void FUN_0202FA5C() { extern u32 FUN_0202E9E8(u32 param0); -THUMB_FUNC u32 FUN_0202FB18(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) { +THUMB_FUNC void FUN_0202FB20() +{ + if (UNK_021C59F4.unk00 != 0) + { FUN_0203050C(); - if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0) + { FUN_0202FEEC(); } @@ -574,97 +492,105 @@ THUMB_FUNC void FUN_0202FB20() { } } -THUMB_FUNC void FUN_0202FB58() { - if (FUN_0202F03C() != 0) { - if (FUN_02031190() == 0 ) { - if (FUN_0202EE24() == 0) { +THUMB_FUNC void FUN_0202FB58() +{ + if (FUN_0202F03C() != 0) + { + if (FUN_02031190() == 0) + { + if (FUN_0202EE24() == 0) + { FUN_0202FA5C(); } - } else { + } + 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() { +THUMB_FUNC u32 FUN_0202FB80() +{ FUN_02031CDC(); - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68A == 0) { + 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) { + UNK_021C59F4.unk04->unk628 &= 2 << 0xe; + if (FUN_0202FA28() == 0) + { FUN_02030DA4(); } - if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0) + { FUN_02030074(); } - if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) { + 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) { + if (FUN_02031190() == 0) + { FUN_0202F8D4(); } FUN_0202FB58(); - } else { + } + else + { FUN_0202ED70(0); } - FUN_020335F4(0); FUN_020315A4(); return 1; } - -THUMB_FUNC void FUN_0202FC60() { +THUMB_FUNC void FUN_0202FC60() +{ u8 r4 = UNK_021C59F4.unk00; UNK_021C59F4.unk00 = 0; - if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04 != NULL) + { FUN_0202F2F0(); } UNK_021C59F4.unk00 = r4; } - -THUMB_FUNC void FUN_0202FC80() { +THUMB_FUNC void FUN_0202FC80() +{ u8 r4 = UNK_021C59F4.unk00; UNK_021C59F4.unk00 = 0; - if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk67D = 1; FUN_0202F2F0(); } @@ -672,16 +598,16 @@ THUMB_FUNC void FUN_0202FC80() { UNK_021C59F4.unk00 = r4; } - extern void FUN_0202E538(); - -THUMB_FUNC void FUN_0202FCA8() { +THUMB_FUNC void FUN_0202FCA8() +{ u8 r4 = UNK_021C59F4.unk00; UNK_021C59F4.unk00 = 0; - if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04 != NULL) + { FUN_0202F2F0(); FUN_0202E538(); } @@ -689,17 +615,17 @@ THUMB_FUNC void FUN_0202FCA8() { UNK_021C59F4.unk00 = r4; } - extern u32 MOD04_021D78FC(void *param0, u32 param1); extern u32 FUN_0202CBD4(); -extern u32 FUN_02030930(u8 *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) { +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; } @@ -707,15 +633,18 @@ THUMB_FUNC void FUN_0202FCCC() { return; } - if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { - if (FUN_02031280() == 0) { + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) + { + if (FUN_02031280() == 0) + { return; } } UNK_02105D58 = 0; FUN_0203050C(); - if (UNK_02105D58 == 0) { + if (UNK_02105D58 == 0) + { return; } @@ -723,24 +652,32 @@ THUMB_FUNC void FUN_0202FCCC() { return; } - - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 == 0) { + if (FUN_02033534() >= 0x13) + { + if (UNK_021C59F4.unk04->unk687 == 0) + { return; } - if (UNK_021C59F4.unk04->unk630 != 0){ - if ((int)UNK_021C59F4.unk04->unk634 > 3) { + if (UNK_021C59F4.unk04->unk630 != 0) + { + if ((int)UNK_021C59F4.unk04->unk634 > 3) + { return; } - if (UNK_02105D58 == 4) { + if (UNK_02105D58 == 4) + { FUN_02030930(UNK_021C59F4.unk04->unk000[0]); UNK_02105D58 = 2; } - } else { - if (UNK_02105D58 == 4) { - if (FUN_02030930(UNK_021C59F4.unk04->unk000[0]) == 0) { + } + else + { + if (UNK_02105D58 == 4) + { + if (FUN_02030930(UNK_021C59F4.unk04->unk000[0]) == 0) + { return; } @@ -748,8 +685,8 @@ THUMB_FUNC void FUN_0202FCCC() { } } - - if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) + { return; } @@ -758,279 +695,291 @@ THUMB_FUNC void FUN_0202FCCC() { return; } - - if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { - if (FUN_02031280() == 0) { - return; + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) + { + if (FUN_02031280() == 0) + { + return; } } - if (UNK_02105D58 != 4) { + if (UNK_02105D58 != 4) + { return; } - - - //nonmatching - if ((int)UNK_021C59F4.unk04->unk634 > 3) { + // 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]); + 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); - - - - -THUMB_FUNC u32 FUN_0202FE2C(int param0); - #ifdef NONMATCHING -THUMB_FUNC u32 FUN_0202FE2C(int param0) { +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++) { + 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; + 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); + FUN_0202D400( + &UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7 * stc], stc); - if (UNK_021C59F4.unk04->unk154[param0][r7*stc] == 0xe) { + if (UNK_021C59F4.unk04->unk154[param0][r7 * stc] == 0xe) + { st4++; } } - if (st4 == st8) { + 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} +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 - -extern void FUN_020304F0(u32 param0); extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); -extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); - -THUMB_FUNC void FUN_0202FEEC() { - if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { +THUMB_FUNC void FUN_0202FEEC() +{ + if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) + { return; } int st0 = FUN_02031228(FUN_02033534()); - int r6 = FUN_0202D858(FUN_02033534())+1; + int r6 = FUN_0202D858(FUN_02033534()) + 1; - if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ + if (UNK_02105D59 == 2 || UNK_02105D59 == 0) + { UNK_02105D59++; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { FUN_0202FE2C(UNK_021C59F4.unk04->unk680); } - if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { + if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) + { - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], + 0xc0, + 0xe, + FUN_020304F0) == 0) + { UNK_02105D59--; } } int i; - if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) != 0) { + if (UNK_02105D59 == 1 || UNK_02105D59 == 3) + { + for (i = 0; i < r6; i++) + { + if (FUN_02030E7C(i) != 0) + { UNK_021C59F4.unk04->unk638[i]++; - } else if (FUN_02031280() != 0 && i == 0) { + } + else if (FUN_02031280() != 0 && i == 0) + { UNK_021C59F4.unk04->unk638[i]++; } } - FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; } - - - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { - UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; + for (i = 0; i < r6; i++) + { + if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) + { + UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i * st0] = 0xff; } } - - if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { + if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) + { UNK_02105D59++; } } } - extern u32 MOD04_021D79B4(void *param0, u32 param1); -extern void FUN_02030A00(u8 *param0); - - -THUMB_FUNC void FUN_02030074() { - if (UNK_021C59F4.unk04->unk683 != 0) { - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { +THUMB_FUNC void FUN_02030074() +{ + if (UNK_021C59F4.unk04->unk683 != 0) + { + if (FUN_02033534() >= 0x13) + { + if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) + { UNK_021C59F4.unk04->unk683 = 0; return; } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + } + else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) + { FUN_0202FEEC(); - if (UNK_02105D59 == 2) { + if (UNK_02105D59 == 2) + { UNK_021C59F4.unk04->unk683 = 0; return; } } } - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0) { - if (UNK_021C59F4.unk04->unk630 != 0) { - if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { + if (FUN_02033534() >= 0x13) + { + if (FUN_02030E7C(0) != 0) + { + if (UNK_021C59F4.unk04->unk630 != 0) + { + if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || + (int)UNK_021C59F4.unk04->unk638[0] > 3) + { return; } - if (UNK_02105D59 == 4) { - if (FUN_0202FA28() == 1) { + if (UNK_02105D59 == 4) + { + if (FUN_0202FA28() == 1) + { FUN_0202FE2C(0); } UNK_02105D59 = 2; } - } else { - if (UNK_02105D59 == 4 ) { - if (FUN_0202FA28() == 1) { - if (FUN_0202FE2C(0) == 0) { + } + else + { + if (UNK_02105D59 == 4) + { + if (FUN_0202FA28() == 1) + { + if (FUN_0202FE2C(0) == 0) + { return; } } } - UNK_02105D59 = 2; } - - - if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { + if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) + { return; } @@ -1038,40 +987,48 @@ THUMB_FUNC void FUN_02030074() { UNK_021C59F4.unk04->unk638[0]++; UNK_021C59F4.unk04->unk638[1]++; } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { - if (UNK_02105D59 == 4) { + } + else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) + { + if (UNK_02105D59 == 4) + { for (int r4 = 1; r4 < 8; r4++) { - if (FUN_02030E7C(r4) != 0) { - if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { + if (FUN_02030E7C(r4) != 0) + { + if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) + { return; } - } else if (r4 == 0) { - if (FUN_02031280() != 0) { - if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { + } + else if (r4 == 0) + { + if (FUN_02031280() != 0) + { + if ((int)UNK_021C59F4.unk04->unk638[0] > 3) + { return; } } } } - - if (FUN_0202FA28() == 0) { + if (FUN_0202FA28() == 0) + { FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); - FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); + FUN_02030A00(UNK_021C59F4.unk04->unk154[1 - UNK_021C59F4.unk04->unk680]); } - UNK_02105D59 = 0; FUN_0202FEEC(); } } } - - -THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { - if (UNK_021C59F4.unk04->unk66F[0] != 0) { +THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) +{ + if (UNK_021C59F4.unk04->unk66F[0] != 0) + { UNK_021C59F4.unk04->unk634--; UNK_021C59F4.unk04->unk66F[0] = 0; return; @@ -1082,81 +1039,97 @@ THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); - - -THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { +THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) +{ UNK_021C59F4.unk04->unk634--; - if (param1 == 0) { + if (param1 == 0) + { return; } - if (param1[0] == 0xb) { - if (FUN_0202FA28() == 1) { + if (param1[0] == 0xb) + { + if (FUN_0202FA28() == 1) + { return; } param1++; - } else { - if (FUN_0202FA28() == 0) { + } + else + { + if (FUN_0202FA28() == 0) + { return; } } - - if (UNK_021C59F4.unk04->unk682 != 0) { - if ((param1[0] & 1) != 0) { + if (UNK_021C59F4.unk04->unk682 != 0) + { + if ((param1[0] & 1) != 0) + { return; } } UNK_021C59F4.unk04->unk682 = 0; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { int r6 = FUN_02031228(FUN_02033534()); - int st4 = FUN_0202D858(FUN_02033534())+1; + int st4 = FUN_0202D858(FUN_02033534()) + 1; int r4 = 0; - while (r4 < st4) { + while (r4 < st4) + { u32 new; - if (param1[0] == 0xff) { - new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C & ~(1 << r4); + } + else + { + new = UNK_021C59F4.unk04->unk65C | (1 << r4); } UNK_021C59F4.unk04->unk65C = new; - if (param1[0] == 0xff) { + if (param1[0] == 0xff) + { param1 += r6; - } else if (param1[0] == 0xe){ + } + else if (param1[0] == 0xe) + { param1 += r6; - } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { + } + else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) + { param1 += r6; - } else { + } + else + { param1++; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6 - 1, 0x5E6); - param1 += r6-1; + param1 += r6 - 1; UNK_021C59F4.unk04->unk667[r4] = 0; } - r4++; } return; } - UNK_021C59F4.unk04->unk65C = param1[1]; UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } -extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); - -THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { - if (UNK_021C59F4.unk04->unk66F[param0] != 0) { +THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) +{ + if (UNK_021C59F4.unk04->unk66F[param0] != 0) + { UNK_021C59F4.unk04->unk638[param0]--; UNK_021C59F4.unk04->unk66F[param0] = 0; @@ -1166,27 +1139,29 @@ THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { FUN_020303F4(param0, param1, param2); } -extern u32 FUN_020307E4(u8 *param0, u32 param1); extern int FUN_0202D498(void *param0); - - -THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) +{ UNK_021C59F4.unk04->unk638[param0]--; - if (param1 == 0) { + if (param1 == 0) + { return; } - if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { + if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) + { return; } UNK_021C59F4.unk04->unk667[param0] = 0; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { int r6 = FUN_02031228(FUN_02033534()); FUN_0202D858(FUN_02033534()); - if ((param1[0] & 2) == 0) { + if ((param1[0] & 2) == 0) + { FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); } @@ -1194,17 +1169,18 @@ THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { return; } - FUN_020307E4(param1, param0); - if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); + if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) + { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 + 1, 0xb, 0x66E); } } - -THUMB_FUNC void FUN_020304D4(u32 param0) { - if (param0 != 0) { +THUMB_FUNC void FUN_020304D4(u32 param0) +{ + if (param0 != 0) + { UNK_02105D58++; return; } @@ -1212,8 +1188,10 @@ THUMB_FUNC void FUN_020304D4(u32 param0) { ErrorHandling(); } -THUMB_FUNC void FUN_020304F0(u32 param0) { - if (param0 != 0) { +THUMB_FUNC void FUN_020304F0(u32 param0) +{ + if (param0 != 0) + { UNK_02105D59++; return; } @@ -1223,46 +1201,51 @@ THUMB_FUNC void FUN_020304F0(u32 param0) { extern u16 FUN_0202CB8C(); - -THUMB_FUNC void FUN_0203050C() { - if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { +THUMB_FUNC void FUN_0203050C() +{ + if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) + { return; } int r4 = FUN_02031228(FUN_02033534()); FUN_0202D858(FUN_02033534()); - if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { + if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) + { UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; UNK_021C59F4.unk04->unk634++; return; } - if (FUN_0202CBD4() != 4) { + if (FUN_0202CBD4() != 4) + { return; } - if (FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02030E7C(FUN_02031190()) == 0) + { FUN_02031190(); return; } - if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { + if (UNK_02105D58 != 2 && UNK_02105D58 != 0) + { return; } - - if (FUN_02031190() != 0) { + if (FUN_02031190() != 0) + { UNK_02105D58++; - - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { + if (FUN_0202D0D0( + UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) + { UNK_02105D58--; return; } @@ -1272,15 +1255,14 @@ THUMB_FUNC void FUN_0203050C() { return; } - - if ((FUN_0202CB8C() & 0xFFFE) != 0) { + if ((FUN_0202CB8C() & 0xFFFE) != 0) + { UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; UNK_021C59F4.unk04->unk634++; } } @@ -1288,382 +1270,424 @@ THUMB_FUNC void FUN_0203050C() { extern s64 _ll_mul(s64, s64); #ifdef NONMATCHING -THUMB_FUNC void FUN_02030674() { +THUMB_FUNC void FUN_02030674() +{ u16 r4 = 0; - if (UNK_021C59F4.unk04->unk62C == 0 || (UNK_021C59F4.unk04->unk628 & 0xf0) == 0) { + if (UNK_021C59F4.unk04->unk62C == 0 || (UNK_021C59F4.unk04->unk628 & 0xf0) == 0) + { return; } - if (UNK_021C59F4.unk04->unk62C == 2) { - if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + if (UNK_021C59F4.unk04->unk62C == 2) + { + if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) + { r4 = r4 | 0x10; } - if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) + { r4 = r4 | 0x20; } - if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) + { r4 = r4 | 0x80; } - if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) + { r4 = r4 | 0x40; } - } else { - if (UNK_021C59F4.unk04->unk62E != 0) { + } + else + { + if (UNK_021C59F4.unk04->unk62E != 0) + { r4 = UNK_021C59F4.unk04->unk62E; UNK_021C59F4.unk04->unk62D--; - if (UNK_021C59F4.unk04->unk62D < 0) { + if (UNK_021C59F4.unk04->unk62D < 0) + { UNK_021C59F4.unk04->unk62E = 0; } + } + else + { + UNK_021C59F4.unk04->unk5F8[0] = + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0] + + UNK_021C59F4.unk04->unk5F8[2]; - } else { - UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0] + UNK_021C59F4.unk04->unk5F8[2]; - - switch ((u32)(UNK_021C59F4.unk04->unk5F8[0] >> 0x3E) | (0 << 2)) { - case 0: - r4 = 0x20; + switch ((u32)(UNK_021C59F4.unk04->unk5F8[0] >> 0x3E) | (0 << 2)) + { + case 0: + r4 = 0x20; break; - case 1: - r4 = 0x10; + case 1: + r4 = 0x10; break; - case 2: - r4 = 0x40; + case 2: + r4 = 0x40; break; - case 3: - r4 = 0x80; + case 3: + r4 = 0x80; break; } - - UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[2] + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0]; - UNK_021C59F4.unk04->unk62D = UNK_021C59F4.unk04->unk5F8[0]>>0x3c | (0 << 4); + UNK_021C59F4.unk04->unk5F8[0] = + UNK_021C59F4.unk04->unk5F8[2] + + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0]; + UNK_021C59F4.unk04->unk62D = UNK_021C59F4.unk04->unk5F8[0] >> 0x3c | (0 << 4); UNK_021C59F4.unk04->unk62E = r4; } } - UNK_021C59F4.unk04->unk628 &= ~0xf0; UNK_021C59F4.unk04->unk628 += r4; } #else -THUMB_FUNC asm void FUN_02030674() { - push {r3-r7, lr} - ldr r7, =UNK_021C59F4 - mov r6, #0x0 - ldr r5, [r7, #0x4] - ldr r2, =0x0000062C - add r4, r6, #0x0 - ldrb r0, [r5, r2] - cmp r0, #0x0 - beq _02030690 - sub r1, r2, #0x4 - ldrh r1, [r5, r1] - mov r3, #0xf0 - tst r3, r1 - bne _02030692 -_02030690: - b _02030794 -_02030692: - cmp r0, #0x2 - bne _020306D0 - mov r0, #0x20 - tst r0, r1 - beq _020306A4 - mov r0, #0x10 - orr r0, r6 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306A4: - mov r0, #0x10 - tst r0, r1 - beq _020306B2 - mov r0, #0x20 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306B2: - mov r0, #0x40 - tst r0, r1 - beq _020306C0 - mov r0, #0x80 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306C0: - mov r0, #0x80 - tst r0, r1 - beq _0203077E - mov r0, #0x40 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - b _0203077E -_020306D0: - add r0, r2, #0x2 - ldrh r0, [r5, r0] - cmp r0, #0x0 - beq _020306F2 - add r4, r0, #0x0 - add r0, r2, #0x1 - ldrsb r0, [r5, r0] - sub r1, r0, #0x1 - add r0, r2, #0x1 - strb r1, [r5, r0] - ldr r1, [r7, #0x4] - ldrsb r0, [r1, r0] - cmp r0, #0x0 - bge _0203077E - add r0, r2, #0x2 - strh r6, [r1, r0] - b _0203077E -_020306F2: - add r0, r2, #0x0 - sub r0, #0x34 - add r6, r5, r0 - sub r2, #0x34 - ldr r0, [r6, #0x8] - ldr r1, [r6, #0xc] - ldr r2, [r5, r2] - ldr r3, [r6, #0x4] - bl _ll_mul - add r3, r0, #0x0 - add r2, r1, #0x0 - ldr r0, [r6, #0x10] - ldr r1, [r6, #0x14] - add r0, r0, r3 - adc r1, r2 - ldr r2, =0x000005F8 - str r0, [r5, r2] - mov r2, #0x0 - str r1, [r6, #0x4] - lsr r0, r1, #0x1e - lsl r1, r2, #0x2 - orr r1, r0 - cmp r1, #0x3 - bhi _02030746 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02030730: // jump table (using 16-bit offset) - // huge hack to get the correct jump offset. Is there a way to write constants? - lsl r6, r0, #0x0 // case 0 - lsl r2, r1, #0x0 // case 1 - lsl r6, r1, #0x0 // case 2 - lsl r2, r2, #0x0 // case 3 - - // intended jump offset - // .short _02030738 - _02030730 - 2; case 0 - // .short _0203073C - _02030730 - 2; case 1 - // .short _02030740 - _02030730 - 2; case 2 - // .short _02030744 - _02030730 - 2; case 3 -_02030738: - mov r4, #0x20 - b _02030746 -_0203073C: - mov r4, #0x10 - b _02030746 -_02030740: - mov r4, #0x40 - b _02030746 -_02030744: - mov r4, #0x80 -_02030746: - ldr r0, =UNK_021C59F4 - ldr r5, [r0, #0x4] - ldr r0, =0x000005F8 - add r6, r5, r0 - ldr r0, [r6, #0x8] - ldr r1, [r6, #0xc] - ldr r2, [r6, #0x0] - ldr r3, [r6, #0x4] - bl _ll_mul - ldr r3, [r6, #0x10] - ldr r2, [r6, #0x14] - add r0, r3, r0 - adc r2, r1 - ldr r1, =0x000005F8 - mov r3, #0x0 - str r0, [r5, r1] - str r2, [r6, #0x4] - lsr r0, r2, #0x1c - lsl r2, r3, #0x4 - orr r2, r0 - add r0, r1, #0x0 - add r0, #0x35 - strb r2, [r5, r0] - ldr r0, =UNK_021C59F4 - add r1, #0x36 - ldr r0, [r0, #0x4] - strh r4, [r0, r1] -_0203077E: - ldr r2, =UNK_021C59F4 - ldr r1, =0x00000628 - ldr r5, [r2, #0x4] - mov r0, #0xf0 - ldrh r3, [r5, r1] - bic r3, r0 - strh r3, [r5, r1] - ldr r2, [r2, #0x4] - ldrh r0, [r2, r1] - add r0, r0, r4 - strh r0, [r2, r1] -_02030794: - pop {r3-r7, pc} +THUMB_FUNC asm void FUN_02030674() +{ + push{ r3 - r7, lr } ldr r7, = UNK_021C59F4 mov r6, #0x0 ldr r5, [ r7, #0x4 ] ldr r2, + = 0x0000062C add r4, r6, #0x0 ldrb r0, [ r5, r2 ] cmp r0, + #0x0 beq _02030690 sub r1, r2, #0x4 ldrh r1, [ r5, r1 ] mov r3, + #0xf0 tst r3, + r1 bne _02030692 _02030690 : b _02030794 _02030692 : cmp r0, + #0x2 bne _020306D0 mov r0, + #0x20 tst r0, + r1 beq _020306A4 mov r0, + #0x10 orr r0, + r6 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 _020306A4 : mov r0, + #0x10 tst r0, + r1 beq _020306B2 mov r0, + #0x20 orr r0, + r4 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 _020306B2 : mov r0, + #0x40 tst r0, + r1 beq _020306C0 mov r0, + #0x80 orr r0, + r4 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 _020306C0 : mov r0, + #0x80 tst r0, + r1 beq _0203077E mov r0, + #0x40 orr r0, + r4 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 b _0203077E _020306D0 : add r0, + r2, + #0x2 ldrh r0, + [ r5, r0 ] cmp r0, + #0x0 beq _020306F2 add r4, + r0, + #0x0 add r0, + r2, + #0x1 ldrsb r0, + [ r5, r0 ] sub r1, + r0, + #0x1 add r0, + r2, + #0x1 strb r1, + [ r5, r0 ] ldr r1, + [ r7, #0x4 ] ldrsb r0, + [ r1, r0 ] cmp r0, + #0x0 bge _0203077E add r0, + r2, + #0x2 strh r6, + [ r1, r0 ] b _0203077E _020306F2 : add r0, + r2, + #0x0 sub r0, + #0x34 add r6, + r5, + r0 sub r2, + #0x34 ldr r0, + [ r6, #0x8 ] ldr r1, + [ r6, #0xc ] ldr r2, + [ r5, r2 ] ldr r3, + [ r6, #0x4 ] bl _ll_mul add r3, + r0, + #0x0 add r2, + r1, + #0x0 ldr r0, + [ r6, #0x10 ] ldr r1, + [ r6, #0x14 ] add r0, + r0, + r3 adc r1, + r2 ldr r2, + = 0x000005F8 str r0, + [ r5, r2 ] mov r2, + #0x0 str r1, + [ r6, #0x4 ] lsr r0, + r1, + #0x1e lsl r1, + r2, + #0x2 orr r1, + r0 cmp r1, + #0x3 bhi _02030746 add r0, + r1, + r1 add r0, + pc ldrh r0, + [ r0, #0x6 ] lsl r0, + r0, + #0x10 asr r0, + r0, + #0x10 add pc, + r0 _02030730 + : // jump table (using 16-bit offset) + // huge hack to get the correct jump offset. Is there a way to write constants? + lsl r6, + r0, + #0x0 // case 0 + lsl r2, + r1, + #0x0 // case 1 + lsl r6, + r1, + #0x0 // case 2 + lsl r2, + r2, + #0x0 // case 3 + + // intended jump offset + // .short _02030738 - _02030730 - 2; case 0 + // .short _0203073C - _02030730 - 2; case 1 + // .short _02030740 - _02030730 - 2; case 2 + // .short _02030744 - _02030730 - 2; case 3 + _02030738 : mov r4, + #0x20 b _02030746 _0203073C : mov r4, + #0x10 b _02030746 _02030740 : mov r4, + #0x40 b _02030746 _02030744 : mov r4, + #0x80 _02030746 : ldr r0, + = UNK_021C59F4 ldr r5, + [ r0, #0x4 ] ldr r0, + = 0x000005F8 add r6, + r5, + r0 ldr r0, + [ r6, #0x8 ] ldr r1, + [ r6, #0xc ] ldr r2, + [ r6, #0x0 ] ldr r3, + [ r6, #0x4 ] bl _ll_mul ldr r3, + [ r6, #0x10 ] ldr r2, + [ r6, #0x14 ] add r0, + r3, + r0 adc r2, + r1 ldr r1, + = 0x000005F8 mov r3, + #0x0 str r0, + [ r5, r1 ] str r2, + [ r6, #0x4 ] lsr r0, + r2, + #0x1c lsl r2, + r3, + #0x4 orr r2, + r0 add r0, + r1, + #0x0 add r0, + #0x35 strb r2, + [ r5, r0 ] ldr r0, + = UNK_021C59F4 add r1, + #0x36 ldr r0, + [ r0, #0x4 ] strh r4, + [ r0, r1 ] _0203077E : ldr r2, + = UNK_021C59F4 ldr r1, + = 0x00000628 ldr r5, + [ r2, #0x4 ] mov r0, + #0xf0 ldrh r3, + [ r5, r1 ] bic r3, + r0 strh r3, + [ r5, r1 ] ldr r2, + [ r2, #0x4 ] ldrh r0, + [ r2, r1 ] add r0, + r0, + r4 strh r0, + [ r2, r1 ] _02030794 : pop + { + r3 - r7, pc + } } #endif - -THUMB_FUNC void FUN_020307A8() { +THUMB_FUNC void FUN_020307A8() +{ UNK_021C59F4.unk04->unk62C = 1; } - -THUMB_FUNC void FUN_020307BC() { +THUMB_FUNC void FUN_020307BC() +{ UNK_021C59F4.unk04->unk62C = 2; } - -THUMB_FUNC void FUN_020307D0() { +THUMB_FUNC void FUN_020307D0() +{ UNK_021C59F4.unk04->unk62C = 0; } - - -THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) { +THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) +{ UNK_021C59F4.unk04->unk610[param1] = 0; u32 r7 = param0[0] & 0x10; - if (r7 == 0x10) { - + if (r7 == 0x10) + { u8 r5 = param0[0] & 0xc; - if (r5 == 0) { + if (r5 == 0) + { UNK_021C59F4.unk04->unk610[param1] |= 0x40; - } else if (r5 == 4) { + } + else if (r5 == 4) + { UNK_021C59F4.unk04->unk610[param1] |= 0x80; - } else if (r5 == 8) { + } + else if (r5 == 8) + { UNK_021C59F4.unk04->unk610[param1] |= 0x20; - } else if (r5 == 0xc) { + } + else if (r5 == 0xc) + { UNK_021C59F4.unk04->unk610[param1] |= 0x10; } - UNK_021C59F4.unk04->unk620[param1] = (param0[0]>>5) & 0x7; + UNK_021C59F4.unk04->unk620[param1] = (param0[0] >> 5) & 0x7; } - return 1; } -THUMB_FUNC void FUN_0203086C() { +THUMB_FUNC void FUN_0203086C() +{ } -extern u32 FUN_02030FE0(); - -THUMB_FUNC u32 FUN_02030870(u8 *param0) { - if (UNK_021C59F4.unk04->unk62A != 0){ +THUMB_FUNC u32 FUN_02030870(u8 *param0) +{ + if (UNK_021C59F4.unk04->unk62A != 0) + { return 0; } - if (FUN_02030FE0() == 0) { + if (FUN_02030FE0() == 0) + { return 0; } - if (UNK_021C59F4.unk04->unk681 != 0) { + if (UNK_021C59F4.unk04->unk681 != 0) + { UNK_021C59F4.unk04->unk681--; } - if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) + { param0[0] |= 0x10; UNK_021C59F4.unk04->unk681 = 8; - } else if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + } + else if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) + { param0[0] |= 0x14; UNK_021C59F4.unk04->unk681 = 8; - } else if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + } + else if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) + { param0[0] |= 0x18; UNK_021C59F4.unk04->unk681 = 8; - } else if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + } + else if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) + { param0[0] |= 0x1c; UNK_021C59F4.unk04->unk681 = 8; } - - param0[0] |= UNK_021C59F4.unk04->unk62B<<5; + param0[0] |= UNK_021C59F4.unk04->unk62B << 5; return 0; } - extern u32 FUN_0202D4E4(u8 *param0); extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); - -THUMB_FUNC u32 FUN_02030930(u8 *param0) { +THUMB_FUNC u32 FUN_02030930(u8 *param0) +{ int r5 = FUN_02031228(FUN_02033534()); FUN_0202D858(FUN_02033534()); u8 r0; - if (UNK_021C59F4.unk04->unk684 == 0) { + if (UNK_021C59F4.unk04->unk684 == 0) + { param0[0] = 0; - } else { + } + else + { param0[0] = 1; } - if (FUN_0202FA28() == 0) { + if (FUN_0202FA28() == 0) + { FUN_02030870(param0); } UNK_021C59F4.unk04->unk684 = 0; - if (FUN_0202D4E4(UNK_021C59F4.unk04->unk54C) != 0) { + if (FUN_0202D4E4(UNK_021C59F4.unk04->unk54C) != 0) + { param0[0] |= 2; - if (param0[0] == 2) { + if (param0[0] == 2) + { return 0; } - } else { + } + else + { int st0[2]; - st0[1] = r5-1; - st0[0] = param0+1; - if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) { + st0[1] = r5 - 1; + st0[0] = param0 + 1; + if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) + { UNK_021C59F4.unk04->unk684 = 1; } - - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { UNK_021C59F4.unk04->unk65E++; - param0[0] |= UNK_021C59F4.unk04->unk65E<<4 & 0xf0; + param0[0] |= UNK_021C59F4.unk04->unk65E << 4 & 0xf0; } } return 1; - } - -THUMB_FUNC void FUN_02030A00(u8 *param0) { +THUMB_FUNC void FUN_02030A00(u8 *param0) +{ param0[0] = 0xb; - if (UNK_021C59F4.unk04->unk685 == 0) { + if (UNK_021C59F4.unk04->unk685 == 0) + { param0[1] = 0; - } else { + } + else + { param0[1] = 1; } u16 res = FUN_0202CB8C(); - param0[2] = res >>8; + param0[2] = res >> 8; param0[3] = res; - int st0[2]; st0[1] = 0xbb; - st0[0] = param0+5; - if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) { + st0[0] = param0 + 5; + if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) + { UNK_021C59F4.unk04->unk685 = 0; param0[4] = 0xbb - st0[1]; @@ -1675,143 +1699,151 @@ THUMB_FUNC void FUN_02030A00(u8 *param0) { } extern u32 FUN_0202D684(u8 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); -extern void FUN_02031454(); -THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) { - if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { +THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0) != 0) + { return 1; } - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - -THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) { - if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 1) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 1) != 0) + { return 1; } - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - -THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) { - if (FUN_02031190() != 0) { +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02031190() != 0) + { ErrorHandling(); return 0; } - - if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { return FUN_02030A78(param0, param1, param2); } - if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0) != 0) + { return 1; } - - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - - -THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) { - if (FUN_02031190() != 0) { +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02031190() != 0) + { FUN_02031454(); return 0; } - if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { return FUN_02030ADC(param0, param1, param2); } - if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 1) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 1) != 0) + { return 1; } - - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - - -THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) { +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) +{ return FUN_02030BC4(param0, param1, 0); } - -THUMB_FUNC int FUN_02030C58() { +THUMB_FUNC int FUN_02030C58() +{ return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, u32 param3); -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) { +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) +{ FUN_0202D934(param0, param1, param2, param3); - *(u8 *)(param4+0xa) = 0xee; - *(u16 *)(param4+0x8) = 0xffff; - *(u32 *)(param4+0x4) = 0; + *(u8 *)(param4 + 0xa) = 0xee; + *(u16 *)(param4 + 0x8) = 0xffff; + *(u32 *)(param4 + 0x4) = 0; *(u32 *)(param4) = 0; } - extern int FUN_0202D478(s16 *param0); extern u32 FUN_0202D41C(s16 *param0); extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); -struct UnkStruct2 { - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; -}; - - -THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) { - while (FUN_0202D478(param0) != 0) { +THUMB_FUNC void FUN_02030C8C( + s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) +{ + while (FUN_0202D478(param0) != 0) + { u32 r7 = param4->unk0a; - if (r7 == 0xee) { + if (r7 == 0xee) + { r7 = FUN_0202D41C(param0); - if (r7 == 0xee) { + if (r7 == 0xee) + { continue; } } @@ -1819,21 +1851,24 @@ THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, st int st10 = param0[2]; param4->unk0a = r7; int r4 = param4->unk08; - if (r4 == 0xffff) { + if (r4 == 0xffff) + { r4 = FUN_0202D9A0(r7); - if (UNK_021C59F4.unk04->unk689 != 0) { + if (UNK_021C59F4.unk04->unk689 != 0) + { return; } - if (r4 == 0xffff) { - if (FUN_0202D478(param0) < 1) { + if (r4 == 0xffff) + { + if (FUN_0202D478(param0) < 1) + { param0[2] = st10; return; } - - r4 = FUN_0202D41C(param0) <<8; + r4 = FUN_0202D41C(param0) << 8; r4 += FUN_0202D41C(param0); st10 = param0[2]; @@ -1842,65 +1877,83 @@ THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, st param4->unk08 = r4; } - - if (FUN_0202DA04(r7) != 0) { - if (param4->unk04 == 0) { + if (FUN_0202DA04(r7) != 0) + { + if (param4->unk04 == 0) + { param4->unk04 = FUN_0202DA40(r7, param1, param4->unk08); } int stc = FUN_0202D400(param0, param2, r4 - param4->unk00); - if (param4->unk04 != 0) { + if (param4->unk04 != 0) + { MI_CpuCopy8(param2, param4->unk04 + param4->unk00, stc); } - - if ((int)(param4->unk00 += stc) < (int)r4) { + if ((int)(param4->unk00 += stc) < (int)r4) + { continue; } FUN_02030C70(param1, r7, r4, param4->unk04, param4); - } else { - if (FUN_0202D478(param0) >= r4) { + } + else + { + if (FUN_0202D478(param0) >= r4) + { FUN_0202D400(param0, param2, r4); FUN_02030C70(param1, r7, r4, param2, param4); - } else { + } + else + { param0[2] = st10; return; } } - } } - - -THUMB_FUNC void FUN_02030DA4() { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68B == 0) { +THUMB_FUNC void FUN_02030DA4() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk68B == 0) + { FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); - if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) { + if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) + { UNK_021C59F4.unk04->unk470; - - FUN_02030C8C(&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); + FUN_02030C8C(&UNK_021C59F4.unk04->unk470, + 0, + UNK_021C59F4.unk04->unk460, + 1, + (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); } } } } - -THUMB_FUNC void FUN_02030DFC() { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68B == 0) { +THUMB_FUNC void FUN_02030DFC() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk68B == 0) + { int r7 = FUN_0202D858(FUN_02033534()) + 1; int r4; - for (r4 = 0; r4 < r7; r4++) { + for (r4 = 0; r4 < r7; r4++) + { FUN_0202D4BC(&UNK_021C59F4.unk04->unk4E8[r4]); - if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) { - - - FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], r4, UNK_021C59F4.unk04->unk460, 0, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); + if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) + { + + FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], + r4, + UNK_021C59F4.unk04->unk460, + 0, + (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); } } } @@ -1908,23 +1961,25 @@ THUMB_FUNC void FUN_02030DFC() { } extern u32 MOD04_021D8018(); -extern u32 FUN_02030F40(); - - -THUMB_FUNC u32 FUN_02030E7C(u16 param0) { - if (UNK_021C59F4.unk04 == NULL) { +THUMB_FUNC u32 FUN_02030E7C(u16 param0) +{ + if (UNK_021C59F4.unk04 == NULL) + { return 0; } - - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 != 0 && MOD04_021D8018() != 0xffffffff) { - if (param0 == 0) { + if (FUN_02033534() >= 0x13) + { + if (UNK_021C59F4.unk04->unk687 != 0 && MOD04_021D8018() != 0xffffffff) + { + if (param0 == 0) + { return 1; } - if (param0 == 1) { + if (param0 == 1) + { return 1; } } @@ -1932,26 +1987,34 @@ THUMB_FUNC u32 FUN_02030E7C(u16 param0) { return 0; } - if (FUN_02030F40() == 0) { + if (FUN_02030F40() == 0) + { return 0; } - if (FUN_0202CBD4() != 4) { + if (FUN_0202CBD4() != 4) + { return 0; } - if (FUN_02031190() == param0) { + if (FUN_02031190() == param0) + { return 1; } - if (FUN_02031190() == 0) { + if (FUN_02031190() == 0) + { u16 r0 = FUN_0202CB8C(); - if ((r0 & (1<unk65C & (1<unk65C & (1 << param0)) != 0) + { return 1; } } @@ -1959,46 +2022,46 @@ THUMB_FUNC u32 FUN_02030E7C(u16 param0) { return 0; } - - -THUMB_FUNC u32 FUN_02030F20() { +THUMB_FUNC u32 FUN_02030F20() +{ u32 r4 = 0; for (int i = 0; i < 8; i++) { - if (FUN_02030E7C(i) != 0) { + if (FUN_02030E7C(i) != 0) + { r4++; } } - return r4; - } extern u32 FUN_0202EDF8(); -THUMB_FUNC u32 FUN_02030F40() { - if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) { - return 1; +THUMB_FUNC u32 FUN_02030F40() +{ + if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) + { + return 1; } return FUN_0202EDF8(); } - - -THUMB_FUNC void FUN_02030F60(u8 param0) { +THUMB_FUNC void FUN_02030F60(u8 param0) +{ UNK_021C59F4.unk04->unk62B = param0; } - -THUMB_FUNC u8 FUN_02030F74(u32 param0) { +THUMB_FUNC u8 FUN_02030F74(u32 param0) +{ return UNK_021C59F4.unk04->unk620[param0]; } - -THUMB_FUNC u32 FUN_02030F88(u32 param0) { - if (UNK_021C59F4.unk04 == NULL) { +THUMB_FUNC u32 FUN_02030F88(u32 param0) +{ + if (UNK_021C59F4.unk04 == NULL) + { return 0; } @@ -2008,117 +2071,133 @@ THUMB_FUNC u32 FUN_02030F88(u32 param0) { return ret; } -THUMB_FUNC void FUN_02030FA8() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_02030FA8() +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk628 |= 0x8000; } } - -THUMB_FUNC void FUN_02030FC8() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_02030FC8() +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk628 = 0; } } - -THUMB_FUNC u32 FUN_02030FE0() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC u32 FUN_02030FE0() +{ + if (UNK_021C59F4.unk04 != NULL) + { return UNK_021C59F4.unk04->unk628 & 0x8000; } return 1; } - - -THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) { - if (FUN_0202FA28() == 1) { +THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) +{ + if (FUN_0202FA28() == 1) + { FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0); return; } - FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0); - } - -THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) { +THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) +{ FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); } -extern u32 FUN_020311D0(u32 param0, u8 *param1); - - - -THUMB_FUNC void FUN_02031088() { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk67B != 1) { - if (UNK_021C59F4.unk04->unk67B != 3) { +THUMB_FUNC void FUN_02031088() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk67B != 1) + { + if (UNK_021C59F4.unk04->unk67B != 3) + { return; } - } else { + } + else + { u32 res; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { res = FUN_020311D0(0xb, &UNK_021C59F4.unk04->unk67C); - } else { + } + else + { res = FUN_02030BC4(0xb, &UNK_021C59F4.unk04->unk67C, 1); } - if (res == 0) { + if (res == 0) + { return; } UNK_021C59F4.unk04->unk67B = 2; return; - - } - if (FUN_020311D0(0xc, &UNK_021C59F4.unk04->unk67C) != 0) { + if (FUN_020311D0(0xc, &UNK_021C59F4.unk04->unk67C) != 0) + { FUN_0202F9E0(UNK_021C59F4.unk04->unk67C); UNK_021C59F4.unk04->unk67B = 0; } - } } - -THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) { - if (FUN_02031190() == 0) { +THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) +{ + if (FUN_02031190() == 0) + { UNK_021C59F4.unk04->unk67B = 1; UNK_021C59F4.unk04->unk67C = param2[0]; } } -THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) { - if (FUN_02031190() != 0) { +THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) +{ + if (FUN_02031190() != 0) + { UNK_021C59F4.unk04->unk67C = param2[0]; UNK_021C59F4.unk04->unk67B = 3; - } + } } - -THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) { - if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) { +THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) +{ + if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) + { FUN_0202F9E0(*param2); UNK_021C59F4.unk04->unk67B = 0; } } - extern u16 FUN_0202D19C(); -THUMB_FUNC u16 FUN_02031190() { - if (UNK_021C59F4.unk04 != NULL) { - if (FUN_02033534() >= 0x13) { +THUMB_FUNC u16 FUN_02031190() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (FUN_02033534() >= 0x13) + { u32 res = MOD04_021D8018(); - if (res != 0xffffffff) { + if (res != 0xffffffff) + { return res; } - } else { - if (FUN_02031280() != 0) { + } + else + { + if (FUN_02031280() != 0) + { return 0; } @@ -2129,31 +2208,33 @@ THUMB_FUNC u16 FUN_02031190() { return 0; } - -THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1) { +THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1) +{ return FUN_02030ADC(param0, param1, 0); } - -THUMB_FUNC u32 FUN_020311DC(u32 param0) { +THUMB_FUNC u32 FUN_020311DC(u32 param0) +{ return FUN_02030ADC(param0, 0, 0); } - -THUMB_FUNC u32 FUN_020311E8() { +THUMB_FUNC u32 FUN_020311E8() +{ return FUN_0202EE24(); } - extern void FUN_020334E8(u32 param0, u32 param1); extern u32 FUN_0202EE60(); -THUMB_FUNC u32 FUN_020311F0() { - if (FUN_02031280() != 0) { +THUMB_FUNC u32 FUN_020311F0() +{ + if (FUN_02031280() != 0) + { return 0; } - if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) { + if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) + { FUN_020334E8(1, 1); return 1; } @@ -2161,40 +2242,45 @@ THUMB_FUNC u32 FUN_020311F0() { return FUN_0202EE60(); } - - -THUMB_FUNC int FUN_02031228(u16 param0) { - if (FUN_0202D858(param0) >= 5) { +THUMB_FUNC int FUN_02031228(u16 param0) +{ + if (FUN_0202D858(param0) >= 5) + { return 0xc; } - if (FUN_0202FA28() == 0) { + if (FUN_0202FA28() == 0) + { return 0xc; } return 0x26; } -THUMB_FUNC u32 FUN_02031248(u32 param0) { - return FUN_0202D858(param0) +1; +THUMB_FUNC u32 FUN_02031248(u32 param0) +{ + return FUN_0202D858(param0) + 1; } extern u32 FUN_0202D884(u16 param0); - - -THUMB_FUNC u32 FUN_02031258(u32 param0) { - return FUN_0202D884(param0) +1; +THUMB_FUNC u32 FUN_02031258(u32 param0) +{ + return FUN_0202D884(param0) + 1; } -THUMB_FUNC void FUN_02031268(u8 param0) { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_02031268(u8 param0) +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk686 = param0; } } -THUMB_FUNC u8 FUN_02031280() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC u8 FUN_02031280() +{ + if (UNK_021C59F4.unk04 != NULL) + { return UNK_021C59F4.unk04->unk686; } @@ -2203,8 +2289,10 @@ THUMB_FUNC u8 FUN_02031280() { extern void FUN_0202F05C(); -THUMB_FUNC void FUN_0203129C() { - if (FUN_0202F03C() == 0 && FUN_02031190() == 0) { +THUMB_FUNC void FUN_0203129C() +{ + if (FUN_0202F03C() == 0 && FUN_02031190() == 0) + { u32 st0; FUN_02030C4C(2, &st0); } @@ -2214,16 +2302,16 @@ THUMB_FUNC void FUN_0203129C() { extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); - #ifdef NONMATCHING -THUMB_FUNC void FUN_020312BC(u32 param0) { +THUMB_FUNC void FUN_020312BC(u32 param0) +{ RTCDate st10; RTCTime st4; GF_RTC_CopyDateTime(&st10, &st4); gMain.unk2C + st4.second; - u32 r6 = st10.year<<4 + st10.month; - u32 r5 = 0<<4 | st10.year>>0x1c; + u32 r6 = st10.year << 4 + st10.month; + u32 r5 = 0 << 4 | st10.year >> 0x1c; st4.second; u32 st0 = st10.day; @@ -2231,108 +2319,69 @@ THUMB_FUNC void FUN_020312BC(u32 param0) { st4.minute; 0x00000000; - (0x00000000 + r5) <<5; - - + (0x00000000 + r5) << 5; } #else -THUMB_FUNC asm void FUN_020312BC(u32 param0) { - push {r3-r7, lr} - sub sp, #0x20 - add r4, r0, #0x0 - add r0, sp, #0x10 - add r1, sp, #0x4 - bl GF_RTC_CopyDateTime - ldr r0, =gMain - ldr r6, [sp, #0x10] - mov r5, #0x0 - lsr r7, r6, #0x1c - lsl r5, r5, #0x4 - ldr r1, [sp, #0xc] - ldr r0, [r0, #0x2c] - lsl r6, r6, #0x4 - add r3, r1, r0 - ldr r0, [sp, #0x18] - orr r5, r7 - str r0, [sp, #0x0] - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x4] - add r6, r0, r6 - ldr r0, =0x00000000 - ldr r2, [sp, #0x8] - adc r0, r5 - lsr r5, r6, #0x1b - lsl r0, r0, #0x5 - orr r0, r5 - ldr r5, [sp, #0x0] - lsl r6, r6, #0x5 - add r6, r5, r6 - ldr r5, =0x00000000 - adc r5, r0 - lsr r0, r6, #0x1b - lsl r5, r5, #0x5 - orr r5, r0 - lsl r0, r6, #0x5 - add r6, r1, r0 - ldr r1, =0x00000000 - adc r1, r5 - lsr r0, r6, #0x1a - lsl r1, r1, #0x6 - orr r1, r0 - lsl r0, r6, #0x6 - add r5, r2, r0 - ldr r2, =0x00000000 - adc r2, r1 - lsr r0, r5, #0x1a - lsl r1, r2, #0x6 - orr r1, r0 - lsl r0, r5, #0x6 - add r2, r3, r0 - ldr r0, =0x00000000 - str r2, [r4, #0x0] - adc r0, r1 - str r0, [r4, #0x4] - ldr r1, =0x6C078965 - ldr r0, =0x5D588B65 - str r1, [r4, #0x8] - str r0, [r4, #0xc] - ldr r0, =0x00269EC3 - str r0, [r4, #0x10] - mov r0, #0x0 - str r0, [r4, #0x14] - add sp, #0x20 - pop {r3-r7, pc} +THUMB_FUNC asm void FUN_020312BC(u32 param0) +{ + push{ r3 - r7, lr } sub sp, #0x20 add r4, r0, #0x0 add r0, sp, #0x10 add r1, sp, + #0x4 bl GF_RTC_CopyDateTime ldr r0, + = gMain ldr r6, [ sp, #0x10 ] mov r5, #0x0 lsr r7, r6, #0x1c lsl r5, r5, #0x4 ldr r1, + [ sp, #0xc ] ldr r0, [ r0, #0x2c ] lsl r6, r6, #0x4 add r3, r1, r0 ldr r0, + [ sp, #0x18 ] orr r5, r7 str r0, [ sp, #0x0 ] ldr r0, [ sp, #0x14 ] ldr r1, + [ sp, #0x4 ] add r6, r0, + r6 ldr r0, = 0x00000000 ldr r2, [ sp, #0x8 ] adc r0, r5 lsr r5, r6, #0x1b lsl r0, r0, + #0x5 orr r0, r5 ldr r5, [ sp, #0x0 ] lsl r6, r6, #0x5 add r6, r5, r6 ldr r5, + = 0x00000000 adc r5, r0 lsr r0, r6, #0x1b lsl r5, r5, #0x5 orr r5, r0 lsl r0, r6, + #0x5 add r6, r1, r0 ldr r1, = 0x00000000 adc r1, r5 lsr r0, r6, #0x1a lsl r1, r1, + #0x6 orr r1, r0 lsl r0, r6, #0x6 add r5, r2, r0 ldr r2, = 0x00000000 adc r2, + r1 lsr r0, r5, #0x1a lsl r1, r2, #0x6 orr r1, r0 lsl r0, r5, #0x6 add r2, r3, + r0 ldr r0, = 0x00000000 str r2, [ r4, #0x0 ] adc r0, r1 str r0, [ r4, #0x4 ] ldr r1, + = 0x6C078965 ldr r0, = 0x5D588B65 str r1, [ r4, #0x8 ] str r0, [ r4, #0xc ] ldr r0, + = 0x00269EC3 str r0, [ r4, #0x10 ] mov r0, #0x0 str r0, [ r4, #0x14 ] add sp, + #0x20 pop + { + r3 - r7, pc + } } #endif extern void FUN_0202D830(u8 *param0, u32 param1); -THUMB_FUNC void FUN_02031354(u32 param0) { +THUMB_FUNC void FUN_02031354(u32 param0) +{ FUN_0202D830(UNK_021C59F4.unk04->unk56C, param0); } - -THUMB_FUNC u32 FUN_02031370() { +THUMB_FUNC u32 FUN_02031370() +{ return FUN_0202D4E4(UNK_021C59F4.unk04->unk56C); } -THUMB_FUNC u32 FUN_02031388() { +THUMB_FUNC u32 FUN_02031388() +{ return FUN_0202D4E4(UNK_021C59F4.unk04->unk54C); } -THUMB_FUNC void FUN_020313A0(u8 param0) { +THUMB_FUNC void FUN_020313A0(u8 param0) +{ UNK_021C59F4.unk04->unk687 = param0; } -THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1) { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1) +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk677[param1] = param0; } } -THUMB_FUNC u32 FUN_020313CC(u32 param0) { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk677[param0] != 0xff) { +THUMB_FUNC u32 FUN_020313CC(u32 param0) +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk677[param0] != 0xff) + { return UNK_021C59F4.unk04->unk677[param0]; } } @@ -2342,18 +2391,23 @@ THUMB_FUNC u32 FUN_020313CC(u32 param0) { extern u32 MOD04_021D8624(); -THUMB_FUNC u32 FUN_020313EC() { - if (FUN_02033534() < 0x13) { +THUMB_FUNC u32 FUN_020313EC() +{ + if (FUN_02033534() < 0x13) + { return 0; } return MOD04_021D8624(); } -THUMB_FUNC void FUN_02031400(u32 param0) { - if (FUN_02033534() >= 0x13) { +THUMB_FUNC void FUN_02031400(u32 param0) +{ + if (FUN_02033534() >= 0x13) + { UNK_021C59F4.unk04->unk630 = param0; - if (param0 != 0) { + if (param0 != 0) + { UNK_021C59F4.unk04->unk634 = 0; UNK_021C59F4.unk04->unk638[0] = 0; UNK_021C59F4.unk04->unk638[1] = 0; @@ -2361,22 +2415,25 @@ THUMB_FUNC void FUN_02031400(u32 param0) { } } - -THUMB_FUNC u32 FUN_02031438() { - if (UNK_021C59F4.unk04->unk681 != 0) { +THUMB_FUNC u32 FUN_02031438() +{ + if (UNK_021C59F4.unk04->unk681 != 0) + { return 1; } return 0; } - -THUMB_FUNC void FUN_02031454() { +THUMB_FUNC void FUN_02031454() +{ UNK_021C59F4.unk04->unk689 = 1; } -THUMB_FUNC void FUN_02031468() { - if (UNK_021C59F4.unk04 != NULL) { - UNK_021C59F4.unk04->unk68A = 1; +THUMB_FUNC void FUN_02031468() +{ + if (UNK_021C59F4.unk04 != NULL) + { + UNK_021C59F4.unk04->unk68A = 1; } } \ No newline at end of file diff --git a/include/unk_0202F150.h b/include/unk_0202F150.h new file mode 100644 index 00000000..801fc3ed --- /dev/null +++ b/include/unk_0202F150.h @@ -0,0 +1,198 @@ +#ifndef POKEDIAMOND_UNK_0202F150_H +#define POKEDIAMOND_UNK_0202F150_H + +#include "global.h" +#include "MI_memory.h" +#include "heap.h" +#include "main.h" +#include "RTC_api.h" + + +struct UnkStruct1 +{ + u8 unk000[2][38]; + u8 unk04c[264]; + u8 unk154[2][192]; + u8 unk2D4[384]; + u32 unk454; + u32 unk458; + u32 unk45C; + u32 unk460; + u32 unk464; + u8 unk468[0x8]; + u32 unk470; + u8 unk474[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk47C[8]; + u32 unk4DC; + u8 unk4E0[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk4E8[8]; + u32 unk548; + u8 unk54C[32]; + u8 unk56C[32]; + struct + { + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; + u8 unk0b; + } unk58C[8]; + u32 unk5EC; + u32 unk5F0; + u16 unk5F4; + u8 unk5F6; + u8 unk5F7; + s64 unk5F8[3]; + u16 unk610[8]; + u8 unk620[0x8]; + u16 unk628; + u8 unk62A; + u8 unk62B; + u8 unk62C; + s8 unk62D; + u16 unk62E; + u32 unk630; + u32 unk634; + u32 unk638[8]; + u32 unk658; + u16 unk65C; + u8 unk65E; + u8 unk65F[8]; + u8 unk667[8]; + u8 unk66F[8]; + u8 unk677[4]; + u8 unk67B; + u8 unk67C; + u8 unk67D; + u8 unk67E; + u8 unk67F; + u8 unk680; + u8 unk681; + u8 unk682; + u8 unk683; + u8 unk684; + u8 unk685; + u8 unk686; + u8 unk687; + u8 unk688; + u8 unk689; + u8 unk68A; + u8 unk68B; +}; + +struct UnkStruct2 +{ + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; +}; + + +THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1); +THUMB_FUNC void FUN_0202F2F0(); +THUMB_FUNC void FUN_0202F5A4(); +THUMB_FUNC void FUN_0202F820(u32 param0); +THUMB_FUNC void FUN_0202F8D4(); +THUMB_FUNC void FUN_0202F910(u32 param0); +THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3); +THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2); +THUMB_FUNC void FUN_0202F984(); +THUMB_FUNC void FUN_0202F9E0(u32 param0); +THUMB_FUNC void FUN_0202FA10(); +THUMB_FUNC void FUN_0202FA1C(); +THUMB_FUNC u8 FUN_0202FA28(); +THUMB_FUNC u32 FUN_0202FA48(); +THUMB_FUNC void FUN_0202FA5C(); +THUMB_FUNC u32 FUN_0202FB18(u32 param0); +THUMB_FUNC void FUN_0202FB20(); +THUMB_FUNC void FUN_0202FB58(); +THUMB_FUNC u32 FUN_0202FB80(); +THUMB_FUNC void FUN_0202FC60(); +THUMB_FUNC void FUN_0202FC80(); +THUMB_FUNC void FUN_0202FCA8(); +THUMB_FUNC void FUN_0202FCCC(); +THUMB_FUNC u32 FUN_0202FE2C(int param0); +THUMB_FUNC void FUN_0202FEEC(); +THUMB_FUNC void FUN_02030074(); +THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2); +THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2); +THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2); +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2); +THUMB_FUNC void FUN_020304D4(u32 param0); +THUMB_FUNC void FUN_020304F0(u32 param0); +THUMB_FUNC void FUN_0203050C(); +THUMB_FUNC void FUN_02030674(); +THUMB_FUNC void FUN_020307A8(); +THUMB_FUNC void FUN_020307BC(); +THUMB_FUNC void FUN_020307D0(); +THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1); +THUMB_FUNC void FUN_0203086C(); +THUMB_FUNC u32 FUN_02030870(u8 *param0); +THUMB_FUNC u32 FUN_02030930(u8 *param0); +THUMB_FUNC void FUN_02030A00(u8 *param0); +THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2); +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2); +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2); +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2); +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1); +THUMB_FUNC int FUN_02030C58(); +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4); +THUMB_FUNC void FUN_02030C8C( + s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4); +THUMB_FUNC void FUN_02030DA4(); +THUMB_FUNC void FUN_02030DFC(); +THUMB_FUNC u32 FUN_02030E7C(u16 param0); +THUMB_FUNC u32 FUN_02030F20(); +THUMB_FUNC u32 FUN_02030F40(); +THUMB_FUNC void FUN_02030F60(u8 param0); +THUMB_FUNC u8 FUN_02030F74(u32 param0); +THUMB_FUNC u32 FUN_02030F88(u32 param0); +THUMB_FUNC void FUN_02030FA8(); +THUMB_FUNC void FUN_02030FC8(); +THUMB_FUNC u32 FUN_02030FE0(); +THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2); +THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2); +THUMB_FUNC void FUN_02031088(); +THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2); +THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2); +THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2); +THUMB_FUNC u16 FUN_02031190(); +THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1); +THUMB_FUNC u32 FUN_020311DC(u32 param0); +THUMB_FUNC u32 FUN_020311E8(); +THUMB_FUNC u32 FUN_020311F0(); +THUMB_FUNC int FUN_02031228(u16 param0); +THUMB_FUNC u32 FUN_02031248(u32 param0); +THUMB_FUNC u32 FUN_02031258(u32 param0); +THUMB_FUNC void FUN_02031268(u8 param0); +THUMB_FUNC u8 FUN_02031280(); +THUMB_FUNC void FUN_0203129C(); +THUMB_FUNC void FUN_020312BC(u32 param0); +THUMB_FUNC void FUN_02031354(u32 param0); +THUMB_FUNC u32 FUN_02031370(); +THUMB_FUNC u32 FUN_02031388(); +THUMB_FUNC void FUN_020313A0(u8 param0); +THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1); +THUMB_FUNC u32 FUN_020313CC(u32 param0); +THUMB_FUNC u32 FUN_020313EC(); +THUMB_FUNC void FUN_02031400(u32 param0); +THUMB_FUNC u32 FUN_02031438(); +THUMB_FUNC void FUN_02031454(); +THUMB_FUNC void FUN_02031468(); + + + + +#endif //POKEDIAMOND_UNK_0202F150_H + -- cgit v1.2.3 From 8e5d36dc053928ecc36028e818c8a3f8fd2cc9a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 17:55:22 +0200 Subject: fix asm functions --- arm9/src/unk_0202F150.c | 597 ++++++++++++++++++++++++++---------------------- 1 file changed, 326 insertions(+), 271 deletions(-) diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 15a67f8d..7973702c 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -763,86 +763,98 @@ THUMB_FUNC u32 FUN_0202FE2C(int param0) #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 - } + // clang-format off + 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} + // clang-format on } #endif @@ -1125,7 +1137,6 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } - THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { if (UNK_021C59F4.unk04->unk66F[param0] != 0) @@ -1348,173 +1359,173 @@ THUMB_FUNC void FUN_02030674() #else THUMB_FUNC asm void FUN_02030674() { - push{ r3 - r7, lr } ldr r7, = UNK_021C59F4 mov r6, #0x0 ldr r5, [ r7, #0x4 ] ldr r2, - = 0x0000062C add r4, r6, #0x0 ldrb r0, [ r5, r2 ] cmp r0, - #0x0 beq _02030690 sub r1, r2, #0x4 ldrh r1, [ r5, r1 ] mov r3, - #0xf0 tst r3, - r1 bne _02030692 _02030690 : b _02030794 _02030692 : cmp r0, - #0x2 bne _020306D0 mov r0, - #0x20 tst r0, - r1 beq _020306A4 mov r0, - #0x10 orr r0, - r6 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 _020306A4 : mov r0, - #0x10 tst r0, - r1 beq _020306B2 mov r0, - #0x20 orr r0, - r4 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 _020306B2 : mov r0, - #0x40 tst r0, - r1 beq _020306C0 mov r0, - #0x80 orr r0, - r4 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 _020306C0 : mov r0, - #0x80 tst r0, - r1 beq _0203077E mov r0, - #0x40 orr r0, - r4 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 b _0203077E _020306D0 : add r0, - r2, - #0x2 ldrh r0, - [ r5, r0 ] cmp r0, - #0x0 beq _020306F2 add r4, - r0, - #0x0 add r0, - r2, - #0x1 ldrsb r0, - [ r5, r0 ] sub r1, - r0, - #0x1 add r0, - r2, - #0x1 strb r1, - [ r5, r0 ] ldr r1, - [ r7, #0x4 ] ldrsb r0, - [ r1, r0 ] cmp r0, - #0x0 bge _0203077E add r0, - r2, - #0x2 strh r6, - [ r1, r0 ] b _0203077E _020306F2 : add r0, - r2, - #0x0 sub r0, - #0x34 add r6, - r5, - r0 sub r2, - #0x34 ldr r0, - [ r6, #0x8 ] ldr r1, - [ r6, #0xc ] ldr r2, - [ r5, r2 ] ldr r3, - [ r6, #0x4 ] bl _ll_mul add r3, - r0, - #0x0 add r2, - r1, - #0x0 ldr r0, - [ r6, #0x10 ] ldr r1, - [ r6, #0x14 ] add r0, - r0, - r3 adc r1, - r2 ldr r2, - = 0x000005F8 str r0, - [ r5, r2 ] mov r2, - #0x0 str r1, - [ r6, #0x4 ] lsr r0, - r1, - #0x1e lsl r1, - r2, - #0x2 orr r1, - r0 cmp r1, - #0x3 bhi _02030746 add r0, - r1, - r1 add r0, - pc ldrh r0, - [ r0, #0x6 ] lsl r0, - r0, - #0x10 asr r0, - r0, - #0x10 add pc, - r0 _02030730 - : // jump table (using 16-bit offset) - // huge hack to get the correct jump offset. Is there a way to write constants? - lsl r6, - r0, - #0x0 // case 0 - lsl r2, - r1, - #0x0 // case 1 - lsl r6, - r1, - #0x0 // case 2 - lsl r2, - r2, - #0x0 // case 3 - - // intended jump offset - // .short _02030738 - _02030730 - 2; case 0 - // .short _0203073C - _02030730 - 2; case 1 - // .short _02030740 - _02030730 - 2; case 2 - // .short _02030744 - _02030730 - 2; case 3 - _02030738 : mov r4, - #0x20 b _02030746 _0203073C : mov r4, - #0x10 b _02030746 _02030740 : mov r4, - #0x40 b _02030746 _02030744 : mov r4, - #0x80 _02030746 : ldr r0, - = UNK_021C59F4 ldr r5, - [ r0, #0x4 ] ldr r0, - = 0x000005F8 add r6, - r5, - r0 ldr r0, - [ r6, #0x8 ] ldr r1, - [ r6, #0xc ] ldr r2, - [ r6, #0x0 ] ldr r3, - [ r6, #0x4 ] bl _ll_mul ldr r3, - [ r6, #0x10 ] ldr r2, - [ r6, #0x14 ] add r0, - r3, - r0 adc r2, - r1 ldr r1, - = 0x000005F8 mov r3, - #0x0 str r0, - [ r5, r1 ] str r2, - [ r6, #0x4 ] lsr r0, - r2, - #0x1c lsl r2, - r3, - #0x4 orr r2, - r0 add r0, - r1, - #0x0 add r0, - #0x35 strb r2, - [ r5, r0 ] ldr r0, - = UNK_021C59F4 add r1, - #0x36 ldr r0, - [ r0, #0x4 ] strh r4, - [ r0, r1 ] _0203077E : ldr r2, - = UNK_021C59F4 ldr r1, - = 0x00000628 ldr r5, - [ r2, #0x4 ] mov r0, - #0xf0 ldrh r3, - [ r5, r1 ] bic r3, - r0 strh r3, - [ r5, r1 ] ldr r2, - [ r2, #0x4 ] ldrh r0, - [ r2, r1 ] add r0, - r0, - r4 strh r0, - [ r2, r1 ] _02030794 : pop - { - r3 - r7, pc - } + // clang-format off + push {r3-r7, lr} + ldr r7, =UNK_021C59F4 + mov r6, #0x0 + ldr r5, [r7, #0x4] + ldr r2, =0x0000062C + add r4, r6, #0x0 + ldrb r0, [r5, r2] + cmp r0, #0x0 + beq _02030690 + sub r1, r2, #0x4 + ldrh r1, [r5, r1] + mov r3, #0xf0 + tst r3, r1 + bne _02030692 +_02030690: + b _02030794 +_02030692: + cmp r0, #0x2 + bne _020306D0 + mov r0, #0x20 + tst r0, r1 + beq _020306A4 + mov r0, #0x10 + orr r0, r6 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306A4: + mov r0, #0x10 + tst r0, r1 + beq _020306B2 + mov r0, #0x20 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306B2: + mov r0, #0x40 + tst r0, r1 + beq _020306C0 + mov r0, #0x80 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306C0: + mov r0, #0x80 + tst r0, r1 + beq _0203077E + mov r0, #0x40 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203077E +_020306D0: + add r0, r2, #0x2 + ldrh r0, [r5, r0] + cmp r0, #0x0 + beq _020306F2 + add r4, r0, #0x0 + add r0, r2, #0x1 + ldrsb r0, [r5, r0] + sub r1, r0, #0x1 + add r0, r2, #0x1 + strb r1, [r5, r0] + ldr r1, [r7, #0x4] + ldrsb r0, [r1, r0] + cmp r0, #0x0 + bge _0203077E + add r0, r2, #0x2 + strh r6, [r1, r0] + b _0203077E +_020306F2: + add r0, r2, #0x0 + sub r0, #0x34 + add r6, r5, r0 + sub r2, #0x34 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r5, r2] + ldr r3, [r6, #0x4] + bl _ll_mul + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + ldr r2, =0x000005F8 + str r0, [r5, r2] + mov r2, #0x0 + str r1, [r6, #0x4] + lsr r0, r1, #0x1e + lsl r1, r2, #0x2 + orr r1, r0 + cmp r1, #0x3 + bhi _02030746 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02030730: // jump table (using 16-bit offset) + // huge hack to get the correct jump offset. Is there a way to write constants? + lsl r6, r0, #0x0 // case 0 + lsl r2, r1, #0x0 // case 1 + lsl r6, r1, #0x0 // case 2 + lsl r2, r2, #0x0 // case 3 + + // intended jump offset + // .short _02030738 - _02030730 - 2; case 0 + // .short _0203073C - _02030730 - 2; case 1 + // .short _02030740 - _02030730 - 2; case 2 + // .short _02030744 - _02030730 - 2; case 3 +_02030738: + mov r4, #0x20 + b _02030746 +_0203073C: + mov r4, #0x10 + b _02030746 +_02030740: + mov r4, #0x40 + b _02030746 +_02030744: + mov r4, #0x80 +_02030746: + ldr r0, =UNK_021C59F4 + ldr r5, [r0, #0x4] + ldr r0, =0x000005F8 + add r6, r5, r0 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r6, #0x0] + ldr r3, [r6, #0x4] + bl _ll_mul + ldr r3, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r3, r0 + adc r2, r1 + ldr r1, =0x000005F8 + mov r3, #0x0 + str r0, [r5, r1] + str r2, [r6, #0x4] + lsr r0, r2, #0x1c + lsl r2, r3, #0x4 + orr r2, r0 + add r0, r1, #0x0 + add r0, #0x35 + strb r2, [r5, r0] + ldr r0, =UNK_021C59F4 + add r1, #0x36 + ldr r0, [r0, #0x4] + strh r4, [r0, r1] +_0203077E: + ldr r2, =UNK_021C59F4 + ldr r1, =0x00000628 + ldr r5, [r2, #0x4] + mov r0, #0xf0 + ldrh r3, [r5, r1] + bic r3, r0 + strh r3, [r5, r1] + ldr r2, [r2, #0x4] + ldrh r0, [r2, r1] + add r0, r0, r4 + strh r0, [r2, r1] +_02030794: + pop {r3-r7, pc} + // clang-format on } #endif @@ -1569,7 +1580,6 @@ THUMB_FUNC void FUN_0203086C() { } - THUMB_FUNC u32 FUN_02030870(u8 *param0) { if (UNK_021C59F4.unk04->unk62A != 0) @@ -1830,8 +1840,6 @@ extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); - - THUMB_FUNC void FUN_02030C8C( s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) { @@ -2113,7 +2121,6 @@ THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); } - THUMB_FUNC void FUN_02031088() { if (UNK_021C59F4.unk04 != NULL) @@ -2324,25 +2331,73 @@ THUMB_FUNC void FUN_020312BC(u32 param0) #else THUMB_FUNC asm void FUN_020312BC(u32 param0) { - push{ r3 - r7, lr } sub sp, #0x20 add r4, r0, #0x0 add r0, sp, #0x10 add r1, sp, - #0x4 bl GF_RTC_CopyDateTime ldr r0, - = gMain ldr r6, [ sp, #0x10 ] mov r5, #0x0 lsr r7, r6, #0x1c lsl r5, r5, #0x4 ldr r1, - [ sp, #0xc ] ldr r0, [ r0, #0x2c ] lsl r6, r6, #0x4 add r3, r1, r0 ldr r0, - [ sp, #0x18 ] orr r5, r7 str r0, [ sp, #0x0 ] ldr r0, [ sp, #0x14 ] ldr r1, - [ sp, #0x4 ] add r6, r0, - r6 ldr r0, = 0x00000000 ldr r2, [ sp, #0x8 ] adc r0, r5 lsr r5, r6, #0x1b lsl r0, r0, - #0x5 orr r0, r5 ldr r5, [ sp, #0x0 ] lsl r6, r6, #0x5 add r6, r5, r6 ldr r5, - = 0x00000000 adc r5, r0 lsr r0, r6, #0x1b lsl r5, r5, #0x5 orr r5, r0 lsl r0, r6, - #0x5 add r6, r1, r0 ldr r1, = 0x00000000 adc r1, r5 lsr r0, r6, #0x1a lsl r1, r1, - #0x6 orr r1, r0 lsl r0, r6, #0x6 add r5, r2, r0 ldr r2, = 0x00000000 adc r2, - r1 lsr r0, r5, #0x1a lsl r1, r2, #0x6 orr r1, r0 lsl r0, r5, #0x6 add r2, r3, - r0 ldr r0, = 0x00000000 str r2, [ r4, #0x0 ] adc r0, r1 str r0, [ r4, #0x4 ] ldr r1, - = 0x6C078965 ldr r0, = 0x5D588B65 str r1, [ r4, #0x8 ] str r0, [ r4, #0xc ] ldr r0, - = 0x00269EC3 str r0, [ r4, #0x10 ] mov r0, #0x0 str r0, [ r4, #0x14 ] add sp, - #0x20 pop - { - r3 - r7, pc - } + // clang-format off + push {r3-r7, lr} + sub sp, #0x20 + add r4, r0, #0x0 + add r0, sp, #0x10 + add r1, sp, #0x4 + bl GF_RTC_CopyDateTime + ldr r0, =gMain + ldr r6, [sp, #0x10] + mov r5, #0x0 + lsr r7, r6, #0x1c + lsl r5, r5, #0x4 + ldr r1, [sp, #0xc] + ldr r0, [r0, #0x2c] + lsl r6, r6, #0x4 + add r3, r1, r0 + ldr r0, [sp, #0x18] + orr r5, r7 + str r0, [sp, #0x0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x4] + add r6, r0, r6 + ldr r0, =0x00000000 + ldr r2, [sp, #0x8] + adc r0, r5 + lsr r5, r6, #0x1b + lsl r0, r0, #0x5 + orr r0, r5 + ldr r5, [sp, #0x0] + lsl r6, r6, #0x5 + add r6, r5, r6 + ldr r5, =0x00000000 + adc r5, r0 + lsr r0, r6, #0x1b + lsl r5, r5, #0x5 + orr r5, r0 + lsl r0, r6, #0x5 + add r6, r1, r0 + ldr r1, =0x00000000 + adc r1, r5 + lsr r0, r6, #0x1a + lsl r1, r1, #0x6 + orr r1, r0 + lsl r0, r6, #0x6 + add r5, r2, r0 + ldr r2, =0x00000000 + adc r2, r1 + lsr r0, r5, #0x1a + lsl r1, r2, #0x6 + orr r1, r0 + lsl r0, r5, #0x6 + add r2, r3, r0 + ldr r0, =0x00000000 + str r2, [r4, #0x0] + adc r0, r1 + str r0, [r4, #0x4] + ldr r1, =0x6C078965 + ldr r0, =0x5D588B65 + str r1, [r4, #0x8] + str r0, [r4, #0xc] + ldr r0, =0x00269EC3 + str r0, [r4, #0x10] + mov r0, #0x0 + str r0, [r4, #0x14] + add sp, #0x20 + pop {r3-r7, pc} + // clang-format on } #endif -- cgit v1.2.3 From f85c9d736760dace9ce94560747c9985a3e93ca5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 19:21:51 +0200 Subject: fix warnings --- arm9/src/unk_0202F150.c | 307 ++++++++++++++++++++++-------------------------- include/unk_0202F150.h | 90 +++++++------- 2 files changed, 182 insertions(+), 215 deletions(-) diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 7973702c..62ae9437 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -11,10 +11,57 @@ vu8 UNK_02105D59 = 4; extern int FUN_02033534(); extern u32 FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); -extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); +extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct3 *param2); extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); -extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); -extern void FUN_0202D804(u32 *param0); +extern void FUN_0202D394(struct UnkStruct3 *param0, u8 *param1, u32 param2); +extern void FUN_0202D804(u8 *param0); +extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); +extern void FUN_0202D330(void (*param0)(int)); +extern u32 FUN_0202E66C(u32 param0, u32 param1); +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(u8 *param0); +extern u32 FUN_0202E9E8(u32 param0); +extern u32 FUN_0202F03C(); +extern u32 FUN_0202EE24(); +extern void FUN_02031CDC(); +extern void FUN_0202EBD0(u16 param0); +extern void FUN_0202ED70(u32 param0); +extern void FUN_020335F4(u32 param0); +extern void FUN_020315A4(); +extern void FUN_0202E538(); +extern u32 MOD04_021D78FC(void *param0, u32 param1); +extern u32 FUN_0202CBD4(); +extern void FUN_0202D4BC(void *param0); +extern int FUN_0202D400(s16 *param0, void *param1, u32 param2); +extern u32 FUN_0202D0D0(u8 *param0, u16 param1, u32 param2, void (*param3)(u32)); +extern u32 MOD04_021D79B4(void *param0, u32 param1); +extern void FUN_0202D3A4(struct UnkStruct3 *param0, u8 *param1, u32 param2, u32 param3); +extern int FUN_0202D498(void *param0); +extern u16 FUN_0202CB8C(); +extern s64 _ll_mul(s64, s64); +extern u32 FUN_0202D4E4(u8 *param0); +extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); +extern u32 FUN_0202D684(u8 *param0, u32 param1, u8 *param2, u32 param3, u32 param4, u32 param5); +extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, void *param3); +extern int FUN_0202D478(s16 *param0); +extern u32 FUN_0202D41C(s16 *param0); +extern s16 FUN_0202D9A0(u32 param0); +extern u32 FUN_0202DA04(u32 param0); +extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2); +extern u32 MOD04_021D8018(); +extern u32 FUN_0202EDF8(); +extern u16 FUN_0202D19C(); +extern void FUN_020334E8(u32 param0, u32 param1); +extern u32 FUN_0202EE60(); +extern u32 FUN_0202D884(u16 param0); +extern void FUN_0202F05C(); +extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); +extern void FUN_0202D830(u8 *param0, u32 param1); +extern u32 MOD04_021D8624(); THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) { @@ -22,7 +69,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) UNK_021C59F4.unk00 = 0; if (param0 != 0) { - u32 res = FUN_0202D858(FUN_02033534()) + 1; + u32 res = FUN_0202D858((u16)FUN_02033534()) + 1; if (UNK_021C59F4.unk04 != 0) { @@ -79,7 +126,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) FUN_0202F2F0(); } - FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); + FUN_020312BC(UNK_021C59F4.unk04->unk5F8); if (r4 == 0) { @@ -100,7 +147,7 @@ THUMB_FUNC void FUN_0202F2F0() UNK_021C59F4.unk04->unk67F = 0; UNK_021C59F4.unk04->unk680 = 0; - s32 res = FUN_0202D858(FUN_02033534()) + 1; + int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1; MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); @@ -122,7 +169,7 @@ THUMB_FUNC void FUN_0202F2F0() } MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, UNK_021C59F4.unk04->unk2D4, 6 << 6); for (i = 0; i < 0xc0; i++) { @@ -131,7 +178,7 @@ THUMB_FUNC void FUN_0202F2F0() } MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); - FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, UNK_021C59F4.unk04->unk04c, 0x42 << 2); UNK_021C59F4.unk04->unk000[0][0] = 0xff; UNK_021C59F4.unk04->unk000[1][0] = 0xff; @@ -188,7 +235,7 @@ THUMB_FUNC void FUN_0202F5A4() UNK_021C59F4.unk04->unk62C = 0; UNK_021C59F4.unk04->unk62D = 0; - s32 res = FUN_0202D858(FUN_02033534()) + 1; + int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1; MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); @@ -210,7 +257,7 @@ THUMB_FUNC void FUN_0202F5A4() } MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, UNK_021C59F4.unk04->unk2D4, 6 << 6); for (i = 0; i < 0xc0; i++) { @@ -219,7 +266,7 @@ THUMB_FUNC void FUN_0202F5A4() } MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); - FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, UNK_021C59F4.unk04->unk04c, 0x42 << 2); UNK_021C59F4.unk04->unk000[0][0] = 0xff; UNK_021C59F4.unk04->unk000[1][0] = 0xff; @@ -264,7 +311,7 @@ THUMB_FUNC void FUN_0202F5A4() UNK_021C59F4.unk04->unk688 = 0; } -THUMB_FUNC void FUN_0202F820(u32 param0) +THUMB_FUNC void FUN_0202F820(int param0) { UNK_021C59F4.unk04->unk65F[param0] = 0; @@ -292,21 +339,18 @@ THUMB_FUNC void FUN_0202F8D4() { for (int i = 1; i < 8; i++) { - if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) + if (FUN_02030E7C((u16)i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) { FUN_0202F820(i); } } } -THUMB_FUNC void FUN_0202F910(u32 param0) +THUMB_FUNC void FUN_0202F910(int param0) { FUN_0202F820(param0); } -extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); -extern void FUN_0202D330(void (*param0)(u32)); - THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) { u32 ret = 1; @@ -321,8 +365,6 @@ THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) return ret; } -extern u32 FUN_0202E66C(u32 param0, u32 param1); - THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { u32 ret = 1; @@ -423,13 +465,6 @@ THUMB_FUNC u32 FUN_0202FA48() 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; @@ -468,16 +503,11 @@ THUMB_FUNC void FUN_0202FA5C() } } -extern u32 FUN_0202E9E8(u32 param0); - THUMB_FUNC u32 FUN_0202FB18(u32 param0) { return FUN_0202E9E8(param0); } -extern u32 FUN_0202F03C(); -extern u32 FUN_0202EE24(); - THUMB_FUNC void FUN_0202FB20() { if (UNK_021C59F4.unk00 != 0) @@ -510,12 +540,6 @@ THUMB_FUNC void FUN_0202FB58() } } -extern void FUN_02031CDC(); -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(); @@ -598,8 +622,6 @@ THUMB_FUNC void FUN_0202FC80() UNK_021C59F4.unk00 = r4; } -extern void FUN_0202E538(); - THUMB_FUNC void FUN_0202FCA8() { u8 r4 = UNK_021C59F4.unk00; @@ -615,9 +637,6 @@ THUMB_FUNC void FUN_0202FCA8() UNK_021C59F4.unk00 = r4; } -extern u32 MOD04_021D78FC(void *param0, u32 param1); -extern u32 FUN_0202CBD4(); - THUMB_FUNC void FUN_0202FCCC() { if (UNK_021C59F4.unk04->unk683 != 0) @@ -722,9 +741,6 @@ THUMB_FUNC void FUN_0202FCCC() FUN_0203050C(); } -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) { @@ -858,8 +874,6 @@ _0202FEDE: } #endif -extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); - THUMB_FUNC void FUN_0202FEEC() { if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) @@ -867,8 +881,8 @@ THUMB_FUNC void FUN_0202FEEC() return; } - int st0 = FUN_02031228(FUN_02033534()); - int r6 = FUN_0202D858(FUN_02033534()) + 1; + int st0 = FUN_02031228((u16)FUN_02033534()); + int r6 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; if (UNK_02105D59 == 2 || UNK_02105D59 == 0) { @@ -897,7 +911,7 @@ THUMB_FUNC void FUN_0202FEEC() { for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) != 0) + if (FUN_02030E7C((u16)i) != 0) { UNK_021C59F4.unk04->unk638[i]++; } @@ -909,12 +923,12 @@ THUMB_FUNC void FUN_0202FEEC() FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); - UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; + UNK_021C59F4.unk04->unk680 = (u8)(1 - UNK_021C59F4.unk04->unk680); } for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) + if (FUN_02030E7C((u16)i) == 0 && FUN_0202FA28() == 1) { UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i * st0] = 0xff; } @@ -927,8 +941,6 @@ THUMB_FUNC void FUN_0202FEEC() } } -extern u32 MOD04_021D79B4(void *param0, u32 param1); - THUMB_FUNC void FUN_02030074() { if (UNK_021C59F4.unk04->unk683 != 0) @@ -1006,7 +1018,7 @@ THUMB_FUNC void FUN_02030074() { for (int r4 = 1; r4 < 8; r4++) { - if (FUN_02030E7C(r4) != 0) + if (FUN_02030E7C((u16)r4) != 0) { if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { @@ -1049,10 +1061,10 @@ THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) FUN_0203026C(param0, param1, param2); } -extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); - THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { +#pragma unused(param0) +#pragma unused(param2) UNK_021C59F4.unk04->unk634--; if (param1 == 0) { @@ -1086,22 +1098,21 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) UNK_021C59F4.unk04->unk682 = 0; if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - int st4 = FUN_0202D858(FUN_02033534()) + 1; + int r6 = FUN_02031228((u16)FUN_02033534()); + int st4 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; int r4 = 0; while (r4 < st4) { - u32 new; + if (param1[0] == 0xff) { - new = UNK_021C59F4.unk04->unk65C & ~(1 << r4); + UNK_021C59F4.unk04->unk65C &= ~(1 << r4); } else { - new = UNK_021C59F4.unk04->unk65C | (1 << r4); + UNK_021C59F4.unk04->unk65C |= (1 << r4); } - UNK_021C59F4.unk04->unk65C = new; if (param1[0] == 0xff) { @@ -1118,7 +1129,7 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) else { param1++; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6 - 1, 0x5E6); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, (u32)(r6 - 1), 0x5E6); param1 += r6 - 1; UNK_021C59F4.unk04->unk667[r4] = 0; @@ -1131,13 +1142,13 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) } UNK_021C59F4.unk04->unk65C = param1[1]; - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; + UNK_021C59F4.unk04->unk65C <<= 8; - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; + UNK_021C59F4.unk04->unk65C += param1[2]; FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } -THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) +THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2) { if (UNK_021C59F4.unk04->unk66F[param0] != 0) { @@ -1150,10 +1161,9 @@ THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) FUN_020303F4(param0, param1, param2); } -extern int FUN_0202D498(void *param0); - THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { +#pragma unused(param2) UNK_021C59F4.unk04->unk638[param0]--; if (param1 == 0) { @@ -1168,12 +1178,12 @@ THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) UNK_021C59F4.unk04->unk667[param0] = 0; if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); + int r6 = FUN_02031228((u16)FUN_02033534()); + FUN_0202D858((u16)FUN_02033534()); if ((param1[0] & 2) == 0) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, (u32)r6, 0x65E); } UNK_021C59F4.unk04->unk65F[param0]++; @@ -1210,8 +1220,6 @@ THUMB_FUNC void FUN_020304F0(u32 param0) ErrorHandling(); } -extern u16 FUN_0202CB8C(); - THUMB_FUNC void FUN_0203050C() { if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) @@ -1219,17 +1227,17 @@ THUMB_FUNC void FUN_0203050C() return; } - int r4 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); + int r4 = FUN_02031228((u16)FUN_02033534()); + FUN_0202D858((u16)FUN_02033534()); if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4); - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = (u8)(1 - UNK_021C59F4.unk04->unk67F); UNK_021C59F4.unk04->unk634++; return; } @@ -1255,13 +1263,13 @@ THUMB_FUNC void FUN_0203050C() UNK_02105D58++; if (FUN_0202D0D0( - UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) + UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4, 0xe, FUN_020304D4) == 0) { UNK_02105D58--; return; } - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = (u8)(1 - UNK_021C59F4.unk04->unk67F); UNK_021C59F4.unk04->unk634++; return; } @@ -1271,15 +1279,13 @@ THUMB_FUNC void FUN_0203050C() UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4); - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = (u8)(1 - UNK_021C59F4.unk04->unk67F); UNK_021C59F4.unk04->unk634++; } } -extern s64 _ll_mul(s64, s64); - #ifdef NONMATCHING THUMB_FUNC void FUN_02030674() { @@ -1548,11 +1554,11 @@ THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) { UNK_021C59F4.unk04->unk610[param1] = 0; - u32 r7 = param0[0] & 0x10; + int r7 = param0[0] & 0x10; if (r7 == 0x10) { - u8 r5 = param0[0] & 0xc; + u8 r5 = (u8)(param0[0] & 0xc); if (r5 == 0) { UNK_021C59F4.unk04->unk610[param1] |= 0x40; @@ -1570,7 +1576,7 @@ THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) UNK_021C59F4.unk04->unk610[param1] |= 0x10; } - UNK_021C59F4.unk04->unk620[param1] = (param0[0] >> 5) & 0x7; + UNK_021C59F4.unk04->unk620[param1] = (u8)((param0[0] >> 5) & 0x7); } return 1; @@ -1623,15 +1629,11 @@ THUMB_FUNC u32 FUN_02030870(u8 *param0) return 0; } -extern u32 FUN_0202D4E4(u8 *param0); -extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); - THUMB_FUNC u32 FUN_02030930(u8 *param0) { - int r5 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); + int r5 = FUN_02031228((u16)FUN_02033534()); + FUN_0202D858((u16)FUN_02033534()); - u8 r0; if (UNK_021C59F4.unk04->unk684 == 0) { param0[0] = 0; @@ -1660,7 +1662,7 @@ THUMB_FUNC u32 FUN_02030930(u8 *param0) { int st0[2]; st0[1] = r5 - 1; - st0[0] = param0 + 1; + st0[0] = (int)param0 + 1; if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) { UNK_021C59F4.unk04->unk684 = 1; @@ -1690,16 +1692,16 @@ THUMB_FUNC void FUN_02030A00(u8 *param0) } u16 res = FUN_0202CB8C(); - param0[2] = res >> 8; - param0[3] = res; + param0[2] = (u8)(res >> 8); + param0[3] = (u8)res; int st0[2]; st0[1] = 0xbb; - st0[0] = param0 + 5; + st0[0] = (int)param0 + 5; if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) { UNK_021C59F4.unk04->unk685 = 0; - param0[4] = 0xbb - st0[1]; + param0[4] = (u8)(0xbb - st0[1]); return; } @@ -1708,9 +1710,7 @@ THUMB_FUNC void FUN_02030A00(u8 *param0) param0[4] = 0xbb; } -extern u32 FUN_0202D684(u8 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); - -THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030A78(u32 param0, u8 *param1, u32 param2) { if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { @@ -1730,7 +1730,7 @@ THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u8 *param1, u32 param2) { if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { @@ -1750,7 +1750,7 @@ THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2) { if (FUN_02031190() != 0) { @@ -1781,7 +1781,7 @@ THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2) { if (FUN_02031190() != 0) { @@ -1812,7 +1812,7 @@ THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u8 *param1) { return FUN_02030BC4(param0, param1, 0); } @@ -1822,27 +1822,19 @@ THUMB_FUNC int FUN_02030C58() return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } -extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, u32 param3); - -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct2 *param4) { FUN_0202D934(param0, param1, param2, param3); - - *(u8 *)(param4 + 0xa) = 0xee; - *(u16 *)(param4 + 0x8) = 0xffff; - *(u32 *)(param4 + 0x4) = 0; - *(u32 *)(param4) = 0; + param4->unk0a = 0xee; + param4->unk08 = 0xffff; + param4->unk04 = 0; + param4->unk00 = 0; } -extern int FUN_0202D478(s16 *param0); -extern u32 FUN_0202D41C(s16 *param0); -extern s16 FUN_0202D9A0(u32 param0); -extern u32 FUN_0202DA04(u32 param0); -extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); - THUMB_FUNC void FUN_02030C8C( - s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) + s16 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct2 *param4) { +#pragma unused(param3) while (FUN_0202D478(param0) != 0) { @@ -1857,7 +1849,7 @@ THUMB_FUNC void FUN_02030C8C( } int st10 = param0[2]; - param4->unk0a = r7; + param4->unk0a = (u8)r7; int r4 = param4->unk08; if (r4 == 0xffff) { @@ -1872,17 +1864,17 @@ THUMB_FUNC void FUN_02030C8C( { if (FUN_0202D478(param0) < 1) { - param0[2] = st10; + param0[2] = (s16)st10; return; } - r4 = FUN_0202D41C(param0) << 8; + r4 = (int)FUN_0202D41C(param0) << 8; r4 += FUN_0202D41C(param0); st10 = param0[2]; } - param4->unk08 = r4; + param4->unk08 = (u16)r4; } if (FUN_0202DA04(r7) != 0) @@ -1896,7 +1888,7 @@ THUMB_FUNC void FUN_02030C8C( if (param4->unk04 != 0) { - MI_CpuCopy8(param2, param4->unk04 + param4->unk00, stc); + MI_CpuCopy8(param2, param4->unk04 + param4->unk00, (u32)stc); } if ((int)(param4->unk00 += stc) < (int)r4) @@ -1904,18 +1896,18 @@ THUMB_FUNC void FUN_02030C8C( continue; } - FUN_02030C70(param1, r7, r4, param4->unk04, param4); + FUN_02030C70(param1, r7, (u32)r4, param4->unk04, param4); } else { if (FUN_0202D478(param0) >= r4) { - FUN_0202D400(param0, param2, r4); - FUN_02030C70(param1, r7, r4, param2, param4); + FUN_0202D400(param0, param2, (u32)r4); + FUN_02030C70(param1, r7, (u32)r4, param2, param4); } else { - param0[2] = st10; + param0[2] = (s16)st10; return; } } @@ -1929,11 +1921,9 @@ THUMB_FUNC void FUN_02030DA4() if (UNK_021C59F4.unk04->unk68B == 0) { FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); - if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) + if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk470) > 0) { - UNK_021C59F4.unk04->unk470; - - FUN_02030C8C(&UNK_021C59F4.unk04->unk470, + FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, @@ -1949,7 +1939,7 @@ THUMB_FUNC void FUN_02030DFC() { if (UNK_021C59F4.unk04->unk68B == 0) { - int r7 = FUN_0202D858(FUN_02033534()) + 1; + int r7 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; int r4; for (r4 = 0; r4 < r7; r4++) { @@ -1958,18 +1948,16 @@ THUMB_FUNC void FUN_02030DFC() { FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], - r4, + (u32)r4, UNK_021C59F4.unk04->unk460, 0, - (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); + &UNK_021C59F4.unk04->unk58C[r4]); } } } } } -extern u32 MOD04_021D8018(); - THUMB_FUNC u32 FUN_02030E7C(u16 param0) { if (UNK_021C59F4.unk04 == NULL) @@ -2035,7 +2023,7 @@ THUMB_FUNC u32 FUN_02030F20() u32 r4 = 0; for (int i = 0; i < 8; i++) { - if (FUN_02030E7C(i) != 0) + if (FUN_02030E7C((u16)i) != 0) { r4++; } @@ -2044,8 +2032,6 @@ THUMB_FUNC u32 FUN_02030F20() return r4; } -extern u32 FUN_0202EDF8(); - THUMB_FUNC u32 FUN_02030F40() { if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) @@ -2099,13 +2085,13 @@ THUMB_FUNC u32 FUN_02030FE0() { if (UNK_021C59F4.unk04 != NULL) { - return UNK_021C59F4.unk04->unk628 & 0x8000; + return (u32)(UNK_021C59F4.unk04->unk628 & 0x8000); } return 1; } -THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_02031000(u32 param0, u8 *param1, u32 param2) { if (FUN_0202FA28() == 1) { @@ -2116,7 +2102,7 @@ THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0); } -THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_0203105C(u32 param0, u8 *param1, u32 param2) { FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); } @@ -2162,6 +2148,8 @@ THUMB_FUNC void FUN_02031088() THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) { +#pragma unused(param0) +#pragma unused(param1) if (FUN_02031190() == 0) { UNK_021C59F4.unk04->unk67B = 1; @@ -2171,6 +2159,8 @@ THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) { +#pragma unused(param0) +#pragma unused(param1) if (FUN_02031190() != 0) { UNK_021C59F4.unk04->unk67C = param2[0]; @@ -2180,6 +2170,8 @@ THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) { +#pragma unused(param0) +#pragma unused(param1) if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) { FUN_0202F9E0(*param2); @@ -2187,8 +2179,6 @@ THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) } } -extern u16 FUN_0202D19C(); - THUMB_FUNC u16 FUN_02031190() { if (UNK_021C59F4.unk04 != NULL) @@ -2198,7 +2188,7 @@ THUMB_FUNC u16 FUN_02031190() u32 res = MOD04_021D8018(); if (res != 0xffffffff) { - return res; + return (u16)res; } } else @@ -2230,9 +2220,6 @@ THUMB_FUNC u32 FUN_020311E8() return FUN_0202EE24(); } -extern void FUN_020334E8(u32 param0, u32 param1); -extern u32 FUN_0202EE60(); - THUMB_FUNC u32 FUN_020311F0() { if (FUN_02031280() != 0) @@ -2266,14 +2253,12 @@ THUMB_FUNC int FUN_02031228(u16 param0) THUMB_FUNC u32 FUN_02031248(u32 param0) { - return FUN_0202D858(param0) + 1; + return FUN_0202D858((u16)param0) + 1; } -extern u32 FUN_0202D884(u16 param0); - THUMB_FUNC u32 FUN_02031258(u32 param0) { - return FUN_0202D884(param0) + 1; + return FUN_0202D884((u16)param0) + 1; } THUMB_FUNC void FUN_02031268(u8 param0) @@ -2294,23 +2279,19 @@ THUMB_FUNC u8 FUN_02031280() return 0; } -extern void FUN_0202F05C(); - THUMB_FUNC void FUN_0203129C() { if (FUN_0202F03C() == 0 && FUN_02031190() == 0) { - u32 st0; + u8 st0; FUN_02030C4C(2, &st0); } FUN_0202F05C(); } -extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); - #ifdef NONMATCHING -THUMB_FUNC void FUN_020312BC(u32 param0) +THUMB_FUNC void FUN_020312BC(s64 *param0) { RTCDate st10; RTCTime st4; @@ -2329,7 +2310,7 @@ THUMB_FUNC void FUN_020312BC(u32 param0) (0x00000000 + r5) << 5; } #else -THUMB_FUNC asm void FUN_020312BC(u32 param0) +THUMB_FUNC asm void FUN_020312BC(s64 *param0) { // clang-format off push {r3-r7, lr} @@ -2401,8 +2382,6 @@ THUMB_FUNC asm void FUN_020312BC(u32 param0) } #endif -extern void FUN_0202D830(u8 *param0, u32 param1); - THUMB_FUNC void FUN_02031354(u32 param0) { FUN_0202D830(UNK_021C59F4.unk04->unk56C, param0); @@ -2444,8 +2423,6 @@ THUMB_FUNC u32 FUN_020313CC(u32 param0) return param0; } -extern u32 MOD04_021D8624(); - THUMB_FUNC u32 FUN_020313EC() { if (FUN_02033534() < 0x13) diff --git a/include/unk_0202F150.h b/include/unk_0202F150.h index 801fc3ed..2cb96f82 100644 --- a/include/unk_0202F150.h +++ b/include/unk_0202F150.h @@ -7,6 +7,22 @@ #include "main.h" #include "RTC_api.h" +struct UnkStruct3 { + u32 unk00; + u16 unk04; + u16 unk06; + u32 unk08; +}; + +struct UnkStruct2 +{ + u32 unk00; + void *unk04; + u16 unk08; + u8 unk0a; +}; + + struct UnkStruct1 { @@ -14,39 +30,19 @@ struct UnkStruct1 u8 unk04c[264]; u8 unk154[2][192]; u8 unk2D4[384]; - u32 unk454; - u32 unk458; - u32 unk45C; - u32 unk460; - u32 unk464; - u8 unk468[0x8]; - u32 unk470; - u8 unk474[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk47C[8]; - u32 unk4DC; - u8 unk4E0[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk4E8[8]; + void *unk454; + void *unk458; + void *unk45C; + void *unk460; + struct UnkStruct3 unk464; + struct UnkStruct3 unk470; + struct UnkStruct3 unk47C[8]; + struct UnkStruct3 unk4DC; + struct UnkStruct3 unk4E8[8]; u32 unk548; u8 unk54C[32]; u8 unk56C[32]; - struct - { - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; - u8 unk0b; - } unk58C[8]; + struct UnkStruct2 unk58C[8]; u32 unk5EC; u32 unk5F0; u16 unk5F4; @@ -90,21 +86,15 @@ struct UnkStruct1 u8 unk68B; }; -struct UnkStruct2 -{ - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; -}; + THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1); THUMB_FUNC void FUN_0202F2F0(); THUMB_FUNC void FUN_0202F5A4(); -THUMB_FUNC void FUN_0202F820(u32 param0); +THUMB_FUNC void FUN_0202F820(int param0); THUMB_FUNC void FUN_0202F8D4(); -THUMB_FUNC void FUN_0202F910(u32 param0); +THUMB_FUNC void FUN_0202F910(int param0); THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3); THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2); THUMB_FUNC void FUN_0202F984(); @@ -127,7 +117,7 @@ THUMB_FUNC void FUN_0202FEEC(); THUMB_FUNC void FUN_02030074(); THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2); THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2); +THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2); THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2); THUMB_FUNC void FUN_020304D4(u32 param0); THUMB_FUNC void FUN_020304F0(u32 param0); @@ -141,15 +131,15 @@ THUMB_FUNC void FUN_0203086C(); THUMB_FUNC u32 FUN_02030870(u8 *param0); THUMB_FUNC u32 FUN_02030930(u8 *param0); THUMB_FUNC void FUN_02030A00(u8 *param0); -THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2); -THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2); -THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2); -THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2); -THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1); +THUMB_FUNC u32 FUN_02030A78(u32 param0, u8 *param1, u32 param2); +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u8 *param1, u32 param2); +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2); +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2); +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u8 *param1); THUMB_FUNC int FUN_02030C58(); -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4); +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct2 *param4); THUMB_FUNC void FUN_02030C8C( - s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4); + s16 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct2 *param4); THUMB_FUNC void FUN_02030DA4(); THUMB_FUNC void FUN_02030DFC(); THUMB_FUNC u32 FUN_02030E7C(u16 param0); @@ -161,8 +151,8 @@ THUMB_FUNC u32 FUN_02030F88(u32 param0); THUMB_FUNC void FUN_02030FA8(); THUMB_FUNC void FUN_02030FC8(); THUMB_FUNC u32 FUN_02030FE0(); -THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2); -THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2); +THUMB_FUNC void FUN_02031000(u32 param0, u8 *param1, u32 param2); +THUMB_FUNC void FUN_0203105C(u32 param0, u8 *param1, u32 param2); THUMB_FUNC void FUN_02031088(); THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2); THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2); @@ -178,7 +168,7 @@ THUMB_FUNC u32 FUN_02031258(u32 param0); THUMB_FUNC void FUN_02031268(u8 param0); THUMB_FUNC u8 FUN_02031280(); THUMB_FUNC void FUN_0203129C(); -THUMB_FUNC void FUN_020312BC(u32 param0); +THUMB_FUNC void FUN_020312BC(s64 *param0); THUMB_FUNC void FUN_02031354(u32 param0); THUMB_FUNC u32 FUN_02031370(); THUMB_FUNC u32 FUN_02031388(); -- cgit v1.2.3 From f5eabfb0d118057d2533d3bd2558a560bd15a5ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 19:38:22 +0200 Subject: polish struct usage --- arm9/src/unk_0202F150.c | 38 +++++++++++++++++++------------------- include/unk_0202F150.h | 26 +++++++++++++------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 62ae9437..df7b3d37 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -2,7 +2,7 @@ struct { u8 unk00; - struct UnkStruct1 *unk04; + struct UnkStruct0202F150 *unk04; } UNK_021C59F4; vu8 UNK_02105D58 = 4; @@ -11,9 +11,9 @@ vu8 UNK_02105D59 = 4; extern int FUN_02033534(); extern u32 FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); -extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct3 *param2); +extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 *param2); extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); -extern void FUN_0202D394(struct UnkStruct3 *param0, u8 *param1, u32 param2); +extern void FUN_0202D394(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2); extern void FUN_0202D804(u8 *param0); extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); extern void FUN_0202D330(void (*param0)(int)); @@ -36,10 +36,10 @@ extern void FUN_0202E538(); extern u32 MOD04_021D78FC(void *param0, u32 param1); extern u32 FUN_0202CBD4(); extern void FUN_0202D4BC(void *param0); -extern int FUN_0202D400(s16 *param0, void *param1, u32 param2); +extern int FUN_0202D400(struct UnkStruct0202F150_sub1 *param0, void *param1, u32 param2); extern u32 FUN_0202D0D0(u8 *param0, u16 param1, u32 param2, void (*param3)(u32)); extern u32 MOD04_021D79B4(void *param0, u32 param1); -extern void FUN_0202D3A4(struct UnkStruct3 *param0, u8 *param1, u32 param2, u32 param3); +extern void FUN_0202D3A4(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2, u32 param3); extern int FUN_0202D498(void *param0); extern u16 FUN_0202CB8C(); extern s64 _ll_mul(s64, s64); @@ -47,8 +47,8 @@ extern u32 FUN_0202D4E4(u8 *param0); extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); extern u32 FUN_0202D684(u8 *param0, u32 param1, u8 *param2, u32 param3, u32 param4, u32 param5); extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, void *param3); -extern int FUN_0202D478(s16 *param0); -extern u32 FUN_0202D41C(s16 *param0); +extern int FUN_0202D478(struct UnkStruct0202F150_sub1 *param0); +extern u32 FUN_0202D41C(struct UnkStruct0202F150_sub1 *param0); extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2); @@ -77,7 +77,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) } FUN_02031480(0xf); - struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, sizeof(struct UnkStruct1)); + struct UnkStruct0202F150 *ptr = (struct UnkStruct0202F150 *)AllocFromHeap(0xf, sizeof(struct UnkStruct0202F150)); UNK_021C59F4.unk04 = ptr; MI_CpuFill8(ptr, 0, 0x68C); @@ -1822,7 +1822,7 @@ THUMB_FUNC int FUN_02030C58() return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct2 *param4) +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4) { FUN_0202D934(param0, param1, param2, param3); param4->unk0a = 0xee; @@ -1832,7 +1832,7 @@ THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, s } THUMB_FUNC void FUN_02030C8C( - s16 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct2 *param4) + struct UnkStruct0202F150_sub1 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct0202F150_sub2 *param4) { #pragma unused(param3) while (FUN_0202D478(param0) != 0) @@ -1848,7 +1848,7 @@ THUMB_FUNC void FUN_02030C8C( } } - int st10 = param0[2]; + int st10 = param0->unk04; param4->unk0a = (u8)r7; int r4 = param4->unk08; if (r4 == 0xffff) @@ -1864,14 +1864,14 @@ THUMB_FUNC void FUN_02030C8C( { if (FUN_0202D478(param0) < 1) { - param0[2] = (s16)st10; + param0->unk04 = (s16)st10; return; } r4 = (int)FUN_0202D41C(param0) << 8; r4 += FUN_0202D41C(param0); - st10 = param0[2]; + st10 = param0->unk04; } param4->unk08 = (u16)r4; @@ -1907,7 +1907,7 @@ THUMB_FUNC void FUN_02030C8C( } else { - param0[2] = (s16)st10; + param0->unk04 = (s16)st10; return; } } @@ -1921,13 +1921,13 @@ THUMB_FUNC void FUN_02030DA4() if (UNK_021C59F4.unk04->unk68B == 0) { FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); - if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk470) > 0) + if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) { - FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk470, + FUN_02030C8C(&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, - (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); + (struct UnkStruct0202F150_sub2 *)&UNK_021C59F4.unk04->unk5EC); } } } @@ -1944,10 +1944,10 @@ THUMB_FUNC void FUN_02030DFC() for (r4 = 0; r4 < r7; r4++) { FUN_0202D4BC(&UNK_021C59F4.unk04->unk4E8[r4]); - if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) + if (FUN_0202D478(&UNK_021C59F4.unk04->unk4E8[r4]) > 0) { - FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], + FUN_02030C8C(&UNK_021C59F4.unk04->unk4E8[r4], (u32)r4, UNK_021C59F4.unk04->unk460, 0, diff --git a/include/unk_0202F150.h b/include/unk_0202F150.h index 2cb96f82..3b8e90a2 100644 --- a/include/unk_0202F150.h +++ b/include/unk_0202F150.h @@ -7,14 +7,14 @@ #include "main.h" #include "RTC_api.h" -struct UnkStruct3 { +struct UnkStruct0202F150_sub1 { u32 unk00; - u16 unk04; - u16 unk06; + s16 unk04; + s16 unk06; u32 unk08; }; -struct UnkStruct2 +struct UnkStruct0202F150_sub2 { u32 unk00; void *unk04; @@ -24,7 +24,7 @@ struct UnkStruct2 -struct UnkStruct1 +struct UnkStruct0202F150 { u8 unk000[2][38]; u8 unk04c[264]; @@ -34,15 +34,15 @@ struct UnkStruct1 void *unk458; void *unk45C; void *unk460; - struct UnkStruct3 unk464; - struct UnkStruct3 unk470; - struct UnkStruct3 unk47C[8]; - struct UnkStruct3 unk4DC; - struct UnkStruct3 unk4E8[8]; + struct UnkStruct0202F150_sub1 unk464; + struct UnkStruct0202F150_sub1 unk470; + struct UnkStruct0202F150_sub1 unk47C[8]; + struct UnkStruct0202F150_sub1 unk4DC; + struct UnkStruct0202F150_sub1 unk4E8[8]; u32 unk548; u8 unk54C[32]; u8 unk56C[32]; - struct UnkStruct2 unk58C[8]; + struct UnkStruct0202F150_sub2 unk58C[8]; u32 unk5EC; u32 unk5F0; u16 unk5F4; @@ -137,9 +137,9 @@ THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2); THUMB_FUNC u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2); THUMB_FUNC u32 FUN_02030C4C(u32 param0, u8 *param1); THUMB_FUNC int FUN_02030C58(); -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct2 *param4); +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4); THUMB_FUNC void FUN_02030C8C( - s16 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct2 *param4); + struct UnkStruct0202F150_sub1 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct0202F150_sub2 *param4); THUMB_FUNC void FUN_02030DA4(); THUMB_FUNC void FUN_02030DFC(); THUMB_FUNC u32 FUN_02030E7C(u16 param0); -- cgit v1.2.3 From 228f18356cffa8cf51bc7cc655569b50d5e7bf13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 20:57:11 +0200 Subject: fix global.inc --- arm9/global.inc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arm9/global.inc b/arm9/global.inc index cfb7de83..9df9973e 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8513,4 +8513,7 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon - +.extern FUN_02025484 +.extern FUN_02025490 +.extern FUN_020254A0 +.extern FUN_020254B4 -- cgit v1.2.3 From c34e74ae7cdd91bef14cf5f160329b5cbf3c9504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 23:24:10 +0200 Subject: formatting --- arm9/src/unk_0202F150.c | 19 +++++++++++++------ include/unk_0202F150.h | 34 +++++++++++++++------------------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index df7b3d37..23a7de85 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -77,7 +77,8 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) } FUN_02031480(0xf); - struct UnkStruct0202F150 *ptr = (struct UnkStruct0202F150 *)AllocFromHeap(0xf, sizeof(struct UnkStruct0202F150)); + struct UnkStruct0202F150 *ptr = + (struct UnkStruct0202F150 *)AllocFromHeap(0xf, sizeof(struct UnkStruct0202F150)); UNK_021C59F4.unk04 = ptr; MI_CpuFill8(ptr, 0, 0x68C); @@ -1262,8 +1263,10 @@ THUMB_FUNC void FUN_0203050C() { UNK_02105D58++; - if (FUN_0202D0D0( - UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4, 0xe, FUN_020304D4) == 0) + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], + (u16)r4, + 0xe, + FUN_020304D4) == 0) { UNK_02105D58--; return; @@ -1822,7 +1825,8 @@ THUMB_FUNC int FUN_02030C58() return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4) +THUMB_FUNC void FUN_02030C70( + u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4) { FUN_0202D934(param0, param1, param2, param3); param4->unk0a = 0xee; @@ -1831,8 +1835,11 @@ THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, s param4->unk00 = 0; } -THUMB_FUNC void FUN_02030C8C( - struct UnkStruct0202F150_sub1 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct0202F150_sub2 *param4) +THUMB_FUNC void FUN_02030C8C(struct UnkStruct0202F150_sub1 *param0, + u32 param1, + void *param2, + u32 param3, + struct UnkStruct0202F150_sub2 *param4) { #pragma unused(param3) while (FUN_0202D478(param0) != 0) diff --git a/include/unk_0202F150.h b/include/unk_0202F150.h index 3b8e90a2..3996c1c8 100644 --- a/include/unk_0202F150.h +++ b/include/unk_0202F150.h @@ -3,15 +3,16 @@ #include "global.h" #include "MI_memory.h" +#include "RTC_api.h" #include "heap.h" #include "main.h" -#include "RTC_api.h" -struct UnkStruct0202F150_sub1 { - u32 unk00; - s16 unk04; - s16 unk06; - u32 unk08; +struct UnkStruct0202F150_sub1 +{ + u32 unk00; + s16 unk04; + s16 unk06; + u32 unk08; }; struct UnkStruct0202F150_sub2 @@ -22,8 +23,6 @@ struct UnkStruct0202F150_sub2 u8 unk0a; }; - - struct UnkStruct0202F150 { u8 unk000[2][38]; @@ -86,9 +85,6 @@ struct UnkStruct0202F150 u8 unk68B; }; - - - THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1); THUMB_FUNC void FUN_0202F2F0(); THUMB_FUNC void FUN_0202F5A4(); @@ -137,9 +133,13 @@ THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2); THUMB_FUNC u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2); THUMB_FUNC u32 FUN_02030C4C(u32 param0, u8 *param1); THUMB_FUNC int FUN_02030C58(); -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4); -THUMB_FUNC void FUN_02030C8C( - struct UnkStruct0202F150_sub1 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct0202F150_sub2 *param4); +THUMB_FUNC void FUN_02030C70( + u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4); +THUMB_FUNC void FUN_02030C8C(struct UnkStruct0202F150_sub1 *param0, + u32 param1, + void *param2, + u32 param3, + struct UnkStruct0202F150_sub2 *param4); THUMB_FUNC void FUN_02030DA4(); THUMB_FUNC void FUN_02030DFC(); THUMB_FUNC u32 FUN_02030E7C(u16 param0); @@ -181,8 +181,4 @@ THUMB_FUNC u32 FUN_02031438(); THUMB_FUNC void FUN_02031454(); THUMB_FUNC void FUN_02031468(); - - - -#endif //POKEDIAMOND_UNK_0202F150_H - +#endif // POKEDIAMOND_UNK_0202F150_H -- cgit v1.2.3