diff options
| author | PikalaxALT <pikalaxalt@gmail.com> | 2021-05-22 15:35:19 -0400 |
|---|---|---|
| committer | PikalaxALT <pikalaxalt@gmail.com> | 2021-05-22 15:35:19 -0400 |
| commit | d5bd2337cf8970b1ce7f8a3d0e64aa092e705462 (patch) | |
| tree | 0e329d52ffa922281649c0bd9ab1b39c35f908c2 /arm9/asm/list_menu_items.s | |
| parent | 1e7dcfbf615f387c3b4a8a7577ff36dd57922f60 (diff) | |
Split unk_02011744.s
Diffstat (limited to 'arm9/asm/list_menu_items.s')
| -rw-r--r-- | arm9/asm/list_menu_items.s | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/arm9/asm/list_menu_items.s b/arm9/asm/list_menu_items.s new file mode 100644 index 00000000..eecacb09 --- /dev/null +++ b/arm9/asm/list_menu_items.s @@ -0,0 +1,162 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + thumb_func_start ListMenuItems_ctor +ListMenuItems_ctor: ; 0x02012838 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r1, r5, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0x3 + bl AllocFromHeap + cmp r0, #0x0 + beq _0201286E + mov r2, #0x0 + cmp r5, #0x0 + bls _02012862 + add r3, r0, #0x0 + add r1, r2, #0x0 +_02012856: + str r1, [r3, #0x0] + str r1, [r3, #0x4] + add r2, r2, #0x1 + add r3, #0x8 + cmp r2, r5 + blo _02012856 +_02012862: + mov r1, #0x0 + lsl r2, r2, #0x3 + mvn r1, r1 + str r1, [r0, r2] + add r1, r0, r2 + str r4, [r1, #0x4] +_0201286E: + pop {r3-r5, pc} + + thumb_func_start ListMenuItems_dtor +ListMenuItems_dtor: ; 0x02012870 + push {r4, lr} + add r4, r0, #0x0 + bl ListMenuItems_DestroyMenuStrings + add r0, r4, #0x0 + bl FreeToHeap + pop {r4, pc} + + thumb_func_start ListMenuItems_AppendFromMsgData +ListMenuItems_AppendFromMsgData: ; 0x02012880 + push {r3-r7, lr} + add r6, r1, #0x0 + add r1, sp, #0x0 + add r7, r2, #0x0 + add r5, r3, #0x0 + bl ListMenuItems_NewItem + add r4, r0, #0x0 + beq _0201289E + add r0, r6, #0x0 + add r1, r7, #0x0 + bl NewString_ReadMsgData + str r0, [r4, #0x0] + str r5, [r4, #0x4] +_0201289E: + pop {r3-r7, pc} + + thumb_func_start ListMenuItems_AddItem +ListMenuItems_AddItem: ; 0x020128A0 + push {r3-r6, lr} + sub sp, #0x4 + add r6, r1, #0x0 + add r1, sp, #0x0 + add r5, r2, #0x0 + bl ListMenuItems_NewItem + add r4, r0, #0x0 + beq _020128BE + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl StringDup + str r0, [r4, #0x0] + str r5, [r4, #0x4] +_020128BE: + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start ListMenuItems_CopyItem +ListMenuItems_CopyItem: ; 0x020128C4 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r1, #0x0 + add r1, sp, #0x0 + bl ListMenuItems_NewItem + cmp r0, #0x0 + beq _020128DC + ldr r1, [r4, #0x0] + str r1, [r0, #0x0] + ldr r1, [r4, #0x4] + str r1, [r0, #0x4] +_020128DC: + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start ListMenuItems_NewItem +ListMenuItems_NewItem: ; 0x020128E0 + push {r4, lr} + ldr r3, [r0, #0x0] + cmp r3, #0x0 + beq _02012900 + mov r2, #0x0 + mvn r2, r2 +_020128EC: + cmp r3, r2 + bne _020128F8 + bl ErrorHandling + mov r0, #0x0 + pop {r4, pc} +_020128F8: + add r0, #0x8 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + bne _020128EC +_02012900: + mov r2, #0x0 + mvn r2, r2 + add r4, r0, #0x0 + cmp r3, r2 + beq _02012912 +_0201290A: + add r0, #0x8 + ldr r3, [r0, #0x0] + cmp r3, r2 + bne _0201290A +_02012912: + ldr r0, [r0, #0x4] + str r0, [r1, #0x0] + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start ListMenuItems_DestroyMenuStrings +ListMenuItems_DestroyMenuStrings: ; 0x0201291C + push {r4-r6, lr} + add r5, r0, #0x0 + mov r0, #0x0 + ldr r1, [r5, #0x0] + mvn r0, r0 + cmp r1, r0 + beq _02012942 + mov r4, #0x0 + add r6, r0, #0x0 +_0201292E: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _02012942 + bl String_dtor + str r4, [r5, #0x0] + add r5, #0x8 + ldr r0, [r5, #0x0] + cmp r0, r6 + bne _0201292E +_02012942: + pop {r4-r6, pc} |
