diff options
51 files changed, 276 insertions, 348 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 18ed6d18..24908839 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -7,7 +7,6 @@ Static arm9 Address 0x02000000 Object main.o Object list_menu.o - Object unk_020010A8.o Object unk_02001B80.o Object string_util.o Object unk_020023C0.o diff --git a/arm9/asm/unk_020010A8.s b/arm9/asm/unk_020010A8.s deleted file mode 100644 index 37faa5e7..00000000 --- a/arm9/asm/unk_020010A8.s +++ /dev/null @@ -1,127 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - .extern ListMenuPrint - .extern ListMenuPrintEntries - .extern ListMenuDrawCursor - .extern ListMenuErasePrintedCursor - .extern ListMenuUpdateSelectedRowIndexAndScrollOffset - .extern ListMenuScroll - - .text - - thumb_func_start ListMenuChangeSelection -ListMenuChangeSelection: ; 0x02001AA4 - push {r3-r7, lr} - sub sp, #0x10 - str r1, [sp, #0x0] - str r2, [sp, #0x4] - add r4, r0, #0x0 - str r3, [sp, #0x8] - ldrh r0, [r4, #0x2e] - mov r6, #0x0 - add r5, r6, #0x0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x4] - add r7, r6, #0x0 - cmp r0, #0x0 - bls _02001AF6 -_02001AC0: - ldr r1, [sp, #0x8] - add r0, r4, #0x0 - bl ListMenuUpdateSelectedRowIndexAndScrollOffset - orr r5, r0 - cmp r0, #0x2 - bne _02001AEA - add r0, r6, #0x1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldrh r1, [r4, #0x2c] - ldrh r0, [r4, #0x2e] - ldr r2, [r4, #0x0] - add r0, r1, r0 - lsl r0, r0, #0x3 - add r0, r2, r0 - ldr r1, [r0, #0x4] - mov r0, #0x2 - mvn r0, r0 - cmp r1, r0 - beq _02001AC0 -_02001AEA: - add r0, r7, #0x1 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - ldr r0, [sp, #0x4] - cmp r7, r0 - blo _02001AC0 -_02001AF6: - ldr r0, [sp, #0x0] - cmp r0, #0x0 - beq _02001B5E - cmp r5, #0x3 - bhi _02001B14 - add r0, r5, r5 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02001B0C: ; jump table (using 16-bit offset) - .short _02001B14 - _02001B0C - 2; case 0 - .short _02001B1A - _02001B0C - 2; case 1 - .short _02001B38 - _02001B0C - 2; case 2 - .short _02001B38 - _02001B0C - 2; case 3 -_02001B14: - add sp, #0x10 - mov r0, #0x1 - pop {r3-r7, pc} -_02001B1A: - ldr r1, [sp, #0xc] - add r0, r4, #0x0 - bl ListMenuErasePrintedCursor - add r0, r4, #0x0 - bl ListMenuDrawCursor - add r0, r4, #0x0 - mov r1, #0x0 - bl ListMenuCallSelectionChangedCallback - ldr r0, [r4, #0xc] - bl CopyWindowToVram - b _02001B5E -_02001B38: - ldr r1, [sp, #0xc] - add r0, r4, #0x0 - bl ListMenuErasePrintedCursor - ldr r2, [sp, #0x8] - add r0, r4, #0x0 - add r1, r6, #0x0 - bl ListMenuScroll - add r0, r4, #0x0 - bl ListMenuDrawCursor - add r0, r4, #0x0 - mov r1, #0x0 - bl ListMenuCallSelectionChangedCallback - ldr r0, [r4, #0xc] - bl CopyWindowToVram -_02001B5E: - mov r0, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - - thumb_func_start ListMenuCallSelectionChangedCallback -ListMenuCallSelectionChangedCallback: ; 0x02001B64 - push {r3-r5, lr} - ldr r3, [r0, #0x4] - add r2, r1, #0x0 - cmp r3, #0x0 - beq _02001B7E - ldrh r5, [r0, #0x2c] - ldrh r4, [r0, #0x2e] - ldr r1, [r0, #0x0] - add r4, r5, r4 - lsl r4, r4, #0x3 - add r1, r1, r4 - ldr r1, [r1, #0x4] - blx r3 -_02001B7E: - pop {r3-r5, pc} diff --git a/arm9/asm/unk_02001B80.s b/arm9/asm/unk_02001B80.s index c2e1a245..6e08d1db 100644 --- a/arm9/asm/unk_02001B80.s +++ b/arm9/asm/unk_02001B80.s @@ -41,7 +41,7 @@ FUN_02001B8C: ; 0x02001B8C ldr r0, [r3, #0x0] str r0, [r2, #0x0] ldr r0, [sp, #0x4] - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0xc] ldr r0, [sp, #0x24] str r0, [r4, #0x10] @@ -133,7 +133,7 @@ _02001C68: bl DestroyListMenuCursorObj ldrb r0, [r4, #0x1c] add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_start FUN_02001C78 @@ -894,7 +894,7 @@ FUN_020021EC: ; 0x020021EC bl FUN_02019178 ldr r1, [r5, #0x4] add r0, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [r5, #0x0] bl ListMenu_dtor add r0, r5, #0x0 diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s index 57462727..69afdbe7 100644 --- a/arm9/asm/unk_0200CABC.s +++ b/arm9/asm/unk_0200CABC.s @@ -1098,7 +1098,7 @@ FUN_0200D300: ; 0x0200D300 bl FUN_02017FB4 ldr r1, [sp, #0x14] add r0, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, sp, #0x20 ldrb r3, [r0, #0x10] cmp r3, #0x1 diff --git a/arm9/asm/unk_02012CC8.s b/arm9/asm/unk_02012CC8.s index c3ed22aa..781d1d6d 100644 --- a/arm9/asm/unk_02012CC8.s +++ b/arm9/asm/unk_02012CC8.s @@ -1488,8 +1488,8 @@ _02013688: strh r0, [r4, #0x0] pop {r4, pc} - thumb_func_start FUN_02013690 -FUN_02013690: ; 0x02013690 + thumb_func_start ListMenuCursorNew +ListMenuCursorNew: ; 0x02013690 push {r3-r5, lr} mov r1, #0x8 add r5, r0, #0x0 @@ -1530,8 +1530,8 @@ _020136D8: _020136DE: pop {r4, pc} - thumb_func_start CreateListMenuCursorObj -CreateListMenuCursorObj: ; 0x020136E0 + thumb_func_start ListMenuCursorSetColor +ListMenuCursorSetColor: ; 0x020136E0 push {r3-r5, lr} add r5, r0, #0x0 add r4, r1, #0x0 diff --git a/arm9/asm/unk_02016B94.s b/arm9/asm/unk_02016B94.s index 6f46943c..73330a71 100644 --- a/arm9/asm/unk_02016B94.s +++ b/arm9/asm/unk_02016B94.s @@ -2716,7 +2716,7 @@ FUN_02017F18: ; 0x02017F18 bl FUN_02017E84 ldr r0, [sp, #0x0] add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r3-r7, pc} thumb_func_start FUN_02017F48 diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index 38fb3842..1123d9f5 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -1731,7 +1731,7 @@ FUN_02035DC8: ; 0x02035DC8 cmp r1, #0x0 beq _02035DF0 mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit _02035DF0: mov r0, #0xc strh r0, [r4, #0x2a] @@ -3193,7 +3193,7 @@ FUN_02036A14: ; 0x02036A14 lsl r1, r1, #0x2 ldr r1, [r4, r1] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x73 lsl r1, r1, #0x2 add r0, r5, #0x0 @@ -3223,7 +3223,7 @@ FUN_02036A78: ; 0x02036A78 lsl r1, r1, #0x2 ldr r1, [r4, r1] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x73 lsl r1, r1, #0x2 add r0, r5, #0x0 @@ -3255,7 +3255,7 @@ FUN_02036AB8: ; 0x02036AB8 ldr r1, [r4, r0] mov r0, #0xb ldr r7, [r1, #0x0] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x7e lsl r0, r0, #0x2 ldr r5, [r4, r0] @@ -3264,7 +3264,7 @@ FUN_02036AB8: ; 0x02036AB8 bne _02036B0E mov r0, #0xb add r1, r5, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x7a lsl r1, r1, #0x2 lsl r2, r7, #0x18 @@ -3320,7 +3320,7 @@ _02036B0E: lsl r1, r1, #0x2 ldr r1, [r4, r1] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0x0 bl FUN_0204649C mov r0, #0x72 diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s index 70ba73b0..d7eb4bc4 100644 --- a/arm9/asm/unk_02050E48.s +++ b/arm9/asm/unk_02050E48.s @@ -1333,7 +1333,7 @@ _0205188E: add r0, #0x64 bl FUN_0201901C mov r0, #0xb - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0x78] bl FUN_02033534 add r1, r4, #0x0 diff --git a/arm9/asm/unk_02053750.s b/arm9/asm/unk_02053750.s index 6ab54142..4724c308 100644 --- a/arm9/asm/unk_02053750.s +++ b/arm9/asm/unk_02053750.s @@ -1291,7 +1291,7 @@ FUN_020540C8: ; 0x020540C8 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _020540E4: @@ -1408,7 +1408,7 @@ FUN_020541A4: ; 0x020541A4 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _020541C0: @@ -1481,7 +1481,7 @@ FUN_02054228: ; 0x02054228 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054244: @@ -1581,7 +1581,7 @@ FUN_020542E8: ; 0x020542E8 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054304: @@ -1749,7 +1749,7 @@ FUN_0205442C: ; 0x0205442C bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054448: @@ -1900,7 +1900,7 @@ FUN_0205454C: ; 0x0205454C bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054568: diff --git a/arm9/asm/unk_02057380.s b/arm9/asm/unk_02057380.s index c6a25876..ef4050e3 100644 --- a/arm9/asm/unk_02057380.s +++ b/arm9/asm/unk_02057380.s @@ -33,10 +33,10 @@ FUN_020573AC: ; 0x020573AC bl FUN_020583CC add r1, r0, #0x0 mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0xb add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .balign 4 @@ -1035,10 +1035,10 @@ _02057C42: blt _02057C1A ldr r1, [r5, #0x10] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0xb add r1, r5, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r3-r7, pc} thumb_func_start FUN_02057C64 diff --git a/arm9/asm/unk_0205AD98.s b/arm9/asm/unk_0205AD98.s index bc0fa0dd..54448e61 100644 --- a/arm9/asm/unk_0205AD98.s +++ b/arm9/asm/unk_0205AD98.s @@ -212,7 +212,7 @@ _0205AF14: bl FUN_0205AE50 mov r0, #0x4 add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r5, #0x0 bl FUN_0200CAB4 pop {r3-r5, pc} diff --git a/arm9/asm/unk_0205C598.s b/arm9/asm/unk_0205C598.s index ac7a6808..d80c26b4 100644 --- a/arm9/asm/unk_0205C598.s +++ b/arm9/asm/unk_0205C598.s @@ -723,7 +723,7 @@ FUN_0205CAE0: ; 0x0205CAE0 bl FUN_0201B6C8 add r1, r0, #0x0 mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r4, #0x0 bl FUN_0200CAB4 pop {r4, pc} diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s index 5147f099..48f512e9 100644 --- a/arm9/asm/unk_020625EC.s +++ b/arm9/asm/unk_020625EC.s @@ -1552,7 +1552,7 @@ FUN_020631C8: ; 0x020631C8 add r0, r5, #0x0 add r1, #0x2 add r2, sp, #0x0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0x0 mov r1, #0x2 bl ListMenuGetTemplateField diff --git a/arm9/asm/unk_020643C0.s b/arm9/asm/unk_020643C0.s index bc843c82..4a7b92d3 100644 --- a/arm9/asm/unk_020643C0.s +++ b/arm9/asm/unk_020643C0.s @@ -292,12 +292,12 @@ _020645F2: thumb_func_start FUN_02064600 FUN_02064600: ; 0x02064600 - ldr r3, _02064608 ; =FUN_02016A8C + ldr r3, _02064608 ; =FreeToHeapExplicit add r1, r0, #0x0 ldr r0, [r1, #0x8] bx r3 .balign 4 -_02064608: .word FUN_02016A8C +_02064608: .word FreeToHeapExplicit thumb_func_start FUN_0206460C FUN_0206460C: ; 0x0206460C @@ -320,13 +320,13 @@ _02064622: thumb_func_start FUN_02064630 FUN_02064630: ; 0x02064630 - ldr r3, _0206463C ; =FUN_02016A8C + ldr r3, _0206463C ; =FreeToHeapExplicit add r1, r0, #0x0 ldr r0, [r1, #0x8] ldr r1, [r1, #0xc] bx r3 nop -_0206463C: .word FUN_02016A8C +_0206463C: .word FreeToHeapExplicit thumb_func_start FUN_02064640 FUN_02064640: ; 0x02064640 diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index 003e1330..69cc0dbd 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -1177,7 +1177,7 @@ FUN_02065CFC: ; 0x02065CFC mov r1, #0x1 mov r2, #0xf mov r3, #0x2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3-r5, pc} _02065D1C: mov r1, #0xc @@ -1191,14 +1191,14 @@ _02065D1C: mov r1, #0x3 mov r2, #0xf mov r3, #0x4 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3-r5, pc} _02065D38: add r0, r5, #0x0 mov r1, #0x7 mov r2, #0xf mov r3, #0x8 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3-r5, pc} nop _02065D48: .word 0x0000FFFF @@ -1216,7 +1216,7 @@ FUN_02065D4C: ; 0x02065D4C add r0, r4, #0x0 add r1, #0x2 add r2, sp, #0x0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r4, #0x0 mov r1, #0x2 bl ListMenuGetTemplateField diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index b1a1edbd..772480ed 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -1237,7 +1237,7 @@ FUN_0206FCD4: ; 0x0206FCD4 bl FUN_020178A0 mov r0, #0xc add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .balign 4 @@ -1293,7 +1293,7 @@ FUN_0206FD24: ; 0x0206FD24 bl memcpy mov r0, #0xc add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x1a mov r0, #0x0 lsl r1, r1, #0x4 @@ -3729,7 +3729,7 @@ _02071146: bl FUN_02072844 mov r0, #0xc add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r5, #0x0 bl FUN_0207295C mov r1, #0x0 diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s index a854727b..6dd1bf64 100644 --- a/arm9/asm/unk_02073DA8.s +++ b/arm9/asm/unk_02073DA8.s @@ -1672,7 +1672,7 @@ _02074B6A: add r1, r7, #0x0 str r0, [r3, #0x0] mov r0, #0xc - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x3 lsl r1, r1, #0x8 ldrb r3, [r4, r1] diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index 7a074186..80d633bb 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -1509,18 +1509,18 @@ _02077982: ldr r1, _02077A70 ; =0x000004AC mov r0, #0x12 ldr r1, [r4, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [r4, #0x0] cmp r0, #0x1 bne _020779C2 ldr r1, _02077A74 ; =0x000004B4 mov r0, #0x12 ldr r1, [r4, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r1, _02077A78 ; =0x000004BC mov r0, #0x12 ldr r1, [r4, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit _020779C2: mov r0, #0x16 lsl r0, r0, #0x4 @@ -2250,7 +2250,7 @@ _02077FB0: bl FUN_020178A0 mov r0, #0x12 add r1, r6, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4-r6, pc} thumb_func_start FUN_02077FE8 diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 722c8144..617a122a 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -533,7 +533,7 @@ FUN_0207A08C: ; 0x0207A08C bl FUN_020178A0 mov r0, #0x13 add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .balign 4 diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s index 3b40567c..2005be3e 100644 --- a/arm9/asm/unk_0208A338.s +++ b/arm9/asm/unk_0208A338.s @@ -36,7 +36,7 @@ FUN_0208A338: ; 0x0208A338 bl NewMsgDataFromNarc str r0, [r4, #0x10] mov r0, #0x20 - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0x14] ldr r2, [r4, #0x0] mov r0, #0x2 diff --git a/arm9/global.inc b/arm9/global.inc index 684b5163..c93890f2 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -192,13 +192,13 @@ .extern ListMenu_ProcessInput .extern DestroyListMenu .extern RedrawListMenu -.extern FUN_02001354 -.extern FUN_020013C8 -.extern FUN_020013E8 -.extern FUN_0200143C -.extern FUN_02001448 -.extern FUN_0200145C -.extern FUN_02001464 +.extern ListMenuTestInputInternal +.extern ListMenuTestInput +.extern ListMenuOverrideSetColors +.extern ListMenuGetCurrentItemArrayId +.extern ListMenuGetScrollAndRow +.extern ListMenuGetUnk33 +.extern ListMenuGetValueByArrayId .extern ListMenuGetTemplateField .extern ListMenuSetTemplateField .extern ListMenuGetItemStr @@ -882,9 +882,9 @@ .extern FUN_02013628 .extern FUN_0201365C .extern FUN_02013674 -.extern FUN_02013690 +.extern ListMenuCursorNew .extern DestroyListMenuCursorObj -.extern CreateListMenuCursorObj +.extern ListMenuCursorSetColor .extern ListMenuUpdateCursorObj .extern MailMsg_init .extern MailMsg_init_withBank @@ -1029,7 +1029,7 @@ .extern AllocFromHeap .extern AllocFromHeapAtEnd .extern FreeToHeap -.extern FUN_02016A8C +.extern FreeToHeapExplicit .extern FUN_02016AF8 .extern FUN_02016B20 .extern FUN_02016B44 diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s index 6b6a6f27..12374ec5 100644 --- a/arm9/modules/04/asm/thumb_04.s +++ b/arm9/modules/04/asm/thumb_04.s @@ -202,13 +202,13 @@ MOD04_021D7660: ; 0x021D7660 ldr r0, [r2, r1] sub r1, #0x50 ldr r1, [r2, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r1, _021D76A0 ; =UNK04_0220FBC0 ldr r0, _021D76A8 ; =0x00001F54 ldr r2, [r1] ldr r1, [r1, #4] ldr r0, [r2, r0] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, _021D76A0 ; =UNK04_0220FBC0 mov r1, #0 str r1, [r0, #4] @@ -3065,7 +3065,7 @@ MOD04_021D8C6C: ; 0x021D8C6C lsl r0, r0, #8 ldr r0, [r2, r0] ldr r1, [r1] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0 ldr r0, _021D8CBC ; =UNK04_0220FBC8 cmp r4, #0 diff --git a/arm9/modules/05/asm/mod05_021DB44C.s b/arm9/modules/05/asm/mod05_021DB44C.s index b606312e..039db6a9 100644 --- a/arm9/modules/05/asm/mod05_021DB44C.s +++ b/arm9/modules/05/asm/mod05_021DB44C.s @@ -67,7 +67,7 @@ _021DB4BA: bl MOD05_021DB7A0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} @@ -419,7 +419,7 @@ _021DB73E: _021DB78A: ldr r1, [sp, #0x14] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #8] add sp, #0x1fc add sp, #0x20 @@ -433,7 +433,7 @@ MOD05_021DB7A0: ; 0x021DB7A0 add r4, r0, #0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021DBA00.s b/arm9/modules/05/asm/mod05_021DBA00.s index 22e64df5..d0d97f37 100644 --- a/arm9/modules/05/asm/mod05_021DBA00.s +++ b/arm9/modules/05/asm/mod05_021DBA00.s @@ -24,7 +24,7 @@ MOD05_021DBA1C: ; 0x021DBA1C add r4, r0, #0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021DBABC.s b/arm9/modules/05/asm/mod05_021DBABC.s index 28a15fb2..0481b9eb 100644 --- a/arm9/modules/05/asm/mod05_021DBABC.s +++ b/arm9/modules/05/asm/mod05_021DBABC.s @@ -24,7 +24,7 @@ MOD05_021DBAD8: ; 0x021DBAD8 add r4, r0, #0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021DC0B8.s b/arm9/modules/05/asm/mod05_021DC0B8.s index ab06fed1..1714cbec 100644 --- a/arm9/modules/05/asm/mod05_021DC0B8.s +++ b/arm9/modules/05/asm/mod05_021DC0B8.s @@ -692,7 +692,7 @@ _021DC5A2: bl NARC_dtor ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] _021DC5FE: @@ -1362,7 +1362,7 @@ _021DCAD2: bl MOD05_021DC880 ldr r1, [r4, #0x10] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4, #0x10] ldr r0, [r4, #0x1c] @@ -1390,7 +1390,7 @@ _021DCB14: cmp r1, #0 beq _021DCB2C mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r1, [r4, #0xc] ldr r0, _021DCB64 ; =0x00000F58 mov r2, #0 @@ -1414,7 +1414,7 @@ _021DCB3E: _021DCB4C: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4, #0xc] _021DCB58: diff --git a/arm9/modules/05/asm/mod05_021E1374.s b/arm9/modules/05/asm/mod05_021E1374.s index df43ddb9..a0192db6 100644 --- a/arm9/modules/05/asm/mod05_021E1374.s +++ b/arm9/modules/05/asm/mod05_021E1374.s @@ -533,7 +533,7 @@ _021E1770: bl FUN_0200CAB4 mov r0, #4 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _021E178E: pop {r4, pc} .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s index 36e4432a..5a7f759b 100644 --- a/arm9/modules/05/asm/mod05_021E1AD8.s +++ b/arm9/modules/05/asm/mod05_021E1AD8.s @@ -1012,13 +1012,13 @@ MOD05_021E2278: ; 0x021E2278 mov r1, #3 mov r2, #0xf mov r3, #4 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} _021E228E: mov r1, #1 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} .balign 4, 0 @@ -1054,7 +1054,7 @@ _021E22B8: ldrh r6, [r5, r1] ldr r0, [r5, r0] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0xb5 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -1226,7 +1226,7 @@ MOD05_021E2434: ; 0x021E2434 ldr r0, [r4, r1] add r1, r1, #6 add r1, r4, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _021E2460 ; =0x000001BA ldrh r1, [r4, r0] add r0, #0xe2 diff --git a/arm9/modules/05/asm/mod05_021E5FD8.s b/arm9/modules/05/asm/mod05_021E5FD8.s index 8ce2cd0f..ab5f7010 100644 --- a/arm9/modules/05/asm/mod05_021E5FD8.s +++ b/arm9/modules/05/asm/mod05_021E5FD8.s @@ -2409,12 +2409,12 @@ _021E72CC: thumb_func_start MOD05_021E72DC MOD05_021E72DC: ; 0x021E72DC - ldr r3, _021E72E4 ; =FUN_02016A8C + ldr r3, _021E72E4 ; =FreeToHeapExplicit add r1, r0, #0 mov r0, #4 bx r3 .balign 4, 0 -_021E72E4: .word FUN_02016A8C +_021E72E4: .word FreeToHeapExplicit thumb_func_start MOD05_021E72E8 MOD05_021E72E8: ; 0x021E72E8 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 0528681a..e1f83467 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -339,7 +339,7 @@ MOD05_021E88C0: ; 0x021E88C0 bl GX_EngineAToggleLayers ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_start MOD05_021E88E8 @@ -513,7 +513,7 @@ _021E8A42: bl MOD05_021E37A4 ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021E8A56: @@ -695,7 +695,7 @@ _021E8BC2: bl MOD05_021E37A4 ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021E8BD6: @@ -851,7 +851,7 @@ _021E8CE6: _021E8D00: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1008,7 +1008,7 @@ _021E8E1C: _021E8E36: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1256,7 +1256,7 @@ _021E8FFC: _021E9010: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1391,7 +1391,7 @@ _021E910C: _021E9120: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1794,7 +1794,7 @@ _021E944E: bl MOD05_021E37A4 ldr r1, [r7, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021E948A: @@ -2151,7 +2151,7 @@ _021E974A: bl MOD05_021E3A48 ldr r1, [r6, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021E9786: @@ -2594,7 +2594,7 @@ _021E9AF0: bl MOD05_021E3E44 ldr r1, [r7, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x14] bl FUN_0200621C add sp, #0x58 @@ -3183,7 +3183,7 @@ _021E9FA4: ldr r1, [sp, #0x1c] mov r0, #4 ldr r1, [r1, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x18] bl FUN_0200621C add sp, #0x44 @@ -3594,7 +3594,7 @@ _021EA354: bl MOD05_021E3E44 ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021EA382: @@ -4116,7 +4116,7 @@ _021EA76C: ldr r1, [sp, #0x18] mov r0, #4 ldr r1, [r1, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x14] bl FUN_0200621C _021EA7DE: @@ -4472,7 +4472,7 @@ _021EAA98: bl MOD05_021E3E44 ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021EAAC6: @@ -4781,7 +4781,7 @@ _021EAD1A: bl MOD05_021E3E44 ldr r1, [r6, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021EAD4C: @@ -5156,7 +5156,7 @@ _021EB01A: ldr r1, [sp, #0x14] mov r0, #4 ldr r1, [r1, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021EB04A: @@ -5586,7 +5586,7 @@ _021EB394: strb r1, [r0] ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021EB3F2: @@ -5797,7 +5797,7 @@ _021EB56C: _021EB58A: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -6008,7 +6008,7 @@ _021EB720: _021EB73E: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -6506,7 +6506,7 @@ _021EBB60: str r0, [r2] ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x30 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} @@ -7514,7 +7514,7 @@ _021EC37A: bl MOD05_021E3E44 ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x4c mov r0, #1 pop {r4, r5, r6, r7, pc} @@ -19600,11 +19600,11 @@ MOD05_021F21AC: ; 0x021F21AC add r1, #0xe4 ldr r1, [r1] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r4, #0xf4 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_start MOD05_021F21CC @@ -22552,12 +22552,12 @@ _021F37C2: thumb_func_start MOD05_021F37D0 MOD05_021F37D0: ; 0x021F37D0 - ldr r3, _021F37D8 ; =FUN_02016A8C + ldr r3, _021F37D8 ; =FreeToHeapExplicit add r1, r0, #0 ldr r0, [r1] bx r3 .balign 4, 0 -_021F37D8: .word FUN_02016A8C +_021F37D8: .word FreeToHeapExplicit thumb_func_start MOD05_021F37DC MOD05_021F37DC: ; 0x021F37DC @@ -22588,7 +22588,7 @@ _021F37FC: bne _021F37F0 ldr r0, [r5] ldr r1, [r5, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit _021F380E: pop {r3, r4, r5, pc} diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c index c24a7bd3..7284224c 100644 --- a/arm9/modules/05/src/mod05_021E72FC.c +++ b/arm9/modules/05/src/mod05_021E72FC.c @@ -156,5 +156,5 @@ THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0) THUMB_FUNC void MOD05_021E74F8(UnkStruct021E7358 *param0) { - FUN_02016A8C(4, param0); + FreeToHeapExplicit(4, param0); } diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 2c8e92bf..92922fba 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -9328,7 +9328,7 @@ _0223DDBA: ldr r0, [sp, #0x10] add r1, #2 add r2, sp, #0x14 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0x14 ldrh r0, [r0, #2] cmp r0, #0 @@ -9558,14 +9558,14 @@ MOD06_0223DFB4: ; 0x0223DFB4 ldr r0, [r5, #0x78] mov r1, #0 add r2, #2 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r0, [r5, #0x78] bl ListMenu_ProcessInput add r4, r0, #0 ldr r0, [r5, #0x78] mov r1, #0 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r2, [r0] ldrh r0, [r0, #2] @@ -11655,7 +11655,7 @@ MOD06_0223F0F8: ; 0x0223F0F8 cmp r0, #0 beq _0223F11A add r1, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow _0223F11A: add r0, sp, #0xc ldrh r1, [r0] @@ -12105,7 +12105,7 @@ _0223F4D8: add r1, r4, #0 ldr r0, [r4, #0x5c] add r1, #0x8e - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, r4, #0 add r0, #0x8e ldrh r5, [r0] @@ -12451,7 +12451,7 @@ MOD06_0223F7C4: ; 0x0223F7C4 cmp r0, #0 beq _0223F7E0 add r1, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow _0223F7E0: add r0, sp, #0xc ldrh r1, [r0] @@ -14717,14 +14717,14 @@ MOD06_02240A64: ; 0x02240A64 ldr r0, [r5] mov r1, #0 add r2, #0x78 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0 add r0, #0x80 ldrh r6, [r0] add r1, r5, #0 ldr r0, [r5] add r1, #0x80 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, r5, #0 add r0, #0x80 ldrh r0, [r0] @@ -14879,14 +14879,14 @@ MOD06_02240BB8: ; 0x02240BB8 ldr r0, [r5, #4] mov r1, #0 add r2, #0x7a - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0 add r0, #0x82 ldrh r6, [r0] add r1, r5, #0 ldr r0, [r5, #4] add r1, #0x82 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, r5, #0 add r0, #0x82 ldrh r0, [r0] @@ -19219,13 +19219,13 @@ MOD06_02242E9C: ; 0x02242E9C mov r1, #3 mov r2, #0xf mov r3, #4 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} _02242EB2: mov r1, #1 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} .align 2, 0 @@ -42471,7 +42471,7 @@ MOD06_0224E1E4: ; 0x0224E1E4 bne _0224E22A ldr r0, [r5, #8] add r1, sp, #0 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r2, #0x4b add r0, sp, #0 lsl r2, r2, #2 @@ -42685,7 +42685,7 @@ MOD06_0224E39C: ; 0x0224E39C ldr r0, [r4, #8] add r1, sp, #0 mov r2, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r0, [r0] cmp r0, #0 diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index fbf19499..beb5863b 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -4345,7 +4345,7 @@ MOD15_021D95E8: ; 0x021D95E8 bl NewMsgDataFromNarc str r0, [r4, #0x48] mov r0, #0x23 - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0x50] add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index 76c91cca..d8d29d24 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -22033,11 +22033,11 @@ MOD18_02244028: ; 0x02244028 ldr r1, [sp, #0x30] strb r1, [r0, #0x1e] ldr r0, [sp, #8] - bl FUN_02013690 + bl ListMenuCursorNew ldr r1, [sp, #0xc] str r0, [r1, #0x10] ldr r1, _022440C0 ; =0x0008090F - bl CreateListMenuCursorObj + bl ListMenuCursorSetColor ldr r1, [sp, #8] ldr r0, [sp, #0xc] strb r1, [r0, #0x1d] @@ -22165,7 +22165,7 @@ MOD18_02244140: ; 0x02244140 ldr r0, [sp, #4] add r1, #2 add r2, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldrb r0, [r5, #0x1c] cmp r0, #0 bne _0224416E @@ -22361,7 +22361,7 @@ _022442CA: ldr r0, [sp, #4] add r1, #0x20 ldrh r6, [r5, #0x20] - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldrh r0, [r5, #0x20] cmp r6, r0 beq _022442EA @@ -31304,7 +31304,7 @@ MOD18_022488F0: ; 0x022488F0 ldr r0, [r5, #0x1c] add r1, #0x36 ldrh r6, [r5, #0x36] - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldrh r0, [r5, #0x36] cmp r6, r0 beq _02248916 @@ -32213,7 +32213,7 @@ MOD18_02248FEC: ; 0x02248FEC ldr r0, [r5, #0x20] add r1, #0x3a ldrh r4, [r5, #0x3a] - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldrh r0, [r5, #0x3a] cmp r4, r0 beq _02249008 @@ -33853,7 +33853,7 @@ MOD18_02249CC8: ; 0x02249CC8 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -33964,7 +33964,7 @@ MOD18_02249DB8: ; 0x02249DB8 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -34343,7 +34343,7 @@ MOD18_0224A0EC: ; 0x0224A0EC ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -34441,7 +34441,7 @@ MOD18_0224A1C0: ; 0x0224A1C0 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -34767,7 +34767,7 @@ MOD18_0224A47C: ; 0x0224A47C ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -34865,7 +34865,7 @@ MOD18_0224A550: ; 0x0224A550 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -35443,14 +35443,14 @@ MOD18_0224A9EC: ; 0x0224A9EC mov r1, #1 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, r4, r5, pc} _0224AA1A: mov r1, #2 add r0, r5, #0 mov r2, #0xf add r3, r1, #0 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, r4, r5, pc} thumb_func_end MOD18_0224A9EC @@ -35706,7 +35706,7 @@ MOD18_0224AC24: ; 0x0224AC24 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -35807,7 +35807,7 @@ MOD18_0224AD04: ; 0x0224AD04 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -36492,7 +36492,7 @@ MOD18_0224B250: ; 0x0224B250 ldr r0, [r4, #0x48] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -36868,7 +36868,7 @@ MOD18_0224B560: ; 0x0224B560 ldr r0, [r5, #0x48] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -36964,7 +36964,7 @@ MOD18_0224B614: ; 0x0224B614 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -37057,7 +37057,7 @@ MOD18_0224B6E0: ; 0x0224B6E0 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -38067,7 +38067,7 @@ MOD18_0224BF84: ; 0x0224BF84 ldr r0, [r5, #0x48] ldrh r4, [r5, r1] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _0224BFA4 ; =0x0000024A ldrh r0, [r5, r0] cmp r4, r0 @@ -39686,7 +39686,7 @@ _0224CC8E: ldr r0, [r4, #0x48] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #4 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -39696,7 +39696,7 @@ _0224CC8E: ldr r0, [r4, #0x48] ldrh r6, [r4, r1] add r1, r4, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _0224CF54 ; =0x0000024A ldrh r0, [r4, r0] cmp r6, r0 @@ -39777,7 +39777,7 @@ _0224CD48: ldr r0, [r4, #0x48] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow mov r0, #0x92 lsl r0, r0, #2 ldrb r0, [r4, r0] @@ -39792,7 +39792,7 @@ _0224CD48: ldr r0, [r4, #0x48] ldrh r6, [r4, r1] add r1, r4, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _0224CF54 ; =0x0000024A ldrh r0, [r4, r0] cmp r6, r0 @@ -39916,7 +39916,7 @@ _0224CE68: ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #4 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -40138,7 +40138,7 @@ _0224D046: ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow mov r0, #0x92 lsl r0, r0, #2 ldrb r0, [r4, r0] @@ -42512,13 +42512,13 @@ MOD18_0224E2B4: ; 0x0224E2B4 add r1, r2, #0 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} _0224E2CC: mov r1, #2 mov r2, #0xf add r3, r1, #0 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} thumb_func_end MOD18_0224E2B4 @@ -42639,7 +42639,7 @@ _0224E384: ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r0, [r5, #0x2c] mov r1, #2 ldr r0, [r0, #0xc] @@ -43078,7 +43078,7 @@ MOD18_0224E73C: ; 0x0224E73C add r1, r5, #0 ldr r0, [r5, #0x28] add r1, #0x40 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r5, #0x40 ldrh r0, [r5] cmp r4, r0 diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s index 67f4c29a..ee93d317 100644 --- a/arm9/modules/20/asm/module_20.s +++ b/arm9/modules/20/asm/module_20.s @@ -3279,23 +3279,23 @@ _02253C0E: cmp r1, #0 beq _02253C22 add r0, r5, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C22: ldr r1, [r4, #0xc] cmp r1, #0 beq _02253C2E add r0, r5, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C2E: ldr r1, [r4, #4] cmp r1, #0 beq _02253C3A add r0, r5, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C3A: add r0, r5, #0 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C42: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} @@ -3848,7 +3848,7 @@ MOD20_02254014: ; 0x02254014 cmp r1, #0 beq _02254028 ldr r0, [r4, #0x10] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] _02254028: @@ -3856,7 +3856,7 @@ _02254028: cmp r1, #0 beq _02254038 ldr r0, [r4, #0x10] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4, #4] _02254038: @@ -4072,7 +4072,7 @@ _02254176: _02254188: add r0, r5, #0 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r4, #0 _02254192: add r0, r4, #0 @@ -4089,10 +4089,10 @@ MOD20_02254198: ; 0x02254198 _022541A2: ldr r0, [r4, #8] ldr r1, [r4, #0x14] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [r4, #8] add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_end MOD20_02254198 diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index 704cf6de..957465b9 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -3382,7 +3382,7 @@ _021D9002: ldrh r7, [r5, r1] ldr r0, [r5, r0] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _021D90D0 ; =0x00000418 ldrh r0, [r5, r0] cmp r7, r0 diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index 2d066c8d..9eac53b8 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -3840,7 +3840,7 @@ _02213C5E: ldr r0, [r0] add r1, #2 add r2, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow cmp r4, #3 blt _02213C84 add r0, sp, #0xc @@ -3860,7 +3860,7 @@ _02213C84: ldrh r2, [r3, #2] ldrh r3, [r3] ldr r0, [r0] - bl FUN_020013C8 + bl ListMenuTestInput add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] @@ -3873,7 +3873,7 @@ _02213CA8: ldr r0, [r0] add r1, #2 add r2, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0xc ldr r1, [r5, #8] ldrh r3, [r0] @@ -3913,7 +3913,7 @@ _02213CF0: str r1, [sp, #8] add r0, #0xb4 ldr r0, [r0] - bl FUN_020013C8 + bl ListMenuTestInput add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] @@ -5554,7 +5554,7 @@ MOD56_022149D8: ; 0x022149D8 add r0, #0xb4 ldr r0, [r0] add r1, sp, #0x28 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0x28 ldrh r0, [r0] add r0, r5, r0 @@ -5878,7 +5878,7 @@ _02214C66: add r0, #0xb4 ldr r0, [r0] add r1, sp, #0xc - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0xc ldrh r0, [r0] add r0, r4, r0 @@ -7024,7 +7024,7 @@ _02215532: add r0, #0xb4 ldr r0, [r0] add r1, sp, #0x14 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0x14 ldrh r0, [r0] add r0, r5, r0 diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index e74ab236..df2185cc 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -2083,7 +2083,7 @@ _021D850C: add r0, r7, #0 add r1, #2 add r2, sp, #0x10 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0x10 ldrh r2, [r2] mov r0, #7 diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s index 2d417cd2..f67a1817 100644 --- a/arm9/modules/67/asm/module_67.s +++ b/arm9/modules/67/asm/module_67.s @@ -327,7 +327,7 @@ MOD67_021D777C: ; 0x021D777C bl FUN_020178A0 mov r0, #0x2a add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD67_021D777C diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s index 9f0a99ee..ebb66d25 100644 --- a/arm9/modules/68/asm/module_68.s +++ b/arm9/modules/68/asm/module_68.s @@ -320,7 +320,7 @@ MOD68_021D7774: ; 0x021D7774 bl FUN_020178A0 mov r0, #0x24 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD68_021D7774 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index 1ae20a7e..171b49d7 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -1750,7 +1750,7 @@ MOD71_0222E438: ; 0x0222E438 lsl r1, r1, #2 ldr r1, [r4, r1] mov r0, #0x1a - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x61 lsl r0, r0, #2 ldr r0, [r4, r0] diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s index 51a9bfa5..cdef5e27 100644 --- a/arm9/modules/75/asm/module_75.s +++ b/arm9/modules/75/asm/module_75.s @@ -759,7 +759,7 @@ MOD75_021E71BC: ; 0x021E71BC bl FUN_020178A0 mov r0, #6 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD75_021E71BC @@ -1773,14 +1773,14 @@ MOD75_021E797C: ; 0x021E797C mov r1, #8 mov r2, #0 mov r3, #9 - bl FUN_020013E8 + bl ListMenuOverrideSetColors b _021E79C6 _021E79BA: ldr r0, [sp] mov r1, #1 mov r2, #0 mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors _021E79C6: ldrb r0, [r6, #8] cmp r0, #7 @@ -2019,7 +2019,7 @@ MOD75_021E7B7C: ; 0x021E7B7C ldr r0, [r5, r0] add r1, r4, #6 add r2, r4, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r0, _021E7CD8 ; =gMain ldr r1, [r0, #0x48] mov r0, #4 @@ -2046,7 +2046,7 @@ _021E7BC0: ldr r0, [r5, r0] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r2, [r0] ldrh r0, [r4, #4] @@ -2085,7 +2085,7 @@ _021E7BFC: lsl r1, r1, #0x10 ldr r0, [r5, r0] lsr r1, r1, #0x10 - bl FUN_02001464 + bl ListMenuGetValueByArrayId add r6, r0, #0 mov r0, #0x49 mov r1, #1 @@ -2102,7 +2102,7 @@ _021E7C38: mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_0200145C + bl ListMenuGetUnk33 cmp r0, #1 bne _021E7C5E add r0, r5, #0 @@ -3643,7 +3643,7 @@ MOD75_021E8808: ; 0x021E8808 add r1, r2, r1 lsl r1, r1, #0x10 lsr r1, r1, #0x10 - bl FUN_02001464 + bl ListMenuGetValueByArrayId mov r1, #1 mvn r1, r1 cmp r0, r1 @@ -3701,7 +3701,7 @@ MOD75_021E8864: ; 0x021E8864 lsl r0, r0, #2 ldrb r1, [r4, r1] ldr r0, [r4, r0] - bl FUN_02001464 + bl ListMenuGetValueByArrayId ldr r1, _021E88B8 ; =0x0000047C str r0, [r4, r1] add r0, r4, #0 @@ -3744,7 +3744,7 @@ _021E88D0: ldr r0, [r5, r0] add r1, r4, #6 add r2, r4, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0 bl MOD75_021E87B8 cmp r0, #1 @@ -3784,7 +3784,7 @@ _021E892E: ldr r0, [r5, r0] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r2, [r0] ldrh r0, [r4, #4] @@ -3816,7 +3816,7 @@ _021E896A: mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_0200145C + bl ListMenuGetUnk33 cmp r0, #1 bne _021E899A add r0, r5, #0 @@ -7055,7 +7055,7 @@ MOD75_021EA328: ; 0x021EA328 ldrh r3, [r3] ldr r0, [r4, r0] mov r1, #0 - bl FUN_02001354 + bl ListMenuTestInputInternal add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] @@ -7207,7 +7207,7 @@ MOD75_021EA444: ; 0x021EA444 ldrh r3, [r3] ldr r0, [r4, r0] mov r1, #0 - bl FUN_02001354 + bl ListMenuTestInputInternal add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] @@ -7904,7 +7904,7 @@ _021EA9A8: bl FUN_02019220 mov r0, #6 add r1, r7, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -7993,7 +7993,7 @@ _021EAA8C: bl FUN_02019220 ldr r1, [sp, #0x18] mov r0, #6 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -8620,7 +8620,7 @@ MOD75_021EAF70: ; 0x021EAF70 bl FUN_02019658 mov r0, #6 add r1, r6, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x1c pop {r3, r4, r5, r6, pc} thumb_func_end MOD75_021EAF70 @@ -8695,7 +8695,7 @@ MOD75_021EB004: ; 0x021EB004 bl FUN_02019658 mov r0, #6 add r1, r6, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x1c pop {r3, r4, r5, r6, pc} .align 2, 0 diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s index 86989ca3..8e883a1d 100644 --- a/arm9/modules/76/asm/module_76.s +++ b/arm9/modules/76/asm/module_76.s @@ -382,7 +382,7 @@ MOD76_021D77E4: ; 0x021D77E4 bl FUN_020178A0 mov r0, #0x43 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD76_021D77E4 @@ -596,7 +596,7 @@ _021D799C: ldr r0, [r5, r0] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow mov r0, #0x41 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -609,7 +609,7 @@ _021D799C: ldr r0, [r5, r0] add r1, #0x12 add r2, #0x10 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r2, [r5] add r1, sp, #0 ldrh r1, [r1, #2] diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 5982ed76..70ab6d08 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -14093,7 +14093,7 @@ MOD80_02234698: ; 0x02234698 add r6, r0, #0 add r0, r5, #0 add r1, sp, #0 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0 ldrh r1, [r4] ldrh r0, [r0] diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index a36fe53c..64ff452b 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -4538,7 +4538,7 @@ MOD83_0222F9DC: ; 0x0222F9DC ldr r1, _0222F9F4 ; =MOD83_0223B884 mov r0, #0xf ldr r1, [r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, _0222F9F4 ; =MOD83_0223B884 mov r1, #0 str r1, [r0] diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c index a9e0b94e..f52a6659 100644 --- a/arm9/src/game_init.c +++ b/arm9/src/game_init.c @@ -203,7 +203,7 @@ void * FUN_020161A4(u32 heap_id, const char * path) { if (size != FS_ReadFile(&file, ret, (s32)size)) { - FUN_02016A8C(heap_id, ret); + FreeToHeapExplicit(heap_id, ret); ret = NULL; } } diff --git a/arm9/src/heap.c b/arm9/src/heap.c index 895ce808..f28b4f88 100644 --- a/arm9/src/heap.c +++ b/arm9/src/heap.c @@ -309,7 +309,7 @@ void FreeToHeap(void *ptr) ErrorHandling(); } -void FUN_02016A8C(u32 param0, void *param1) +void FreeToHeapExplicit(u32 param0, void *param1) { GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ); diff --git a/arm9/src/itemtool.c b/arm9/src/itemtool.c index 6b892d6d..9982ff40 100644 --- a/arm9/src/itemtool.c +++ b/arm9/src/itemtool.c @@ -778,7 +778,7 @@ u32 GetItemAttr(u16 item, u32 attr, u32 heap_id) u32 ret; struct ItemData * itemData = (struct ItemData *)LoadItemDataOrGfx(item, 0, heap_id); ret = GetItemAttr_PreloadedItemData(itemData, attr); - FUN_02016A8C(heap_id, itemData); + FreeToHeapExplicit(heap_id, itemData); return ret; } diff --git a/arm9/src/list_menu.c b/arm9/src/list_menu.c index 59de2813..7b663eca 100644 --- a/arm9/src/list_menu.c +++ b/arm9/src/list_menu.c @@ -3,21 +3,21 @@ #include "main.h" #include "list_menu.h" -extern void * FUN_02013690(u32 heap_id); +extern void * ListMenuCursorNew(u32 heap_id); extern void * ListMenuUpdateCursorObj(struct ListMenuCursor *, struct Window *, u8 x, u8 y); -extern void CreateListMenuCursorObj(void *, u32); +extern void ListMenuCursorSetColor(void *, u32); extern void DestroyListMenuCursorObj(void *); extern void FillWindowPixelBuffer(struct Window *, u32); -void ListMenuPrintEntries(struct ListMenu *, u16, u16, u16); -void ListMenuDrawCursor(struct ListMenu *); -BOOL ListMenuChangeSelection(struct ListMenu *, u8, u8, s32); -void ListMenuCallSelectionChangedCallback(struct ListMenu *, BOOL); extern void CopyWindowToVram(struct Window *); extern s32 GetFontAttribute(u8 fontId, s32 attr); extern void FillWindowPixelRect(struct Window *, u32 fillValue, u16 x, u16 y, u16 width, u16 height); extern void ScrollWindow(struct Window *, u8, u8, u8); extern u16 GetWindowWidth(struct Window *); extern u16 GetWindowHeight(struct Window *); +void ListMenuPrintEntries(struct ListMenu * list, u16 startIndex, u16 yOffset, u16 count); +void ListMenuDrawCursor(struct ListMenu * list); +BOOL ListMenuChangeSelection(struct ListMenu * list, u8 updateCursorAndCallCallback, u8 count, u8 movingDown); +void ListMenuCallSelectionChangedCallback(struct ListMenu * list, u8 onInit); static inline u32 MakeFontColor(u32 fgPal, u32 shdwPal, u32 bgPal) { @@ -32,7 +32,7 @@ THUMB_FUNC struct ListMenu * ListMenuInit(const struct ListMenuTemplate * templa { struct ListMenu * list = AllocFromHeap(heap_id, sizeof(struct ListMenu)); list->template = *template; - list->cursor = FUN_02013690(heap_id); + list->cursor = ListMenuCursorNew(heap_id); list->cursorPos = cursorPos; list->itemsAbove = itemsAbove; list->unk_30 = 0; @@ -48,7 +48,7 @@ THUMB_FUNC struct ListMenu * ListMenuInit(const struct ListMenuTemplate * templa list->overrideEnabled = FALSE; if (list->template.totalItems < list->template.maxShowed) list->template.maxShowed = list->template.totalItems; - CreateListMenuCursorObj( + ListMenuCursorSetColor( list->cursor, // MakeFontColor(list->template.cursorPal, list->template.cursorShadowPal, list->fillValue) (u32)( @@ -130,7 +130,7 @@ THUMB_FUNC void DestroyListMenu(struct ListMenu * list, u16 * cursorPos, u16 * i if (itemsAbove != NULL) *itemsAbove = list->itemsAbove; DestroyListMenuCursorObj(list->cursor); - FUN_02016A8C(list->heap_id, list); + FreeToHeapExplicit(list->heap_id, list); } THUMB_FUNC void RedrawListMenu(struct ListMenu * list) @@ -141,7 +141,7 @@ THUMB_FUNC void RedrawListMenu(struct ListMenu * list) CopyWindowToVram(list->template.window); } -THUMB_FUNC s32 FUN_02001354(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 updateFlag, u16 input, u16 *cursorPosDest_p, u16 *itemsAboveDest_p) +THUMB_FUNC s32 ListMenuTestInputInternal(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 updateFlag, u16 input, u16 *newCursorPos, u16 *newItemsAbove) { if (template != NULL) list->template = *template; @@ -158,23 +158,23 @@ THUMB_FUNC s32 FUN_02001354(struct ListMenu * list, const struct ListMenuTemplat { ListMenuChangeSelection(list, updateFlag, 1, TRUE); } - if (cursorPosDest_p != NULL) + if (newCursorPos != NULL) { - *cursorPosDest_p = list->cursorPos; + *newCursorPos = list->cursorPos; } - if (itemsAboveDest_p != NULL) + if (newItemsAbove != NULL) { - *itemsAboveDest_p = list->itemsAbove; + *newItemsAbove = list->itemsAbove; } return -1; } -THUMB_FUNC s32 FUN_020013C8(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 input, u16 *cursorPosDest_p, u16 *itemsAboveDest_p) +THUMB_FUNC s32 ListMenuTestInput(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 input, u16 *newCursorPos, u16 *newItemsAbove) { - return FUN_02001354(list, template, cursorPos, itemsAbove, FALSE, input, cursorPosDest_p, itemsAboveDest_p); + return ListMenuTestInputInternal(list, template, cursorPos, itemsAbove, FALSE, input, newCursorPos, newItemsAbove); } -THUMB_FUNC void FUN_020013E8(struct ListMenu * list, u8 cursorPal, u8 fillValue, u8 cursorShadowPal) +THUMB_FUNC void ListMenuOverrideSetColors(struct ListMenu * list, u8 cursorPal, u8 fillValue, u8 cursorShadowPal) { list->cursorPal = cursorPal; list->fillValue = fillValue; @@ -182,12 +182,12 @@ THUMB_FUNC void FUN_020013E8(struct ListMenu * list, u8 cursorPal, u8 fillValue, list->overrideEnabled = TRUE; } -THUMB_FUNC void FUN_0200143C(struct ListMenu * list, u16 * index_p) +THUMB_FUNC void ListMenuGetCurrentItemArrayId(struct ListMenu * list, u16 * index_p) { *index_p = list->cursorPos + list->itemsAbove; } -THUMB_FUNC void FUN_02001448(struct ListMenu * list, u16 * cursorPos_p, u16 * itemsAbove_p) +THUMB_FUNC void ListMenuGetScrollAndRow(struct ListMenu * list, u16 * cursorPos_p, u16 * itemsAbove_p) { if (cursorPos_p != NULL) *cursorPos_p = list->cursorPos; @@ -195,12 +195,12 @@ THUMB_FUNC void FUN_02001448(struct ListMenu * list, u16 * cursorPos_p, u16 * it *itemsAbove_p = list->itemsAbove; } -THUMB_FUNC u8 FUN_0200145C(struct ListMenu * list) +THUMB_FUNC u8 ListMenuGetUnk33(struct ListMenu * list) { return list->unk_33; } -THUMB_FUNC s32 FUN_02001464(struct ListMenu * list, s32 index) +THUMB_FUNC s32 ListMenuGetValueByArrayId(struct ListMenu * list, s32 index) { return list->template.items[index].index; } @@ -519,3 +519,59 @@ THUMB_FUNC void ListMenuScroll(struct ListMenu * list, u8 count, u8 movingDown) } } } + +THUMB_FUNC BOOL ListMenuChangeSelection(struct ListMenu * list, u8 updateCursorAndCallCallback, u8 count, u8 movingDown) +{ + u16 oldSelectedRow; + u8 selectionChange, i, cursorCount; + + oldSelectedRow = list->itemsAbove; + cursorCount = 0; + selectionChange = 0; + for (i = 0; i < count; i++) + { + do + { + u8 ret = ListMenuUpdateSelectedRowIndexAndScrollOffset(list, movingDown); + + selectionChange |= ret; + if (ret != 2) + break; + cursorCount++; + } + while (list->template.items[list->cursorPos + list->itemsAbove].index == LIST_HEADER); + } + + if (updateCursorAndCallCallback) + { + switch (selectionChange) + { + case 0: + default: + return TRUE; + case 1: + ListMenuErasePrintedCursor(list, oldSelectedRow); + ListMenuDrawCursor(list); + ListMenuCallSelectionChangedCallback(list, FALSE); + CopyWindowToVram(list->template.window); + break; + case 2: + case 3: + ListMenuErasePrintedCursor(list, oldSelectedRow); + ListMenuScroll(list, cursorCount, movingDown); + ListMenuDrawCursor(list); + ListMenuCallSelectionChangedCallback(list, FALSE); + CopyWindowToVram(list->template.window); + break; + } + } + return FALSE; +} + +void ListMenuCallSelectionChangedCallback(struct ListMenu * list, u8 onInit) +{ + if (list->template.moveCursorFunc != NULL) + { + list->template.moveCursorFunc(list, list->template.items[list->cursorPos + list->itemsAbove].index, onInit); + } +} diff --git a/include/heap.h b/include/heap.h index 69aedd9e..5dc51795 100644 --- a/include/heap.h +++ b/include/heap.h @@ -28,7 +28,7 @@ THUMB_FUNC void FUN_02016988(); void *AllocFromHeap(u32 heap_id, u32 size); void *AllocFromHeapAtEnd(u32 heap_id, u32 size); void FreeToHeap(void *ptr); -void FUN_02016A8C(u32 heap_id, void * ptr); +void FreeToHeapExplicit(u32 heap_id, void * ptr); THUMB_FUNC u32 FUN_02016AF8(u32 param0); THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2); THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1); diff --git a/include/list_menu.h b/include/list_menu.h index 966a942a..35fc44e6 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -28,8 +28,8 @@ struct ListMenuItem // TODO: Document remaining fields. // A lot of these are named based on similar fields in gen 3. -typedef void (*LM_MOVECURSORFUNC)(s32, u8, struct ListMenu *); -typedef void (*LM_ITEMPRINTFUNC)(struct ListMenu *, s32, u8); +typedef void (*LM_MOVECURSORFUNC)(struct ListMenu *list, s32 index, u8 onInit); +typedef void (*LM_ITEMPRINTFUNC)(struct ListMenu *list, s32 index, u8 y); struct ListMenuTemplate { |