diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-06-16 18:31:23 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-06-19 18:52:24 -0500 |
commit | ad0bb29c4b5802a526722ab15a63396c437dc943 (patch) | |
tree | bfda08573471b17151fc4c3cc38ba5d3498b25d6 /src | |
parent | 544b5b61d42e355ef44c65dc84e53d5f73d7c0e1 (diff) |
Label various overworld-related things
Diffstat (limited to 'src')
-rw-r--r-- | src/cable_car.c | 2 | ||||
-rw-r--r-- | src/decoration.c | 2 | ||||
-rw-r--r-- | src/event_object_movement.c | 38 | ||||
-rw-r--r-- | src/field_camera.c | 6 | ||||
-rw-r--r-- | src/field_control_avatar.c | 14 | ||||
-rw-r--r-- | src/field_effect.c | 50 | ||||
-rw-r--r-- | src/field_fadetransition.c | 74 | ||||
-rw-r--r-- | src/field_screen_effect.c | 115 | ||||
-rw-r--r-- | src/field_specials.c | 18 | ||||
-rw-r--r-- | src/fieldmap.c | 4 | ||||
-rw-r--r-- | src/fldeff_flash.c | 138 | ||||
-rw-r--r-- | src/item_use.c | 2 | ||||
-rw-r--r-- | src/new_game.c | 2 | ||||
-rw-r--r-- | src/overworld.c | 431 | ||||
-rw-r--r-- | src/safari_zone.c | 2 | ||||
-rw-r--r-- | src/scrcmd.c | 19 | ||||
-rw-r--r-- | src/secret_base.c | 6 | ||||
-rw-r--r-- | src/time_events.c | 2 |
18 files changed, 463 insertions, 462 deletions
diff --git a/src/cable_car.c b/src/cable_car.c index bae6f020a..c4276c733 100644 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -439,7 +439,7 @@ static void sub_8123740(void) DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); DmaFill32Defvars(3, 0, OAM, OAM_SIZE); DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); - warp_in(); + WarpIntoMap(); gFieldCallback = NULL; SetMainCallback2(CB2_LoadMap); } diff --git a/src/decoration.c b/src/decoration.c index e31624540..8eff1270f 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -2039,7 +2039,7 @@ void sub_80FF114(u8 taskId) { DrawWholeMapView(); Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); - warp_in(); + WarpIntoMap(); } void sub_80FF160(u8 taskId) { diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 60bd09ca9..01460539c 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -729,7 +729,7 @@ bool8 (*const gDirectionBlockedMetatileFuncs[])(u8) = { MetatileBehavior_IsWestBlocked }; -const struct Coords16 gDirectionToVectors[] = { +static const struct Coords16 sDirectionToVectors[] = { { 0, 0}, { 0, 1}, { 0, -1}, @@ -4445,14 +4445,14 @@ void sub_8060288(u8 localId, u8 mapNum, u8 mapGroup) void MoveCoords(u8 direction, s16 *x, s16 *y) { - *x += gDirectionToVectors[direction].x; - *y += gDirectionToVectors[direction].y; + *x += sDirectionToVectors[direction].x; + *y += sDirectionToVectors[direction].y; } void Unref_MovePixelCoords(u8 direction, s16 *x, s16 *y) { - *x += gDirectionToVectors[direction].x << 4; - *y += gDirectionToVectors[direction].y << 4; + *x += sDirectionToVectors[direction].x << 4; + *y += sDirectionToVectors[direction].y << 4; } static void MoveCoordsInDirection(u32 dir, s16 *x, s16 *y, s16 deltaX, s16 deltaY) @@ -4460,13 +4460,13 @@ static void MoveCoordsInDirection(u32 dir, s16 *x, s16 *y, s16 deltaX, s16 delta u8 direction = dir; s16 dx2 = (u16)deltaX; s16 dy2 = (u16)deltaY; - if (gDirectionToVectors[direction].x > 0) + if (sDirectionToVectors[direction].x > 0) *x += dx2; - if (gDirectionToVectors[direction].x < 0) + if (sDirectionToVectors[direction].x < 0) *x -= dx2; - if (gDirectionToVectors[direction].y > 0) + if (sDirectionToVectors[direction].y > 0) *y += dy2; - if (gDirectionToVectors[direction].y < 0) + if (sDirectionToVectors[direction].y < 0) *y -= dy2; } @@ -7871,32 +7871,32 @@ void UnfreezeEventObjects(void) static void Step1(struct Sprite *sprite, u8 dir) { - sprite->pos1.x += gDirectionToVectors[dir].x; - sprite->pos1.y += gDirectionToVectors[dir].y; + sprite->pos1.x += sDirectionToVectors[dir].x; + sprite->pos1.y += sDirectionToVectors[dir].y; } static void Step2(struct Sprite *sprite, u8 dir) { - sprite->pos1.x += 2 * (u16) gDirectionToVectors[dir].x; - sprite->pos1.y += 2 * (u16) gDirectionToVectors[dir].y; + sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x; + sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y; } static void Step3(struct Sprite *sprite, u8 dir) { - sprite->pos1.x += 2 * (u16) gDirectionToVectors[dir].x + (u16) gDirectionToVectors[dir].x; - sprite->pos1.y += 2 * (u16) gDirectionToVectors[dir].y + (u16) gDirectionToVectors[dir].y; + sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x; + sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y; } static void Step4(struct Sprite *sprite, u8 dir) { - sprite->pos1.x += 4 * (u16) gDirectionToVectors[dir].x; - sprite->pos1.y += 4 * (u16) gDirectionToVectors[dir].y; + sprite->pos1.x += 4 * (u16) sDirectionToVectors[dir].x; + sprite->pos1.y += 4 * (u16) sDirectionToVectors[dir].y; } static void Step8(struct Sprite *sprite, u8 dir) { - sprite->pos1.x += 8 * (u16) gDirectionToVectors[dir].x; - sprite->pos1.y += 8 * (u16) gDirectionToVectors[dir].y; + sprite->pos1.x += 8 * (u16) sDirectionToVectors[dir].x; + sprite->pos1.y += 8 * (u16) sDirectionToVectors[dir].y; } static void oamt_npc_ministep_reset(struct Sprite *sprite, u8 direction, u8 a3) diff --git a/src/field_camera.c b/src/field_camera.c index fa8f1a582..efd2e2d8c 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -24,9 +24,9 @@ static s16 sVerticalCameraPan; static u8 gUnknown_0300059C; static void (*sFieldCameraPanningCallback)(void); -struct FieldCamera gFieldCamera; -u16 gTotalCameraPixelOffsetY; -u16 gTotalCameraPixelOffsetX; +extern struct FieldCamera gFieldCamera; +extern u16 gTotalCameraPixelOffsetY; +extern u16 gTotalCameraPixelOffsetX; static void RedrawMapSliceNorth(struct FieldCameraOffset*, struct MapData*); static void RedrawMapSliceSouth(struct FieldCameraOffset*, struct MapData*); diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 273378c14..a973b80ca 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -356,7 +356,7 @@ u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatileBehav if (!MetatileBehavior_IsCounter(MapGridGetMetatileBehaviorAt(position->x, position->y))) eventObjectId = GetEventObjectIdByXYZ(position->x, position->y, position->height); else - eventObjectId = GetEventObjectIdByXYZ(position->x + gUnknown_0821664C[direction].x, position->y + gUnknown_0821664C[direction].y, position->height); + eventObjectId = GetEventObjectIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height); if (eventObjectId == 16 || gEventObjects[eventObjectId].localId == 0xFF) return NULL; @@ -385,7 +385,7 @@ static u8 *GetInteractedEventObjectScript(struct MapPosition *position, u8 metat return NULL; // Look for an event object on the other side of the counter. - eventObjectId = GetEventObjectIdByXYZ(position->x + gUnknown_0821664C[direction].x, position->y + gUnknown_0821664C[direction].y, position->height); + eventObjectId = GetEventObjectIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height); if (eventObjectId == 16 || gEventObjects[eventObjectId].localId == 0xFF) return NULL; } @@ -680,7 +680,7 @@ static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct Map if (IsArrowWarpMetatileBehavior(metatileBehavior, direction) == TRUE && warpEventId != -1) { - walkrun_find_lowest_active_bit_in_bitfield(); + StoreInitialPlayerAvatarState(); sub_8068C30(&gMapHeader, warpEventId, position); sub_8080E88(); return TRUE; @@ -694,7 +694,7 @@ bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileBehavior if (warpEventId != -1 && IsWarpMetatileBehavior(metatileBehavior) == TRUE) { - walkrun_find_lowest_active_bit_in_bitfield(); + StoreInitialPlayerAvatarState(); sub_8068C30(&gMapHeader, warpEventId, position); if (MetatileBehavior_IsEscalator(metatileBehavior) == TRUE) { @@ -798,7 +798,7 @@ static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 met warpEventId = FindWarpEventByPosition(&gMapHeader, position); if (warpEventId != -1 && IsWarpMetatileBehavior(metatileBehavior) == TRUE) { - walkrun_find_lowest_active_bit_in_bitfield(); + StoreInitialPlayerAvatarState(); sub_8068C30(&gMapHeader, warpEventId, position); sub_8080EF0(); return TRUE; @@ -894,7 +894,7 @@ bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior) { if (SetDiveWarpEmerge(position->x - 7, position->y - 7)) { - walkrun_find_lowest_active_bit_in_bitfield(); + StoreInitialPlayerAvatarState(); sp13E_warp_to_last_warp(); PlaySE(SE_W291); return TRUE; @@ -904,7 +904,7 @@ bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior) { if (SetDiveWarpDive(position->x - 7, position->y - 7)) { - walkrun_find_lowest_active_bit_in_bitfield(); + StoreInitialPlayerAvatarState(); sp13E_warp_to_last_warp(); PlaySE(SE_W291); return TRUE; diff --git a/src/field_effect.c b/src/field_effect.c index 91794a07a..47698aee4 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1107,7 +1107,7 @@ void task00_8084310(u8 taskId) if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { Overworld_ResetStateAfterFly(); - warp_in(); + WarpIntoMap(); SetMainCallback2(CB2_LoadMap); gFieldCallback = mapldr_08084390; DestroyTask(taskId); @@ -1150,7 +1150,6 @@ void c3_080843F8(u8 taskId) } } -extern void pal_fill_for_map_transition(void); void sub_8086774(u8); extern void CameraObjectReset2(void); extern void CameraObjectReset1(void); @@ -1286,14 +1285,13 @@ bool8 sub_80869F8(struct Task *task) void sub_8086A68(u8); extern void sub_80B4824(u8); -extern void sub_8053FF8(void); -extern void fade_8080918(void); +extern void TryFadeOutOldMapMusic(void); void sub_8086B98(struct Task *); void sub_8086BE4(struct Task *); void sub_8086C30(void); void sub_8086C40(void); -bool8 sub_8054034(void); +bool8 BGMusicStopped(void); void sub_8086C94(void); void sub_80B483C(void); void sub_8086CBC(u8); @@ -1408,16 +1406,16 @@ void sub_8086BE4(struct Task *task) void sub_8086C30(void) { - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); } void sub_8086C40(void) { - if (!gPaletteFade.active && sub_8054034() == TRUE) + if (!gPaletteFade.active && BGMusicStopped() == TRUE) { sub_80B483C(); - warp_in(); + WarpIntoMap(); gFieldCallback = sub_8086C94; SetMainCallback2(CB2_LoadMap); DestroyTask(FindTaskIdByFunc(sub_8086A68)); @@ -1767,17 +1765,17 @@ bool8 sub_80872E4(struct Task *task, struct EventObject *eventObject, struct Spr bool8 sub_80873D8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite) { - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); task->data[0]++; return FALSE; } bool8 sub_80873F4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite) { - if (!gPaletteFade.active && sub_8054034() == TRUE) + if (!gPaletteFade.active && BGMusicStopped() == TRUE) { - warp_in(); + WarpIntoMap(); gFieldCallback = mapldr_080851BC; SetMainCallback2(CB2_LoadMap); DestroyTask(FindTaskIdByFunc(sub_80871D0)); @@ -1930,8 +1928,8 @@ bool8 sub_80877AC(struct Task *task, struct EventObject *eventObject, struct Spr { if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH)) { - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); task->data[0]++; } return FALSE; @@ -1942,9 +1940,9 @@ void mapldr_080859D4(void); bool8 sub_80877D4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite) { - if (!gPaletteFade.active && sub_8054034() == TRUE) + if (!gPaletteFade.active && BGMusicStopped() == TRUE) { - warp_in(); + WarpIntoMap(); gFieldCallback = sub_8086748; SetMainCallback2(CB2_LoadMap); DestroyTask(FindTaskIdByFunc(sub_808766C)); @@ -1995,17 +1993,17 @@ void sub_8087914(struct Task *task) u8 unknown_0839F380[5] = {1, 3, 4, 2, 1}; if (task->data[14] != 0 && (--task->data[14]) == 0) { - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); } eventObject = &gEventObjects[gPlayerAvatar.eventObjectId]; if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject)) { - if (task->data[14] == 0 && !gPaletteFade.active && sub_8054034() == TRUE) + if (task->data[14] == 0 && !gPaletteFade.active && BGMusicStopped() == TRUE) { SetEventObjectDirection(eventObject, task->data[15]); sub_8053678(); - warp_in(); + WarpIntoMap(); gFieldCallback = mapldr_080859D4; SetMainCallback2(CB2_LoadMap); DestroyTask(FindTaskIdByFunc(sub_80878C4)); @@ -2157,17 +2155,17 @@ static void TeleportFieldEffectTask3(struct Task *task) if (task->data[4] >= 0xa8) { task->data[0]++; - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); } } static void TeleportFieldEffectTask4(struct Task *task) { - if (!gPaletteFade.active && sub_8054034() == TRUE) + if (!gPaletteFade.active && BGMusicStopped() == TRUE) { Overworld_SetWarpDestToLastHealLoc(); - warp_in(); + WarpIntoMap(); SetMainCallback2(CB2_LoadMap); gFieldCallback = mapldr_08085D88; DestroyTask(FindTaskIdByFunc(ExecuteTeleportFieldEffectTask)); @@ -3062,7 +3060,7 @@ void sub_8088F10(struct Task *task) { if (sub_8088FA4(task->data[1])) { - fade_8080918(); + WarpFadeScreen(); task->data[0]++; } } diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index a9dc78dfa..c52dc98c6 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -39,35 +39,35 @@ void palette_bg_fill_black(void) void pal_fill_for_map_transition(void) { - u8 map_light = get_map_type_from_warp0(); - switch (fade_type_for_given_maplight_pair(map_light, Overworld_GetMapTypeOfSaveblockLocation())) + u8 previousMapType = GetLastUsedWarpMapType(); + switch (GetMapPairFadeFromType(previousMapType, Overworld_GetMapTypeOfSaveblockLocation())) { case 0: - FadeScreen(0, 0); + FadeScreen(FADE_FROM_BLACK, 0); palette_bg_fill_black(); break; case 1: - FadeScreen(2, 0); + FadeScreen(FADE_FROM_WHITE, 0); palette_bg_fill_white(); } } void pal_fill_black(void) { - FadeScreen(0, 0); + FadeScreen(FADE_FROM_BLACK, 0); palette_bg_fill_black(); } -void fade_8080918(void) +void WarpFadeScreen(void) { - u8 light_level = Overworld_GetMapTypeOfSaveblockLocation(); - switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType)) + u8 currentMapType = Overworld_GetMapTypeOfSaveblockLocation(); + switch (GetMapPairFadeToType(currentMapType, GetDestinationWarpMapHeader()->mapType)) { case 0: - FadeScreen(1, 0); + FadeScreen(FADE_TO_BLACK, 0); break; case 1: - FadeScreen(3, 0); + FadeScreen(FADE_TO_WHITE, 0); } } @@ -358,7 +358,7 @@ void sub_8080E44(void) CreateTask(task_mpl_807E3C8, 10); } -bool32 sub_8080E64(void) +static bool32 PaletteFadeActive(void) { return gPaletteFade.active; } @@ -374,8 +374,8 @@ bool32 sub_8080E70(void) void sub_8080E88(void) { ScriptContext2_Enable(); - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); PlayRainSoundEffect(); PlaySE(SE_KAIDAN); gFieldCallback = mapldr_default; @@ -385,8 +385,8 @@ void sub_8080E88(void) void sp13E_warp_to_last_warp(void) { ScriptContext2_Enable(); - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); PlayRainSoundEffect(); gFieldCallback = mapldr_default; CreateTask(task0A_fade_n_map_maybe, 10); @@ -426,8 +426,8 @@ void sub_8080F58(void) void sub_8080F68(void) { ScriptContext2_Enable(); - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); PlaySE(SE_TK_WARPIN); CreateTask(task0A_fade_n_map_maybe, 10); gFieldCallback = sub_8080B78; @@ -436,12 +436,12 @@ void sub_8080F68(void) void sub_8080F9C(void) { ScriptContext2_Enable(); - fade_8080918(); + WarpFadeScreen(); CreateTask(task0A_fade_n_map_maybe, 10); gFieldCallback = sub_80C791C; } -void sub_8080FC4(u8 taskId) +static void WaitCableClubWarp(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -452,13 +452,11 @@ void sub_8080FC4(u8 taskId) task->data[0]++; break; case 1: - if (!sub_8080E64() && sub_8054034()) - { + if (!PaletteFadeActive() && BGMusicStopped()) task->data[0]++; - } break; case 2: - warp_in(); + WarpIntoMap(); SetMainCallback2(sub_8054588); DestroyTask(taskId); break; @@ -468,10 +466,10 @@ void sub_8080FC4(u8 taskId) void DoCableClubWarp(void) { ScriptContext2_Enable(); - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); PlaySE(SE_KAIDAN); - CreateTask(sub_8080FC4, 10); + CreateTask(WaitCableClubWarp, 10); } void sub_8081050(u8 taskId) @@ -482,13 +480,13 @@ void sub_8081050(u8 taskId) { case 0: ClearLinkCallback_2(); - FadeScreen(1, 0); - sub_8053FF8(); + FadeScreen(FADE_TO_BLACK, 0); + TryFadeOutOldMapMusic(); PlaySE(SE_KAIDAN); data[0]++; break; case 1: - if (!sub_8080E64() && sub_8054034()) + if (!PaletteFadeActive() && BGMusicStopped()) { sub_800832C(); data[0]++; @@ -497,7 +495,7 @@ void sub_8081050(u8 taskId) case 2: if (!gReceivedRemoteLinkPlayers) { - warp_in(); + WarpIntoMap(); SetMainCallback2(CB2_LoadMap); DestroyTask(taskId); } @@ -538,13 +536,13 @@ void task0A_fade_n_map_maybe(u8 taskId) task->data[0]++; break; case 1: - if (!sub_8080E64() && sub_8054034()) + if (!PaletteFadeActive() && BGMusicStopped()) { task->data[0]++; } break; case 2: - warp_in(); + WarpIntoMap(); SetMainCallback2(CB2_LoadMap); DestroyTask(taskId); break; @@ -595,8 +593,8 @@ void sub_808115C(u8 taskId) } break; case 4: - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); PlayRainSoundEffect(); task->data[0] = 0; task->func = task0A_fade_n_map_maybe; @@ -616,13 +614,13 @@ void sub_80812C8(u8 taskId) task->data[0]++; break; case 1: - if (!sub_8080E64() && sub_8054034()) + if (!PaletteFadeActive() && BGMusicStopped()) { task->data[0]++; } break; case 2: - warp_in(); + WarpIntoMap(); SetMainCallback2(sub_8054534); DestroyTask(taskId); break; @@ -632,8 +630,8 @@ void sub_80812C8(u8 taskId) void sub_8081334(void) { ScriptContext2_Enable(); - sub_8053FF8(); - fade_8080918(); + TryFadeOutOldMapMusic(); + WarpFadeScreen(); PlayRainSoundEffect(); PlaySE(SE_KAIDAN); gFieldCallback = sub_8080B60; diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index b314699c5..13bc1bd63 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -9,71 +9,78 @@ #include "text.h" #include "scanline_effect.h" -const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; +const static u16 sFlashLevelPixelRadii[] = { 200, 72, 56, 40, 24, 0 }; const s32 gMaxFlashLevel = 4; -const static struct ScanlineEffectParams gUnknown_0839ACEC = +const static struct ScanlineEffectParams sFlashEffectParams = { (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, 1 }; -static void sub_808136C(u16 *dest, u32 a2, s32 a3, s32 a4) +static void SetFlashScanlineffectWindowBoundary(u16 *dest, u32 y, s32 left, s32 right) { - if (a2 <= 0xA0) + if (y <= 160) { - if (a3 < 0) - a3 = 0; - if (a3 > 255) - a3 = 255; - if (a4 < 0) - a4 = 0; - if (a4 > 255) - a4 = 255; - dest[a2] = (a3 << 8) | a4; + if (left < 0) + left = 0; + if (left > 255) + left = 255; + if (right < 0) + right = 0; + if (right > 255) + right = 255; + dest[y] = (left << 8) | right; } } -static void sub_8081398(u16 *dest, s32 a2, s32 a3, s32 a4) +static void SetFlashScanlineEffectWindowBoundaries(u16 *dest, s32 centerX, s32 centerY, s32 radius) { - s32 v1 = a4; - s32 v2 = a4; + s32 r = radius; + s32 v2 = radius; s32 v3 = 0; - while (v1 >= v3) + while (r >= v3) { - sub_808136C(dest, a3 - v3, a2 - v1, a2 + v1); - sub_808136C(dest, a3 + v3, a2 - v1, a2 + v1); - sub_808136C(dest, a3 - v1, a2 - v3, a2 + v3); - sub_808136C(dest, a3 + v1, a2 - v3, a2 + v3); + SetFlashScanlineffectWindowBoundary(dest, centerY - v3, centerX - r, centerX + r); + SetFlashScanlineffectWindowBoundary(dest, centerY + v3, centerX - r, centerX + r); + SetFlashScanlineffectWindowBoundary(dest, centerY - r, centerX - v3, centerX + v3); + SetFlashScanlineffectWindowBoundary(dest, centerY + r, centerX - v3, centerX + v3); v2 -= (v3 * 2) - 1; v3++; if (v2 < 0) { - v2 += 2 * (v1 - 1); - v1--; + v2 += 2 * (r - 1); + r--; } } } -static void sub_8081424(u8 taskId) +#define tFlashCenterX data[1] +#define tFlashCenterY data[2] +#define tCurFlashRadius data[3] +#define tDestFlashRadius data[4] +#define tFlashRadiusDelta data[5] +#define tClearScanlineEffect data[6] + +static void UpdateFlashLevelEffect(u8 taskId) { s16 *data = gTasks[taskId].data; switch (data[0]) { case 0: - sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]); + SetFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius); data[0] = 1; break; case 1: - sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]); + SetFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius); data[0] = 0; - data[3] += data[5]; - if (data[3] > data[4]) + tCurFlashRadius += tFlashRadiusDelta; + if (tCurFlashRadius > tDestFlashRadius) { - if (data[6] == 1) + if (tClearScanlineEffect == 1) { ScanlineEffect_Stop(); data[0] = 2; @@ -93,7 +100,7 @@ static void sub_8081424(u8 taskId) static void sub_80814E8(u8 taskId) { - if (!FuncIsActiveTask(sub_8081424)) + if (!FuncIsActiveTask(UpdateFlashLevelEffect)) { EnableBothScriptContexts(); DestroyTask(taskId); @@ -106,41 +113,46 @@ static void sub_8081510(void) CreateTask(sub_80814E8, 80); } -static u8 sub_8081534(s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, u8 a6) +static u8 sub_8081534(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 destFlashRadius, s32 clearScanlineEffect, u8 delta) { - u8 taskId = CreateTask(sub_8081424, 80); + u8 taskId = CreateTask(UpdateFlashLevelEffect, 80); s16 *data = gTasks[taskId].data; - data[3] = a3; - data[4] = a4; - data[1] = a1; - data[2] = a2; - data[6] = a5; + tCurFlashRadius = initialFlashRadius; + tDestFlashRadius = destFlashRadius; + tFlashCenterX = centerX; + tFlashCenterY = centerY; + tClearScanlineEffect = clearScanlineEffect; - if (a3 < a4) - data[5] = a6; + if (initialFlashRadius < destFlashRadius) + tFlashRadiusDelta = delta; else - data[5] = -a6; + tFlashRadiusDelta = -delta; return taskId; } -void sub_8081594(u8 a1) +#undef tCurFlashRadius +#undef tDestFlashRadius +#undef tFlashRadiusDelta +#undef tClearScanlineEffect + +void sub_8081594(u8 flashLevel) { - u8 flashLevel = Overworld_GetFlashLevel(); + u8 curFlashLevel = Overworld_GetFlashLevel(); u8 value = 0; - if (!a1) + if (!flashLevel) value = 1; - sub_8081534(120, 80, gUnknown_0839ACDC[flashLevel], gUnknown_0839ACDC[a1], value, 1); + sub_8081534(120, 80, sFlashLevelPixelRadii[curFlashLevel], sFlashLevelPixelRadii[flashLevel], value, 1); sub_8081510(); ScriptContext2_Enable(); } -void sub_80815E0(u8 a1) +void WriteFlashScanlineEffectBuffer(u8 flashLevel) { - if (a1) + if (flashLevel) { - sub_8081398(&gScanlineEffectRegBuffers[0][0], 120, 80, gUnknown_0839ACDC[a1]); + SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], 120, 80, sFlashLevelPixelRadii[flashLevel]); CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480); } } @@ -208,10 +220,9 @@ static void sub_80816A8(u8 taskId) REG_BLDALPHA = 1804; REG_WININ = 63; REG_WINOUT = 30; - sub_8081398(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1); + SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1); CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480); - //ScanlineEffect_SetParams(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]); - ScanlineEffect_SetParams(gUnknown_0839ACEC); + ScanlineEffect_SetParams(sFlashEffectParams); data[0] = 1; break; case 1: @@ -221,7 +232,7 @@ static void sub_80816A8(u8 taskId) data[0] = 2; break; case 2: - if (!FuncIsActiveTask(sub_8081424)) + if (!FuncIsActiveTask(UpdateFlashLevelEffect)) { EnableBothScriptContexts(); data[0] = 3; @@ -323,7 +334,7 @@ void sub_8081924(void) static void task50_0807F0C8(u8 taskId) { - if (sub_8054034() == TRUE) + if (BGMusicStopped() == TRUE) { DestroyTask(taskId); EnableBothScriptContexts(); diff --git a/src/field_specials.c b/src/field_specials.c index cb400dc2d..f7b14dad8 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -21,6 +21,7 @@ #include "constants/species.h" #include "constants/abilities.h" #include "constants/moves.h" +#include "constants/weather.h" #include "text.h" #include "wallclock.h" #include "tv.h" @@ -42,7 +43,7 @@ #define CHAR_DECIMAL_SEPARATOR CHAR_COMMA #endif -extern struct WarpData gUnknown_020297F0; +extern struct WarpData gLastUsedWarp; extern u8 gBattleOutcome; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; @@ -207,7 +208,7 @@ u16 GetRecordedCyclingRoadResults(void) { } void UpdateCyclingRoadState(void) { - if (gUnknown_020297F0.mapNum == MAP_NUM(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) && gUnknown_020297F0.mapGroup == MAP_GROUP(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE)) + if (gLastUsedWarp.mapNum == MAP_NUM(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) && gLastUsedWarp.mapGroup == MAP_GROUP(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE)) { return; } @@ -2009,17 +2010,17 @@ bool8 FoundBlackGlasses(void) void SetRoute119Weather(void) { - if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE) + if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE) { - SetSav1Weather(0x14); + SetSav1Weather(WEATHER_ROUTE119_CYCLE); } } void SetRoute123Weather(void) { - if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE) + if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE) { - SetSav1Weather(0x15); + SetSav1Weather(WEATHER_ROUTE123_CYCLE); } } @@ -2027,13 +2028,12 @@ u8 GetLeadMonIndex(void) { u8 i; u8 partyCount = CalculatePlayerPartyCount(); - for (i=0; i<partyCount; i++) + for (i = 0; i < partyCount; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != 0) - { return i; - } } + return 0; } diff --git a/src/fieldmap.c b/src/fieldmap.c index 7383bb174..b819d7275 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -676,8 +676,8 @@ int GetPostCameraMoveMapBorderId(int x, int y) int CanCameraMoveInDirection(int direction) { int x, y; - x = gSaveBlock1.pos.x + 7 + gUnknown_0821664C[direction].x; - y = gSaveBlock1.pos.y + 7 + gUnknown_0821664C[direction].y; + x = gSaveBlock1.pos.x + 7 + gDirectionToVectors[direction].x; + y = gSaveBlock1.pos.y + 7 + gDirectionToVectors[direction].y; if (GetMapBorderIdAt(x, y) == -1) { return 0; diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index a9f64a2d1..5a04f7061 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -12,12 +12,12 @@ #include "sprite.h" #include "task.h" -struct FlashStruct +struct MapTypeFadePairs { - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; + u8 mapTypeA; + u8 mapTypeB; + u8 fadeToType; // 0 = fade to black, 1 = fade to white + u8 fadeFromType; // 0 = fade from black, 1 = fade from white void (*func)(void); }; @@ -26,39 +26,39 @@ extern void (*gPostMenuFieldCallback)(void); extern u8 gUnknown_081B694A[]; -void sub_810CBFC(void); -void sub_810CC34(void); -bool8 sub_810CD5C(void); -void sub_810CE5C(u8); -void sub_810CE78(u8); -void sub_810CF18(u8); -void sub_810CF5C(u8); -void sub_810CFC4(u8); -void sub_810D00C(u8); -void sub_810D028(u8); -void sub_810D0C4(u8); -void sub_810D128(u8); -void sub_810CFF8(void); -void sub_810CE48(void); - -static const struct FlashStruct gUnknown_083F7FC4[] = +static void sub_810CBFC(void); +static void sub_810CC34(void); +static bool8 sub_810CD5C(void); +static void sub_810CE5C(u8); +static void sub_810CE78(u8); +static void sub_810CF18(u8); +static void sub_810CF5C(u8); +static void sub_810CFC4(u8); +static void sub_810D00C(u8); +static void sub_810D028(u8); +static void sub_810D0C4(u8); +static void sub_810D128(u8); +static void CreateEnterUndergroundEffectTask(void); +static void CreateExitUndergroundTask(void); + +static const struct MapTypeFadePairs gMapTypeFadePairs[] = { - {1, 4, 1, 0, sub_810CFF8}, - {2, 4, 1, 0, sub_810CFF8}, - {3, 4, 1, 0, sub_810CFF8}, - {5, 4, 1, 0, sub_810CFF8}, - {6, 4, 1, 0, sub_810CFF8}, - {7, 4, 1, 0, sub_810CFF8}, - {8, 4, 1, 0, sub_810CFF8}, - {9, 4, 1, 0, sub_810CFF8}, - {4, 1, 0, 1, sub_810CE48}, - {4, 2, 0, 1, sub_810CE48}, - {4, 3, 0, 1, sub_810CE48}, - {4, 5, 0, 1, sub_810CE48}, - {4, 6, 0, 1, sub_810CE48}, - {4, 7, 0, 1, sub_810CE48}, - {4, 8, 0, 1, sub_810CE48}, - {4, 9, 0, 1, sub_810CE48}, + {MAP_TYPE_TOWN, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask}, + {MAP_TYPE_CITY, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask}, + {MAP_TYPE_ROUTE, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask}, + {MAP_TYPE_UNDERWATER, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask}, + {MAP_TYPE_6, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask}, + {MAP_TYPE_7, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask}, + {MAP_TYPE_INDOOR, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask}, + {MAP_TYPE_SECRET_BASE, MAP_TYPE_UNDERGROUND, 1, 0, CreateEnterUndergroundEffectTask}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_TOWN, 0, 1, CreateExitUndergroundTask}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_CITY, 0, 1, CreateExitUndergroundTask}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_ROUTE, 0, 1, CreateExitUndergroundTask}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_UNDERWATER, 0, 1, CreateExitUndergroundTask}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_6, 0, 1, CreateExitUndergroundTask}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_7, 0, 1, CreateExitUndergroundTask}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_INDOOR, 0, 1, CreateExitUndergroundTask}, + {MAP_TYPE_UNDERGROUND, MAP_TYPE_SECRET_BASE, 0, 1, CreateExitUndergroundTask}, {0, 0, 0, 0, NULL}, }; @@ -95,7 +95,7 @@ bool8 SetUpFieldMove_Flash(void) return FALSE; } -void sub_810CBFC(void) +static void sub_810CBFC(void) { u8 taskId = oei_task_add(); gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; @@ -103,7 +103,7 @@ void sub_810CBFC(void) gTasks[taskId].data[9] = (uintptr_t)sub_810CC34; } -void sub_810CC34(void) +static void sub_810CC34(void) { PlaySE(SE_W115); FlagSet(FLAG_SYS_USE_FLASH); @@ -156,17 +156,17 @@ void sub_810CC80(void) SetMainCallback2(gMain.savedCallback); } -bool8 sub_810CD5C(void) +static bool8 sub_810CD5C(void) { u8 i; - u8 v0 = get_map_type_from_warp0(); - u8 v1 = Overworld_GetMapTypeOfSaveblockLocation(); + u8 prevMapType = GetLastUsedWarpMapType(); + u8 curMapType = Overworld_GetMapTypeOfSaveblockLocation(); - for (i = 0; gUnknown_083F7FC4[i].unk0; i++) + for (i = 0; gMapTypeFadePairs[i].mapTypeA; i++) { - if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1) + if (gMapTypeFadePairs[i].mapTypeA == prevMapType && gMapTypeFadePairs[i].mapTypeB == curMapType) { - gUnknown_083F7FC4[i].func(); + gMapTypeFadePairs[i].func(); return TRUE; } } @@ -174,51 +174,49 @@ bool8 sub_810CD5C(void) return FALSE; } -u8 sub_810CDB8(u8 a1, u8 a2) +u8 GetMapPairFadeToType(u8 currentMapType, u8 destinationMapType) { u8 i; - u8 v0 = a1; - u8 v1 = a2; + u8 curMapType = currentMapType; + u8 destMapType = destinationMapType; - for (i = 0; gUnknown_083F7FC4[i].unk0; i++) + for (i = 0; gMapTypeFadePairs[i].mapTypeA; i++) { - if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1) - { - return gUnknown_083F7FC4[i].unk2; - } + if (gMapTypeFadePairs[i].mapTypeA == curMapType && gMapTypeFadePairs[i].mapTypeB == destMapType) + return gMapTypeFadePairs[i].fadeToType; } return FALSE; } -u8 fade_type_for_given_maplight_pair(u8 a1, u8 a2) +u8 GetMapPairFadeFromType(u8 currentMapType, u8 destinationMapType) { u8 i; - u8 v0 = a1; - u8 v1 = a2; + u8 curMapType = currentMapType; + u8 destMapType = destinationMapType; - for (i = 0; gUnknown_083F7FC4[i].unk0; i++) + for (i = 0; gMapTypeFadePairs[i].mapTypeA; i++) { - if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1) + if (gMapTypeFadePairs[i].mapTypeA == curMapType && gMapTypeFadePairs[i].mapTypeB == destMapType) { - return gUnknown_083F7FC4[i].unk3; + return gMapTypeFadePairs[i].fadeFromType; } } return FALSE; } -void sub_810CE48(void) +static void CreateExitUndergroundTask(void) { CreateTask(sub_810CE5C, 0); } -void sub_810CE5C(u8 taskId) +static void sub_810CE5C(u8 taskId) { gTasks[taskId].func = sub_810CE78; } -void sub_810CE78(u8 taskId) +static void sub_810CE78(u8 taskId) { REG_DISPCNT = 0; LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000); @@ -235,7 +233,7 @@ void sub_810CE78(u8 taskId) gTasks[taskId].data[1] = 0; } -void sub_810CF18(u8 taskId) +static void sub_810CF18(u8 taskId) { u16 count = gTasks[taskId].data[1]; u16 blend = count + 0x1000; @@ -251,7 +249,7 @@ void sub_810CF18(u8 taskId) } } -void sub_810CF5C(u8 taskId) +static void sub_810CF5C(u8 taskId) { u16 count; @@ -272,7 +270,7 @@ void sub_810CF5C(u8 taskId) } } -void sub_810CFC4(u8 taskId) +static void sub_810CFC4(u8 taskId) { if (gTasks[taskId].data[2]) gTasks[taskId].data[2]--; @@ -280,17 +278,17 @@ void sub_810CFC4(u8 taskId) SetMainCallback2(gMain.savedCallback); } -void sub_810CFF8(void) +static void CreateEnterUndergroundEffectTask(void) { CreateTask(sub_810D00C, 0); } -void sub_810D00C(u8 taskId) +static void sub_810D00C(u8 taskId) { gTasks[taskId].func = sub_810D028; } -void sub_810D028(u8 taskId) +static void sub_810D028(u8 taskId) { REG_DISPCNT = 0; LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000); @@ -308,7 +306,7 @@ void sub_810D028(u8 taskId) gTasks[taskId].data[2] = 0; } -void sub_810D0C4(u8 taskId) +static void sub_810D0C4(u8 taskId) { u16 count = gTasks[taskId].data[2]; if (count < 16) @@ -325,7 +323,7 @@ void sub_810D0C4(u8 taskId) } } -void sub_810D128(u8 taskId) +static void sub_810D128(u8 taskId) { u16 count = 16 - gTasks[taskId].data[1]; u16 blend = count + 0x1000; diff --git a/src/item_use.c b/src/item_use.c index 69fcd51de..926ab4876 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -972,7 +972,7 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) void task08_080A1C44(u8 taskId) { - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); sub_80878A8(); DestroyTask(taskId); } diff --git a/src/new_game.c b/src/new_game.c index f8a5524f5..683a22801 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -137,7 +137,7 @@ void debug_sub_8052E04() void WarpToTruck(void) { Overworld_SetWarpDestination(MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK), -1, -1, -1); - warp_in(); + WarpIntoMap(); } void ClearSav2(void) diff --git a/src/overworld.c b/src/overworld.c index 47e23ad35..5bb357f8a 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -55,12 +55,6 @@ #define LEGENDARY_MUSIC BGM_HIDERI // Drought #endif -struct UnkTVStruct -{ - u32 tv_field_0; - u32 tv_field_4; -}; - extern u8 gUnknown_020297ED; extern u16 gTotalCameraPixelOffsetY; extern u16 gTotalCameraPixelOffsetX; @@ -90,11 +84,11 @@ extern struct MapData * const gMapAttributes[]; extern struct MapHeader * const * const gMapGroups[]; extern s32 gMaxFlashLevel; -EWRAM_DATA struct WarpData gUnknown_020297F0 = {0}; -EWRAM_DATA struct WarpData gWarpDestination = {0}; // new warp position -EWRAM_DATA struct WarpData gUnknown_02029800 = {0}; -EWRAM_DATA struct WarpData gUnknown_02029808 = {0}; -EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0}; +EWRAM_DATA struct WarpData gLastUsedWarp = {0}; +EWRAM_DATA struct WarpData gWarpDestination = {0}; +EWRAM_DATA struct WarpData gFixedDiveWarp = {0}; +EWRAM_DATA struct WarpData gFixedHoleWarp = {0}; +EWRAM_DATA struct InitialPlayerAvatarState gInitialPlayerAvatarState = {0}; EWRAM_DATA static u16 sAmbientCrySpecies = 0; EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerEventObject gLinkPlayerEventObjects[4] = {0}; @@ -104,10 +98,16 @@ static u16 (*gUnknown_03000584)(u32); static u8 gUnknown_03000588; u16 word_3004858; -void (*gFieldCallback)(void); +extern void (*gFieldCallback)(void); u8 gUnknown_03004860; u8 gFieldLinkPlayerCount; +static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState*, u16, u8); +static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState*, u8, u16, u8); +static bool32 sub_805483C(u8*); +static void c2_80567AC(void); +static void InitOverworldGraphicsRegisters(void); + static const struct WarpData sDummyWarpData = { .mapGroup = -1, @@ -129,20 +129,20 @@ static const u8 sUnusedData[] = 0x2C, 0x00, 0x00, 0x00, }; -const struct UCoords32 gUnknown_0821664C[] = -{ - { 0, 0}, - { 0, 1}, - { 0, -1}, - {-1, 0}, - { 1, 0}, - {-1, 1}, - { 1, 1}, - {-1, -1}, - { 1, -1}, +const struct UCoords32 gDirectionToVectors[] = +{ + { 0, 0}, // DIR_NONE + { 0, 1}, // DIR_SOUTH + { 0, -1}, // DIR_NORTH + {-1, 0}, // DIR_WEST + { 1, 0}, // DIR_EAST + {-1, 1}, // DIR_SOUTHWEST + { 1, 1}, // DIR_SOUTHEAST + {-1, -1}, // DIR_NORTHWEST + { 1, -1}, // DIR_NORTHEAST }; -const struct ScanlineEffectParams gUnknown_08216694 = +static const struct ScanlineEffectParams sFlashEffectParams = { (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -197,12 +197,12 @@ static void DoWhiteOut(void) ScrSpecial_HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); Overworld_SetWarpDestToLastHealLoc(); - warp_in(); + WarpIntoMap(); } void Overworld_ResetStateAfterFly(void) { - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); FlagClear(FLAG_SYS_CYCLING_ROAD); FlagClear(FLAG_SYS_CRUISE_MODE); FlagClear(FLAG_SYS_SAFARI_MODE); @@ -212,7 +212,7 @@ void Overworld_ResetStateAfterFly(void) void Overworld_ResetStateAfterTeleport(void) { - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); FlagClear(FLAG_SYS_CYCLING_ROAD); FlagClear(FLAG_SYS_CRUISE_MODE); FlagClear(FLAG_SYS_SAFARI_MODE); @@ -223,7 +223,7 @@ void Overworld_ResetStateAfterTeleport(void) void Overworld_ResetStateAfterDigEscRope(void) { - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); FlagClear(FLAG_SYS_CYCLING_ROAD); FlagClear(FLAG_SYS_CRUISE_MODE); FlagClear(FLAG_SYS_SAFARI_MODE); @@ -233,7 +233,7 @@ void Overworld_ResetStateAfterDigEscRope(void) void Overworld_ResetStateAfterWhiteOut(void) { - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); FlagClear(FLAG_SYS_CYCLING_ROAD); FlagClear(FLAG_SYS_CRUISE_MODE); FlagClear(FLAG_SYS_SAFARI_MODE); @@ -241,7 +241,7 @@ void Overworld_ResetStateAfterWhiteOut(void) FlagClear(FLAG_SYS_USE_FLASH); } -void sub_805308C(void) +static void sub_805308C(void) { FlagClear(FLAG_SYS_SAFARI_MODE); ChooseAmbientCrySpecies(); @@ -269,18 +269,18 @@ void IncrementGameStat(u8 index) } } -u32 GetGameStat(u8 index) +u32 GetGameStat(u8 stat) { - if (index >= NUM_GAME_STATS) + if (stat >= NUM_GAME_STATS) return 0; - return gSaveBlock1.gameStats[index]; + return gSaveBlock1.gameStats[stat]; } -void SetGameStat(u8 index, u32 value) +void SetGameStat(u8 stat, u32 value) { - if (index < NUM_GAME_STATS) - gSaveBlock1.gameStats[index] = value; + if (stat < NUM_GAME_STATS) + gSaveBlock1.gameStats[stat] = value; } void LoadEventObjTemplatesFromHeader(void) @@ -342,7 +342,7 @@ static void mapdata_load_assets_to_gpu_and_full_redraw(void) cur_mapheader_run_tileset_funcs_after_some_cpuset(); } -static struct MapData *get_mapdata_header(void) +static struct MapData *GetCurrentMapData(void) { u16 mapDataId = gSaveBlock1.mapDataId; if (mapDataId) @@ -352,10 +352,10 @@ static struct MapData *get_mapdata_header(void) static void ApplyCurrentWarp(void) { - gUnknown_020297F0 = gSaveBlock1.location; + gLastUsedWarp = gSaveBlock1.location; gSaveBlock1.location = gWarpDestination; - gUnknown_02029800 = sDummyWarpData; - gUnknown_02029808 = sDummyWarpData; + gFixedDiveWarp = sDummyWarpData; + gFixedHoleWarp = sDummyWarpData; } static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) @@ -367,7 +367,7 @@ static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId warp->y = y; } -static bool32 warp_data_is_not_neg_1(struct WarpData *warp) +static bool32 IsDummyWarp(struct WarpData *warp) { if (warp->mapGroup != -1) return FALSE; @@ -387,25 +387,25 @@ struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 map return gMapGroups[mapGroup][mapNum]; } -struct MapHeader *const warp1_get_mapheader(void) +struct MapHeader *const GetDestinationWarpMapHeader(void) { return Overworld_GetMapHeaderByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); } -static void set_current_map_header_from_sav1_save_old_name(void) +static void LoadCurrentMapData(void) { gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); gSaveBlock1.mapDataId = gMapHeader.mapDataId; - gMapHeader.mapData = get_mapdata_header(); + gMapHeader.mapData = GetCurrentMapData(); } static void LoadSaveblockMapHeader(void) { gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); - gMapHeader.mapData = get_mapdata_header(); + gMapHeader.mapData = GetCurrentMapData(); } -void sub_80533CC(void) +static void SetPlayerCoordsFromWarp(void) { if (gSaveBlock1.location.warpId >= 0 && gSaveBlock1.location.warpId < gMapHeader.events->warpCount) { @@ -424,11 +424,11 @@ void sub_80533CC(void) } } -void warp_in(void) +void WarpIntoMap(void) { ApplyCurrentWarp(); - set_current_map_header_from_sav1_save_old_name(); - sub_80533CC(); + LoadCurrentMapData(); + SetPlayerCoordsFromWarp(); } void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) @@ -495,31 +495,27 @@ void sub_8053678(void) gWarpDestination = gSaveBlock1.warp4; } -void sub_8053690(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - SetWarpData(&gUnknown_02029800, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gFixedDiveWarp, mapGroup, mapNum, warpId, x, y); } -static void warp1_set_to_warp2(void) +static void SetFixedDiveWarpAsDestination(void) { - gWarpDestination = gUnknown_02029800; + gWarpDestination = gFixedDiveWarp; } -void sub_80536E4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - SetWarpData(&gUnknown_02029808, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gFixedHoleWarp, mapGroup, mapNum, warpId, x, y); } -void sub_8053720(s16 x, s16 y) +void SetFixedHoleWarpAsDestination(s16 x, s16 y) { - if (warp_data_is_not_neg_1(&gUnknown_02029808) == TRUE) - { - gWarpDestination = gUnknown_020297F0; - } + if (IsDummyWarp(&gFixedHoleWarp) == TRUE) + gWarpDestination = gLastUsedWarp; else - { - Overworld_SetWarpDestination(gUnknown_02029808.mapGroup, gUnknown_02029808.mapNum, -1, x, y); - } + Overworld_SetWarpDestination(gFixedHoleWarp.mapGroup, gFixedHoleWarp.mapNum, -1, x, y); } void sub_8053778(void) @@ -563,7 +559,6 @@ struct MapConnection *GetMapConnection(u8 dir) static bool8 SetDiveWarp(u8 direction, u16 x, u16 y) { struct MapConnection *connection = GetMapConnection(direction); - if (connection != NULL) { Overworld_SetWarpDestination(connection->mapGroup, connection->mapNum, -1, x, y); @@ -571,10 +566,12 @@ static bool8 SetDiveWarp(u8 direction, u16 x, u16 y) else { mapheader_run_script_with_tag_x6(); - if (warp_data_is_not_neg_1(&gUnknown_02029800)) + if (IsDummyWarp(&gFixedDiveWarp)) return FALSE; - warp1_set_to_warp2(); + + SetFixedDiveWarpAsDestination(); } + return TRUE; } @@ -595,7 +592,7 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) Overworld_SetWarpDestination(mapGroup, mapNum, -1, -1, -1); sub_8053F0C(); ApplyCurrentWarp(); - set_current_map_header_from_sav1_save_old_name(); + LoadCurrentMapData(); LoadEventObjTemplatesFromHeader(); ClearTempFieldEventData(); ResetCyclingRoadChallengeData(); @@ -628,7 +625,7 @@ void sub_8053994(u32 a1) bool8 v2; bool8 v3; - set_current_map_header_from_sav1_save_old_name(); + LoadCurrentMapData(); LoadEventObjTemplatesFromHeader(); v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType); v3 = Overworld_MapTypeIsIndoors(gMapHeader.mapType); @@ -655,82 +652,82 @@ void sub_8053994(u32 a1) } } -void player_avatar_init_params_reset(void) +void ResetInitialPlayerAvatarState(void) { - gUnknown_02029810.player_field_1 = 1; - gUnknown_02029810.player_field_0 = 1; + gInitialPlayerAvatarState.direction = DIR_SOUTH; + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT; } -void walkrun_find_lowest_active_bit_in_bitfield(void) +void StoreInitialPlayerAvatarState(void) { - gUnknown_02029810.player_field_1 = GetPlayerFacingDirection(); + gInitialPlayerAvatarState.direction = GetPlayerFacingDirection(); if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE)) - gUnknown_02029810.player_field_0 = 2; + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_MACH_BIKE; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) - gUnknown_02029810.player_field_0 = 4; + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ACRO_BIKE; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) - gUnknown_02029810.player_field_0 = 8; + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_SURFING; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER)) - gUnknown_02029810.player_field_0 = 16; + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_UNDERWATER; else - gUnknown_02029810.player_field_0 = 1; + gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT; } -struct UnkPlayerStruct *sub_8053AA8(void) +static struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void) { - struct UnkPlayerStruct playerStruct; + struct InitialPlayerAvatarState playerStruct; u8 mapType = Overworld_GetMapTypeOfSaveblockLocation(); - u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1(); - u8 v4 = sub_8053B00(&gUnknown_02029810, v2, mapType); - playerStruct.player_field_0 = v4; - playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, mapType); - gUnknown_02029810 = playerStruct; - return &gUnknown_02029810; -} - -u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) -{ - if (a3 != 8 && FlagGet(FLAG_SYS_CRUISE_MODE)) - return 1; - if (a3 == 5) - return 16; - if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1) - return 8; + u16 metatileBehavior = GetCenterScreenMetatileBehavior(); + u8 transitionFlags = GetAdjustedInitialTransitionFlags(&gInitialPlayerAvatarState, metatileBehavior, mapType); + playerStruct.transitionFlags = transitionFlags; + playerStruct.direction = GetAdjustedInitialDirection(&gInitialPlayerAvatarState, transitionFlags, metatileBehavior, mapType); + gInitialPlayerAvatarState = playerStruct; + return &gInitialPlayerAvatarState; +} + +static 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; + if (mapType == MAP_TYPE_UNDERWATER) + return PLAYER_AVATAR_FLAG_UNDERWATER; + if (MetatileBehavior_IsSurfableWaterOrUnderwater(metatileBehavior) == TRUE) + return PLAYER_AVATAR_FLAG_SURFING; if (Overworld_IsBikingAllowed() != TRUE) - return 1; - if (playerStruct->player_field_0 == 2) - return 2; - if (playerStruct->player_field_0 != 4) - return 1; - return 4; -} - -u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4) -{ - if (FlagGet(FLAG_SYS_CRUISE_MODE) && a4 == 6) - return 4; - if (MetatileBehavior_IsDeepSouthWarp(a3) == TRUE) - return 2; - if (MetatileBehavior_IsNonAnimDoor(a3) == TRUE || MetatileBehavior_IsDoor(a3) == TRUE) - return 1; - if (MetatileBehavior_IsSouthArrowWarp(a3) == TRUE) - return 2; - if (MetatileBehavior_IsNorthArrowWarp(a3) == TRUE) - return 1; - if (MetatileBehavior_IsWestArrowWarp(a3) == TRUE) - return 4; - if (MetatileBehavior_IsEastArrowWarp(a3) == TRUE) - return 3; - if ((playerStruct->player_field_0 == 16 && a2 == 8) - || (playerStruct->player_field_0 == 8 && a2 == 16)) - return playerStruct->player_field_1; - if (MetatileBehavior_IsLadder(a3) == TRUE) - return playerStruct->player_field_1; - return 1; -} - -u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) + return PLAYER_AVATAR_FLAG_ON_FOOT; + if (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_MACH_BIKE) + return PLAYER_AVATAR_FLAG_MACH_BIKE; + if (playerStruct->transitionFlags != PLAYER_AVATAR_FLAG_ACRO_BIKE) + return PLAYER_AVATAR_FLAG_ON_FOOT; + return PLAYER_AVATAR_FLAG_ACRO_BIKE; +} + +static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType) +{ + if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_6) + return DIR_EAST; + if (MetatileBehavior_IsDeepSouthWarp(metatileBehavior) == TRUE) + return DIR_NORTH; + if (MetatileBehavior_IsNonAnimDoor(metatileBehavior) == TRUE || MetatileBehavior_IsDoor(metatileBehavior) == TRUE) + return DIR_SOUTH; + if (MetatileBehavior_IsSouthArrowWarp(metatileBehavior) == TRUE) + return DIR_NORTH; + if (MetatileBehavior_IsNorthArrowWarp(metatileBehavior) == TRUE) + return DIR_SOUTH; + if (MetatileBehavior_IsWestArrowWarp(metatileBehavior) == TRUE) + return DIR_EAST; + if (MetatileBehavior_IsEastArrowWarp(metatileBehavior) == TRUE) + return DIR_WEST; + if ((playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER && transitionFlags == PLAYER_AVATAR_FLAG_SURFING) + || (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_SURFING && transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER)) + return playerStruct->direction; + if (MetatileBehavior_IsLadder(metatileBehavior) == TRUE) + return playerStruct->direction; + return DIR_SOUTH; +} + +u16 GetCenterScreenMetatileBehavior(void) { return MapGridGetMetatileBehaviorAt(gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7); } @@ -787,7 +784,7 @@ u8 Overworld_GetFlashLevel(void) void sub_8053D14(u16 mapDataId) { gSaveBlock1.mapDataId = mapDataId; - gMapHeader.mapData = get_mapdata_header(); + gMapHeader.mapData = GetCurrentMapData(); } static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) @@ -949,14 +946,14 @@ void Overworld_ChangeMusicTo(u16 newMusic) u8 GetMapMusicFadeoutSpeed(void) { - struct MapHeader *mapHeader = warp1_get_mapheader(); + struct MapHeader *mapHeader = GetDestinationWarpMapHeader(); if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE) return 2; else return 4; } -void sub_8053FF8(void) +void TryFadeOutOldMapMusic(void) { u16 music = GetWarpDestinationMusic(); if (FlagGet(FLAG_SPECIAL_FLAG_1) != TRUE && music != GetCurrentMapMusic()) @@ -966,7 +963,7 @@ void sub_8053FF8(void) } } -bool8 sub_8054034(void) +bool8 BGMusicStopped(void) { return IsNotWaitingForBGMStop(); } @@ -1054,9 +1051,9 @@ u8 Overworld_GetMapTypeOfSaveblockLocation(void) return GetMapTypeByWarpData(&gSaveBlock1.location); } -u8 get_map_type_from_warp0(void) +u8 GetLastUsedWarpMapType(void) { - return GetMapTypeByWarpData(&gUnknown_020297F0); + return GetMapTypeByWarpData(&gLastUsedWarp); } bool8 is_map_type_1_2_3_5_or_6(u8 mapType) @@ -1246,7 +1243,7 @@ void sub_80543DC(u16 (*a1)(u32)) gUnknown_03000584 = a1; } -void sub_80543E8(void) +static void RunFieldCallback(void) { if (gFieldCallback != NULL) gFieldCallback(); @@ -1261,7 +1258,7 @@ void CB2_NewGame(void) StopMapMusic(); ResetSafariZoneFlag_(); NewGameInitData(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); PlayTimeCounter_Start(); ScriptContext1_Init(); ScriptContext2_Disable(); @@ -1274,14 +1271,12 @@ void CB2_NewGame(void) #if DEBUG -extern void (*gFieldCallback)(void); - void debug_sub_8058C00(void) { FieldClearVBlankHBlankCallbacks(); StopMapMusic(); ResetSafariZoneFlag_(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); PlayTimeCounter_Start(); ScriptContext1_Init(); ScriptContext2_Disable(); @@ -1309,7 +1304,7 @@ void CB2_WhiteOut(void) StopMapMusic(); ResetSafariZoneFlag_(); DoWhiteOut(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); ScriptContext1_Init(); ScriptContext2_Disable(); gFieldCallback = sub_8080B60; @@ -1363,7 +1358,7 @@ void sub_8054588(void) SetMainCallback2(c2_80567AC); } -void c2_80567AC(void) +static void c2_80567AC(void) { if (sub_805483C(&gMain.state)) { @@ -1472,7 +1467,7 @@ void CB2_ContinueSavedGame(void) { ClearSecretBase2Field_9(); sub_8053778(); - warp_in(); + WarpIntoMap(); SetMainCallback2(CB2_LoadMap); } else @@ -1509,19 +1504,19 @@ void VBlankCB_Field(void) sub_8072E74(); } -void sub_8054814(void) +static void InitCurrentFlashLevelScanlineEffect(void) { - u8 val = Overworld_GetFlashLevel(); - if (val) + u8 flashLevel = Overworld_GetFlashLevel(); + if (flashLevel) { - sub_80815E0(val); - ScanlineEffect_SetParams(gUnknown_08216694); + WriteFlashScanlineEffectBuffer(flashLevel); + ScanlineEffect_SetParams(sFlashEffectParams); } } -bool32 sub_805483C(u8 *a1) +static bool32 sub_805483C(u8 *state) { - switch (*a1) + switch (*state) { case 0: FieldClearVBlankHBlankCallbacks(); @@ -1529,60 +1524,60 @@ bool32 sub_805483C(u8 *a1) ScriptContext2_Disable(); sub_8054F70(); sub_8054BA8(); - (*a1)++; + (*state)++; break; case 1: sub_8053994(1); - (*a1)++; + (*state)++; break; case 2: sub_8054D4C(1); - (*a1)++; + (*state)++; break; case 3: sub_8054E98(); sub_8054D90(); sub_8054EC8(); sub_8054E60(); - (*a1)++; + (*state)++; break; case 4: - sub_8054814(); - sub_8054C54(); + InitCurrentFlashLevelScanlineEffect(); + InitOverworldGraphicsRegisters(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gMenuTextWindowTemplate); - (*a1)++; + (*state)++; break; case 5: move_tilemap_camera_to_upper_left_corner(); - (*a1)++; + (*state)++; break; case 6: sub_8056D28(gMapHeader.mapData); - (*a1)++; + (*state)++; break; case 7: sub_8056D38(gMapHeader.mapData); - (*a1)++; + (*state)++; break; case 8: apply_map_tileset1_tileset2_palette(gMapHeader.mapData); - (*a1)++; + (*state)++; break; case 9: DrawWholeMapView(); - (*a1)++; + (*state)++; break; case 10: cur_mapheader_run_tileset_funcs_after_some_cpuset(); - (*a1)++; + (*state)++; break; case 12: - sub_80543E8(); - (*a1)++; + RunFieldCallback(); + (*state)++; break; case 11: - (*a1)++; + (*state)++; break; case 13: return 1; @@ -1590,67 +1585,67 @@ bool32 sub_805483C(u8 *a1) return 0; } -bool32 sub_805493C(u8 *a1, u32 a2) +bool32 sub_805493C(u8 *state, u32 a2) { - switch (*a1) + switch (*state) { case 0: FieldClearVBlankHBlankCallbacks(); sub_8053994(a2); - (*a1)++; + (*state)++; break; case 1: sub_8054BA8(); - (*a1)++; + (*state)++; break; case 2: sub_8054D4C(a2); - (*a1)++; + (*state)++; break; case 3: mli4_mapscripts_and_other(); sub_8054E34(); - (*a1)++; + (*state)++; break; case 4: - sub_8054814(); - sub_8054C54(); + InitCurrentFlashLevelScanlineEffect(); + InitOverworldGraphicsRegisters(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gMenuTextWindowTemplate); - (*a1)++; + (*state)++; break; case 5: move_tilemap_camera_to_upper_left_corner(); - (*a1)++; + (*state)++; break; case 6: sub_8056D28(gMapHeader.mapData); - (*a1)++; + (*state)++; break; case 7: sub_8056D38(gMapHeader.mapData); - (*a1)++; + (*state)++; break; case 8: apply_map_tileset1_tileset2_palette(gMapHeader.mapData); - (*a1)++; + (*state)++; break; case 9: DrawWholeMapView(); - (*a1)++; + (*state)++; break; case 10: cur_mapheader_run_tileset_funcs_after_some_cpuset(); - (*a1)++; + (*state)++; break; case 11: if (gMapHeader.flags == 1 && sub_80BBB24() == 1) ShowMapNamePopup(); - (*a1)++; + (*state)++; break; case 12: - sub_80543E8(); - (*a1)++; + RunFieldCallback(); + (*state)++; break; case 13: return 1; @@ -1658,24 +1653,24 @@ bool32 sub_805493C(u8 *a1, u32 a2) return 0; } -bool32 sub_8054A4C(u8 *a1) +bool32 sub_8054A4C(u8 *state) { - switch (*a1) + switch (*state) { case 0: sub_8054BA8(); sub_8054D4C(0); sub_8054E20(); sub_8054E34(); - (*a1)++; + (*state)++; break; case 1: sub_8054C2C(); - (*a1)++; + (*state)++; break; case 2: - sub_80543E8(); - (*a1)++; + RunFieldCallback(); + (*state)++; break; case 3: return 1; @@ -1683,67 +1678,67 @@ bool32 sub_8054A4C(u8 *a1) return 0; } -bool32 sub_8054A9C(u8 *a1) +bool32 sub_8054A9C(u8 *state) { - switch (*a1) + switch (*state) { case 0: FieldClearVBlankHBlankCallbacks(); sub_8054BA8(); - (*a1)++; + (*state)++; break; case 1: sub_8054D4C(1); - (*a1)++; + (*state)++; break; case 2: sub_8054F48(); sub_8054E20(); sub_8054E7C(); - (*a1)++; + (*state)++; break; case 3: - sub_8054814(); - sub_8054C54(); + InitCurrentFlashLevelScanlineEffect(); + InitOverworldGraphicsRegisters(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gMenuTextWindowTemplate); - (*a1)++; + (*state)++; break; case 4: move_tilemap_camera_to_upper_left_corner(); - (*a1)++; + (*state)++; break; case 5: sub_8056D28(gMapHeader.mapData); - (*a1)++; + (*state)++; break; case 6: sub_8056D38(gMapHeader.mapData); - (*a1)++; + (*state)++; break; case 7: apply_map_tileset1_tileset2_palette(gMapHeader.mapData); - (*a1)++; + (*state)++; break; case 8: DrawWholeMapView(); - (*a1)++; + (*state)++; break; case 9: cur_mapheader_run_tileset_funcs_after_some_cpuset(); - (*a1)++; + (*state)++; break; case 12: - sub_80543E8(); - (*a1)++; + RunFieldCallback(); + (*state)++; break; case 10: case 11: - (*a1)++; + (*state)++; break; case 13: SetFieldVBlankCallback(); - (*a1)++; + (*state)++; return 1; } return 0; @@ -1769,14 +1764,14 @@ void sub_8054BA8(void) void sub_8054C2C(void) { - sub_8054814(); - sub_8054C54(); + InitCurrentFlashLevelScanlineEffect(); + InitOverworldGraphicsRegisters(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gMenuTextWindowTemplate); mapdata_load_assets_to_gpu_and_full_redraw(); } -void sub_8054C54(void) +static void InitOverworldGraphicsRegisters(void) { REG_MOSAIC = 0; REG_WININ = 7967; @@ -1832,15 +1827,15 @@ void sub_8054D90(void) void mli4_mapscripts_and_other(void) { s16 x, y; - struct UnkPlayerStruct *player; + struct InitialPlayerAvatarState *initialPlayerAvatarState; gTotalCameraPixelOffsetX = 0; gTotalCameraPixelOffsetY = 0; sub_805AA98(); sav1_camera_get_focus_coords(&x, &y); - player = sub_8053AA8(); - InitPlayerAvatar(x, y, player->player_field_1, gSaveBlock2.playerGender); - SetPlayerAvatarTransitionFlags(player->player_field_0); - player_avatar_init_params_reset(); + initialPlayerAvatarState = GetInitialPlayerAvatarState(); + InitPlayerAvatar(x, y, initialPlayerAvatarState->direction, gSaveBlock2.playerGender); + SetPlayerAvatarTransitionFlags(initialPlayerAvatarState->transitionFlags); + ResetInitialPlayerAvatarState(); TrySpawnEventObjects(0, 0); ResetBerryTreeSparkleFlags(); mapheader_run_first_tag4_script_list_match(); @@ -2327,8 +2322,8 @@ u8 *sub_805568C(struct UnkStruct_8054FF8 *a1) return 0; unkStruct = a1->sub; - unkStruct.x += gUnknown_0821664C[a1->d].x; - unkStruct.y += gUnknown_0821664C[a1->d].y; + unkStruct.x += gDirectionToVectors[a1->d].x; + unkStruct.y += gDirectionToVectors[a1->d].y; unkStruct.height = 0; linkPlayerId = GetLinkPlayerIdAt(unkStruct.x, unkStruct.y); diff --git a/src/safari_zone.c b/src/safari_zone.c index 7cc8e16a0..9272da902 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -102,7 +102,7 @@ void sub_80C824C(void) else if (gBattleOutcome == 8) { ScriptContext2_RunNewScript(&gUnknown_081C340A); - warp_in(); + WarpIntoMap(); gFieldCallback = sub_8080E44; SetMainCallback2(CB2_LoadMap); } diff --git a/src/scrcmd.c b/src/scrcmd.c index ca49dc0df..d37e1180d 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -42,6 +42,7 @@ #include "sound.h" #include "string_util.h" #include "tv.h" +#include "constants/maps.h" typedef u16 (*SpecialFunc)(void); typedef void (*NativeFunc)(void); @@ -725,7 +726,7 @@ bool8 ScrCmd_warp(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080E88(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -739,7 +740,7 @@ bool8 ScrCmd_warpsilent(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sp13E_warp_to_last_warp(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -753,7 +754,7 @@ bool8 ScrCmd_warpdoor(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080EF0(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -765,12 +766,12 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx) u16 y; PlayerGetDestCoords(&x, &y); - if (mapGroup == 0xFF && mapNum == 0xFF) - sub_8053720(x - 7, y - 7); + if (mapGroup == MAP_GROUP(UNDEFINED) && mapNum == MAP_NUM(UNDEFINED)) + SetFixedHoleWarpAsDestination(x - 7, y - 7); else Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); sp13F_fall_to_last_warp(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -784,7 +785,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080F68(); - player_avatar_init_params_reset(); + ResetInitialPlayerAvatarState(); return TRUE; } @@ -820,7 +821,7 @@ bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - sub_8053690(mapGroup, mapNum, warpId, x, y); + SetFixedDiveWarp(mapGroup, mapNum, warpId, x, y); return FALSE; } @@ -832,7 +833,7 @@ bool8 ScrCmd_setholewarp(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - sub_80536E4(mapGroup, mapNum, warpId, x, y); + SetFixedHoleWarp(mapGroup, mapNum, warpId, x, y); return FALSE; } diff --git a/src/secret_base.c b/src/secret_base.c index 60ce80af5..69c7171d6 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -363,7 +363,7 @@ void sub_80BBA48(u8 taskid) if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) gSaveBlock1.secretBases[curbaseid].sbr_field_10++; sub_80BBA14(); - warp_in(); + WarpIntoMap(); gFieldCallback = sub_8080990; SetMainCallback2(CB2_LoadMap); DestroyTask(taskid); @@ -416,7 +416,7 @@ void sub_80BBBEC(u8 taskid) { idx = 4 * (gCurrentSecretBaseId / 10); Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); - warp_in(); + WarpIntoMap(); gFieldCallback = sub_80BBB90; SetMainCallback2(CB2_LoadMap); DestroyTask(taskid); @@ -578,7 +578,7 @@ void sub_80BC074(u8 taskid) break; case 2: copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E); - warp_in(); + WarpIntoMap(); gFieldCallback = mapldr_default; SetMainCallback2(CB2_LoadMap); ScriptContext2_Disable(); diff --git a/src/time_events.c b/src/time_events.c index 4bd732788..d3acdaf2f 100644 --- a/src/time_events.c +++ b/src/time_events.c @@ -81,7 +81,7 @@ void UpdateShoalTideFlag(void) 1, }; - if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0())) + if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType())) { RtcCalcLocalTime(); if (tide[gLocalTime.hours]) |