summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-10-11 17:21:45 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-10-11 17:21:45 -0400
commit913f2a9a1d88ca8fb86557cc265cd6ca7fac80e4 (patch)
tree39cf0ba14572815ef45126b0aa67345139c9f285
parentfeadfc8911db9bde3bc8678ea0a5d9bab0aeef15 (diff)
through sub_811175C
-rw-r--r--asm/quest_log.s280
-rw-r--r--include/global.h4
-rw-r--r--src/quest_log.c107
3 files changed, 98 insertions, 293 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s
index b26643b9f..82816d861 100644
--- a/asm/quest_log.s
+++ b/asm/quest_log.s
@@ -5,286 +5,6 @@
.text
- thumb_func_start sub_8111688
-sub_8111688: @ 8111688
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r5, 0
- ldr r0, _081116CC @ =gSaveBlock1Ptr
- mov r8, r0
- ldr r7, _081116D0 @ =0x0000063a
-_08111698:
- ldr r1, _081116D4 @ =0x000040aa
- adds r0, r5, r1
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r1, r5, 1
- add r1, sp
- strh r0, [r1]
- movs r4, 0
- adds r6, r5, 0x1
- adds r3, r1, 0
- lsls r5, 4
-_081116B2:
- ldrh r0, [r3]
- movs r2, 0x1
- ands r2, r0
- cmp r2, 0
- beq _081116D8
- mov r1, r8
- ldr r0, [r1]
- adds r1, r5, r4
- adds r0, r7
- adds r0, r1
- movs r1, 0x1E
- strb r1, [r0]
- b _081116E4
- .align 2, 0
-_081116CC: .4byte gSaveBlock1Ptr
-_081116D0: .4byte 0x0000063a
-_081116D4: .4byte 0x000040aa
-_081116D8:
- mov r1, r8
- ldr r0, [r1]
- adds r1, r5, r4
- adds r0, r7
- adds r0, r1
- strb r2, [r0]
-_081116E4:
- ldrh r0, [r3]
- lsrs r0, 1
- strh r0, [r3]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xF
- bls _081116B2
- lsls r0, r6, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _08111698
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8111688
-
- thumb_func_start sub_8111708
-sub_8111708: @ 8111708
- push {r4,r5,lr}
- sub sp, 0x1C
- ldr r0, _08111754 @ =0x000040ae
- bl VarGet
- ldr r4, _08111758 @ =gSaveBlock1Ptr
- ldr r1, [r4]
- strh r0, [r1, 0x32]
- lsls r0, 16
- cmp r0, 0
- bne _0811174A
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- mov r1, sp
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldr r0, [r0]
- str r0, [r1]
- ldr r1, [r4]
- mov r0, sp
- ldrh r0, [r0, 0x12]
- strh r0, [r1, 0x32]
-_0811174A:
- add sp, 0x1C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08111754: .4byte 0x000040ae
-_08111758: .4byte gSaveBlock1Ptr
- thumb_func_end sub_8111708
-
- thumb_func_start sub_811175C
-sub_811175C: @ 811175C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r1
- lsls r0, 24
- lsrs r4, r0, 24
- movs r6, 0
- mov r9, r6
- movs r2, 0x80
- lsls r2, 1
- mov r0, r8
- movs r1, 0
- bl memset
- movs r7, 0
- ldr r2, _081117B8 @ =gUnknown_203AE0C
- movs r1, 0
-_08111780:
- lsls r0, r7, 2
- adds r0, r2
- str r1, [r0]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x1F
- bls _08111780
- ldr r1, _081117BC @ =gSaveBlock1Ptr
- movs r0, 0xCD
- lsls r0, 3
- muls r0, r4
- ldr r1, [r1]
- adds r0, r1
- ldr r1, _081117C0 @ =0x00001868
- adds r4, r0, r1
- movs r7, 0
-_081117A2:
- ldrh r0, [r4]
- ldr r1, _081117C4 @ =0x00000fff
- ands r1, r0
- cmp r1, 0x29
- bls _081117AE
- b _081118AC
-_081117AE:
- lsls r0, r1, 2
- ldr r1, _081117C8 @ =_081117CC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081117B8: .4byte gUnknown_203AE0C
-_081117BC: .4byte gSaveBlock1Ptr
-_081117C0: .4byte 0x00001868
-_081117C4: .4byte 0x00000fff
-_081117C8: .4byte _081117CC
- .align 2, 0
-_081117CC:
- .4byte _08111874
- .4byte _08111880
- .4byte _08111880
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _081118AC
- .4byte _0811188C
- .4byte _081118AC
- .4byte _08111898
-_08111874:
- lsls r1, r6, 3
- add r1, r8
- adds r0, r4, 0
- bl sub_8113D08
- b _081118A2
-_08111880:
- lsls r1, r6, 3
- add r1, r8
- adds r0, r4, 0
- bl sub_8113D94
- b _081118A2
-_0811188C:
- lsls r1, r6, 3
- add r1, r8
- adds r0, r4, 0
- bl sub_8113C20
- b _081118A2
-_08111898:
- lsls r1, r6, 3
- add r1, r8
- adds r0, r4, 0
- bl sub_8113C8C
-_081118A2:
- adds r4, r0, 0
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- b _081118D2
-_081118AC:
- mov r0, r9
- lsls r1, r0, 2
- ldr r5, _081118F0 @ =gUnknown_203AE0C
- adds r1, r5
- adds r0, r4, 0
- bl sub_8113A78
- adds r4, r0, 0
- mov r1, r9
- cmp r1, 0
- bne _081118C8
- ldr r0, [r5]
- bl sub_8113ABC
-_081118C8:
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
-_081118D2:
- cmp r4, 0
- beq _081118E2
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x1F
- bhi _081118E2
- b _081117A2
-_081118E2:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081118F0: .4byte gUnknown_203AE0C
- thumb_func_end sub_811175C
-
thumb_func_start sub_81118F4
sub_81118F4: @ 81118F4
push {lr}
diff --git a/include/global.h b/include/global.h
index f1efeb4e0..5cbdbb360 100644
--- a/include/global.h
+++ b/include/global.h
@@ -496,8 +496,8 @@ struct QuestLog
/*0x0148*/ u8 unk_148[0x120];
/*0x02c8*/ u8 unk_268[0x200];
/*0x0468*/ struct QuestLogNPCData npcData[64];
- /*0x0568*/ u8 filler_568[0x100];
- /*0x0668*/ u8 end[0];
+ /*0x0568*/ u16 unk_568[0x80];
+ /*0x0668*/ u16 end[0];
};
#define MAP_OBJECTS_COUNT 16
diff --git a/src/quest_log.c b/src/quest_log.c
index 7ed5e0560..da918be79 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -41,7 +41,7 @@ EWRAM_DATA u8 gUnknown_203ADFA = 0;
EWRAM_DATA u16 gUnknown_203ADFC = 0;
EWRAM_DATA u8 gUnknown_203ADFE[3];
EWRAM_DATA void * gUnknown_203AE04 = NULL;
-EWRAM_DATA void * gUnknown_203AE08 = NULL;
+EWRAM_DATA u16 * gUnknown_203AE08 = NULL;
EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL};
EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0;
EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0};
@@ -65,7 +65,12 @@ u16 sub_8111618(void);
u16 sub_811164C(void);
void sub_8111688(void);
void sub_811175C(u8, struct UnkStruct_203AE98 *);
-void sub_81118F4(s8);
+void * sub_8113D08(void *, struct UnkStruct_203AE98 *);
+void * sub_8113D94(void *, struct UnkStruct_203AE98 *);
+void * sub_8113C20(void *, struct UnkStruct_203AE98 *);
+void * sub_8113C8C(void *, struct UnkStruct_203AE98 *);
+void * sub_8113A78(void *, void **);
+void sub_8113ABC(void *);
void sub_81138F8(void);
void sub_8111AD8(void);
void sub_8112940(u8, struct UnkStruct_203AE98 *, u16);
@@ -75,6 +80,7 @@ void sub_8113BD8(void);
void * sub_8113BF4(void *);
void * sub_8113D48(void *, struct UnkStruct_203AE98 *);
void * sub_8113CC8(void *, struct UnkStruct_203AE98 *);
+void sub_81118F4(s8);
extern const u8 gUnknown_841A155[];
@@ -94,7 +100,7 @@ void sub_8110840(void * a0)
if (gUnknown_203ADFA != 0)
{
if (gUnknown_203AE08)
- gUnknown_203AE08 += r1;
+ gUnknown_203AE08 = (void *)gUnknown_203AE08 + r1;
if (gUnknown_203ADFA == 2)
{
int r3;
@@ -111,7 +117,7 @@ void sub_811089C(void)
gUnknown_203ADF8 = 0;
gUnknown_203ADFA = 0;
gUnknown_203AE8C = 0;
- gUnknown_203AE08 = 0;
+ gUnknown_203AE08 = NULL;
gUnknown_203AE04 = 0;
sub_8113BD8();
sub_81138F8();
@@ -134,20 +140,20 @@ void sub_811092C(void)
gUnknown_203AE8C();
}
-bool8 sub_8110944(u8 * a0, size_t a1)
+bool8 sub_8110944(void * a0, size_t a1)
{
- u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568;
- u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end;
+ void * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568;
+ void * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end;
r0 -= a1;
if (a0 < r2 || a0 > r0)
return FALSE;
return TRUE;
}
-bool8 sub_8110988(u8 * a0, size_t a1)
+bool8 sub_8110988(void * a0, size_t a1)
{
- u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568;
- u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end;
+ void * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568;
+ void * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end;
r0 -= a1;
if (a0 < r2 || a0 > r0)
return FALSE;
@@ -209,7 +215,7 @@ void sub_8110AEC(u16 a0)
sub_81108F0(gUnknown_203ADF8);
sub_8113B88();
- gUnknown_203AE08 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568;
+ gUnknown_203AE08 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568;
if ((a0 >= 12 && a0 < 20) || a0 == 35)
gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000 = 2;
else
@@ -798,3 +804,82 @@ u16 sub_811164C(void)
return count;
}
+
+void sub_8111688(void)
+{
+ u16 i, j;
+ u16 sp0[4];
+
+ for (i = 0; i < 4; i++)
+ {
+ sp0[i] = VarGet(VAR_0x40AA + i);
+
+ for (j = 0; j < 16; j++)
+ {
+ if (sp0[i] & 1)
+ gSaveBlock1Ptr->trainerRematches[16 * i + j] = 30;
+ else
+ gSaveBlock1Ptr->trainerRematches[16 * i + j] = 0;
+ sp0[i] >>= 1;
+ }
+ }
+}
+
+void sub_8111708(void)
+{
+ struct MapHeader sp0;
+
+ gSaveBlock1Ptr->mapDataId = VarGet(VAR_0x40AE);
+ if (gSaveBlock1Ptr->mapDataId == 0)
+ {
+ sp0 = *get_mapheader_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
+ gSaveBlock1Ptr->mapDataId = sp0.mapDataId;
+ }
+}
+
+void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1)
+{
+ u16 i;
+ u16 *r4;
+ u16 r6 = 0;
+ u16 r9 = 0;
+
+ memset(a1, 0, 32 * sizeof(struct UnkStruct_203AE98));
+ for (i = 0; i < 32; i++)
+ {
+ gUnknown_203AE0C[i] = NULL;
+ }
+
+ r4 = gSaveBlock1Ptr->questLog[a0].unk_568;
+ for (i = 0; i < 32; i++)
+ {
+ switch (*r4 & 0xFFF)
+ {
+ case 0:
+ r4 = sub_8113D08(r4, &a1[r6]);
+ r6++;
+ break;
+ case 1:
+ case 2:
+ r4 = sub_8113D94(r4, &a1[r6]);
+ r6++;
+ break;
+ case 39:
+ r4 = sub_8113C20(r4, &a1[r6]);
+ r6++;
+ break;
+ case 41:
+ r4 = sub_8113C8C(r4, &a1[r6]);
+ r6++;
+ break;
+ default:
+ r4 = sub_8113A78(r4, &gUnknown_203AE0C[r9]);
+ if (r9 == 0)
+ sub_8113ABC(gUnknown_203AE0C[0]);
+ r9++;
+ break;
+ }
+ if (r4 == NULL)
+ break;
+ }
+}