summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-03-27 18:08:28 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-03-27 18:08:28 -0400
commitfe9c3d3b58b2cf13f9bd7e61eceb249dfcf398a7 (patch)
treee33566286c58b95e20b70aabb1ccba930ba07f18
parenta03906a1a3b8954fa8c27f6e5a9e89cdd0b57a1e (diff)
through sub_8055B38
-rw-r--r--asm/overworld.s522
-rw-r--r--include/constants/flags.h2
-rw-r--r--include/event_data.h1
-rw-r--r--include/field_specials.h2
-rw-r--r--include/field_weather.h1
-rw-r--r--include/fieldmap.h7
-rw-r--r--include/overworld.h4
-rw-r--r--include/quest_log.h2
-rw-r--r--include/script.h4
-rw-r--r--include/vs_seeker.h1
-rw-r--r--src/event_data.c2
-rw-r--r--src/field_specials.c2
-rw-r--r--src/fieldmap.c2
-rw-r--r--src/item_use.c2
-rw-r--r--src/overworld.c228
-rw-r--r--src/script.c4
-rw-r--r--src/vs_seeker.c2
17 files changed, 264 insertions, 524 deletions
diff --git a/asm/overworld.s b/asm/overworld.s
index 7e4a266d3..e80494b70 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -5,490 +5,8 @@
.text
- thumb_func_start GetMapConnection
-GetMapConnection: @ 805578C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080557A0 @ =gMapHeader
- ldr r0, [r0, 0xC]
- ldr r3, [r0]
- ldr r1, [r0, 0x4]
- cmp r1, 0
- bne _080557A8
- b _080557BC
- .align 2, 0
-_080557A0: .4byte gMapHeader
-_080557A4:
- adds r0, r1, 0
- b _080557BE
-_080557A8:
- movs r2, 0
- cmp r2, r3
- bge _080557BC
-_080557AE:
- ldrb r0, [r1]
- cmp r0, r4
- beq _080557A4
- adds r2, 0x1
- adds r1, 0xC
- cmp r2, r3
- blt _080557AE
-_080557BC:
- movs r0, 0
-_080557BE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetMapConnection
-
- thumb_func_start sub_80557C4
-sub_80557C4: @ 80557C4
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r5, r2, 16
- bl GetMapConnection
- adds r1, r0, 0
- cmp r1, 0
- beq _080557FC
- movs r0, 0x8
- ldrsb r0, [r1, r0]
- ldrb r1, [r1, 0x9]
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- lsls r3, r4, 24
- asrs r3, 24
- lsls r4, r5, 24
- asrs r4, 24
- str r4, [sp]
- bl SetWarpDestination
- b _08055818
-_080557FC:
- bl mapheader_run_script_with_tag_x6
- ldr r0, _08055810 @ =gFixedDiveWarp
- bl IsDummyWarp
- cmp r0, 0
- beq _08055814
- movs r0, 0
- b _0805581A
- .align 2, 0
-_08055810: .4byte gFixedDiveWarp
-_08055814:
- bl SetWarpDestinationToDiveWarp
-_08055818:
- movs r0, 0x1
-_0805581A:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80557C4
-
- thumb_func_start SetDiveWarpEmerge
-SetDiveWarpEmerge: @ 8055824
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- lsls r3, 16
- lsrs r3, 16
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x6
- adds r1, r3, 0
- bl sub_80557C4
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end SetDiveWarpEmerge
-
- thumb_func_start SetDiveWarpDive
-SetDiveWarpDive: @ 8055844
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- lsls r3, 16
- lsrs r3, 16
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x5
- adds r1, r3, 0
- bl sub_80557C4
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end SetDiveWarpDive
-
- thumb_func_start sub_8055864
-sub_8055864: @ 8055864
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsls r1, 24
- lsrs r5, r0, 24
- asrs r0, 24
- lsrs r4, r1, 24
- asrs r1, 24
- movs r3, 0x1
- negs r3, r3
- str r3, [sp]
- adds r2, r3, 0
- bl SetWarpDestination
- bl sub_8055E94
- bl ApplyCurrentWarp
- bl LoadCurrentMapData
- bl sub_8054F68
- bl TrySetMapSaveWarpStatus
- bl sub_806E110
- bl nullsub_74
- bl RestartWildEncounterImmunitySteps
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_810C578
- bl SetSav1WeatherFromCurrMapHeader
- bl sub_805610C
- bl sub_8055CB8
- bl Overworld_ClearSavedMusic
- bl mapheader_run_script_with_tag_x3
- bl TryRegenerateRenewableHiddenItems
- bl InitMap
- ldr r4, _0805591C @ =gMapHeader
- ldr r0, [r4]
- bl copy_map_tileset2_to_vram_2
- ldr r0, [r4]
- bl apply_map_tileset2_palette
- movs r4, 0x7
-_080558D4:
- lsls r0, r4, 24
- lsrs r0, 24
- bl ApplyWeatherGammaShiftToPal
- adds r4, 0x1
- cmp r4, 0xC
- ble _080558D4
- bl InitSecondaryTilesetAnimation
- bl UpdateLocationHistoryForRoamer
- bl RoamerMove
- bl sub_8110920
- bl DoCurrentWeather
- bl ResetFieldTasksArgs
- bl mapheader_run_script_with_tag_x5
- bl GetLastUsedWarpMapSectionId
- ldr r1, _0805591C @ =gMapHeader
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1, 0x14]
- cmp r0, r1
- beq _08055914
- movs r0, 0x1
- bl CreateMapNamePopupIfNotAlreadyRunning
-_08055914:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805591C: .4byte gMapHeader
- thumb_func_end sub_8055864
-
- thumb_func_start sub_8055920
-sub_8055920: @ 8055920
- push {r4,lr}
- bl LoadCurrentMapData
- bl sub_8054F68
- ldr r0, _0805599C @ =gMapHeader
- ldrb r0, [r0, 0x17]
- bl IsMapTypeOutdoors
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl TrySetMapSaveWarpStatus
- bl sub_806E110
- bl nullsub_74
- bl RestartWildEncounterImmunitySteps
- ldr r0, _080559A0 @ =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 sub_810C578
- bl SetSav1WeatherFromCurrMapHeader
- bl sub_805610C
- cmp r4, 0
- beq _08055974
- ldr r0, _080559A4 @ =0x00000806
- bl FlagClear
-_08055974:
- bl sub_8055CB8
- bl Overworld_ClearSavedMusic
- bl mapheader_run_script_with_tag_x3
- bl TryRegenerateRenewableHiddenItems
- bl UpdateLocationHistoryForRoamer
- bl RoamerMoveToOtherLocationSet
- bl sub_8110920
- bl InitMap
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805599C: .4byte gMapHeader
-_080559A0: .4byte gSaveBlock1Ptr
-_080559A4: .4byte 0x00000806
- thumb_func_end sub_8055920
-
- thumb_func_start sub_80559A8
-sub_80559A8: @ 80559A8
- push {lr}
- bl LoadCurrentMapData
- bl sub_8054F68
- ldr r0, _080559E0 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- bl IsMapTypeOutdoors
- bl TrySetMapSaveWarpStatus
- bl SetSav1WeatherFromCurrMapHeader
- bl sub_805610C
- bl sub_8055CB8
- bl sub_8110920
- bl sub_8111708
- bl LoadSaveblockMapHeader
- bl InitMap
- pop {r0}
- bx r0
- .align 2, 0
-_080559E0: .4byte gMapHeader
- thumb_func_end sub_80559A8
-
- thumb_func_start ResetInitialPlayerAvatarState
-ResetInitialPlayerAvatarState: @ 80559E4
- ldr r0, _080559F4 @ =gUnknown_2031DD4
- movs r2, 0
- movs r1, 0x1
- strb r1, [r0, 0x1]
- strb r1, [r0]
- strb r2, [r0, 0x2]
- bx lr
- .align 2, 0
-_080559F4: .4byte gUnknown_2031DD4
- thumb_func_end ResetInitialPlayerAvatarState
-
- thumb_func_start sub_80559F8
-sub_80559F8: @ 80559F8
- ldr r1, _08055A04 @ =gUnknown_2031DD4
- strb r0, [r1, 0x1]
- movs r0, 0x1
- strb r0, [r1]
- strb r0, [r1, 0x2]
- bx lr
- .align 2, 0
-_08055A04: .4byte gUnknown_2031DD4
- thumb_func_end sub_80559F8
-
- thumb_func_start StoreInitialPlayerAvatarState
-StoreInitialPlayerAvatarState: @ 8055A08
- push {r4,lr}
- bl GetPlayerFacingDirection
- ldr r4, _08055A24 @ =gUnknown_2031DD4
- strb r0, [r4, 0x1]
- movs r0, 0x2
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _08055A28
- movs r0, 0x2
- b _08055A5A
- .align 2, 0
-_08055A24: .4byte gUnknown_2031DD4
-_08055A28:
- movs r0, 0x4
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _08055A38
- movs r0, 0x4
- b _08055A5A
-_08055A38:
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _08055A48
- movs r0, 0x8
- b _08055A5A
-_08055A48:
- movs r0, 0x10
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _08055A58
- movs r0, 0x10
- b _08055A5A
-_08055A58:
- movs r0, 0x1
-_08055A5A:
- strb r0, [r4]
- ldr r1, _08055A68 @ =gUnknown_2031DD4
- movs r0, 0
- strb r0, [r1, 0x2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08055A68: .4byte gUnknown_2031DD4
- thumb_func_end StoreInitialPlayerAvatarState
-
- thumb_func_start sub_8055A6C
-sub_8055A6C: @ 8055A6C
- push {r4-r7,lr}
- bl GetCurrentMapType
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- bl sub_8055C74
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r6, _08055ABC @ =gUnknown_2031DD4
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_8055ACC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08055AC0 @ =0xffffff00
- ands r7, r0
- orrs r7, r1
- adds r0, r6, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_8055B74
- lsls r0, 24
- lsrs r0, 16
- ldr r1, _08055AC4 @ =0xffff00ff
- ands r7, r1
- orrs r7, r0
- ldr r0, _08055AC8 @ =0xff00ffff
- ands r7, r0
- str r7, [r6]
- adds r0, r6, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08055ABC: .4byte gUnknown_2031DD4
-_08055AC0: .4byte 0xffffff00
-_08055AC4: .4byte 0xffff00ff
-_08055AC8: .4byte 0xff00ffff
- thumb_func_end sub_8055A6C
-
- thumb_func_start sub_8055ACC
-sub_8055ACC: @ 8055ACC
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r4, 0x8
- beq _08055AE8
- ldr r0, _08055AF0 @ =0x00000802
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _08055B30
-_08055AE8:
- cmp r4, 0x5
- bne _08055AF4
- movs r0, 0x10
- b _08055B32
- .align 2, 0
-_08055AF0: .4byte 0x00000802
-_08055AF4:
- adds r0, r5, 0
- bl sub_8055B38
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08055B30
- lsls r0, r5, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSurfable
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08055B16
- movs r0, 0x8
- b _08055B32
-_08055B16:
- bl sub_8055C9C
- cmp r0, 0x1
- bne _08055B30
- ldrb r0, [r6]
- cmp r0, 0x2
- bne _08055B28
- movs r0, 0x2
- b _08055B32
-_08055B28:
- cmp r0, 0x4
- bne _08055B30
- movs r0, 0x4
- b _08055B32
-_08055B30:
- movs r0, 0x1
-_08055B32:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8055ACC
-
- thumb_func_start sub_8055B38
-sub_8055B38: @ 8055B38
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSurfable
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08055B6C
- ldr r0, _08055B60 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- ldr r0, _08055B64 @ =0x00005601
- cmp r1, r0
- beq _08055B5C
- ldr r0, _08055B68 @ =0x00005701
- cmp r1, r0
- bne _08055B6C
-_08055B5C:
- movs r0, 0x1
- b _08055B6E
- .align 2, 0
-_08055B60: .4byte gSaveBlock1Ptr
-_08055B64: .4byte 0x00005601
-_08055B68: .4byte 0x00005701
-_08055B6C:
- movs r0, 0
-_08055B6E:
- pop {r1}
- bx r1
- thumb_func_end sub_8055B38
-
- thumb_func_start sub_8055B74
-sub_8055B74: @ 8055B74
+ thumb_func_start GetAdjustedInitialDirection
+GetAdjustedInitialDirection: @ 8055B74
push {r4-r7,lr}
adds r6, r0, 0
lsls r1, 24
@@ -616,10 +134,10 @@ _08055C6E:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_8055B74
+ thumb_func_end GetAdjustedInitialDirection
- thumb_func_start sub_8055C74
-sub_8055C74: @ 8055C74
+ thumb_func_start GetCenterScreenMetatileBehavior
+GetCenterScreenMetatileBehavior: @ 8055C74
push {lr}
ldr r0, _08055C98 @ =gSaveBlock1Ptr
ldr r1, [r0]
@@ -638,10 +156,10 @@ sub_8055C74: @ 8055C74
bx r1
.align 2, 0
_08055C98: .4byte gSaveBlock1Ptr
- thumb_func_end sub_8055C74
+ thumb_func_end GetCenterScreenMetatileBehavior
- thumb_func_start sub_8055C9C
-sub_8055C9C: @ 8055C9C
+ thumb_func_start Overworld_IsBikingAllowed
+Overworld_IsBikingAllowed: @ 8055C9C
push {lr}
ldr r0, _08055CAC @ =gMapHeader
ldrb r0, [r0, 0x18]
@@ -656,10 +174,10 @@ _08055CB0:
_08055CB2:
pop {r1}
bx r1
- thumb_func_end sub_8055C9C
+ thumb_func_end Overworld_IsBikingAllowed
- thumb_func_start sub_8055CB8
-sub_8055CB8: @ 8055CB8
+ thumb_func_start SetDefaultFlashLevel
+SetDefaultFlashLevel: @ 8055CB8
push {lr}
ldr r0, _08055CC8 @ =gMapHeader
ldrb r1, [r0, 0x15]
@@ -699,7 +217,7 @@ _08055CFA:
.align 2, 0
_08055D00: .4byte gSaveBlock1Ptr
_08055D04: .4byte gMaxFlashLevel
- thumb_func_end sub_8055CB8
+ thumb_func_end SetDefaultFlashLevel
thumb_func_start Overworld_SetFlashLevel
Overworld_SetFlashLevel: @ 8055D08
@@ -1248,8 +766,8 @@ _08056106:
bx r0
thumb_func_end sub_8056078
- thumb_func_start sub_805610C
-sub_805610C: @ 805610C
+ thumb_func_start ChooseAmbientCrySpecies
+ChooseAmbientCrySpecies: @ 805610C
push {lr}
ldr r0, _0805611C @ =gUnknown_2031DDC
bl GetLocalWildMon
@@ -1260,7 +778,7 @@ sub_805610C: @ 805610C
.align 2, 0
_0805611C: .4byte gUnknown_2031DDC
_08056120: .4byte gUnknown_2031DDA
- thumb_func_end sub_805610C
+ thumb_func_end ChooseAmbientCrySpecies
thumb_func_start sub_8056124
sub_8056124: @ 8056124
@@ -2442,7 +1960,7 @@ _08056AB0:
b _08056B62
_08056ABE:
movs r0, 0x1
- bl sub_8055920
+ bl mli0_load_map
b _08056B62
_08056AC6:
movs r0, 0x1
@@ -2565,7 +2083,7 @@ _08056BD0:
bl InitOverworldBgs
bl FieldClearVBlankHBlankCallbacks
adds r0, r5, 0
- bl sub_8055920
+ bl mli0_load_map
b _08056CCA
_08056BE0:
bl sub_8111F14
@@ -3132,7 +2650,7 @@ mli4_mapscripts_and_other: @ 805709C
mov r0, sp
adds r1, r4, 0
bl GetCameraFocusCoords
- bl sub_8055A6C
+ bl GetInitialPlayerAvatarState
adds r5, r0, 0
mov r0, sp
movs r1, 0
@@ -3474,7 +2992,7 @@ _0805735C:
movs r0, 0
strb r0, [r1]
movs r0, 0
- bl sub_8055920
+ bl mli0_load_map
b _08057412
.align 2, 0
_0805738C: .4byte gUnknown_2031DE0
@@ -3833,7 +3351,7 @@ _0805766C:
_08057690:
bl sub_8056354
movs r0, 0
- bl sub_8055920
+ bl mli0_load_map
b _0805772A
_0805769C:
bl ScanlineEffect_Clear
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 54129cae5..c259c2e12 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1319,7 +1319,7 @@
#define FLAG_SYS_SAFARI_MODE (SYS_FLAGS + 0x0)
#define FLAG_SYS_VS_SEEKER_CHARGING (SYS_FLAGS + 0x1)
-#define FLAG_SYS_UNK_802 (SYS_FLAGS + 0x2)
+#define FLAG_SYS_CRUISE_MODE (SYS_FLAGS + 0x2)
#define FLAG_SYS_WHITE_FLUTE_ACTIVE (SYS_FLAGS + 0x3)
#define FLAG_SYS_BLACK_FLUTE_ACTIVE (SYS_FLAGS + 0x4)
#define FLAG_SYS_USE_STRENGTH (SYS_FLAGS + 0x5)
diff --git a/include/event_data.h b/include/event_data.h
index e635cbc6d..269762b23 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -58,5 +58,6 @@ void ResetMysteryEventFlags(void);
void ResetMysteryEventVars(void);
bool32 IsNationalPokedexEnabled(void);
void sub_806E190(void);
+void ClearTempFieldEventData(void);
#endif // GUARD_EVENT_DATA_H
diff --git a/include/field_specials.h b/include/field_specials.h
index 9c44c35bc..cc51eea87 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -31,5 +31,7 @@ void CutMoveOpenDottedHoleDoor(void);
void RunMassageCooldownStepCounter(void);
void IncrementResortGorgeousStepCounter(void);
void IncrementBirthIslandRockStepCount(void);
+void ResetCyclingRoadChallengeData(void);
+void ResetFieldTasksArgs(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/field_weather.h b/include/field_weather.h
index 432c8c100..44d9e5268 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -143,6 +143,7 @@ void sub_807AC98(void);
void SetRainStrengthFromSoundEffect(u16 soundEffect);
void sub_807A790(s8 gammaIndex);
void sub_807A7C4(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay);
+void ApplyWeatherGammaShiftToPal(u8 paletteIndex);
extern const u16 gCloudsWeatherPalette[];
extern const u16 gSandstormWeatherPalette[];
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 1bdfa8086..1971104fc 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -34,7 +34,10 @@ u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit);
u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr);
void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2);
bool8 CameraMove(s32 x, s32 y);
-void copy_map_tileset1_tileset2_to_vram(struct MapLayout const *mapLayout);
-void apply_map_tileset1_tileset2_palette(struct MapLayout const *mapLayout);
+void copy_map_tileset1_tileset2_to_vram(struct MapLayout const * mapLayout);
+void apply_map_tileset1_tileset2_palette(struct MapLayout const * mapLayout);
+void InitMap(void);
+void copy_map_tileset2_to_vram_2(const struct MapLayout * mapLayout);
+void apply_map_tileset2_palette(const struct MapLayout * mapLayout);
#endif //GUARD_FIELDMAP_H
diff --git a/include/overworld.h b/include/overworld.h
index 2ae7559d2..db214f237 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -141,7 +141,7 @@ extern u8 gUnknown_2036E28;
extern bool8 (* gFieldCallback2)(void);
void SetLastHealLocationWarp(u8 healLocaionId);
-void sub_8055864(u8 mapGroup, u8 mapNum);
+void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum);
void CB2_Overworld(void);
void CB2_OverworldBasic(void);
void CB2_NewGame(void);
@@ -153,7 +153,7 @@ void Overworld_FadeOutMapMusic(void);
void CB2_LoadMap(void);
bool8 BGMusicStopped(void);
bool8 IsMapTypeIndoors(u8 mapType);
-bool32 sub_8055C9C(void);
+bool32 Overworld_IsBikingAllowed(void);
void Overworld_ResetStateAfterDigEscRope(void);
bool32 sub_8058244(void);
u8 GetCurrentMapType(void);
diff --git a/include/quest_log.h b/include/quest_log.h
index 28c69505b..c92c3dd16 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -59,5 +59,7 @@ void sub_8112628(u8 movementActionId);
void sub_81126AC(u8 movementActionId, u8 duration);
void sub_8112588(u8 localId, u8 mapNum, u8 mapGroup, u8 movementActionId, u8 duration);
void sub_8112C9C(void);
+void sub_8110920(void);
+void sub_8111708(void);
#endif //GUARD_QUEST_LOG_H
diff --git a/include/script.h b/include/script.h
index 3dd91ca59..48b169ef1 100644
--- a/include/script.h
+++ b/include/script.h
@@ -49,10 +49,10 @@ u8 *mapheader_get_tagged_pointer(u8 tag);
void mapheader_run_script_by_tag(u8 tag);
u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag);
void RunOnLoadMapScript(void);
-void mapheader_run_script_with_tag_x3(void);
+void RunOnTransitionMapScript(void);
void mapheader_run_script_with_tag_x5(void);
void mapheader_run_script_with_tag_x7(void);
-void mapheader_run_script_with_tag_x6(void);
+void RunOnDiveWarpMapScript(void);
bool8 TryRunOnFrameMapScript(void);
void mapheader_run_first_tag4_script_list_match(void);
u32 CalculateRamScriptChecksum(void);
diff --git a/include/vs_seeker.h b/include/vs_seeker.h
index d80e558ea..8c3b86194 100644
--- a/include/vs_seeker.h
+++ b/include/vs_seeker.h
@@ -15,5 +15,6 @@ u8 sub_810CF54();
void sub_810D0D0(void);
void sub_810CB90(void);
bool8 sub_810C4EC(void);
+void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum);
#endif //GUARD_VS_SEEKER_H
diff --git a/src/event_data.c b/src/event_data.c
index f16267c98..c012a4a59 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -38,7 +38,7 @@ void InitEventData(void)
memset(sSpecialFlags, 0, SPECIAL_FLAGS_COUNT);
}
-void sub_806E110(void)
+void ClearTempFieldEventData(void)
{
memset(gSaveBlock1Ptr->flags, 0, 4);
memset(gSaveBlock1Ptr->vars, 0, 16 * 2);
diff --git a/src/field_specials.c b/src/field_specials.c
index d0c35ae66..0438435f8 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -108,7 +108,7 @@ void ForcePlayerOntoBike(void)
Overworld_ChangeMusicTo(MUS_CYCLING);
}
-void nullsub_74(void)
+void ResetCyclingRoadChallengeData(void)
{
}
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 2b014d4b8..60c6f3dae 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -732,7 +732,7 @@ bool8 CameraMove(s32 x, s32 y)
old_y = gSaveBlock1Ptr->pos.y;
connection = sub_8059600(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y);
sub_80594AC(connection, direction, x, y);
- sub_8055864(connection->mapGroup, connection->mapNum);
+ LoadMapFromCameraTransition(connection->mapGroup, connection->mapNum);
gCamera.active = TRUE;
gCamera.x = old_x - gSaveBlock1Ptr->pos.x;
gCamera.y = old_y - gSaveBlock1Ptr->pos.y;
diff --git a/src/item_use.c b/src/item_use.c
index df3dbaceb..b1751d639 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -268,7 +268,7 @@ void FieldUseFunc_MachBike(u8 taskId)
|| MetatileBehavior_IsIsolatedVerticalRail(behavior) == TRUE
|| MetatileBehavior_IsIsolatedHorizontalRail(behavior) == TRUE)
sub_80A10C4(taskId, gTasks[taskId].data[3], 2, gUnknown_8416451);
- else if (sub_8055C9C() == TRUE && !sub_80BD540())
+ else if (Overworld_IsBikingAllowed() == TRUE && !sub_80BD540())
{
sItemUseOnFieldCB = ItemUseOnFieldCB_Bicycle;
sub_80A103C(taskId);
diff --git a/src/overworld.c b/src/overworld.c
index fcbca19a1..ff16ac47e 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -3,17 +3,25 @@
#include "event_data.h"
#include "event_scripts.h"
#include "field_camera.h"
+#include "field_control_avatar.h"
#include "field_player_avatar.h"
#include "field_specials.h"
+#include "field_weather.h"
#include "fieldmap.h"
#include "heal_location.h"
#include "load_save.h"
+#include "map_name_popup.h"
+#include "metatile_behavior.h"
#include "money.h"
#include "overworld.h"
+#include "quest_log.h"
+#include "renewable_hidden_items.h"
#include "roamer.h"
+#include "save_location.h"
#include "script.h"
#include "script_pokemon_util.h"
#include "tileset_anims.h"
+#include "vs_seeker.h"
#include "constants/maps.h"
#include "constants/flags.h"
#include "constants/species.h"
@@ -22,14 +30,14 @@ struct InitialPlayerAvatarState
{
u8 transitionFlags;
u8 direction;
- u8 unk2;
+ bool8 unk2;
};
EWRAM_DATA struct WarpData gLastUsedWarp = {};
EWRAM_DATA struct WarpData sWarpDestination = {};
EWRAM_DATA struct WarpData gFixedDiveWarp = {};
EWRAM_DATA struct WarpData gFixedHoleWarp = {};
-EWRAM_DATA struct InitialPlayerAvatarState gUnknown_2031DD4 = {};
+EWRAM_DATA struct InitialPlayerAvatarState gInitialPlayerAvatarState = {};
EWRAM_DATA bool8 gDisableMapMusicChangeOnMapLoad = FALSE;
EWRAM_DATA u16 gUnknown_2031DDA = SPECIES_NONE;
EWRAM_DATA bool8 gUnknown_2031DDC = FALSE;
@@ -46,7 +54,12 @@ EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {};
u8 CountBadgesForOverworldWhiteOutLossCalculation(void);
void Overworld_ResetStateAfterWhitingOut(void);
void Overworld_SetWhiteoutRespawnPoint(void);
-void sub_805610C(void);
+u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType);
+u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType);
+u16 GetCenterScreenMetatileBehavior(void);
+void sub_8055E94(void);
+void SetDefaultFlashLevel(void);
+void ChooseAmbientCrySpecies(void);
extern const struct MapLayout * gMapLayouts[];
extern const struct MapHeader *const *gMapGroups[];
@@ -118,7 +131,7 @@ void Overworld_ResetStateAfterFly(void)
ResetInitialPlayerAvatarState();
FlagClear(FLAG_SYS_ON_CYCLING_ROAD);
VarSet(VAR_MAP_SCENE_ROUTE16, 0);
- FlagClear(FLAG_SYS_UNK_802);
+ FlagClear(FLAG_SYS_CRUISE_MODE);
FlagClear(FLAG_SYS_SAFARI_MODE);
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
FlagClear(FLAG_SYS_USE_STRENGTH);
@@ -132,7 +145,7 @@ void Overworld_ResetStateAfterTeleport(void)
ResetInitialPlayerAvatarState();
FlagClear(FLAG_SYS_ON_CYCLING_ROAD);
VarSet(VAR_MAP_SCENE_ROUTE16, 0);
- FlagClear(FLAG_SYS_UNK_802);
+ FlagClear(FLAG_SYS_CRUISE_MODE);
FlagClear(FLAG_SYS_SAFARI_MODE);
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
FlagClear(FLAG_SYS_USE_STRENGTH);
@@ -146,7 +159,7 @@ void Overworld_ResetStateAfterDigEscRope(void)
ResetInitialPlayerAvatarState();
FlagClear(FLAG_SYS_ON_CYCLING_ROAD);
VarSet(VAR_MAP_SCENE_ROUTE16, 0);
- FlagClear(FLAG_SYS_UNK_802);
+ FlagClear(FLAG_SYS_CRUISE_MODE);
FlagClear(FLAG_SYS_SAFARI_MODE);
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
FlagClear(FLAG_SYS_USE_STRENGTH);
@@ -160,7 +173,7 @@ void Overworld_ResetStateAfterWhitingOut(void)
ResetInitialPlayerAvatarState();
FlagClear(FLAG_SYS_ON_CYCLING_ROAD);
VarSet(VAR_MAP_SCENE_ROUTE16, 0);
- FlagClear(FLAG_SYS_UNK_802);
+ FlagClear(FLAG_SYS_CRUISE_MODE);
FlagClear(FLAG_SYS_SAFARI_MODE);
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
FlagClear(FLAG_SYS_USE_STRENGTH);
@@ -173,7 +186,7 @@ void sub_8054E40(void)
{
FlagClear(FLAG_SYS_SAFARI_MODE);
VarSet(VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0);
- sub_805610C();
+ ChooseAmbientCrySpecies();
UpdateLocationHistoryForRoamer();
RoamerMoveToOtherLocationSet();
}
@@ -524,3 +537,202 @@ void SetContinueGameWarpToDynamicWarp(int unused)
{
gSaveBlock1Ptr->continueGameWarp = gSaveBlock1Ptr->dynamicWarp;
}
+
+const struct MapConnection * GetMapConnection(u8 dir)
+{
+ s32 i;
+ s32 count = gMapHeader.connections->count;
+ const struct MapConnection *connection = gMapHeader.connections->connections;
+
+ if (connection == NULL)
+ return NULL;
+
+ for(i = 0; i < count; i++, connection++)
+ if (connection->direction == dir)
+ return connection;
+
+ return NULL;
+}
+
+bool8 SetDiveWarp(u8 dir, u16 x, u16 y)
+{
+ const struct MapConnection *connection = GetMapConnection(dir);
+
+ if (connection != NULL)
+ {
+ SetWarpDestination(connection->mapGroup, connection->mapNum, -1, x, y);
+ }
+ else
+ {
+ RunOnDiveWarpMapScript();
+ if (IsDummyWarp(&gFixedDiveWarp))
+ return FALSE;
+ SetWarpDestinationToDiveWarp();
+ }
+ return TRUE;
+}
+
+bool8 SetDiveWarpEmerge(u16 x, u16 y)
+{
+ return SetDiveWarp(CONNECTION_EMERGE, x, y);
+}
+
+bool8 SetDiveWarpDive(u16 x, u16 y)
+{
+ return SetDiveWarp(CONNECTION_DIVE, x, y);
+}
+
+void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
+{
+ int paletteIndex;
+
+ SetWarpDestination(mapGroup, mapNum, -1, -1, -1);
+ sub_8055E94();
+ ApplyCurrentWarp();
+ LoadCurrentMapData();
+ sub_8054F68();
+ TrySetMapSaveWarpStatus();
+ ClearTempFieldEventData();
+ ResetCyclingRoadChallengeData();
+ RestartWildEncounterImmunitySteps();
+ TryUpdateRandomTrainerRematches(mapGroup, mapNum);
+ SetSav1WeatherFromCurrMapHeader();
+ ChooseAmbientCrySpecies();
+ SetDefaultFlashLevel();
+ Overworld_ClearSavedMusic();
+ RunOnTransitionMapScript();
+ TryRegenerateRenewableHiddenItems();
+ InitMap();
+ copy_map_tileset2_to_vram_2(gMapHeader.mapLayout);
+ apply_map_tileset2_palette(gMapHeader.mapLayout);
+ for (paletteIndex = 7; paletteIndex < 13; paletteIndex++)
+ ApplyWeatherGammaShiftToPal(paletteIndex);
+ InitSecondaryTilesetAnimation();
+ UpdateLocationHistoryForRoamer();
+ RoamerMove();
+ sub_8110920();
+ DoCurrentWeather();
+ ResetFieldTasksArgs();
+ mapheader_run_script_with_tag_x5();
+ if (GetLastUsedWarpMapSectionId() != gMapHeader.regionMapSectionId)
+ CreateMapNamePopupIfNotAlreadyRunning(TRUE);
+}
+
+void mli0_load_map(bool32 a1)
+{
+ bool8 isOutdoors;
+
+ LoadCurrentMapData();
+ sub_8054F68();
+ isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType);
+
+ TrySetMapSaveWarpStatus();
+ ClearTempFieldEventData();
+ ResetCyclingRoadChallengeData();
+ RestartWildEncounterImmunitySteps();
+ TryUpdateRandomTrainerRematches(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
+ SetSav1WeatherFromCurrMapHeader();
+ ChooseAmbientCrySpecies();
+ if (isOutdoors)
+ FlagClear(FLAG_SYS_FLASH_ACTIVE);
+ SetDefaultFlashLevel();
+ Overworld_ClearSavedMusic();
+ RunOnTransitionMapScript();
+ TryRegenerateRenewableHiddenItems();
+ UpdateLocationHistoryForRoamer();
+ RoamerMoveToOtherLocationSet();
+ sub_8110920();
+ InitMap();
+}
+
+void sub_80559A8(void)
+{
+ bool8 isOutdoors;
+
+ LoadCurrentMapData();
+ sub_8054F68();
+ isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType);
+ TrySetMapSaveWarpStatus();
+ SetSav1WeatherFromCurrMapHeader();
+ ChooseAmbientCrySpecies();
+ SetDefaultFlashLevel();
+ sub_8110920();
+ sub_8111708();
+ LoadSaveblockMapHeader();
+ InitMap();
+}
+
+void ResetInitialPlayerAvatarState(void)
+{
+ gInitialPlayerAvatarState.direction = DIR_SOUTH;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
+ gInitialPlayerAvatarState.unk2 = FALSE;
+}
+
+void sub_80559F8(u8 dirn)
+{
+ gInitialPlayerAvatarState.direction = dirn;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
+ gInitialPlayerAvatarState.unk2 = TRUE;
+}
+
+void StoreInitialPlayerAvatarState(void)
+{
+ gInitialPlayerAvatarState.direction = GetPlayerFacingDirection();
+
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_MACH_BIKE;
+ else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE))
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ACRO_BIKE;
+ else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_SURFING;
+ else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER))
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_UNDERWATER;
+ else
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
+ gInitialPlayerAvatarState.unk2 = FALSE;
+}
+
+struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void)
+{
+ struct InitialPlayerAvatarState playerStruct;
+ u8 mapType = GetCurrentMapType();
+ u16 metatileBehavior = GetCenterScreenMetatileBehavior();
+ u8 transitionFlags = GetAdjustedInitialTransitionFlags(&gInitialPlayerAvatarState, metatileBehavior, mapType);
+ playerStruct.transitionFlags = transitionFlags;
+ playerStruct.direction = GetAdjustedInitialDirection(&gInitialPlayerAvatarState, transitionFlags, metatileBehavior, mapType);
+ playerStruct.unk2 = FALSE;
+ gInitialPlayerAvatarState = playerStruct;
+ return &gInitialPlayerAvatarState;
+}
+
+bool8 sub_8055B38(u16 metatileBehavior);
+
+u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType)
+{
+ if (mapType != MAP_TYPE_INDOOR && FlagGet(FLAG_SYS_CRUISE_MODE))
+ return PLAYER_AVATAR_FLAG_ON_FOOT;
+ else if (mapType == MAP_TYPE_UNDERWATER)
+ return PLAYER_AVATAR_FLAG_UNDERWATER;
+ else if (sub_8055B38(metatileBehavior) == TRUE)
+ return PLAYER_AVATAR_FLAG_ON_FOOT;
+ else if (MetatileBehavior_IsSurfable(metatileBehavior) == TRUE)
+ return PLAYER_AVATAR_FLAG_SURFING;
+ else if (Overworld_IsBikingAllowed() != TRUE)
+ return PLAYER_AVATAR_FLAG_ON_FOOT;
+ else if (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_MACH_BIKE)
+ return PLAYER_AVATAR_FLAG_MACH_BIKE;
+ else if (playerStruct->transitionFlags != PLAYER_AVATAR_FLAG_ACRO_BIKE)
+ return PLAYER_AVATAR_FLAG_ON_FOOT;
+ else
+ return PLAYER_AVATAR_FLAG_ACRO_BIKE;
+}
+
+bool8 sub_8055B38(u16 metatileBehavior)
+{
+ if (MetatileBehavior_IsSurfable(metatileBehavior) != TRUE)
+ return FALSE;
+ if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B3F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B3F)) || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B4F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B4F)))
+ return TRUE;
+ return FALSE;
+}
diff --git a/src/script.c b/src/script.c
index 5d691247f..250d98770 100644
--- a/src/script.c
+++ b/src/script.c
@@ -411,7 +411,7 @@ void RunOnLoadMapScript(void)
mapheader_run_script_by_tag(1);
}
-void mapheader_run_script_with_tag_x3(void)
+void RunOnTransitionMapScript(void)
{
mapheader_run_script_by_tag(3);
}
@@ -426,7 +426,7 @@ void mapheader_run_script_with_tag_x7(void)
mapheader_run_script_by_tag(7);
}
-void mapheader_run_script_with_tag_x6(void)
+void RunOnDiveWarpMapScript(void)
{
mapheader_run_script_by_tag(6);
}
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index 599e4f9b4..7054a13ed 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -681,7 +681,7 @@ bool8 sub_810C4EC(void)
return FALSE;
}
-void sub_810C578(void)
+void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum)
{
FlagClear(FLAG_SYS_VS_SEEKER_CHARGING);
sub_810C640();