summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-05-21 08:28:03 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-05-21 08:28:03 -0400
commit5c9213cb7fcfabdd3c85408f39a04314dd03e780 (patch)
tree4f3e93ee1d7681df6f92874ce74063e43ecbcbfc
parentaa152bfb68aa828481806b7399e8c521bec61187 (diff)
FUN_02001354
-rw-r--r--arm9/asm/unk_020010A8.s64
-rw-r--r--arm9/src/list_menu.c30
2 files changed, 29 insertions, 65 deletions
diff --git a/arm9/asm/unk_020010A8.s b/arm9/asm/unk_020010A8.s
index dba61431..a6a35c2f 100644
--- a/arm9/asm/unk_020010A8.s
+++ b/arm9/asm/unk_020010A8.s
@@ -5,70 +5,6 @@
.text
- thumb_func_start FUN_02001354
-FUN_02001354: ; 0x02001354
- push {r4-r6, lr}
- add r4, r0, #0x0
- add r6, r1, #0x0
- beq _0200136E
- add r5, r4, #0x0
- ldmia r6!, {r0-r1}
- stmia r5!, {r0-r1}
- ldmia r6!, {r0-r1}
- stmia r5!, {r0-r1}
- ldmia r6!, {r0-r1}
- stmia r5!, {r0-r1}
- ldmia r6!, {r0-r1}
- stmia r5!, {r0-r1}
-_0200136E:
- strh r2, [r4, #0x2c]
- add r0, r4, #0x0
- strh r3, [r4, #0x2e]
- mov r3, #0x0
- add r0, #0x30
- strb r3, [r0, #0x0]
- add r0, r4, #0x0
- add r0, #0x31
- add r1, sp, #0x0
- strb r3, [r0, #0x0]
- ldrh r0, [r1, #0x14]
- cmp r0, #0x40
- bne _02001398
- ldrh r1, [r1, #0x10]
- add r0, r4, #0x0
- mov r2, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl ListMenuChangeSelection
- b _020013AC
-_02001398:
- cmp r0, #0x80
- bne _020013AC
- ldrh r1, [r1, #0x10]
- mov r2, #0x1
- add r0, r4, #0x0
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- add r3, r2, #0x0
- bl ListMenuChangeSelection
-_020013AC:
- ldr r1, [sp, #0x18]
- cmp r1, #0x0
- beq _020013B6
- ldrh r0, [r4, #0x2c]
- strh r0, [r1, #0x0]
-_020013B6:
- ldr r1, [sp, #0x1c]
- cmp r1, #0x0
- beq _020013C0
- ldrh r0, [r4, #0x2e]
- strh r0, [r1, #0x0]
-_020013C0:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
- .balign 4
-
thumb_func_start FUN_020013C8
FUN_020013C8: ; 0x020013C8
push {r4, lr}
diff --git a/arm9/src/list_menu.c b/arm9/src/list_menu.c
index 6d440ad1..2700f30e 100644
--- a/arm9/src/list_menu.c
+++ b/arm9/src/list_menu.c
@@ -9,7 +9,7 @@ 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 *, s32, u8, s32);
+BOOL ListMenuChangeSelection(struct ListMenu *, u8, u8, s32);
void ListMenuCallSelectionChangedCallback(struct ListMenu *, BOOL);
extern void CopyWindowToVram(struct Window *);
@@ -124,3 +124,31 @@ THUMB_FUNC void RedrawListMenu(struct ListMenu * list)
ListMenuDrawCursor(list);
CopyWindowToVram(list->template.window);
}
+
+THUMB_FUNC s32 FUN_02001354(struct ListMenu * list, struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 updateFlag, u16 input, u16 * sp18, u16 * sp1C)
+{
+ if (template != NULL)
+ list->template = *template;
+ list->cursorPos = cursorPos;
+ list->itemsAbove = itemsAbove;
+ list->unk_30 = 0;
+ list->unk_31 = 0;
+
+ if (input == REG_PAD_KEYINPUT_UP_MASK)
+ {
+ ListMenuChangeSelection(list, updateFlag, 1, FALSE);
+ }
+ else if (input == REG_PAD_KEYINPUT_DOWN_MASK)
+ {
+ ListMenuChangeSelection(list, updateFlag, 1, TRUE);
+ }
+ if (sp18 != NULL)
+ {
+ *sp18 = list->cursorPos;
+ }
+ if (sp1C != NULL)
+ {
+ *sp1C = list->itemsAbove;
+ }
+ return -1;
+}