diff options
Diffstat (limited to 'src/field_effect.c')
-rw-r--r-- | src/field_effect.c | 94 |
1 files changed, 51 insertions, 43 deletions
diff --git a/src/field_effect.c b/src/field_effect.c index 91794a07a..90c11b8c3 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -306,9 +306,11 @@ bool8 (*const gUnknown_0839F364[])(struct Task *, struct EventObject *, struct S sub_80877D4 }; -void (*const gUnknown_0839F378[])(struct Task *) = { - sub_80878F4, - sub_8087914 +static void EscapeRopeFieldEffect_Step0(struct Task *); +static void EscapeRopeFieldEffect_Step1(struct Task *); +void (*const gEscapeRopeFieldEffectFuncs[])(struct Task *) = { + EscapeRopeFieldEffect_Step0, + EscapeRopeFieldEffect_Step1 }; static u8 sActiveList[32]; @@ -918,7 +920,7 @@ void PokeballGlowEffect_1(struct Sprite *sprite) sprite->data[3] = 0; if (sprite->data[5]) { - PlayFanfare(BGM_ME_ASA); + PlayFanfare(MUS_ME_ASA); } } } @@ -1107,7 +1109,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 +1152,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 +1287,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 +1408,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 +1767,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,21 +1930,21 @@ 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; } -void sub_80878C4(u8); +static void DoEscapeRopeFieldEffect(u8); 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)); @@ -1970,52 +1970,60 @@ void sub_808788C(struct Sprite *sprite) } } -void sub_80878A8(void) +void StartEscapeRopeFieldEffect(void) { ScriptContext2_Enable(); FreezeEventObjects(); - CreateTask(sub_80878C4, 0x50); + CreateTask(DoEscapeRopeFieldEffect, 0x50); } -void sub_80878C4(u8 taskId) +static void DoEscapeRopeFieldEffect(u8 taskId) { - gUnknown_0839F378[gTasks[taskId].data[0]](&gTasks[taskId]); + gEscapeRopeFieldEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId]); } -void sub_80878F4(struct Task *task) +static void EscapeRopeFieldEffect_Step0(struct Task *task) { task->data[0]++; task->data[14] = 64; task->data[15] = GetPlayerFacingDirection(); } -void sub_8087914(struct Task *task) +static void EscapeRopeFieldEffect_Step1(struct Task *task) { struct EventObject *eventObject; - u8 unknown_0839F380[5] = {1, 3, 4, 2, 1}; + u8 clockwiseDirections[5] = { + DIR_SOUTH, + DIR_WEST, + DIR_EAST, + DIR_NORTH, + DIR_SOUTH, + }; + 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)); - } else if (task->data[1] == 0 || (--task->data[1]) == 0) + DestroyTask(FindTaskIdByFunc(DoEscapeRopeFieldEffect)); + } + else if (task->data[1] == 0 || (--task->data[1]) == 0) { - EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(unknown_0839F380[eventObject->facingDirection])); + EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(clockwiseDirections[eventObject->facingDirection])); if (task->data[2] < 12) - { task->data[2]++; - } + task->data[1] = 8 >> (task->data[2] >> 2); } } @@ -2157,17 +2165,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 +3070,7 @@ void sub_8088F10(struct Task *task) { if (sub_8088FA4(task->data[1])) { - fade_8080918(); + WarpFadeScreen(); task->data[0]++; } } |