summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/quest_log.s247
-rw-r--r--data/quest_log.s4
-rw-r--r--include/quest_log.h12
-rw-r--r--src/quest_log.c88
4 files changed, 91 insertions, 260 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s
index 69def6a01..e4947d79c 100644
--- a/asm/quest_log.s
+++ b/asm/quest_log.s
@@ -5,253 +5,6 @@
.text
- thumb_func_start sub_8112940
-sub_8112940: @ 8112940
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r2, 16
- cmp r0, 0x1
- beq _08112964
- cmp r0, 0x2
- beq _081129E0
- ldr r1, _08112960 @ =gUnknown_3005E88
- movs r0, 0
- strb r0, [r1]
- b _08112B20
- .align 2, 0
-_08112960: .4byte gUnknown_3005E88
-_08112964:
- ldr r2, _081129C0 @ =gUnknown_3005E94
- str r3, [r2]
- ldr r1, _081129C4 @ =gUnknown_3005E8C
- lsrs r0, r4, 19
- strh r0, [r1]
- ldr r0, _081129C8 @ =gUnknown_3005E88
- mov r9, r0
- adds r1, r2, 0
- ldr r6, _081129CC @ =gUnknown_203AF9A
- ldr r2, _081129D0 @ =gUnknown_203AF98
- ldr r7, _081129D4 @ =gUnknown_203B01C
- ldr r0, _081129D8 @ =gUnknown_3005E90
- mov r12, r0
- ldr r0, _081129DC @ =gUnknown_203B01A
- mov r8, r0
- movs r5, 0xFF
- adds r3, r6, 0
- movs r4, 0x3F
-_08112988:
- ldrb r0, [r3]
- orrs r0, r5
- strb r0, [r3]
- ldrb r0, [r3, 0x1]
- orrs r0, r5
- strb r0, [r3, 0x1]
- adds r3, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08112988
- movs r0, 0
- strh r0, [r2]
- strh r0, [r7]
- movs r0, 0
- mov r2, r12
- str r0, [r2]
- ldr r1, [r1]
- ldrh r0, [r1, 0x4]
- mov r2, r8
- strh r0, [r2]
- ldrb r0, [r1, 0x3]
- strb r0, [r6]
- movs r0, 0xFF
- strb r0, [r6, 0x1]
- movs r0, 0x1
- mov r1, r9
- strb r0, [r1]
- b _08112B20
- .align 2, 0
-_081129C0: .4byte gUnknown_3005E94
-_081129C4: .4byte gUnknown_3005E8C
-_081129C8: .4byte gUnknown_3005E88
-_081129CC: .4byte gUnknown_203AF9A
-_081129D0: .4byte gUnknown_203AF98
-_081129D4: .4byte gUnknown_203B01C
-_081129D8: .4byte gUnknown_3005E90
-_081129DC: .4byte gUnknown_203B01A
-_081129E0:
- ldr r1, _08112A44 @ =gUnknown_3005E94
- str r3, [r1]
- ldr r5, _08112A48 @ =gUnknown_3005E8C
- lsrs r0, r4, 19
- strh r0, [r5]
- movs r4, 0
- ldr r2, _08112A4C @ =gUnknown_203B01A
- mov r8, r2
- cmp r4, r0
- bge _08112A0E
- adds r6, r1, 0
- ldr r0, _08112A50 @ =gUnknown_845669C
- ldr r2, [r0]
- ldr r3, [r0, 0x4]
-_081129FC:
- ldr r1, [r6]
- lsls r0, r4, 3
- adds r0, r1
- str r2, [r0]
- str r3, [r0, 0x4]
- adds r4, 0x1
- ldrh r0, [r5]
- cmp r4, r0
- blt _081129FC
-_08112A0E:
- ldr r4, _08112A54 @ =gUnknown_203AF98
- movs r2, 0
- strh r2, [r4]
- mov r1, r8
- strh r2, [r1]
- movs r1, 0
- ldr r3, _08112A44 @ =gUnknown_3005E94
- ldr r0, [r3]
- strh r1, [r0, 0x4]
- strb r2, [r0, 0x6]
- ldrh r0, [r4]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- strb r2, [r0]
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _08112AC8
- lsls r0, 2
- ldr r1, _08112A58 @ =_08112A5C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08112A44: .4byte gUnknown_3005E94
-_08112A48: .4byte gUnknown_3005E8C
-_08112A4C: .4byte gUnknown_203B01A
-_08112A50: .4byte gUnknown_845669C
-_08112A54: .4byte gUnknown_203AF98
-_08112A58: .4byte _08112A5C
- .align 2, 0
-_08112A5C:
- .4byte _08112A70
- .4byte _08112A70
- .4byte _08112AA0
- .4byte _08112AB8
- .4byte _08112A88
-_08112A70:
- ldr r0, _08112A80 @ =gUnknown_203AF98
- ldrh r0, [r0]
- ldr r1, _08112A84 @ =gUnknown_3005E94
- ldr r1, [r1]
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- b _08112AC6
- .align 2, 0
-_08112A80: .4byte gUnknown_203AF98
-_08112A84: .4byte gUnknown_3005E94
-_08112A88:
- ldr r0, _08112A98 @ =gUnknown_203AF98
- ldrh r0, [r0]
- ldr r1, _08112A9C @ =gUnknown_3005E94
- ldr r1, [r1]
- lsls r0, 3
- adds r0, r1
- movs r1, 0x3
- b _08112AC6
- .align 2, 0
-_08112A98: .4byte gUnknown_203AF98
-_08112A9C: .4byte gUnknown_3005E94
-_08112AA0:
- ldr r0, _08112AB0 @ =gUnknown_203AF98
- ldrh r0, [r0]
- ldr r1, _08112AB4 @ =gUnknown_3005E94
- ldr r1, [r1]
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- b _08112AC6
- .align 2, 0
-_08112AB0: .4byte gUnknown_203AF98
-_08112AB4: .4byte gUnknown_3005E94
-_08112AB8:
- ldr r0, _08112B2C @ =gUnknown_203AF98
- ldrh r0, [r0]
- ldr r1, _08112B30 @ =gUnknown_3005E94
- ldr r1, [r1]
- lsls r0, 3
- adds r0, r1
- movs r1, 0x2
-_08112AC6:
- strb r1, [r0, 0x3]
-_08112AC8:
- ldr r0, _08112B34 @ =gUnknown_203B01C
- movs r5, 0
- strh r5, [r0]
- ldr r2, _08112B2C @ =gUnknown_203AF98
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- ldrh r0, [r2]
- ldr r3, _08112B30 @ =gUnknown_3005E94
- ldr r4, [r3]
- lsls r0, 3
- adds r0, r4
- movs r1, 0
- strh r1, [r0, 0x4]
- ldrh r0, [r2]
- lsls r0, 3
- adds r0, r4
- movs r4, 0x2
- strb r4, [r0, 0x6]
- ldrh r0, [r2]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- strb r5, [r0]
- ldrh r0, [r2]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- strb r5, [r0, 0x1]
- ldrh r0, [r2]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- strb r5, [r0, 0x2]
- ldrh r0, [r2]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- strb r5, [r0, 0x3]
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- ldr r0, _08112B38 @ =gUnknown_3005E88
- strb r4, [r0]
-_08112B20:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08112B2C: .4byte gUnknown_203AF98
-_08112B30: .4byte gUnknown_3005E94
-_08112B34: .4byte gUnknown_203B01C
-_08112B38: .4byte gUnknown_3005E88
- thumb_func_end sub_8112940
-
thumb_func_start sub_8112B3C
sub_8112B3C: @ 8112B3C
push {r4-r7,lr}
diff --git a/data/quest_log.s b/data/quest_log.s
index c7956f82d..dd7776ae0 100644
--- a/data/quest_log.s
+++ b/data/quest_log.s
@@ -1,9 +1,5 @@
.section .rodata
- .align 2, 0
-gUnknown_845669C:: @ 845669C
- .incbin "baserom.gba", 0x45669C, 0x8
-
gUnknown_84566A4:: @ 84566A4
.incbin "baserom.gba", 0x4566A4, 0x4
diff --git a/include/quest_log.h b/include/quest_log.h
index 280a04423..f3fc04f41 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -1,8 +1,20 @@
#ifndef GUARD_QUEST_LOG_H
#define GUARD_QUEST_LOG_H
+struct UnkStruct_3005E90
+{
+ u8 unk_0;
+ u8 unk_1_0:1;
+ u8 unk_1_1:1;
+ u8 unk_1_2:1;
+ u8 unk_1_3:1;
+ u8 unk_1_4:1;
+ u8 unk_2;
+};
+
extern u8 gUnknown_3005E88;
extern u16 gUnknown_3005E8C;
+extern struct UnkStruct_3005E90 gUnknown_3005E90;
extern struct UnkStruct_203AE98 * gUnknown_3005E94;
#endif //GUARD_QUEST_LOG_H
diff --git a/src/quest_log.c b/src/quest_log.c
index 834585ac9..49e0db836 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -54,6 +54,7 @@ struct UnkStruct_203AE98
u8 gUnknown_3005E88;
u16 gUnknown_3005E8C;
+struct UnkStruct_3005E90 gUnknown_3005E90;
struct UnkStruct_203AE98 * gUnknown_3005E94;
EWRAM_DATA u8 gUnknown_203ADF8 = 0;
@@ -69,7 +70,7 @@ 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[128];
+EWRAM_DATA u8 gUnknown_203AF9A[64][2];
EWRAM_DATA u16 gUnknown_203B01A;
EWRAM_DATA u16 gUnknown_203B01C;
@@ -149,6 +150,8 @@ const u16 gUnknown_8456638[] = INCBIN_U16("data/graphics/unknown_8456638.bin");
const u8 gUnknown_8456698[] = {17, 10, 3};
+extern const struct UnkStruct_203AE98 gUnknown_845669C;
+
void sub_8110840(void * a0)
{
size_t r1 = (void *)gSaveBlock1Ptr - a0;
@@ -1437,24 +1440,24 @@ void sub_811246C(struct Sprite *sprite)
struct MapObject *mapObject = &gMapObjects[sprite->data[0]];
if (mapObject->localId == 0xFF)
{
- if (gUnknown_203AF9A[0] != 0xFF)
+ if (gUnknown_203AF9A[0][0] != 0xFF)
{
- sub_8063CA4(mapObject, gUnknown_203AF9A[0]);
- gUnknown_203AF9A[0] = 0xFF;
+ sub_8063CA4(mapObject, gUnknown_203AF9A[0][0]);
+ gUnknown_203AF9A[0][0] = 0xFF;
}
- if (gUnknown_203AF9A[1] != 0xFF)
+ if (gUnknown_203AF9A[0][1] != 0xFF)
{
sub_8150454();
- gUnknown_203AF9A[1] = 0xFF;
+ gUnknown_203AF9A[0][1] = 0xFF;
}
sub_8063E28(mapObject, sprite);
}
else
{
- if (gUnknown_203AF9A[2 * mapObject->localId] != 0xFF)
+ if (gUnknown_203AF9A[mapObject->localId][0] != 0xFF)
{
- sub_8063CA4(mapObject, gUnknown_203AF9A[2 * mapObject->localId]);
- gUnknown_203AF9A[2 * mapObject->localId] = 0xFF;
+ sub_8063CA4(mapObject, gUnknown_203AF9A[mapObject->localId][0]);
+ gUnknown_203AF9A[mapObject->localId][0] = 0xFF;
}
sub_8063E28(mapObject, sprite);
}
@@ -1607,3 +1610,70 @@ void sub_81128BC(u8 a0)
break;
}
}
+
+void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2)
+{
+ s32 i;
+
+ switch (a0)
+ {
+ default:
+ gUnknown_3005E88 = 0;
+ break;
+ case 1:
+ gUnknown_3005E94 = a1;
+ gUnknown_3005E8C = a2 / 8;
+ for (i = 0; i < 0x40; i++)
+ {
+ gUnknown_203AF9A[i][0] |= 0xFF;
+ gUnknown_203AF9A[i][1] |= 0xFF;
+ }
+ gUnknown_203AF98 = 0;
+ gUnknown_203B01C = 0;
+ gUnknown_3005E90 = (struct UnkStruct_3005E90){};
+ gUnknown_203B01A = gUnknown_3005E94[gUnknown_203AF98].unk_4;
+ gUnknown_203AF9A[0][0] = gUnknown_3005E94[gUnknown_203AF98].unk_3;
+ gUnknown_203AF9A[0][1] = 0xFF;
+ gUnknown_3005E88 = 1;
+ break;
+ case 2:
+ gUnknown_3005E94 = a1;
+ gUnknown_3005E8C = a2 / 8;
+ for (i = 0; i < gUnknown_3005E8C; i++)
+ {
+ gUnknown_3005E94[i] = (struct UnkStruct_203AE98){ 0, 0, 0, 0, 0xFFFF, 0xFF };
+ }
+ gUnknown_203AF98 = 0;
+ gUnknown_203B01A = 0;
+ gUnknown_3005E94[gUnknown_203AF98].unk_4 = 0;
+ gUnknown_3005E94[gUnknown_203AF98].unk_6 = 0;
+ gUnknown_3005E94[gUnknown_203AF98].unk_0 = 0;
+ switch (player_get_direction_lower_nybble())
+ {
+ case 0:
+ case 1:
+ gUnknown_3005E94[gUnknown_203AF98].unk_3 = 0;
+ break;
+ case 4:
+ gUnknown_3005E94[gUnknown_203AF98].unk_3 = 3;
+ break;
+ case 2:
+ gUnknown_3005E94[gUnknown_203AF98].unk_3 = 1;
+ break;
+ case 3:
+ gUnknown_3005E94[gUnknown_203AF98].unk_3 = 2;
+ break;
+ }
+ gUnknown_203B01C = 0;
+ gUnknown_203AF98++;
+ gUnknown_3005E94[gUnknown_203AF98].unk_4 = 0;
+ gUnknown_3005E94[gUnknown_203AF98].unk_6 = 2;
+ gUnknown_3005E94[gUnknown_203AF98].unk_0 = 0;
+ gUnknown_3005E94[gUnknown_203AF98].unk_1 = 0;
+ gUnknown_3005E94[gUnknown_203AF98].unk_2 = 0;
+ gUnknown_3005E94[gUnknown_203AF98].unk_3 = 0;
+ gUnknown_203AF98++;
+ gUnknown_3005E88 = 2;
+ break;
+ }
+}