summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/field_control_avatar.c2
-rw-r--r--src/field_special_scene.c67
-rw-r--r--src/field_specials.c25
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);