summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/quest_log.c123
1 files changed, 111 insertions, 12 deletions
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));
+}