diff options
author | GriffinR <griffin.richards@comcast.net> | 2019-11-08 03:37:46 -0500 |
---|---|---|
committer | huderlem <huderlem@gmail.com> | 2019-11-14 18:07:56 -0600 |
commit | 0f53aeb19b39677b111e6c1b1176fb83efc773d3 (patch) | |
tree | bd80028ecc0de495a6caeda3d35c09b3f7d0e726 /src | |
parent | ba6571909092005f4da1672cc7c89063c0aadc1e (diff) |
Document SS Tidal scripts
Diffstat (limited to 'src')
-rw-r--r-- | src/field_control_avatar.c | 2 | ||||
-rw-r--r-- | src/field_special_scene.c | 67 | ||||
-rw-r--r-- | src/field_specials.c | 25 |
3 files changed, 52 insertions, 42 deletions
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 9ed331494..faa906637 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -597,7 +597,7 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior) return TRUE; if (CountSSTidalStep(1) == TRUE) { - ScriptContext1_SetupScript(SSTidalCorridor_EventScript_23C050); + ScriptContext1_SetupScript(SSTidalCorridor_EventScript_ReachedStepCount); return TRUE; } if (TryStartMatchCall()) diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 231f4dd42..897da2312 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -14,6 +14,8 @@ #include "sprite.h" #include "task.h" #include "constants/event_objects.h" +#include "constants/event_object_movement_constants.h" +#include "constants/field_specials.h" #include "constants/songs.h" #include "constants/vars.h" #include "constants/metatile_labels.h" @@ -31,8 +33,18 @@ enum //. rodata static const s8 gTruckCamera_HorizontalTable[] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, -1, -1, -1, 0}; -const u8 gUnknown_0858E8AB[] = {0x18, 0xFE}; -const u8 gUnknown_0858E8AD[] = {0x17, 0xFE}; + +static const u8 sSSTidalSailEastMovementScript[] = +{ + MOVEMENT_TYPE_ROTATE_CLOCKWISE, + MOVEMENT_ACTION_STEP_END +}; + +static const u8 sSSTidalSailWestMovementScript[] = +{ + MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE, + MOVEMENT_ACTION_STEP_END +}; // .text static void Task_Truck3(u8); @@ -256,7 +268,7 @@ bool8 sub_80FB59C(void) void Task_HandlePorthole(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 *var = GetVarPointer(VAR_PORTHOLE_STATE); + u16 *cruiseState = GetVarPointer(VAR_SS_TIDAL_STATE); struct WarpData *location = &gSaveBlock1Ptr->location; switch (data[0]) @@ -268,40 +280,41 @@ void Task_HandlePorthole(u8 taskId) data[0] = EXECUTE_MOVEMENT; // execute movement before checking if should be exited. strange? } break; - case IDLE_CHECK: // idle and move. + case IDLE_CHECK: if (gMain.newKeys & A_BUTTON) data[1] = 1; - if (!ScriptMovement_IsObjectMovementFinished(0xFF, location->mapNum, location->mapGroup)) + if (!ScriptMovement_IsObjectMovementFinished(EVENT_OBJ_ID_PLAYER, location->mapNum, location->mapGroup)) return; if (CountSSTidalStep(1) == TRUE) { - if (*var == 2) - *var = 9; + if (*cruiseState == SS_TIDAL_DEPART_SLATEPORT) + *cruiseState = SS_TIDAL_EXIT_CURRENTS_RIGHT; else - *var = 10; - data[0] = 3; + *cruiseState = SS_TIDAL_EXIT_CURRENTS_LEFT; + data[0] = EXIT_PORTHOLE; return; } - data[0] = 2; - case EXECUTE_MOVEMENT: // execute movement. + data[0] = EXECUTE_MOVEMENT; + //fallthrough + case EXECUTE_MOVEMENT: if (data[1]) { - data[0] = EXIT_PORTHOLE; // exit porthole. + data[0] = EXIT_PORTHOLE; return; } - // run this once. - if (*var == 2) // which direction? + + if (*cruiseState == SS_TIDAL_DEPART_SLATEPORT) { - ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AB); - data[0] = IDLE_CHECK; // run case 1. + ScriptMovement_StartObjectMovementScript(EVENT_OBJ_ID_PLAYER, location->mapNum, location->mapGroup, sSSTidalSailEastMovementScript); + data[0] = IDLE_CHECK; } else { - ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AD); - data[0] = IDLE_CHECK; // run case 1. + ScriptMovement_StartObjectMovementScript(EVENT_OBJ_ID_PLAYER, location->mapNum, location->mapGroup, sSSTidalSailWestMovementScript); + data[0] = IDLE_CHECK; } break; - case EXIT_PORTHOLE: // exit porthole. + case EXIT_PORTHOLE: FlagClear(FLAG_DONT_TRANSITION_MUSIC); FlagClear(FLAG_HIDE_MAP_NAME_POPUP); SetWarpDestinationToDynamicWarp(0); @@ -311,32 +324,28 @@ void Task_HandlePorthole(u8 taskId) } } -void sub_80FB6EC(void) +static void ShowSSTidalWhileSailing(void) { u8 spriteId = AddPseudoEventObject(EVENT_OBJ_GFX_SS_TIDAL, SpriteCallbackDummy, 112, 80, 0); gSprites[spriteId].coordOffsetEnabled = FALSE; - if (VarGet(VAR_PORTHOLE_STATE) == 2) - { - StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(4)); - } + if (VarGet(VAR_SS_TIDAL_STATE) == SS_TIDAL_DEPART_SLATEPORT) + StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(DIR_EAST)); else - { - StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(3)); - } + StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(DIR_WEST)); } void sub_80FB768(void) { - sub_80FB6EC(); + ShowSSTidalWhileSailing(); gEventObjects[gPlayerAvatar.eventObjectId].invisible = TRUE; pal_fill_black(); CreateTask(Task_HandlePorthole, 80); ScriptContext2_Enable(); } -void sub_80FB7A4(void) +void LookThroughPorthole(void) { FlagSet(FLAG_SYS_CRUISE_MODE); FlagSet(FLAG_DONT_TRANSITION_MUSIC); diff --git a/src/field_specials.c b/src/field_specials.c index 0a8e5fb36..6221071d0 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -303,9 +303,10 @@ void ResetSSTidalFlag(void) FlagClear(FLAG_SYS_CRUISE_MODE); } +// Returns TRUE if the Cruise is over bool32 CountSSTidalStep(u16 delta) { - if (!FlagGet(FLAG_SYS_CRUISE_MODE) || (*GetVarPointer(VAR_CRUISE_STEP_COUNT) += delta) <= 0xcc) + if (!FlagGet(FLAG_SYS_CRUISE_MODE) || (*GetVarPointer(VAR_CRUISE_STEP_COUNT) += delta) < SS_TIDAL_MAX_STEPS) { return FALSE; } @@ -315,21 +316,21 @@ bool32 CountSSTidalStep(u16 delta) u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y) { u16 *varCruiseStepCount = GetVarPointer(VAR_CRUISE_STEP_COUNT); - switch (*GetVarPointer(VAR_PORTHOLE_STATE)) + switch (*GetVarPointer(VAR_SS_TIDAL_STATE)) { - case 1: - case 8: + case SS_TIDAL_BOARD_SLATEPORT: + case SS_TIDAL_LAND_SLATEPORT: return SS_TIDAL_LOCATION_SLATEPORT; - case 3: - case 9: + case SS_TIDAL_HALFWAY_LILYCOVE: + case SS_TIDAL_EXIT_CURRENTS_RIGHT: return SS_TIDAL_LOCATION_ROUTE131; - case 4: - case 5: + case SS_TIDAL_LAND_LILYCOVE: + case SS_TIDAL_BOARD_LILYCOVE: return SS_TIDAL_LOCATION_LILYCOVE; - case 6: - case 10: + case SS_TIDAL_DEPART_LILYCOVE: + case SS_TIDAL_EXIT_CURRENTS_LEFT: return SS_TIDAL_LOCATION_ROUTE124; - case 2: + case SS_TIDAL_DEPART_SLATEPORT: if (*varCruiseStepCount < 60) { *mapNum = MAP_NUM(ROUTE134); @@ -346,7 +347,7 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y) *x = *varCruiseStepCount - 140; } break; - case 7: + case SS_TIDAL_HALFWAY_SLATEPORT: if (*varCruiseStepCount < 66) { *mapNum = MAP_NUM(ROUTE132); |