diff options
Diffstat (limited to 'src/quest_log.c')
-rw-r--r-- | src/quest_log.c | 69 |
1 files changed, 68 insertions, 1 deletions
diff --git a/src/quest_log.c b/src/quest_log.c index 4dc0a5719..0454dd7ad 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1,13 +1,32 @@ #include "global.h" +#include "script.h" #include "quest_log.h" +u8 gUnknown_3005E88; + +struct UnkStruct_203AE94 +{ + u8 unk_0_0:4; + u8 unk_0_4:2; + u8 unk_0_6:2; + u8 unk_1; +}; + EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA void * gUnknown_203AE04 = NULL; 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}; +void sub_8110A00(void); +u8 sub_8110E68(void *); +void sub_8110A3C(void); +void sub_8110E3C(void); +void sub_8111AD8(void); +void sub_81118F4(s8); void sub_8113BD8(void); void sub_81138F8(void); @@ -59,7 +78,17 @@ void sub_811092C(void) gUnknown_203AE8C(); } -bool8 sub_8110944(u8 * a0, s32 a1) +bool8 sub_8110944(u8 * a0, size_t a1) +{ + u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568; + u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; + r0 -= a1; + if (a0 < r2 || a0 > r0) + return FALSE; + return TRUE; +} + +bool8 sub_8110988(u8 * a0, size_t a1) { u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568; u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; @@ -68,3 +97,41 @@ bool8 sub_8110944(u8 * a0, s32 a1) return FALSE; return TRUE; } + +void sub_81109CC(u8 a0) +{ + gUnknown_203ADFA = a0; + if (a0 == 1) + gUnknown_203AE8C = sub_8110A00; + else + gUnknown_203AE8C = sub_8110A3C; +} + +void sub_8110A00(void) +{ + if (sub_8110E68(gUnknown_203AE98) != 1) + { + gUnknown_3005E88 = 0; + sub_8110E3C(); + gUnknown_203ADFA = 0; + gUnknown_203AE8C = NULL; + } +} + +void sub_8110A3C(void) +{ + if (gUnknown_203AE94.unk_0_0 == 2) + gUnknown_203AE94.unk_0_0 = 0; + + if (gUnknown_203AE94.unk_0_6 == 0) + { + if (gUnknown_3005E88 || gUnknown_203AE94.unk_0_0 == 1 || (gUnknown_203AE94.unk_1 < 32 && gUnknown_203AE0C[gUnknown_203AE94.unk_1])) + sub_8111AD8(); + else + { + gUnknown_203AE94.unk_0_6 = 2; + ScriptContext2_Enable(); + sub_81118F4(0); + } + } +} |