diff options
-rw-r--r-- | asm/event_data.s | 18 | ||||
-rw-r--r-- | asm/field_control_avatar.s | 4 | ||||
-rw-r--r-- | asm/pokemon_size_record.s | 8 | ||||
-rw-r--r-- | asm/quest_log.s | 245 | ||||
-rw-r--r-- | asm/scrcmd.s | 26 | ||||
-rw-r--r-- | data/quest_log.s | 6 | ||||
-rw-r--r-- | include/event_data.h | 2 | ||||
-rw-r--r-- | src/menews_jisan.c | 2 | ||||
-rw-r--r-- | src/quest_log.c | 109 |
9 files changed, 140 insertions, 280 deletions
diff --git a/asm/event_data.s b/asm/event_data.s index 1875449fa..b6a12e8b2 100644 --- a/asm/event_data.s +++ b/asm/event_data.s @@ -78,7 +78,7 @@ _0806E164: .4byte 0x00000842 sub_806E168: @ 806E168 push {lr} ldr r0, _0806E184 @ =0x0000403c - bl sub_806E454 + bl GetVarPointer ldr r1, _0806E188 @ =gSaveBlock2Ptr ldr r2, [r1] movs r1, 0 @@ -98,7 +98,7 @@ _0806E18C: .4byte 0x00000838 sub_806E190: @ 806E190 push {lr} ldr r0, _0806E1B0 @ =0x0000403c - bl sub_806E454 + bl GetVarPointer ldr r1, _0806E1B4 @ =gSaveBlock2Ptr ldr r2, [r1] movs r1, 0xDA @@ -154,7 +154,7 @@ _0806E1FE: sub_806E204: @ 806E204 push {lr} ldr r0, _0806E224 @ =0x0000404e - bl sub_806E454 + bl GetVarPointer ldr r1, _0806E228 @ =gSaveBlock2Ptr ldr r2, [r1] movs r1, 0 @@ -174,7 +174,7 @@ _0806E228: .4byte gSaveBlock2Ptr sub_806E22C: @ 806E22C push {lr} ldr r0, _0806E250 @ =0x0000404e - bl sub_806E454 + bl GetVarPointer ldr r1, _0806E254 @ =gSaveBlock2Ptr ldr r2, [r1] movs r1, 0xB9 @@ -419,8 +419,8 @@ _0806E44E: bx r1 thumb_func_end CanResetRTC - thumb_func_start sub_806E454 -sub_806E454: @ 806E454 + thumb_func_start GetVarPointer +GetVarPointer: @ 806E454 push {r4-r6,lr} lsls r0, 16 lsrs r4, r0, 16 @@ -522,7 +522,7 @@ _0806E518: .align 2, 0 _0806E520: .4byte gUnknown_815FD0C _0806E524: .4byte 0xffff8000 - thumb_func_end sub_806E454 + thumb_func_end GetVarPointer thumb_func_start sub_806E528 sub_806E528: @ 806E528 @@ -569,7 +569,7 @@ VarGet: @ 806E568 lsls r0, 16 lsrs r4, r0, 16 adds r0, r4, 0 - bl sub_806E454 + bl GetVarPointer cmp r0, 0 beq _0806E57C ldrh r0, [r0] @@ -589,7 +589,7 @@ VarSet: @ 806E584 lsrs r0, 16 lsls r1, 16 lsrs r4, r1, 16 - bl sub_806E454 + bl GetVarPointer cmp r0, 0 beq _0806E59C strh r4, [r0] diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 41bcd05c1..237472c45 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -1872,7 +1872,7 @@ _0806D748: .4byte 0x00004021 AdjustFriendship_step: @ 806D74C push {r4,r5,lr} ldr r0, _0806D780 @ =0x00004021 - bl sub_806E454 + bl GetVarPointer ldrh r1, [r0] adds r1, 0x1 strh r1, [r0] @@ -1921,7 +1921,7 @@ overworld_poison_step: @ 806D79C cmp r0, 0x9 beq _0806D7E0 ldr r0, _0806D7DC @ =0x00004022 - bl sub_806E454 + bl GetVarPointer adds r4, r0, 0 ldrh r0, [r4] adds r0, 0x1 diff --git a/asm/pokemon_size_record.s b/asm/pokemon_size_record.s index 50ddd41a4..56a5d54f5 100644 --- a/asm/pokemon_size_record.s +++ b/asm/pokemon_size_record.s @@ -327,7 +327,7 @@ _080A0914: .4byte 0x0000403d sub_80A0918: @ 80A0918 push {lr} ldr r0, _080A092C @ =0x0000403d - bl sub_806E454 + bl GetVarPointer adds r1, r0, 0 movs r0, 0xD6 bl sub_80A08CC @@ -341,7 +341,7 @@ _080A092C: .4byte 0x0000403d sub_80A0930: @ 80A0930 push {r4,lr} ldr r0, _080A0950 @ =0x0000403d - bl sub_806E454 + bl GetVarPointer adds r1, r0, 0 ldr r4, _080A0954 @ =gUnknown_20370D0 movs r0, 0xD6 @@ -373,7 +373,7 @@ _080A0968: .4byte 0x00004040 sub_80A096C: @ 80A096C push {lr} ldr r0, _080A0980 @ =0x00004040 - bl sub_806E454 + bl GetVarPointer adds r1, r0, 0 movs r0, 0x81 bl sub_80A08CC @@ -387,7 +387,7 @@ _080A0980: .4byte 0x00004040 sub_80A0984: @ 80A0984 push {r4,lr} ldr r0, _080A09A4 @ =0x00004040 - bl sub_806E454 + bl GetVarPointer adds r1, r0, 0 ldr r4, _080A09A8 @ =gUnknown_20370D0 movs r0, 0x81 diff --git a/asm/quest_log.s b/asm/quest_log.s index 5e6e71eb4..fa9018ce5 100644 --- a/asm/quest_log.s +++ b/asm/quest_log.s @@ -5,239 +5,6 @@ .text - thumb_func_start sub_8112FD0 -sub_8112FD0: @ 8112FD0 - push {lr} - ldr r0, _08112FE0 @ =gUnknown_203B020 - ldrb r0, [r0] - bl sub_8112F18 - pop {r0} - bx r0 - .align 2, 0 -_08112FE0: .4byte gUnknown_203B020 - thumb_func_end sub_8112FD0 - - thumb_func_start sub_8112FE4 -sub_8112FE4: @ 8112FE4 - push {lr} - sub sp, 0x14 - adds r2, r0, 0 - ldr r0, _08113010 @ =gUnknown_203B020 - ldrb r0, [r0] - movs r1, 0x1 - str r1, [sp] - str r1, [sp, 0x4] - ldr r1, _08113014 @ =gUnknown_8456930 - str r1, [sp, 0x8] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0x5 - bl AddTextPrinterParametrized2 - add sp, 0x14 - pop {r0} - bx r0 - .align 2, 0 -_08113010: .4byte gUnknown_203B020 -_08113014: .4byte gUnknown_8456930 - thumb_func_end sub_8112FE4 - - thumb_func_start sub_8113018 -sub_8113018: @ 8113018 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - bl sub_8112FD0 - adds r0, r4, 0 - bl sub_8112FE4 - cmp r5, 0 - beq _08113038 - ldr r0, _08113040 @ =gUnknown_203B020 - ldrb r0, [r0] - adds r1, r5, 0 - bl CopyWindowToVram -_08113038: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08113040: .4byte gUnknown_203B020 - thumb_func_end sub_8113018 - - thumb_func_start sub_8113044 -sub_8113044: @ 8113044 - push {lr} - ldr r0, _0811305C @ =0x00004038 - movs r1, 0 - bl VarSet - ldr r0, _08113060 @ =0x00004039 - movs r1, 0 - bl VarSet - pop {r0} - bx r0 - .align 2, 0 -_0811305C: .4byte 0x00004038 -_08113060: .4byte 0x00004039 - thumb_func_end sub_8113044 - - thumb_func_start sub_8113064 -sub_8113064: @ 8113064 - push {lr} - ldr r0, _08113074 @ =0x00004038 - bl sub_806E454 - bl sub_8113078 - pop {r0} - bx r0 - .align 2, 0 -_08113074: .4byte 0x00004038 - thumb_func_end sub_8113064 - - thumb_func_start sub_8113078 -sub_8113078: @ 8113078 - push {r4,lr} - adds r4, r0, 0 - bl sub_8113508 - lsls r0, 24 - cmp r0, 0 - beq _08113098 - adds r0, r4, 0 - bl sub_81132E0 - ldr r0, _081130A0 @ =0x00004039 - ldr r1, _081130A4 @ =gSaveBlock2Ptr - ldr r1, [r1] - ldrh r1, [r1, 0xE] - bl VarSet -_08113098: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081130A0: .4byte 0x00004039 -_081130A4: .4byte gSaveBlock2Ptr - thumb_func_end sub_8113078 - - thumb_func_start sub_81130A8 -sub_81130A8: @ 81130A8 - push {lr} - ldr r0, _081130B8 @ =0x00004038 - bl sub_806E454 - bl sub_81130BC - pop {r0} - bx r0 - .align 2, 0 -_081130B8: .4byte 0x00004038 - thumb_func_end sub_81130A8 - - thumb_func_start sub_81130BC -sub_81130BC: @ 81130BC - push {r4,lr} - adds r4, r0, 0 - ldrb r1, [r4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08113102 - adds r0, r4, 0 - bl sub_8113524 - adds r0, r4, 0 - bl sub_8113390 - ldr r0, _08113108 @ =0x00004039 - ldr r1, _0811310C @ =gSaveBlock2Ptr - ldr r1, [r1] - ldrh r1, [r1, 0xE] - bl VarSet - movs r0, 0x6C - bl FlagClear - movs r0, 0x6D - bl FlagClear - movs r0, 0x6E - bl FlagClear - movs r0, 0x6F - bl FlagClear - ldr r0, _08113110 @ =0x00004073 - movs r1, 0x1 - bl VarSet -_08113102: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08113108: .4byte 0x00004039 -_0811310C: .4byte gSaveBlock2Ptr -_08113110: .4byte 0x00004073 - thumb_func_end sub_81130BC - - thumb_func_start sub_8113114 -sub_8113114: @ 8113114 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _0811315C @ =0x00004073 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bne _08113188 - ldr r0, [r4] - lsls r2, r0, 25 - lsrs r1, r2, 25 - ldr r0, _08113160 @ =gUnknown_8456934 - adds r0, r5, r0 - ldrb r0, [r0] - adds r1, r0 - cmp r1, 0x13 - ble _08113174 - adds r0, r4, 0 - bl sub_81132A0 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _08113164 - adds r0, r4, 0 - bl sub_8113194 - ldrb r1, [r4] - movs r0, 0x80 - negs r0, r0 - ands r0, r1 - b _08113186 - .align 2, 0 -_0811315C: .4byte 0x00004073 -_08113160: .4byte gUnknown_8456934 -_08113164: - ldrb r0, [r4] - movs r1, 0x80 - negs r1, r1 - ands r1, r0 - movs r0, 0x14 - orrs r1, r0 - strb r1, [r4] - b _08113188 -_08113174: - lsrs r1, r2, 25 - adds r1, r0 - movs r0, 0x7F - ands r1, r0 - ldrb r2, [r4] - movs r0, 0x80 - negs r0, r0 - ands r0, r2 - orrs r0, r1 -_08113186: - strb r0, [r4] -_08113188: - ldr r0, [r4] - lsls r0, 25 - lsrs r0, 25 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8113114 - thumb_func_start sub_8113194 sub_8113194: @ 8113194 push {r4-r7,lr} @@ -377,7 +144,7 @@ _08113284: .4byte gUnknown_8456940 sub_8113288: @ 8113288 push {lr} ldr r0, _0811329C @ =0x00004038 - bl sub_806E454 + bl GetVarPointer bl sub_81132A0 lsls r0, 16 lsrs r0, 16 @@ -419,7 +186,7 @@ _081132BA: sub_81132CC: @ 81132CC push {lr} ldr r0, _081132DC @ =0x00004038 - bl sub_806E454 + bl GetVarPointer bl sub_81132E0 pop {r0} bx r0 @@ -495,7 +262,7 @@ _0811335C: sub_8113364: @ 8113364 push {lr} ldr r0, _08113378 @ =0x00004038 - bl sub_806E454 + bl GetVarPointer bl sub_811337C lsls r0, 16 lsrs r0, 16 @@ -674,7 +441,7 @@ _081134B2: sub_81134B8: @ 81134B8 push {lr} ldr r0, _081134C8 @ =0x00004038 - bl sub_806E454 + bl GetVarPointer bl sub_81134CC pop {r0} bx r0 @@ -725,7 +492,7 @@ sub_8113508: @ 8113508 sub_8113510: @ 8113510 push {lr} ldr r0, _08113520 @ =0x00004038 - bl sub_806E454 + bl GetVarPointer bl sub_8113524 pop {r0} bx r0 @@ -746,7 +513,7 @@ sub_8113524: @ 8113524 sub_8113530: @ 8113530 push {lr} ldr r0, _08113548 @ =0x00004038 - bl sub_806E454 + bl GetVarPointer ldr r1, _0811354C @ =gUnknown_20370C0 ldrb r1, [r1] bl sub_8113114 diff --git a/asm/scrcmd.s b/asm/scrcmd.s index 733860772..85fbd6162 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -79,7 +79,7 @@ sub_8069F3C: @ 8069F3C bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer adds r5, r0, 0 adds r0, r4, 0 bl ScriptReadHalfword @@ -692,7 +692,7 @@ ScrCmd_setvar: @ 806A390 bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer adds r4, r0, 0 adds r0, r5, 0 bl ScriptReadHalfword @@ -710,13 +710,13 @@ ScrCmd_copyvar: @ 806A3B4 bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer adds r5, r0, 0 adds r0, r4, 0 bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer ldrh r0, [r0] strh r0, [r5] movs r0, 0 @@ -732,7 +732,7 @@ ScrCmd_setorcopyvar: @ 806A3E0 bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer adds r5, r0, 0 adds r0, r4, 0 bl ScriptReadHalfword @@ -909,7 +909,7 @@ ScrCmd_compare_var_to_value: @ 806A520 bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer ldrh r5, [r0] adds r0, r4, 0 bl ScriptReadHalfword @@ -932,13 +932,13 @@ ScrCmd_compare_var_to_var: @ 806A550 bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer adds r5, r0, 0 adds r0, r4, 0 bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer ldrh r2, [r5] ldrh r1, [r0] adds r0, r2, 0 @@ -957,7 +957,7 @@ ScrCmd_addvar: @ 806A584 bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer adds r4, r0, 0 adds r0, r5, 0 bl ScriptReadHalfword @@ -977,7 +977,7 @@ ScrCmd_subvar: @ 806A5AC bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer adds r5, r0, 0 adds r0, r4, 0 bl ScriptReadHalfword @@ -2319,13 +2319,13 @@ ScrCmd_getplayerxy: @ 806B010 bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer adds r5, r0, 0 adds r0, r4, 0 bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer ldr r2, _0806B048 @ =gSaveBlock1Ptr ldr r1, [r2] ldrh r1, [r1] @@ -5428,7 +5428,7 @@ ScrCmd_checkcoins: @ 806C72C bl ScriptReadHalfword lsls r0, 16 lsrs r0, 16 - bl sub_806E454 + bl GetVarPointer adds r4, r0, 0 bl sub_80D0554 strh r0, [r4] diff --git a/data/quest_log.s b/data/quest_log.s index a68d924a7..4cbfdbd28 100644 --- a/data/quest_log.s +++ b/data/quest_log.s @@ -1,12 +1,6 @@ .section .rodata .align 2 -gUnknown_8456930:: @ 8456930 - .incbin "baserom.gba", 0x456930, 0x4 - -gUnknown_8456934:: @ 8456934 - .incbin "baserom.gba", 0x456934, 0x4 - gUnknown_8456938:: @ 8456938 .incbin "baserom.gba", 0x456938, 0x8 diff --git a/include/event_data.h b/include/event_data.h index 77bc41603..555887b6c 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -29,7 +29,7 @@ u8 *GetFlagPointer(u16 id); u8 FlagSet(u16 id); u8 FlagClear(u16 id); bool8 FlagGet(u16 id); -u16 * sub_806E454(u16 id); +u16 * GetVarPointer(u16 id); bool32 sub_806E2BC(void); void sub_806E6FC(void); diff --git a/src/menews_jisan.c b/src/menews_jisan.c index 7dfcee939..31540c411 100644 --- a/src/menews_jisan.c +++ b/src/menews_jisan.c @@ -94,7 +94,7 @@ void sub_8146C88(void) void sub_8146CA4(void) { - u16 *r4 = sub_806E454(0x4028); + u16 *r4 = GetVarPointer(0x4028); struct MysteryEventStruct *r2 = sub_8143D94(); struct MysteryEventStruct r0 = *r2; diff --git a/src/quest_log.c b/src/quest_log.c index cf24cf462..36de09ca7 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -32,6 +32,12 @@ u8 gUnknown_3005E88; +struct Var4038Struct +{ + u8 unk_0_0:7; + u8 unk_0_7:1; +}; + struct UnkStruct_203AE94 { u8 unk_0_0:4; @@ -130,6 +136,14 @@ void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); u8 sub_8112CAC(void); bool8 sub_8112CEC(void); bool8 sub_8112D1C(void); +void sub_8113078(struct Var4038Struct *); +void sub_81130BC(struct Var4038Struct *); +u16 sub_81132A0(struct Var4038Struct *); +void sub_8113194(struct Var4038Struct *); +void sub_81132E0(struct Var4038Struct *); +bool8 sub_8113508(void); +void sub_8113524(struct Var4038Struct *); +void sub_8113390(struct Var4038Struct *); void sub_8113A1C(u8); void sub_811381C(void); void sub_81138F8(void); @@ -164,21 +178,21 @@ const u8 gUnknown_8456698[] = {17, 10, 3}; extern const struct UnkStruct_203AE98 gUnknown_845669C; -void sub_8110840(void * a0) +void sub_8110840(void * oldPointer) { - size_t r1 = (void *)gSaveBlock1Ptr - a0; + ptrdiff_t offset = (void *)gSaveBlock1Ptr - oldPointer; if (gUnknown_203AE04) - gUnknown_203AE04 += r1; + gUnknown_203AE04 += offset; if (gUnknown_203ADFA != 0) { if (gUnknown_203AE08) - gUnknown_203AE08 = (void *)gUnknown_203AE08 + r1; + gUnknown_203AE08 = (void *)gUnknown_203AE08 + offset; if (gUnknown_203ADFA == 2) { int r3; for (r3 = 0; r3 < 0x20; r3++) if (gUnknown_203AE0C[r3]) - gUnknown_203AE0C[r3] += r1; + gUnknown_203AE0C[r3] += offset; } } } @@ -2205,3 +2219,88 @@ void sub_8112F18(u8 a0) "_08112FCC: .4byte 0x04000008"); } #endif + +void sub_8112FD0(void) +{ + sub_8112F18(gUnknown_203B020); +} + +const struct TextColor gUnknown_8456930 = { + 0, 10, 2 +}; + +void sub_8112FE4(const u8 * a0) +{ + AddTextPrinterParametrized2(gUnknown_203B020, 0x02, 2, 5, 1, 1, &gUnknown_8456930, -1, a0); +} + +void sub_8113018(const u8 * a0, u8 a1) +{ + sub_8112FD0(); + sub_8112FE4(a0); + if (a1) + CopyWindowToVram(gUnknown_203B020, a1); +} + +void sub_8113044(void) +{ + VarSet(VAR_0x4038, 0); + VarSet(VAR_0x4039, 0); +} + +void sub_8113064(void) +{ + sub_8113078((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); +} + +void sub_8113078(struct Var4038Struct * varPtr) +{ + if (sub_8113508()) + { + sub_81132E0(varPtr); + VarSet(VAR_0x4039, gSaveBlock2Ptr->playTimeHours); + } +} + +void sub_81130A8(void) +{ + sub_81130BC((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); +} + +void sub_81130BC(struct Var4038Struct * varPtr) +{ + if (!varPtr->unk_0_7) + { + sub_8113524(varPtr); + sub_8113390(varPtr); + VarSet(VAR_0x4039, gSaveBlock2Ptr->playTimeHours); + FlagClear(FLAG_0x06C); + FlagClear(FLAG_0x06D); + FlagClear(FLAG_0x06E); + FlagClear(FLAG_0x06F); + VarSet(VAR_0x4073, 1); + } +} + +ALIGNED(4) const u8 gUnknown_8456934[] = {2, 1, 2, 1}; + +u8 sub_8113114(struct Var4038Struct * a0, u8 a1) +{ + if (VarGet(VAR_0x4073) == 2) + { + if (a0->unk_0_0 + gUnknown_8456934[a1] >= 20) + { + if (sub_81132A0(a0) < 3) + { + sub_8113194(a0); + a0->unk_0_0 = 0; + } + else + a0->unk_0_0 = 20; + } + else + a0->unk_0_0 += gUnknown_8456934[a1]; + } + + return a0->unk_0_0; +} |