diff options
-rw-r--r-- | asm/quest_log.s | 179 | ||||
-rw-r--r-- | include/event_data.h | 1 | ||||
-rw-r--r-- | include/event_scripts.h | 3 | ||||
-rw-r--r-- | include/global.h | 4 | ||||
-rw-r--r-- | src/quest_log.c | 104 |
5 files changed, 106 insertions, 185 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s index 53672cf3f..0ce955c8d 100644 --- a/asm/quest_log.s +++ b/asm/quest_log.s @@ -5,185 +5,6 @@ .text - thumb_func_start sub_8113364 -sub_8113364: @ 8113364 - push {lr} - ldr r0, _08113378 @ =0x00004038 - bl GetVarPointer - bl sub_811337C - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_08113378: .4byte 0x00004038 - thumb_func_end sub_8113364 - - thumb_func_start sub_811337C -sub_811337C: @ 811337C - ldrb r0, [r0, 0x1] - ldr r1, _0811338C @ =gUnknown_20370C0 - ldrh r1, [r1] - asrs r0, r1 - movs r1, 0x1 - ands r0, r1 - bx lr - .align 2, 0 -_0811338C: .4byte gUnknown_20370C0 - thumb_func_end sub_811337C - - thumb_func_start sub_8113390 -sub_8113390: @ 8113390 - ldrb r2, [r0, 0x1] - movs r1, 0x1 - orrs r1, r2 - movs r2, 0x2 - orrs r1, r2 - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x1] - bx lr - thumb_func_end sub_8113390 - - thumb_func_start sub_81133A4 -sub_81133A4: @ 81133A4 - push {lr} - movs r3, 0 - movs r2, 0 - ldr r0, _081133BC @ =gUnknown_20370C0 - ldrh r0, [r0] - cmp r0, 0x7 - bhi _081133F8 - lsls r0, 2 - ldr r1, _081133C0 @ =_081133C4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081133BC: .4byte gUnknown_20370C0 -_081133C0: .4byte _081133C4 - .align 2, 0 -_081133C4: - .4byte _081133E4 - .4byte _081133F8 - .4byte _081133F8 - .4byte _081133F8 - .4byte _081133EA - .4byte _081133F0 - .4byte _081133F4 - .4byte _081133F8 -_081133E4: - movs r2, 0 - movs r3, 0 - b _081133F8 -_081133EA: - movs r2, 0x1 - movs r3, 0 - b _081133F8 -_081133F0: - movs r2, 0 - b _081133F6 -_081133F4: - movs r2, 0x2 -_081133F6: - movs r3, 0x1 -_081133F8: - ldr r0, _0811340C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, _08113410 @ =0x00000a98 - adds r0, r1 - adds r1, r3, 0 - bl sub_8113414 - pop {r0} - bx r0 - .align 2, 0 -_0811340C: .4byte gSaveBlock2Ptr -_08113410: .4byte 0x00000a98 - thumb_func_end sub_81133A4 - - thumb_func_start sub_8113414 -sub_8113414: @ 8113414 - push {r4,lr} - lsls r1, 24 - lsls r2, 24 - lsrs r2, 24 - adds r3, r2, 0 - lsrs r1, 20 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0xFF - bne _08113478 - cmp r2, 0x1 - beq _08113436 - cmp r2, 0x1 - ble _0811345C - cmp r3, 0x2 - beq _08113448 - b _0811345C -_08113436: - ldr r0, _08113440 @ =gStringVar1 - ldr r1, _08113444 @ =gUnknown_84178D0 - bl StringCopy - b _081134B2 - .align 2, 0 -_08113440: .4byte gStringVar1 -_08113444: .4byte gUnknown_84178D0 -_08113448: - ldr r0, _08113454 @ =gStringVar1 - ldr r1, _08113458 @ =gUnknown_84178DA - bl StringCopy - b _081134B2 - .align 2, 0 -_08113454: .4byte gStringVar1 -_08113458: .4byte gUnknown_84178DA -_0811345C: - ldr r0, _0811346C @ =gStringVar1 - ldr r1, _08113470 @ =gSaveBlock1Ptr - ldr r1, [r1] - ldr r2, _08113474 @ =0x00003a4c - adds r1, r2 - bl StringCopy - b _081134B2 - .align 2, 0 -_0811346C: .4byte gStringVar1 -_08113470: .4byte gSaveBlock1Ptr -_08113474: .4byte 0x00003a4c -_08113478: - ldr r4, _08113498 @ =gStringVar1 - adds r0, r4, 0 - movs r2, 0x7 - bl StringCopyN - movs r0, 0xFF - strb r0, [r4, 0x7] - ldrb r0, [r4] - cmp r0, 0xFC - bne _081134B2 - ldrb r0, [r4, 0x1] - cmp r0, 0x15 - bne _081134B2 - adds r4, 0x2 - b _0811349E - .align 2, 0 -_08113498: .4byte gStringVar1 -_0811349C: - adds r4, 0x1 -_0811349E: - ldrb r0, [r4] - cmp r0, 0xFF - bne _0811349C - movs r0, 0xFC - strb r0, [r4] - adds r4, 0x1 - movs r0, 0x16 - strb r0, [r4] - movs r0, 0xFF - strb r0, [r4, 0x1] -_081134B2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8113414 - thumb_func_start sub_81134B8 sub_81134B8: @ 81134B8 push {lr} diff --git a/include/event_data.h b/include/event_data.h index 555887b6c..398e03264 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -53,5 +53,6 @@ extern u16 gSpecialVar_MonBoxPos; extern u16 gSpecialVar_0x8014; extern u16 gUnknown_20370D0; +extern u16 gUnknown_20370C0; #endif // GUARD_EVENT_DATA_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 844f1052a..6b9025ec2 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -372,4 +372,7 @@ extern const u8 SecretBase_RedCave1_Text_274E75[]; extern const u8 SecretBase_RedCave1_Text_2751E1[]; extern const u8 SecretBase_RedCave1_Text_2754F6[]; extern const u8 SecretBase_RedCave1_Text_2758CC[]; + +extern const u8 gUnknown_84178D0[]; +extern const u8 gUnknown_84178DA[]; #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/global.h b/include/global.h index ee64e855a..0857d552a 100644 --- a/include/global.h +++ b/include/global.h @@ -237,7 +237,9 @@ struct SaveBlock2 /*0x098*/ struct Time localTimeOffset; /*0x0A0*/ struct Time lastBerryTreeUpdate; /*0x0A8*/ u32 field_A8; - /*0x0AC*/ u8 filler_AC[0xE74]; + /*0x0AC*/ u8 filler_AC[0x9ec]; + /*0xA98*/ u8 unk_A98[2][16]; + /*0xAB8*/ u8 filler_AB8[0x468]; /*0xF20*/ u32 encryptionKey; }; diff --git a/src/quest_log.c b/src/quest_log.c index 7d2b2511d..f0b79bb58 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -10,6 +10,7 @@ #include "window.h" #include "text_window.h" #include "event_data.h" +#include "event_scripts.h" #include "string_util.h" #include "script.h" #include "overworld.h" @@ -40,6 +41,8 @@ struct Var4038Struct u8 unk_1; }; +#define VAR_0x4038_STRUCT ((struct Var4038Struct *)GetVarPointer(VAR_0x4038)) + struct UnkStruct_203AE94 { u8 unk_0_0:4; @@ -143,9 +146,11 @@ void sub_81130BC(struct Var4038Struct *); u8 sub_8113194(struct Var4038Struct *); u16 sub_81132A0(struct Var4038Struct *); void sub_81132E0(struct Var4038Struct *); +bool16 sub_811337C(struct Var4038Struct *); +void sub_8113390(struct Var4038Struct *); +void sub_8113414(u8 (*)[16], u8, u8); 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); @@ -2252,7 +2257,7 @@ void sub_8113044(void) void sub_8113064(void) { - sub_8113078((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); + sub_8113078(VAR_0x4038_STRUCT); } void sub_8113078(struct Var4038Struct * varPtr) @@ -2266,7 +2271,7 @@ void sub_8113078(struct Var4038Struct * varPtr) void sub_81130A8(void) { - sub_81130BC((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); + sub_81130BC(VAR_0x4038_STRUCT); } void sub_81130BC(struct Var4038Struct * varPtr) @@ -2363,7 +2368,7 @@ u8 sub_81131FC(struct Var4038Struct * a0) u16 sub_8113288(void) { - return sub_81132A0((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); + return sub_81132A0(VAR_0x4038_STRUCT); } u16 sub_81132A0(struct Var4038Struct * a0) @@ -2382,7 +2387,7 @@ u16 sub_81132A0(struct Var4038Struct * a0) void sub_81132CC(void) { - sub_81132E0((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); + sub_81132E0(VAR_0x4038_STRUCT); } void sub_81132E0(struct Var4038Struct * a0) @@ -2411,3 +2416,92 @@ void sub_81132E0(struct Var4038Struct * a0) } } } + +bool16 sub_8113364(void) +{ + return sub_811337C(VAR_0x4038_STRUCT); +} + +bool16 sub_811337C(struct Var4038Struct * a0) +{ + return (a0->unk_1 >> gUnknown_20370C0) & 1; +} + +void sub_8113390(struct Var4038Struct * a0) +{ + a0->unk_1 |= 1; + a0->unk_1 |= 2; + a0->unk_1 |= 4; +} + +void sub_81133A4(void) +{ + u8 r3 = 0; + u8 r2 = 0; + + switch (gUnknown_20370C0) + { + case 0: + r2 = 0; + r3 = 0; + break; + case 1: + case 2: + case 3: + case 7: + break; + case 4: + r2 = 1; + r3 = 0; + break; + case 5: + r2 = 0; + r3 = 1; + break; + case 6: + r2 = 2; + r3 = 1; + break; + } + sub_8113414(gSaveBlock2Ptr->unk_A98, r3, r2); +} + +void sub_8113414(u8 (* a0)[16], u8 a1, u8 a2) +{ + u8 * str; + const u8 * src = a0[a1]; + if (src[0] == EOS) + { + switch (a2) + { + case 0: + StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName); + break; + case 1: + StringCopy(gStringVar1, gUnknown_84178D0); + break; + case 2: + StringCopy(gStringVar1, gUnknown_84178DA); + break; + default: + StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName); + break; + } + } + else + { + str = gStringVar1; + StringCopyN(str, src, 7); + str[7] = EOS; + if ( str[0] == EXT_CTRL_CODE_BEGIN + && str[1] == EXT_CTRL_CODE_JPN) + { + str += 2; + while (*str != EOS) + str++; + *str++ = EXT_CTRL_CODE_BEGIN; + *str++ = EXT_CTRL_CODE_ENG; + *str++ = EOS; + } + } +} |