diff options
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); |