sol_sanctum_eruption.c
Sol Sanctum collapsing as the volcano erupts: Saturos and his group take Jenna and Kraden away, and the Wise One rescues Isaac and Garet.
games/tbs/src/scene/sol_sanctum_eruption.c on GitHub
Sol Sanctum collapsing as the volcano erupts: Saturos and his group take Jenna and Kraden away, and the Wise One rescues Isaac and Garet.
Functions
SolSanctumEruption_GetPlacements
const struct ScenePlacement *SolSanctumEruption_GetPlacements(void)
Returns Garet and Jenna, then the departure glow (actor 8), Kraden, Saturos, Menardi, Felix masked and unmasked, Alex, the Wise One (15) and sixteen rocks (16 to 31), all placed off the map until the cutscene moves them.
SolSanctumEruption_GetEvents
const struct SceneEvent *SolSanctumEruption_GetEvents(void)
Returns the empty event table: the scene is one cutscene.
SolSanctumEruption_PlaceHostageGroup
static inline void SolSanctumEruption_PlaceHostageGroup(void)
Stages Saturos, Menardi, Alex and Felix around Jenna and Kraden.
Used by SolSanctumEruption_PlayHostageScene.
SolSanctumEruption_PlayHostageScene
static void SolSanctumEruption_PlayHostageScene(void)
Saturos's group argues over the Mars Star and leaves with Jenna and Kraden as hostages, before the Wise One rescues Isaac and Garet. Called by SolSanctumEruption_Initialize at entrance 10, the arrival from the Elemental Star room. Sets FLAG_SCENE_TEMP_46, plays SolSanctumEruption_PlayWiseOneRescue and then removes Jenna from the party.
Used by SolSanctumEruption_Initialize.
SolSanctumEruption_RaiseAndShrinkActor
static void SolSanctumEruption_RaiseAndShrinkActor(s32 actorId)
Lifts one departing actor and shrinks it together with the paired effect.
Used by SolSanctumEruption_PlayHostageScene.
SolSanctumEruption_Initialize
s32 SolSanctumEruption_Initialize(void)
Plays the eruption at entrance 10, the arrival from the Elemental Star room. Called by Field_RunScene once the actors exist.
SolSanctumEruption_AlignEmberToHeading
static s32 SolSanctumEruption_AlignEmberToHeading(struct ScriptInterpreter *interpreter)
Keeps a flying ember sprite rotated a quarter-turn from its facing. Run by each ember's object script, gEruption_EmberScript.
Used by gEruption_EmberScript.
SolSanctumEruption_ThrowEruptionRing
static void SolSanctumEruption_ThrowEruptionRing(void)
Launches sixteen rocks outward, then resets their actors for ember emission.
Used by SolSanctumEruption_PlayHostageScene.
SolSanctumEruption_ResetEmberEmission
static void SolSanctumEruption_ResetEmberEmission(void)
Resets the sixteen ember slots and their emission timers.
Used by SolSanctumEruption_PlayHostageScene.
SolSanctumEruption_StepEmbers
static void SolSanctumEruption_StepEmbers(void)
Retires landed embers and launches the next free one at the current frequency, shaking the map after each. Run each frame as a callback that SolSanctumEruption_PlayHostageScene adds and SolSanctumEruption_PlayWiseOneRescue removes.
Used by SolSanctumEruption_PlayHostageScene, SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_UpdateEmberFrequency
static void SolSanctumEruption_UpdateEmberFrequency(void)
Varies the ember emission interval and its duration. Run each frame as a callback beside SolSanctumEruption_StepEmbers.
Used by SolSanctumEruption_PlayHostageScene, SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_FinishMaterialization
static inline void SolSanctumEruption_FinishMaterialization(void)
Ends the Wise One's palette animation and clears its attached effect.
Used by SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_PlayWiseOneRescue
static void SolSanctumEruption_PlayWiseOneRescue(void)
Left behind, Isaac and Garet face the Wise One, who makes the Mars Star glow, warns them of Alchemy's threat and sends them out as the volcano erupts. Isaac keeps the Star. Called by SolSanctumEruption_PlayHostageScene. Sets FLAG_SOL_SANCTUM_ERUPTED and FLAG_SOL_SANCTUM_STAR_ROOM_COLLAPSED and takes exit 5, to the Luna and Sol rooms (scene 11, entrance 8).
Used by SolSanctumEruption_PlayHostageScene.
SolSanctumEruption_PlaceBeforeStar
static void SolSanctumEruption_PlaceBeforeStar(s32 actor)
Places an actor before the star, facing south, and draws it above the chamber floor.
Used by SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_DrawFirstCollapseTiles
static void SolSanctumEruption_DrawFirstCollapseTiles(s32 alternate)
Selects the first collapsing tile patch and redraws the map.
Used by SolSanctumEruption_FlickerFirstCollapseTiles, SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_DrawSecondCollapseTiles
static void SolSanctumEruption_DrawSecondCollapseTiles(s32 alternate)
Selects the second collapsing tile patch and redraws the map.
Used by SolSanctumEruption_FlickerSecondCollapseTiles, SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_FlickerFirstCollapseTiles
static void SolSanctumEruption_FlickerFirstCollapseTiles(void)
Randomly alternates the first tile patch on even frames. Run each frame as a callback while the floor breaks up, until the Wise One holds it.
Used by SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_FlickerSecondCollapseTiles
static void SolSanctumEruption_FlickerSecondCollapseTiles(void)
Randomly alternates the second tile patch on even frames, as the first.
Used by SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_RaiseElementalArcs
static void SolSanctumEruption_RaiseElementalArcs(u32 mode)
Stages and raises ten arc effects at one of the four chamber positions.
Used by SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_UpdateElementalArcs
static void SolSanctumEruption_UpdateElementalArcs(void)
Stretches each active arc for eight frames, then lifts it out of view. Run each frame as a callback while SolSanctumEruption_RaiseElementalArcs runs.
Used by SolSanctumEruption_RaiseElementalArcs.
SolSanctumEruption_FadeCameraTo
static void SolSanctumEruption_FadeCameraTo(s32 x, s32 z)
Fades out, moves the camera and its focus actor, then fades back in.
Used by SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_RestoreCornerCellAttributes
static void SolSanctumEruption_RestoreCornerCellAttributes(void)
Restores eight corner-cell attributes from the chamber templates.
Used by SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_SetMaterializationTint
static void SolSanctumEruption_SetMaterializationTint(s32 enabled, s32 frames, s32 waitFrames)
Fades the object palette into or out of the materialization tint.
Used by SolSanctumEruption_PlayHostageScene, SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_FlashMaterializingActor
static void SolSanctumEruption_FlashMaterializingActor(struct FieldActor *actor)
Flashes the palette and spawns paired vertical effects every sixteen frames.
Used by SolSanctumEruption_PlayWiseOneRescue.
SolSanctumEruption_CycleActorPalette
static void SolSanctumEruption_CycleActorPalette(struct FieldActor *actor)
Cycles six palettes while spawning the actor's vertical effects.
Used by SolSanctumEruption_UpdateWiseOnePalette.
SolSanctumEruption_SpawnEffectPair
static void SolSanctumEruption_SpawnEffectPair(struct FieldActor *parent)
Creates two vertical effects sharing the parent position and cached tiles.
Used by SolSanctumEruption_CycleActorPalette, SolSanctumEruption_FlashMaterializingActor.
SolSanctumEruption_UpdateWiseOnePalette
static void SolSanctumEruption_UpdateWiseOnePalette(void)
Cycles the Wise One's palette while it glows. Run each frame as a callback that SolSanctumEruption_PlayWiseOneRescue adds and SolSanctumEruption_FinishMaterialization removes.
Used by SolSanctumEruption_FinishMaterialization, SolSanctumEruption_PlayWiseOneRescue.
Also, functions without a comment: SolSanctumEruption_GetEntrances, SolSanctumEruption_GetRegions, SolSanctumEruption_GetExits, SolSanctumEruption_UnusedCallbackA, SolSanctumEruption_UnusedCallbackB.
Macros, without a comment: ELEMENTAL_ARC_SCALE_X_DECREASE, EMBER_EMISSION_DISABLED, ARC_SCAN_STILL_ACTIVE.
Globals, without a comment: gEruption_ArcOriginsHead, gEruption_ArcOrigins, gSolSanctumEruption_Entrances, gSolSanctumEruption_Exits, gSolSanctumEruption_Placements, gSolSanctumEruption_Events, gSolSanctumEruption_StarCells, gEruption_EmberScript, gSolSanctum_RingDrift, gSolSanctum_RingSwing, gSolSanctum_RingDirection, gSolSanctumRing_MaxScales, gSolSanctumRing_ScaleSteps.