diff options
-rw-r--r-- | asm/overworld.s | 470 | ||||
-rw-r--r-- | common_syms/overworld.txt | 8 | ||||
-rw-r--r-- | data/overworld.s | 63 | ||||
-rw-r--r-- | include/field_message_box.h | 1 | ||||
-rw-r--r-- | include/overworld.h | 2 | ||||
-rw-r--r-- | include/quest_log.h | 18 | ||||
-rw-r--r-- | src/overworld.c | 232 | ||||
-rw-r--r-- | src/quest_log.c | 6 | ||||
-rw-r--r-- | sym_common.txt | 29 |
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 |