summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/quest_log.s206
-rw-r--r--include/event_data.h1
-rw-r--r--include/item.h2
-rw-r--r--include/overworld.h5
-rw-r--r--src/quest_log.c59
5 files changed, 65 insertions, 208 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s
index 9bde28c53..f2da90afc 100644
--- a/asm/quest_log.s
+++ b/asm/quest_log.s
@@ -5,212 +5,6 @@
.text
- thumb_func_start sub_8111274
-sub_8111274: @ 8111274
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- cmp r1, 0
- bne _081112D4
- ldr r3, _081112C8 @ =gSaveBlock1Ptr
- ldr r2, [r3]
- movs r0, 0xCD
- lsls r0, 3
- adds r1, r4, 0
- muls r1, r0
- adds r0, r2, r1
- ldr r4, _081112CC @ =0x00001301
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r2, 0x4]
- ldr r2, [r3]
- adds r0, r2, r1
- adds r4, 0x1
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r2, 0x5]
- ldr r2, [r3]
- adds r0, r2, r1
- adds r4, 0x1
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r2, 0x6]
- ldr r2, [r3]
- adds r1, r2, r1
- ldr r3, _081112D0 @ =0x00001304
- adds r0, r1, r3
- ldrh r0, [r0]
- strh r0, [r2]
- adds r4, 0x3
- adds r1, r4
- ldrh r0, [r1]
- strh r0, [r2, 0x2]
- b _08111336
- .align 2, 0
-_081112C8: .4byte gSaveBlock1Ptr
-_081112CC: .4byte 0x00001301
-_081112D0: .4byte 0x00001304
-_081112D4:
- ldr r0, _08111340 @ =gSaveBlock1Ptr
- ldr r3, [r0]
- movs r0, 0xCD
- lsls r0, 3
- muls r0, r4
- adds r3, r0
- ldr r1, _08111344 @ =0x00001301
- adds r0, r3, r1
- ldrb r2, [r0]
- ldr r0, _08111348 @ =0xffffff00
- ldr r1, [sp]
- ands r1, r0
- orrs r1, r2
- str r1, [sp]
- ldr r2, _0811134C @ =0x00001302
- adds r0, r3, r2
- ldrb r0, [r0]
- lsls r0, 8
- ldr r2, _08111350 @ =0xffff00ff
- ands r2, r1
- orrs r2, r0
- str r2, [sp]
- ldr r4, _08111354 @ =0x00001303
- adds r0, r3, r4
- ldrb r1, [r0]
- lsls r1, 16
- ldr r0, _08111358 @ =0xff00ffff
- ands r0, r2
- orrs r0, r1
- str r0, [sp]
- ldr r1, _0811135C @ =0x00001304
- adds r0, r3, r1
- ldrh r1, [r0]
- ldr r0, _08111360 @ =0xffff0000
- ldr r2, [sp, 0x4]
- ands r2, r0
- orrs r2, r1
- str r2, [sp, 0x4]
- adds r4, 0x3
- adds r3, r4
- ldrh r1, [r3]
- lsls r1, 16
- ldr r0, _08111364 @ =0x0000ffff
- ands r0, r2
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl sub_8055D5C
-_08111336:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08111340: .4byte gSaveBlock1Ptr
-_08111344: .4byte 0x00001301
-_08111348: .4byte 0xffffff00
-_0811134C: .4byte 0x00001302
-_08111350: .4byte 0xffff00ff
-_08111354: .4byte 0x00001303
-_08111358: .4byte 0xff00ffff
-_0811135C: .4byte 0x00001304
-_08111360: .4byte 0xffff0000
-_08111364: .4byte 0x0000ffff
- thumb_func_end sub_8111274
-
- thumb_func_start sub_8111368
-sub_8111368: @ 8111368
- push {lr}
- ldr r1, _081113A0 @ =gUnknown_203ADFA
- movs r0, 0x2
- strb r0, [r1]
- bl sub_806E6FC
- bl sub_809A2DC
- bl sub_809A2A4
- bl sub_8110AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081113B4
- ldr r0, _081113A4 @ =gUnknown_203ADF8
- ldrb r0, [r0]
- movs r1, 0
- bl sub_8111274
- ldr r1, _081113A8 @ =gUnknown_3005024
- ldr r0, _081113AC @ =sub_8111038
- str r0, [r1]
- ldr r0, _081113B0 @ =sub_80572A8
- bl SetMainCallback2
- b _081113CE
- .align 2, 0
-_081113A0: .4byte gUnknown_203ADFA
-_081113A4: .4byte gUnknown_203ADF8
-_081113A8: .4byte gUnknown_3005024
-_081113AC: .4byte sub_8111038
-_081113B0: .4byte sub_80572A8
-_081113B4:
- ldr r0, _081113D4 @ =gUnknown_203ADF8
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8111274
- bl warp_in
- ldr r1, _081113D8 @ =gUnknown_3005024
- ldr r0, _081113DC @ =sub_8111000
- str r0, [r1]
- ldr r0, _081113E0 @ =sub_805726C
- bl SetMainCallback2
-_081113CE:
- pop {r0}
- bx r0
- .align 2, 0
-_081113D4: .4byte gUnknown_203ADF8
-_081113D8: .4byte gUnknown_3005024
-_081113DC: .4byte sub_8111000
-_081113E0: .4byte sub_805726C
- thumb_func_end sub_8111368
-
- thumb_func_start sub_81113E4
-sub_81113E4: @ 81113E4
- push {r4,r5,lr}
- ldr r4, _08111430 @ =gSaveBlock1Ptr
- ldr r0, _08111434 @ =gUnknown_203ADF8
- ldrb r1, [r0]
- movs r0, 0xCD
- lsls r0, 3
- muls r0, r1
- movs r1, 0x98
- lsls r1, 5
- adds r0, r1
- ldr r1, [r4]
- adds r5, r1, r0
- movs r2, 0xA4
- lsls r2, 1
- adds r0, r5, r2
- movs r2, 0xEE
- lsls r2, 4
- adds r1, r2
- movs r2, 0x90
- bl CpuSet
- movs r1, 0x9A
- lsls r1, 2
- adds r0, r5, r1
- ldr r1, [r4]
- movs r2, 0x80
- lsls r2, 5
- adds r1, r2
- movs r2, 0x80
- lsls r2, 1
- bl CpuSet
- bl sub_8111688
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08111430: .4byte gSaveBlock1Ptr
-_08111434: .4byte gUnknown_203ADF8
- thumb_func_end sub_81113E4
-
thumb_func_start sub_8111438
sub_8111438: @ 8111438
push {r4-r7,lr}
diff --git a/include/event_data.h b/include/event_data.h
index f28ed4f75..77bc41603 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -31,6 +31,7 @@ u8 FlagClear(u16 id);
bool8 FlagGet(u16 id);
u16 * sub_806E454(u16 id);
bool32 sub_806E2BC(void);
+void sub_806E6FC(void);
extern u16 gSpecialVar_0x8000;
extern u16 gSpecialVar_0x8001;
diff --git a/include/item.h b/include/item.h
index a136f03ec..199b3b65e 100644
--- a/include/item.h
+++ b/include/item.h
@@ -60,5 +60,7 @@ u8 ItemId_GetBattleUsage(u16 itemId);
ItemUseFunc ItemId_GetBattleFunc(u16 itemId);
u8 ItemId_GetSecondaryId(u16 itemId);
u16 itemid_get_market_price(u16 itemId);
+void sub_809A2DC(void);
+void sub_809A2A4(void);
#endif // ITEM_H
diff --git a/include/overworld.h b/include/overworld.h
index 7f7c92743..ab9e114ef 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -72,7 +72,12 @@ void IncrementGameStat(u8);
u32 GetGameStat(u8);
void sub_8056938(void);
+void sub_8055D5C(struct WarpData *);
+void sub_80572A8(void);
+void sub_805726C(void);
extern u8 gUnknown_2031DD8;
+extern bool8 (* gUnknown_3005024)(void);
+
#endif //GUARD_ROM4_H
diff --git a/src/quest_log.c b/src/quest_log.c
index 3e41d7d31..d03319434 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -10,6 +10,7 @@
#include "script.h"
#include "overworld.h"
#include "field_fadetransition.h"
+#include "item.h"
#include "wild_encounter.h"
#include "help_system.h"
#include "unk_8159F40.h"
@@ -57,6 +58,7 @@ void sub_8110F90(u8);
void sub_8111150(u8);
void sub_8111368(void);
void sub_81115E8(void);
+void sub_8111688(void);
void sub_811175C(u8, struct UnkStruct_203AE98 *);
void sub_81118F4(s8);
void sub_81138F8(void);
@@ -434,8 +436,8 @@ void sub_8110D48(u8 a0)
{
struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0];
- CpuCopy16(gSaveBlock1Ptr->flags, questLog->unk_148, 0x120);
- CpuCopy16(gSaveBlock1Ptr->vars, questLog->unk_268, 0x200);
+ CpuCopy16(gSaveBlock1Ptr->flags, questLog->unk_148, FLAGS_COUNT * sizeof(u8));
+ CpuCopy16(gSaveBlock1Ptr->vars, questLog->unk_268, VARS_COUNT * sizeof(u16));
}
void sub_8110D94(void)
@@ -621,3 +623,56 @@ void sub_8111150(u8 a0)
sub_815A1F8(questLog, gSaveBlock1Ptr->mapObjectTemplates);
}
+
+void sub_8111274(u8 a0, u8 a1)
+{
+ struct WarpData sp0;
+
+ if (!a1)
+ {
+ gSaveBlock1Ptr->location.mapGroup = gSaveBlock1Ptr->questLog[a0].unk_001;
+ gSaveBlock1Ptr->location.mapNum = gSaveBlock1Ptr->questLog[a0].unk_002;
+ gSaveBlock1Ptr->location.warpId = gSaveBlock1Ptr->questLog[a0].unk_003;
+ gSaveBlock1Ptr->pos.x = gSaveBlock1Ptr->questLog[a0].unk_004;
+ gSaveBlock1Ptr->pos.y = gSaveBlock1Ptr->questLog[a0].unk_006;
+ }
+ else
+ {
+ sp0.mapGroup = gSaveBlock1Ptr->questLog[a0].unk_001;
+ sp0.mapNum = gSaveBlock1Ptr->questLog[a0].unk_002;
+ sp0.warpId = gSaveBlock1Ptr->questLog[a0].unk_003;
+ sp0.x = gSaveBlock1Ptr->questLog[a0].unk_004;
+ sp0.y = gSaveBlock1Ptr->questLog[a0].unk_006;
+ sub_8055D5C(&sp0);
+ }
+}
+
+void sub_8111368(void)
+{
+ gUnknown_203ADFA = 2;
+ sub_806E6FC();
+ sub_809A2DC();
+ sub_809A2A4();
+ if (sub_8110AC8() == 1)
+ {
+ sub_8111274(gUnknown_203ADF8, 0);
+ gUnknown_3005024 = sub_8111038;
+ SetMainCallback2(sub_80572A8);
+ }
+ else
+ {
+ sub_8111274(gUnknown_203ADF8, 1);
+ warp_in();
+ gUnknown_3005024 = sub_8111000;
+ SetMainCallback2(sub_805726C);
+ }
+}
+
+void sub_81113E4(void)
+{
+ struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[gUnknown_203ADF8];
+
+ CpuCopy16(questLog->unk_148, gSaveBlock1Ptr->flags, FLAGS_COUNT * sizeof(u8));
+ CpuCopy16(questLog->unk_268, gSaveBlock1Ptr->vars, VARS_COUNT * sizeof(u16));
+ sub_8111688();
+}