diff options
-rw-r--r-- | asm/quest_log.s | 131 | ||||
-rw-r--r-- | src/quest_log.c | 70 | ||||
-rw-r--r-- | sym_ewram.txt | 72 |
3 files changed, 62 insertions, 211 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s index fe46a9da6..c85a496bc 100644 --- a/asm/quest_log.s +++ b/asm/quest_log.s @@ -5,137 +5,6 @@ .text - thumb_func_start sub_811390C -sub_811390C: @ 811390C - push {r4,r5,lr} - ldr r5, _08113944 @ =gUnknown_203B024 - ldrh r0, [r5] - cmp r0, 0 - beq _0811393C - ldr r1, _08113948 @ =gUnknown_203B04A - movs r0, 0 - strb r0, [r1] - ldrh r0, [r5] - bl sub_8110AEC - ldr r0, _0811394C @ =gUnknown_8456948 - ldrh r2, [r5] - lsls r2, 2 - adds r2, r0 - ldr r4, _08113950 @ =gUnknown_203AE08 - ldr r0, [r4] - adds r1, r5, 0x4 - ldr r2, [r2] - bl _call_via_r2 - str r0, [r4] - bl sub_81138F8 -_0811393C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08113944: .4byte gUnknown_203B024 -_08113948: .4byte gUnknown_203B04A -_0811394C: .4byte gUnknown_8456948 -_08113950: .4byte gUnknown_203AE08 - thumb_func_end sub_811390C - - thumb_func_start sub_8113954 -sub_8113954: @ 8113954 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x22 - beq _08113970 - cmp r4, 0x1E - beq _08113970 - cmp r4, 0x20 - beq _08113970 - cmp r4, 0x21 - beq _08113970 - movs r0, 0 - b _081139A8 -_08113970: - bl sub_81138F8 - ldr r0, _081139B0 @ =gUnknown_3005E88 - ldrb r0, [r0] - cmp r0, 0 - bne _08113998 - ldr r0, _081139B4 @ =0x0000082c - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _08113998 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_81137E4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081139A6 -_08113998: - ldr r0, _081139B8 @ =gUnknown_203B024 - strh r4, [r0] - adds r0, 0x4 - adds r1, r5, 0 - movs r2, 0x8 - bl memcpy -_081139A6: - movs r0, 0x1 -_081139A8: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_081139B0: .4byte gUnknown_3005E88 -_081139B4: .4byte 0x0000082c -_081139B8: .4byte gUnknown_203B024 - thumb_func_end sub_8113954 - - thumb_func_start sub_81139BC -sub_81139BC: @ 81139BC - push {r4,r5,lr} - ldr r5, _08113A08 @ =gUnknown_203B024 - ldrh r0, [r5] - cmp r0, 0 - beq _08113A02 - ldr r0, _08113A0C @ =gUnknown_3005E88 - ldrb r1, [r0] - cmp r1, 0 - bne _081139D8 - ldr r0, _08113A10 @ =gUnknown_203B04A - strb r1, [r0] - ldrh r0, [r5] - bl sub_8110AEC -_081139D8: - ldrh r0, [r5] - bl sub_8113B94 - ldr r0, _08113A14 @ =gUnknown_8456948 - ldrh r2, [r5] - lsls r2, 2 - adds r2, r0 - ldr r4, _08113A18 @ =gUnknown_203AE08 - ldr r0, [r4] - adds r1, r5, 0x4 - ldr r2, [r2] - bl _call_via_r2 - str r0, [r4] - movs r0, 0x1 - bl sub_8113A1C - bl sub_81138F8 - bl sub_811231C -_08113A02: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08113A08: .4byte gUnknown_203B024 -_08113A0C: .4byte gUnknown_3005E88 -_08113A10: .4byte gUnknown_203B04A -_08113A14: .4byte gUnknown_8456948 -_08113A18: .4byte gUnknown_203AE08 - thumb_func_end sub_81139BC - thumb_func_start sub_8113A1C sub_8113A1C: @ 8113A1C push {r4,lr} diff --git a/src/quest_log.c b/src/quest_log.c index 9cdd17816..98bb0b3b1 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -72,6 +72,12 @@ struct UnkStruct_300201C u16 unk_2; }; +struct UnkStruct_203B024 +{ + u16 unk_00; + u32 unk_04[7]; +}; + u8 gUnknown_3005E88; u16 gUnknown_3005E8C; struct UnkStruct_3005E90 gUnknown_3005E90; @@ -84,11 +90,11 @@ EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADF9 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA u16 gUnknown_203ADFC = 0; -EWRAM_DATA u8 gUnknown_203ADFE[3]; +EWRAM_DATA u8 gUnknown_203ADFE[3] = {0}; EWRAM_DATA void * gUnknown_203AE04 = NULL; EWRAM_DATA u16 * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; -EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0; +EWRAM_DATA void (* gUnknown_203AE8C)(void) = NULL; EWRAM_DATA u16 *gUnknown_203AE90 = NULL; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; @@ -98,11 +104,12 @@ EWRAM_DATA u16 gUnknown_203B01A = 0; EWRAM_DATA u16 gUnknown_203B01C = 0; EWRAM_DATA u16 gUnknown_203B01E = 0; EWRAM_DATA u8 gUnknown_203B020 = 0; - -EWRAM_DATA ALIGNED(2) u16 gUnknown_203B024[16] = {0}; - +EWRAM_DATA struct UnkStruct_203B024 gUnknown_203B024 = {0}; EWRAM_DATA u16 gUnknown_203B044[2] = {0}; EWRAM_DATA u8 gUnknown_203B048 = 0; +EWRAM_DATA u8 gUnknown_203B049 = 0; +EWRAM_DATA u8 gUnknown_203B04A = 0; +EWRAM_DATA u8 gUnknown_203B04B = 0; void sub_8110A00(void); void sub_8110A3C(void); @@ -3009,19 +3016,64 @@ bool8 sub_81138A0(u16 a0, u16 * a1) return FALSE; sub_81138F8(); - gUnknown_203B024[0] = a0; + gUnknown_203B024.unk_00 = a0; if (a0 < 16 || a0 > 17) { if (a0 == 12 || a0 == 18) - memcpy(gUnknown_203B024 + 2, a1, 12); + memcpy(gUnknown_203B024.unk_04, a1, 12); else - memcpy(gUnknown_203B024 + 2, a1, 24); + memcpy(gUnknown_203B024.unk_04, a1, 24); } return TRUE; } void sub_81138F8(void) { - memset(gUnknown_203B024, 0, sizeof(gUnknown_203B024)); + gUnknown_203B024 = (struct UnkStruct_203B024){}; +} + +void sub_811390C(void) +{ + if (gUnknown_203B024.unk_00 != 0) + { + void * resp; + gUnknown_203B04A = 0; + sub_8110AEC(gUnknown_203B024.unk_00); + resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, gUnknown_203B024.unk_04); + gUnknown_203AE08 = resp; + sub_81138F8(); + } +} + +bool8 sub_8113954(u16 a0, u16 * a1) +{ + if (a0 != 34 && a0 != 30 && a0 != 32 && a0 != 33) + return FALSE; + sub_81138F8(); + if (gUnknown_3005E88 || FlagGet(0x82C) || sub_81137E4(a0, a1) != TRUE) + { + gUnknown_203B024.unk_00 = a0; + memcpy(gUnknown_203B024.unk_04, a1, 8); + } + return TRUE; +} + +void sub_81139BC(void) +{ + if (gUnknown_203B024.unk_00 != 0) + { + void * resp; + if (gUnknown_3005E88 == 0) + { + gUnknown_203B04A = 0; + sub_8110AEC(gUnknown_203B024.unk_00); + } + sub_8113B94(gUnknown_203B024.unk_00); + resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, gUnknown_203B024.unk_04); + gUnknown_203AE08 = resp; + sub_8113A1C(1); + sub_81138F8(); + sub_811231C(); + } } diff --git a/sym_ewram.txt b/sym_ewram.txt index 7aa860fdd..2e0123d6f 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1457,77 +1457,7 @@ gUnknown_203ADF3: @ 203ADF3 gUnknown_203ADF4: @ 203ADF4 .space 0x4 -gUnknown_203ADF8: @ 203ADF8 - .space 0x1 - -gUnknown_203ADF9: @ 203ADF9 - .space 0x1 - -gUnknown_203ADFA: @ 203ADFA - .space 0x2 - -gUnknown_203ADFC: @ 203ADFC - .space 0x2 - -gUnknown_203ADFE: @ 203ADFE - .space 0x6 - -gUnknown_203AE04: @ 203AE04 - .space 0x4 - -gUnknown_203AE08: @ 203AE08 - .space 0x4 - -gUnknown_203AE0C: @ 203AE0C - .space 0x80 - -gUnknown_203AE8C: @ 203AE8C - .space 0x4 - -gUnknown_203AE90: @ 203AE90 - .space 0x4 - -gUnknown_203AE94: @ 203AE94 - .space 0x4 - -gUnknown_203AE98: @ 203AE98 - .space 0x100 - -gUnknown_203AF98: @ 203AF98 - .space 0x2 - -gUnknown_203AF9A: @ 203AF9A - .space 0x80 - -gUnknown_203B01A: @ 203B01A - .space 0x2 - -gUnknown_203B01C: @ 203B01C - .space 0x2 - -gUnknown_203B01E: @ 203B01E - .space 0x2 - -gUnknown_203B020: @ 203B020 - .space 0x4 - -gUnknown_203B024: @ 203B024 - .space 0x20 - -gUnknown_203B044: @ 203B044 - .space 0x4 - -gUnknown_203B048: @ 203B048 - .space 0x1 - -gUnknown_203B049: @ 203B049 - .space 0x1 - -gUnknown_203B04A: @ 203B04A - .space 0x1 - -gUnknown_203B04B: @ 203B04B - .space 0x1 + .include "src/quest_log.o" gUnknown_203B04C: @ 203B04C .space 0xC |