diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-27 18:08:28 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-27 18:08:28 -0400 |
commit | fe9c3d3b58b2cf13f9bd7e61eceb249dfcf398a7 (patch) | |
tree | e33566286c58b95e20b70aabb1ccba930ba07f18 | |
parent | a03906a1a3b8954fa8c27f6e5a9e89cdd0b57a1e (diff) |
through sub_8055B38
-rw-r--r-- | asm/overworld.s | 522 | ||||
-rw-r--r-- | include/constants/flags.h | 2 | ||||
-rw-r--r-- | include/event_data.h | 1 | ||||
-rw-r--r-- | include/field_specials.h | 2 | ||||
-rw-r--r-- | include/field_weather.h | 1 | ||||
-rw-r--r-- | include/fieldmap.h | 7 | ||||
-rw-r--r-- | include/overworld.h | 4 | ||||
-rw-r--r-- | include/quest_log.h | 2 | ||||
-rw-r--r-- | include/script.h | 4 | ||||
-rw-r--r-- | include/vs_seeker.h | 1 | ||||
-rw-r--r-- | src/event_data.c | 2 | ||||
-rw-r--r-- | src/field_specials.c | 2 | ||||
-rw-r--r-- | src/fieldmap.c | 2 | ||||
-rw-r--r-- | src/item_use.c | 2 | ||||
-rw-r--r-- | src/overworld.c | 228 | ||||
-rw-r--r-- | src/script.c | 4 | ||||
-rw-r--r-- | src/vs_seeker.c | 2 |
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(); |