diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-03 16:21:34 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-03 16:21:34 -0400 |
commit | be7cda00a1f047fdf38ff88da9477e2c5dfc8cf4 (patch) | |
tree | a43118ce091363c8b6d6a9ea517655b06b4cc1e2 | |
parent | 8dcea40e585c6aa37a42aa570de9b37d78538756 (diff) |
through sub_81138F8
-rw-r--r-- | asm/quest_log.s | 249 | ||||
-rw-r--r-- | src/quest_log.c | 123 |
2 files changed, 111 insertions, 261 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s index a256be271..fe46a9da6 100644 --- a/asm/quest_log.s +++ b/asm/quest_log.s @@ -5,255 +5,6 @@ .text - thumb_func_start sub_8113748 -sub_8113748: @ 8113748 - push {lr} - bl sub_81136D4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08113770 - ldr r0, _08113764 @ =gUnknown_203ADFA - ldrb r0, [r0] - cmp r0, 0x2 - bne _08113768 - movs r0, 0x1 - b _08113772 - .align 2, 0 -_08113764: .4byte gUnknown_203ADFA -_08113768: - cmp r0, 0x1 - bne _08113770 - bl sub_8112364 -_08113770: - movs r0, 0 -_08113772: - pop {r1} - bx r1 - thumb_func_end sub_8113748 - - thumb_func_start sub_8113778 -sub_8113778: @ 8113778 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x24 - beq _081137CE - cmp r4, 0xB - beq _081137CE - ldr r0, _081137D4 @ =0x0000082c - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _081137AC - cmp r4, 0x3 - beq _081137CE - cmp r4, 0x1F - beq _081137CE - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_81137E4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _081137CE -_081137AC: - ldr r0, _081137D8 @ =0x00000844 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _081137DC - subs r0, r4, 0x4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x6 - bls _081137CE - cmp r4, 0x16 - beq _081137CE - cmp r4, 0x19 - beq _081137CE - cmp r4, 0x1A - bne _081137DC -_081137CE: - movs r0, 0x1 - b _081137DE - .align 2, 0 -_081137D4: .4byte 0x0000082c -_081137D8: .4byte 0x00000844 -_081137DC: - movs r0, 0 -_081137DE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8113778 - - thumb_func_start sub_81137E4 -sub_81137E4: @ 81137E4 - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x22 - bne _08113814 - ldr r2, _08113810 @ =gTrainers - ldrh r1, [r1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r1, [r0, 0x1] - cmp r1, 0x51 - beq _08113814 - cmp r1, 0x59 - beq _08113814 - cmp r1, 0x5A - beq _08113814 - cmp r1, 0x53 - beq _08113814 - movs r0, 0x1 - b _08113816 - .align 2, 0 -_08113810: .4byte gTrainers -_08113814: - movs r0, 0 -_08113816: - pop {r1} - bx r1 - thumb_func_end sub_81137E4 - - thumb_func_start sub_811381C -sub_811381C: @ 811381C - ldr r1, _08113824 @ =gUnknown_203B048 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_08113824: .4byte gUnknown_203B048 - thumb_func_end sub_811381C - - thumb_func_start sub_8113828 -sub_8113828: @ 8113828 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl sub_8113778 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0811384C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_81153A8 - lsls r0, 24 - cmp r0, 0 - bne _08113850 -_0811384C: - movs r0, 0 - b _0811388C -_08113850: - adds r0, r4, 0 - bl sub_8110AEC - adds r0, r4, 0 - bl sub_8113B94 - cmp r4, 0x1F - bne _08113874 - ldr r2, _0811386C @ =gUnknown_203AE04 - ldr r1, _08113870 @ =gUnknown_203AE08 - ldr r0, [r1] - str r0, [r2] - adds r2, r1, 0 - b _0811387C - .align 2, 0 -_0811386C: .4byte gUnknown_203AE04 -_08113870: .4byte gUnknown_203AE08 -_08113874: - ldr r1, _08113894 @ =gUnknown_203AE04 - movs r0, 0 - str r0, [r1] - ldr r2, _08113898 @ =gUnknown_203AE08 -_0811387C: - ldr r0, _0811389C @ =gUnknown_8456948 - lsls r1, r4, 2 - adds r1, r0 - ldr r0, [r2] - ldr r2, [r1] - adds r1, r5, 0 - bl _call_via_r2 -_0811388C: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08113894: .4byte gUnknown_203AE04 -_08113898: .4byte gUnknown_203AE08 -_0811389C: .4byte gUnknown_8456948 - thumb_func_end sub_8113828 - - thumb_func_start sub_81138A0 -sub_81138A0: @ 81138A0 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 16 - lsrs r0, 16 - adds r4, r0, 0 - subs r0, 0xC - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7 - bls _081138B8 - movs r0, 0 - b _081138F0 -_081138B8: - bl sub_81138F8 - ldr r1, _081138E0 @ =gUnknown_203B024 - strh r4, [r1] - adds r0, r4, 0 - subs r0, 0x10 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _081138EE - cmp r4, 0xC - beq _081138D4 - cmp r4, 0x12 - bne _081138E4 -_081138D4: - adds r0, r1, 0x4 - adds r1, r5, 0 - movs r2, 0xC - bl memcpy - b _081138EE - .align 2, 0 -_081138E0: .4byte gUnknown_203B024 -_081138E4: - adds r0, r1, 0x4 - adds r1, r5, 0 - movs r2, 0x18 - bl memcpy -_081138EE: - movs r0, 0x1 -_081138F0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81138A0 - - thumb_func_start sub_81138F8 -sub_81138F8: @ 81138F8 - push {lr} - ldr r0, _08113908 @ =gUnknown_203B024 - movs r1, 0 - movs r2, 0x20 - bl memset - pop {r0} - bx r0 - .align 2, 0 -_08113908: .4byte gUnknown_203B024 - thumb_func_end sub_81138F8 - thumb_func_start sub_811390C sub_811390C: @ 811390C push {r4,r5,lr} diff --git a/src/quest_log.c b/src/quest_log.c index 50998b0eb..9cdd17816 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -93,11 +93,13 @@ EWRAM_DATA u16 *gUnknown_203AE90 = NULL; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; EWRAM_DATA u16 gUnknown_203AF98 = 0; -EWRAM_DATA u8 gUnknown_203AF9A[64][2]; -EWRAM_DATA u16 gUnknown_203B01A; -EWRAM_DATA u16 gUnknown_203B01C; -EWRAM_DATA u16 gUnknown_203B01E; -EWRAM_DATA u8 gUnknown_203B020; +EWRAM_DATA u8 gUnknown_203AF9A[64][2] = {{0}}; +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 u16 gUnknown_203B044[2] = {0}; EWRAM_DATA u8 gUnknown_203B048 = 0; @@ -156,11 +158,12 @@ void sub_81134CC(struct Var4038Struct *); bool8 sub_8113508(struct Var4038Struct * ); void sub_8113524(struct Var4038Struct *); bool8 sub_81136D4(void); -bool8 sub_8113778(u16, void*); -void* sub_8113828(u16, void*); -bool8 sub_81138A0(u16, void*); -bool8 sub_8113954(u16, void*); -bool8 sub_8113A44(u16, void*); +bool8 sub_8113778(u16, u16 *); +bool8 sub_81137E4(u16, u16 *); +void * sub_8113828(u16, u16 *); +bool8 sub_81138A0(u16, u16 *); +bool8 sub_8113954(u16, u16 *); +bool8 sub_8113A44(u16, u16 *); void sub_8113B94(u16); void *sub_8113F14(void *, void *); void *sub_8113F80(void *, void *); @@ -2639,7 +2642,7 @@ void * (*const gUnknown_8456948[])(void *, void *) = { }; #ifdef NONMATCHING -void sub_8113550(u16 a0, void * a1) +void sub_8113550(u16 a0, u16 * a1) { void * r1; @@ -2726,7 +2729,7 @@ void sub_8113550(u16 a0, void * a1) } #else NAKED -void sub_8113550(u16 a0, void * a1) +void sub_8113550(u16 a0, u16 * a1) { asm_unified("\tpush {r4,r5,lr}\n" "\tadds r5, r1, 0\n" @@ -2926,3 +2929,99 @@ bool8 sub_81136D4(void) return FALSE; } + +bool8 sub_8113748(void) +{ + if (sub_81136D4() != TRUE) + return FALSE; + + if (gUnknown_203ADFA == 2) + return TRUE; + + if (gUnknown_203ADFA == 1) + sub_8112364(); + + return FALSE; +} + +bool8 sub_8113778(u16 a0, u16 * a1) +{ + if (a0 == 36 || a0 == 11) + return TRUE; + + if (!FlagGet(0x82C)) + { + if (a0 == 3 || a0 == 31 || sub_81137E4(a0, a1) == TRUE) + return TRUE; + } + + if (!FlagGet(0x844)) + { + if (a0 == 4 || a0 == 5 || a0 == 6 || a0 == 7 || a0 == 8 || a0 == 9 || a0 == 10 || a0 == 22 || a0 == 25 || a0 == 26) + return TRUE; + } + + return FALSE; +} + +bool8 sub_81137E4(u16 a0, u16 * a1) +{ + if (a0 == 34) + { + u8 trainerClass = gTrainers[*a1].trainerClass; + if ( trainerClass == 0x51 + || trainerClass == 0x59 + || trainerClass == 0x5A + || trainerClass == 0x53) + return FALSE; + return TRUE; + } + return FALSE; +} + +void sub_811381C(void) +{ + gUnknown_203B048 = 0; +} + +void * sub_8113828(u16 a0, u16 * a1) +{ + if (sub_8113778(a0, a1) == TRUE) + return NULL; + + if (sub_81153A8(a0, a1) == FALSE) + return NULL; + + sub_8110AEC(a0); + sub_8113B94(a0); + + if (a0 == 31) + gUnknown_203AE04 = gUnknown_203AE08; + else + gUnknown_203AE04 = NULL; + + return gUnknown_8456948[a0](gUnknown_203AE08, a1); +} + +bool8 sub_81138A0(u16 a0, u16 * a1) +{ + if (a0 < 12 || a0 > 19) + return FALSE; + + sub_81138F8(); + gUnknown_203B024[0] = a0; + + if (a0 < 16 || a0 > 17) + { + if (a0 == 12 || a0 == 18) + memcpy(gUnknown_203B024 + 2, a1, 12); + else + memcpy(gUnknown_203B024 + 2, a1, 24); + } + return TRUE; +} + +void sub_81138F8(void) +{ + memset(gUnknown_203B024, 0, sizeof(gUnknown_203B024)); +} |