Document SS Tidal scripts
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user