diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-12 11:48:53 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-12 11:48:53 -0400 |
commit | a556316043d1f5c87d48d98b294e6ee23f8e5a5f (patch) | |
tree | beefc3f1475a9ee297d5d699f218887c58c31588 | |
parent | b6709608f53d788db517f2abeaddb6284d64e199 (diff) |
help_system_812B1E0: through sub_812B754
-rw-r--r-- | asm/help_system_812B1E0.s | 190 | ||||
-rw-r--r-- | src/help_system_812B1E0.c | 61 |
2 files changed, 61 insertions, 190 deletions
diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s index 77c196c4e..c41eb680f 100644 --- a/asm/help_system_812B1E0.s +++ b/asm/help_system_812B1E0.s @@ -5,196 +5,6 @@ .text - thumb_func_start sub_812B614 -sub_812B614: @ 812B614 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r5, r1, 0 - movs r6, 0 - ldr r3, _0812B664 @ =gUnknown_845B9E0 - ldr r0, _0812B668 @ =gUnknown_203B0EC - ldrh r1, [r0] - lsls r0, r1, 2 - ldr r2, _0812B66C @ =gUnknown_3005E9C - adds r0, r1 - ldrb r2, [r2, 0x1] - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldr r3, [r0] - movs r7, 0 - ldrb r0, [r3] - cmp r0, 0xFF - beq _0812B6D0 -_0812B640: - adds r4, r3, r7 - ldrb r0, [r4] - str r3, [sp] - bl sub_812B780 - lsls r0, 24 - lsrs r0, 24 - ldr r3, [sp] - cmp r0, 0x1 - bne _0812B6C2 - ldr r0, _0812B66C @ =gUnknown_3005E9C - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _0812B674 - lsls r1, r6, 3 - adds r1, r5 - ldr r2, _0812B670 @ =gUnknown_845B0B0 - b _0812B6AA - .align 2, 0 -_0812B664: .4byte gUnknown_845B9E0 -_0812B668: .4byte gUnknown_203B0EC -_0812B66C: .4byte gUnknown_3005E9C -_0812B670: .4byte gUnknown_845B0B0 -_0812B674: - cmp r0, 0x1 - bne _0812B684 - lsls r1, r6, 3 - adds r1, r5 - ldr r2, _0812B680 @ =gUnknown_845B218 - b _0812B6AA - .align 2, 0 -_0812B680: .4byte gUnknown_845B218 -_0812B684: - cmp r0, 0x2 - bne _0812B694 - lsls r1, r6, 3 - adds r1, r5 - ldr r2, _0812B690 @ =gUnknown_845B3A0 - b _0812B6AA - .align 2, 0 -_0812B690: .4byte gUnknown_845B3A0 -_0812B694: - cmp r0, 0x3 - bne _0812B6A4 - lsls r1, r6, 3 - adds r1, r5 - ldr r2, _0812B6A0 @ =gUnknown_845B500 - b _0812B6AA - .align 2, 0 -_0812B6A0: .4byte gUnknown_845B500 -_0812B6A4: - lsls r1, r6, 3 - adds r1, r5 - ldr r2, _0812B744 @ =gUnknown_845B540 -_0812B6AA: - ldrb r0, [r4] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - lsls r0, r6, 3 - adds r0, r5 - ldrb r1, [r4] - str r1, [r0, 0x4] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0812B6C2: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r3, r7 - ldrb r0, [r0] - cmp r0, 0xFF - bne _0812B640 -_0812B6D0: - bl sub_812B754 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0812B710 - movs r7, 0 - ldr r3, _0812B748 @ =gUnknown_845B9BE - ldrb r0, [r3] - cmp r0, 0xFF - beq _0812B710 - ldr r4, _0812B74C @ =gUnknown_845B3A0 -_0812B6E8: - lsls r1, r6, 3 - adds r1, r5 - adds r2, r3, r7 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - ldrb r0, [r2] - str r0, [r1, 0x4] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r3, r7 - ldrb r0, [r0] - cmp r0, 0xFF - bne _0812B6E8 -_0812B710: - lsls r0, r6, 3 - adds r0, r5 - ldr r1, _0812B750 @ =gUnknown_81B2E6F - str r1, [r0] - movs r1, 0x2 - negs r1, r1 - str r1, [r0, 0x4] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - movs r1, 0 - mov r0, r8 - strh r6, [r0, 0x4] - movs r0, 0x7 - mov r2, r8 - strh r0, [r2, 0x6] - strb r1, [r2, 0x8] - movs r0, 0x15 - strb r0, [r2, 0x9] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812B744: .4byte gUnknown_845B540 -_0812B748: .4byte gUnknown_845B9BE -_0812B74C: .4byte gUnknown_845B3A0 -_0812B750: .4byte gUnknown_81B2E6F - thumb_func_end sub_812B614 - - thumb_func_start sub_812B754 -sub_812B754: @ 812B754 - push {lr} - movs r0, 0x96 - lsls r0, 3 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0812B778 - ldr r0, _0812B774 @ =gUnknown_3005E9C - ldrb r0, [r0, 0x1] - cmp r0, 0x2 - bne _0812B778 - movs r0, 0x1 - b _0812B77A - .align 2, 0 -_0812B774: .4byte gUnknown_3005E9C -_0812B778: - movs r0, 0 -_0812B77A: - pop {r1} - bx r1 - thumb_func_end sub_812B754 - thumb_func_start sub_812B780 sub_812B780: @ 812B780 push {r4,r5,lr} diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c index 68ca6adb6..a6edae3bd 100644 --- a/src/help_system_812B1E0.c +++ b/src/help_system_812B1E0.c @@ -19,14 +19,27 @@ bool32 sub_812B27C(const u16 * mapIdxs); void sub_812B4B8(void); void sub_812B520(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1); void sub_812B614(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1); +bool8 sub_812B754(void); +bool8 sub_812B780(u8); void sub_812BF9C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1); void sub_812BF74(const u8 *); +// event_scripts.h +extern const u8 gUnknown_81B2E6F[]; + // strings.h extern const u8 gUnknown_841DFAC[]; extern const u8 gUnknown_841DFC9[]; +// this file extern const u8 *const gUnknown_845B080[]; +extern const u8 *const gUnknown_845B0B0[]; +extern const u8 *const gUnknown_845B218[]; +extern const u8 *const gUnknown_845B3A0[]; +extern const u8 *const gUnknown_845B500[]; +extern const u8 *const gUnknown_845B540[]; +extern const u8 *const gUnknown_845B9E0[]; +extern const u8 gUnknown_845B9BE[]; extern const u8 gUnknown_845C4B0[]; extern const u8 gUnknown_845C4B6[][6]; extern const u16 gUnknown_845C594[]; // marts @@ -236,3 +249,51 @@ void sub_812B5A8(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1) sub_813BDA4(1); sub_813BD5C(1); } + +void sub_812B614(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1) +{ + u8 r6 = 0; + const u8 * r3 = gUnknown_845B9E0[gUnknown_203B0EC * 5 + gUnknown_3005E9C[1]]; + u8 i; + for (i = 0; r3[i] != 0xFF; i++) + { + if (sub_812B780(r3[i]) == TRUE) + { + if (gUnknown_3005E9C[1] == 0) + a1[r6].label = gUnknown_845B0B0[r3[i]]; + else if (gUnknown_3005E9C[1] == 1) + a1[r6].label = gUnknown_845B218[r3[i]]; + else if (gUnknown_3005E9C[1] == 2) + a1[r6].label = gUnknown_845B3A0[r3[i]]; + else if (gUnknown_3005E9C[1] == 3) + a1[r6].label = gUnknown_845B500[r3[i]]; + else + a1[r6].label = gUnknown_845B540[r3[i]]; + a1[r6].index = r3[i]; + r6++; + } + } + if (sub_812B754() == TRUE) + { + for (i = 0, r3 = gUnknown_845B9BE; r3[i] != 0xFF; i++) + { + a1[r6].label = gUnknown_845B3A0[r3[i]]; + a1[r6].index = r3[i]; + r6++; + } + } + a1[r6].label = gUnknown_81B2E6F; + a1[r6].index = -2; + r6++; + a0->sub.field_04 = r6; + a0->sub.field_06 = 7; + a0->sub.field_08 = 0; + a0->sub.field_09 = 21; +} + +bool8 sub_812B754(void) +{ + if (FlagGet(FLAG_0x4B0) == TRUE && gUnknown_3005E9C[1] == 2) + return TRUE; + return FALSE; +} |