diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-10-16 17:32:29 -0700 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-10-16 17:32:29 -0700 |
commit | d50948133d3ad740ee4c719bc84a7991abd53a34 (patch) | |
tree | 04a9a202498c6f3c39b113b9a99a97c0fdc5d03a | |
parent | 9dd047d9db67586529cbde6a32176413af659c1d (diff) |
through sub_81132E0
-rw-r--r-- | asm/quest_log.s | 118 | ||||
-rw-r--r-- | src/quest_log.c | 53 |
2 files changed, 52 insertions, 119 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s index 2f032248a..53672cf3f 100644 --- a/asm/quest_log.s +++ b/asm/quest_log.s @@ -5,124 +5,6 @@ .text - thumb_func_start sub_8113288 -sub_8113288: @ 8113288 - push {lr} - ldr r0, _0811329C @ =0x00004038 - bl GetVarPointer - bl sub_81132A0 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_0811329C: .4byte 0x00004038 - thumb_func_end sub_8113288 - - thumb_func_start sub_81132A0 -sub_81132A0: @ 81132A0 - push {r4,lr} - movs r2, 0 - movs r1, 0 - ldrb r3, [r0, 0x1] - movs r4, 0x1 -_081132AA: - adds r0, r3, 0 - asrs r0, r1 - ands r0, r4 - cmp r0, 0 - beq _081132BA - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_081132BA: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x7 - bls _081132AA - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81132A0 - - thumb_func_start sub_81132CC -sub_81132CC: @ 81132CC - push {lr} - ldr r0, _081132DC @ =0x00004038 - bl GetVarPointer - bl sub_81132E0 - pop {r0} - bx r0 - .align 2, 0 -_081132DC: .4byte 0x00004038 - thumb_func_end sub_81132CC - - thumb_func_start sub_81132E0 -sub_81132E0: @ 81132E0 - push {r4-r6,lr} - adds r4, r0, 0 - movs r5, 0 - ldr r2, _081132F8 @ =gSaveBlock2Ptr - ldr r0, [r2] - ldrh r1, [r0, 0xE] - ldr r0, _081132FC @ =0x000003e6 - cmp r1, r0 - bhi _0811335C - adds r6, r2, 0 - b _08113338 - .align 2, 0 -_081132F8: .4byte gSaveBlock2Ptr -_081132FC: .4byte 0x000003e6 -_08113300: - ldr r0, _08113354 @ =0x00004039 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r1, [r6] - ldrh r1, [r1, 0xE] - subs r1, r0 - cmp r1, 0xB - ble _0811335C - adds r0, r4, 0 - bl sub_81131FC - ldr r0, _08113354 @ =0x00004039 - bl VarGet - adds r1, r0, 0 - lsls r1, 16 - movs r0, 0xC0 - lsls r0, 12 - adds r1, r0 - lsrs r1, 16 - ldr r0, _08113354 @ =0x00004039 - bl VarSet - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_08113338: - adds r0, r4, 0 - bl sub_81132A0 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bhi _08113358 - ldr r0, [r6] - ldrh r1, [r0, 0xE] - ldr r0, _08113354 @ =0x00004039 - bl VarSet - b _0811335C - .align 2, 0 -_08113354: .4byte 0x00004039 -_08113358: - cmp r5, 0x8 - bne _08113300 -_0811335C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81132E0 - thumb_func_start sub_8113364 sub_8113364: @ 8113364 push {lr} diff --git a/src/quest_log.c b/src/quest_log.c index 51ffaac11..7d2b2511d 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -140,8 +140,8 @@ bool8 sub_8112CEC(void); bool8 sub_8112D1C(void); void sub_8113078(struct Var4038Struct *); void sub_81130BC(struct Var4038Struct *); -u16 sub_81132A0(struct Var4038Struct *); u8 sub_8113194(struct Var4038Struct *); +u16 sub_81132A0(struct Var4038Struct *); void sub_81132E0(struct Var4038Struct *); bool8 sub_8113508(void); void sub_8113524(struct Var4038Struct *); @@ -2360,3 +2360,54 @@ u8 sub_81131FC(struct Var4038Struct * a0) a0->unk_1 ^= 1 << gUnknown_8456940[retval]; return gUnknown_8456940[retval]; } + +u16 sub_8113288(void) +{ + return sub_81132A0((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); +} + +u16 sub_81132A0(struct Var4038Struct * a0) +{ + u8 count = 0; + u8 i; + + for (i = 0; i < 8; i++) + { + if ((a0->unk_1 >> i) & 1) + count++; + } + + return count; +} + +void sub_81132CC(void) +{ + sub_81132E0((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); +} + +void sub_81132E0(struct Var4038Struct * a0) +{ + u8 i = 0; + u16 var_4039; + + if (gSaveBlock2Ptr->playTimeHours < 999) + { + while (1) + { + if (sub_81132A0(a0) < 5) + { + VarSet(VAR_0x4039, gSaveBlock2Ptr->playTimeHours); + break; + } + if (i == 8) + break; + var_4039 = VarGet(VAR_0x4039); + if (gSaveBlock2Ptr->playTimeHours - var_4039 < 12) + break; + sub_81131FC(a0); + var_4039 = VarGet(VAR_0x4039); + VarSet(VAR_0x4039, var_4039 + 12); + i++; + } + } +} |