summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/unk_0200BB14.s4
-rw-r--r--arm9/asm/unk_0201B1A8.s2
-rw-r--r--arm9/asm/unk_0201F06C.s4
-rw-r--r--arm9/asm/unk_02020C44.s2
-rw-r--r--arm9/asm/unk_02033B68.s6
-rw-r--r--arm9/asm/unk_02033F50.s2
-rw-r--r--arm9/asm/unk_02034188.s2
-rw-r--r--arm9/asm/unk_02035068.s4
-rw-r--r--arm9/asm/unk_020372D4.s12
-rw-r--r--arm9/asm/unk_020377F0.s4
-rw-r--r--arm9/asm/unk_020484A8.s4
-rw-r--r--arm9/asm/unk_0204FBA8.s4
-rw-r--r--arm9/asm/unk_020520AC.s4
-rw-r--r--arm9/asm/unk_02052EE8.s4
-rw-r--r--arm9/asm/unk_02053750.s4
-rw-r--r--arm9/asm/unk_020625EC.s4
-rw-r--r--arm9/asm/unk_020653EC.s4
-rw-r--r--arm9/asm/unk_0206C700.s2
-rw-r--r--arm9/asm/unk_0206F1F0.s2
-rw-r--r--arm9/asm/unk_0206F3FC.s6
-rw-r--r--arm9/asm/unk_020772F0.s6
-rw-r--r--arm9/asm/unk_02079C70.s6
-rw-r--r--arm9/asm/unk_02080C38.s4
-rw-r--r--arm9/asm/unk_020854E0.s4
-rw-r--r--arm9/asm/unk_020859C0.s4
-rw-r--r--arm9/asm/unk_02086084.s4
-rw-r--r--arm9/asm/unk_02087D00.s4
-rw-r--r--arm9/asm/unk_02088858.s4
-rw-r--r--arm9/asm/unk_0208898C.s4
-rw-r--r--arm9/asm/unk_02089498.s6
-rw-r--r--arm9/asm/unk_02089960.s6
-rw-r--r--arm9/asm/unk_02089D90.s2
-rw-r--r--arm9/asm/unk_02089F24.s4
-rw-r--r--arm9/global.inc34
-rw-r--r--arm9/lib/include/NNS_FND_allocator.h34
-rw-r--r--arm9/lib/include/NNS_FND_expheap.h55
-rw-r--r--arm9/lib/include/NNS_FND_heapcommon.h26
-rw-r--r--arm9/lib/include/NNS_FND_list.h20
-rw-r--r--arm9/lib/include/consts.h1
-rw-r--r--arm9/lib/include/tp.h8
-rw-r--r--arm9/modules/05/asm/mod05_021D74E0.s4
-rw-r--r--arm9/modules/05/asm/mod05_021D9320.s4
-rw-r--r--arm9/modules/05/asm/mod05_021D9A48.s2
-rw-r--r--arm9/modules/05/asm/mod05_021DB44C.s2
-rw-r--r--arm9/modules/05/asm/mod05_021DBEF4.s4
-rw-r--r--arm9/modules/05/asm/mod05_021E4AE4.s2
-rw-r--r--arm9/modules/05/asm/module_05.s8
-rw-r--r--arm9/modules/06/asm/module_06.s30
-rw-r--r--arm9/modules/11/asm/module_11_thumb1.s10
-rw-r--r--arm9/modules/12/asm/module_12.s24
-rw-r--r--arm9/modules/14/asm/module_14.s20
-rw-r--r--arm9/modules/15/asm/module_15.s8
-rw-r--r--arm9/modules/16/asm/module_16.s4
-rw-r--r--arm9/modules/17/asm/module_17.s24
-rw-r--r--arm9/modules/18/asm/module_18.s6
-rw-r--r--arm9/modules/19/asm/module_19.s4
-rw-r--r--arm9/modules/20/asm/module_20.s8
-rw-r--r--arm9/modules/24/asm/module_24.s20
-rw-r--r--arm9/modules/36/asm/module_36.s8
-rw-r--r--arm9/modules/52/src/module_52.c12
-rw-r--r--arm9/modules/53/asm/module_53.s6
-rw-r--r--arm9/modules/54/asm/module_54.s6
-rw-r--r--arm9/modules/55/asm/module_55.s8
-rw-r--r--arm9/modules/56/asm/module_56.s8
-rw-r--r--arm9/modules/57/asm/module_57.s6
-rw-r--r--arm9/modules/58/asm/module_58.s6
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0_asm.s4
-rw-r--r--arm9/modules/59/asm/mod59_021D9868.s6
-rw-r--r--arm9/modules/59/src/mod59_021D74E0_src.c2
-rw-r--r--arm9/modules/60/asm/module_60.s4
-rw-r--r--arm9/modules/61/asm/module_61.s4
-rw-r--r--arm9/modules/63/asm/mod63_021D74E0.s8
-rw-r--r--arm9/modules/63/asm/mod63_021D8890.s8
-rw-r--r--arm9/modules/64/asm/module_64.s6
-rw-r--r--arm9/modules/65/asm/module_65.s8
-rw-r--r--arm9/modules/66/asm/module_66.s4
-rw-r--r--arm9/modules/67/asm/module_67.s6
-rw-r--r--arm9/modules/68/asm/module_68.s6
-rw-r--r--arm9/modules/69/asm/module_69.s4
-rw-r--r--arm9/modules/70/asm/module_70.s8
-rw-r--r--arm9/modules/71/asm/module_71.s10
-rw-r--r--arm9/modules/73/asm/module_73.s4
-rw-r--r--arm9/modules/74/asm/module_74.s4
-rw-r--r--arm9/modules/75/asm/module_75.s6
-rw-r--r--arm9/modules/76/asm/module_76.s4
-rw-r--r--arm9/modules/77/asm/module_77.s6
-rw-r--r--arm9/modules/78/asm/module_78.s6
-rw-r--r--arm9/modules/80/asm/module_80.s6
-rw-r--r--arm9/modules/81/asm/module_81.s8
-rw-r--r--arm9/modules/82/asm/module_82.s6
-rw-r--r--arm9/modules/83/asm/module_83.s46
-rw-r--r--arm9/modules/84/asm/module_84_thumb1.s6
-rw-r--r--arm9/modules/85/asm/module_85.s4
-rw-r--r--arm9/modules/86/asm/module_86.s6
-rw-r--r--arm9/src/error_message_reset.c14
-rw-r--r--arm9/src/game_init.c284
-rw-r--r--arm9/src/heap.c363
-rw-r--r--arm9/src/main.c10
-rw-r--r--arm9/src/options.c6
-rw-r--r--arm9/src/unk_02016B94.c10
-rw-r--r--arm9/src/unk_0202F150.c2
-rw-r--r--arm9/src/unk_02031734.c46
-rw-r--r--include/game_init.h30
-rw-r--r--include/heap.h40
-rw-r--r--include/main.h30
-rw-r--r--include/unk_02016B94.h4
106 files changed, 883 insertions, 716 deletions
diff --git a/arm9/asm/unk_0200BB14.s b/arm9/asm/unk_0200BB14.s
index b8a6eab5..840d91d1 100644
--- a/arm9/asm/unk_0200BB14.s
+++ b/arm9/asm/unk_0200BB14.s
@@ -342,7 +342,7 @@ _0200BD68:
str r0, [sp, #0x18]
ldr r0, [r5, #0x0]
ldr r1, [r6, #0x0]
- bl FUN_020161A4
+ bl AllocAndReadFile
ldr r1, [sp, #0x18]
ldr r2, [r5, #0x0]
str r0, [sp, #0x1c]
@@ -408,7 +408,7 @@ _0200BDF6:
ldr r1, [sp, #0x10]
ldr r0, [r5, #0x0]
ldr r1, [r1, #0x18]
- bl FUN_020161A4
+ bl AllocAndReadFile
ldr r1, [r4, #0x14]
add r6, r0, #0x0
str r1, [sp, #0x0]
diff --git a/arm9/asm/unk_0201B1A8.s b/arm9/asm/unk_0201B1A8.s
index 359f9bfe..115edca0 100644
--- a/arm9/asm/unk_0201B1A8.s
+++ b/arm9/asm/unk_0201B1A8.s
@@ -21,7 +21,7 @@ FUN_0201B1A8: ; 0x0201B1A8
push {r3-r5, lr}
add r5, r3, #0x0
add r4, r2, #0x0
- bl FUN_020161A4
+ bl AllocAndReadFile
str r0, [r5, #0x0]
bl NNS_G3dGetTex
cmp r0, #0x0
diff --git a/arm9/asm/unk_0201F06C.s b/arm9/asm/unk_0201F06C.s
index 03e1404e..e465b1ec 100644
--- a/arm9/asm/unk_0201F06C.s
+++ b/arm9/asm/unk_0201F06C.s
@@ -265,7 +265,7 @@ _0201F1C8:
ldr r0, [r0, #0x0]
ldr r1, [r5, #0x4]
mov r2, #0x4
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
ldr r0, [r5, #0x0]
ldr r1, [r5, #0x4]
bl FUN_0201C360
@@ -1821,7 +1821,7 @@ _0201FD0C:
str r0, [r4, r1]
ldr r0, [r5, #0x8]
ldr r1, _0201FD54 ; =UNK_02105BBC
- bl FUN_020161A4
+ bl AllocAndReadFile
mov r1, #0x46
lsl r1, r1, #0x2
str r0, [r4, r1]
diff --git a/arm9/asm/unk_02020C44.s b/arm9/asm/unk_02020C44.s
index 235543ee..4550b5cb 100644
--- a/arm9/asm/unk_02020C44.s
+++ b/arm9/asm/unk_02020C44.s
@@ -146,7 +146,7 @@ _02020D38:
_02020D48:
ldr r0, [sp, #0x0]
add r1, r6, #0x0
- bl FUN_020161A4
+ bl AllocAndReadFile
str r0, [r4, #0x4]
cmp r0, #0x0
bne _02020D5A
diff --git a/arm9/asm/unk_02033B68.s b/arm9/asm/unk_02033B68.s
index 9e204377..57ae58f9 100644
--- a/arm9/asm/unk_02033B68.s
+++ b/arm9/asm/unk_02033B68.s
@@ -326,7 +326,7 @@ FUN_02033D3C: ; 0x02033D3C
beq _02033D92
ldr r0, _02033D98 ; =UNK_02105D88
add r1, sp, #0x4
- bl FUN_020161F8
+ bl OpenAndReadWholeFile
mov r1, #0x96
ldr r0, [sp, #0x4]
lsl r1, r1, #0x2
@@ -374,11 +374,11 @@ FUN_02033D9C: ; 0x02033D9C
add r1, sp, #0x4
beq _02033DC2
ldr r0, _02033E5C ; =UNK_02105D98
- bl FUN_020161F8
+ bl OpenAndReadWholeFile
b _02033DC8
_02033DC2:
ldr r0, _02033E60 ; =UNK_02105DA8
- bl FUN_020161F8
+ bl OpenAndReadWholeFile
_02033DC8:
mov r1, #0x96
ldr r0, [sp, #0x4]
diff --git a/arm9/asm/unk_02033F50.s b/arm9/asm/unk_02033F50.s
index ed33e084..eb65ebfd 100644
--- a/arm9/asm/unk_02033F50.s
+++ b/arm9/asm/unk_02033F50.s
@@ -110,7 +110,7 @@ _02033FA4:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _02034160 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
diff --git a/arm9/asm/unk_02034188.s b/arm9/asm/unk_02034188.s
index 08265835..a91f1c2c 100644
--- a/arm9/asm/unk_02034188.s
+++ b/arm9/asm/unk_02034188.s
@@ -58,7 +58,7 @@ FUN_02034188: ; 0x02034188
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _02034370 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s
index c9df4ca4..0a9414a9 100644
--- a/arm9/asm/unk_02035068.s
+++ b/arm9/asm/unk_02035068.s
@@ -3649,7 +3649,7 @@ FUN_02036E08: ; 0x02036E08
mov r0, #0x3
mov r1, #0x49
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r4, #0xc]
bl SavArray_PlayerParty_get
ldrb r1, [r5, #0x0]
@@ -3773,7 +3773,7 @@ FUN_02036F1C: ; 0x02036F1C
ldr r0, [r4, r0]
bl FUN_0206C92C
mov r0, #0x49
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02036F9C ; =0x00000475
mov r1, #0x0
bl FUN_02005350
diff --git a/arm9/asm/unk_020372D4.s b/arm9/asm/unk_020372D4.s
index 26a50555..efd22ed4 100644
--- a/arm9/asm/unk_020372D4.s
+++ b/arm9/asm/unk_020372D4.s
@@ -187,16 +187,16 @@ FUN_02037400: ; 0x02037400
mov r0, #0x3
mov r1, #0xb
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x20
mov r0, #0x3
lsl r2, r1, #0x9
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0x3
mov r0, #0x0
mov r1, #0x5b
lsl r2, r2, #0x8
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0xb8
mov r2, #0xb
@@ -282,11 +282,11 @@ FUN_020374B0: ; 0x020374B0
add r0, r5, #0x0
bl OverlayManager_FreeData
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xb
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x20
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3-r5, pc}
thumb_func_start FUN_02037504
diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s
index 9c2132bf..f564a2ab 100644
--- a/arm9/asm/unk_020377F0.s
+++ b/arm9/asm/unk_020377F0.s
@@ -1633,7 +1633,7 @@ _020382F6:
mov r0, #0x3
mov r1, #0x1a
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r5, #0xc]
bl Sav2_PlayerData_GetOptionsAddr
str r0, [sp, #0x24]
@@ -1691,7 +1691,7 @@ _02038386:
ldr r0, [r4, #0x60]
bl FUN_0206C92C
mov r0, #0x1a
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x7
str r0, [r4, #0x0]
b _020383C8
diff --git a/arm9/asm/unk_020484A8.s b/arm9/asm/unk_020484A8.s
index 929f1efa..ac3011bd 100644
--- a/arm9/asm/unk_020484A8.s
+++ b/arm9/asm/unk_020484A8.s
@@ -110,7 +110,7 @@ _02048556:
mov r1, #0x4
mov r0, #0x3
lsl r2, r1, #0xf
- bl FUN_0201681C
+ bl CreateHeap
add r0, r6, #0x0
add r1, r5, #0x0
bl FUN_02048764
@@ -240,7 +240,7 @@ _02048666:
add r0, r5, #0x0
bl FreeToHeap
mov r0, #0x4
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x0
bl OS_ResetSystem
add sp, #0xc
diff --git a/arm9/asm/unk_0204FBA8.s b/arm9/asm/unk_0204FBA8.s
index f1101a82..e53fd195 100644
--- a/arm9/asm/unk_0204FBA8.s
+++ b/arm9/asm/unk_0204FBA8.s
@@ -154,7 +154,7 @@ FUN_0204FC5C: ; 0x0204FC5C
mov r0, #0x3
mov r1, #0x21
lsl r2, r2, #0xa
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, _0204FC9C ; =UNK_021C5A6C
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x18]
@@ -2279,7 +2279,7 @@ _02050D66:
bl MOD18_0223E1A4
bl FUN_02031860
mov r0, #0x21
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02050D84 ; =UNK_021C5A6C
mov r1, #0x0
ldr r0, [r0, #0x0]
diff --git a/arm9/asm/unk_020520AC.s b/arm9/asm/unk_020520AC.s
index 8ff9a9a1..c53ca1c7 100644
--- a/arm9/asm/unk_020520AC.s
+++ b/arm9/asm/unk_020520AC.s
@@ -137,7 +137,7 @@ _020520C0:
mov r0, #0x3
mov r1, #0x1f
lsl r2, r2, #0x6
- bl FUN_02016828
+ bl CreateHeapAtEnd
add r0, r4, #0x0
bl FUN_02052110
add r5, r0, #0x0
@@ -625,7 +625,7 @@ FUN_020524A0: ; 0x020524A0
add r0, r4, #0x0
bl FreeToHeap
mov r0, #0x1f
- bl FUN_020168D0
+ bl DestroyHeap
_020524B8:
pop {r4, pc}
.balign 4
diff --git a/arm9/asm/unk_02052EE8.s b/arm9/asm/unk_02052EE8.s
index 0c163fd8..7014adcd 100644
--- a/arm9/asm/unk_02052EE8.s
+++ b/arm9/asm/unk_02052EE8.s
@@ -50,7 +50,7 @@ FUN_02052EE8: ; 0x02052EE8
ldr r0, [r0, #0x38]
str r0, [r4, #0x8]
mov r0, #0xb
- bl FUN_02016828
+ bl CreateHeapAtEnd
mov r0, #0x59
bl FUN_02053618
ldr r1, _02052F6C ; =0x000004DC
@@ -113,7 +113,7 @@ FUN_02052FA4: ; 0x02052FA4
ldr r0, [r4, r0]
bl FUN_0205362C
mov r0, #0x59
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r4, #0x0
bl FreeToHeap
pop {r4, pc}
diff --git a/arm9/asm/unk_02053750.s b/arm9/asm/unk_02053750.s
index 38f594ef..cf28dafb 100644
--- a/arm9/asm/unk_02053750.s
+++ b/arm9/asm/unk_02053750.s
@@ -974,7 +974,7 @@ _02053E24:
bl FUN_02009DAC
ldr r1, _02053E88 ; =UNK_02105F80
mov r0, #0x4
- bl FUN_020161A4
+ bl AllocAndReadFile
ldr r1, [r5, #0x10]
add r4, r0, #0x0
str r1, [sp, #0x0]
@@ -1012,7 +1012,7 @@ FUN_02053E8C: ; 0x02053E8C
add r4, r0, #0x0
mov r0, #0x4
add r1, r6, #0x0
- bl FUN_020161A4
+ bl AllocAndReadFile
add r6, r0, #0x0
add r1, r4, #0x0
mov r2, #0x4
diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s
index fc235004..09de8a47 100644
--- a/arm9/asm/unk_020625EC.s
+++ b/arm9/asm/unk_020625EC.s
@@ -61,7 +61,7 @@ FUN_020625EC: ; 0x020625EC
mov r1, #0x50
lsl r2, r0, #0xd
ldr r6, [r5, #0xc]
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x2d
mov r0, #0x50
lsl r1, r1, #0x4
@@ -194,7 +194,7 @@ _020626FE:
lsl r2, r2, #0x4
bl MI_CpuFill8
add r0, r5, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xc
add sp, #0x8
pop {r3-r7, pc}
diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s
index df203337..c7b09260 100644
--- a/arm9/asm/unk_020653EC.s
+++ b/arm9/asm/unk_020653EC.s
@@ -43,7 +43,7 @@ FUN_020653EC: ; 0x020653EC
mov r0, #0x3
mov r1, #0x2b
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x6e
mov r0, #0x2b
lsl r1, r1, #0x2
@@ -111,7 +111,7 @@ FUN_02065474: ; 0x02065474
add r0, r4, #0x0
bl FreeToHeap
ldr r0, [r4, #0x0]
- bl FUN_020168D0
+ bl DestroyHeap
pop {r4, pc}
.balign 4
diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s
index 295f1006..8f7699de 100644
--- a/arm9/asm/unk_0206C700.s
+++ b/arm9/asm/unk_0206C700.s
@@ -738,7 +738,7 @@ _0206CCCE:
mov r3, #0x4
bl FUN_02007E68
ldr r0, [r4, #0x5c]
- bl FUN_02016AF8
+ bl GF_ExpHeap_FndGetTotalFreeSize
mov r1, #0x2
lsl r1, r1, #0xe
cmp r0, r1
diff --git a/arm9/asm/unk_0206F1F0.s b/arm9/asm/unk_0206F1F0.s
index cdb5db18..8493d5db 100644
--- a/arm9/asm/unk_0206F1F0.s
+++ b/arm9/asm/unk_0206F1F0.s
@@ -203,7 +203,7 @@ _0206F34A:
ldr r2, _0206F388 ; =0x00040100
mov r0, #0x3
mov r1, #0x36
- bl FUN_0201681C
+ bl CreateHeap
bl FUN_02088878
mov r0, #0x36
bl MOD07_02211E60
diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s
index 17adb2d2..5e04c49a 100644
--- a/arm9/asm/unk_0206F3FC.s
+++ b/arm9/asm/unk_0206F3FC.s
@@ -143,12 +143,12 @@ FUN_0206F3FC: ; 0x0206F3FC
strh r1, [r3, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0x2
mov r0, #0x3
mov r1, #0xc
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
bl FUN_0206FE74
add r4, r0, #0x0
@@ -1022,7 +1022,7 @@ _0206FB30:
ldr r0, [sp, #0x0]
bl OverlayManager_FreeData
mov r0, #0xc
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r7, pc}
.balign 4
diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s
index 87e9cab0..15173c11 100644
--- a/arm9/asm/unk_020772F0.s
+++ b/arm9/asm/unk_020772F0.s
@@ -730,7 +730,7 @@ _020772FE:
mov r0, #0x3
mov r1, #0x12
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x5d
add r0, r6, #0x0
lsl r1, r1, #0x4
@@ -777,7 +777,7 @@ _020772FE:
str r0, [r4, r1]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl FUN_02077B24
mov r0, #0x16
lsl r0, r0, #0x4
@@ -1583,7 +1583,7 @@ _02077A0C:
add r1, r0, #0x0
bl Main_SetVBlankIntrCB
mov r0, #0x12
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02077A80 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s
index 3134a96c..4dee97dd 100644
--- a/arm9/asm/unk_02079C70.s
+++ b/arm9/asm/unk_02079C70.s
@@ -87,12 +87,12 @@ FUN_02079C7C: ; 0x02079C7C
strh r2, [r0, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0x1
mov r0, #0x3
mov r1, #0x13
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _02079DAC ; =0x0000069C
add r0, r4, #0x0
mov r2, #0x13
@@ -339,7 +339,7 @@ FUN_02079ECC: ; 0x02079ECC
add r0, r4, #0x0
bl OverlayManager_FreeData
mov r0, #0x13
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s
index 3e0d058c..d1dff0e3 100644
--- a/arm9/asm/unk_02080C38.s
+++ b/arm9/asm/unk_02080C38.s
@@ -807,7 +807,7 @@ FUN_02081214: ; 0x02081214
mov r0, #0xb
mov r1, #0x14
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
bl FUN_020811D8
add r4, r0, #0x0
bl GetLCRNGSeed
@@ -1191,7 +1191,7 @@ _020814FE:
add r0, r7, #0x0
bl FUN_0208120C
mov r0, #0x14
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3-r7, pc}
.balign 4
diff --git a/arm9/asm/unk_020854E0.s b/arm9/asm/unk_020854E0.s
index c19e1a5d..d4e2215b 100644
--- a/arm9/asm/unk_020854E0.s
+++ b/arm9/asm/unk_020854E0.s
@@ -418,7 +418,7 @@ FUN_020857F8: ; 0x020857F8
mov r0, #0x3
mov r1, #0x28
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
mov r1, #0x1c
mov r2, #0x28
@@ -629,6 +629,6 @@ FUN_020859A0: ; 0x020859A0
add r0, r5, #0x0
bl OverlayManager_FreeData
ldr r0, [r4, #0x0]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s
index a2f90e0a..aa13c4f2 100644
--- a/arm9/asm/unk_020859C0.s
+++ b/arm9/asm/unk_020859C0.s
@@ -184,7 +184,7 @@ FUN_020859C0: ; 0x020859C0
mov r0, #0x3
mov r1, #0x35
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0x35
bl MOD62_02230F3C
bl MOD62_0222F7E0
@@ -570,7 +570,7 @@ FUN_02085C08: ; 0x02085C08
bl OverlayManager_FreeData
bl FUN_0201CD04
mov r0, #0x35
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02085D68 ; =SDK_OVERLAY_MODULE_08_ID
bl UnloadOverlayByID
mov r0, #0x1
diff --git a/arm9/asm/unk_02086084.s b/arm9/asm/unk_02086084.s
index 3a4017d7..b2d21149 100644
--- a/arm9/asm/unk_02086084.s
+++ b/arm9/asm/unk_02086084.s
@@ -23,7 +23,7 @@ FUN_02086084: ; 0x02086084
mov r0, #0x3
mov r1, #0x47
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0x80
mov r2, #0x47
@@ -219,7 +219,7 @@ FUN_020861DC: ; 0x020861DC
add r0, r5, #0x0
bl OverlayManager_FreeData
mov r0, #0x47
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_02087D00.s b/arm9/asm/unk_02087D00.s
index 65d4db3d..dfdb08c6 100644
--- a/arm9/asm/unk_02087D00.s
+++ b/arm9/asm/unk_02087D00.s
@@ -206,7 +206,7 @@ FUN_02087E40: ; 0x02087E40
mov r0, #0x3
mov r1, #0x2c
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
mov r1, #0x18
mov r2, #0x2c
@@ -294,7 +294,7 @@ FUN_02087EE8: ; 0x02087EE8
add r0, r5, #0x0
bl OverlayManager_FreeData
ldr r0, [r4, #0x0]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_02088858.s b/arm9/asm/unk_02088858.s
index 5f71517a..f7539bca 100644
--- a/arm9/asm/unk_02088858.s
+++ b/arm9/asm/unk_02088858.s
@@ -89,14 +89,14 @@ FUN_020888DC: ; 0x020888DC
mov r0, #0x3
mov r1, #0x31
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
bl OverlayManager_GetField18
ldr r0, [r0, #0x8]
mov r1, #0x31
bl FUN_02088898
mov r0, #0x31
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x0
bl OS_ResetSystem
mov r0, #0x1
diff --git a/arm9/asm/unk_0208898C.s b/arm9/asm/unk_0208898C.s
index 6fef7584..68885a65 100644
--- a/arm9/asm/unk_0208898C.s
+++ b/arm9/asm/unk_0208898C.s
@@ -33,7 +33,7 @@ FUN_020889B0: ; 0x020889B0
mov r0, #0x3
mov r1, #0x37
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
mov r1, #0x24
mov r2, #0x37
@@ -145,7 +145,7 @@ FUN_02088A78: ; 0x02088A78
add r0, r5, #0x0
bl OverlayManager_FreeData
add r0, r6, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r4-r6, pc}
.balign 4
diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s
index 3facd182..56b9ee9e 100644
--- a/arm9/asm/unk_02089498.s
+++ b/arm9/asm/unk_02089498.s
@@ -42,7 +42,7 @@ FUN_02089498: ; 0x02089498
mov r0, #0x3
mov r1, #0x58
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0x38
mov r2, #0x58
@@ -119,7 +119,7 @@ _020894FC:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0x0
bl FUN_0208961C
add r0, r4, #0x0
@@ -197,7 +197,7 @@ FUN_020895F0: ; 0x020895F0
add r0, r5, #0x0
bl OverlayManager_FreeData
add r0, r4, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x0
bl OS_ResetSystem
mov r0, #0x1
diff --git a/arm9/asm/unk_02089960.s b/arm9/asm/unk_02089960.s
index 9c06a4ab..a1b0c04b 100644
--- a/arm9/asm/unk_02089960.s
+++ b/arm9/asm/unk_02089960.s
@@ -38,7 +38,7 @@ FUN_02089960: ; 0x02089960
mov r0, #0x3
mov r1, #0x58
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0x3c
mov r2, #0x58
@@ -101,7 +101,7 @@ _020899B8:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r6, #0x0
bl FUN_02089A6C
add r0, r6, #0x0
@@ -141,7 +141,7 @@ FUN_02089A40: ; 0x02089A40
add r0, r5, #0x0
bl OverlayManager_FreeData
add r0, r4, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02089A64 ; =SDK_OVERLAY_MODULE_83_ID
ldr r1, _02089A68 ; =MOD83_0223A360
bl RegisterMainOverlay
diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s
index e7b88272..1fd86f68 100644
--- a/arm9/asm/unk_02089D90.s
+++ b/arm9/asm/unk_02089D90.s
@@ -57,7 +57,7 @@ FUN_02089D90: ; 0x02089D90
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _02089EFC ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s
index b5c93a8a..14ed66e2 100644
--- a/arm9/asm/unk_02089F24.s
+++ b/arm9/asm/unk_02089F24.s
@@ -61,7 +61,7 @@ FUN_02089F24: ; 0x02089F24
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _0208A090 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
@@ -230,7 +230,7 @@ _0208A0C8:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _0208A230 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
diff --git a/arm9/global.inc b/arm9/global.inc
index 82666e19..d48e5c2e 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -1010,30 +1010,30 @@
.extern Main_SetVBlankIntrCB
.extern FUN_02015F1C
.extern FUN_02015F34
-.extern FUN_020161A4
-.extern FUN_020161F8
-.extern FUN_020162FC
-.extern FUN_02016324
-.extern FUN_020163BC
+.extern AllocAndReadFile
+.extern OpenAndReadWholeFile
+.extern ClearFileCache
+.extern OpenFileCached
+.extern InitKeypadAndTouchpad
.extern FUN_02016438
.extern FUN_02016444
.extern FUN_02016454
-.extern FUN_02016464
-.extern FUN_0201669C
-.extern FUN_020166A8
-.extern FUN_020166B8
-.extern FUN_020166C8
-.extern FUN_0201681C
-.extern FUN_02016828
-.extern FUN_020168D0
+.extern ReadKeypadAndTocuhpad
+.extern SetKeyRepeatTimers
+.extern SetSoftResetDisableMask
+.extern ClearSoftResetDisableMask
+.extern InitHeapSystem
+.extern CreateHeap
+.extern CreateHeapAtEnd
+.extern DestroyHeap
.extern AllocFromHeap
.extern AllocFromHeapAtEnd
.extern FreeToHeap
.extern FreeToHeapExplicit
-.extern FUN_02016AF8
-.extern FUN_02016B20
-.extern FUN_02016B44
-.extern FUN_02016B90
+.extern GF_ExpHeap_FndGetTotalFreeSize
+.extern GF_ExpHeap_FndInitAllocator
+.extern ReallocFromHeap
+.extern GF_heap_c_dummy_return_true
.extern FUN_02016B94
.extern FUN_02016BB8
.extern FUN_02016BBC
diff --git a/arm9/lib/include/NNS_FND_allocator.h b/arm9/lib/include/NNS_FND_allocator.h
new file mode 100644
index 00000000..48df282a
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_allocator.h
@@ -0,0 +1,34 @@
+#ifndef GUARD_NNS_FND_ALLOCATOR_H
+#define GUARD_NNS_FND_ALLOCATOR_H
+
+#include "NNS_FND_heapcommon.h"
+
+typedef struct NNSFndAllocator NNSFndAllocator;
+
+typedef void* (*NNSFndFuncAllocatorAlloc)(
+ NNSFndAllocator* pAllocator,
+ u32 size);
+
+typedef void (*NNSFndFuncAllocatorFree)(
+ NNSFndAllocator* pAllocator,
+ void* memBlock);
+
+typedef struct NNSFndAllocatorFunc NNSFndAllocatorFunc;
+
+struct NNSFndAllocatorFunc
+{
+ NNSFndFuncAllocatorAlloc pfAlloc;
+ NNSFndFuncAllocatorFree pfFree;
+};
+
+struct NNSFndAllocator
+{
+ NNSFndAllocatorFunc const * pFunc;
+ void* pHeap;
+ u32 heapParam1;
+ u32 heapParam2;
+};
+
+void NNS_FndInitAllocatorForExpHeap(NNSFndAllocator * pAllocator, NNSFndHeapHandle heap, int alignment);
+
+#endif //GUARD_NNS_FND_ALLOCATOR_H
diff --git a/arm9/lib/include/NNS_FND_expheap.h b/arm9/lib/include/NNS_FND_expheap.h
new file mode 100644
index 00000000..c0008f28
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_expheap.h
@@ -0,0 +1,55 @@
+#ifndef GUARD_NNS_FND_EXPHEAP_H
+#define GUARD_NNS_FND_EXPHEAP_H
+
+#include "NNS_FND_heapcommon.h"
+
+typedef struct NNSiFndExpHeapMBlockHead NNSiFndExpHeapMBlockHead;
+
+struct NNSiFndExpHeapMBlockHead
+{
+ u16 signature; // Signature
+ u16 attribute; // Attribute
+ // [8:groupID]
+ // [7:alignment]
+ // [1:temporary flag]
+
+ u32 blockSize; // Block size (data area only)
+
+ NNSiFndExpHeapMBlockHead* pMBHeadPrev; // Previous block
+ NNSiFndExpHeapMBlockHead* pMBHeadNext; // Next block
+};
+
+typedef struct NNSiFndExpMBlockList NNSiFndExpMBlockList;
+
+struct NNSiFndExpMBlockList
+{
+ NNSiFndExpHeapMBlockHead* head; // Pointer for memory block linked to header
+ NNSiFndExpHeapMBlockHead* tail; // Pointer to the memory block linked to the tail of the expanded heap
+};
+
+typedef struct NNSiFndExpHeapHead NNSiFndExpHeapHead;
+
+struct NNSiFndExpHeapHead
+{
+ NNSiFndExpMBlockList mbFreeList; // Free list
+ NNSiFndExpMBlockList mbUsedList; // Used list
+
+ u16 groupID; // Current group ID (lower 8 bits only)
+ u16 feature; // Attribute
+};
+
+NNSFndHeapHandle NNS_FndCreateExpHeapEx(void *startAddress, u32 size, u32 optFlag);
+void *NNS_FndAllocFromExpHeapEx(NNSFndHeapHandle heap, u32 size, int alignment);
+void NNS_FndDestroyExpHeap(NNSFndHeapHandle heap);
+void NNS_FndFreeToExpHeap(NNSFndHeapHandle heap, void *memBlock);
+u32 NNS_FndGetTotalFreeSizeForExpHeap(NNSFndHeapHandle heap);
+u32 NNS_FndGetSizeForMBlockExpHeap(const void *memBlock);
+void NNS_FndResizeForMBlockExpHeap(NNSFndHeapHandle heap, void *memBlock, u32 size);
+
+#define NNS_FndCreateExpHeap(startAddress, size) \
+ NNS_FndCreateExpHeapEx(startAddress, size, 0)
+#define NNS_FndAllocFromExpHeap(heap, size) \
+ NNS_FndAllocFromExpHeapEx(heap, size, NNS_FND_HEAP_DEFAULT_ALIGNMENT)
+
+
+#endif //GUARD_NNS_FND_EXPHEAP_H
diff --git a/arm9/lib/include/NNS_FND_heapcommon.h b/arm9/lib/include/NNS_FND_heapcommon.h
new file mode 100644
index 00000000..eb6f1bdb
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_heapcommon.h
@@ -0,0 +1,26 @@
+#ifndef GUARD_NNS_FND_HEAPCOMMON_H
+#define GUARD_NNS_FND_HEAPCOMMON_H
+
+#include "NNS_FND_list.h"
+
+#define NNS_FND_HEAP_DEFAULT_ALIGNMENT 4
+
+typedef struct NNSiFndHeapHead NNSiFndHeapHead;
+
+struct NNSiFndHeapHead
+{
+ u32 signature;
+
+ NNSFndLink link;
+ NNSFndList childList;
+
+ void* heapStart; // Heap start address
+ void* heapEnd; // Heap end (+1) address
+
+ u32 attribute; // Attribute
+ // [8:Option flag]
+};
+
+typedef NNSiFndHeapHead* NNSFndHeapHandle; // Type to represent heap handle
+
+#endif //GUARD_NNS_FND_HEAPCOMMON_H
diff --git a/arm9/lib/include/NNS_FND_list.h b/arm9/lib/include/NNS_FND_list.h
new file mode 100644
index 00000000..5df01e5f
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_list.h
@@ -0,0 +1,20 @@
+#ifndef GUARD_NNS_FND_LIST_H
+#define GUARD_NNS_FND_LIST_H
+
+typedef struct
+{
+ void* prevObject; // Pointer to the previous linked object.
+ void* nextObject; // Pointer to the next linked object.
+
+} NNSFndLink;
+
+typedef struct
+{
+ void* headObject; // Pointer for the object linked to the top of the list.
+ void* tailObject; // Pointer for the object linked to the end of the list.
+ u16 numObjects; // Number of objects linked in the list.
+ u16 offset; // Offset for NNSFndLink type structure member.
+
+} NNSFndList;
+
+#endif //GUARD_NNS_FND_LIST_H
diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h
index a41f22ae..1ad79b93 100644
--- a/arm9/lib/include/consts.h
+++ b/arm9/lib/include/consts.h
@@ -52,6 +52,7 @@
#define OSi_TCM_REGION_BASE_MASK 0xfffff000
#define OS_IE_V_BLANK (1UL << 0)
+#define OS_IE_H_BLANK (1UL << 1)
#define HW_CPU_CLOCK_ARM9 67027964
diff --git a/arm9/lib/include/tp.h b/arm9/lib/include/tp.h
index d2687545..dc762f10 100644
--- a/arm9/lib/include/tp.h
+++ b/arm9/lib/include/tp.h
@@ -1,6 +1,14 @@
#ifndef NITRO_TP_H_
#define NITRO_TP_H_
+#define TP_TOUCH_OFF 0 // Not being touched
+#define TP_TOUCH_ON 1 // Being touched
+
+#define TP_VALIDITY_VALID 0 // Valid
+#define TP_VALIDITY_INVALID_X 1 // Data with invalid X coordinate
+#define TP_VALIDITY_INVALID_Y 2 // Data with invalid Y coordinate
+#define TP_VALIDITY_INVALID_XY (TP_VALIDITY_INVALID_X | TP_VALIDITY_INVALID_Y) // Data with invalid X and Y coordinates
+
// Touch panel input structure
typedef struct
{
diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s
index 730bfc00..4ca1ac2e 100644
--- a/arm9/modules/05/asm/mod05_021D74E0.s
+++ b/arm9/modules/05/asm/mod05_021D74E0.s
@@ -69,7 +69,7 @@ _021D7564:
mov r0, #3
ldr r2, [r2, #4]
mov r1, #4
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r4, #4]
cmp r0, #0
beq _021D757A
@@ -361,7 +361,7 @@ _021D7806:
mov r0, #0
str r0, [r4, #4]
mov r0, #4
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, [r4, #0x70]
ldr r0, [r0]
lsl r0, r0, #8
diff --git a/arm9/modules/05/asm/mod05_021D9320.s b/arm9/modules/05/asm/mod05_021D9320.s
index ec304548..419b92fd 100644
--- a/arm9/modules/05/asm/mod05_021D9320.s
+++ b/arm9/modules/05/asm/mod05_021D9320.s
@@ -53,7 +53,7 @@ _021D9374:
str r0, [sp, #0x20]
ldr r1, [r6]
add r0, r4, #0
- bl FUN_020161A4
+ bl AllocAndReadFile
ldr r1, [sp, #0x20]
str r0, [sp, #0x24]
add r2, r4, #0
@@ -161,7 +161,7 @@ _021D944A:
ldr r1, [sp, #0x10]
add r0, r4, #0
ldr r1, [r1, #0x18]
- bl FUN_020161A4
+ bl AllocAndReadFile
mov r3, #0x4e
lsl r3, r3, #2
ldr r1, [r5, r3]
diff --git a/arm9/modules/05/asm/mod05_021D9A48.s b/arm9/modules/05/asm/mod05_021D9A48.s
index ee169f98..4cd22924 100644
--- a/arm9/modules/05/asm/mod05_021D9A48.s
+++ b/arm9/modules/05/asm/mod05_021D9A48.s
@@ -199,7 +199,7 @@ _021D9B98:
mov r1, #4
add r0, r7, #0
add r2, r1, #0
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
mov r0, #0x6e
mov r1, #4
bl NARC_ctor
diff --git a/arm9/modules/05/asm/mod05_021DB44C.s b/arm9/modules/05/asm/mod05_021DB44C.s
index eaee32f8..bba92897 100644
--- a/arm9/modules/05/asm/mod05_021DB44C.s
+++ b/arm9/modules/05/asm/mod05_021DB44C.s
@@ -255,7 +255,7 @@ MOD05_021DB61C: ; 0x021DB61C
str r1, [sp]
mov r0, #4
add r1, r2, #0
- bl FUN_020161A4
+ bl AllocAndReadFile
mov r1, #0
str r0, [sp, #0x14]
str r1, [sp, #8]
diff --git a/arm9/modules/05/asm/mod05_021DBEF4.s b/arm9/modules/05/asm/mod05_021DBEF4.s
index f65de9d8..ae93e2a3 100644
--- a/arm9/modules/05/asm/mod05_021DBEF4.s
+++ b/arm9/modules/05/asm/mod05_021DBEF4.s
@@ -120,7 +120,7 @@ _021DBFA8:
add r7, #0x10
mov r0, #4
add r1, sp, #0xc
- bl FUN_020161A4
+ bl AllocAndReadFile
str r0, [r7, r5]
add r0, r6, #0
str r0, [sp, #8]
@@ -128,7 +128,7 @@ _021DBFA8:
str r0, [sp, #8]
ldr r0, [r7, r5]
mov r1, #4
- bl FUN_02016324
+ bl OpenFileCached
ldr r1, [sp, #8]
str r0, [r1, r5]
add r0, r1, #0
diff --git a/arm9/modules/05/asm/mod05_021E4AE4.s b/arm9/modules/05/asm/mod05_021E4AE4.s
index 98146a9c..09f66fe5 100644
--- a/arm9/modules/05/asm/mod05_021E4AE4.s
+++ b/arm9/modules/05/asm/mod05_021E4AE4.s
@@ -1093,7 +1093,7 @@ MOD05_021E5294: ; 0x021E5294
add r1, r0, #0
add r0, r4, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
pop {r4, pc}
.section .rodata
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 006e8bb1..a67d2d02 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -13882,7 +13882,7 @@ MOD05_021EF4F8: ; 0x021EF4F8
MOD05_021EF514: ; 0x021EF514
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
- bl FUN_020162FC
+ bl ClearFileCache
bl NNS_GfdResetLnkTexVramState
bl NNS_GfdResetLnkPlttVramState
mov r4, #0
@@ -24929,7 +24929,7 @@ MOD05_021F4968: ; 0x021F4968
sub r1, r1, r0
bx r3
nop
-_021F4974: .word FUN_02016B44
+_021F4974: .word ReallocFromHeap
thumb_func_start MOD05_021F4978
MOD05_021F4978: ; 0x021F4978
@@ -27084,7 +27084,7 @@ MOD05_021F5990: ; 0x021F5990
str r0, [sp]
add r7, r1, #0
str r3, [sp, #4]
- bl FUN_0201681C
+ bl CreateHeap
cmp r0, #1
beq _021F59B2
bl GF_AssertFail
@@ -27142,7 +27142,7 @@ _021F5A0E:
add r0, r6, #0
bl FreeToHeap
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
pop {r4, r5, r6, pc}
.balign 4, 0
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index 9a618431..5afae6a8 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -2285,7 +2285,7 @@ MOD06_0223A75C: ; 0x0223A75C
add r0, r4, r0
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
pop {r3, r4, r5, pc}
@@ -2964,7 +2964,7 @@ MOD06_0223AC78: ; 0x0223AC78
add r0, r4, r0
add r1, r5, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
mov r2, #0x4f
lsl r2, r2, #2
add r0, r4, #0
@@ -4020,7 +4020,7 @@ MOD06_0223B458: ; 0x0223B458
add r0, #0xc4
add r1, r7, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r6, #0
add r0, #0x78
mov r1, #0x62
@@ -4587,7 +4587,7 @@ MOD06_0223B828: ; 0x0223B828
add r0, #0xdc
add r1, r7, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r6, #0
add r0, #0x78
mov r1, #0x62
@@ -5151,13 +5151,13 @@ _0223BCDA:
str r0, [sp, #0x10]
_0223BCDE:
mov r0, #4
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223BCEC
bl GF_AssertFail
_0223BCEC:
mov r0, #0xb
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223BCFA
bl GF_AssertFail
@@ -5864,13 +5864,13 @@ _0223C2DC:
str r0, [sp, #0x10]
_0223C2E4:
mov r0, #4
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223C2F2
bl GF_AssertFail
_0223C2F2:
mov r0, #0xb
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223C300
bl GF_AssertFail
@@ -20061,7 +20061,7 @@ MOD06_022434D0: ; 0x022434D0
mov r0, #3
mov r1, #0x3b
lsl r2, r2, #0xe
- bl FUN_02016828
+ bl CreateHeapAtEnd
ldr r1, _02243684 ; =0x000008CC
mov r0, #0x3b
bl AllocFromHeap
@@ -20275,7 +20275,7 @@ _022436A6:
add r0, r4, #0
bl FreeToHeap
add r0, r5, #0
- bl FUN_020168D0
+ bl DestroyHeap
_022436BE:
pop {r3, r4, r5, pc}
.align 2, 0
@@ -43590,7 +43590,7 @@ MOD06_0224EA64: ; 0x0224EA64
add r0, #0xdc
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
add r0, #0xdc
mov r1, #3
@@ -43704,7 +43704,7 @@ MOD06_0224EB30: ; 0x0224EB30
add r0, #0xdc
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
add r0, #0xdc
mov r2, #4
@@ -43738,7 +43738,7 @@ MOD06_0224EB78: ; 0x0224EB78
add r0, #0xdc
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
add r0, #0xdc
mov r2, #4
@@ -43878,7 +43878,7 @@ MOD06_0224EC5C: ; 0x0224EC5C
add r0, r0, r1
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
ldr r5, [sp, #8]
mov r1, #0x6e
add r4, sp, #0x10
@@ -44299,7 +44299,7 @@ MOD06_0224EF98: ; 0x0224EF98
mov r1, #4
add r0, r5, r0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r5, #0
mov r1, #0x8d
mov r2, #8
diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s
index 2a6bb196..65a74381 100644
--- a/arm9/modules/11/asm/module_11_thumb1.s
+++ b/arm9/modules/11/asm/module_11_thumb1.s
@@ -42,7 +42,7 @@ _0222D600:
mov r0, #3
mov r1, #5
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, [r5]
mov r0, #4
tst r0, r1
@@ -175,7 +175,7 @@ _0222D704:
b _0222D7EA
_0222D714:
mov r0, #5
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xd
str r0, [r4]
b _0222D7EA
@@ -187,7 +187,7 @@ _0222D720:
ldr r0, _0222D7F0 ; =SDK_OVERLAY_MODULE_07_ID
bl UnloadOverlayByID
mov r0, #5
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x3e
bl FUN_02031588
mov r0, #0xc
@@ -210,7 +210,7 @@ _0222D752:
mov r0, #3
mov r1, #0x49
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r5, #4]
ldr r1, [sp, #0x24]
bl GetPartyMonByIndex
@@ -266,7 +266,7 @@ _0222D7C2:
add r0, r5, #0
bl FUN_0206C92C
mov r0, #0x49
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xd
str r0, [r4]
b _0222D7EA
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index effb333a..8c91e781 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -40,7 +40,7 @@ MOD12_0222D5C0: ; 0x0222D5C0
mov r0, #3
mov r1, #0x15
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222D868 ; =0x00001658
add r0, r5, #0
mov r2, #0x15
@@ -102,7 +102,7 @@ MOD12_0222D5C0: ; 0x0222D5C0
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0x23
add r1, r4, #0
lsl r2, r2, #4
@@ -521,7 +521,7 @@ MOD12_0222D9B0: ; 0x0222D9B0
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x15
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
ldr r0, _0222DADC ; =SDK_OVERLAY_MODULE_08_ID
@@ -3175,7 +3175,7 @@ MOD12_0222EF04: ; 0x0222EF04
mov r0, #3
mov r1, #0x16
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222F168 ; =0x00000F68
add r0, r4, #0
mov r2, #0x16
@@ -3237,7 +3237,7 @@ MOD12_0222EF04: ; 0x0222EF04
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, [r5, #0x30]
bl MOD12_0222F548
bl FUN_0201CC08
@@ -3686,7 +3686,7 @@ _0222F3AE:
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x16
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
ldr r0, _0222F450 ; =SDK_OVERLAY_MODULE_08_ID
@@ -5015,7 +5015,7 @@ MOD12_0222FE4C: ; 0x0222FE4C
mov r0, #3
mov r1, #0x17
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _022300EC ; =0x00001BF4
add r0, r4, #0
mov r2, #0x17
@@ -5099,7 +5099,7 @@ MOD12_0222FE4C: ; 0x0222FE4C
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r1, r5, #0
ldr r0, [r5]
add r1, #0x14
@@ -5530,7 +5530,7 @@ _02230296:
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x17
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
ldr r0, _022303B8 ; =SDK_OVERLAY_MODULE_08_ID
@@ -41102,7 +41102,7 @@ MOD12_02241210: ; 0x02241210
mov r0, #3
mov r1, #0x18
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x4a
add r0, r4, #0
lsl r1, r1, #6
@@ -41182,7 +41182,7 @@ MOD12_02241210: ; 0x02241210
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, [r5, #0x30]
bl MOD12_02241864
bl FUN_0201CC08
@@ -41577,7 +41577,7 @@ _022415D4:
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x18
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
mov r1, #5
mov r2, #2
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index bdfed5b1..d5f05188 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -11,12 +11,12 @@ StoragePC_Overlay_Init: ; 0x021D74E0
mov r0, #3
mov r1, #9
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0xf
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x87
add r0, r5, #0
lsl r1, r1, #2
@@ -132,9 +132,9 @@ _021D75DE:
add r0, r4, #0
bl MOD14_021DB398
mov r0, #9
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
.align 2, 0
@@ -5546,7 +5546,7 @@ _021DA1FE:
ldr r0, [r4, r0]
bl MOD14_021DCA38
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x12
lsl r0, r0, #4
ldr r0, [r4, r0]
@@ -5592,7 +5592,7 @@ _021DA256:
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0x12
lsl r2, r2, #4
ldr r0, [r4, r2]
@@ -5658,7 +5658,7 @@ _021DA2F2:
ldr r0, [r5, r0]
bl MOD14_021DCA38
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r5, #0
bl MOD14_021D83E4
mov r1, #0x4b
@@ -5693,7 +5693,7 @@ _021DA334:
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
bl MOD14_021DC3F4
cmp r0, #1
@@ -5803,7 +5803,7 @@ _021DA41E:
ldr r0, [r4, r0]
bl MOD14_021DCA38
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x47
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -5889,7 +5889,7 @@ _021DA4F4:
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0x45
lsl r0, r0, #2
add r0, r4, r0
diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s
index 97282c02..a1f0f2d1 100644
--- a/arm9/modules/15/asm/module_15.s
+++ b/arm9/modules/15/asm/module_15.s
@@ -23,12 +23,12 @@ _021D74F2:
mov r0, #3
mov r1, #0x22
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0xa
mov r0, #3
mov r1, #0x23
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
bl MOD15_021D7628
ldr r0, [r0, #0x14]
@@ -170,9 +170,9 @@ MOD15_021D7608: ; 0x021D7608
add r1, r4, #0
bl MOD15_021D7774
mov r0, #0x22
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x23
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
.align 2, 0
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index 82ff69c0..4fb65b68 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -16,7 +16,7 @@ MOD16_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x25
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #4
mov r2, #0x25
@@ -168,7 +168,7 @@ _021D7630:
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x25
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
mov r1, #0x7f
bl FUN_020051EC
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
index 955741b3..7d11697e 100644
--- a/arm9/modules/17/asm/module_17.s
+++ b/arm9/modules/17/asm/module_17.s
@@ -2042,12 +2042,12 @@ MOD17_021D83E4: ; 0x021D83E4
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D84D8 ; =0x000006D8
add r0, r4, #0
mov r2, #0xd
@@ -2511,9 +2511,9 @@ _021D87F0:
add r0, r6, #0
bl OverlayManager_FreeData
mov r0, #0xd
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xe
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
nop
@@ -2532,12 +2532,12 @@ MOD17_021D8818: ; 0x021D8818
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D897C ; =0x000006D8
add r0, r5, #0
mov r2, #0xd
@@ -3119,9 +3119,9 @@ _021D8D30:
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0xd
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xe
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
mov r0, #1
@@ -13780,12 +13780,12 @@ MOD17_021DDB58: ; 0x021DDB58
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x65
add r0, r5, #0
lsl r1, r1, #2
@@ -13990,9 +13990,9 @@ MOD17_021DDCF4: ; 0x021DDCF4
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0xd
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xe
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index 9b2fdf67..e3fbe038 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -1747,7 +1747,7 @@ MOD18_0223A3D4: ; 0x0223A3D4
mov r0, #3
mov r1, #0x1d
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0x1d
bl FUN_02016B94
add r4, r0, #0
@@ -1984,7 +1984,7 @@ _0223A5F8:
ldr r0, [r0]
str r1, [r0, #4]
mov r0, #0x1d
- bl FUN_020168D0
+ bl DestroyHeap
bl MOD18_0223D638
ldr r1, _0223A648 ; =0x02251380
ldr r1, [r1]
@@ -43226,7 +43226,7 @@ _0224E848: ; jump table
_0224E858:
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD18_0224E01C
ldr r3, _0224E940 ; =0x00000504
add r1, r6, #0
diff --git a/arm9/modules/19/asm/module_19.s b/arm9/modules/19/asm/module_19.s
index 8f3a28ce..bb49a485 100644
--- a/arm9/modules/19/asm/module_19.s
+++ b/arm9/modules/19/asm/module_19.s
@@ -11,7 +11,7 @@ MOD19_02252440: ; 0x02252440
mov r0, #3
mov r1, #8
lsl r2, r0, #0xf
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0
bl GXS_SetGraphicsMode
mov r0, #0x80
@@ -91,7 +91,7 @@ MOD19_022524F4: ; 0x022524F4
mov r1, #4
bl FUN_020178A0
mov r0, #8
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3, pc}
thumb_func_end MOD19_022524F4
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s
index a77f95fc..e812d527 100644
--- a/arm9/modules/20/asm/module_20.s
+++ b/arm9/modules/20/asm/module_20.s
@@ -21,11 +21,11 @@ MOD20_02252448: ; 0x02252448
mov r1, #7
lsl r2, r0, #0xe
add r7, r3, #0
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #3
mov r1, #8
lsl r2, r0, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #7
mov r1, #0x60
bl AllocFromHeap
@@ -238,9 +238,9 @@ _022525C6:
add r0, r5, #0
bl FUN_0200CAB4
mov r0, #7
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #8
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3, r4, r5, pc}
.align 2, 0
_022525EC: .word MOD20_022544CC
diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s
index cdf4b770..577a6ac9 100644
--- a/arm9/modules/24/asm/module_24.s
+++ b/arm9/modules/24/asm/module_24.s
@@ -621,7 +621,7 @@ MOD24_02254CA0: ; 0x02254CA0
add r4, r0, #0
beq _02254CFA
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254CC0
bl GF_AssertFail
@@ -631,7 +631,7 @@ _02254CC0:
mov r1, #0x10
bl MOD20_022536F4
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254CD8
bl GF_AssertFail
@@ -642,7 +642,7 @@ _02254CD8:
bl MOD20_02252D24
str r0, [r4, #0x50]
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254CF4
bl GF_AssertFail
@@ -699,7 +699,7 @@ MOD24_02254D48: ; 0x02254D48
add r4, r0, #0
beq _02254D84
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254D5C
bl GF_AssertFail
@@ -783,7 +783,7 @@ MOD24_02254DDC: ; 0x02254DDC
sub sp, #0x14
mov r0, #8
add r4, r1, #0
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254DF0
bl GF_AssertFail
@@ -802,7 +802,7 @@ _02254DF0:
mov r3, #0
bl FUN_02016C18
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E1E
bl GF_AssertFail
@@ -835,7 +835,7 @@ _02254E1E:
add r1, r0, #0
bl MOD20_02252D7C
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E68
bl GF_AssertFail
@@ -845,7 +845,7 @@ _02254E68:
ldr r0, [r5, #0x70]
bl CopyWindowToVram
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E82
bl GF_AssertFail
@@ -853,7 +853,7 @@ _02254E82:
add r0, r5, #0
bl MOD24_02255078
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E96
bl GF_AssertFail
@@ -877,7 +877,7 @@ _02254E96:
add r0, r4, #0
bl MOD24_02254DC8
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254ECC
bl GF_AssertFail
diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s
index 0149e180..0b141199 100644
--- a/arm9/modules/36/asm/module_36.s
+++ b/arm9/modules/36/asm/module_36.s
@@ -981,7 +981,7 @@ MOD36_02254F5C: ; 0x02254F5C
sub sp, #0x14
mov r0, #8
add r5, r1, #0
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254F70
bl GF_AssertFail
@@ -1000,7 +1000,7 @@ _02254F70:
mov r3, #0
bl FUN_02016C18
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254F9E
bl GF_AssertFail
@@ -1034,7 +1034,7 @@ _02254F9E:
add r1, r0, #0
bl MOD20_02252D7C
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254FEA
bl GF_AssertFail
@@ -1061,7 +1061,7 @@ _02254FEA:
add r0, r5, #0
bl MOD36_02254F48
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02255028
bl GF_AssertFail
diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c
index 41f2706a..08da79f4 100644
--- a/arm9/modules/52/src/module_52.c
+++ b/arm9/modules/52/src/module_52.c
@@ -159,7 +159,7 @@ THUMB_FUNC BOOL MOD52_021D74E0(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_0201681C(3, 0x4d, 2 << 16);
+ CreateHeap(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
@@ -179,7 +179,7 @@ THUMB_FUNC BOOL MOD52_021D750C(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_020168D0(0x4d);
+ DestroyHeap(0x4d);
RegisterMainOverlay(0XFFFFFFFF, &UNK_020FD144);
return 1;
@@ -189,7 +189,7 @@ THUMB_FUNC BOOL MOD52_021D7528(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_0201681C(3, 0x4d, 2 << 16);
+ CreateHeap(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
@@ -211,7 +211,7 @@ THUMB_FUNC BOOL MOD52_021D7560(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_020168D0(0x4d);
+ DestroyHeap(0x4d);
RegisterMainOverlay(0xFFFFFFFF, &UNK_020F2B7C);
return 1;
@@ -221,7 +221,7 @@ THUMB_FUNC BOOL MOD52_021D757C(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_0201681C(3, 0x4d, 2 << 16);
+ CreateHeap(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
@@ -252,7 +252,7 @@ THUMB_FUNC BOOL MOD52_021D75E8(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_020168D0(0x4d);
+ DestroyHeap(0x4d);
RegisterMainOverlay(0XFFFFFFFF, &UNK_020F2B8C);
return 1;
diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s
index d070f979..7049c5bb 100644
--- a/arm9/modules/53/asm/module_53.s
+++ b/arm9/modules/53/asm/module_53.s
@@ -37,7 +37,7 @@ _021D74F6:
mov r0, #3
mov r1, #0x27
lsl r2, r2, #6
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7640 ; =0x0000940C
add r0, r6, #0
mov r2, #0x27
@@ -60,7 +60,7 @@ _021D74F6:
str r0, [r4, #0x10]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD53_021D78D0
ldr r0, [r4]
bl MOD53_021D78F0
@@ -417,7 +417,7 @@ _021D786E:
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x27
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #2
bl FUN_02032B6C
mov r0, #1
diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s
index b11b96cf..a0d5ce50 100644
--- a/arm9/modules/54/asm/module_54.s
+++ b/arm9/modules/54/asm/module_54.s
@@ -38,7 +38,7 @@ _021D74F6:
mov r0, #3
mov r1, #0x33
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7638 ; =0x00004A60
add r0, r6, #0
mov r2, #0x33
@@ -67,7 +67,7 @@ _021D74F6:
str r0, [r4, #0x28]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD54_021D7874
ldr r0, [r4]
bl MOD54_021D7894
@@ -333,7 +333,7 @@ _021D776C:
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x33
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s
index b9f3c277..51b82ddf 100644
--- a/arm9/modules/55/asm/module_55.s
+++ b/arm9/modules/55/asm/module_55.s
@@ -43,7 +43,7 @@ MOD55_021D7504: ; 0x021D7504
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r0, #0x34
bl FUN_02016B94
str r0, [r4, #4]
@@ -89,7 +89,7 @@ _021D7580:
mov r0, #3
mov r1, #0x34
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7610 ; =0x0000041C
add r0, r6, #0
mov r2, #0x34
@@ -164,7 +164,7 @@ _021D7628:
mov r0, #3
mov r1, #0x34
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D76B8 ; =0x0000041C
add r0, r6, #0
mov r2, #0x34
@@ -349,7 +349,7 @@ MOD55_021D77AC: ; 0x021D77AC
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x34
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
thumb_func_end MOD55_021D77AC
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s
index 531194c6..ac016f49 100644
--- a/arm9/modules/56/asm/module_56.s
+++ b/arm9/modules/56/asm/module_56.s
@@ -267,7 +267,7 @@ MOD56_02211FD4: ; 0x02211FD4
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r0, #0x36
bl FUN_02016B94
add r1, r4, #0
@@ -340,14 +340,14 @@ _02212098:
mov r0, #3
mov r1, #0x36
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
b _022120BE
_022120B2:
mov r2, #0xb
mov r0, #3
mov r1, #0x36
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
_022120BE:
mov r1, #0x3f
add r0, r4, #0
@@ -564,7 +564,7 @@ _02212274:
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x36
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
.align 2, 0
diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s
index 481488f8..a9163534 100644
--- a/arm9/modules/57/asm/module_57.s
+++ b/arm9/modules/57/asm/module_57.s
@@ -28,12 +28,12 @@ MOD57_021D74E0: ; 0x021D74E0
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0xa
mov r0, #3
mov r1, #0x19
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D76F0 ; =0x00003320
add r0, r5, #0
mov r2, #0x19
@@ -561,7 +561,7 @@ MOD57_021D7944: ; 0x021D7944
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x19
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
mov r1, #0x7f
bl FUN_020051EC
diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s
index eb13ddb7..99967607 100644
--- a/arm9/modules/58/asm/module_58.s
+++ b/arm9/modules/58/asm/module_58.s
@@ -43,7 +43,7 @@ _021D9A36:
mov r0, #3
mov r1, #0x27
lsl r2, r2, #6
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D9B74 ; =0x00005CB0
add r0, r6, #0
mov r2, #0x27
@@ -66,7 +66,7 @@ _021D9A36:
str r0, [r4, #0x14]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD58_021D9CDC
ldr r0, [r4]
bl MOD58_021D9CFC
@@ -274,7 +274,7 @@ _021D9C40:
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x27
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s
index 5604bf3c..a48cd966 100644
--- a/arm9/modules/59/asm/mod59_021D74E0_asm.s
+++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s
@@ -56,7 +56,7 @@ _021D7592:
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD59_021D778C
add r0, r4, #0
@@ -189,7 +189,7 @@ MOD59_021D76C0: ; 0x021D76C0
add r0, r6, #0
bl OverlayManager_FreeData
add r0, r5, #0
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D771C ; =SDK_OVERLAY_MODULE_52_ID
ldr r1, _021D7720 ; =MOD52_021D76D8
bl RegisterMainOverlay
diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s
index 2925c404..e4325d83 100644
--- a/arm9/modules/59/asm/mod59_021D9868.s
+++ b/arm9/modules/59/asm/mod59_021D9868.s
@@ -11,7 +11,7 @@ MOD59_021D9868: ; 0x021D9868
mov r0, #3
mov r1, #0x53
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0
mov r1, #0x28
mov r2, #0x53
@@ -81,7 +81,7 @@ _021D98C6:
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD59_021D9A20
add r0, r4, #0
@@ -200,7 +200,7 @@ MOD59_021D99F8: ; 0x021D99F8
add r0, r5, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/59/src/mod59_021D74E0_src.c b/arm9/modules/59/src/mod59_021D74E0_src.c
index 4d7a4a98..be8dac20 100644
--- a/arm9/modules/59/src/mod59_021D74E0_src.c
+++ b/arm9/modules/59/src/mod59_021D74E0_src.c
@@ -10,7 +10,7 @@ extern u32 FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct
THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0)
{
//note: 0xb4 is likely the overlay data struct size, once struct is padded replace with sizeof
- FUN_0201681C(3, 0x52, 1 << 18);
+ CreateHeap(3, 0x52, 1 << 18);
MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_CreateAndGetData(param0, 0xb4, 0x52);
(void)memset((void *)data, 0, 0xb4);
diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s
index 8c6d04fc..a30f563f 100644
--- a/arm9/modules/60/asm/module_60.s
+++ b/arm9/modules/60/asm/module_60.s
@@ -13,7 +13,7 @@ MOD60_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x26
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0xad
add r0, r4, #0
lsl r1, r1, #2
@@ -215,7 +215,7 @@ _021D769A:
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s
index ed9e0e05..d13a3071 100644
--- a/arm9/modules/61/asm/module_61.s
+++ b/arm9/modules/61/asm/module_61.s
@@ -12,7 +12,7 @@ MOD61_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x29
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0xbc
mov r2, #0x29
@@ -80,7 +80,7 @@ MOD61_021D7568: ; 0x021D7568
add r0, r5, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s
index ea96bf3b..4f086525 100644
--- a/arm9/modules/63/asm/mod63_021D74E0.s
+++ b/arm9/modules/63/asm/mod63_021D74E0.s
@@ -37,12 +37,12 @@ MOD63_021D74E0: ; 0x021D74E0
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #1
mov r0, #3
mov r1, #0x1e
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x79
add r0, r4, #0
lsl r1, r1, #2
@@ -363,7 +363,7 @@ MOD63_021D77B4: ; 0x021D77B4
add r0, r7, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
cmp r5, #1
beq _021D77F2
cmp r5, #2
@@ -500,7 +500,7 @@ MOD63_021D78BC: ; 0x021D78BC
add r0, #0x68
add r1, r4, #0
mov r2, #4
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
mov r0, #0x30
add r1, r6, #0
add r2, r4, #0
diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s
index 6f6f8f75..24804568 100644
--- a/arm9/modules/63/asm/mod63_021D8890.s
+++ b/arm9/modules/63/asm/mod63_021D8890.s
@@ -582,11 +582,11 @@ MOD63_021D8D10: ; 0x021D8D10
bl GX_DisableEngineBLayers
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r0, #3
mov r1, #0x4c
lsl r2, r0, #0x11
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0xab
add r0, r4, #0
lsl r1, r1, #2
@@ -739,7 +739,7 @@ MOD63_021D8E68: ; 0x021D8E68
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x4c
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D8E94 ; =SDK_OVERLAY_MODULE_63_ID
ldr r1, _021D8E98 ; =MOD63_021DBAB8
bl RegisterMainOverlay
@@ -1930,7 +1930,7 @@ _021D9840:
ldr r1, [r2, #0x14]
add r1, r2, r1
sub r1, r1, r0
- bl FUN_02016B44
+ bl ReallocFromHeap
mov r0, #0x80
mov r1, #0x4c
bl NARC_ctor
diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s
index 7a70bf1f..0c56aa30 100644
--- a/arm9/modules/64/asm/module_64.s
+++ b/arm9/modules/64/asm/module_64.s
@@ -12,7 +12,7 @@ MOD64_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x2f
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7630 ; =0x000006B4
add r0, r4, #0
mov r2, #0x2f
@@ -30,7 +30,7 @@ _021D7504:
add r0, r5, r0
mov r1, #0x2f
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
bl OverlayManager_GetField18
add r4, r0, #0
@@ -299,7 +299,7 @@ _021D7726:
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x2f
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
thumb_func_end MOD64_021D76F4
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s
index e9e1ed78..1050ff4e 100644
--- a/arm9/modules/65/asm/module_65.s
+++ b/arm9/modules/65/asm/module_65.s
@@ -13,7 +13,7 @@ MOD65_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x2d
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #2
add r0, r4, #0
lsl r1, r1, #8
@@ -80,7 +80,7 @@ MOD65_021D753C: ; 0x021D753C
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
thumb_func_end MOD65_021D753C
@@ -2710,7 +2710,7 @@ MOD65_021D8A08: ; 0x021D8A08
mov r0, #3
mov r1, #0x2e
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x6f
add r0, r4, #0
lsl r1, r1, #2
@@ -2921,7 +2921,7 @@ MOD65_021D8BBC: ; 0x021D8BBC
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s
index c902cd22..f8cb1081 100644
--- a/arm9/modules/66/asm/module_66.s
+++ b/arm9/modules/66/asm/module_66.s
@@ -13,7 +13,7 @@ MOD66_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x11
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0
mov r1, #0xe4
mov r2, #0x11
@@ -119,7 +119,7 @@ MOD66_021D75B0: ; 0x021D75B0
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x11
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
thumb_func_end MOD66_021D75B0
diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s
index 60bd02b5..c39f5c7d 100644
--- a/arm9/modules/67/asm/module_67.s
+++ b/arm9/modules/67/asm/module_67.s
@@ -30,12 +30,12 @@ MOD67_021D74E0: ; 0x021D74E0
strh r1, [r3]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #2
mov r0, #3
mov r1, #0x2a
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0
bl OverlayManager_GetField18
add r5, r0, #0
@@ -165,7 +165,7 @@ MOD67_021D7624: ; 0x021D7624
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x2a
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s
index b2170444..6e79c8cf 100644
--- a/arm9/modules/68/asm/module_68.s
+++ b/arm9/modules/68/asm/module_68.s
@@ -32,7 +32,7 @@ MOD68_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x24
lsr r2, r2, #9
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x81
add r0, r4, #0
lsl r1, r1, #2
@@ -73,7 +73,7 @@ MOD68_021D74E0: ; 0x021D74E0
bl MOD68_021D7870
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl FUN_0201CC08
mov r0, #4
bl FUN_0201CC24
@@ -173,7 +173,7 @@ MOD68_021D762C: ; 0x021D762C
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x24
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D767C ; =0x04000050
mov r1, #0
strh r1, [r0]
diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s
index 58d0b4f8..c9bce6b2 100644
--- a/arm9/modules/69/asm/module_69.s
+++ b/arm9/modules/69/asm/module_69.s
@@ -13,7 +13,7 @@ HOF_OverlayInit: ; 0x0222D5C0
mov r0, #3
mov r1, #0x3f
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222D70C ; =0x00001B60
add r0, r5, #0
mov r2, #0x3f
@@ -213,7 +213,7 @@ _0222D762:
add r0, r6, #0
bl OverlayManager_FreeData
mov r0, #0x3f
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s
index 9db294af..daff2762 100644
--- a/arm9/modules/70/asm/module_70.s
+++ b/arm9/modules/70/asm/module_70.s
@@ -11,12 +11,12 @@ MOD70_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x3c
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #7
mov r0, #3
mov r1, #0x3d
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0xdc
mov r2, #0x3c
@@ -76,9 +76,9 @@ MOD70_021D755C: ; 0x021D755C
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x3d
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x3c
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s
index 303bee40..d01ea938 100644
--- a/arm9/modules/71/asm/module_71.s
+++ b/arm9/modules/71/asm/module_71.s
@@ -27,7 +27,7 @@ MOD71_0222D5C0: ; 0x0222D5C0
ldr r2, _0222D734 ; =0x000707D0
mov r0, #3
mov r1, #0x1a
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222D738 ; =0x000036B4
add r0, r5, #0
mov r2, #0x1a
@@ -74,7 +74,7 @@ MOD71_0222D5C0: ; 0x0222D5C0
bl MOD71_0222E76C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD71_0222E558
mov r0, #0x5d
lsl r0, r0, #2
@@ -932,7 +932,7 @@ _0222DDA6:
mov r0, #0x50
bl FUN_02031588
mov r0, #2
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
add r0, r4, #0
bl MOD71_02230B88
ldr r0, [r4, #0x4c]
@@ -1317,7 +1317,7 @@ _0222E094:
mov r2, #1
bl MOD71_02230F40
mov r0, #2
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
add sp, #0x10
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
@@ -1777,7 +1777,7 @@ MOD71_0222E438: ; 0x0222E438
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x1a
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s
index 7d9850cc..3caf2693 100644
--- a/arm9/modules/73/asm/module_73.s
+++ b/arm9/modules/73/asm/module_73.s
@@ -23,7 +23,7 @@ MOD73_021D74F0: ; 0x021D74F0
mov r0, #3
mov r1, #0x38
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D757C ; =0x000015E8
add r0, r5, #0
mov r2, #0x38
@@ -201,7 +201,7 @@ MOD73_021D7640: ; 0x021D7640
mov r0, #0
str r0, [r6, #0x18]
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s
index 651527c1..75afef9d 100644
--- a/arm9/modules/74/asm/module_74.s
+++ b/arm9/modules/74/asm/module_74.s
@@ -13,7 +13,7 @@ MOD74_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x4a
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0xad
add r0, r4, #0
lsl r1, r1, #2
@@ -56,7 +56,7 @@ MOD74_021D7540: ; 0x021D7540
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s
index 3500c458..a425935f 100644
--- a/arm9/modules/75/asm/module_75.s
+++ b/arm9/modules/75/asm/module_75.s
@@ -32,7 +32,7 @@ MOD75_021E6BA0: ; 0x021E6BA0
mov r1, #6
mov r0, #3
lsl r2, r1, #0xf
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021E6D60 ; =0x000004A4
add r0, r5, #0
mov r2, #6
@@ -68,7 +68,7 @@ MOD75_021E6BA0: ; 0x021E6BA0
bl FUN_0200E1D0
mov r0, #3
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD75_021E7470
add r0, r4, #0
@@ -460,7 +460,7 @@ MOD75_021E6F00: ; 0x021E6F00
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #6
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
index 4f32e870..38055b90 100644
--- a/arm9/modules/76/asm/module_76.s
+++ b/arm9/modules/76/asm/module_76.s
@@ -11,7 +11,7 @@ MOD76_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x43
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x62
add r0, r5, #0
lsl r1, r1, #2
@@ -166,7 +166,7 @@ MOD76_021D761C: ; 0x021D761C
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x43
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
thumb_func_end MOD76_021D761C
diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s
index 6affcb88..0b432b90 100644
--- a/arm9/modules/77/asm/module_77.s
+++ b/arm9/modules/77/asm/module_77.s
@@ -28,7 +28,7 @@ MOD77_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x32
lsl r2, r2, #7
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D75DC ; =0x0000C32C
add r0, r4, #0
mov r2, #0x32
@@ -100,7 +100,7 @@ _021D7540:
bl GX_SwapDisplay
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r5, #0
bl MOD77_021D7C64
mov r0, #1
@@ -831,7 +831,7 @@ MOD77_021D7BAC: ; 0x021D7BAC
add r0, r6, #0
bl OverlayManager_FreeData
add r0, r5, #0
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D7C20 ; =gMain + 0x60
mov r1, #0
strb r1, [r0, #5]
diff --git a/arm9/modules/78/asm/module_78.s b/arm9/modules/78/asm/module_78.s
index 7fc7439a..85167a84 100644
--- a/arm9/modules/78/asm/module_78.s
+++ b/arm9/modules/78/asm/module_78.s
@@ -12,7 +12,7 @@ MOD78_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x48
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0xa0
mov r2, #0x48
@@ -259,7 +259,7 @@ _021D76C8:
bl OverlayManager_FreeData
bl FUN_0201B398
mov r0, #0x48
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD78_021D76B8
@@ -338,7 +338,7 @@ MOD78_021D778C: ; 0x021D778C
add r0, #0x70
mov r1, #0x48
mov r2, #4
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r1, r5, #0
add r1, #0x9c
ldrb r2, [r1]
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index 83e02d71..db04b6c2 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -1391,7 +1391,7 @@ _0222DFE4:
mov r0, #3
mov r1, #0x3e
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222E108 ; =0x00001044
add r0, r6, #0
mov r2, #0x3e
@@ -1453,7 +1453,7 @@ _0222DFE4:
str r0, [r4, r1]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
add r1, r6, #0
bl MOD80_0222E338
@@ -1689,7 +1689,7 @@ MOD80_0222E25C: ; 0x0222E25C
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x3e
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s
index 9505f17c..01caab99 100644
--- a/arm9/modules/81/asm/module_81.s
+++ b/arm9/modules/81/asm/module_81.s
@@ -16,11 +16,11 @@ _02237E50:
mov r0, #3
mov r1, #0x39
lsl r2, r0, #0xf
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #3
mov r1, #0x3a
lsl r2, r0, #0xf
- bl FUN_0201681C
+ bl CreateHeap
bl MOD81_02238858
ldr r1, _02237FD0 ; =0x00000492
mov r0, #3
@@ -237,9 +237,9 @@ MOD81_02238004: ; 0x02238004
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x39
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x3a
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r6, #0
bl OS_RestoreInterrupts
mov r0, #1
diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s
index f1a3e494..20b82216 100644
--- a/arm9/modules/82/asm/module_82.s
+++ b/arm9/modules/82/asm/module_82.s
@@ -641,7 +641,7 @@ _0222DA48:
mov r0, #3
mov r1, #0x44
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222DB58 ; =0x00000EC8
add r0, r6, #0
mov r2, #0x44
@@ -695,7 +695,7 @@ _0222DA48:
str r0, [r4, r1]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
add r1, r6, #0
bl MOD82_0222DD04
@@ -887,7 +887,7 @@ MOD82_0222DC50: ; 0x0222DC50
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x44
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index 09c161b4..0527c923 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -1916,7 +1916,7 @@ MOD83_0222E48C: ; 0x0222E48C
mov r0, #3
mov r1, #0x51
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x57
add r0, r5, #0
lsl r1, r1, #2
@@ -2372,7 +2372,7 @@ MOD83_0222E850: ; 0x0222E850
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x51
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0
bl MOD83_02239450
mov r0, #1
@@ -3085,7 +3085,7 @@ MOD83_0222EDF8: ; 0x0222EDF8
mov r2, #3
mov r1, #0x5b
lsl r2, r2, #8
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222EE88 ; =0x00000496
mov r0, #9
mov r2, #1
@@ -3312,14 +3312,14 @@ MOD83_0222F048: ; 0x0222F048
push {r4, lr}
add r4, r0, #0
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _0222F06C ; =SDK_OVERLAY_MODULE_63_ID
ldr r1, _0222F070 ; =MOD63_021DBAB8
bl RegisterMainOverlay
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x55
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
nop
@@ -6505,7 +6505,7 @@ MOD83_02230954: ; 0x02230954
mov r0, #3
mov r1, #0x56
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _022309FC ; =0x00002998
add r0, r5, #0
mov r2, #0x56
@@ -6561,7 +6561,7 @@ _022309D0:
mov r0, #0
mov r1, #0x5b
lsl r2, r2, #8
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
@@ -7695,11 +7695,11 @@ _0223139A:
bl RegisterMainOverlay
_022313A6:
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x56
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _022313E0 ; =0x000015D4
ldr r0, [r4, r0]
cmp r0, #2
@@ -9726,7 +9726,7 @@ MOD83_022323A8: ; 0x022323A8
mov r0, #3
mov r1, #0x57
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0223240C ; =0x00003CF4
add r0, r4, #0
mov r2, #0x57
@@ -9759,7 +9759,7 @@ MOD83_022323A8: ; 0x022323A8
mov r0, #0
mov r1, #0x5b
lsl r2, r2, #8
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #1
pop {r4, pc}
.align 2, 0
@@ -11366,11 +11366,11 @@ _02233104:
ldr r1, _02233164 ; =MOD83_0223A434
bl RegisterMainOverlay
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, [sp]
bl OverlayManager_FreeData
mov r0, #0x57
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -15353,11 +15353,11 @@ MOD83_02234E40: ; 0x02234E40
add r0, r4, #0
bl FUN_0202BF90
mov r0, #4
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
ldr r0, [r5, #0x10]
bl FUN_02022720
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
pop {r3, r4, r5, pc}
thumb_func_end MOD83_02234E40
@@ -18509,7 +18509,7 @@ MOD83_02236764: ; 0x02236764
mov r0, #3
mov r1, #0x4e
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _022367F0 ; =0x00012608
add r0, r5, #0
mov r2, #0x4e
@@ -19168,7 +19168,7 @@ _02236CAE:
mov r0, #0x15
str r0, [r5]
mov r0, #4
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
b _02236D90
_02236CF0:
ldr r0, _02236DB0 ; =0x0000E88C
@@ -19219,7 +19219,7 @@ _02236D36:
mov r0, #0x16
str r0, [r5]
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
b _02236D90
_02236D54:
ldr r0, _02236DC8 ; =gMain + 0x40
@@ -19287,7 +19287,7 @@ MOD83_02236DD0: ; 0x02236DD0
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x4e
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0
bl MOD83_02239450
mov r0, #1
@@ -22827,7 +22827,7 @@ MOD83_022387A0: ; 0x022387A0
add r6, r1, #0
mov r0, #3
add r2, r3, #0
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
@@ -24577,7 +24577,7 @@ _022394E4: ; jump table
.short _02239538 - _022394E4 - 2 ; case 4
_022394EE:
mov r0, #4
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
ldr r0, [r4, #0x14]
mov r1, #2
bl FUN_02022840
@@ -24610,7 +24610,7 @@ _02239528:
cmp r0, #1
bhi _02239534
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
_02239534:
add r0, r5, #0
pop {r3, r4, r5, pc}
@@ -24645,7 +24645,7 @@ MOD83_0223955C: ; 0x0223955C
ldr r0, [r0, #0x14]
bl FUN_0202287C
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
pop {r3, pc}
nop
_02239570: .word MOD83_0223BC30
diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s
index a5838988..3c6bd557 100644
--- a/arm9/modules/84/asm/module_84_thumb1.s
+++ b/arm9/modules/84/asm/module_84_thumb1.s
@@ -25,7 +25,7 @@ _021D74FC:
mov r0, #3
mov r1, #0x4b
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7670 ; =0x00001244
add r0, r6, #0
mov r2, #0x4b
@@ -269,7 +269,7 @@ _021D772E:
add r0, r6, #0
bl OverlayManager_FreeData
mov r0, #0x4b
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
_021D773E:
@@ -934,7 +934,7 @@ MOD84_021D7BC8: ; 0x021D7BC8
add r0, #0x6c
mov r1, #0x4b
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
ldr r0, [r4, #4]
mov r1, #0
bl NNS_G3dGetAnmByIdx
diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s
index 221d2f9d..4ccc0477 100644
--- a/arm9/modules/85/asm/module_85.s
+++ b/arm9/modules/85/asm/module_85.s
@@ -18,7 +18,7 @@ MOD85_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x4f
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #8
mov r2, #0x4f
@@ -193,7 +193,7 @@ MOD85_021D7644: ; 0x021D7644
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x4f
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
.align 2, 0
diff --git a/arm9/modules/86/asm/module_86.s b/arm9/modules/86/asm/module_86.s
index 2bd7d12a..0c2e1774 100644
--- a/arm9/modules/86/asm/module_86.s
+++ b/arm9/modules/86/asm/module_86.s
@@ -11,7 +11,7 @@ MOD86_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x54
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0x44
mov r2, #0x54
@@ -57,7 +57,7 @@ MOD86_021D74E0: ; 0x021D74E0
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD86_021D76EC
add r0, r4, #0
@@ -233,7 +233,7 @@ MOD86_021D76B0: ; 0x021D76B0
add r0, r5, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
.align 2, 0
diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c
index 28627d6b..de039375 100644
--- a/arm9/src/error_message_reset.c
+++ b/arm9/src/error_message_reset.c
@@ -8,7 +8,9 @@
const struct UnkStruct_02016B94_4 UNK_020FF49C = { 0, 3, 3, 0x1a, 0x12, 1, 0x23 };
-const u32 UNK_020FF4A4[2] = { 0x00020000, 0x00000000 };
+const struct HeapParam UNK_020FF4A4[] = {
+ {0x00020000, OS_ARENA_MAIN}
+};
const struct GraphicsModes UNK_020FF4AC = { mode1 : 1 };
@@ -44,13 +46,13 @@ THUMB_FUNC void PrintErrorMessageAndReset()
OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN));
OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN));
- FUN_020166C8((u32 *)UNK_020FF4A4, 1, 1, 0);
+ InitHeapSystem(UNK_020FF4A4, NELEMS(UNK_020FF4A4), 1, 0);
FUN_0200E3A0(PM_LCD_TOP, 0);
FUN_0200E3A0(PM_LCD_BOTTOM, 0);
- OS_DisableIrqMask(1);
- OS_SetIrqFunction(1, &VBlankHandler);
- OS_EnableIrqMask(1);
+ OS_DisableIrqMask(OS_IE_V_BLANK);
+ OS_SetIrqFunction(OS_IE_V_BLANK, &VBlankHandler);
+ OS_EnableIrqMask(OS_IE_V_BLANK);
Main_SetVBlankIntrCB(NULL, NULL);
@@ -61,7 +63,7 @@ THUMB_FUNC void PrintErrorMessageAndReset()
reg_GX_DISPCNT &= 0xFFFFE0FF;
reg_GXS_DB_DISPCNT &= 0xFFFFE0FF;
- FUN_0201669C(4, 8);
+ SetKeyRepeatTimers(4, 8);
gMain.unk65 = 0;
GX_SwapDisplay();
diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c
index 64ea7a54..840b17a4 100644
--- a/arm9/src/game_init.c
+++ b/arm9/src/game_init.c
@@ -10,6 +10,7 @@
#include "game_init.h"
#include "registers.h"
#include "heap.h"
+#include "OS_interrupt.h"
#pragma thumb on
@@ -30,11 +31,11 @@ OS_DTCM;
static struct {
void * contents;
u32 name_hash;
-} UNK_021C4928[128];
+} sFileCache[128];
struct Main gMain;
-void Main_HBlankIntr(BOOL);
+void Main_ToggleHBlankInterrupt(BOOL enableFlag);
void FUN_0201B5CC(void *);
void FUN_02015EA0(void)
@@ -66,7 +67,7 @@ void Main_SetVBlankIntrCB(void (*a0)(void *), void * a1)
void FUN_02015F1C(void)
{
- Main_HBlankIntr(FALSE);
+ Main_ToggleHBlankInterrupt(FALSE);
gMain.hBlankIntr = NULL;
gMain.hBlankIntrArg = NULL;
}
@@ -75,7 +76,7 @@ BOOL FUN_02015F34(void (*a0)(void *), void * a1)
{
if (a0 == 0)
{
- Main_HBlankIntr(FALSE);
+ Main_ToggleHBlankInterrupt(FALSE);
gMain.hBlankIntr = NULL;
gMain.hBlankIntrArg = NULL;
return TRUE;
@@ -84,7 +85,7 @@ BOOL FUN_02015F34(void (*a0)(void *), void * a1)
{
gMain.hBlankIntrArg = a1;
gMain.hBlankIntr = a0;
- Main_HBlankIntr(TRUE);
+ Main_ToggleHBlankInterrupt(TRUE);
return TRUE;
}
else
@@ -93,36 +94,36 @@ BOOL FUN_02015F34(void (*a0)(void *), void * a1)
}
}
-void FUN_02015F6C(void)
+void Main_CallHBlankCallback(void)
{
if (gMain.hBlankIntr != NULL)
gMain.hBlankIntr(gMain.hBlankIntrArg);
}
-void Main_HBlankIntr(BOOL a0)
+void Main_ToggleHBlankInterrupt(BOOL enableFlag)
{
(void)OS_DisableIrq();
- if (!a0)
+ if (!enableFlag)
{
(void)OS_GetIrqMask();
- OS_DisableIrqMask(2);
+ OS_DisableIrqMask(OS_IE_H_BLANK);
GX_HBlankIntr(FALSE);
}
else
{
(void)OS_GetIrqMask();
- OS_SetIrqFunction(2, FUN_02015F6C);
- OS_EnableIrqMask(2);
+ OS_SetIrqFunction(OS_IE_H_BLANK, Main_CallHBlankCallback);
+ OS_EnableIrqMask(OS_IE_H_BLANK);
GX_HBlankIntr(TRUE);
}
(void)OS_EnableIrq();
}
-const u32 UNK_020EDB10[][2] = {
- { 0x0000D000, 0x00000000 },
- { 0x00021000, 0x00000000 },
- { 0x00001000, 0x00000000 },
- { 0x0010D800, 0x00000000 }
+const struct HeapParam UNK_020EDB10[] = {
+ { 0x00D000, OS_ARENA_MAIN },
+ { 0x021000, OS_ARENA_MAIN },
+ { 0x001000, OS_ARENA_MAIN },
+ { 0x10D800, OS_ARENA_MAIN }
};
void FUN_02015FC8(void)
@@ -136,12 +137,12 @@ void FUN_02015FC8(void)
{
csum += digest[i];
}
- csum = (csum << 24) >> 24;
+ csum %= 256;
while (csum & 3)
{
csum++;
}
- FUN_020166C8((u32 *)UNK_020EDB10, 4, 92, csum);
+ InitHeapSystem(UNK_020EDB10, NELEMS(UNK_020EDB10), 92, csum);
}
void InitSystemForTheGame(void)
@@ -189,7 +190,7 @@ void InitGraphicMemory(void)
MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE);
}
-void * FUN_020161A4(u32 heap_id, const char * path)
+void * AllocAndReadFile(u32 heap_id, const char * path)
{
void * ret;
@@ -214,7 +215,7 @@ void * FUN_020161A4(u32 heap_id, const char * path)
return ret;
}
-void FUN_020161F8(const char * path, void ** ptr)
+void OpenAndReadWholeFile(const char * path, void ** ptr)
{
FSFile file;
FS_InitFile(&file);
@@ -227,94 +228,94 @@ void FUN_020161F8(const char * path, void ** ptr)
}
}
-u32 FUN_02016230(const s8 * str)
+u32 GetFilenameHash(const s8 * str)
{
u16 len = (u16)strlen(str);
- u16 sp4;
+ u16 numWords;
if ((len % 4) != 0)
- sp4 = (u16)((len / 4) + 1);
+ numWords = (u16)((len / 4) + 1);
else
- sp4 = (u16)(len / 4);
- u32 r7 = 0;
+ numWords = (u16)(len / 4);
+ u32 hash = 0;
s32 i, j;
- for (i = 0; i < sp4; i++)
+ for (i = 0; i < numWords; i++)
{
- u32 r1 = 0;
+ u32 curWord = 0;
for (j = 0; j < 4; j++)
{
- int r5 = str[4 * i + j];
- if (r5 == 0)
+ int curChar = str[4 * i + j];
+ if (curChar == 0)
break;
- r1 |= r5 << (8 * j);
+ curWord |= curChar << (8 * j);
}
- r7 ^= r1;
+ hash ^= curWord;
}
- return r7;
+ return hash;
}
-int FUN_020162A0(u32 a0)
+int GetFileCacheId(u32 hash)
{
for (int i = 0; i < 128; i++)
{
- if (UNK_021C4928[i].name_hash == a0 && UNK_021C4928[i].contents != NULL)
+ if (sFileCache[i].name_hash == hash && sFileCache[i].contents != NULL)
return i;
}
return -1;
}
-int FUN_020162C8(void * a0, u32 a1)
+int AddFileToCache(void * contents, u32 hash)
{
for (int i = 0; i < 128; i++)
{
- if (UNK_021C4928[i].contents == NULL)
+ if (sFileCache[i].contents == NULL)
{
- UNK_021C4928[i].contents = a0;
- UNK_021C4928[i].name_hash = a1;
+ sFileCache[i].contents = contents;
+ sFileCache[i].name_hash = hash;
return i;
}
}
return -1;
}
-void FUN_020162FC(void)
+void ClearFileCache(void)
{
for (int i = 127; i > -1; i--)
{
- if (UNK_021C4928[i].contents != NULL)
+ if (sFileCache[i].contents != NULL)
{
- FreeToHeap(UNK_021C4928[i].contents);
- UNK_021C4928[i].contents = NULL;
- UNK_021C4928[i].name_hash = 0;
+ FreeToHeap(sFileCache[i].contents);
+ sFileCache[i].contents = NULL;
+ sFileCache[i].name_hash = 0;
}
}
}
-void * FUN_02016324(const s8 * str, u32 heap_id)
+void * OpenFileCached(const s8 * str, u32 heap_id)
{
- s8 sp0[32];
+ s8 filenameBuf[32];
FSFile file;
void * ret;
- int r5 = 0;
+ int skipCache = 0;
if (str[0] == '!')
{
- strcpy(sp0, str + 1);
- r5 = 1;
+ strcpy(filenameBuf, str + 1);
+ skipCache = 1;
}
else
{
- strcpy(sp0, str);
+ strcpy(filenameBuf, str);
}
- u32 r7 = FUN_02016230(sp0);
- s32 r0 = FUN_020162A0(r7);
- if (r0 >= 0 && r5 == 0)
+ u32 hash = GetFilenameHash(filenameBuf);
+ s32 cacheId = GetFileCacheId(hash);
+ if (cacheId >= 0 && skipCache == 0)
{
- ret = UNK_021C4928[r0].contents;
+ ret = sFileCache[cacheId].contents;
}
else
{
FS_InitFile(&file);
- if (FS_OpenFile(&file, (const char *)sp0))
+ if (FS_OpenFile(&file, (const char *)filenameBuf))
{
u32 size = file.prop.file.bottom - file.prop.file.top;
ret = AllocFromHeap(heap_id, size);
@@ -327,8 +328,8 @@ void * FUN_02016324(const s8 * str, u32 heap_id)
}
}
FS_CloseFile(&file);
- if (r5 == 0)
- FUN_020162C8(ret, r7);
+ if (skipCache == 0)
+ AddFileToCache(ret, hash);
}
else
ret = NULL;
@@ -336,24 +337,24 @@ void * FUN_02016324(const s8 * str, u32 heap_id)
return ret;
}
-void FUN_020163BC(void)
+void InitKeypadAndTouchpad(void)
{
TPCalibrateParam tp;
- gMain.unk34 = 0;
- gMain.unk38 = 0;
- gMain.unk3C = 0;
- gMain.unk40 = 0;
- gMain.unk44 = 0;
+ gMain.buttonMode = 0;
+ gMain.heldKeysRaw = 0;
+ gMain.newKeysRaw = 0;
+ gMain.newAndRepeatedKeysRaw = 0;
+ gMain.heldKeys = 0;
gMain.newKeys = 0;
gMain.newAndRepeatedKeys = 0;
- gMain.unk50 = 0;
- gMain.unk54 = 8;
- gMain.unk58 = 15;
- gMain.unk5C = 0;
- gMain.unk5E = 0;
- gMain.unk60 = 0;
- gMain.unk62 = 0;
- gMain.unk64 = 0;
+ gMain.keyRepeatCounter = 0;
+ gMain.keyRepeatContinueDelay = 8;
+ gMain.keyRepeatStartDelay = 15;
+ gMain.touchX = 0;
+ gMain.touchY = 0;
+ gMain.touchNew = 0;
+ gMain.touchHeld = 0;
+ gMain.touchpadReadAuto = 0;
TP_Init();
if (TP_GetUserInfo(&tp) == TRUE)
TP_SetCalibrateParam(&tp);
@@ -382,38 +383,53 @@ void FUN_02016454(u8 a0)
gMain.unk67 &= ~a0;
}
-void FUN_02016464(void)
+void ReadKeypadAndTocuhpad(void)
{
TPData raw, calib;
if (PAD_DetectFold())
{
+ // Can't press any buttons while the lid is closed.
gMain.newKeys = 0;
- gMain.unk44 = 0;
+ gMain.heldKeys = 0;
gMain.newAndRepeatedKeys = 0;
- gMain.unk60 = 0;
- gMain.unk62 = 0;
+ gMain.touchNew = 0;
+ gMain.touchHeld = 0;
return;
}
- u32 r0 = PAD_Read();
- gMain.unk40 = gMain.unk3C = (r0 ^ gMain.unk38) & r0;
- if (r0 != 0 && gMain.unk38 == r0)
+
+ u32 padRead = PAD_Read();
+
+ // newKeys is all keys that were pressed on this frame but
+ // not the last frame.
+ gMain.newAndRepeatedKeysRaw = gMain.newKeysRaw = (padRead ^ gMain.heldKeysRaw) & padRead;
+
+ // If you are holding down buttons, indicate them "repeated" every few frames
+ // as defined by .keyRepeatStartDelay and .keyRepeatContinueDelay.
+ // Same logic as gen3, but fixes the bug where the
+ // remapped keys are incorrectly used here.
+ // See also: pokeemerald/src/main.c:ReadKeys
+ if (padRead != 0 && gMain.heldKeysRaw == padRead)
{
- if (--gMain.unk50 == 0)
+ if (--gMain.keyRepeatCounter == 0)
{
- gMain.unk40 = r0;
- gMain.unk50 = gMain.unk54;
+ gMain.newAndRepeatedKeysRaw = padRead;
+ gMain.keyRepeatCounter = gMain.keyRepeatContinueDelay;
}
}
else
{
- gMain.unk50 = gMain.unk58;
+ gMain.keyRepeatCounter = gMain.keyRepeatStartDelay;
}
- gMain.unk38 = r0;
- gMain.newKeys = gMain.unk3C;
- gMain.unk44 = r0;
- gMain.newAndRepeatedKeys = gMain.unk40;
- FUN_02016568();
- if (gMain.unk64 == 0)
+ gMain.heldKeysRaw = padRead;
+
+ // Apply the button mode option to the read key input
+ gMain.newKeys = gMain.newKeysRaw;
+ gMain.heldKeys = padRead;
+ gMain.newAndRepeatedKeys = gMain.newAndRepeatedKeysRaw;
+ ApplyButtonModeToInput();
+
+ // Read the touchpad. New to gen 4.
+ if (gMain.touchpadReadAuto == 0)
{
while (TP_RequestRawSampling(&raw))
;
@@ -421,111 +437,117 @@ void FUN_02016464(void)
else
TP_GetLatestRawPointInAuto(&raw);
TP_GetCalibratedPoint(&calib, &raw);
- if (calib.validity == 0)
+
+ // If the touchpad is valid, we gucci.
+ if (calib.validity == TP_VALIDITY_VALID)
{
- gMain.unk5C = calib.x;
- gMain.unk5E = calib.y;
+ gMain.touchX = calib.x;
+ gMain.touchY = calib.y;
}
- else if (gMain.unk62)
+
+ // If the touchpad was used last frame, salvage what we can.
+ else if (gMain.touchHeld)
{
switch (calib.validity)
{
- case 1:
- gMain.unk5E = calib.y;
+ case TP_VALIDITY_INVALID_X:
+ gMain.touchY = calib.y;
break;
- case 2:
- gMain.unk5C = calib.x;
+ case TP_VALIDITY_INVALID_Y:
+ gMain.touchX = calib.x;
break;
- case 3:
+ case TP_VALIDITY_INVALID_XY:
break;
}
}
+ // What was read from the touchpad was not salvageable.
+ // Ignore touch input.
else
calib.touch = 0;
- gMain.unk60 = (u16)((gMain.unk62 ^ calib.touch) & calib.touch);
- gMain.unk62 = calib.touch;
+ gMain.touchNew = (u16)((gMain.touchHeld ^ calib.touch) & calib.touch);
+ gMain.touchHeld = calib.touch;
}
-void FUN_02016568(void)
+void ApplyButtonModeToInput(void)
{
- switch (gMain.unk34)
+ switch (gMain.buttonMode)
{
case 0: // Normal
break;
case 1: // Start = X
if (gMain.newKeys & PAD_BUTTON_START)
gMain.newKeys |= PAD_BUTTON_X;
- if (gMain.unk44 & PAD_BUTTON_START)
- gMain.unk44 |= PAD_BUTTON_X;
+ if (gMain.heldKeys & PAD_BUTTON_START)
+ gMain.heldKeys |= PAD_BUTTON_X;
if (gMain.newAndRepeatedKeys & PAD_BUTTON_START)
gMain.newAndRepeatedKeys |= PAD_BUTTON_X;
break;
case 2: // Swap X and Y; unused in the retail game
{
- u32 r1 = 0;
+ u32 swapMask = 0;
if (gMain.newKeys & PAD_BUTTON_X)
{
- r1 |= PAD_BUTTON_Y;
+ swapMask |= PAD_BUTTON_Y;
}
if (gMain.newKeys & PAD_BUTTON_Y)
{
- r1 |= PAD_BUTTON_X;
+ swapMask |= PAD_BUTTON_X;
}
- gMain.newKeys &= 0xF3FF;
- gMain.newKeys |= r1;
+ gMain.newKeys &= ((PAD_BUTTON_X | PAD_BUTTON_Y) ^ 0xFFFF);;
+ gMain.newKeys |= swapMask;
}
{
- u32 r1 = 0;
- if (gMain.unk44 & PAD_BUTTON_X)
+ u32 swapMask = 0;
+ if (gMain.heldKeys & PAD_BUTTON_X)
{
- r1 |= PAD_BUTTON_Y;
+ swapMask |= PAD_BUTTON_Y;
}
- if (gMain.unk44 & PAD_BUTTON_Y)
+ if (gMain.heldKeys & PAD_BUTTON_Y)
{
- r1 |= PAD_BUTTON_X;
+ swapMask |= PAD_BUTTON_X;
}
- gMain.unk44 &= 0xF3FF;
- gMain.unk44 |= r1;
+ gMain.heldKeys &= ((PAD_BUTTON_X | PAD_BUTTON_Y) ^ 0xFFFF);
+ gMain.heldKeys |= swapMask;
}
{
- u32 r1 = 0;
+ u32 swapMask = 0;
if (gMain.newAndRepeatedKeys & PAD_BUTTON_X)
{
- r1 |= PAD_BUTTON_Y;
+ swapMask |= PAD_BUTTON_Y;
}
if (gMain.newAndRepeatedKeys & PAD_BUTTON_Y)
{
- r1 |= PAD_BUTTON_X;
+ swapMask |= PAD_BUTTON_X;
}
- gMain.newAndRepeatedKeys &= 0xF3FF;
- gMain.newAndRepeatedKeys |= r1;
+ gMain.newAndRepeatedKeys &= ((PAD_BUTTON_X | PAD_BUTTON_Y) ^ 0xFFFF);
+ gMain.newAndRepeatedKeys |= swapMask;
}
break;
case 3: // L = A
if (gMain.newKeys & PAD_BUTTON_L)
gMain.newKeys |= PAD_BUTTON_A;
- if (gMain.unk44 & PAD_BUTTON_L)
- gMain.unk44 |= PAD_BUTTON_A;
+ if (gMain.heldKeys & PAD_BUTTON_L)
+ gMain.heldKeys |= PAD_BUTTON_A;
if (gMain.newAndRepeatedKeys & PAD_BUTTON_L)
gMain.newAndRepeatedKeys |= PAD_BUTTON_A;
- gMain.newKeys &= 0xFCFF;
- gMain.unk44 &= 0xFCFF;
- gMain.newAndRepeatedKeys &= 0xFCFF;
+ gMain.newKeys &= ((PAD_BUTTON_L | PAD_BUTTON_R) ^ 0xFFFF);
+ gMain.heldKeys &= ((PAD_BUTTON_L | PAD_BUTTON_R) ^ 0xFFFF);
+ gMain.newAndRepeatedKeys &= ((PAD_BUTTON_L | PAD_BUTTON_R) ^ 0xFFFF);
}
}
-void FUN_0201669C(int x, int y)
+void SetKeyRepeatTimers(int x, int y)
{
- gMain.unk54 = x;
- gMain.unk58 = y;
+ gMain.keyRepeatContinueDelay = x;
+ gMain.keyRepeatStartDelay = y;
}
-void FUN_020166A8(u8 a0)
+void SetSoftResetDisableMask(u8 a0)
{
- gMain.unk68 |= a0;
+ gMain.softResetDisabled |= a0;
}
-void FUN_020166B8(u8 a0)
+void ClearSoftResetDisableMask(u8 a0)
{
- gMain.unk68 &= ~a0;
+ gMain.softResetDisabled &= ~a0;
}
diff --git a/arm9/src/heap.c b/arm9/src/heap.c
index 7f35fdcc..842fd33a 100644
--- a/arm9/src/heap.c
+++ b/arm9/src/heap.c
@@ -1,31 +1,45 @@
#include "heap.h"
#include "error_message_reset.h"
#include "unk_02031734.h"
+#include "NNS_FND_expheap.h"
+#include "NNS_FND_allocator.h"
+struct HeapInfo
+{
+ NNSFndHeapHandle *heapHandles;
+ NNSFndHeapHandle *parentHeapHandles;
+ void **subHeapRawPtrs;
+ u16 *numMemBlocks;
+ u8 *heapIdxs;
+ u16 totalNumHeaps;
+ u16 nTemplates;
+ u16 maxHeaps;
+ u16 unallocatedHeapId;
+};
+
+typedef struct MemoryBlock
+{
+ u8 filler_00[12];
+ u32 heapId:8;
+ u32 filler_0D:24;
+} MemoryBlock;
-extern void *NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2);
-extern void *NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2);
-extern void NNS_FndDestroyExpHeap();
-extern void NNS_FndFreeToExpHeap(void *ptr1, void *ptr2);
-extern u32 NNS_FndGetTotalFreeSizeForExpHeap(void *param0);
-extern void NNS_FndInitAllocatorForExpHeap(u32 param0, void *param1, u32 param2);
-extern u32 NNS_FndGetSizeForMBlockExpHeap(void *param0);
-extern void NNS_FndResizeForMBlockExpHeap(void *ptr1, void *ptr2, u32 param2);
-
-
-struct UnkStruct_020166C8 UNK_021C4D28;
-
+struct HeapInfo sHeapInfo;
-THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size)
+THUMB_FUNC void InitHeapSystem(const struct HeapParam *templates, u32 nTemplates, u32 totalNumHeaps, u32 pre_size)
{
- u32 unk_size = param1 + 24;
+ void * ptr;
+ u32 unk_size, i;
- if (param2 < unk_size)
+ unk_size = nTemplates + 24;
+
+ if (totalNumHeaps < unk_size)
{
- param2 = unk_size;
+ totalNumHeaps = unk_size;
}
if (pre_size != 0)
{
+ // force align
while (pre_size % 4 != 0)
{
pre_size++;
@@ -34,207 +48,196 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size)
OS_AllocFromArenaLo(OS_ARENA_MAIN, pre_size, 4);
}
- u32 r7 = param2 * 2;
-
- void *ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, (unk_size * 3 + 1) * sizeof(u32) + r7 + param2, 4);
- UNK_021C4D28.unk00 = ptr;
- ptr += (unk_size + 1) * 4;
- UNK_021C4D28.unk04 = ptr;
- ptr += unk_size * 4;
- UNK_021C4D28.unk08 = ptr;
- ptr += unk_size * 4;
- UNK_021C4D28.unk0c = ptr;
- ptr += r7;
- UNK_021C4D28.unk10 = ptr;
- UNK_021C4D28.unk14 = (u16)param2;
- UNK_021C4D28.unk16 = (u16)param1;
-
- r7 = 0;
- UNK_021C4D28.unk1a = (u16)unk_size;
- UNK_021C4D28.unk18 = (u16)unk_size;
-
- while (r7 < param1)
+ sHeapInfo.heapHandles = (NNSFndHeapHandle*) OS_AllocFromArenaLo(
+ OS_ARENA_MAIN,
+ (unk_size + 1) * sizeof(NNSFndHeapHandle)
+ + unk_size * sizeof(NNSFndHeapHandle)
+ + unk_size * sizeof(void *)
+ + totalNumHeaps * sizeof(u16)
+ + totalNumHeaps,
+ 4
+ );
+ sHeapInfo.parentHeapHandles = sHeapInfo.heapHandles + (unk_size + 1);
+ sHeapInfo.subHeapRawPtrs = (void **)(sHeapInfo.parentHeapHandles + unk_size);
+ sHeapInfo.numMemBlocks = (u16 *)(sHeapInfo.subHeapRawPtrs + unk_size);
+ sHeapInfo.heapIdxs = (u8 *)(sHeapInfo.numMemBlocks + totalNumHeaps);
+ sHeapInfo.totalNumHeaps = (u16)totalNumHeaps;
+ sHeapInfo.nTemplates = (u16)nTemplates;
+
+ sHeapInfo.unallocatedHeapId = (u16)unk_size;
+ sHeapInfo.maxHeaps = (u16)unk_size;
+
+ for (i = 0; i < nTemplates; i++)
{
- void *ptr;
- if (param0[1] == 0 || param0[1] != 2)
+ switch (templates[i].arena)
{
- ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, param0[0], 4);
- }
- else
- {
- ptr = OS_AllocFromArenaHi(OS_ARENA_MAINEX, param0[0], 4);
+ case OS_ARENA_MAIN:
+ default:
+ ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, templates[i].size, 4);
+ break;
+ case OS_ARENA_MAINEX:
+ ptr = OS_AllocFromArenaHi(OS_ARENA_MAINEX, templates[i].size, 4);
+ break;
}
- if (ptr != 0)
+ if (ptr != NULL)
{
- UNK_021C4D28.unk00[r7] = NNS_FndCreateExpHeapEx(ptr, param0[0], 0);
- UNK_021C4D28.unk10[r7] = (u8)r7;
+ sHeapInfo.heapHandles[i] = NNS_FndCreateExpHeap(ptr, templates[i].size);
+ sHeapInfo.heapIdxs[i] = (u8)i;
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
-
- param0 += 2;
- r7++;
}
- while (param1 < unk_size + 1)
+ for (i = nTemplates; i < unk_size + 1; i++)
{
- UNK_021C4D28.unk00[param1] = 0;
- UNK_021C4D28.unk10[param1] = (u8)UNK_021C4D28.unk1a;
-
- param1++;
+ sHeapInfo.heapHandles[i] = NULL;
+ sHeapInfo.heapIdxs[i] = (u8)sHeapInfo.unallocatedHeapId;
}
- while (param1 < param2)
+ while (i < totalNumHeaps)
{
- UNK_021C4D28.unk10[param1] = (u8)UNK_021C4D28.unk1a;
+ sHeapInfo.heapIdxs[i] = (u8)sHeapInfo.unallocatedHeapId;
- param1++;
+ i++;
}
- for (param1 = 0; param1 < param2; param1++)
+ for (i = 0; i < totalNumHeaps; i++)
{
- UNK_021C4D28.unk0c[param1] = 0;
+ sHeapInfo.numMemBlocks[i] = 0;
}
}
-THUMB_FUNC s32 FUN_020167F4()
+THUMB_FUNC s32 FindFirstAvailableHeapHandle()
{
- s32 i = UNK_021C4D28.unk16;
- s32 j = UNK_021C4D28.unk18;
+ s32 i;
- if (i < j)
+ for (i = sHeapInfo.nTemplates; i < sHeapInfo.maxHeaps; i++)
{
- void **ptr = UNK_021C4D28.unk00 + i;
- do
- {
- if (*ptr == 0)
- {
- return i;
- }
- i++;
- ptr++;
- } while (i < j);
+ if (sHeapInfo.heapHandles[i] == NULL)
+ return i;
}
return -1;
}
-THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 param1, u32 param2)
+THUMB_FUNC BOOL CreateHeap(u32 parent, u32 child, u32 size)
{
- return FUN_02016834(param0, param1, param2, 4);
+ return CreateHeapInternal(parent, child, size, 4);
}
-THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2)
+THUMB_FUNC BOOL CreateHeapAtEnd(u32 parent, u32 child, u32 size)
{
- return FUN_02016834(param0, param1, param2, -4);
+ return CreateHeapInternal(parent, child, size, -4);
}
-THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3)
+THUMB_FUNC BOOL CreateHeapInternal(u32 parent, u32 child, u32 size, s32 alignment)
{
GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
- u8 *ptr = UNK_021C4D28.unk10;
- if (UNK_021C4D28.unk1a == ptr[param1])
+ u8 *ptr = sHeapInfo.heapIdxs;
+ if (sHeapInfo.unallocatedHeapId == ptr[child])
{
- void *ptr2 = UNK_021C4D28.unk00[ptr[param0]];
- if (ptr2 != 0)
+ NNSFndHeapHandle parentHeap = sHeapInfo.heapHandles[ptr[parent]];
+ if (parentHeap != NULL)
{
- void *ptr3 = NNS_FndAllocFromExpHeapEx(ptr2, param2, param3);
- if (ptr3 != 0)
+ void *newHeapAddr = NNS_FndAllocFromExpHeapEx(parentHeap, size, alignment);
+ if (newHeapAddr != NULL)
{
- param3 = FUN_020167F4();
- if (param3 >= 0)
+ s32 i = FindFirstAvailableHeapHandle();
+ if (i >= 0)
{
- UNK_021C4D28.unk00[param3] = NNS_FndCreateExpHeapEx(ptr3, param2, 0);
+ sHeapInfo.heapHandles[i] = NNS_FndCreateExpHeap(newHeapAddr, size);
- if (UNK_021C4D28.unk00[param3] != 0)
+ if (sHeapInfo.heapHandles[i] != NULL)
{
- UNK_021C4D28.unk04[param3] = ptr2;
- UNK_021C4D28.unk08[param3] = ptr3;
- UNK_021C4D28.unk10[param1] = (u8)param3;
+ sHeapInfo.parentHeapHandles[i] = parentHeap;
+ sHeapInfo.subHeapRawPtrs[i] = newHeapAddr;
+ sHeapInfo.heapIdxs[child] = (u8)i;
- return 1;
+ return TRUE;
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
- return 0;
+ return FALSE;
}
-THUMB_FUNC void FUN_020168D0(u32 heap_id)
+THUMB_FUNC void DestroyHeap(u32 heap_id)
{
- GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
+ GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
+
+ NNSFndHeapHandle handle = sHeapInfo.heapHandles[sHeapInfo.heapIdxs[heap_id]];
- if (UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] != 0)
+ if (handle != NULL)
{
- NNS_FndDestroyExpHeap();
+ NNS_FndDestroyExpHeap(handle);
- u8 index = UNK_021C4D28.unk10[heap_id];
- void *ptr1 = UNK_021C4D28.unk04[index];
- void *ptr2 = UNK_021C4D28.unk08[index];
- if (ptr1 != 0 && ptr2 != 0)
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNSFndHeapHandle parentHeap = sHeapInfo.parentHeapHandles[index];
+ void *childRaw = sHeapInfo.subHeapRawPtrs[index];
+ if (parentHeap != NULL && childRaw != NULL)
{
- NNS_FndFreeToExpHeap(ptr1, ptr2);
+ NNS_FndFreeToExpHeap(parentHeap, childRaw);
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
- UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] = 0;
- UNK_021C4D28.unk04[UNK_021C4D28.unk10[heap_id]] = 0;
- UNK_021C4D28.unk08[UNK_021C4D28.unk10[heap_id]] = 0;
+ sHeapInfo.heapHandles[sHeapInfo.heapIdxs[heap_id]] = NULL;
+ sHeapInfo.parentHeapHandles[sHeapInfo.heapIdxs[heap_id]] = NULL;
+ sHeapInfo.subHeapRawPtrs[sHeapInfo.heapIdxs[heap_id]] = NULL;
- UNK_021C4D28.unk10[heap_id] = (u8)UNK_021C4D28.unk1a;
+ sHeapInfo.heapIdxs[heap_id] = (u8)sHeapInfo.unallocatedHeapId;
}
}
-THUMB_FUNC u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3)
+THUMB_FUNC void *AllocFromHeapInternal(NNSFndHeapHandle heap, u32 size, s32 alignment, u32 heap_id)
{
- GF_ASSERT(param0);
+ GF_ASSERT(heap);
OSIntrMode intr_mode = OS_DisableInterrupts();
- param1 += 16;
- u32 *ptr = (u32 *)NNS_FndAllocFromExpHeapEx(param0, param1, param2);
+ size += sizeof(MemoryBlock);
+ void *ptr = NNS_FndAllocFromExpHeapEx(heap, size, alignment);
OS_RestoreInterrupts(intr_mode);
- if (ptr != 0)
+ if (ptr != NULL)
{
- ptr[3] = (ptr[3] & ~0xff) | (param3 & 0xff);
+ ((MemoryBlock *)ptr)->heapId = heap_id;
- ptr += 4;
+ ptr += sizeof(MemoryBlock);
}
return ptr;
}
-THUMB_FUNC void FUN_02016988()
+THUMB_FUNC void AllocFail()
{
if (FUN_02031810() != 0)
{
@@ -244,19 +247,19 @@ THUMB_FUNC void FUN_02016988()
void *AllocFromHeap(u32 heap_id, u32 size)
{
- void *ptr = 0;
- if (heap_id < UNK_021C4D28.unk14)
+ void *ptr = NULL;
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[heap_id];
- ptr = FUN_02016944(UNK_021C4D28.unk00[index], size, 4, heap_id);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ ptr = AllocFromHeapInternal(sHeapInfo.heapHandles[index], size, 4, heap_id);
}
- if (ptr != 0)
+ if (ptr != NULL)
{
- UNK_021C4D28.unk0c[heap_id]++;
+ sHeapInfo.numMemBlocks[heap_id]++;
}
else
{
- FUN_02016988();
+ AllocFail();
}
return ptr;
@@ -264,20 +267,20 @@ void *AllocFromHeap(u32 heap_id, u32 size)
void *AllocFromHeapAtEnd(u32 heap_id, u32 size)
{
- void *ptr = 0;
- if (heap_id < UNK_021C4D28.unk14)
+ void *ptr = NULL;
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[heap_id];
- ptr = FUN_02016944(UNK_021C4D28.unk00[index], size, -4, heap_id);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ ptr = AllocFromHeapInternal(sHeapInfo.heapHandles[index], size, -4, heap_id);
}
- if (ptr != 0)
+ if (ptr != NULL)
{
- UNK_021C4D28.unk0c[heap_id]++;
+ sHeapInfo.numMemBlocks[heap_id]++;
}
else
{
- FUN_02016988();
+ AllocFail();
}
return ptr;
@@ -285,97 +288,99 @@ void *AllocFromHeapAtEnd(u32 heap_id, u32 size)
void FreeToHeap(void *ptr)
{
- u8 heap_id = (u8)((u32 *)ptr)[-1];
+ ptr -= sizeof(MemoryBlock);
+ u32 heap_id = ((MemoryBlock *)ptr)->heapId;
- if ((u16)heap_id < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[heap_id];
- void *ptr2 = UNK_021C4D28.unk00[index];
- GF_ASSERT(ptr2);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNSFndHeapHandle heap = sHeapInfo.heapHandles[index];
+ GF_ASSERT(heap != NULL);
- if (UNK_021C4D28.unk0c[heap_id] == 0)
+ if (sHeapInfo.numMemBlocks[heap_id] == 0)
{
- FUN_02016B90(heap_id);
+ GF_heap_c_dummy_return_true(heap_id);
}
- GF_ASSERT(UNK_021C4D28.unk0c[heap_id]);
+ GF_ASSERT(sHeapInfo.numMemBlocks[heap_id] != 0);
- UNK_021C4D28.unk0c[heap_id]--;
+ sHeapInfo.numMemBlocks[heap_id]--;
OSIntrMode intr_mode = OS_DisableInterrupts();
- NNS_FndFreeToExpHeap(ptr2, ptr - 16);
+ NNS_FndFreeToExpHeap(heap, ptr);
OS_RestoreInterrupts(intr_mode);
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-void FreeToHeapExplicit(u32 param0, void *param1)
+void FreeToHeapExplicit(u32 heap_id, void *ptr)
{
- GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
+ GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
- if (param0 < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[param0];
- void *ptr = UNK_021C4D28.unk00[index];
- GF_ASSERT (ptr );
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNSFndHeapHandle heap = sHeapInfo.heapHandles[index];
+ GF_ASSERT( heap != NULL );
- u8 heap_id = (u8)((u32 *)param1)[-1];
- GF_ASSERT (heap_id == param0);
+ ptr -= sizeof(MemoryBlock);
+ GF_ASSERT(((MemoryBlock *)ptr)->heapId == heap_id);
- NNS_FndFreeToExpHeap(ptr, param1 - 16);
- GF_ASSERT (UNK_021C4D28.unk0c[param0]);
+ NNS_FndFreeToExpHeap(heap, ptr);
+ GF_ASSERT(sHeapInfo.numMemBlocks[heap_id] != 0);
- UNK_021C4D28.unk0c[param0]--;
+ sHeapInfo.numMemBlocks[heap_id]--;
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-THUMB_FUNC u32 FUN_02016AF8(u32 param0)
+THUMB_FUNC u32 GF_ExpHeap_FndGetTotalFreeSize(u32 heap_id)
{
- if (param0 < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[param0];
- return NNS_FndGetTotalFreeSizeForExpHeap(UNK_021C4D28.unk00[index]);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ return NNS_FndGetTotalFreeSizeForExpHeap(sHeapInfo.heapHandles[index]);
}
- GF_AssertFail();
+ GF_ASSERT(0);
return 0;
}
-THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2)
+THUMB_FUNC void GF_ExpHeap_FndInitAllocator(NNSFndAllocator * pAllocator, u32 heap_id, int alignment)
{
- if (param1 < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[param1];
- NNS_FndInitAllocatorForExpHeap(param0, UNK_021C4D28.unk00[index], param2);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNS_FndInitAllocatorForExpHeap(pAllocator, sHeapInfo.heapHandles[index], alignment);
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1)
+THUMB_FUNC void ReallocFromHeap(void *ptr, u32 newSize)
{
- GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
+ GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
- param1 += 16;
- if (NNS_FndGetSizeForMBlockExpHeap(ptr - 16) >= param1)
+ newSize += sizeof(MemoryBlock);
+ ptr -= sizeof(MemoryBlock);
+ if (NNS_FndGetSizeForMBlockExpHeap(ptr) >= newSize)
{
- u8 heap_id = (u8)((u32 *)ptr)[-1];
+ u32 heap_id = ((MemoryBlock *)ptr)->heapId;
- u8 index = UNK_021C4D28.unk10[heap_id];
+ u8 index = sHeapInfo.heapIdxs[heap_id];
- NNS_FndResizeForMBlockExpHeap(UNK_021C4D28.unk00[index], ptr - 16, param1);
+ NNS_FndResizeForMBlockExpHeap(sHeapInfo.heapHandles[index], ptr, newSize);
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-THUMB_FUNC u32 FUN_02016B90(u32 param0)
+THUMB_FUNC BOOL GF_heap_c_dummy_return_true(u32 heap_id)
{
-#pragma unused(param0)
- return 1;
+#pragma unused(heap_id)
+ return TRUE;
}
diff --git a/arm9/src/main.c b/arm9/src/main.c
index 7a8a14d8..1421ac48 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -54,10 +54,10 @@ THUMB_FUNC void NitroMain(void)
{
InitSystemForTheGame();
InitGraphicMemory();
- FUN_020163BC();
+ InitKeypadAndTouchpad();
FUN_02016438(0);
- PM_GetBackLight((PMBackLightSwitch *)SDK_STATIC_BSS_START, NULL);
+ PM_GetBackLight(&gBacklightTop, NULL);
FUN_02022294();
GF_InitRTCWork();
@@ -105,8 +105,8 @@ THUMB_FUNC void NitroMain(void)
{
FUN_02000EE8();
HandleDSLidAction();
- FUN_02016464();
- if ((gMain.unk38 & SOFT_RESET_KEY) == SOFT_RESET_KEY && !gMain.unk68) // soft reset?
+ ReadKeypadAndTocuhpad();
+ if ((gMain.heldKeysRaw & SOFT_RESET_KEY) == SOFT_RESET_KEY && !gMain.softResetDisabled) // soft reset?
{
DoSoftReset(0); // soft reset?
}
@@ -249,7 +249,7 @@ THUMB_FUNC void FUN_02000F4C(u32 arg0, u32 arg1)
while (1)
{
HandleDSLidAction();
- FUN_02016464();
+ ReadKeypadAndTocuhpad();
if (gMain.newKeys & 1)
break;
FUN_02000E9C();
diff --git a/arm9/src/options.c b/arm9/src/options.c
index 296b398a..03b63864 100644
--- a/arm9/src/options.c
+++ b/arm9/src/options.c
@@ -35,14 +35,14 @@ void Options_SetButtonModeOnMain(struct SaveBlock2 * sav2, u32 buttonMode) {
switch (buttonMode) {
case 1:
- gMain.unk34 = 1;
+ gMain.buttonMode = 1;
break;
case 2:
- gMain.unk34 = 3;
+ gMain.buttonMode = 3;
break;
case 0:
default:
- gMain.unk34 = 0;
+ gMain.buttonMode = 0;
break;
}
}
diff --git a/arm9/src/unk_02016B94.c b/arm9/src/unk_02016B94.c
index 6a9dd194..8ad78373 100644
--- a/arm9/src/unk_02016B94.c
+++ b/arm9/src/unk_02016B94.c
@@ -98,7 +98,7 @@ THUMB_FUNC void FUN_02016BF4(u32 *param0, u32 param1)
#ifdef NONMATCHING
THUMB_FUNC void FUN_02016C18(
- struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3)
+ struct UnkStruct_02016B94_2 *param0, u8 param1, const struct UnkStruct_02016B94_1 *param2, u8 param3)
{
u8 res = FUN_020177DC(param2->unk10, param3);
switch (param1)
@@ -342,7 +342,7 @@ THUMB_FUNC void FUN_02016C18(
}
#else
THUMB_FUNC asm void FUN_02016C18(
- struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3)
+ struct UnkStruct_02016B94_2 *param0, u8 param1, const struct UnkStruct_02016B94_1 *param2, u8 param3)
{
// clang-format off
push {r3-r7, lr}
@@ -4603,7 +4603,7 @@ THUMB_FUNC void FUN_020190EC(struct UnkStruct_02016B94_2 *param0,
}
THUMB_FUNC void FUN_02019150(
- struct UnkStruct_02016B94_2 *param0, struct Window *param1, struct UnkStruct_02016B94_4 *param2)
+ struct UnkStruct_02016B94_2 *param0, struct Window *param1, const struct UnkStruct_02016B94_4 *param2)
{
FUN_02019064(param0,
@@ -7745,7 +7745,7 @@ THUMB_FUNC void FUN_0201AB24(struct Window *window, u8 param1)
THUMB_FUNC u32 FUN_0201AB28(struct Window *window, u32 heap_id, const char *path)
{
- void *ptr = FUN_020161A4(heap_id, path);
+ void *ptr = AllocAndReadFile(heap_id, path);
window->unk00 = ptr;
u32 st0;
NNS_G2dGetUnpackedBGCharacterData(ptr, &st0);
@@ -7755,7 +7755,7 @@ THUMB_FUNC u32 FUN_0201AB28(struct Window *window, u32 heap_id, const char *path
THUMB_FUNC u32 FUN_0201AB44(struct Window *window, u32 heap_id, const char *path)
{
- void *ptr = FUN_020161A4(heap_id, path);
+ void *ptr = AllocAndReadFile(heap_id, path);
window->unk00 = ptr;
u32 st0;
NNS_G2dGetUnpackedPaletteData(ptr, &st0);
diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c
index 09b5b56f..ef9a6193 100644
--- a/arm9/src/unk_0202F150.c
+++ b/arm9/src/unk_0202F150.c
@@ -535,7 +535,7 @@ THUMB_FUNC BOOL FUN_0202FB80()
{
UNK_021C59F4.unk00 = 0;
FUN_0202F984();
- UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF;
+ UNK_021C59F4.unk04->unk628 |= gMain.heldKeys & 0x7FFF;
FUN_02030674();
FUN_0202FCCC();
diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c
index 57764b82..7d3b4c03 100644
--- a/arm9/src/unk_02031734.c
+++ b/arm9/src/unk_02031734.c
@@ -97,14 +97,14 @@ THUMB_FUNC void FUN_020317C0()
if (UNK_021C5A00->unk3F >= 0x13)
{
- FUN_020168D0(0x31);
+ DestroyHeap(0x31);
}
FUN_02033ED0();
FUN_0202E4F0();
FreeToHeap(UNK_021C5A00);
- FUN_020168D0(0xf);
+ DestroyHeap(0xf);
UNK_021C5A00 = NULL;
}
@@ -123,7 +123,7 @@ THUMB_FUNC void FUN_02031824(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- FUN_02016828(3, 0xf, 0xe000);
+ CreateHeapAtEnd(3, 0xf, 0xe000);
FUN_02031734(sav2, 0xa);
UNK_021C5A00->unk40 = 0;
@@ -201,7 +201,7 @@ THUMB_FUNC void FUN_02031948(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
UNK_021C5A00->unk40 = param2;
UNK_021C5A00->unk30 = param3;
@@ -213,7 +213,7 @@ THUMB_FUNC void FUN_02031990(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
UNK_021C5A00->unk40 = param2;
UNK_021C5A00->unk30 = param3;
@@ -273,7 +273,7 @@ THUMB_FUNC void FUN_02031A7C(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- if (FUN_02016828(3, 0xf, 0x7080) == 0)
+ if (CreateHeapAtEnd(3, 0xf, 0x7080) == 0)
{
FUN_020335E0();
}
@@ -406,7 +406,7 @@ THUMB_FUNC void FUN_02031C74(struct SaveBlock2 *sav2, u8 param1)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
FUN_02031D20(FUN_02032E00, 0);
}
@@ -416,7 +416,7 @@ THUMB_FUNC void FUN_02031CA8(struct SaveBlock2 *sav2, u8 param1)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
FUN_02031D20(FUN_02032E48, 0);
}
@@ -1393,7 +1393,7 @@ THUMB_FUNC void FUN_02032BD0(struct SaveBlock2 *sav2)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7000);
+ CreateHeapAtEnd(3, 0xf, 0x7000);
FUN_02031734(sav2, 0xe);
UNK_021C5A00->unk40 = 0;
FUN_02031D20(FUN_02032B8C, 0);
@@ -1479,7 +1479,7 @@ THUMB_FUNC void FUN_02032D44(struct SaveBlock2 *sav2)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7000);
+ CreateHeapAtEnd(3, 0xf, 0x7000);
FUN_02031734(sav2, 0x11);
UNK_021C5A00->unk40 = 0;
FUN_02031D20(FUN_02032CF4, 0);
@@ -1807,7 +1807,7 @@ THUMB_FUNC void FUN_020331C4()
{
if (UNK_021C5A00 != NULL)
{
- FUN_020166B8(1);
+ ClearSoftResetDisableMask(1);
FUN_02031D20(FUN_02032440, 5);
}
}
@@ -1866,7 +1866,7 @@ THUMB_FUNC void FUN_02033288(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- FUN_02016828(3, 0xf, 0x100);
+ CreateHeapAtEnd(3, 0xf, 0x100);
UNK_021C5A00 =
(struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734));
MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734));
@@ -1875,7 +1875,7 @@ THUMB_FUNC void FUN_02033288(struct SaveBlock2 *sav2)
UNK_021C5A00->unk46 = 1;
UNK_021C5A00->unk28 = sav2;
FUN_020334E8(0, 1);
- FUN_020166A8(1);
+ SetSoftResetDisableMask(1);
}
}
@@ -1883,11 +1883,11 @@ THUMB_FUNC void FUN_020332DC()
{
if (UNK_021C5A00 != 0)
{
- FUN_020166B8(1);
+ ClearSoftResetDisableMask(1);
FUN_020334E8(0, 0);
FreeToHeap(UNK_021C5A00);
UNK_021C5A00 = NULL;
- FUN_020168D0(0xf);
+ DestroyHeap(0xf);
}
}
@@ -1895,7 +1895,7 @@ THUMB_FUNC void FUN_02033310(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- FUN_02016828(3, 0xf, 0x100);
+ CreateHeapAtEnd(3, 0xf, 0x100);
UNK_021C5A00 =
(struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734));
MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734));
@@ -1903,7 +1903,7 @@ THUMB_FUNC void FUN_02033310(struct SaveBlock2 *sav2)
UNK_021C5A00->unk46 = 1;
UNK_021C5A00->unk28 = sav2;
FUN_020334E8(0, 1);
- FUN_020166A8(1);
+ SetSoftResetDisableMask(1);
}
}
@@ -1911,11 +1911,11 @@ THUMB_FUNC void FUN_02033364()
{
if (UNK_021C5A00 != 0)
{
- FUN_020166B8(1);
+ ClearSoftResetDisableMask(1);
FUN_020334E8(0, 0);
FreeToHeap(UNK_021C5A00);
UNK_021C5A00 = NULL;
- FUN_020168D0(0xf);
+ DestroyHeap(0xf);
}
}
@@ -1966,7 +1966,7 @@ THUMB_FUNC void FUN_0203341C()
{
if (FUN_0202E4C8())
{
- FUN_02016828(3, 0x31, 0x31000);
+ CreateHeapAtEnd(3, 0x31, 0x31000);
if (FUN_0202F918(1, 1, 0x200, 1) != 0)
{
MOD05_021D74E0(UNK_021C5A00->unk28, 0x31);
@@ -1985,8 +1985,8 @@ THUMB_FUNC void *FUN_0203346C(struct SaveBlock2 *sav2, u32 param1)
return 0;
}
- FUN_020166A8(1);
- FUN_02016828(3, 0xf, 0x7080);
+ SetSoftResetDisableMask(1);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, 0x17);
UNK_021C5A00->unk00 = AllocFromHeap(0xf, param1);
MI_CpuFill8(UNK_021C5A00->unk00, 0, param1);
@@ -2127,7 +2127,7 @@ THUMB_FUNC void FUN_020335F4()
FUN_0200541C();
FUN_0202287C(UNK_021C5A00->unk28);
- gMain.unk64 = 1;
+ gMain.touchpadReadAuto = 1;
if (UNK_021C5A00->unk4E == 3)
{
FUN_020335A4(3);
diff --git a/include/game_init.h b/include/game_init.h
index 7a6e34fb..77484689 100644
--- a/include/game_init.h
+++ b/include/game_init.h
@@ -9,26 +9,26 @@ void FUN_02015EF4(void);
void Main_SetVBlankIntrCB(void (*a0)(void *), void * a1);
void FUN_02015F1C(void);
BOOL FUN_02015F34(void (*a0)(void *), void * a1);
-void FUN_02015F6C(void);
-void Main_HBlankIntr(BOOL a0);
+void Main_CallHBlankCallback(void);
+void Main_ToggleHBlankInterrupt(BOOL enableFlag);
void FUN_02015FC8(void);
void InitSystemForTheGame(void);
void InitGraphicMemory(void);
-void * FUN_020161A4(u32 heap_id, const char * path);
-void FUN_020161F8(const char * path, void ** ptr);
-u32 FUN_02016230(const s8 * str);
-int FUN_020162A0(u32 a0);
-int FUN_020162C8(void * a0, u32 a1);
-void FUN_020162FC(void);
-void * FUN_02016324(const s8 * str, u32 heap_id);
-void FUN_020163BC(void);
+void * AllocAndReadFile(u32 heap_id, const char * path);
+void OpenAndReadWholeFile(const char * path, void ** ptr);
+u32 GetFilenameHash(const s8 * str);
+int GetFileCacheId(u32 hash);
+int AddFileToCache(void * contents, u32 hash);
+void ClearFileCache(void);
+void * OpenFileCached(const s8 * str, u32 heap_id);
+void InitKeypadAndTouchpad(void);
void FUN_02016438(u8 a0);
void FUN_02016444(u8 a0);
void FUN_02016454(u8 a0);
-void FUN_02016464(void);
-void FUN_02016568(void);
-void FUN_0201669C(int x, int y);
-void FUN_020166A8(u8 a0);
-void FUN_020166B8(u8 a0);
+void ReadKeypadAndTocuhpad(void);
+void ApplyButtonModeToInput(void);
+void SetKeyRepeatTimers(int x, int y);
+void SetSoftResetDisableMask(u8 a0);
+void ClearSoftResetDisableMask(u8 a0);
#endif //POKEDIAMOND_GAME_INIT_H
diff --git a/include/heap.h b/include/heap.h
index de1f5f18..36c747a7 100644
--- a/include/heap.h
+++ b/include/heap.h
@@ -2,36 +2,30 @@
#define POKEDIAMOND_HEAP_H
#include "global.h"
+#include "NNS_FND_expheap.h"
+#include "NNS_FND_allocator.h"
-struct UnkStruct_020166C8
+struct HeapParam
{
- void **unk00;
- void **unk04;
- void **unk08;
- u16 *unk0c;
- u8 *unk10;
- u16 unk14;
- u16 unk16;
- u16 unk18;
- u16 unk1a;
+ u32 size;
+ OSArenaId arena;
};
-
-void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size);
-s32 FUN_020167F4();
-u32 FUN_0201681C(u32 param0, u32 heap_id, u32 param2);
-u32 FUN_02016828(u32 param0, u32 param1, u32 param2);
-u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3);
-void FUN_020168D0(u32 heap_id);
-u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3);
-void FUN_02016988();
+void InitHeapSystem(const struct HeapParam *templates, u32 nTemplates, u32 totalNumHeaps, u32 pre_size);
+s32 FindFirstAvailableHeapHandle();
+BOOL CreateHeap(u32 parent, u32 child, u32 size);
+BOOL CreateHeapAtEnd(u32 parent, u32 child, u32 size);
+BOOL CreateHeapInternal(u32 parent, u32 child, u32 size, s32 alignment);
+void DestroyHeap(u32 heap_id);
+void *AllocFromHeapInternal(NNSFndHeapHandle heap, u32 size, s32 alignment, u32 heap_id);
+void AllocFail();
void *AllocFromHeap(u32 heap_id, u32 size);
void *AllocFromHeapAtEnd(u32 heap_id, u32 size);
void FreeToHeap(void *ptr);
void FreeToHeapExplicit(u32 heap_id, void * ptr);
-u32 FUN_02016AF8(u32 param0);
-void FUN_02016B20(u32 param0, u32 param1, u32 param2);
-void FUN_02016B44(void *ptr, u32 param1);
-u32 FUN_02016B90(u32 param0);
+u32 GF_ExpHeap_FndGetTotalFreeSize(u32 heap_id);
+void GF_ExpHeap_FndInitAllocator(NNSFndAllocator * pAllocator, u32 heap_id, int alignment);
+void ReallocFromHeap(void *ptr, u32 newSize);
+BOOL GF_heap_c_dummy_return_true(u32 heap_id);
#endif //POKEDIAMOND_HEAP_H
diff --git a/include/main.h b/include/main.h
index 9227d9a8..ba4d7bc2 100644
--- a/include/main.h
+++ b/include/main.h
@@ -79,26 +79,26 @@ struct Main
s32 unk28;
u32 unk2C;
s32 unk30;
- u32 unk34;
- u32 unk38;
- u32 unk3C;
- u32 unk40;
- u32 unk44;
+ u32 buttonMode;
+ u32 heldKeysRaw;
+ u32 newKeysRaw;
+ u32 newAndRepeatedKeysRaw;
+ u32 heldKeys;
u32 newKeys;
u32 newAndRepeatedKeys;
- s32 unk50;
- s32 unk54;
- s32 unk58;
- u16 unk5C;
- u16 unk5E;
- u16 unk60;
- u16 unk62;
- u8 unk64;
+ s32 keyRepeatCounter;
+ s32 keyRepeatContinueDelay;
+ s32 keyRepeatStartDelay;
+ u16 touchX;
+ u16 touchY;
+ u16 touchNew;
+ u16 touchHeld;
+ u8 touchpadReadAuto;
u8 unk65;
u8 unk66;
u8 unk67;
- u8 unk68;
- u8 padding_69[3];
+ u8 softResetDisabled;
+ u8 padding_69[3]; // nice
s32 unk6C;
};
diff --git a/include/unk_02016B94.h b/include/unk_02016B94.h
index fec45cd8..7757b208 100644
--- a/include/unk_02016B94.h
+++ b/include/unk_02016B94.h
@@ -96,7 +96,7 @@ u32 FUN_02016BB8(u32 *param0);
void FUN_02016BBC(const struct GraphicsModes *modes);
void FUN_02016BF4(u32 *param0, u32 param1);
void FUN_02016C18(
- struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3);
+ struct UnkStruct_02016B94_2 *param0, u8 param1, const struct UnkStruct_02016B94_1 *param2, u8 param3);
void FUN_020170F4(struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3);
u8 FUN_020177DC(u8 param0, u32 param1);
void FUN_02017850(u32 param0, u8 *param1, u8 *param2);
@@ -264,7 +264,7 @@ void FUN_020190EC(struct UnkStruct_02016B94_2 *param0,
u8 param5);
void FUN_02019150(struct UnkStruct_02016B94_2 *param0,
struct Window *param1,
- struct UnkStruct_02016B94_4 *param2);
+ const struct UnkStruct_02016B94_4 *param2);
void FUN_02019178(struct Window *param0);
void FUN_020191A4(struct Window *param0, int param1);
void CopyWindowToVram(struct Window *param0);