summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/overworld.s470
-rw-r--r--common_syms/overworld.txt8
-rw-r--r--data/overworld.s63
-rw-r--r--include/field_message_box.h1
-rw-r--r--include/overworld.h2
-rw-r--r--include/quest_log.h18
-rw-r--r--src/overworld.c232
-rw-r--r--src/quest_log.c6
-rw-r--r--sym_common.txt29
9 files changed, 263 insertions, 566 deletions
diff --git a/asm/overworld.s b/asm/overworld.s
index cba7113e4..f17e829e7 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -5,452 +5,6 @@
.text
- thumb_func_start GetMapTypeByGroupAndId
-GetMapTypeByGroupAndId: @ 8056158
- push {lr}
- lsls r0, 24
- asrs r0, 8
- lsrs r0, 16
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x17]
- pop {r1}
- bx r1
- thumb_func_end GetMapTypeByGroupAndId
-
- thumb_func_start get_map_light_level_from_warp
-get_map_light_level_from_warp: @ 8056170
- push {lr}
- movs r2, 0
- ldrsb r2, [r0, r2]
- movs r1, 0x1
- ldrsb r1, [r0, r1]
- adds r0, r2, 0
- bl GetMapTypeByGroupAndId
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end get_map_light_level_from_warp
-
- thumb_func_start GetCurrentMapType
-GetCurrentMapType: @ 8056188
- push {lr}
- ldr r0, _0805619C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r0, 0x4
- bl get_map_light_level_from_warp
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0805619C: .4byte gSaveBlock1Ptr
- thumb_func_end GetCurrentMapType
-
- thumb_func_start GetLastUsedWarpMapType
-GetLastUsedWarpMapType: @ 80561A0
- push {lr}
- ldr r0, _080561B0 @ =gLastUsedWarp
- bl get_map_light_level_from_warp
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080561B0: .4byte gLastUsedWarp
- thumb_func_end GetLastUsedWarpMapType
-
- thumb_func_start GetLastUsedWarpMapSectionId
-GetLastUsedWarpMapSectionId: @ 80561B4
- push {lr}
- ldr r1, _080561D4 @ =gLastUsedWarp
- movs r0, 0
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x14]
- pop {r1}
- bx r1
- .align 2, 0
-_080561D4: .4byte gLastUsedWarp
- thumb_func_end GetLastUsedWarpMapSectionId
-
- thumb_func_start IsMapTypeOutdoors
-IsMapTypeOutdoors: @ 80561D8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080561F2
- cmp r0, 0x1
- beq _080561F2
- cmp r0, 0x5
- beq _080561F2
- cmp r0, 0x2
- beq _080561F2
- cmp r0, 0x6
- bne _080561F6
-_080561F2:
- movs r0, 0x1
- b _080561F8
-_080561F6:
- movs r0, 0
-_080561F8:
- pop {r1}
- bx r1
- thumb_func_end IsMapTypeOutdoors
-
- thumb_func_start Overworld_MapTypeAllowsTeleportAndFly
-Overworld_MapTypeAllowsTeleportAndFly: @ 80561FC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _08056212
- cmp r0, 0x1
- beq _08056212
- cmp r0, 0x6
- beq _08056212
- cmp r0, 0x2
- bne _08056216
-_08056212:
- movs r0, 0x1
- b _08056218
-_08056216:
- movs r0, 0
-_08056218:
- pop {r1}
- bx r1
- thumb_func_end Overworld_MapTypeAllowsTeleportAndFly
-
- thumb_func_start IsMapTypeIndoors
-IsMapTypeIndoors: @ 805621C
- push {lr}
- lsls r0, 24
- movs r1, 0xF8
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08056230
- movs r0, 0
- b _08056232
-_08056230:
- movs r0, 0x1
-_08056232:
- pop {r1}
- bx r1
- thumb_func_end IsMapTypeIndoors
-
- thumb_func_start GetSavedWarpRegionMapSectionId
-GetSavedWarpRegionMapSectionId: @ 8056238
- push {lr}
- ldr r0, _0805625C @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x14
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x15]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x14]
- pop {r1}
- bx r1
- .align 2, 0
-_0805625C: .4byte gSaveBlock1Ptr
- thumb_func_end GetSavedWarpRegionMapSectionId
-
- thumb_func_start GetCurrentRegionMapSectionId
-GetCurrentRegionMapSectionId: @ 8056260
- push {lr}
- ldr r0, _08056284 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- 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 Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x14]
- pop {r1}
- bx r1
- .align 2, 0
-_08056284: .4byte gSaveBlock1Ptr
- thumb_func_end GetCurrentRegionMapSectionId
-
- thumb_func_start GetCurrentMapBattleScene
-GetCurrentMapBattleScene: @ 8056288
- push {lr}
- ldr r0, _080562AC @ =gSaveBlock1Ptr
- ldr r1, [r0]
- 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 Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x1B]
- pop {r1}
- bx r1
- .align 2, 0
-_080562AC: .4byte gSaveBlock1Ptr
- thumb_func_end GetCurrentMapBattleScene
-
- thumb_func_start InitOverworldBgs
-InitOverworldBgs: @ 80562B0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- bl MoveSaveBlocks_ResetHeap_
- bl sub_8056E80
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _08056344 @ =gUnknown_826D320
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- movs r0, 0x1
- movs r1, 0x5
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x5
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x3
- movs r1, 0x5
- movs r2, 0x1
- bl SetBgAttribute
- ldr r0, _08056348 @ =gBGTilemapBuffers2
- mov r8, r0
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- bl AllocZeroed
- mov r1, r8
- str r0, [r1]
- ldr r6, _0805634C @ =gBGTilemapBuffers1
- adds r0, r4, 0
- bl AllocZeroed
- str r0, [r6]
- ldr r5, _08056350 @ =gBGTilemapBuffers3
- adds r0, r4, 0
- bl AllocZeroed
- str r0, [r5]
- mov r0, r8
- ldr r1, [r0]
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r6]
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, [r5]
- movs r0, 0x3
- bl SetBgTilemapBuffer
- bl InitStandardTextBoxWindows
- bl ResetBg0
- bl sub_8069348
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08056344: .4byte gUnknown_826D320
-_08056348: .4byte gBGTilemapBuffers2
-_0805634C: .4byte gBGTilemapBuffers1
-_08056350: .4byte gBGTilemapBuffers3
- thumb_func_end InitOverworldBgs
-
- thumb_func_start sub_8056354
-sub_8056354: @ 8056354
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080563E0 @ =gUnknown_826D320
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- movs r0, 0x1
- movs r1, 0x5
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x5
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x3
- movs r1, 0x5
- movs r2, 0x1
- bl SetBgAttribute
- ldr r0, _080563E4 @ =gBGTilemapBuffers2
- mov r8, r0
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- bl AllocZeroed
- mov r1, r8
- str r0, [r1]
- ldr r6, _080563E8 @ =gBGTilemapBuffers1
- adds r0, r4, 0
- bl AllocZeroed
- str r0, [r6]
- ldr r5, _080563EC @ =gBGTilemapBuffers3
- adds r0, r4, 0
- bl AllocZeroed
- str r0, [r5]
- mov r0, r8
- ldr r1, [r0]
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r6]
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, [r5]
- movs r0, 0x3
- bl SetBgTilemapBuffer
- bl InitStandardTextBoxWindows
- bl ResetBg0
- bl sub_8069348
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080563E0: .4byte gUnknown_826D320
-_080563E4: .4byte gBGTilemapBuffers2
-_080563E8: .4byte gBGTilemapBuffers1
-_080563EC: .4byte gBGTilemapBuffers3
- thumb_func_end sub_8056354
-
- thumb_func_start CleanupOverworldWindowsAndTilemaps
-CleanupOverworldWindowsAndTilemaps: @ 80563F0
- push {lr}
- bl FreeAllOverworldWindowBuffers
- ldr r0, _08056414 @ =gBGTilemapBuffers3
- ldr r0, [r0]
- bl Free
- ldr r0, _08056418 @ =gBGTilemapBuffers1
- ldr r0, [r0]
- bl Free
- ldr r0, _0805641C @ =gBGTilemapBuffers2
- ldr r0, [r0]
- bl Free
- pop {r0}
- bx r0
- .align 2, 0
-_08056414: .4byte gBGTilemapBuffers3
-_08056418: .4byte gBGTilemapBuffers1
-_0805641C: .4byte gBGTilemapBuffers2
- thumb_func_end CleanupOverworldWindowsAndTilemaps
-
- thumb_func_start sub_8056420
-sub_8056420: @ 8056420
- push {lr}
- bl ResetSafariZoneFlag
- pop {r0}
- bx r0
- thumb_func_end sub_8056420
-
- thumb_func_start IsUpdateLinkStateCBActive
-IsUpdateLinkStateCBActive: @ 805642C
- push {lr}
- ldr r0, _0805643C @ =gMain
- ldr r1, [r0]
- ldr r0, _08056440 @ =c1_link_related
- cmp r1, r0
- beq _08056444
- movs r0, 0
- b _08056446
- .align 2, 0
-_0805643C: .4byte gMain
-_08056440: .4byte c1_link_related
-_08056444:
- movs r0, 0x1
-_08056446:
- pop {r1}
- bx r1
- thumb_func_end IsUpdateLinkStateCBActive
-
- thumb_func_start sub_805644C
-sub_805644C: @ 805644C
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r4, r1, 0
- bl sub_8112B3C
- bl sub_805BEB8
- mov r6, sp
- mov r0, sp
- bl FieldClearPlayerInput
- mov r0, sp
- adds r1, r5, 0
- adds r2, r4, 0
- bl FieldGetPlayerInput
- mov r0, sp
- bl FieldInput_HandleCancelSignpost
- bl ScriptContext2_IsEnabled
- lsls r0, 24
- cmp r0, 0
- bne _080564BA
- mov r0, sp
- bl ProcessPlayerFieldInput
- cmp r0, 0x1
- bne _080564B0
- ldr r0, _080564A8 @ =gUnknown_3005E88
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0805649E
- ldr r0, _080564AC @ =gInputToStoreInQuestLogMaybe
- bl sub_81127F8
-_0805649E:
- bl ScriptContext2_Enable
- bl DismissMapNamePopup
- b _080564BA
- .align 2, 0
-_080564A8: .4byte gUnknown_3005E88
-_080564AC: .4byte gInputToStoreInQuestLogMaybe
-_080564B0:
- ldrb r0, [r6, 0x2]
- adds r1, r5, 0
- adds r2, r4, 0
- bl player_step
-_080564BA:
- bl RunQuestLogCB
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_805644C
-
thumb_func_start sub_80564C8
sub_80564C8: @ 80564C8
push {lr}
@@ -643,7 +197,7 @@ CB2_NewGame: @ 8056644
push {lr}
bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic
- bl sub_8056420
+ bl ResetSafariZoneFlag_
bl NewGameInitData
bl ResetInitialPlayerAvatarState
bl PlayTimeCounter_Start
@@ -690,7 +244,7 @@ CB2_WhiteOut: @ 80566A4
bls _08056702
bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic
- bl sub_8056420
+ bl ResetSafariZoneFlag_
bl sub_8054BC8
movs r0, 0x2
bl sub_80559F8
@@ -796,7 +350,7 @@ c2_80567AC: @ 80567AC
cmp r0, 0
beq _080567CC
bl SetFieldVBlankCallback
- ldr r0, _080567D4 @ =c1_link_related
+ ldr r0, _080567D4 @ =CB1_UpdateLinkState
bl SetMainCallback1
bl sub_80578D8
ldr r0, _080567D8 @ =sub_80565B4
@@ -806,7 +360,7 @@ _080567CC:
bx r0
.align 2, 0
_080567D0: .4byte gMain + 0x438
-_080567D4: .4byte c1_link_related
+_080567D4: .4byte CB1_UpdateLinkState
_080567D8: .4byte sub_80565B4
thumb_func_end c2_80567AC
@@ -875,7 +429,7 @@ c2_8056854: @ 8056854
push {lr}
bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic
- ldr r0, _08056878 @ =c1_link_related
+ ldr r0, _08056878 @ =CB1_UpdateLinkState
bl SetMainCallback1
bl sub_80578D8
ldr r0, _0805687C @ =gWirelessCommType
@@ -886,7 +440,7 @@ c2_8056854: @ 8056854
ldr r0, _08056884 @ =FieldCB_ReturnToFieldWirelessLink
b _0805688C
.align 2, 0
-_08056878: .4byte c1_link_related
+_08056878: .4byte CB1_UpdateLinkState
_0805687C: .4byte gWirelessCommType
_08056880: .4byte gFieldCallback
_08056884: .4byte FieldCB_ReturnToFieldWirelessLink
@@ -989,7 +543,7 @@ CB2_ContinueSavedGame: @ 8056938
push {lr}
bl FieldClearVBlankHBlankCallbacks
bl StopMapMusic
- bl sub_8056420
+ bl ResetSafariZoneFlag_
bl LoadSaveblockMapHeader
bl sub_80550A8
bl UnfreezeObjectEvents
@@ -2274,7 +1828,7 @@ sub_8057430: @ 8057430
ldr r1, _08057484 @ =gUnknown_2036E28
movs r0, 0x3
strb r0, [r1]
- bl sub_8056420
+ bl ResetSafariZoneFlag_
bl LoadSaveblockMapHeader
bl sub_80550A8
bl UnfreezeObjectEvents
@@ -2541,7 +2095,7 @@ _0805766C:
.4byte _0805770C
.4byte _08057712
_08057690:
- bl sub_8056354
+ bl InitOverworldBgs_NoResetHeap
movs r0, 0
bl mli0_load_map
b _0805772A
@@ -2784,8 +2338,8 @@ _0805787C: .4byte gPaletteFade
_08057880: .4byte CB2_LoadMap
thumb_func_end sub_8057854
- thumb_func_start c1_link_related
-c1_link_related: @ 8057884
+ thumb_func_start CB1_UpdateLinkState
+CB1_UpdateLinkState: @ 8057884
push {r4,lr}
ldr r0, _080578C8 @ =gWirelessCommType
ldrb r0, [r0]
@@ -2820,7 +2374,7 @@ _080578C8: .4byte gWirelessCommType
_080578CC: .4byte gLocalLinkPlayerId
_080578D0: .4byte gLinkPartnersHeldKeys
_080578D4: .4byte gUnknown_3000E84
- thumb_func_end c1_link_related
+ thumb_func_end CB1_UpdateLinkState
thumb_func_start sub_80578D8
sub_80578D8: @ 80578D8
diff --git a/common_syms/overworld.txt b/common_syms/overworld.txt
new file mode 100644
index 000000000..e2aec44b1
--- /dev/null
+++ b/common_syms/overworld.txt
@@ -0,0 +1,8 @@
+gBGTilemapBuffers1
+gBGTilemapBuffers2
+gBGTilemapBuffers3
+gFieldCallback
+gFieldCallback2
+gHeldKeyCodeToSend
+gLocalLinkPlayerId
+gFieldLinkPlayerCount
diff --git a/data/overworld.s b/data/overworld.s
index 37ab8c9bd..7104acdc6 100644
--- a/data/overworld.s
+++ b/data/overworld.s
@@ -5,69 +5,6 @@
.section .rodata
.align 2, 0
-sUnusedData:: @ 826D2B8
- .4byte 1200
- .4byte 3600
- .4byte 1200
- .4byte 2400
- .4byte 50
- .4byte 80
- .4byte -44
- .4byte 44
-
-gDirectionToVectors:: @ 826D2D8
- .4byte 0, 0
- .4byte 0, 1
- .4byte 0, -1
- .4byte -1, 0
- .4byte 1, 0
- .4byte -1, 1
- .4byte 1, 1
- .4byte -1, -1
- .4byte 1, -1
-
-gUnknown_826D320:: @ 826D320
- .4byte 0x000001f8
- @ {
- @ .bg = 0,
- @ .charBaseIndex = 2,
- @ .mapBaseIndex = 31,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000011d1
- @ {
- @ .bg = 1,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 29,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 1,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000021c2
- @ {
- @ .bg = 2,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 28,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 2,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000031e3
- @ {
- @ .bg = 3,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 30,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 3,
- @ .baseTile = 0x0000
- @ }
-
gFlashEffectParams:: @ 826D330
.4byte REG_WIN0H
.4byte (2 >> 1) | ((DMA_16BIT | DMA_DEST_RELOAD | DMA_SRC_INC | DMA_REPEAT | DMA_START_HBLANK | DMA_ENABLE) << 16)
diff --git a/include/field_message_box.h b/include/field_message_box.h
index a6ef14aae..b822fb8f7 100644
--- a/include/field_message_box.h
+++ b/include/field_message_box.h
@@ -9,5 +9,6 @@ bool8 ShowFieldAutoScrollMessage(const u8 *message);
void HideFieldMessageBox(void);
bool8 IsFieldMessageBoxHidden(void);
bool8 textbox_any_visible(void);
+void sub_8069348(void);
#endif // GUARD_FIELD_MESSAGE_BOX_H
diff --git a/include/overworld.h b/include/overworld.h
index 3da3667b1..b0311c51c 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -53,7 +53,7 @@ struct CreditsOverworldCmd
#define MUSIC_DISABLE_STOP 1
#define MUSIC_DISABLE_KEEP 2
-extern struct UCoords32 gDirectionToVectors[];
+extern const struct UCoords32 gDirectionToVectors[];
extern struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4];
extern MainCallback gFieldCallback;
diff --git a/include/quest_log.h b/include/quest_log.h
index c92c3dd16..a353cf709 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -4,23 +4,10 @@
#include "global.h"
#include "quest_log_battle.h"
#include "constants/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;
-};
+#include "field_control_avatar.h"
extern u8 gQuestLogState;
extern u8 gUnknown_3005E88;
-extern u16 sNumEventsInLogEntry;
-extern struct UnkStruct_3005E90 gUnknown_3005E90;
-extern struct QuestLogEntry * sCurQuestLogEntry;
extern const u16 gUnknown_84566A8[];
void sub_8112720(u8);
@@ -61,5 +48,8 @@ void sub_8112588(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId, u8 dur
void sub_8112C9C(void);
void sub_8110920(void);
void sub_8111708(void);
+void sub_81127F8(struct FieldInput * a0);
+void sub_8112B3C(void);
+void RunQuestLogCB(void);
#endif //GUARD_QUEST_LOG_H
diff --git a/src/overworld.c b/src/overworld.c
index a7d23d870..d4299d044 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -4,6 +4,7 @@
#include "event_scripts.h"
#include "field_camera.h"
#include "field_control_avatar.h"
+#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
#include "field_specials.h"
@@ -15,11 +16,13 @@
#include "map_name_popup.h"
#include "metatile_behavior.h"
#include "money.h"
+#include "new_menu_helpers.h"
#include "overworld.h"
#include "quest_log.h"
#include "random.h"
#include "renewable_hidden_items.h"
#include "roamer.h"
+#include "safari_zone.h"
#include "save_location.h"
#include "script.h"
#include "script_pokemon_util.h"
@@ -61,6 +64,15 @@ EWRAM_DATA s16 gUnknown_2031DEA = 0;
// File boundary perhaps?
EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {};
+u16 *gBGTilemapBuffers1;
+u16 *gBGTilemapBuffers2;
+u16 *gBGTilemapBuffers3;
+void (*gFieldCallback)(void);
+bool8 (*gFieldCallback2)(void);
+u16 gHeldKeyCodeToSend;
+u8 gLocalLinkPlayerId;
+u8 gFieldLinkPlayerCount;
+
u8 CountBadgesForOverworldWhiteOutLossCalculation(void);
void Overworld_ResetStateAfterWhitingOut(void);
void Overworld_SetWhiteoutRespawnPoint(void);
@@ -72,6 +84,10 @@ void SetDefaultFlashLevel(void);
void Overworld_TryMapConnectionMusicTransition(void);
void ChooseAmbientCrySpecies(void);
+void MoveSaveBlocks_ResetHeap_(void);
+void sub_8056E80(void);
+void CB1_UpdateLinkState(void);
+
extern const struct MapLayout * gMapLayouts[];
extern const struct MapHeader *const *gMapGroups[];
@@ -1057,3 +1073,219 @@ bool32 sub_8056124(u16 music)
}
return TRUE;
}
+
+u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum)
+{
+ return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->mapType;
+}
+
+u8 GetMapTypeByWarpData(struct WarpData *warp)
+{
+ return GetMapTypeByGroupAndId(warp->mapGroup, warp->mapNum);
+}
+
+u8 GetCurrentMapType(void)
+{
+ return GetMapTypeByWarpData(&gSaveBlock1Ptr->location);
+}
+
+u8 GetLastUsedWarpMapType(void)
+{
+ return GetMapTypeByWarpData(&gLastUsedWarp);
+}
+
+u8 GetLastUsedWarpMapSectionId(void)
+{
+ return Overworld_GetMapHeaderByGroupAndId(gLastUsedWarp.mapGroup, gLastUsedWarp.mapNum)->regionMapSectionId;
+}
+
+bool8 IsMapTypeOutdoors(u8 mapType)
+{
+ if (mapType == MAP_TYPE_ROUTE
+ || mapType == MAP_TYPE_TOWN
+ || mapType == MAP_TYPE_UNDERWATER
+ || mapType == MAP_TYPE_CITY
+ || mapType == MAP_TYPE_OCEAN_ROUTE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType)
+{
+ if (mapType == MAP_TYPE_ROUTE
+ || mapType == MAP_TYPE_TOWN
+ || mapType == MAP_TYPE_OCEAN_ROUTE
+ || mapType == MAP_TYPE_CITY)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 IsMapTypeIndoors(u8 mapType)
+{
+ if (mapType == MAP_TYPE_INDOOR
+ || mapType == MAP_TYPE_SECRET_BASE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u8 GetSavedWarpRegionMapSectionId(void)
+{
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->dynamicWarp.mapGroup, gSaveBlock1Ptr->dynamicWarp.mapNum)->regionMapSectionId;
+}
+
+u8 GetCurrentRegionMapSectionId(void)
+{
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId;
+}
+
+u8 GetCurrentMapBattleScene(void)
+{
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->battleType;
+}
+
+const int sUnusedData[] = {
+ 1200,
+ 3600,
+ 1200,
+ 2400,
+ 50,
+ 80,
+ -44,
+ 44
+};
+
+const struct UCoords32 gDirectionToVectors[] = {
+ { 0u, 0u},
+ { 0u, 1u},
+ { 0u, -1u},
+ {-1u, 0u},
+ { 1u, 0u},
+ {-1u, 1u},
+ { 1u, 1u},
+ {-1u, -1u},
+ { 1u, -1u},
+};
+
+const struct BgTemplate sOverworldBgTemplates[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }
+};
+
+void InitOverworldBgs(void)
+{
+ MoveSaveBlocks_ResetHeap_();
+ sub_8056E80();
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, sOverworldBgTemplates, NELEMS(sOverworldBgTemplates));
+ SetBgAttribute(1, BG_ATTR_MOSAIC, TRUE);
+ SetBgAttribute(2, BG_ATTR_MOSAIC, TRUE);
+ SetBgAttribute(3, BG_ATTR_MOSAIC, TRUE);
+ gBGTilemapBuffers2 = AllocZeroed(BG_SCREEN_SIZE);
+ gBGTilemapBuffers1 = AllocZeroed(BG_SCREEN_SIZE);
+ gBGTilemapBuffers3 = AllocZeroed(BG_SCREEN_SIZE);
+ SetBgTilemapBuffer(1, gBGTilemapBuffers2);
+ SetBgTilemapBuffer(2, gBGTilemapBuffers1);
+ SetBgTilemapBuffer(3, gBGTilemapBuffers3);
+ InitStandardTextBoxWindows();
+ ResetBg0();
+ sub_8069348();
+}
+
+void InitOverworldBgs_NoResetHeap(void)
+{
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, sOverworldBgTemplates, NELEMS(sOverworldBgTemplates));
+ SetBgAttribute(1, BG_ATTR_MOSAIC, TRUE);
+ SetBgAttribute(2, BG_ATTR_MOSAIC, TRUE);
+ SetBgAttribute(3, BG_ATTR_MOSAIC, TRUE);
+ gBGTilemapBuffers2 = AllocZeroed(BG_SCREEN_SIZE);
+ gBGTilemapBuffers1 = AllocZeroed(BG_SCREEN_SIZE);
+ gBGTilemapBuffers3 = AllocZeroed(BG_SCREEN_SIZE);
+ SetBgTilemapBuffer(1, gBGTilemapBuffers2);
+ SetBgTilemapBuffer(2, gBGTilemapBuffers1);
+ SetBgTilemapBuffer(3, gBGTilemapBuffers3);
+ InitStandardTextBoxWindows();
+ ResetBg0();
+ sub_8069348();
+}
+
+void CleanupOverworldWindowsAndTilemaps(void)
+{
+ FreeAllOverworldWindowBuffers();
+ Free(gBGTilemapBuffers3);
+ Free(gBGTilemapBuffers1);
+ Free(gBGTilemapBuffers2);
+}
+
+void ResetSafariZoneFlag_(void)
+{
+ ResetSafariZoneFlag();
+}
+
+bool32 IsUpdateLinkStateCBActive(void)
+{
+ if (gMain.callback1 == CB1_UpdateLinkState)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_805644C(u16 newKeys, u16 heldKeys)
+{
+ struct FieldInput fieldInput;
+
+ sub_8112B3C();
+ sub_805BEB8();
+ FieldClearPlayerInput(&fieldInput);
+ FieldGetPlayerInput(&fieldInput, newKeys, heldKeys);
+ FieldInput_HandleCancelSignpost(&fieldInput);
+ if (!ScriptContext2_IsEnabled())
+ {
+ if (ProcessPlayerFieldInput(&fieldInput) == TRUE)
+ {
+ if (gUnknown_3005E88 == 2)
+ sub_81127F8(&gInputToStoreInQuestLogMaybe);
+ ScriptContext2_Enable();
+ DismissMapNamePopup();
+ }
+ else
+ {
+ player_step(fieldInput.dpadDirection, newKeys, heldKeys);
+ }
+ }
+ RunQuestLogCB();
+}
diff --git a/src/quest_log.c b/src/quest_log.c
index 21a05f407..f705335da 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -96,7 +96,7 @@ struct UnkStruct_203B044
u8 gUnknown_3005E88;
u16 sNumEventsInLogEntry;
-struct UnkStruct_3005E90 gUnknown_3005E90;
+struct FieldInput gUnknown_3005E90;
struct QuestLogEntry * sCurQuestLogEntry;
static struct UnkStruct_300201C * sFlagOrVarRecords;
@@ -1536,7 +1536,7 @@ void sub_811278C(u8 movementActionId, u8 duration)
}
}
-void sub_81127F8(struct UnkStruct_3005E90 * a0)
+void sub_81127F8(struct FieldInput * a0)
{
if (sQuestLogCursor < sNumEventsInLogEntry)
{
@@ -1616,7 +1616,7 @@ static void SetUpQuestLogEntry(u8 kind, struct QuestLogEntry *entry, u16 size)
}
sQuestLogCursor = 0;
gUnknown_203B01C = 0;
- gUnknown_3005E90 = (struct UnkStruct_3005E90){};
+ gUnknown_3005E90 = (struct FieldInput){};
sNextStepDelay = sCurQuestLogEntry[sQuestLogCursor].unk_4;
sMovementScripts[0][0] = sCurQuestLogEntry[sQuestLogCursor].unk_3;
sMovementScripts[0][1] = 0xFF;
diff --git a/sym_common.txt b/sym_common.txt
index 2a03004de..90e0f5104 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -18,33 +18,8 @@
.include "random.o"
.align 2
.include "load_save.o"
-
- .align 2
- @ .include "overworld.o"
-gBGTilemapBuffers1: @ 3005014
- .space 0x4
-
-gBGTilemapBuffers2: @ 3005018
- .space 0x4
-
-gBGTilemapBuffers3: @ 300501C
- .space 0x4
-
-gFieldCallback: @ 3005020
- .space 0x4
-
-gFieldCallback2: @ 3005024
- .space 0x4
-
-gHeldKeyCodeToSend: @ 3005028
- .space 0x4
-
-gLocalLinkPlayerId: @ 300502C
- .space 0x4
-
-gFieldLinkPlayerCount: @ 3005030
- .space 0x10
-
+ .align 2
+ .include "overworld.o"
.align 4
.include "fieldmap.o"
.align 4