summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira Akashi <rubenru09@aol.com>2021-08-15 09:13:57 +0100
committerGitHub <noreply@github.com>2021-08-15 09:13:57 +0100
commita6b9c13d97e130e43c774f81c383ad452811ef75 (patch)
tree0364bcca92f61e8aea195b1459774d2f494f05b8
parent3b396519495ce258e203e9cdec5716406b450711 (diff)
parentee3f5159550b154ea8b5c01b518756638eb5c4a0 (diff)
Merge pull request #445 from remicalixte/unk_02008DEC
decompile unk_02008DEC.s
-rw-r--r--arm9/asm/unk_02008DEC.s2280
-rw-r--r--arm9/src/unk_02008AA4.c46
-rw-r--r--arm9/src/unk_02008DEC.c1118
-rw-r--r--arm9/src/unk_0200BB14.c196
-rw-r--r--include/unk_02008AA4.h24
-rw-r--r--include/unk_02008DEC.h285
-rw-r--r--include/unk_0200BB14.h77
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 = &param1->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 = &param1->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, &param0->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 &param0->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 &param0[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 &param0->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