diff options
author | Akira Akashi <rubenru09@aol.com> | 2021-08-15 09:13:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-15 09:13:57 +0100 |
commit | a6b9c13d97e130e43c774f81c383ad452811ef75 (patch) | |
tree | 0364bcca92f61e8aea195b1459774d2f494f05b8 | |
parent | 3b396519495ce258e203e9cdec5716406b450711 (diff) | |
parent | ee3f5159550b154ea8b5c01b518756638eb5c4a0 (diff) |
Merge pull request #445 from remicalixte/unk_02008DEC
decompile unk_02008DEC.s
-rw-r--r-- | arm9/asm/unk_02008DEC.s | 2280 | ||||
-rw-r--r-- | arm9/src/unk_02008AA4.c | 46 | ||||
-rw-r--r-- | arm9/src/unk_02008DEC.c | 1118 | ||||
-rw-r--r-- | arm9/src/unk_0200BB14.c | 196 | ||||
-rw-r--r-- | include/unk_02008AA4.h | 24 | ||||
-rw-r--r-- | include/unk_02008DEC.h | 285 | ||||
-rw-r--r-- | include/unk_0200BB14.h | 77 |
7 files changed, 1555 insertions, 2471 deletions
diff --git a/arm9/asm/unk_02008DEC.s b/arm9/asm/unk_02008DEC.s deleted file mode 100644 index f257d2c8..00000000 --- a/arm9/asm/unk_02008DEC.s +++ /dev/null @@ -1,2280 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02008DEC -FUN_02008DEC: ; 0x02008DEC - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - str r2, [sp, #0x0] - add r0, r2, #0x0 - mov r1, #0x14 - bl AllocFromHeap - add r4, r0, #0x0 - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl FUN_02020C44 - str r0, [r4, #0x0] - mov r0, #0xc - add r7, r5, #0x0 - mul r7, r0 - ldr r0, [sp, #0x0] - add r1, r7, #0x0 - bl AllocFromHeap - mov r1, #0x0 - add r2, r7, #0x0 - str r0, [r4, #0x4] - bl memset - str r5, [r4, #0x8] - mov r0, #0x0 - str r0, [r4, #0xc] - str r6, [r4, #0x10] - add r0, r4, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02008E2C -FUN_02008E2C: ; 0x02008E2C - push {r4, lr} - add r4, r0, #0x0 - bne _02008E36 - bl GF_AssertFail -_02008E36: - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _02008E40 - bl GF_AssertFail -_02008E40: - ldr r0, [r4, #0x4] - cmp r0, #0x0 - bne _02008E4A - bl GF_AssertFail -_02008E4A: - add r0, r4, #0x0 - bl FUN_020094C4 - ldr r0, [r4, #0x0] - bl FUN_02020C90 - mov r0, #0x0 - str r0, [r4, #0x0] - ldr r0, [r4, #0x4] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x4] - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start FUN_02008E6C -FUN_02008E6C: ; 0x02008E6C - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - cmp r5, #0x0 - bne _02008E80 - bl GF_AssertFail -_02008E80: - cmp r4, #0x0 - bne _02008E88 - bl GF_AssertFail -_02008E88: - ldr r0, [r4, #0x4] - cmp r0, r6 - bgt _02008E92 - bl GF_AssertFail -_02008E92: - ldr r1, [r5, #0x10] - ldr r0, [r4, #0x8] - cmp r1, r0 - beq _02008E9E - bl GF_AssertFail -_02008E9E: - add r0, r5, #0x0 - bl FUN_020097D0 - str r0, [sp, #0x1c] - cmp r0, #0x0 - bne _02008EAE - bl GF_AssertFail -_02008EAE: - ldrb r0, [r4, #0xc] - cmp r0, #0x0 - bne _02008EEA - ldr r2, [r4, #0x0] - mov r0, #0x4c - add r1, r6, #0x0 - mul r1, r0 - add r6, r2, r1 - ldr r1, [r2, r1] - add r0, r5, #0x0 - bl FUN_0200945C - cmp r0, #0x1 - beq _02008ECE - bl GF_AssertFail -_02008ECE: - ldr r0, [r6, #0x44] - ldr r1, [sp, #0x1c] - str r0, [sp, #0x0] - ldr r0, [r6, #0x48] - add r2, r6, #0x4 - str r0, [sp, #0x4] - ldr r0, [r4, #0x8] - str r0, [sp, #0x8] - str r7, [sp, #0xc] - ldr r3, [r6, #0x0] - add r0, r5, #0x0 - bl FUN_0200994C - b _02008F28 -_02008EEA: - mov r0, #0x18 - ldr r1, [r4, #0x0] - mul r0, r6 - add r6, r1, r0 - ldr r1, [r6, #0xc] - add r0, r5, #0x0 - bl FUN_0200945C - cmp r0, #0x1 - beq _02008F02 - bl GF_AssertFail -_02008F02: - ldr r0, [r6, #0x8] - ldr r1, [sp, #0x1c] - str r0, [sp, #0x0] - ldr r0, [r6, #0xc] - str r0, [sp, #0x4] - ldr r0, [r6, #0x10] - str r0, [sp, #0x8] - ldr r0, [r6, #0x14] - str r0, [sp, #0xc] - ldr r0, [r4, #0x8] - str r0, [sp, #0x10] - str r7, [sp, #0x14] - mov r0, #0x0 - str r0, [sp, #0x18] - ldr r2, [r6, #0x0] - ldr r3, [r6, #0x4] - add r0, r5, #0x0 - bl FUN_02009978 -_02008F28: - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - ldr r0, [sp, #0x1c] - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_02008F34 -FUN_02008F34: ; 0x02008F34 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _02008F48 - bl GF_AssertFail -_02008F48: - ldr r0, [r5, #0x10] - cmp r0, #0x0 - beq _02008F52 - bl GF_AssertFail -_02008F52: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02008F60 - bl GF_AssertFail -_02008F60: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - mov r1, #0x0 - str r0, [sp, #0x8] - str r1, [sp, #0xc] - ldr r0, [sp, #0x40] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - str r1, [sp, #0x18] - ldr r3, [sp, #0x1c] - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl FUN_02009978 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02008F90 -FUN_02008F90: ; 0x02008F90 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _02008FA4 - bl GF_AssertFail -_02008FA4: - ldr r0, [r5, #0x10] - cmp r0, #0x0 - beq _02008FAE - bl GF_AssertFail -_02008FAE: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02008FBC - bl GF_AssertFail -_02008FBC: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_02009978 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_02008FEC -FUN_02008FEC: ; 0x02008FEC - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _02009000 - bl GF_AssertFail -_02009000: - ldr r0, [r5, #0x10] - cmp r0, #0x1 - beq _0200900A - bl GF_AssertFail -_0200900A: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02009018 - bl GF_AssertFail -_02009018: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x14] - mov r0, #0x0 - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_02009978 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200904C -FUN_0200904C: ; 0x0200904C - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _02009060 - bl GF_AssertFail -_02009060: - ldr r0, [r5, #0x10] - cmp r0, #0x1 - beq _0200906A - bl GF_AssertFail -_0200906A: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02009078 - bl GF_AssertFail -_02009078: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x48] - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_02009978 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020090AC -FUN_020090AC: ; 0x020090AC - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _020090C0 - bl GF_AssertFail -_020090C0: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _020090CE - bl GF_AssertFail -_020090CE: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - mov r1, #0x0 - str r1, [sp, #0x8] - ldr r0, [sp, #0x3c] - str r1, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [sp, #0x40] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x14] - str r1, [sp, #0x18] - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl FUN_02009978 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_020090FC -FUN_020090FC: ; 0x020090FC - push {r4-r7, lr} - sub sp, #0x24 - add r5, r0, #0x0 - add r4, r1, #0x0 - str r2, [sp, #0x1c] - str r3, [sp, #0x20] - cmp r5, #0x0 - bne _02009110 - bl GF_AssertFail -_02009110: - ldr r0, [r5, #0x10] - cmp r0, #0x0 - beq _0200911A - bl GF_AssertFail -_0200911A: - cmp r4, #0x0 - bne _02009122 - bl GF_AssertFail -_02009122: - ldr r0, [r4, #0x4] - cmp r0, #0x0 - beq _0200912C - bl GF_AssertFail -_0200912C: - add r0, r4, #0x0 - bl FUN_02009530 - add r6, r0, #0x0 - add r0, r4, #0x0 - bl FUN_020095E4 - add r7, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02009490 - ldr r0, [sp, #0x38] - mov r1, #0x0 - str r0, [sp, #0x0] - str r6, [sp, #0x4] - str r7, [sp, #0x8] - str r1, [sp, #0xc] - ldr r0, [sp, #0x3c] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - str r1, [sp, #0x18] - ldr r2, [sp, #0x1c] - ldr r3, [sp, #0x20] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02009978 - add sp, #0x24 - pop {r4-r7, pc} - - thumb_func_start FUN_02009168 -FUN_02009168: ; 0x02009168 - push {r3-r7, lr} - sub sp, #0x28 - add r5, r0, #0x0 - add r4, r1, #0x0 - str r2, [sp, #0x1c] - str r3, [sp, #0x20] - cmp r5, #0x0 - bne _0200917C - bl GF_AssertFail -_0200917C: - ldr r0, [r5, #0x10] - cmp r0, #0x1 - beq _02009186 - bl GF_AssertFail -_02009186: - cmp r4, #0x0 - bne _0200918E - bl GF_AssertFail -_0200918E: - ldr r0, [r4, #0x4] - cmp r0, #0x1 - beq _02009198 - bl GF_AssertFail -_02009198: - add r0, r4, #0x0 - bl FUN_02009530 - add r6, r0, #0x0 - add r0, r4, #0x0 - bl FUN_020095E4 - add r7, r0, #0x0 - add r0, r4, #0x0 - bl FUN_02009610 - str r0, [sp, #0x24] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02009490 - ldr r0, [sp, #0x40] - ldr r2, [sp, #0x1c] - str r0, [sp, #0x0] - str r6, [sp, #0x4] - ldr r0, [sp, #0x24] - str r7, [sp, #0x8] - str r0, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x44] - ldr r3, [sp, #0x20] - str r0, [sp, #0x14] - mov r0, #0x0 - str r0, [sp, #0x18] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02009978 - add sp, #0x28 - pop {r3-r7, pc} - - thumb_func_start FUN_020091E0 -FUN_020091E0: ; 0x020091E0 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _020091F4 - bl GF_AssertFail -_020091F4: - ldr r0, [r5, #0x10] - cmp r0, #0x0 - beq _020091FE - bl GF_AssertFail -_020091FE: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _0200920C - bl GF_AssertFail -_0200920C: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - mov r1, #0x0 - str r0, [sp, #0x8] - str r1, [sp, #0xc] - ldr r0, [sp, #0x40] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - str r1, [sp, #0x18] - ldr r3, [sp, #0x1c] - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl FUN_020099B0 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0200923C -FUN_0200923C: ; 0x0200923C - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _02009250 - bl GF_AssertFail -_02009250: - ldr r0, [r5, #0x10] - cmp r0, #0x0 - beq _0200925A - bl GF_AssertFail -_0200925A: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02009268 - bl GF_AssertFail -_02009268: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_020099B0 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_02009298 -FUN_02009298: ; 0x02009298 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _020092AC - bl GF_AssertFail -_020092AC: - ldr r0, [r5, #0x10] - cmp r0, #0x1 - beq _020092B6 - bl GF_AssertFail -_020092B6: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _020092C4 - bl GF_AssertFail -_020092C4: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x14] - mov r0, #0x0 - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_020099B0 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020092F8 -FUN_020092F8: ; 0x020092F8 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _0200930C - bl GF_AssertFail -_0200930C: - ldr r0, [r5, #0x10] - cmp r0, #0x1 - beq _02009316 - bl GF_AssertFail -_02009316: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _02009324 - bl GF_AssertFail -_02009324: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x8] - ldr r0, [sp, #0x40] - add r1, r6, #0x0 - str r0, [sp, #0xc] - mov r0, #0x1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x44] - add r2, r7, #0x0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x48] - str r0, [sp, #0x18] - add r0, r5, #0x0 - bl FUN_020099B0 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02009358 -FUN_02009358: ; 0x02009358 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - add r7, r1, #0x0 - add r4, r3, #0x0 - str r2, [sp, #0x1c] - cmp r5, #0x0 - bne _0200936C - bl GF_AssertFail -_0200936C: - add r0, r5, #0x0 - bl FUN_020097D0 - add r6, r0, #0x0 - bne _0200937A - bl GF_AssertFail -_0200937A: - ldr r0, [sp, #0x38] - str r4, [sp, #0x0] - str r0, [sp, #0x4] - mov r1, #0x0 - str r1, [sp, #0x8] - ldr r0, [sp, #0x3c] - str r1, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [sp, #0x40] - ldr r3, [sp, #0x1c] - str r0, [sp, #0x14] - str r1, [sp, #0x18] - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl FUN_020099B0 - ldr r0, [r5, #0xc] - add r0, r0, #0x1 - str r0, [r5, #0xc] - add r0, r6, #0x0 - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_020093A8 -FUN_020093A8: ; 0x020093A8 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - cmp r5, #0x0 - bne _020093BC - bl GF_AssertFail -_020093BC: - cmp r4, #0x0 - bne _020093C4 - bl GF_AssertFail -_020093C4: - str r6, [sp, #0x0] - str r7, [sp, #0x4] - ldr r3, [r4, #0x4] - add r0, r5, #0x0 - add r1, r4, #0x0 - mov r2, #0x0 - bl FUN_020093DC - ldr r0, [r4, #0x4] - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020093DC -FUN_020093DC: ; 0x020093DC - push {r3-r7, lr} - sub sp, #0x8 - str r0, [sp, #0x0] - add r5, r2, #0x0 - ldr r0, [sp, #0x24] - add r7, r5, r3 - str r1, [sp, #0x4] - ldr r4, [sp, #0x20] - str r0, [sp, #0x24] - cmp r5, r7 - bge _02009420 - add r6, r4, #0x0 - add r6, #0x8 -_020093F6: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - ldr r3, [sp, #0x24] - add r2, r5, #0x0 - bl FUN_02008E6C - cmp r4, #0x0 - beq _0200941A - ldr r2, [r4, #0x8] - ldr r1, [r4, #0x4] - cmp r1, r2 - ble _0200941A - ldr r1, [r4, #0x0] - lsl r2, r2, #0x2 - str r0, [r1, r2] - ldr r0, [r6, #0x0] - add r0, r0, #0x1 - str r0, [r6, #0x0] -_0200941A: - add r5, r5, #0x1 - cmp r5, r7 - blt _020093F6 -_02009420: - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02009424 -FUN_02009424: ; 0x02009424 - push {r4-r6, lr} - add r6, r1, #0x0 - add r5, r0, #0x0 - add r0, r6, #0x0 - mov r1, #0xc - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r6, #0x0 - lsl r1, r5, #0x2 - bl AllocFromHeap - str r0, [r4, #0x0] - str r5, [r4, #0x4] - mov r0, #0x0 - str r0, [r4, #0x8] - add r0, r4, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02009448 -FUN_02009448: ; 0x02009448 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - bl FreeToHeap - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0200945C -FUN_0200945C: ; 0x0200945C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _0200946A - bl GF_AssertFail -_0200946A: - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - bl FUN_02020CB0 - pop {r3-r5, pc} - - thumb_func_start FUN_02009474 -FUN_02009474: ; 0x02009474 - push {r4, lr} - add r4, r0, #0x0 - bne _0200947E - bl GF_AssertFail -_0200947E: - add r0, r4, #0x0 - bl FUN_02009920 - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl FUN_02020E1C - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02009490 -FUN_02009490: ; 0x02009490 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _0200949E - bl GF_AssertFail -_0200949E: - ldr r0, [r5, #0x4] - cmp r0, #0x0 - bne _020094A8 - bl GF_AssertFail -_020094A8: - add r0, r4, #0x0 - bl FUN_02009920 - ldr r0, [r5, #0x0] - ldr r1, [r4, #0x0] - bl FUN_02020D68 - mov r0, #0x0 - str r0, [r4, #0x0] - ldr r0, [r5, #0xc] - sub r0, r0, #0x1 - str r0, [r5, #0xc] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020094C4 -FUN_020094C4: ; 0x020094C4 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r0, [r5, #0x8] - mov r6, #0x0 - cmp r0, #0x0 - ble _020094EC - add r4, r6, #0x0 -_020094D2: - ldr r1, [r5, #0x4] - ldr r0, [r1, r4] - cmp r0, #0x0 - beq _020094E2 - add r0, r5, #0x0 - add r1, r1, r4 - bl FUN_02009490 -_020094E2: - ldr r0, [r5, #0x8] - add r6, r6, #0x1 - add r4, #0xc - cmp r6, r0 - blt _020094D2 -_020094EC: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020094F0 -FUN_020094F0: ; 0x020094F0 - push {r3-r7, lr} - add r5, r0, #0x0 - add r7, r1, #0x0 - cmp r5, #0x0 - bne _020094FE - bl GF_AssertFail -_020094FE: - ldr r0, [r5, #0x8] - mov r6, #0x0 - cmp r0, #0x0 - ble _0200952C - add r4, r6, #0x0 -_02009508: - ldr r0, [r5, #0x4] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009522 - bl FUN_02020E38 - cmp r0, r7 - bne _02009522 - mov r0, #0xc - ldr r1, [r5, #0x4] - mul r0, r6 - add r0, r1, r0 - pop {r3-r7, pc} -_02009522: - ldr r0, [r5, #0x8] - add r6, r6, #0x1 - add r4, #0xc - cmp r6, r0 - blt _02009508 -_0200952C: - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02009530 -FUN_02009530: ; 0x02009530 - push {r4, lr} - add r4, r0, #0x0 - bne _0200953A - bl GF_AssertFail -_0200953A: - ldr r0, [r4, #0x0] - bl FUN_02020E38 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02009544 -FUN_02009544: ; 0x02009544 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x0 - beq _02009552 - bl GF_AssertFail -_02009552: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_0200955C -FUN_0200955C: ; 0x0200955C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x1 - beq _0200956A - bl GF_AssertFail -_0200956A: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_02009574 -FUN_02009574: ; 0x02009574 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x2 - beq _02009582 - bl GF_AssertFail -_02009582: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_0200958C -FUN_0200958C: ; 0x0200958C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x3 - beq _0200959A - bl GF_AssertFail -_0200959A: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_020095A4 -FUN_020095A4: ; 0x020095A4 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x4 - beq _020095B2 - bl GF_AssertFail -_020095B2: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_020095BC -FUN_020095BC: ; 0x020095BC - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x4] - cmp r0, #0x5 - beq _020095CA - bl GF_AssertFail -_020095CA: - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x0] - pop {r4, pc} - - thumb_func_start FUN_020095D4 -FUN_020095D4: ; 0x020095D4 - push {r4, lr} - add r4, r0, #0x0 - bne _020095DE - bl GF_AssertFail -_020095DE: - ldr r0, [r4, #0x4] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020095E4 -FUN_020095E4: ; 0x020095E4 - push {r4, lr} - add r4, r0, #0x0 - bne _020095EE - bl GF_AssertFail -_020095EE: - ldr r0, [r4, #0x4] - cmp r0, #0x0 - bne _020095FE - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x4] - pop {r4, pc} -_020095FE: - cmp r0, #0x1 - bne _0200960C - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x4] - pop {r4, pc} -_0200960C: - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_02009610 -FUN_02009610: ; 0x02009610 - push {r4, lr} - add r4, r0, #0x0 - bne _0200961A - bl GF_AssertFail -_0200961A: - ldr r0, [r4, #0x4] - cmp r0, #0x1 - bne _0200962A - add r0, r4, #0x0 - bl FUN_02009934 - ldr r0, [r0, #0x8] - pop {r4, pc} -_0200962A: - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02009630 -FUN_02009630: ; 0x02009630 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _0200963E - bl GF_AssertFail -_0200963E: - ldr r0, [r5, #0x4] - cmp r0, #0x0 - bne _0200964C - add r0, r5, #0x0 - bl FUN_02009934 - str r4, [r0, #0x4] -_0200964C: - ldr r0, [r5, #0x4] - cmp r0, #0x1 - bne _0200965A - add r0, r5, #0x0 - bl FUN_02009934 - str r4, [r0, #0x4] -_0200965A: - pop {r3-r5, pc} - - thumb_func_start FUN_0200965C -FUN_0200965C: ; 0x0200965C - mov r0, #0x10 - bx lr - - thumb_func_start FUN_02009660 -FUN_02009660: ; 0x02009660 - lsl r1, r1, #0x4 - add r0, r0, r1 - bx lr - .balign 4 - - thumb_func_start FUN_02009668 -FUN_02009668: ; 0x02009668 - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - add r6, r2, #0x0 - cmp r4, #0x0 - bne _02009678 - bl GF_AssertFail -_02009678: - ldr r0, [r5, #0x0] - str r0, [r4, #0x8] - mov r0, #0x1 - strb r0, [r4, #0xc] - add r0, r5, #0x4 - bl FUN_020099E8 - add r2, r0, #0x0 - str r0, [r4, #0x4] - cmp r2, #0x0 - ble _0200969A - mov r1, #0x18 - add r0, r6, #0x0 - mul r1, r2 - bl AllocFromHeap - b _0200969C -_0200969A: - mov r0, #0x0 -_0200969C: - str r0, [r4, #0x0] - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _020096B0 - ldr r3, [r4, #0x4] - mov r2, #0x18 - add r1, r5, #0x4 - mul r2, r3 - bl memcpy -_020096B0: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020096B4 -FUN_020096B4: ; 0x020096B4 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - beq _020096C2 - bl FreeToHeap -_020096C2: - mov r0, #0x0 - str r0, [r4, #0x0] - str r0, [r4, #0x4] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020096CC -FUN_020096CC: ; 0x020096CC - push {r4, lr} - add r4, r0, #0x0 - bne _020096D6 - bl GF_AssertFail -_020096D6: - ldr r0, [r4, #0x4] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020096DC -FUN_020096DC: ; 0x020096DC - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _020096EA - bl GF_AssertFail -_020096EA: - ldr r0, [r5, #0x4] - cmp r0, r4 - bgt _020096F4 - bl GF_AssertFail -_020096F4: - ldrb r0, [r5, #0xc] - ldr r1, [r5, #0x0] - cmp r0, #0x0 - bne _02009704 - mov r0, #0x4c - mul r0, r4 - ldr r0, [r1, r0] - pop {r3-r5, pc} -_02009704: - mov r0, #0x18 - mul r0, r4 - add r0, r1, r0 - ldr r0, [r0, #0xc] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009710 -FUN_02009710: ; 0x02009710 - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _0200971E - bl GF_AssertFail -_0200971E: - ldr r0, [r5, #0x4] - cmp r0, r4 - bgt _02009728 - bl GF_AssertFail -_02009728: - ldrb r0, [r5, #0xc] - cmp r0, #0x1 - bne _02009738 - mov r0, #0x18 - ldr r1, [r5, #0x0] - mul r0, r4 - add r0, r1, r0 - ldr r6, [r0, #0x4] -_02009738: - add r0, r6, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0200973C -FUN_0200973C: ; 0x0200973C - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _0200974A - bl GF_AssertFail -_0200974A: - ldr r0, [r5, #0x4] - cmp r0, r4 - bgt _02009754 - bl GF_AssertFail -_02009754: - ldrb r0, [r5, #0xc] - cmp r0, #0x1 - bne _02009764 - mov r0, #0x18 - ldr r1, [r5, #0x0] - mul r0, r4 - add r0, r1, r0 - ldr r6, [r0, #0x8] -_02009764: - add r0, r6, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02009768 -FUN_02009768: ; 0x02009768 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _02009776 - bl GF_AssertFail -_02009776: - ldr r0, [r5, #0x4] - cmp r0, r4 - bgt _02009780 - bl GF_AssertFail -_02009780: - ldrb r0, [r5, #0xc] - ldr r1, [r5, #0x0] - cmp r0, #0x0 - bne _02009792 - mov r0, #0x4c - mul r0, r4 - add r0, r1, r0 - ldr r0, [r0, #0x44] - pop {r3-r5, pc} -_02009792: - mov r0, #0x18 - mul r0, r4 - add r0, r1, r0 - ldr r0, [r0, #0x10] - pop {r3-r5, pc} - - thumb_func_start FUN_0200979C -FUN_0200979C: ; 0x0200979C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _020097AA - bl GF_AssertFail -_020097AA: - ldr r0, [r5, #0x4] - cmp r0, r4 - bgt _020097B4 - bl GF_AssertFail -_020097B4: - ldrb r0, [r5, #0xc] - ldr r1, [r5, #0x0] - cmp r0, #0x0 - bne _020097C6 - mov r0, #0x4c - mul r0, r4 - add r0, r1, r0 - ldr r0, [r0, #0x48] - pop {r3-r5, pc} -_020097C6: - mov r0, #0x18 - mul r0, r4 - add r0, r1, r0 - ldr r0, [r0, #0x14] - pop {r3-r5, pc} - - thumb_func_start FUN_020097D0 -FUN_020097D0: ; 0x020097D0 - push {r3-r4} - ldr r4, [r0, #0x8] - mov r1, #0x0 - cmp r4, #0x0 - ble _020097F6 - ldr r3, [r0, #0x4] - add r2, r3, #0x0 -_020097DE: - ldr r0, [r2, #0x0] - cmp r0, #0x0 - bne _020097EE - mov r0, #0xc - mul r0, r1 - add r0, r3, r0 - pop {r3-r4} - bx lr -_020097EE: - add r1, r1, #0x1 - add r2, #0xc - cmp r1, r4 - blt _020097DE -_020097F6: - mov r0, #0x0 - pop {r3-r4} - bx lr - - thumb_func_start FUN_020097FC -FUN_020097FC: ; 0x020097FC - push {r3-r7, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - add r6, r1, #0x0 - add r7, r2, #0x0 - str r3, [sp, #0x0] - ldr r5, [sp, #0x18] - bl FUN_02020E0C - cmp r6, #0x5 - bhi _0200986A - add r1, r6, r6 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0200981E: ; jump table (using 16-bit offset) - .short _0200982A - _0200981E - 2; case 0 - .short _02009836 - _0200981E - 2; case 1 - .short _02009844 - _0200981E - 2; case 2 - .short _0200984E - _0200981E - 2; case 3 - .short _02009858 - _0200981E - 2; case 4 - .short _02009862 - _0200981E - 2; case 5 -_0200982A: - add r1, r7, #0x0 - add r2, r5, #0x0 - bl FUN_0200986C - str r0, [r4, #0x8] - pop {r3-r7, pc} -_02009836: - ldr r2, [sp, #0x0] - add r1, r7, #0x0 - add r3, r5, #0x0 - bl FUN_0200988C - str r0, [r4, #0x8] - pop {r3-r7, pc} -_02009844: - add r1, r5, #0x0 - bl FUN_020098B0 - str r0, [r4, #0x8] - pop {r3-r7, pc} -_0200984E: - add r1, r5, #0x0 - bl FUN_020098CC - str r0, [r4, #0x8] - pop {r3-r7, pc} -_02009858: - add r1, r5, #0x0 - bl FUN_020098E8 - str r0, [r4, #0x8] - pop {r3-r7, pc} -_02009862: - add r1, r5, #0x0 - bl FUN_02009904 - str r0, [r4, #0x8] -_0200986A: - pop {r3-r7, pc} - - thumb_func_start FUN_0200986C -FUN_0200986C: ; 0x0200986C - push {r4-r6, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - add r0, r2, #0x0 - mov r1, #0x8 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedCharacterData - str r5, [r4, #0x4] - add r0, r4, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0200988C -FUN_0200988C: ; 0x0200988C - push {r3-r7, lr} - add r7, r0, #0x0 - add r5, r1, #0x0 - add r0, r3, #0x0 - mov r1, #0xc - add r6, r2, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r7, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedPaletteData - str r5, [r4, #0x4] - str r6, [r4, #0x8] - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020098B0 -FUN_020098B0: ; 0x020098B0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedCellBank - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020098CC -FUN_020098CC: ; 0x020098CC - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedAnimBank - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020098E8 -FUN_020098E8: ; 0x020098E8 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedMultiCellBank - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009904 -FUN_02009904: ; 0x02009904 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl NNS_G2dGetUnpackedMCAnimBank - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009920 -FUN_02009920: ; 0x02009920 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x8] - cmp r0, #0x0 - beq _0200992E - bl FreeToHeap -_0200992E: - mov r0, #0x0 - str r0, [r4, #0x8] - pop {r4, pc} - - thumb_func_start FUN_02009934 -FUN_02009934: ; 0x02009934 - push {r4, lr} - add r4, r0, #0x0 - bne _0200993E - bl GF_AssertFail -_0200993E: - ldr r0, [r4, #0x8] - cmp r0, #0x0 - bne _02009948 - bl GF_AssertFail -_02009948: - ldr r0, [r4, #0x8] - pop {r4, pc} - - thumb_func_start FUN_0200994C -FUN_0200994C: ; 0x0200994C - push {r3-r4, lr} - sub sp, #0x4 - add r4, r1, #0x0 - add r1, r2, #0x0 - add r2, r3, #0x0 - ldr r0, [r0, #0x0] - ldr r3, [sp, #0x1c] - bl FUN_02020D10 - str r0, [r4, #0x0] - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x1c] - str r1, [r4, #0x4] - str r0, [sp, #0x0] - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x14] - add r0, r4, #0x0 - bl FUN_020097FC - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 - - thumb_func_start FUN_02009978 -FUN_02009978: ; 0x02009978 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, [sp, #0x28] - add r4, r1, #0x0 - str r0, [sp, #0x0] - add r0, r2, #0x0 - add r1, r3, #0x0 - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x24] - bl GfGfxLoader_LoadFromNarc - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r2, [sp, #0x14] - bl FUN_02020CD4 - str r0, [r4, #0x0] - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x24] - str r1, [r4, #0x4] - str r0, [sp, #0x0] - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x1c] - add r0, r4, #0x0 - bl FUN_020097FC - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020099B0 -FUN_020099B0: ; 0x020099B0 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, [sp, #0x28] - add r4, r1, #0x0 - str r0, [sp, #0x0] - add r0, r2, #0x0 - add r1, r3, #0x0 - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x24] - bl FUN_02009A04 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r2, [sp, #0x14] - bl FUN_02020CD4 - str r0, [r4, #0x0] - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x24] - str r1, [r4, #0x4] - str r0, [sp, #0x0] - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x1c] - add r0, r4, #0x0 - bl FUN_020097FC - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020099E8 -FUN_020099E8: ; 0x020099E8 - mov r3, #0x0 - ldr r2, [r0, #0x0] - sub r1, r3, #0x2 - cmp r2, r1 - beq _020099FE - sub r1, r3, #0x2 -_020099F4: - add r0, #0x18 - ldr r2, [r0, #0x0] - add r3, r3, #0x1 - cmp r2, r1 - bne _020099F4 -_020099FE: - add r0, r3, #0x0 - bx lr - .balign 4 - - thumb_func_start FUN_02009A04 -FUN_02009A04: ; 0x02009A04 - push {r4-r6, lr} - add r6, r3, #0x0 - add r5, r2, #0x0 - add r2, r6, #0x0 - bl NARC_AllocAndReadWholeMember - add r4, r0, #0x0 - beq _02009A4A - cmp r5, #0x0 - beq _02009A4A - ldr r0, [sp, #0x10] - cmp r0, #0x0 - bne _02009A2A - ldr r1, [r4, #0x0] - add r0, r6, #0x0 - lsr r1, r1, #0x8 - bl AllocFromHeap - b _02009A34 -_02009A2A: - ldr r1, [r4, #0x0] - add r0, r6, #0x0 - lsr r1, r1, #0x8 - bl AllocFromHeapAtEnd -_02009A34: - add r5, r0, #0x0 - cmp r5, #0x0 - beq _02009A48 - add r0, r4, #0x0 - add r1, r5, #0x0 - bl MI_UncompressLZ8 - add r0, r4, #0x0 - bl FreeToHeap -_02009A48: - add r4, r5, #0x0 -_02009A4A: - add r0, r4, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02009A50 -FUN_02009A50: ; 0x02009A50 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009A5C - bl GF_AssertFail -_02009A5C: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009A6A - bl GF_AssertFail -_02009A6A: - add r0, r4, #0x0 - bl FUN_02009544 - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - add r0, sp, #0x0 - bl FUN_0201D1F8 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009A90 -FUN_02009A90: ; 0x02009A90 - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009A9A - bl GF_AssertFail -_02009A9A: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009AC2 - add r4, r6, #0x0 -_02009AA4: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009AB8 - bl FUN_02009A50 - cmp r0, #0x0 - bne _02009AB8 - bl GF_AssertFail -_02009AB8: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009AA4 -_02009AC2: - pop {r4-r6, pc} - - thumb_func_start FUN_02009AC4 -FUN_02009AC4: ; 0x02009AC4 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009AD0 - bl GF_AssertFail -_02009AD0: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009ADE - bl GF_AssertFail -_02009ADE: - add r0, r4, #0x0 - bl FUN_02009544 - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - add r0, sp, #0x0 - bl FUN_0201D250 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009B04 -FUN_02009B04: ; 0x02009B04 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009B10 - bl GF_AssertFail -_02009B10: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009B1E - bl GF_AssertFail -_02009B1E: - add r0, r4, #0x0 - bl FUN_02009544 - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0x8] - mov r0, #0x1 - str r0, [sp, #0xc] - add r0, sp, #0x0 - bl FUN_0201D1F8 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009B44 -FUN_02009B44: ; 0x02009B44 - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009B4E - bl GF_AssertFail -_02009B4E: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009B76 - add r4, r6, #0x0 -_02009B58: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009B6C - bl FUN_02009B04 - cmp r0, #0x0 - bne _02009B6C - bl GF_AssertFail -_02009B6C: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009B58 -_02009B76: - pop {r4-r6, pc} - - thumb_func_start FUN_02009B78 -FUN_02009B78: ; 0x02009B78 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009B84 - bl GF_AssertFail -_02009B84: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009B92 - bl GF_AssertFail -_02009B92: - add r0, r4, #0x0 - bl FUN_02009544 - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0x8] - mov r0, #0x1 - str r0, [sp, #0xc] - add r0, sp, #0x0 - bl FUN_0201D250 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009BB8 -FUN_02009BB8: ; 0x02009BB8 - push {r3-r5, lr} - add r4, r0, #0x0 - add r5, r1, #0x0 - cmp r4, #0x0 - bne _02009BC6 - bl GF_AssertFail -_02009BC6: - cmp r5, #0x0 - bne _02009BCE - bl GF_AssertFail -_02009BCE: - add r0, r4, #0x0 - bl FUN_02009530 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02009544 - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0201D2DC - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009BE8 -FUN_02009BE8: ; 0x02009BE8 - push {r3-r5, lr} - add r5, r0, #0x0 - bne _02009BF2 - bl GF_AssertFail -_02009BF2: - add r0, r5, #0x0 - bl FUN_02009530 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02009544 - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0201D2DC - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009C0C -FUN_02009C0C: ; 0x02009C0C - push {r4, lr} - add r4, r0, #0x0 - bne _02009C16 - bl GF_AssertFail -_02009C16: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009C24 - bl GF_AssertFail -_02009C24: - add r0, r4, #0x0 - bl FUN_02009530 - bl FUN_0201D324 - pop {r4, pc} - - thumb_func_start FUN_02009C30 -FUN_02009C30: ; 0x02009C30 - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009C3A - bl GF_AssertFail -_02009C3A: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009C5A - add r4, r6, #0x0 -_02009C44: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009C50 - bl FUN_02009C0C -_02009C50: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009C44 -_02009C5A: - pop {r4-r6, pc} - - thumb_func_start FUN_02009C5C -FUN_02009C5C: ; 0x02009C5C - push {r4, lr} - add r4, r0, #0x0 - bne _02009C66 - bl GF_AssertFail -_02009C66: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009C74 - bl GF_AssertFail -_02009C74: - add r0, r4, #0x0 - bl FUN_02009530 - bl FUN_0201D3B0 - pop {r4, pc} - - thumb_func_start FUN_02009C80 -FUN_02009C80: ; 0x02009C80 - push {r3-r5, lr} - add r4, r0, #0x0 - add r5, r1, #0x0 - cmp r4, #0x0 - bne _02009C8E - bl GF_AssertFail -_02009C8E: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x0 - beq _02009C9C - bl GF_AssertFail -_02009C9C: - cmp r5, #0x0 - bne _02009CA4 - bl GF_AssertFail -_02009CA4: - add r0, r5, #0x0 - bl FUN_020095D4 - cmp r0, #0x2 - beq _02009CB2 - bl GF_AssertFail -_02009CB2: - add r0, r4, #0x0 - bl FUN_02009530 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02009574 - add r1, r0, #0x0 - ldr r1, [r1, #0xc] - add r0, r4, #0x0 - ldr r1, [r1, #0x0] - bl FUN_0201D3D4 - cmp r0, #0x0 - bne _02009CDA - add r0, r4, #0x0 - bl FUN_0201D3B0 - bl FUN_0201D458 -_02009CDA: - pop {r3-r5, pc} - - thumb_func_start FUN_02009CDC -FUN_02009CDC: ; 0x02009CDC - push {r4, lr} - add r4, r0, #0x0 - bne _02009CE6 - bl GF_AssertFail -_02009CE6: - add r0, r4, #0x0 - bl FUN_0201D4F0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02009CF0 -FUN_02009CF0: ; 0x02009CF0 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009CFC - bl GF_AssertFail -_02009CFC: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x1 - beq _02009D0A - bl GF_AssertFail -_02009D0A: - add r0, r4, #0x0 - bl FUN_0200955C - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0xc] - add r0, r4, #0x0 - bl FUN_02009610 - str r0, [sp, #0x8] - add r0, sp, #0x0 - bl FUN_0201E0E4 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009D34 -FUN_02009D34: ; 0x02009D34 - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009D3E - bl GF_AssertFail -_02009D3E: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009D66 - add r4, r6, #0x0 -_02009D48: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009D5C - bl FUN_02009CF0 - cmp r0, #0x0 - bne _02009D5C - bl GF_AssertFail -_02009D5C: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009D48 -_02009D66: - pop {r4-r6, pc} - - thumb_func_start FUN_02009D68 -FUN_02009D68: ; 0x02009D68 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bne _02009D74 - bl GF_AssertFail -_02009D74: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x1 - beq _02009D82 - bl GF_AssertFail -_02009D82: - add r0, r4, #0x0 - bl FUN_0200955C - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_020095E4 - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_02009530 - str r0, [sp, #0xc] - add r0, r4, #0x0 - bl FUN_02009610 - str r0, [sp, #0x8] - add r0, sp, #0x0 - bl FUN_0201E128 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start FUN_02009DAC -FUN_02009DAC: ; 0x02009DAC - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009DB6 - bl GF_AssertFail -_02009DB6: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009DDE - add r4, r6, #0x0 -_02009DC0: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009DD4 - bl FUN_02009D68 - cmp r0, #0x0 - bne _02009DD4 - bl GF_AssertFail -_02009DD4: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009DC0 -_02009DDE: - pop {r4-r6, pc} - - thumb_func_start FUN_02009DE0 -FUN_02009DE0: ; 0x02009DE0 - push {r3-r5, lr} - add r5, r0, #0x0 - bne _02009DEA - bl GF_AssertFail -_02009DEA: - add r0, r5, #0x0 - bl FUN_02009530 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0200955C - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0201E168 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02009E04 -FUN_02009E04: ; 0x02009E04 - push {r4, lr} - add r4, r0, #0x0 - bne _02009E0E - bl GF_AssertFail -_02009E0E: - add r0, r4, #0x0 - bl FUN_020095D4 - cmp r0, #0x1 - beq _02009E1C - bl GF_AssertFail -_02009E1C: - add r0, r4, #0x0 - bl FUN_02009530 - bl FUN_0201E1C8 - pop {r4, pc} - - thumb_func_start FUN_02009E28 -FUN_02009E28: ; 0x02009E28 - push {r4-r6, lr} - add r5, r0, #0x0 - bne _02009E32 - bl GF_AssertFail -_02009E32: - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - ble _02009E52 - add r4, r6, #0x0 -_02009E3C: - ldr r0, [r5, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _02009E48 - bl FUN_02009E04 -_02009E48: - ldr r0, [r5, #0x4] - add r6, r6, #0x1 - add r4, r4, #0x4 - cmp r6, r0 - blt _02009E3C -_02009E52: - pop {r4-r6, pc} - - thumb_func_start FUN_02009E54 -FUN_02009E54: ; 0x02009E54 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x0 - bne _02009E62 - bl GF_AssertFail -_02009E62: - add r0, r5, #0x0 - bl FUN_020095D4 - cmp r0, #0x1 - beq _02009E70 - bl GF_AssertFail -_02009E70: - add r0, r5, #0x0 - bl FUN_02009530 - cmp r4, #0x0 - beq _02009E82 - add r1, r4, #0x0 - bl FUN_0201E258 - pop {r3-r5, pc} -_02009E82: - bl FUN_0201E230 - pop {r3-r5, pc} - - thumb_func_start FUN_02009E88 -FUN_02009E88: ; 0x02009E88 - push {r4, lr} - add r4, r1, #0x0 - mov r1, #0x0 - bl FUN_02009E54 - add r1, r4, #0x0 - bl NNS_G2dGetImagePaletteLocation - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - beq _02009EA8 - asr r1, r0, #0x4 - lsr r1, r1, #0x1b - add r1, r0, r1 - asr r0, r1, #0x5 -_02009EA8: - pop {r4, pc} - .balign 4 diff --git a/arm9/src/unk_02008AA4.c b/arm9/src/unk_02008AA4.c index 2d7fb77d..1cabb887 100644 --- a/arm9/src/unk_02008AA4.c +++ b/arm9/src/unk_02008AA4.c @@ -3,16 +3,8 @@ #include "GX_vramcnt.h" #include "heap.h" #include "unk_0200BB14.h" +#include "unk_02008DEC.h" -extern u32 FUN_020094F0(u32 param0, s32 param1); -extern u32 FUN_02009C80(u32, u32); -extern u32 FUN_02009544(u32); -extern u32 FUN_02009E54(u32 param0, u32 param1); -extern u32 FUN_02009C5C(u32); -extern u32 FUN_02009574(u32); -extern u32 FUN_0200958C(u32); -extern u32 FUN_020095A4(u32); -extern u32 FUN_020095BC(u32); extern void FUN_0202134C(void *, u32); extern void FUN_02009FD8(void *param0, u32 *param1, u32 param2, u32 param3); extern u32 FUN_0201FCB0(u32 *); @@ -29,20 +21,20 @@ THUMB_FUNC void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, s32 param6, u32 param7, u32 param8, - u32 param9, - u32 param10, - u32 param11, - u32 param12, - u32 param13, - u32 param14) + struct UnkStruct_02008DEC_1 *param9, + struct UnkStruct_02008DEC_1 *param10, + struct UnkStruct_02008DEC_1 *param11, + struct UnkStruct_02008DEC_1 *param12, + struct UnkStruct_02008DEC_1 *param13, + struct UnkStruct_02008DEC_1 *param14) { - u32 r7; - u32 st14; - u32 st10; + struct UnkStruct_02008DEC_sub *r7; + struct UnkStruct_02008DEC_sub *st14; + struct UnkStruct_02008DEC_sub *st10; - u32 stc = 0; - u32 r4 = 0; - u32 st8 = 0; + struct UnkStruct_02008DEC_sub *stc = NULL; + struct UnkStruct_02008DEC_sub *r4 = NULL; + struct UnkStruct_02008DEC_sub *st8 = NULL; GF_ASSERT(param9); GF_ASSERT(param10); @@ -124,12 +116,12 @@ THUMB_FUNC void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, THUMB_FUNC struct UnkStruct_02008AA4_1 *FUN_02008BE0(struct UnkStruct_02008AA4_2 *param0, u32 param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - u32 param6, - u32 param7) + struct UnkStruct_02008DEC_1 *param2, + struct UnkStruct_02008DEC_1 *param3, + struct UnkStruct_02008DEC_1 *param4, + struct UnkStruct_02008DEC_1 *param5, + struct UnkStruct_02008DEC_1 *param6, + struct UnkStruct_02008DEC_1 *param7) { s32 r4 = 0; diff --git a/arm9/src/unk_02008DEC.c b/arm9/src/unk_02008DEC.c new file mode 100644 index 00000000..2238b920 --- /dev/null +++ b/arm9/src/unk_02008DEC.c @@ -0,0 +1,1118 @@ +#include "global.h" +#include "unk_02008DEC.h" +#include "NNS_g2d.h" +#include "gf_gfx_loader.h" +#include "heap.h" + +extern u32 FUN_02020C44(u32, u32); +extern void FUN_02020C90(u32); +extern u32 FUN_02020CB0(u32 param0, s32 param1); +extern void FUN_02020E1C(u32 param0, u32 param1); +extern void FUN_02020D68(u32 param0, u32 param1); +extern s32 FUN_02020E38(u32); +extern void *FUN_02020E0C(u32); +extern BOOL NNS_G2dGetUnpackedMultiCellBank(void *, void *); +extern BOOL NNS_G2dGetUnpackedMCAnimBank(void *, void *); +extern u32 FUN_02020D10(u32, void *, s32, u32); +extern u32 FUN_02020CD4(u32, void *, s32); +extern u32 FUN_0201D1F8(u32 *param0); +extern u32 FUN_0201D250(u32 *param0); +extern void FUN_0201D2DC(s32, u32); +extern void FUN_0201D324(s32 param0); +extern u32 FUN_0201D3B0(s32); +extern u32 FUN_0201D3D4(s32, u32); +extern u32 FUN_0201D458(u32); +extern void FUN_0201D4F0(u32); +extern u32 FUN_0201E0E4(u32 *param0); +extern u32 FUN_0201E128(u32 *param0); +extern void FUN_0201E168(s32, u32); +extern void FUN_0201E1C8(s32); +extern u32 FUN_0201E258(s32, u32); +extern u32 FUN_0201E230(s32); +extern s32 NNS_G2dGetImagePaletteLocation(u32, u32); + +THUMB_FUNC struct UnkStruct_02008DEC_1 *FUN_02008DEC(u32 param0, s32 param1, u32 heap_id) +{ + struct UnkStruct_02008DEC_1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02008DEC_1)); + ptr->unk00 = FUN_02020C44(param0, heap_id); + ptr->unk04 = AllocFromHeap(heap_id, param0 * sizeof(struct UnkStruct_02008DEC_sub)); + memset(ptr->unk04, 0, param0 * sizeof(struct UnkStruct_02008DEC_sub)); + ptr->unk08 = (s32)param0; + ptr->unk0C = 0; + ptr->unk10 = param1; + + return ptr; +} + +THUMB_FUNC void FUN_02008E2C(struct UnkStruct_02008DEC_1 *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk00); + GF_ASSERT(param0->unk04); + + FUN_020094C4(param0); + + FUN_02020C90(param0->unk00); + param0->unk00 = 0; + + FreeToHeap(param0->unk04); + param0->unk04 = NULL; + + FreeToHeap(param0); +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008E6C( + struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_2 *param1, s32 param2, u32 param3) +{ + GF_ASSERT(param0); + GF_ASSERT(param1); + GF_ASSERT(param1->unk04 > param2); + GF_ASSERT(param0->unk10 == param1->unk08); + + struct UnkStruct_02008DEC_sub *st1c = FUN_020097D0(param0); + GF_ASSERT(st1c); + + if (param1->unk0C == 0) + { + struct UnkStruct_02008DEC_3 *r6 = ¶m1->unk00_3[param2]; + GF_ASSERT(FUN_0200945C(param0, r6->unk00) == 1); + + FUN_0200994C( + param0, st1c, r6->unk04, r6->unk00, r6->unk44, r6->unk48, param1->unk08, param3); + } + else + { + struct UnkStruct_02008DEC_4 *r6 = ¶m1->unk00_4[param2]; + GF_ASSERT(FUN_0200945C(param0, r6->unk0C) == 1); + + FUN_02009978(param0, + st1c, + r6->unk00, + r6->unk04, + r6->unk08, + r6->unk0C, + r6->unk10, + r6->unk14, + param1->unk08, + param3, + FALSE); + } + + param0->unk0C++; + + return st1c; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008F34(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_02009978(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, FALSE); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008F90(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + BOOL param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_02009978(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02008FEC(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_02009978(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, FALSE); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_0200904C(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7, + BOOL param8) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_02009978(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020090AC(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_02009978(param0, r6, param1, param2, param3, param4, 0, 0, param5, param6, FALSE); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC void FUN_020090FC(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + u32 param5) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + GF_ASSERT(param1); + GF_ASSERT(param1->unk04 == 0); + + s32 r6 = FUN_02009530(param1); + u32 r7 = FUN_020095E4(param1); + FUN_02009490(param0, param1); + + FUN_02009978(param0, param1, param2, param3, param4, r6, r7, 0, 0, param5, FALSE); +} + +THUMB_FUNC void FUN_02009168(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + u32 param5) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + GF_ASSERT(param1); + GF_ASSERT(param1->unk04 == 1); + + s32 r6 = FUN_02009530(param1); + u32 r7 = FUN_020095E4(param1); + u32 st24 = FUN_02009610(param1); + FUN_02009490(param0, param1); + + FUN_02009978(param0, param1, param2, param3, param4, r6, r7, st24, 1, param5, 0); +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020091E0(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, 0); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_0200923C(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, 0, 0, param6, param7); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02009298(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, 0); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020092F8(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk10 == 1); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_020099B0(param0, r6, param1, param2, param3, param4, param5, param6, 1, param7, param8); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_02009358(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6) +{ + GF_ASSERT(param0); + + struct UnkStruct_02008DEC_sub *r6 = FUN_020097D0(param0); + GF_ASSERT(r6); + + FUN_020099B0(param0, r6, param1, param2, param3, param4, 0, 0, param5, param6, 0); + param0->unk0C++; + + return r6; +} + +THUMB_FUNC s32 FUN_020093A8( + struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_2 *param1, struct UnkStruct_02008DEC_5 *param2, u32 param3) +{ + GF_ASSERT(param0); + GF_ASSERT(param1); + + FUN_020093DC(param0, param1, 0, param1->unk04, param2, param3); + + return param1->unk04; +} + +THUMB_FUNC void FUN_020093DC(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_2 *param1, + s32 param2, + s32 param3, + struct UnkStruct_02008DEC_5 *param4, + u32 param5) +{ + for (int r5 = param2; r5 < param2 + param3; r5++) + { + struct UnkStruct_02008DEC_sub *r0 = FUN_02008E6C(param0, param1, r5, param5); + + if (param4 != NULL && param4->unk04 > param4->unk08) + { + param4->unk00[param4->unk08] = r0; + param4->unk08++; + } + } +} + +THUMB_FUNC struct UnkStruct_02008DEC_5 *FUN_02009424(s32 param0, u32 param1) +{ + struct UnkStruct_02008DEC_5 *r4 = AllocFromHeap(param1, sizeof(struct UnkStruct_02008DEC_5)); + r4->unk00 = AllocFromHeap(param1, param0 * sizeof(struct UnkStruct_02008DEC_sub *)); + r4->unk04 = param0; + r4->unk08 = 0; + + return r4; +} + +THUMB_FUNC void FUN_02009448(struct UnkStruct_02008DEC_5 *param0) +{ + FreeToHeap(param0->unk00); + FreeToHeap(param0); +} + +THUMB_FUNC u32 FUN_0200945C(struct UnkStruct_02008DEC_1 *param0, s32 param1) +{ + GF_ASSERT(param0); + return FUN_02020CB0(param0->unk00, param1); +} + +THUMB_FUNC void FUN_02009474(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + FUN_02009920(param0); + FUN_02020E1C(param0->unk00, 0); +} + +THUMB_FUNC void FUN_02009490(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_sub *param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04); + + FUN_02009920(param1); + FUN_02020D68(param0->unk00, param1->unk00); + param1->unk00 = 0; + param0->unk0C--; +} + +THUMB_FUNC void FUN_020094C4(struct UnkStruct_02008DEC_1 *param0) +{ + for (int i = 0; i < param0->unk08; i++) + { + if (param0->unk04[i].unk00 != 0) + { + FUN_02009490(param0, ¶m0->unk04[i]); + } + } +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020094F0(struct UnkStruct_02008DEC_1 *param0, s32 param1) +{ + GF_ASSERT(param0); + + for (int i = 0; i < param0->unk08; i++) + { + if (param0->unk04[i].unk00 != 0) + { + s32 r0 = FUN_02020E38(param0->unk04[i].unk00); + if (r0 == param1) + { + return ¶m0->unk04[i]; + } + } + } + + return NULL; +} + +THUMB_FUNC s32 FUN_02009530(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + return FUN_02020E38(param0->unk00); +} + +THUMB_FUNC u32 FUN_02009544(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 0); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_0200955C(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 1); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_02009574(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 2); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_0200958C(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 3); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_020095A4(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 4); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_020095BC(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0->unk04 == 5); + return *FUN_02009934(param0); +} + +THUMB_FUNC u32 FUN_020095D4(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + return param0->unk04; +} + +THUMB_FUNC u32 FUN_020095E4(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + if (param0->unk04 == 0) + { + return FUN_02009934(param0)[1]; + } + if (param0->unk04 == 1) + { + return FUN_02009934(param0)[1]; + } + + return 0; +} + +THUMB_FUNC u32 FUN_02009610(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + if (param0->unk04 == 1) + { + return FUN_02009934(param0)[2]; + } + + return 0; +} + +THUMB_FUNC void FUN_02009630(struct UnkStruct_02008DEC_sub *param0, u32 param1) +{ + GF_ASSERT(param0); + + if (param0->unk04 == 0) + { + FUN_02009934(param0)[1] = param1; + } + if (param0->unk04 == 1) + { + FUN_02009934(param0)[1] = param1; + } +} + +THUMB_FUNC u32 FUN_0200965C(void) +{ + return 16; +} + +THUMB_FUNC struct UnkStruct_02008DEC_2 *FUN_02009660(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + return ¶m0[param1]; +} + +THUMB_FUNC void FUN_02009668(u32 *param0, struct UnkStruct_02008DEC_2 *param1, u32 param2) +{ + GF_ASSERT(param1); + + param1->unk08 = param0[0]; + param1->unk0C = 1; + + param1->unk04 = FUN_020099E8((struct UnkStruct_02008DEC_4 *)(param0 + 1)); + + if (param1->unk04 > 0) + { + param1->unk00_4 = AllocFromHeap(param2, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); + } + else + { + param1->unk00_4 = NULL; + } + + if (param1->unk00_4 != NULL) + { + memcpy(param1->unk00_4, param0 + 1, param1->unk04 * sizeof(struct UnkStruct_02008DEC_4)); + } +} + +THUMB_FUNC void FUN_020096B4(struct UnkStruct_02008DEC_2 *param0) +{ + if (param0->unk00_4) + { + FreeToHeap(param0->unk00_4); + } + param0->unk00_4 = NULL; + param0->unk04 = 0; +} + +THUMB_FUNC s32 FUN_020096CC(struct UnkStruct_02008DEC_2 *param0) +{ + GF_ASSERT(param0); + + return param0->unk04; +} + +THUMB_FUNC s32 FUN_020096DC(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + if (param0->unk0C == 0) + { + return param0->unk00_3[param1].unk00; + } + + return param0->unk00_4[param1].unk0C; +} + +THUMB_FUNC s32 FUN_02009710(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + s32 r6; + if (param0->unk0C == 1) + { + r6 = param0->unk00_4[param1].unk04; + } + + // oops, UB here + return r6; +} + +THUMB_FUNC BOOL FUN_0200973C(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + BOOL r6; + if (param0->unk0C == 1) + { + r6 = param0->unk00_4[param1].unk08; + } + + // oops, UB here + return r6; +} + +THUMB_FUNC u32 FUN_02009768(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + if (param0->unk0C == 0) + { + return param0->unk00_3[param1].unk44; + } + + return param0->unk00_4[param1].unk10; +} + +THUMB_FUNC u32 FUN_0200979C(struct UnkStruct_02008DEC_2 *param0, s32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk04 > param1); + + if (param0->unk0C == 0) + { + return param0->unk00_3[param1].unk48; + } + + return param0->unk00_4[param1].unk14; +} + +THUMB_FUNC struct UnkStruct_02008DEC_sub *FUN_020097D0(struct UnkStruct_02008DEC_1 *param0) +{ + for (int i = 0; i < param0->unk08; i++) + { + if (param0->unk04[i].unk00 == 0) + { + return ¶m0->unk04[i]; + } + } + + return NULL; +} + +THUMB_FUNC void FUN_020097FC( + struct UnkStruct_02008DEC_sub *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ + void *r0 = FUN_02020E0C(param0->unk00); + + switch (param1) + { + case 0: + param0->unk08 = FUN_0200986C(r0, param2, param4); + break; + case 1: + param0->unk08 = FUN_0200988C(r0, param2, param3, param4); + break; + case 2: + param0->unk08 = FUN_020098B0(r0, param4); + break; + case 3: + param0->unk08 = FUN_020098CC(r0, param4); + break; + case 4: + param0->unk08 = FUN_020098E8(r0, param4); + break; + case 5: + param0->unk08 = FUN_02009904(r0, param4); + break; + } +} + +THUMB_FUNC struct CharacterData_02008DEC *FUN_0200986C(void *param0, u32 param1, u32 param2) +{ + struct CharacterData_02008DEC *ptr = + AllocFromHeap(param2, sizeof(struct CharacterData_02008DEC)); + + NNS_G2dGetUnpackedCharacterData(param0, &ptr->chData); + ptr->unk04 = param1; + + return ptr; +} + +THUMB_FUNC struct PaletteData_02008DEC *FUN_0200988C( + void *param0, u32 param1, u32 param2, u32 param3) +{ + struct PaletteData_02008DEC *ptr = AllocFromHeap(param3, sizeof(struct PaletteData_02008DEC)); + + NNS_G2dGetUnpackedPaletteData(param0, &ptr->plttData); + ptr->unk04 = param1; + ptr->unk08 = param2; + + return ptr; +} + +THUMB_FUNC struct CellDataBank_02008DEC *FUN_020098B0(void *param0, u32 param1) +{ + struct CellDataBank_02008DEC *ptr = AllocFromHeap(param1, sizeof(struct CellDataBank_02008DEC)); + + NNS_G2dGetUnpackedCellBank(param0, &ptr->cellBank); + + return ptr; +} + +THUMB_FUNC struct AnimBank_02008DEC *FUN_020098CC(void *param0, u32 param1) +{ + struct AnimBank_02008DEC *ptr = AllocFromHeap(param1, sizeof(struct AnimBank_02008DEC)); + + NNS_G2dGetUnpackedAnimBank(param0, &ptr->bankData); + + return ptr; +} + +THUMB_FUNC void *FUN_020098E8(void *param0, u32 param1) +{ + void *ptr = AllocFromHeap(param1, 4); + + NNS_G2dGetUnpackedMultiCellBank(param0, ptr); + + return ptr; +} + +THUMB_FUNC void *FUN_02009904(void *param0, u32 param1) +{ + void *ptr = AllocFromHeap(param1, 4); + + NNS_G2dGetUnpackedMCAnimBank(param0, ptr); + + return ptr; +} + +THUMB_FUNC void FUN_02009920(struct UnkStruct_02008DEC_sub *param0) +{ + if (param0->unk08 != NULL) + { + FreeToHeap(param0->unk08); + } + + param0->unk08 = NULL; +} + +THUMB_FUNC u32 *FUN_02009934(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(param0->unk08); + + return param0->unk08; +} + +THUMB_FUNC void FUN_0200994C(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + void *param2, + s32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7) +{ + param1->unk00 = FUN_02020D10(param0->unk00, param2, param3, param7); + param1->unk04 = param6; + FUN_020097FC(param1, param6, param4, param5, param7); +} + +THUMB_FUNC void FUN_02009978(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + s32 param5, + u32 param6, + u32 param7, + u32 param8, + u32 param9, + BOOL param10) +{ + void *r1 = GfGfxLoader_LoadFromNarc(param2, param3, param4, param9, param10); + param1->unk00 = FUN_02020CD4(param0->unk00, r1, param5); + param1->unk04 = param8; + + FUN_020097FC(param1, param8, param6, param7, param9); +} + +THUMB_FUNC void FUN_020099B0(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NARC *param2, + u32 param3, + u32 param4, + s32 param5, + u32 param6, + u32 param7, + u32 param8, + u32 param9, + u32 param10) +{ + param1->unk00 = + FUN_02020CD4(param0->unk00, FUN_02009A04(param2, param3, param4, param9, param10), param5); + param1->unk04 = param8; + + FUN_020097FC(param1, param8, param6, param7, param9); +} + +THUMB_FUNC s32 FUN_020099E8(struct UnkStruct_02008DEC_4 *param0) +{ + s32 r3 = 0; + while (param0[r3].unk00 != -2) + { + r3++; + } + + return r3; +} + +THUMB_FUNC void *FUN_02009A04(NARC *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ + void *r4 = NARC_AllocAndReadWholeMember(param0, param1, param3); + + if (r4 != NULL && param2 != 0) + { + void *ptr; + if (param4 == 0) + { + ptr = AllocFromHeap(param3, (*(u32 *)r4) >> 8); + } + else + { + ptr = AllocFromHeapAtEnd(param3, (*(u32 *)r4) >> 8); + } + + if (ptr != NULL) + { + MI_UncompressLZ8(r4, ptr); + FreeToHeap(r4); + } + + r4 = ptr; + } + + return r4; +} + +THUMB_FUNC u32 FUN_02009A50(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + u32 st0[4]; + st0[0] = FUN_02009544(param0); + st0[1] = FUN_020095E4(param0); + st0[2] = (u32)FUN_02009530(param0); + st0[3] = 0; + + return FUN_0201D1F8(st0); +} + +THUMB_FUNC void FUN_02009A90(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + + for (int i = 0; i < param0->unk04; i++) + { + GF_ASSERT(param0->unk00[i] == NULL || FUN_02009A50(param0->unk00[i]) != 0); + } +} + +THUMB_FUNC u32 FUN_02009AC4(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + u32 st0[4]; + st0[0] = FUN_02009544(param0); + st0[1] = FUN_020095E4(param0); + st0[2] = (u32)FUN_02009530(param0); + st0[3] = 0; + + return FUN_0201D250(st0); +} + +THUMB_FUNC u32 FUN_02009B04(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + u32 st0[4]; + st0[0] = FUN_02009544(param0); + st0[1] = FUN_020095E4(param0); + st0[2] = (u32)FUN_02009530(param0); + st0[3] = 1; + + return FUN_0201D1F8(st0); +} + +THUMB_FUNC void FUN_02009B44(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + + for (int i = 0; i < param0->unk04; i++) + { + GF_ASSERT(param0->unk00[i] == NULL || FUN_02009B04(param0->unk00[i]) != 0); + } +} + +THUMB_FUNC u32 FUN_02009B78(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + u32 st0[4]; + st0[0] = FUN_02009544(param0); + st0[1] = FUN_020095E4(param0); + st0[2] = (u32)FUN_02009530(param0); + st0[3] = 1; + + return FUN_0201D250(st0); +} + +THUMB_FUNC void FUN_02009BB8(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1) +{ + GF_ASSERT(param0); + GF_ASSERT(param1); + + FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param1)); +} + +THUMB_FUNC void FUN_02009BE8(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + FUN_0201D2DC(FUN_02009530(param0), FUN_02009544(param0)); +} + +THUMB_FUNC void FUN_02009C0C(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + FUN_0201D324(FUN_02009530(param0)); +} + +THUMB_FUNC void FUN_02009C30(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != NULL) + { + FUN_02009C0C(param0->unk00[i]); + } + } +} + +THUMB_FUNC u32 FUN_02009C5C(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + + return FUN_0201D3B0(FUN_02009530(param0)); +} + +THUMB_FUNC u32 FUN_02009C80(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 0); + GF_ASSERT(param1); + GF_ASSERT(FUN_020095D4(param1) == 2); + + s32 r4 = FUN_02009530(param0); + + u32 r0 = FUN_0201D3D4(r4, ((u32 **)FUN_02009574(param1))[3][0]); + if (r0 == 0) + { + return FUN_0201D458(FUN_0201D3B0(r4)); + } + + return r0; +} + +THUMB_FUNC void FUN_02009CDC(u32 param0) +{ + GF_ASSERT(param0); + + FUN_0201D4F0(param0); +} + +THUMB_FUNC u32 FUN_02009CF0(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 1); + + u32 st0[4]; + st0[0] = FUN_0200955C(param0); + st0[1] = FUN_020095E4(param0); + st0[3] = (u32)FUN_02009530(param0); + st0[2] = FUN_02009610(param0); + + return FUN_0201E0E4(st0); +} + +THUMB_FUNC void FUN_02009D34(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != NULL) + { + GF_ASSERT(FUN_02009CF0(param0->unk00[i]) != 0); + } + } +} + +THUMB_FUNC u32 FUN_02009D68(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 1); + + u32 st0[4]; + st0[0] = FUN_0200955C(param0); + st0[1] = FUN_020095E4(param0); + st0[3] = (u32)FUN_02009530(param0); + st0[2] = FUN_02009610(param0); + + return FUN_0201E128(st0); +} + +THUMB_FUNC void FUN_02009DAC(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != NULL) + { + GF_ASSERT(FUN_02009D68(param0->unk00[i]) != 0); + } + } +} + +THUMB_FUNC void FUN_02009DE0(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + + FUN_0201E168(FUN_02009530(param0), FUN_0200955C(param0)); +} + +THUMB_FUNC void FUN_02009E04(struct UnkStruct_02008DEC_sub *param0) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 1); + + FUN_0201E1C8(FUN_02009530(param0)); +} + +THUMB_FUNC void FUN_02009E28(struct UnkStruct_02008DEC_5 *param0) +{ + GF_ASSERT(param0); + for (int i = 0; i < param0->unk04; i++) + { + if (param0->unk00[i] != NULL) + { + FUN_02009E04(param0->unk00[i]); + } + } +} + +THUMB_FUNC u32 FUN_02009E54(struct UnkStruct_02008DEC_sub *param0, u32 param1) +{ + GF_ASSERT(param0); + GF_ASSERT(FUN_020095D4(param0) == 1); + + s32 r0 = FUN_02009530(param0); + if (param1 != 0) + { + return FUN_0201E258(r0, param1); + } + + return FUN_0201E230(r0); +} + +THUMB_FUNC s32 FUN_02009E88(struct UnkStruct_02008DEC_sub *param0, u32 param1) +{ + s32 ret = NNS_G2dGetImagePaletteLocation(FUN_02009E54(param0, 0), param1); + if (ret != -1) + { + return ret / 32; + } + + return ret; +} diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c index ac8d048e..95a854d7 100644 --- a/arm9/src/unk_0200BB14.c +++ b/arm9/src/unk_0200BB14.c @@ -3,6 +3,7 @@ #include "game_init.h" #include "heap.h" #include "unk_02008AA4.h" +#include "unk_02008DEC.h" extern void FUN_0201D060(u32 *param0, u32 param1, u32 param2); extern void FUN_0201E00C(u32 param0, u32 param1); @@ -24,44 +25,15 @@ extern void FUN_0201FDEC(u32 param0); extern void FUN_02009F80(); extern void FUN_0201C348(); extern void FUN_0201FD58(u32 param0); -extern u32 FUN_02009660(u32 *param0, s32 param1); -extern void FUN_020096B4(u32 param0); -extern void FUN_02009C30(u32 *param0); -extern void FUN_02009E28(u32 *param0); -extern void FUN_02009448(u32 *param0); -extern void FUN_02008E2C(u32 param0); extern void FUN_0201C350(u32 param0); extern void FUN_0201D12C(); extern void FUN_0201E08C(); extern void FUN_02009FA0(); -extern u32 FUN_0200965C(s32 param0); -extern void FUN_02009668(void *param0, u32 param1, u32 param2); -extern u32 FUN_020096CC(u32 param0); -extern u32 FUN_02008DEC(u32 param0, s32 param1, u32 param2); -extern u32 *FUN_02009424(u32 param0, u32 param1); -extern u32 FUN_020093A8(u32 param0, u32 param1, u32 *param2, u32 param3); -extern void FUN_02009A90(u32 *param0); -extern void FUN_02009D34(u32 *param0); extern u32 FUN_0201FE94(struct UnkStruct_0200BB14_4 *param0); extern void FUN_02020130(u32 param0, u32 param1); extern void FUN_02020248(u32 param0, u32 param1); -extern u32 FUN_0200945C(u32 param0, s32 param1); -extern u32 FUN_02008F34( - u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6); -extern void FUN_02009B04(u32 param0); -extern u32 FUN_02008FEC( - u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6, u32 param7); -extern u32 FUN_02009D68(u32 param0); -extern u32 FUN_02009E88(u32 param0, u32 param1); extern void FUN_02003108(u32 param0, u32 param1, u16 param2, u32 param3); extern u8 FUN_020202A0(u32 param0); -extern u32 FUN_020094F0(u32 param0, u32 param1); -extern u32 FUN_02009E54(u32 param0, u32 param1); -extern void FUN_02009CDC(u32 param0); -extern u32 FUN_020090AC( - u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6); -extern u32 FUN_02009530(u32 param0); -extern void FUN_02009490(u32 param0, u32 param1); extern void FUN_0201D324(u32 param0); extern void FUN_0201E1C8(u32 param0); extern void FUN_020201E4(u32 param0, u32 param1); @@ -91,12 +63,6 @@ extern void FUN_02020100(u32 param0, u32 param1); extern void FUN_02020054(u32 param0, u32 *param1); extern void FUN_02020358(u32 param0, u32 param1); extern void FUN_02020398(u32 param0, u32 param1); -extern void FUN_02009AC4(u32 param0); -extern void FUN_02009B78(u32 param0); -extern void FUN_020090FC(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); -extern void FUN_02009BE8(u32 param0); -extern void FUN_02009168(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); -extern void FUN_02009DE0(u32 param0); THUMB_FUNC struct UnkStruct_0200BB14_1 *FUN_0200BB14(u32 heap_id) { @@ -293,12 +259,12 @@ THUMB_FUNC BOOL FUN_0200BD20( } param1->unk54 = st14; - u32 r2 = FUN_0200965C(st14); + u32 r2 = FUN_0200965C(); param1->unk08 = AllocFromHeap(param0->unk000, r2 * st14); for (s32 i = 0; i < st14; i++) { - u32 st18 = FUN_02009660(param1->unk08, i); + struct UnkStruct_02008DEC_2 *st18 = FUN_02009660(param1->unk08, i); void *st1c = AllocAndReadFile(param0->unk000, st10[i]); FUN_02009668(st1c, st18, param0->unk000); @@ -313,7 +279,7 @@ THUMB_FUNC BOOL FUN_0200BD20( for (s32 i = 0; i < st14; i++) { - u32 st20 = FUN_02009660(param1->unk08, i); + struct UnkStruct_02008DEC_2 *st20 = FUN_02009660(param1->unk08, i); param1->unk24[i] = FUN_02009424(FUN_020096CC(st20), param0->unk000); param1->unk3c[i] = FUN_020093A8(param1->unk0c[i], st20, param1->unk24[i], param0->unk000); } @@ -432,7 +398,7 @@ THUMB_FUNC u32 FUN_0200BE74(u32 *param0, } THUMB_FUNC BOOL FUN_0200BF60( - struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2) + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, s32 *param2) { struct UnkStruct_0200BB14_1 *st0 = param0; s32 i; @@ -462,9 +428,9 @@ THUMB_FUNC BOOL FUN_0200BF60( param1->unk24[i] = FUN_02009424(param2[i], st0->unk000); param1->unk3c[i] = 0; - for (s32 j = 0; j < (s32)param1->unk24[i][1]; j++) + for (s32 j = 0; j < param1->unk24[i]->unk04; j++) { - ((u32 *)param1->unk24[i][0])[j] = 0; + param1->unk24[i]->unk00[j] = NULL; } } } @@ -474,9 +440,9 @@ THUMB_FUNC BOOL FUN_0200BF60( THUMB_FUNC BOOL FUN_0200C00C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6) { @@ -485,8 +451,8 @@ THUMB_FUNC BOOL FUN_0200C00C(u32 *param0, return FALSE; } - u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); - if (r5 != 0) + struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + if (r5 != NULL) { FUN_02009B04(r5); FUN_0200C474(param1->unk24[0], r5); @@ -494,14 +460,14 @@ THUMB_FUNC BOOL FUN_0200C00C(u32 *param0, } GF_ASSERT(0); - return r5 != 0 ? TRUE : FALSE; + return r5 != NULL ? TRUE : FALSE; } THUMB_FUNC s32 FUN_0200C06C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, u32 param6, s32 param7) @@ -511,16 +477,16 @@ THUMB_FUNC s32 FUN_0200C06C(u32 *param0, return -1; } - u32 r5 = + struct UnkStruct_02008DEC_sub * r5 = FUN_02008FEC(param1->unk0c[1], param2, param3, param4, param7, param6, param5, param0[0]); - if (r5 != 0) + if (r5 != NULL) { GF_ASSERT(FUN_02009D68(r5) == 1); FUN_0200C474(param1->unk24[1], r5); return (s8)FUN_02009E88(r5, param6); } - GF_ASSERT(0); + GF_ASSERT(FALSE); return -1; } @@ -528,9 +494,9 @@ THUMB_FUNC u8 FUN_0200C0DC(u32 param0, u32 param1, u32 *param2, struct UnkStruct_0200BB14_2 *param3, - u32 param4, - u32 param5, - u32 param6, + NarcId param4, + s32 param5, + BOOL param6, u32 param7, u32 param8, s32 param9) @@ -546,9 +512,9 @@ THUMB_FUNC u8 FUN_0200C0DC(u32 param0, THUMB_FUNC BOOL FUN_0200C124(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, s32 param5) { return FUN_0200C404(param0, param1, param2, param3, param4, 2, param5); @@ -556,9 +522,9 @@ THUMB_FUNC BOOL FUN_0200C124(u32 *param0, THUMB_FUNC BOOL FUN_0200C13C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, s32 param5) { return FUN_0200C404(param0, param1, param2, param3, param4, 3, param5); @@ -698,12 +664,12 @@ THUMB_FUNC struct UnkStruct_0200BB14_5 *FUN_0200C154( return ptr; } -THUMB_FUNC u32 FUN_0200C334(u32 *param0, u32 param1) +THUMB_FUNC u32 FUN_0200C334(struct UnkStruct_02008DEC_1 **param0, s32 param1) { return FUN_02009E54(FUN_020094F0(param0[4], param1), 0); } -THUMB_FUNC u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2) +THUMB_FUNC s32 FUN_0200C344(struct UnkStruct_02008DEC_1 **param0, s32 param1, u32 param2) { return FUN_02009E88(FUN_020094F0(param0[4], param1), param2); } @@ -752,15 +718,15 @@ THUMB_FUNC void FUN_0200C3DC(u32 *param0) } FUN_0201FFC8(param0[0]); - FUN_02008C80(param0[2]); + FUN_02008C80((struct UnkStruct_02008AA4_1 *)param0[2]); FreeToHeap(param0); } THUMB_FUNC BOOL FUN_0200C404(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6) { @@ -769,25 +735,25 @@ THUMB_FUNC BOOL FUN_0200C404(u32 *param0, return FALSE; } - u32 r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]); - if (r5 != 0) + struct UnkStruct_02008DEC_sub *r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]); + if (r5 != NULL) { BOOL r4 = FUN_0200C474(param1->unk24[param5], r5); GF_ASSERT(r4 == TRUE); return r4; } GF_ASSERT(0); - return r5 != 0 ? TRUE : FALSE; + return r5 != NULL ? TRUE : FALSE; } -THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1) +THUMB_FUNC BOOL FUN_0200C474(struct UnkStruct_02008DEC_5 *param0, struct UnkStruct_02008DEC_sub *param1) { - for (s32 i = 0; i < (s32)param0[1]; i++) + for (s32 i = 0; i < param0->unk04; i++) { - if (((u32 *)param0[0])[i] == 0) + if (param0->unk00[i] == NULL) { - ((u32 *)param0[0])[i] = param1; - param0[2]++; + param0->unk00[i] = param1; + param0->unk08++; return TRUE; } } @@ -795,19 +761,19 @@ THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1) return FALSE; } -THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2) +THUMB_FUNC BOOL FUN_0200C4A8(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2) { - for (s32 i = 0; i < (s32)param1[1]; i++) + for (s32 i = 0; i < param1->unk04; i++) { - if (((u32 *)param1[0])[i] != 0) + if (param1->unk00[i] != 0) { - u32 r0 = FUN_02009530(((u32 *)param1[0])[i]); + s32 r0 = FUN_02009530(param1->unk00[i]); if (r0 == param2) { - FUN_02009490(param0, ((u32 *)param1[0])[i]); - ((u32 *)param1[0])[i] = 0; - param1[2]--; + FUN_02009490(param0, param1->unk00[i]); + param1->unk00[i] = NULL; + param1->unk08--; return TRUE; } @@ -817,20 +783,20 @@ THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2) return FALSE; } -THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2) +THUMB_FUNC BOOL FUN_0200C4F4(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2) { - for (s32 i = 0; i < (s32)param1[1]; i++) + for (s32 i = 0; i < param1->unk04; i++) { - if (((u32 *)param1[0])[i] != 0) + if (param1->unk00[i] != NULL) { - u32 r0 = FUN_02009530(((u32 *)param1[0])[i]); + s32 r0 = FUN_02009530(param1->unk00[i]); if (r0 == param2) { FUN_0201D324(param2); - FUN_02009490(param0, ((u32 *)param1[0])[i]); - ((u32 *)param1[0])[i] = 0; - param1[2]--; + FUN_02009490(param0, param1->unk00[i]); + param1->unk00[i] = NULL; + param1->unk08--; return TRUE; } @@ -840,20 +806,20 @@ THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2) return FALSE; } -THUMB_FUNC BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2) +THUMB_FUNC BOOL FUN_0200C548(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2) { - for (s32 i = 0; i < (s32)param1[1]; i++) + for (s32 i = 0; i < param1->unk04; i++) { - if (((u32 *)param1[0])[i] != 0) + if (param1->unk00[i] != 0) { - u32 r0 = FUN_02009530(((u32 *)param1[0])[i]); + s32 r0 = FUN_02009530(param1->unk00[i]); if (r0 == param2) { FUN_0201E1C8(param2); - FUN_02009490(param0, ((u32 *)param1[0])[i]); - ((u32 *)param1[0])[i] = 0; - param1[2]--; + FUN_02009490(param0, param1->unk00[i]); + param1->unk00[i] = NULL; + param1->unk08--; return TRUE; } @@ -1205,9 +1171,9 @@ THUMB_FUNC void FUN_0200C90C(u32 *param0, u32 param1) THUMB_FUNC BOOL FUN_0200C918(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6) { @@ -1216,8 +1182,8 @@ THUMB_FUNC BOOL FUN_0200C918(u32 *param0, return FALSE; } - u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); - if (r5 != 0) + struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + if (r5 != NULL) { FUN_02009AC4(r5); FUN_0200C474(param1->unk24[0], r5); @@ -1225,15 +1191,15 @@ THUMB_FUNC BOOL FUN_0200C918(u32 *param0, return TRUE; } - GF_ASSERT(0); - return r5 != 0 ? TRUE : FALSE; + GF_ASSERT(FALSE); + return r5 != NULL ? TRUE : FALSE; } THUMB_FUNC BOOL FUN_0200C978(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6) { @@ -1242,8 +1208,8 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0, return FALSE; } - u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); - if (r5 != 0) + struct UnkStruct_02008DEC_sub *r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]); + if (r5 != NULL) { FUN_02009B78(r5); FUN_0200C474(param1->unk24[0], r5); @@ -1251,23 +1217,23 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0, return TRUE; } - GF_ASSERT(0); - return r5 != 0 ? TRUE : FALSE; + GF_ASSERT(FALSE); + return r5 != NULL ? TRUE : FALSE; } THUMB_FUNC void FUN_0200C9D8( - u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5) + u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5) { - u32 r6 = FUN_020094F0(param1[3], param5); + struct UnkStruct_02008DEC_sub *r6 = FUN_020094F0(param1[3], param5); FUN_020090FC(param1[3], r6, param2, param3, param4, param0[0]); FUN_02009BE8(r6); } THUMB_FUNC void FUN_0200CA0C( - u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5) + u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5) { - u32 r6 = FUN_020094F0(param1[4], param5); + struct UnkStruct_02008DEC_sub *r6 = FUN_020094F0(param1[4], param5); FUN_02009168(param1[4], r6, param2, param3, param4, param0[0]); FUN_02009DE0(r6); diff --git a/include/unk_02008AA4.h b/include/unk_02008AA4.h index 448a7101..00343884 100644 --- a/include/unk_02008AA4.h +++ b/include/unk_02008AA4.h @@ -31,20 +31,20 @@ void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0, s32 param6, u32 param7, u32 param8, - u32 param9, - u32 param10, - u32 param11, - u32 param12, - u32 param13, - u32 param14); + struct UnkStruct_02008DEC_1 *param9, + struct UnkStruct_02008DEC_1 *param10, + struct UnkStruct_02008DEC_1 *param11, + struct UnkStruct_02008DEC_1 *param12, + struct UnkStruct_02008DEC_1 *param13, + struct UnkStruct_02008DEC_1 *param14); struct UnkStruct_02008AA4_1 *FUN_02008BE0(struct UnkStruct_02008AA4_2 *param0, u32 param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - u32 param6, - u32 param7); + struct UnkStruct_02008DEC_1 *param2, + struct UnkStruct_02008DEC_1 *param3, + struct UnkStruct_02008DEC_1 *param4, + struct UnkStruct_02008DEC_1 *param5, + struct UnkStruct_02008DEC_1 *param6, + struct UnkStruct_02008DEC_1 *param7); void FUN_02008C80(struct UnkStruct_02008AA4_1 *param0); u32 FUN_02008C9C(u32 param0, void *param1, u32 param2); void FUN_02008D04(u32 param0, u32 param1, u32 param2); diff --git a/include/unk_02008DEC.h b/include/unk_02008DEC.h new file mode 100644 index 00000000..6504b524 --- /dev/null +++ b/include/unk_02008DEC.h @@ -0,0 +1,285 @@ +#ifndef POKEDIAMOND_UNK_02008DEC_H +#define POKEDIAMOND_UNK_02008DEC_H + +#include "global.h" +#include "NNS_g2d.h" +#include "filesystem.h" + +struct UnkStruct_02008DEC_sub +{ + u32 unk00; + u32 unk04; + void *unk08; +}; + +struct UnkStruct_02008DEC_1 +{ + + u32 unk00; + struct UnkStruct_02008DEC_sub *unk04; + s32 unk08; + u32 unk0C; + s32 unk10; +}; + +struct UnkStruct_02008DEC_2 +{ + union + { + struct UnkStruct_02008DEC_3 *unk00_3; + struct UnkStruct_02008DEC_4 *unk00_4; + }; + s32 unk04; + u32 unk08; + u8 unk0C; +}; + +struct UnkStruct_02008DEC_3 +{ + s32 unk00; + u8 unk04[0x40]; + u32 unk44; + u32 unk48; +}; + +struct UnkStruct_02008DEC_4 +{ + NarcId unk00; + s32 unk04; + BOOL unk08; + s32 unk0C; + u32 unk10; + u32 unk14; +}; + +struct UnkStruct_02008DEC_5 +{ + struct UnkStruct_02008DEC_sub **unk00; + s32 unk04; + s32 unk08; +}; + +struct CharacterData_02008DEC +{ + NNSG2dCharacterData *chData; + u32 unk04; +}; + +struct PaletteData_02008DEC +{ + NNSG2dPaletteData *plttData; + u32 unk04; + u32 unk08; +}; + +struct CellDataBank_02008DEC +{ + NNSG2dCellDataBank *cellBank; +}; + +struct AnimBank_02008DEC +{ + NNSG2dAnimBankData *bankData; +}; + +struct UnkStruct_02008DEC_1 *FUN_02008DEC(u32 param0, s32 param1, u32 param2); +void FUN_02008E2C(struct UnkStruct_02008DEC_1 *param0); +struct UnkStruct_02008DEC_sub *FUN_02008E6C(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_2 *param1, + s32 param2, + u32 param3); +struct UnkStruct_02008DEC_sub *FUN_02008F34(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6); +struct UnkStruct_02008DEC_sub *FUN_02008F90(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + BOOL param7); +struct UnkStruct_02008DEC_sub *FUN_02008FEC(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7); +struct UnkStruct_02008DEC_sub *FUN_0200904C(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7, + BOOL param8); +struct UnkStruct_02008DEC_sub *FUN_020090AC(struct UnkStruct_02008DEC_1 *param0, + NarcId param1, + s32 param2, + BOOL param3, + s32 param4, + u32 param5, + u32 param6); +void FUN_020090FC(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + u32 param5); +void FUN_02009168(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + u32 param5); +struct UnkStruct_02008DEC_sub *FUN_020091E0(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6); +struct UnkStruct_02008DEC_sub *FUN_0200923C(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7); +struct UnkStruct_02008DEC_sub *FUN_02009298(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7); +struct UnkStruct_02008DEC_sub *FUN_020092F8(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6, + u32 param7, + u32 param8); +struct UnkStruct_02008DEC_sub *FUN_02009358(struct UnkStruct_02008DEC_1 *param0, + NARC *param1, + u32 param2, + u32 param3, + s32 param4, + u32 param5, + u32 param6); +s32 FUN_020093A8(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_2 *param1, + struct UnkStruct_02008DEC_5 *param2, + u32 param3); +void FUN_020093DC(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_2 *param1, + s32 param2, + s32 param3, + struct UnkStruct_02008DEC_5 *param4, + u32 param5); +struct UnkStruct_02008DEC_5 *FUN_02009424(s32 param0, u32 param1); +void FUN_02009448(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_0200945C(struct UnkStruct_02008DEC_1 *param0, s32 param1); +void FUN_02009474(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009490(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_sub *param1); +void FUN_020094C4(struct UnkStruct_02008DEC_1 *param0); +struct UnkStruct_02008DEC_sub *FUN_020094F0(struct UnkStruct_02008DEC_1 *param0, s32 param1); +s32 FUN_02009530(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_02009544(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_0200955C(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_02009574(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_0200958C(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_020095A4(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_020095BC(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_020095D4(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_020095E4(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_02009610(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009630(struct UnkStruct_02008DEC_sub *param0, u32 param1); +u32 FUN_0200965C(void); +struct UnkStruct_02008DEC_2 *FUN_02009660(struct UnkStruct_02008DEC_2 *param0, s32 param1); +void FUN_02009668(u32 *param0, struct UnkStruct_02008DEC_2 *param1, u32 param2); +void FUN_020096B4(struct UnkStruct_02008DEC_2 *param0); +s32 FUN_020096CC(struct UnkStruct_02008DEC_2 *param0); +s32 FUN_020096DC(struct UnkStruct_02008DEC_2 *param0, s32 param1); +s32 FUN_02009710(struct UnkStruct_02008DEC_2 *param0, s32 param1); +BOOL FUN_0200973C(struct UnkStruct_02008DEC_2 *param0, s32 param1); +u32 FUN_02009768(struct UnkStruct_02008DEC_2 *param0, s32 param1); +u32 FUN_0200979C(struct UnkStruct_02008DEC_2 *param0, s32 param1); +struct UnkStruct_02008DEC_sub *FUN_020097D0(struct UnkStruct_02008DEC_1 *param0); +void FUN_020097FC( + struct UnkStruct_02008DEC_sub *param0, u32 param1, u32 param2, u32 param3, u32 param4); +struct CharacterData_02008DEC *FUN_0200986C(void *param0, u32 param1, u32 param2); +struct PaletteData_02008DEC *FUN_0200988C(void *param0, u32 param1, u32 param2, u32 param3); +struct CellDataBank_02008DEC *FUN_020098B0(void *param0, u32 param1); +struct AnimBank_02008DEC *FUN_020098CC(void *param0, u32 param1); +void *FUN_020098E8(void *param0, u32 param1); +void *FUN_02009904(void *param0, u32 param1); +void FUN_02009920(struct UnkStruct_02008DEC_sub *param0); +u32 *FUN_02009934(struct UnkStruct_02008DEC_sub *param0); +void FUN_0200994C(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + void *param2, + s32 param3, + u32 param4, + u32 param5, + u32 param6, + u32 param7); +void FUN_02009978(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NarcId param2, + s32 param3, + BOOL param4, + s32 param5, + u32 param6, + u32 param7, + u32 param8, + u32 param9, + BOOL param10); +void FUN_020099B0(struct UnkStruct_02008DEC_1 *param0, + struct UnkStruct_02008DEC_sub *param1, + NARC *param2, + u32 param3, + u32 param4, + s32 param5, + u32 param6, + u32 param7, + u32 param8, + u32 param9, + u32 param10); +s32 FUN_020099E8(struct UnkStruct_02008DEC_4 *param0); +void *FUN_02009A04(NARC *param0, u32 param1, u32 param2, u32 param3, u32 param4); +u32 FUN_02009A50(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009A90(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_02009AC4(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_02009B04(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009B44(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_02009B78(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009BB8(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1); +void FUN_02009BE8(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009C0C(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009C30(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_02009C5C(struct UnkStruct_02008DEC_sub *param0); +u32 FUN_02009C80(struct UnkStruct_02008DEC_sub *param0, struct UnkStruct_02008DEC_sub *param1); +void FUN_02009CDC(u32 param0); +u32 FUN_02009CF0(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009D34(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_02009D68(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009DAC(struct UnkStruct_02008DEC_5 *param0); +void FUN_02009DE0(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009E04(struct UnkStruct_02008DEC_sub *param0); +void FUN_02009E28(struct UnkStruct_02008DEC_5 *param0); +u32 FUN_02009E54(struct UnkStruct_02008DEC_sub *param0, u32 param1); +s32 FUN_02009E88(struct UnkStruct_02008DEC_sub *param0, u32 param1); + +#endif // POKEDIAMOND_UNK_02008DEC_H diff --git a/include/unk_0200BB14.h b/include/unk_0200BB14.h index 04c6dcb0..7d5a0083 100644 --- a/include/unk_0200BB14.h +++ b/include/unk_0200BB14.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_UNK_0200BB14_H #include "global.h" +#include "unk_02008DEC.h" struct UnkStruct_0200BB14_1 { @@ -16,10 +17,10 @@ struct UnkStruct_0200BB14_2 { u32 unk00; struct UnkStruct_02008AA4_1 *unk04; - u32 *unk08; - u32 unk0c[6]; - u32 *unk24[6]; - u32 unk3c[6]; + struct UnkStruct_02008DEC_2 *unk08; + struct UnkStruct_02008DEC_1 *unk0c[6]; + struct UnkStruct_02008DEC_5 *unk24[6]; + s32 unk3c[6]; s32 unk54; }; @@ -117,19 +118,19 @@ u32 FUN_0200BE74(u32 *param0, u32 param12, u32 param13); BOOL FUN_0200BF60( - struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2); + struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, s32 *param2); BOOL FUN_0200C00C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6); s32 FUN_0200C06C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, u32 param6, s32 param7); @@ -137,28 +138,28 @@ u8 FUN_0200C0DC(u32 param0, u32 param1, u32 *param2, struct UnkStruct_0200BB14_2 *param3, - u32 param4, - u32 param5, - u32 param6, + NarcId param4, + s32 param5, + BOOL param6, u32 param7, u32 param8, s32 param9); BOOL FUN_0200C124(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, s32 param5); BOOL FUN_0200C13C(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, s32 param5); struct UnkStruct_0200BB14_5 *FUN_0200C154( struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2); -u32 FUN_0200C334(u32 *param0, u32 param1); -u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2); +u32 FUN_0200C334(struct UnkStruct_02008DEC_1 **param0, s32 param1); +s32 FUN_0200C344(struct UnkStruct_02008DEC_1 **param0, s32 param1, u32 param2); BOOL FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1); BOOL FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1); BOOL FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1); @@ -167,15 +168,15 @@ void FUN_0200C398(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14 void FUN_0200C3DC(u32 *param0); BOOL FUN_0200C404(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6); -BOOL FUN_0200C474(u32 *param0, u32 param1); -BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2); -BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2); -BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2); +BOOL FUN_0200C474(struct UnkStruct_02008DEC_5 *param0, struct UnkStruct_02008DEC_sub *param1); +BOOL FUN_0200C4A8(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2); +BOOL FUN_0200C4F4(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2); +BOOL FUN_0200C548(struct UnkStruct_02008DEC_1 *param0, struct UnkStruct_02008DEC_5 *param1, u32 param2); void FUN_0200C59C(u32 param0); void FUN_0200C5A8(u32 *param0); void FUN_0200C5B4(u32 *param0, u32 param1); @@ -233,20 +234,22 @@ void FUN_0200C904(u32 param0, u32 param1); void FUN_0200C90C(u32 *param0, u32 param1); BOOL FUN_0200C918(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6); BOOL FUN_0200C978(u32 *param0, struct UnkStruct_0200BB14_2 *param1, - u32 param2, - u32 param3, - u32 param4, + NarcId param2, + s32 param3, + BOOL param4, u32 param5, s32 param6); -void FUN_0200C9D8(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5); -void FUN_0200CA0C(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5); +void FUN_0200C9D8( + u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5); +void FUN_0200CA0C( + u32 *param0, struct UnkStruct_02008DEC_1 **param1, NarcId param2, s32 param3, BOOL param4, s32 param5); u32 FUN_0200CA40(u32 *param0); #endif // POKEDIAMOND_UNK_0200BB14_H |