diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-25 21:58:52 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-25 21:58:52 -0500 |
commit | 82c7bd49aa07293c840254bccc144836057f2c65 (patch) | |
tree | a48b50f14766b8009969cc03dd177aee6130e18c | |
parent | 5c013a089798efa1819986528de4af8470a9c329 (diff) |
through sub_812DB64
-rw-r--r-- | asm/fame_checker.s | 91 | ||||
-rw-r--r-- | include/list_menu.h | 29 | ||||
-rw-r--r-- | src/fame_checker.c | 49 |
3 files changed, 57 insertions, 112 deletions
diff --git a/asm/fame_checker.s b/asm/fame_checker.s index aa0cb17c4..471e9921b 100644 --- a/asm/fame_checker.s +++ b/asm/fame_checker.s @@ -5,97 +5,6 @@ .text - thumb_func_start sub_812DB10 -sub_812DB10: @ 812DB10 - push {lr} - movs r0, 0 - bl sub_812E094 - ldr r1, _0812DB24 @ =gUnknown_3005EC8 - movs r0, 0xFF - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0812DB24: .4byte gUnknown_3005EC8 - thumb_func_end sub_812DB10 - - thumb_func_start sub_812DB28 -sub_812DB28: @ 812DB28 - push {r4,lr} - bl sub_812DB64 - bl sub_812DEF0 - ldr r4, _0812DB5C @ =gUnknown_203B0FC - ldr r3, [r4] - lsls r0, 2 - ldrb r2, [r3, 0x7] - movs r1, 0x3 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x7] - ldr r0, _0812DB60 @ =gUnknown_3005EB0 - movs r1, 0 - movs r2, 0 - bl ListMenuInit - ldr r1, [r4] - strb r0, [r1, 0x8] - movs r0, 0 - bl sub_812DFE4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812DB5C: .4byte gUnknown_203B0FC -_0812DB60: .4byte gUnknown_3005EB0 - thumb_func_end sub_812DB28 - - thumb_func_start sub_812DB64 -sub_812DB64: @ 812DB64 - ldr r2, _0812DBB4 @ =gUnknown_3005EB0 - ldr r0, _0812DBB8 @ =gUnknown_203B100 - ldr r0, [r0] - str r0, [r2] - ldr r0, _0812DBBC @ =sub_812DBC0 - str r0, [r2, 0x4] - movs r0, 0 - str r0, [r2, 0x8] - movs r1, 0 - movs r0, 0x1 - strh r0, [r2, 0xC] - strh r0, [r2, 0xE] - strb r1, [r2, 0x10] - strb r1, [r2, 0x11] - movs r0, 0x8 - strb r0, [r2, 0x12] - strb r1, [r2, 0x13] - ldrb r1, [r2, 0x14] - subs r0, 0x18 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - movs r1, 0xF - ands r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2, 0x14] - movs r0, 0x30 - strb r0, [r2, 0x15] - movs r3, 0x3F - movs r0, 0 - strb r0, [r2, 0x16] - ldrb r1, [r2, 0x17] - subs r0, 0x40 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - ands r0, r3 - strb r0, [r2, 0x17] - bx lr - .align 2, 0 -_0812DBB4: .4byte gUnknown_3005EB0 -_0812DBB8: .4byte gUnknown_203B100 -_0812DBBC: .4byte sub_812DBC0 - thumb_func_end sub_812DB64 - thumb_func_start sub_812DBC0 sub_812DBC0: @ 812DBC0 push {r4-r7,lr} diff --git a/include/list_menu.h b/include/list_menu.h index 89adeaba0..fc829940e 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -18,22 +18,23 @@ struct ListMenu; struct ListMenuTemplate { const struct ListMenuItem *items; - void (* unk_04)(u32, bool8, struct ListMenu *); - void (* unk_08)(u8, s32, u8); + void (* moveCursorFunc)(s32 itemIndex, bool8 onInit, struct ListMenu *list); + void (* itemPrintFunc)(u8 windowId, s32 itemId, u8 y); u16 totalItems; u16 maxShowed; - u8 unk_10; - u8 unk_11; - u8 unk_12; - u8 cursor_Y; - u32 upText_Y:4; // x1, x2, x4, x8 = xF - u32 cursorColor:4; // x10, x20, x40, x80 = xF0 - u32 fillColor:4; // x100, x200, x400, x800 = xF00 - u32 cursorShadowColor:4; // x1000, x2000, x4000, x8000 = xF000 - u32 unk_16_0:1; // x10000 - u32 spaceBetweenItems:6; // x20000, x40000, x80000, x100000, x200000, x400000 = x7E0000 - u32 unk_16_7:1; // x800000 - u32 unk_17_0:6; // x1000000, x2000000, x4000000, x8000000, x10000000, x20000000 = x3F000000 + u8 windowId; + u8 header_X; + u8 item_X; + u8 cursor_X; + u8 upText_Y:4; // x1, x2, x4, x8 = xF + u8 cursorPal:4; // x10, x20, x40, x80 = xF0 + u8 fillValue:4; // x1, x2, x4, x8 = xF + u8 cursorShadowPal:4; // x10, x20, x40, x80 = xF0 + u8 lettersSpacing:3; + u8 itemVerticalPadding:3; + u8 scrollMultiple:2; // x40, x80 = xC0 + u8 fontId:6; // x1, x2, x4, x8, x10, x20 = x3F + u8 cursorKind:2; // x40, x80 }; struct ListMenu { diff --git a/src/fame_checker.c b/src/fame_checker.c index 0c7072fb4..203d1ca6c 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -50,16 +50,11 @@ struct FameCheckerData u8 unk_23_2:1; }; -struct FameCheckerData2 -{ - u8 filler_00[0x88]; -}; - EWRAM_DATA u16 * gUnknown_203B0F0 = NULL; EWRAM_DATA u16 * gUnknown_203B0F4 = NULL; EWRAM_DATA u16 * gUnknown_203B0F8 = NULL; EWRAM_DATA struct FameCheckerData * gUnknown_203B0FC = NULL; -EWRAM_DATA struct FameCheckerData2 * gUnknown_203B100 = NULL; +EWRAM_DATA struct ListMenuItem * gUnknown_203B100 = NULL; EWRAM_DATA u32 gUnknown_203B104 = 0; struct ListMenuTemplate gUnknown_3005EB0; @@ -106,6 +101,10 @@ void sub_812D9A8(u8 a0, u16 a1); void sub_812DA14(u8 a0); void sub_812DB10(void); void sub_812DB28(void); +void sub_812DB64(void); +void sub_812DBC0(s32, bool8, struct ListMenu *); +u8 sub_812DEF0(void); +void sub_812DFE4(u8); void sub_812E000(void); void sub_812E048(void); u16 sub_812E064(void); @@ -225,7 +224,7 @@ void sub_812C3F8(void) InitWindows(gUnknown_845FC04); DeactivateAllTextPrinters(); sub_812CEC0(); - gUnknown_203B100 = AllocZeroed(sizeof(struct FameCheckerData2)); + gUnknown_203B100 = AllocZeroed(17 * sizeof(struct ListMenuItem)); sub_812DB28(); gMain.state++; break; @@ -939,3 +938,39 @@ void sub_812DA14(u8 a0) AddTextPrinterParametrized2(3, 0, width, 10, 0, 2, &gUnknown_845F5E3, -1, gStringVar1); sub_812CEE0(3); } + +void sub_812DB10(void) +{ + sub_812E094(0); + gUnknown_3005EC8 = 0xFF; +} + +void sub_812DB28(void) +{ + sub_812DB64(); + gUnknown_203B0FC->unk_07_2 = sub_812DEF0(); + gUnknown_203B0FC->unk_08 = ListMenuInit(&gUnknown_3005EB0, 0, 0); + sub_812DFE4(0); +} + +void sub_812DB64(void) +{ + gUnknown_3005EB0.items = gUnknown_203B100; + gUnknown_3005EB0.moveCursorFunc = sub_812DBC0; + gUnknown_3005EB0.itemPrintFunc = NULL; + gUnknown_3005EB0.totalItems = 1; + gUnknown_3005EB0.maxShowed = 1; + gUnknown_3005EB0.windowId = 0; + gUnknown_3005EB0.header_X = 0; + gUnknown_3005EB0.item_X = 8; + gUnknown_3005EB0.cursor_X = 0; + gUnknown_3005EB0.upText_Y = 4; + gUnknown_3005EB0.cursorPal = 2; + gUnknown_3005EB0.fillValue = 0; + gUnknown_3005EB0.cursorShadowPal = 3; + gUnknown_3005EB0.lettersSpacing = 0; + gUnknown_3005EB0.itemVerticalPadding = 0; + gUnknown_3005EB0.scrollMultiple = 0; + gUnknown_3005EB0.fontId = 2; + gUnknown_3005EB0.cursorKind = 0; +} |