summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/quest_log.s179
-rw-r--r--include/event_data.h1
-rw-r--r--include/event_scripts.h3
-rw-r--r--include/global.h4
-rw-r--r--src/quest_log.c104
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;
+ }
+ }
+}