23#define NULL ((void *)0)
50#include "text/msg_ids.h"
71#define FLAG_SHAMANS_ROD_OWNER 0x345
151 object->effect.y +=
object->effect.velocity.y;
156 object->effect.scaleX +=
object->effect.scaleRateX;
157 object->effect.scaleY +=
object->effect.scaleRateY;
158 object->effect.sprite->rotation +=
object->effect.spin;
209 angle = (actor->
facing + 0x1000) & 0xe000;
227 destination.coordinates[0] >> 16,
228 destination.coordinates[2] >> 16);
261 pillar->
y.
fixed += reboundStep;
262 leader->
y.
fixed += reboundStep;
265 pillar->
y.
fixed += reboundStep;
266 leader->
y.
fixed += reboundStep;
367 if (nearestPillar != 0) {
816 }
while ((
u32)frame <= 39);
896 if (answerAccepted != 0) {
918 if (answerAccepted != 0) {
965 receiptMessage = MsgVenusIsaacHandedOverShamansRod;
1136 for (effectIndex = 0; effectIndex < 2; ++effectIndex) {
1139 pair[effectIndex] =
child;
1142 sprite =
child->sprite;
1143 child->motionFlags = 0;
1145 child->linkedObject = parent;
1146 if (sprite !=
NULL) {
1165 effect->
update = Effect_AnimateVerticalNegative;
1166 effectSprite->
image.
priority = parent->sprite->image.priority;
1172 effectSprite->
image.
priority = parent->sprite->image.priority;
1173 effect->
update = Effect_AnimateVerticalPositive;
1192 cosine = velocity[0];
1193 cosine += cosine * 2;
1196 velocity[0] = cosine;
1396 sprite = star->
actor.sprite;
1439 star->
actor.sprite->image.priority = 1;
1689 for (sceneStep = 0; sceneStep <= 16; sceneStep++) {
1692 velocity[0], velocity[1], velocity[2],
1705 for (sceneStep = 0; sceneStep <= 16; sceneStep++) {
1708 velocity[0], velocity[1], velocity[2],
1771 effect->
timer -= 0x800;
1799 actor->
timer = next;
1827 sprite = effect->sprite;
1832 effect->
timer = angle;
1862 if (pairParked != 0) {
2136 if (answerAccepted != 0) {
2674 if (stepPending != 0) {
2893 if (center->
y.
fixed > 0) {
2943 if (spawnParticles) {
2949 sprite = effect->sprite;
2954 effect->
timer = angle;
3003 if ((
s16)(map->
viewY >> 16) <= 129) {
3028 sprite = effect->sprite;
3033 effect->
timer = angle;
3034 effect->
work = phase;
3050 spin =
object->effect.spin;
3054 object->actor.targetX =
object->effect.x;
3055 object->actor.targetZ =
object->effect.z;
3056 object->effect.spin -= 0x200;
void ObjectGroup_SetChildValue(struct FieldActor *actor, s32 param)
Sets the param byte of every animated part of an actor's sprite.
void Object_RefreshSelectorById(u32 objectId)
Waits, at most 300 frames, for an actor's script to reach its end (command 0x10).
void ObjectMotion_WaitForAnimationChange(u32 objectId)
Waits, at most 90 frames, for an actor's animation to change.
struct FieldActor * Object_GetById(s32 actor)
Returns an actor, or NULL if it does not exist.
void ObjectTable_Snapshot(void)
Saves up to 32 actors (only the party's 8 on the world map) into gObjectSnapshots,...
s32 AnimationObjects_SelectAnimation(struct AnimationObject *sprite, s32 animation)
Starts animation flags & 0x7f on every layer of a sprite (bit 7 keeps each layer's place and timer),...
Animated sprites: their layers, frames and colour modes, and the resource slots they draw from.
B5Context, the object context a battle routine reads; most of its fields are still unnamed.
const s32 * gEffectScripts[]
Calls through a function pointer, by argument count.
The task scheduler: tasks, their order and the scheduler's state.
The engine calls the debug menus import, and their palette swatch tiles.
static s32 FieldScheduler_AddCallback(SchedulerCallback callback, s32 priority)
Registers a main-image scheduler callback.
static s32 FieldObject_CheckMovementCollision(struct FieldActor *actor, struct FieldPosition *position)
Scene commands: the all-caps macros the scene scripts are written in.
#define OBJ_GET(no)
Gets an object by index as the same union FieldObject passed to update hooks.
void ObjectSystem_ResumeProjectionAndHideLayers(void)
Resumes the object camera updates and hides BG1-3 and the sprites.
void ObjectSystem_SuspendProjectionAndShowSprites(void)
Suspends the object camera updates, starts the palette back to normal and, a frame later,...
Field effects, their scripts and the flags that spawn them.
@ EFFECT_USE_PALETTE
options.palette, as its group child value
@ EFFECT_USE_UPDATE
options.update
@ EFFECT_USE_START_SCALE
options.startScaleX and startScaleY
The scene script layer: the engine services a scene's events call, declared once (Engine_EventBegin,...
#define SPEAKER_PORTRAIT_LEFT
u32 Math_RemainderUnsigned(u32 dividend, u32 divisor)
static s32 Event_OpenMessage(s32 speaker, s32 flags)
static void Actor_SetDestination(s32 actor, s32 x, s32 z)
static void Actor_FaceDirection(s32 actor, s32 facing, s32 frames)
void Engine_ActorSetAnimationAndWait(s32 actor, s32 animation)
void Object_SetMode(struct FieldActor *object, s32 animation)
#define SPEAKER_WINDOW_ABOVE
void Engine_ActorsRefresh(void)
void Engine_ActorSetSpritePriority(s32 actor, s32 priority)
static void Event_ShowMessageAndWait(s32 speaker, s32 flags, s32 frames)
s32 Engine_EventChooseYesNo(s32 actor, s32 flags)
void Engine_MessageShowCentered(s32 message, s32 flags)
void Engine_ObjectSetPartPalettes(struct FieldActor *object, s32 palette)
void Engine_EventShowMessageAndWait(s32 speaker, s32 flags, s32 frames)
#define SPEAKER_PORTRAIT_RIGHT
void Engine_CameraSetSpeed(s32 speed, s32 acceleration)
static void Actor_WalkToAndWait(s32 actor, s32 x, s32 z)
static void Camera_SetSpeed(s32 speed, s32 acceleration)
void Engine_CameraMoveTo(s32 fixed_x, s32 fixed_y, s32 fixed_z, s32 pan)
void Engine_ActorMoveToAndWait(s32 actor, s32 x, s32 z)
void Engine_ActorJump(s32 actor, s32 height, s32 frames)
static void Actor_MoveToAndWait(s32 actor, s32 x, s32 z)
s32 Engine_MathSin(s32 angle)
void Engine_ActorFaceDirection(s32 actor, s32 facing, s32 frames)
void Engine_EventCloseScreen(void)
void Engine_ActorSetDestination(s32 actor, s32 x, s32 z)
static void Actor_RunActionScriptAndWait(s32 actor, const s32 *script)
Runs a script, waiting at most 300 frames for its final command.
static void Map_CopyCellsTo(s32 srcX, s32 srcY, s32 destX, s32 destY, s32 width, s32 height)
void Engine_ActorWalkToAndWait(s32 actor, s32 x, s32 z)
#define SPEAKER_WINDOW_BELOW
static void ColorBuffer_ApplyTarget(s32 value, s32 mode)
static void Actor_WalkTo(s32 actor, s32 x, s32 z)
void Engine_EventWaitForScreen(void)
void Engine_ActorDestroy(s32 actor)
static void Actor_ShowEmote(s32 actor, s32 emote, s32 frames)
void Engine_EventOpenScreen(void)
s32 Engine_EventOpenMessage(s32 speaker, s32 flags)
void Engine_GameFlagSet(s32 flag)
void Engine_GameFlagClear(s32 flag)
void Engine_CameraWaitForMove(void)
static void Actor_SetActionScript(s32 actor, const s32 *script)
The engine encodes either a built-in action or an action-script address.
void Engine_ActorWaitForMove(s32 actor)
static void Map_CopyCellAttributes(s32 srcX, s32 srcY, s32 width, s32 height, s32 destX, s32 destY)
void Engine_ActorStop(s32 actor)
void Engine_ActorRunRepeatedMotion(s32 actor, s32 repeats)
void Engine_ActorWalkTo(s32 actor, s32 x, s32 z)
static void Event_ShowMessage(s32 speaker, s32 flags)
void Engine_ActorSetAttachedEffect(s32 actor, s32 effect)
static void Event_PlayCue(s32 cue)
void Engine_ActorSetChildValue(s32 actor, s32 value)
static void Map_SetShake(s32 horizontal, s32 vertical, s32 decay)
Sets shake amplitudes in fixed-point pixels and the per-frame decay factor.
static void Actor_SetChildValue(s32 actor, s32 value)
s32 Engine_GameFlagIsSet(s32 flag)
void Engine_ActorStartRepeatedMotion(s32 actor, s32 repeats)
static struct FieldActor * Object_Create(s32 type, s32 fixed_x, s32 fixed_y, s32 fixed_z)
struct FieldActor * Engine_EventGetViewCenter(void)
s32 Engine_MathCos(s32 angle)
static void Actor_SetSpeed(s32 actor, s32 speed, s32 acceleration)
void Engine_MapRedraw(void)
static s32 Random_Next(void)
void Engine_ColorBufferInterpolate(s32 frames)
static void Camera_MoveTo(s32 fixed_x, s32 fixed_y, s32 fixed_z, s32 pan)
static void Actor_SetPosition(s32 actor, s32 fixed_x, s32 fixed_z)
void Engine_EventWait(s32 frames)
static void Actor_SetAttachedEffect(s32 actor, s32 effect)
void Engine_ColorBufferApplyTarget(s32 value, s32 mode)
static void Object_SetScript(struct FieldActor *object, const s32 *script)
static struct FieldActor * Actor_Get(s32 actor)
static void ColorBuffer_ApplySource(s32 value, s32 mode)
Field objects and actors, and the scene transition styles.
@ ACTOR_PRIORITY_UNDERFOOT
The depth sort treats it as 320 pixels higher on the screen.
@ ACTOR_PRIORITY_AUTOMATIC
The sprite takes its priority from the map cell under it.
@ ACTOR_FOLLOWS_TERRAIN
moves with the ground height under it
@ ACTOR_FALLS
falls by its gravity and bounces
#define ACTOR_NO_TARGET
A target coordinate that is not set: the object has no target.
#define SCENE_TRANSITION(style, variant)
@ ACTOR_FACES_MOTION
turns toward its velocity, 1/16 turn a frame
The scene table formats: entrances, exits, placements and events, and the macros that write them.
#define SCENE_EXITS(scene)
#define SCENE_EXIT(exit, scene, entrance)
#define EVENT_SCRIPT(script)
#define EVENT_TOUCH_WALKING
#define PLACEMENT_SHARE_PREVIOUS_SPRITE
The scene service layer: one typed inline for each engine service a scene calls by its own name,...
static s32 Task_AddCallback(void(*callback)(void), s32 priority)
Calls the main-image scheduler through engine_call.h.
static void Actor_RunRepeatedMotion(s32 actor, s32 repeats)
static struct FieldActor * Event_GetViewCenter(void)
static s32 Vram_Load(s32 block, s32 size, const void *data)
static void Task_Wait(s32 frames)
static void Actor_Stop(s32 actor)
static void Event_Begin(void)
static void Actor_StartRepeatedMotion(s32 actor, s32 repeats)
static void Actor_SetSpriteFlags(struct FieldActor *actor, s32 flags)
static void ColorBuffer_Interpolate(s32 frames)
static void Actor_SetSpritePriority(s32 actor, s32 priority)
static void Map_Redraw(void)
static void Actor_SetAnimation(s32 actor, s32 animation)
static void Actor_SetAnimationAndWait(s32 actor, s32 animation)
static void Event_Wait(s32 frames)
static void Event_WaitForScreen(void)
static void Item_LoadIcon(s32 item)
static void Heap_Release(s32 slot)
static void Actor_Jump(s32 actor, s32 height, s32 frames)
static s32 Event_ChooseYesNo(s32 actor, s32 flags)
static void Event_SetMessage(s32 message)
static void FieldObject_SetPosition(struct FieldActor *object, s32 fixed_x, s32 fixed_y, s32 fixed_z)
static void * Heap_Allocate(s32 slot, s32 size)
static void Event_OpenScreen(void)
16.16 fixed-point constants, sine and cosine, and the library division.
#define Q16_ONE
One in the engine's signed 16.16 fixed-point format.
Game flags, named where their meaning is shown.
#define FLAG_RETURNED_FROM_VENUS_LIGHTHOUSE
The party is back from Venus Lighthouse, by the aerie's exit.
#define FLAG_SCENE_TEMP_35
#define FLAG_VENUS_LIGHTHOUSE_LIT
#define FLAG_KEEP_MUSIC
The next scene keeps the music that is playing; scene.c clears FLAG_KEEP_MUSIC as it does,...
#define FLAG_SCENE_TEMP_34
#define FLAG_SCENE_TEMP_37
#define FLAG_RETREAT_BLOCKED
Retreat is blocked, from Psynergy or an item.
#define FLAG_KEEP_PARTY_POSITION
#define FLAG_SCENE_TEMP_36
#define FLAG_SCENE_TEMP_50
volatile u32 gFrameCount
Frames WaitFrames has finished.
BattleFxScene, the work of a battle or field Psynergy effect scene, and its arc objects.
GameState, the game's state: play time, coins, the scene and the leader's position,...
#define Battle_SetStart(mode)
Sets the battle start type.
struct GameState gGameState
The work slots of gWorkSlot, read through their own names.
void * gEffectWork
Slot 56: points to a scene-specific structure.
The screen blend's globals and the graphics routines.
The heap's work slots and HeapState.
#define WORK_SLOT(n)
Reads slots through their own addresses; adjacent slots are reached by offsets.
The main-image routines scene overlays import.
s32 Inventory_AddItem(s32 owner, s32 itemId)
Gives a unit one item, joining its first matching stack (up to 30) or taking the first free slot.
s32 PartyInventory_FindOwner(s32 itemId)
Returns who carries itemId, asking the selected character first, or -1.
s32 PartyInventory_Remove(s32 itemId)
Removes one itemId from whoever carries it first; always returns 0.
The hardware's I/O registers and their bits, as pret names them.
Item numbers, named from the English release.
The IWRAM call layer: the routines the game keeps resident in IWRAM, each at its fixed address,...
Small statement macros both games use for positions, velocities and bounds.
#define SET_VELOCITY(p, vx, vy, vz)
#define SET_VECTOR(v, x, y, z)
Sets the x, y and z of a three-part vector: a position about to be projected, a per-frame step,...
void Vector_AddPolarOffset(s32 radius, s32 angle, void *position)
Moves the point position by radius in direction angle on the ground plane: x by the cosine,...
The reel game's title lettering.
Field object scripts: one s32 command word, then its operands, as gScriptObject_CommandTable runs the...
#define SC_LABEL(n)
Branch destination.
#define SC_SET(w, v)
Write a work value.
#define SC_LOOP(n, to)
Repeat up to n times.
#define SC_POS(x, y, z)
Set position.
#define SC_SYNC
Wait for arrival.
#define SC_MOVE(x, y, z)
Move toward the target.
#define SC_WAIT(n)
Wait n frames.
#define SC_TOP
Script start.
#define SC_END
Return to the main script.
#define SC_MOVE_BY(x, y, z)
Move by a relative offset.
void Event_SetDestination(s32 scene, s32 entrance)
Makes the event leave for the given entrance of the given scene: raises the exit request 999 and writ...
static s32 Scene_LookAboutRandomly(struct ScriptInterpreter *interpreter)
An object script call, each frame: when the actor's countdown (work) runs out, it turns by a random a...
void FieldObject_WaitForMove(void *fieldObject)
Waits a frame at a time until a field object has arrived at its target, at most 600 frames.
Palette fades, the battle effect palette buffers and the colour channel curves.
@ PALETTE_TRANSFORM_PLAIN
each colour unchanged
void Field_RequestBattleFromEncounterTable(s32 zoneNo, s32 slotNo)
Sets up a battle with enemy group slot of encounter table zone.
void Event_SetDefeatDestination(s32 scene, s32 entrance)
Sets where the party wakes up after losing a battle (gGameState.defeatScene and defeatEntrance).
void Event_SetNextDestination(s32 scene, s32 entrance)
Sets the scene and entrance that the field goes to next (gGameState.nextScene and nextEntrance).
Scene numbers, named after their places.
char SceneId_VenusLighthouseAerie
s32 Scheduler_RemoveCallback(SchedulerCallback callback)
Unschedules the task running callback: clears its routine and gives it order 0x7fff,...
The field object script interpreter and the operands its commands read.
Song and sound effect ids, indices into gSound_SongTable.
#define SE_JUMP
An actor jumps: ObjectMotion_Launch plays the high jump above 5 pixels a frame.
void Engine_ActorSetAnimation()
struct EventWork * gEventWork
void Engine_EventRequestExit()
void Engine_ActorSetPosition(u32 actor, s32 x, s32 z)
void Engine_EventEnd(void)
void Engine_AudioPlayCue()
void Engine_EventBegin(void)
void Engine_ActorShowEmote()
void Engine_EventSetMessage()
void Engine_EventShowMessage()
Vale, its home, storm and Babi scenes, Sol Sanctum's eruption and Venus Lighthouse's aerie: Psynergy ...
void Scene_EndCutscenePsynergy(void)
Ends the cutscene's Psynergy and releases its effect work.
void Scene_BeginCutscenePsynergy(void)
Prepares the effect work and spark tiles of Move (ability 140) for the cutscene's Psynergy.
s32 SceneActor_FindNearestSlotOfKindF2(void)
Returns the placed actor drawn with sprite 0xf2 nearest the leader, within 640 pixels,...
The pushable actors' movement probes and footprint bounds.
u8 frame
frame shown, frameBase plus the facing offset; 255 none
An animated sprite: its image and shadow, scale, rotation, size and up to four animation layers.
struct AnimationSpritePart image
u16 rotation
1/65536 turns
u8 flags
bits: 1 outlined in ObjectSystemWork's edge and fill colours | 0 shadow drawn (set when created)
u8 slot
VRAM cache entry holding its tiles.
struct AnimationEntry * entries[4]
its layers; empty ones null
u8 count
layers in use, up to the last one present
u8 retainCacheEntry
Keeps the VRAM cache entry when it is released or off screen.
u16 fullColor
256 colours; set for both parts when created
u16 tile
first sprite tile in VRAM
u16 priority
2 when created
The work of a Psynergy effect scene: its caster and target, where it takes place, the map state it re...
u16 tileSlot
resource entry holding the spark tiles
void * child
the target's object, or NULL
The options of a spawned field effect, each used when its EFFECT_USE_ flag (or EFFECT_SCALE_TO_TARGET...
s32 palette
passed to ObjectGroup_SetChildValue
s32 startScaleY
16.16 fixed point, 0x10000 full size
s32 startScaleX
16.16 fixed point, 0x10000 full size
void(*) update(union FieldObject *object)
replaces the update hook
The running scene's event work: its placement and event tables, its actors, the triggers and exit it ...
s32 startTransition
SCENE_TRANSITION(style, variant).
s32 transitionFrames
frames
u16 message
the next message, advanced as each window opens
A field actor: a person or thing on the field with a position, motion toward a target,...
s16 timer
The parameter its action script reads (a follow distance or an angle to face), the player's frames to...
s32 speed
speed limit, 16.16 fixed-point pixels per frame
s32 targetX
16.16 fixed-point pixels; ACTOR_NO_TARGET when unset
struct FieldActor * linkedObject
The object its action script follows or faces.
u8 steeringFlags
ActorSteeringFlag bits.
u8 motionFlags
ActorMotionFlag bits; zero is free flight in 3D, and 3 is set on creation.
u8 riseCounter
not read by the engine; scene code's own counter
union FieldCoordinate x
16.16 fixed-point pixels
s32 targetZ
16.16 fixed-point pixels; ACTOR_NO_TARGET when unset
u8 retainSpriteCache
Nonzero keeps its sprite's VRAM cache entry while sprites are suspended or it is off screen (ObjectSy...
s32 velocityX
16.16 fixed-point pixels per frame
union FieldCoordinate y
16.16 fixed-point pixels
u8 priorityFlags
ActorPriorityFlag bits, read by the scrolling camera.
s32 terrainHeight
16.16 fixed-point pixels
s32 velocityY
16.16 fixed-point pixels per frame
union FieldCoordinate z
16.16 fixed-point pixels
s32 acceleration
Added toward the target each frame, or taken off the speed when there is none, in 16....
s32 targetY
16.16 fixed-point pixels; ACTOR_NO_TARGET when unset
s32 scaleX
16.16 fixed point, 0x10000 full size
s32 scaleY
16.16 fixed point, 0x10000 full size
void(*) update(union FieldObject *object)
Called each frame before the object's script, while the object is live.
s32 riseBaseY
Zeroed by FieldObject_Create and not read by the engine; scene code keeps a resting height,...
u16 work
The side of the player's next footprint (2 after a stop), or scene scratch.
s32 velocityZ
16.16 fixed-point pixels per frame
u8 riseEnabled
not read by the engine; scene code's own state
struct Vector3 velocity
Added to x, y and z each frame by the update hooks, in 16.16 fixed-point pixels per frame; FieldActor...
A scene entrance: where and facing which way the party arrives, and the camera's bounds there (-1 for...
A scene event: its kind and detail, the trigger it answers, its condition and its value (a message or...
An actor a scene places: its sprite, the condition for placing it, how it behaves,...
A scene's exit region: the box that, while its condition holds, takes the party leader out through it...
The prefix that command handlers read from a field object's 0x70-byte slot.
The window system's work: the windows' tilemap, the windows, the three text channels,...
u16 speakerVoiceCountdown
characters until the next voice blip
u16 speakerVoiceSound
first of four voice blip sounds; 0 for none
u16 offset
bytes from the start of OBJ VRAM
The system's routines and globals: interrupts, BIOS sound bias, random numbers and sleep.
Values that differ by patch level or language, chosen once for their code.
The integer types, TRUE, UNUSED and the fixed-address macros.
s32 fixed
16.16 fixed-point pixels
An object on the field, read as an actor or as an effect.
struct FieldEffect effect
void Party_RestorePpOfLitElements(void)
Restores the PP of each party member whose element group has a lit lighthouse: Venus or Mars for grou...
static void VenusLighthouseAerie_UpdateBeamActors(void)
Pulses and slides Saturos and Menardi while their beam flags are active.
static void VenusLighthouseAerie_PlayShebasFall(void)
Shows Sheba falling, Felix jumping after her and the party escaping.
s32 gVenusLighthouseAerie_BeamRiseAction[]
static void VenusLighthouseAerie_FlashActorPalette(struct FieldActor *actor)
Flashes an actor palette and emits paired effects every fifteenth frame.
s32 gVenusLighthouseAerie_LeapAction[]
static void VenusLighthouseAerie_CombineSaturosAndMenardi(void)
Shows the Venus Star lighting the beacon and the antagonists combining.
static void VenusLighthouseAerie_StepSpriteRotation(union FieldObject *fieldObject)
Turns the falling actor sprite until its rotation leaves the negative half-turn.
static void VenusLighthouseAerie_ShowMessage(s32 speaker)
struct ScenePlacement gVenusLighthouseAeriePlacements[]
s32 gVenusLighthouseAerie_BeamNarrowAction[]
s32 gVenusLighthouseAerie_StepBackAction[]
s32 gVenusLighthouseAerie_OrbitParticleScript[]
s32 gVenusLighthouseAerie_PairActionScript[]
s32 gVenusLighthouseAerie_WalkOutAction[]
static s32 VenusLighthouseAerie_PulseActorScale(struct ScriptInterpreter *interpreter)
Pulses the actor scale around the countdown, then chooses its next pause.
static void VenusLighthouseAerie_SpawnLinkedPairEffects(struct FieldActor *parent)
Spawns two vertical effects using the parent position and shared cached tiles.
const u32 * VenusLighthouseAerie_GetExits(void)
static void VenusLighthouseAerie_SpawnSideOrbitParticles(void)
Emits particles beside the lower beam and links each to its source actor.
#define FLAG_SHAMANS_ROD_OWNER
Plus the party member (0 to 3) who carried the Shaman's Rod when it was handed over before the aerie'...
static void VenusLighthouseAerie_EnterAndConfrontAntagonists(void)
Brings the party onto the aerie and reveals the argument over Sheba.
static s32 sTransitionTimer
const struct SceneEvent * VenusLighthouseAerie_GetEvents(void)
Returns the pillar and confrontation triggers.
static void VenusLighthouseAerie_TryToPreventFall(void)
Shows Felix urging Sheba to hold on at the edge of the platform.
static void VenusLighthouseAerie_StopActorMotion(struct FieldActor *actor)
Clears all movement targets and velocities and resets the actor timer.
s32 gVenusLighthouseAerie_PartyHeadingAction[]
static void Event_JumpToNextPillar(void)
Walking off the edge of a pillar: if the ground two tiles ahead is clear, the leader jumps across to ...
static void VenusLighthouseAerie_ShowGroupEmote(s32 emote, s32 waitFrames)
Gives Felix, Sheba and the party the same reaction, then waits after Mia.
s32 gVenusLighthouseAerie_PartyExitAction[]
static void VenusLighthouseAerie_CycleActorPalette(struct FieldActor *actor)
Cycles the actor palette and emits paired effects every fifteenth frame.
static void Event_ConfrontSaturosAndMenardi(void)
Walking up to Saturos and Menardi: they promise not to harm Sheba for the Shaman's Rod,...
const struct SceneRegion * VenusLighthouseAerie_GetRegions(void)
s32 VenusLighthouseAerie_Initialize(void)
Restores the platforms and runs the scene selected by the arrival.
s32 gVenusLighthouseAerie_BeamEndAction[]
static void VenusLighthouseAerie_ShowShebaInDanger(void)
A look back from the world map: Felix cries out as Sheba clings to the broken aerie,...
static __inline__ s32 Actor_IsParked(struct FieldActor *actor)
Tests whether all three movement targets are unset.
static void VenusLighthouseAerie_UpdateOrbitingEffect(union FieldObject *object)
Moves a linked particle along its horizontal ellipse and preserves its target.
static void VenusLighthouseAerie_UpdateBeaconRise(void)
Advances the beacon rise sequence, its flashes and orbiting particles.
const struct ScenePlacement * VenusLighthouseAerie_GetPlacements(void)
Returns the platforms, antagonists, companions and beacon effects.
static void VenusLighthouseAerie_SpawnUpperOrbitParticles(void)
Emits rising particles around the upper beam at the current beacon stage.
static void VenusLighthouseAerie_DiscussSaturosAndMenardiDefeat(void)
Lets the party discuss the battle while Felix and Sheba remain on the aerie.
static void VenusLighthouseAerie_UpdateDriftingParticle(union FieldObject *object)
Moves a particle, damps its horizontal velocity and updates its scale and spin.
static void VenusLighthouseAerie_AimBurst(s32 velocity[3], s32 angle)
Builds the horizontal velocity for an elliptical radial particle burst.
static void VenusLighthouseAerie_UpdateUpperOrbit(union FieldObject *fieldObject)
Orbits a particle around the upper beam and keeps its target at that position.
static void VenusLighthouseAerie_UpdateShebaPalette(void)
static void Event_SteadyPillars(void)
Stepping back onto the floor, and before each jump: the leader walks and falls normally again and the...
struct SceneEntrance gVenusLighthouseAerieEntrances[]
static s32 sTransitionStep
static void VenusLighthouseAerie_AdvanceActorRise(struct FieldActor *actor)
Raises an enabled actor according to its gated rise counter.
s32 gVenusLighthouseAerie_RiseParticleScript[]
static void VenusLighthouseAerie_UpdateRisingOrbit(union FieldObject *fieldObject)
Orbits a particle around the rising beam using its rise counter as a radius.
s32 gSceneAction_EntryPair[]
static void VenusLighthouseAerie_FinishSaturosAndMenardiBattle(void)
Plays the antagonists' defeat, the party discussion and the beacon eruption.
static void Event_LandOnPillar(void)
Landing on a pillar: it dips under the leader and springs back up.
s32 gVenusLighthouseAerie_BeamCloseAction[]
struct SceneEvent gVenusLighthouseAerieEvents[]
static void VenusLighthouseAerie_ShowPartyMember(s32 actor, s32 shown)
Shows or hides one companion, setting its movement speed when shown.
static void VenusLighthouseAerie_RestorePartyOnBrokenAerie(void)
Places the party on the broken platform and resumes its falling effects.
s32 gVenusLighthouseAerie_ScaleStepAction[]
u32 gVenusLighthouseAerieExits[]
static void VenusLighthouseAerie_ShowSaturosAndMenardiFall(void)
Shows Saturos and Menardi falling into the beacon after their final defeat.
static void VenusLighthouseAerie_FlashScreen(void)
Flashes the object palette white, then restores the transformation colour.
s32 gVenusLighthouseAerie_BeamOpenAction[]
s32 gSceneAction_EntryGroup[]
static void VenusLighthouseAerie_FaceActor(s32 actor, s32 facing)
Turns one actor and waits ten frames.
const struct SceneEntrance * VenusLighthouseAerie_GetEntrances(void)
static void VenusLighthouseAerie_StageShebasFall(void)
Stages the broken aerie for the fall sequence and the party escape.
s32 gVenusLighthouseAerie_RiseActionScript[]
s32 gVenusLighthouseAerie_BesideParticleScript[]
static void VenusLighthouseAerie_EruptBeacon(void)
Raises the beacon effects and splits the aerie beneath the group.
s32 gVenusLighthouseAerie_NearestActor
Venus Lighthouse aerie's actors, entrances and exits.
@ AERIE_EXIT_AFTER_DEFEAT
@ AERIE_EXIT_TO_WORLD_MAP
@ AERIE_EXIT_AFTER_SHEBAS_FALL
@ ACTOR_PARTICLE_SOURCE
The light the rising particles circle as the party is lifted away.
@ ACTOR_AERIE_WEST_SECTION_B
@ ACTOR_BEAM_1
The beacon's beam, in five segments from the bottom up; particles circle the first.
@ ACTOR_FIRST_PILLAR
Six pillars the leader jumps across, and the one that carries him up to the aerie.
@ ACTOR_AERIE_EAST_SECTION_A
@ ACTOR_AERIE_WEST_SECTION_A
The aerie floor around the beacon, in four sections: the first two move west and the last two (drawn ...
@ ACTOR_AERIE_EAST_SECTION_B
@ ACTOR_STAR_CARRIER
What carries the Venus Star to the beacon.
@ WORLD_MAP_ENTRANCE_FROM_AERIE
@ AERIE_ENTRANCE_AFTER_FIRST_BATTLE
Back from the battle with Saturos and Menardi, and from the one with their fused form.
@ AERIE_ENTRANCE_ARRIVAL
Up from Venus Lighthouse: the party rides a pillar up to the aerie.
@ AERIE_ENTRANCE_SHEBA_IN_DANGER
From the world map, after the beacon is lit: a look back at Felix and Sheba on the broken aerie.
@ AERIE_ENTRANCE_DEFEAT
Back from a lost battle.
@ AERIE_ENTRANCE_AFTER_SECOND_BATTLE
@ AERIE_ENTRANCE_SHEBAS_FALL
From the world map, onto the broken aerie: Sheba falls and Felix leaps after her.
Declares nothing of its own: it only includes the window, battle command, resource and VRAM table hea...
s32 Resource_ResetEntry(u32 no)
Frees cache entry no: its blocks go back and the entry is marked free (offset 0xffff).
The sprite VRAM block cache and its owners.
struct VramBlockCacheEntry gVramBlockCache[]
void UiText_ShowCenteredMessage(s32 message, s32 mode, s32 yOffset)
Shows a message centred on the screen (yOffset tiles lower) and waits until it is typed out,...
The window renderer's work.