diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-10-11 11:06:25 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-10-11 11:06:25 -0400 |
commit | 0046efe86762b893b8bc688ff8172a071a952fac (patch) | |
tree | 3098d1f95cb8838a7d5ceb6bb9716ab60a16c167 | |
parent | c340377fe527fffd0df58cbe7c1d6b79d9f19827 (diff) |
sub_8110E68
-rw-r--r-- | asm/quest_log.s | 87 | ||||
-rw-r--r-- | include/unk_8159F40.h | 6 | ||||
-rw-r--r-- | src/quest_log.c | 52 |
3 files changed, 53 insertions, 92 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s index 5f7b6b627..633a15489 100644 --- a/asm/quest_log.s +++ b/asm/quest_log.s @@ -5,93 +5,6 @@ .text - thumb_func_start sub_8110E68 -sub_8110E68: @ 8110E68 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - ldr r0, _08110EA0 @ =gUnknown_203ADFC - ldrh r5, [r0] - ldr r0, _08110EA4 @ =gUnknown_203AF98 - mov r8, r0 - ldrh r0, [r0] - cmp r5, r0 - bcs _08110ECA - ldr r6, _08110EA8 @ =gUnknown_203AE08 -_08110E80: - ldr r4, [r6] - cmp r4, 0 - beq _08110F02 - lsls r0, r5, 3 - adds r1, r0, r7 - ldrb r2, [r1, 0x6] - adds r3, r0, 0 - cmp r2, 0x1 - bgt _08110EAC - cmp r2, 0 - blt _08110EAC - adds r0, r4, 0 - bl sub_8113D48 - b _08110EB4 - .align 2, 0 -_08110EA0: .4byte gUnknown_203ADFC -_08110EA4: .4byte gUnknown_203AF98 -_08110EA8: .4byte gUnknown_203AE08 -_08110EAC: - ldr r0, [r6] - adds r1, r7, r3 - bl sub_8113CC8 -_08110EB4: - str r0, [r6] - ldr r1, [r6] - cmp r1, 0 - beq _08110EEC - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _08110EE0 @ =gUnknown_203AF98 - ldrh r0, [r0] - cmp r5, r0 - bcc _08110E80 -_08110ECA: - ldr r0, _08110EE4 @ =gUnknown_3005E88 - ldrb r0, [r0] - cmp r0, 0 - beq _08110EF8 - ldr r1, _08110EE8 @ =gUnknown_203ADFC - mov r2, r8 - ldrh r0, [r2] - strh r0, [r1] - movs r0, 0x1 - b _08110F04 - .align 2, 0 -_08110EE0: .4byte gUnknown_203AF98 -_08110EE4: .4byte gUnknown_3005E88 -_08110EE8: .4byte gUnknown_203ADFC -_08110EEC: - ldr r0, _08110EF4 @ =gUnknown_3005E88 - strb r1, [r0] - b _08110F02 - .align 2, 0 -_08110EF4: .4byte gUnknown_3005E88 -_08110EF8: - ldr r4, _08110F10 @ =gUnknown_203AE08 - ldr r0, [r4] - bl sub_8113BF4 - str r0, [r4] -_08110F02: - movs r0, 0 -_08110F04: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08110F10: .4byte gUnknown_203AE08 - thumb_func_end sub_8110E68 - thumb_func_start sub_8110F14 sub_8110F14: @ 8110F14 push {r4-r7,lr} diff --git a/include/unk_8159F40.h b/include/unk_8159F40.h new file mode 100644 index 000000000..7343dc629 --- /dev/null +++ b/include/unk_8159F40.h @@ -0,0 +1,6 @@ +#ifndef GUARD_UNK_8159F40_H +#define GUARD_UNK_8159F40_H + +void sub_815A008(struct QuestLog *); + +#endif //GUARD_UNK_8159F40_H diff --git a/src/quest_log.c b/src/quest_log.c index 97313674e..c16f41236 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -13,6 +13,12 @@ struct UnkStruct_203AE94 u8 unk_1; }; +struct UnkStruct_203AE98 +{ + u8 filler_0[6]; + u8 unk_6; +}; + EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA u16 gUnknown_203ADFC = 0; @@ -21,7 +27,8 @@ EWRAM_DATA void * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; -EWRAM_DATA u8 gUnknown_203AE98[0x100] = {0}; +EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; +EWRAM_DATA u16 gUnknown_203AF98 = 0; void sub_8110A00(void); void sub_8110A3C(void); @@ -31,16 +38,17 @@ void sub_8110E3C(void); void sub_8110D94(void); void sub_8110E20(void); void sub_8110D48(u8); +u8 sub_8110E68(struct UnkStruct_203AE98 *); void sub_81115E8(void); -u8 sub_8110E68(void *); void sub_81118F4(s8); void sub_8111AD8(void); +void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); void sub_8113B88(void); void sub_8113BD8(void); -void sub_8113BF4(void *); -void sub_8112940(u8, u8 *, u16); +void * sub_8113BF4(void *); void sub_81138F8(void); -void sub_815A008(struct QuestLog *); +void * sub_8113D48(void *, struct UnkStruct_203AE98 *); +void * sub_8113CC8(void *, struct UnkStruct_203AE98 *); void sub_8110840(void * a0) @@ -432,3 +440,37 @@ void sub_8110E3C(void) if (++gUnknown_203ADF8 > 3) gUnknown_203ADF8 = 0; } + +bool8 sub_8110E68(struct UnkStruct_203AE98 * a0) +{ + u16 i; + + for (i = gUnknown_203ADFC; i < gUnknown_203AF98; i++) + { + if (gUnknown_203AE08 == NULL) + return FALSE; + switch (a0[i].unk_6) + { + case 0: + case 1: + gUnknown_203AE08 = sub_8113D48(gUnknown_203AE08, &a0[i]); + break; + default: + gUnknown_203AE08 = sub_8113CC8(gUnknown_203AE08, &a0[i]); + break; + } + if (gUnknown_203AE08 == NULL) + { + gUnknown_3005E88 = 0; + return FALSE; + } + } + + if (gUnknown_3005E88 == 0) + { + gUnknown_203AE08 = sub_8113BF4(gUnknown_203AE08); + return FALSE; + } + gUnknown_203ADFC = gUnknown_203AF98; + return TRUE; +} |