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