summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-10-10 19:43:12 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-10-10 19:43:12 -0400
commit7e35bd4266a9573a6fbc6d73efb5175a44ba5b93 (patch)
tree3a3112039fb792444375251113d8641b406f3527
parent572929c3523aeb2f563821f07724f5356df61d76 (diff)
nonmatching sub_8110BE8
-rw-r--r--asm/quest_log.s175
-rw-r--r--include/global.h13
-rw-r--r--src/quest_log.c206
3 files changed, 216 insertions, 178 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s
index 3a4b5eb8e..f97ef90eb 100644
--- a/asm/quest_log.s
+++ b/asm/quest_log.s
@@ -5,181 +5,6 @@
.text
- thumb_func_start sub_8110BE8
-sub_8110BE8: @ 8110BE8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _08110C54 @ =gSaveBlock1Ptr
- movs r1, 0xCD
- lsls r1, 3
- muls r0, r1
- movs r1, 0x98
- lsls r1, 5
- adds r0, r1
- ldr r1, [r4]
- adds r7, r1, r0
- adds r0, r7, 0
- bl sub_815A008
- movs r6, 0
- mov r9, r4
- movs r2, 0x8D
- lsls r2, 3
- mov r8, r2
- ldr r3, _08110C58 @ =0x0000046a
- mov r10, r3
-_08110C1C:
- mov r4, r9
- ldr r1, [r4]
- lsls r2, r6, 1
- adds r0, r2, r6
- lsls r0, 3
- adds r1, r0
- ldr r0, _08110C5C @ =0x000008e4
- adds r1, r0
- ldrh r4, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- mov r12, r2
- cmp r0, 0
- bge _08110C64
- lsls r3, r6, 2
- adds r2, r7, r3
- negs r0, r0
- mov r4, r8
- adds r1, r2, r4
- strb r0, [r1]
- ldr r0, _08110C60 @ =0x00000469
- adds r2, r0
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- b _08110C7C
- .align 2, 0
-_08110C54: .4byte gSaveBlock1Ptr
-_08110C58: .4byte 0x0000046a
-_08110C5C: .4byte 0x000008e4
-_08110C60: .4byte 0x00000469
-_08110C64:
- lsls r3, r6, 2
- adds r1, r7, r3
- mov r2, r8
- adds r0, r1, r2
- strb r4, [r0]
- ldr r4, _08110CBC @ =0x00000469
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
-_08110C7C:
- adds r5, r3, 0
- mov r1, r9
- ldr r0, [r1]
- mov r2, r12
- adds r1, r2, r6
- lsls r1, 3
- adds r0, r1
- ldr r3, _08110CC0 @ =0x000008e6
- adds r1, r0, r3
- ldrh r2, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bge _08110CC8
- adds r3, r7, r5
- adds r1, r0, 0
- negs r1, r1
- lsls r1, 24
- mov r2, r8
- adds r4, r3, r2
- lsrs r1, 15
- ldr r0, [r4]
- ldr r2, _08110CC4 @ =0xfffe01ff
- ands r0, r2
- orrs r0, r1
- str r0, [r4]
- add r3, r10
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- b _08110CE6
- .align 2, 0
-_08110CBC: .4byte 0x00000469
-_08110CC0: .4byte 0x000008e6
-_08110CC4: .4byte 0xfffe01ff
-_08110CC8:
- adds r3, r7, r5
- lsls r2, 24
- mov r0, r8
- adds r4, r3, r0
- lsrs r2, 15
- ldr r0, [r4]
- ldr r1, _08110D38 @ =0xfffe01ff
- ands r0, r1
- orrs r0, r2
- str r0, [r4]
- add r3, r10
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
-_08110CE6:
- strb r0, [r3]
- adds r5, r7, r5
- mov r1, r9
- ldr r0, [r1]
- mov r2, r12
- adds r3, r2, r6
- lsls r3, 3
- adds r0, r3
- ldr r4, _08110D3C @ =0x000008e8
- adds r0, r4
- ldrb r1, [r0]
- mov r0, r10
- adds r4, r5, r0
- lsls r1, 2
- ldrb r2, [r4]
- movs r0, 0x3
- ands r0, r2
- orrs r0, r1
- strb r0, [r4]
- mov r1, r9
- ldr r0, [r1]
- adds r0, r3
- ldr r2, _08110D40 @ =0x000008e9
- adds r0, r2
- ldrb r0, [r0]
- ldr r3, _08110D44 @ =0x0000046b
- adds r5, r3
- strb r0, [r5]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3F
- bhi _08110D2A
- b _08110C1C
-_08110D2A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08110D38: .4byte 0xfffe01ff
-_08110D3C: .4byte 0x000008e8
-_08110D40: .4byte 0x000008e9
-_08110D44: .4byte 0x0000046b
- thumb_func_end sub_8110BE8
-
thumb_func_start sub_8110D48
sub_8110D48: @ 8110D48
push {r4,r5,lr}
diff --git a/include/global.h b/include/global.h
index 4efd21e48..1655ac4e3 100644
--- a/include/global.h
+++ b/include/global.h
@@ -474,6 +474,16 @@ struct MysteryEventStruct
u8 unk_1;
};
+struct QuestLogNPCData
+{
+ u32 x:8;
+ u32 negx:1;
+ u32 y:8;
+ u32 negy:1;
+ u32 elevation:6;
+ u32 movementType:8;
+};
+
struct QuestLog
{
/*0x0000*/ u8 unk_000;
@@ -482,7 +492,8 @@ struct QuestLog
/*0x0003*/ s8 unk_003;
/*0x0004*/ s16 unk_004;
/*0x0006*/ s16 unk_006;
- /*0x0008*/ u8 filler_008[0x560];
+ /*0x0008*/ u8 filler_008[0x460];
+ /*0x0468*/ struct QuestLogNPCData npcData[64];
/*0x0568*/ u8 filler_568[0x100];
/*0x0668*/ u8 end[0];
};
diff --git a/src/quest_log.c b/src/quest_log.c
index 900194040..782e0efe4 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -25,6 +25,9 @@ EWRAM_DATA u8 gUnknown_203AE98[0x100] = {0};
void sub_8110A00(void);
void sub_8110A3C(void);
+void sub_8110BB0(u8);
+void sub_8110BE8(u8);
+void sub_815A008(struct QuestLog *);
void sub_8110E3C(void);
u8 sub_8110E68(void *);
void sub_81118F4(s8);
@@ -33,8 +36,6 @@ void sub_8113B88(void);
void sub_8113BD8(void);
void sub_81138F8(void);
void sub_81115E8(void);
-void sub_8110BB0(u8);
-void sub_8110BE8(u8);
void sub_8110D94(void);
void sub_8110E20(void);
void sub_8110D48(u8);
@@ -190,3 +191,204 @@ void sub_8110BB0(u8 a0)
questLog->unk_004 = gSaveBlock1Ptr->pos.x;
questLog->unk_006 = gSaveBlock1Ptr->pos.y;
}
+
+#ifdef NONMATCHING
+void sub_8110BE8(u8 a0)
+{
+ struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0];
+ u16 i; // r6
+
+ sub_815A008(questLog);
+
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->mapObjectTemplates); i++)
+ {
+ if (gSaveBlock1Ptr->mapObjectTemplates[i].x < 0)
+ {
+ questLog->npcData[i].x = (u8)-gSaveBlock1Ptr->mapObjectTemplates[i].x;
+ questLog->npcData[i].negx = TRUE;
+ }
+ else
+ {
+ questLog->npcData[i].x = (u8)gSaveBlock1Ptr->mapObjectTemplates[i].x;
+ questLog->npcData[i].negx = FALSE;
+ }
+ if (gSaveBlock1Ptr->mapObjectTemplates[i].y < 0)
+ {
+ questLog->npcData[i].y = (u8)-gSaveBlock1Ptr->mapObjectTemplates[i].y;
+ questLog->npcData[i].negy = TRUE;
+ }
+ else
+ {
+ questLog->npcData[i].y = (u8)gSaveBlock1Ptr->mapObjectTemplates[i].y;
+ questLog->npcData[i].negy = FALSE;
+ }
+ questLog->npcData[i].elevation = gSaveBlock1Ptr->mapObjectTemplates[i].elevation;
+ questLog->npcData[i].movementType = gSaveBlock1Ptr->mapObjectTemplates[i].movementType;
+ }
+}
+#else
+NAKED
+void sub_8110BE8(u8 a0)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tldr r4, =gSaveBlock1Ptr\n"
+ "\tmovs r1, 0xCD\n"
+ "\tlsls r1, 3\n"
+ "\tmuls r0, r1\n"
+ "\tmovs r1, 0x98\n"
+ "\tlsls r1, 5\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, [r4]\n"
+ "\tadds r7, r1, r0\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl sub_815A008\n"
+ "\tmovs r6, 0\n"
+ "\tmov r9, r4\n"
+ "\tmovs r2, 0x8D\n"
+ "\tlsls r2, 3\n"
+ "\tmov r8, r2\n"
+ "\tldr r3, =0x0000046a\n"
+ "\tmov r10, r3\n"
+ "_08110C1C:\n"
+ "\tmov r4, r9\n"
+ "\tldr r1, [r4]\n"
+ "\tlsls r2, r6, 1\n"
+ "\tadds r0, r2, r6\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "\tldr r0, =0x000008e4\n"
+ "\tadds r1, r0\n"
+ "\tldrh r4, [r1]\n"
+ "\tmovs r3, 0\n"
+ "\tldrsh r0, [r1, r3]\n"
+ "\tmov r12, r2\n"
+ "\tcmp r0, 0\n"
+ "\tbge _08110C64\n"
+ "\tlsls r3, r6, 2\n"
+ "\tadds r2, r7, r3\n"
+ "\tnegs r0, r0\n"
+ "\tmov r4, r8\n"
+ "\tadds r1, r2, r4\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, =0x00000469\n"
+ "\tadds r2, r0\n"
+ "\tldrb r0, [r2]\n"
+ "\tmovs r1, 0x1\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r2]\n"
+ "\tb _08110C7C\n"
+ "\t.pool\n"
+ "_08110C64:\n"
+ "\tlsls r3, r6, 2\n"
+ "\tadds r1, r7, r3\n"
+ "\tmov r2, r8\n"
+ "\tadds r0, r1, r2\n"
+ "\tstrb r4, [r0]\n"
+ "\tldr r4, =0x00000469\n"
+ "\tadds r1, r4\n"
+ "\tldrb r2, [r1]\n"
+ "\tmovs r0, 0x2\n"
+ "\tnegs r0, r0\n"
+ "\tands r0, r2\n"
+ "\tstrb r0, [r1]\n"
+ "_08110C7C:\n"
+ "\tadds r5, r3, 0\n"
+ "\tmov r1, r9\n"
+ "\tldr r0, [r1]\n"
+ "\tmov r2, r12\n"
+ "\tadds r1, r2, r6\n"
+ "\tlsls r1, 3\n"
+ "\tadds r0, r1\n"
+ "\tldr r3, =0x000008e6\n"
+ "\tadds r1, r0, r3\n"
+ "\tldrh r2, [r1]\n"
+ "\tmovs r4, 0\n"
+ "\tldrsh r0, [r1, r4]\n"
+ "\tcmp r0, 0\n"
+ "\tbge _08110CC8\n"
+ "\tadds r3, r7, r5\n"
+ "\tadds r1, r0, 0\n"
+ "\tnegs r1, r1\n"
+ "\tlsls r1, 24\n"
+ "\tmov r2, r8\n"
+ "\tadds r4, r3, r2\n"
+ "\tlsrs r1, 15\n"
+ "\tldr r0, [r4]\n"
+ "\tldr r2, =0xfffe01ff\n"
+ "\tands r0, r2\n"
+ "\torrs r0, r1\n"
+ "\tstr r0, [r4]\n"
+ "\tadd r3, r10\n"
+ "\tldrb r0, [r3]\n"
+ "\tmovs r1, 0x2\n"
+ "\torrs r0, r1\n"
+ "\tb _08110CE6\n"
+ "\t.pool\n"
+ "_08110CC8:\n"
+ "\tadds r3, r7, r5\n"
+ "\tlsls r2, 24\n"
+ "\tmov r0, r8\n"
+ "\tadds r4, r3, r0\n"
+ "\tlsrs r2, 15\n"
+ "\tldr r0, [r4]\n"
+ "\tldr r1, =0xfffe01ff\n"
+ "\tands r0, r1\n"
+ "\torrs r0, r2\n"
+ "\tstr r0, [r4]\n"
+ "\tadd r3, r10\n"
+ "\tldrb r1, [r3]\n"
+ "\tmovs r0, 0x3\n"
+ "\tnegs r0, r0\n"
+ "\tands r0, r1\n"
+ "_08110CE6:\n"
+ "\tstrb r0, [r3]\n"
+ "\tadds r5, r7, r5\n"
+ "\tmov r1, r9\n"
+ "\tldr r0, [r1]\n"
+ "\tmov r2, r12\n"
+ "\tadds r3, r2, r6\n"
+ "\tlsls r3, 3\n"
+ "\tadds r0, r3\n"
+ "\tldr r4, =0x000008e8\n"
+ "\tadds r0, r4\n"
+ "\tldrb r1, [r0]\n"
+ "\tmov r0, r10\n"
+ "\tadds r4, r5, r0\n"
+ "\tlsls r1, 2\n"
+ "\tldrb r2, [r4]\n"
+ "\tmovs r0, 0x3\n"
+ "\tands r0, r2\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r4]\n"
+ "\tmov r1, r9\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, r3\n"
+ "\tldr r2, =0x000008e9\n"
+ "\tadds r0, r2\n"
+ "\tldrb r0, [r0]\n"
+ "\tldr r3, =0x0000046b\n"
+ "\tadds r5, r3\n"
+ "\tstrb r0, [r5]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3F\n"
+ "\tbhi _08110D2A\n"
+ "\tb _08110C1C\n"
+ "_08110D2A:\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.pool");
+}
+#endif // NONMATCHING