46#include "text/msg_ids.h"
65#define COLOSSO_RIVER_FACE_DIRECTION Engine_ActorFaceDirection
66#define COLOSSO_RIVER_PLACE_STAGED_PAIR ColossoRiver_MoveActorPairByOffset
67#define COLOSSO_RIVER_SELECT_MODE_BLOCK ColossoRiver_SelectPresentationScript
68#define COLOSSO_RIVER_APPLY_MATCHING_SLOT_VALUES Scene_GiveAndEquipItem
70#define COLOSSO_RIVER_FACE_DIRECTION ((s32 (*)())Engine_ActorFaceDirection)
71#define COLOSSO_RIVER_PLACE_STAGED_PAIR \
72 ((s32 (*)())ColossoRiver_MoveActorPairByOffset)
73#define COLOSSO_RIVER_SELECT_MODE_BLOCK \
74 ((s32 (*)())ColossoRiver_SelectPresentationScript)
75#define COLOSSO_RIVER_APPLY_MATCHING_SLOT_VALUES \
76 ((s32 (*)(s32, s32))Scene_GiveAndEquipItem)
198 if (actor->
y.
fixed == 0 && blocked == 0) {
279 x = ((leader->
x.
fixed + (dx << 16)) & 0xFFF00000) +
PIXELS(8);
280 z = ((leader->
z.
fixed + (dz << 16)) & 0xFFF00000) +
PIXELS(8);
288 x = ((actor->
x.
fixed + (dx << 16)) & 0xFFF00000) +
PIXELS(8);
289 z = ((actor->
z.
fixed + (dz << 16)) & 0xFFF00000) +
PIXELS(8);
295 if (dx < 0 || dz < 0) {
315 row = actor->
z.
fixed >> 20;
323 row = actor->
z.
fixed >> 20;
336 column = actor->
x.
fixed >> 20;
344 offset = actor->
z.
fixed >> 20;
350 }
else if (column == 67) {
351 if (offset == 11 && direction == -1) {
366 column = actor->
x.
fixed >> 20;
552 if (courseActor != 0) {
553 column = courseActor->
x.
fixed >> 19;
554 row = courseActor->
z.
fixed >> 19;
555 if (column >= 94 && column <= 95 && row > 23 && row <= 26) {
574 if (actor->
y.
fixed == 0 && hit == 0) {
601 col = actor->
z.
fixed >> 20;
606 col = actor->
x.
fixed >> 20;
863 }
else if (path == 1) {
934 }
else if (path == 1) {
978 }
else if (path == 1) {
1036 }
else if (path == 1) {
1102 Colosso_LoadLettering(0);
1114 Colosso_LoadLettering(round);
1121 Colosso_LoadLettering(5);
1128 Colosso_LoadLettering(6);
1132 Colosso_LoadLettering(7);
1154 Colosso_LoadLettering(8);
1165 Colosso_LoadLettering(4);
1195 for (i = 7; i >= 0; i--) {
1216 while (*ready != 9) {
1231 if (chance * 100 >> 16 <= 9) {
1241 s32 x = position[0];
1242 s32 y = position[1];
1243 s32 z = position[2];
1268 collector->
timer = 0;
1281 s16 *pendingItemActor;
1295 itemActor = &
work->finishItemActorB;
1298 itemActor = &
work->finishItemActorA;
1301 pendingItemActor = &actor->
timer;
1302 *pendingItemActor = *itemActor;
1310 while (*pendingItemActor != 0) {
1355 direction = subject->
facing >> 12;
1358 position.
x = subject->
x.
fixed + (packedStep & 0xffff0000);
1359 position.
y = subject->
y.
fixed;
1361 position.
z = subject->
z.
fixed + packedStep;
1363 target = SceneData_FindSlotAtPosition(&position, subject);
1369 position.
x = target->
x.
fixed + (packedStep & 0xffff0000);
1372 position.
z = target->
z.
fixed + packedStep;
1374 blocker = SceneData_FindSlotAtPosition(&position, target);
1383 blocker = SceneData_FindSlotAtPosition(&position, target);
1392 position.
x = target->
x.
fixed + (packedStep & 0xffff0000);
1395 position.
z = target->
z.
fixed + packedStep;
1428#if LANGUAGE == LANGUAGE_JAPANESE || LANGUAGE == LANGUAGE_ENGLISH
1429 0, 32, 32, 32, 96, 64, 64, 64, 128, 0,
1431 0, 32, 32, 32, 96, 64, 64, 160, 128, 0,
1436 0x1000, 512, 1, 0x2000, 0, 1, 0x1000, 256,
1437 6, 0x2000, 16, 6, 0x7fff, 30, 0x2000, 0,
1442 0x1000, 128, 1, 0x2000, 0, 1, 0x1000, 256,
1443 6, 0x2000, 16, 6, 0x7fff, 60, 0x1000, 384,
1444 6, 0x7fff, 6, 0x1000, 240, 6, 0x7fff, 6,
1445 0x1000, 368, 6, 0x7fff, 6, 0x1000, 224, 6,
1446 0x7fff, 6, 0x2000, 0, 30, 0x1000, 352, 6,
1447 0x7fff, 6, 0x1000, 208, 6, 0x7fff, 6, 0x1000,
1448 336, 6, 0x7fff, 6, 0x1000, 192, 6, 0x7fff,
1449 6, 0x1000, 320, 6, 0x7fff, 6, -1,
1497#define DIRECTION_STEP(x, z) ((u32)(x) << 16 | (u16)(z))
1519 { 0,
CONDITION_ALWAYS, 920, 0, 200,
FACING_SOUTH, 0, -1, -1, -1, -1, 0 },
1520 { 1,
CONDITION_ALWAYS, 312, 0, 104,
FACING_SOUTH, 0, -1, -1, -1, -1, 0 },
1618#if LANGUAGE == LANGUAGE_JAPANESE
1619 0x4000, -188, 2048, 0x1000, 256, 1, 0x2000, 16,
1621 0x4000, -188, 2048, 0x1000, 384, 1, 0x2000, 16,
1623 1, 0x7fff, 14, 0x3000, 0, 20, 0x7fff, 60,
1624 0x3000, 2048, 20, 0x7fff, 60, -1,
1628#if LANGUAGE == LANGUAGE_FRENCH
1629 0x1000, 512, 1, 0x2000, 0, 1, 0x1000, 384,
1630 6, 0x2000, 16, 6, 0x7fff, 6, 0x1000, 512,
1631 6, 0x7fff, 6, 0x1000, 384, 6, 0x7fff, 6,
1632 0x1000, 512, 6, 0x7fff, 6, 0x1000, 384, 6,
1633 0x7fff, 6, 0x2000, 0, 30, 0x1000, 512, 6,
1634 0x7fff, 6, 0x1000, 384, 6, 0x7fff, 6, 0x1000,
1635 512, 6, 0x7fff, 6, 0x1000, 384, 6, 0x7fff,
1636 6, 0x1000, 512, 6, 0x7fff, 6, -1,
1637#elif LANGUAGE == LANGUAGE_SPANISH || LANGUAGE == LANGUAGE_ITALIAN
1638 0x1000, 384, 1, 0x2000, 0, 1, 0x1000, 256,
1639 6, 0x2000, 16, 6, 0x7fff, 6, 0x1000, 384,
1640 6, 0x7fff, 6, 0x1000, 256, 6, 0x7fff, 6,
1641 0x1000, 384, 6, 0x7fff, 6, 0x1000, 256, 6,
1642 0x7fff, 6, 0x2000, 0, 30, 0x1000, 384, 6,
1643 0x7fff, 6, 0x1000, 256, 6, 0x7fff, 6, 0x1000,
1644 384, 6, 0x7fff, 6, 0x1000, 256, 6, 0x7fff,
1645 6, 0x1000, 384, 6, 0x7fff, 6, -1,
1647 0x1000, 512, 1, 0x2000, 0, 1, 0x1000, 256,
1648 6, 0x2000, 16, 6, 0x7fff, 6, 0x1000, 384,
1649 6, 0x7fff, 6, 0x1000, 256, 6, 0x7fff, 6,
1650 0x1000, 384, 6, 0x7fff, 6, 0x1000, 256, 6,
1651 0x7fff, 6, 0x2000, 0, 30, 0x1000, 384, 6,
1652 0x7fff, 6, 0x1000, 256, 6, 0x7fff, 6, 0x1000,
1653 384, 6, 0x7fff, 6, 0x1000, 256, 6, 0x7fff,
1654 6, 0x1000, 384, 6, 0x7fff, 6, -1,
1659 0x1000, 128, 1, 0x2000, 0, 1, 0x1000, 256,
1660 6, 0x2000, 16, 6, 0x7fff, 60, 0x1000, 384,
1661 6, 0x7fff, 6, 0x1000, 272, 6, 0x7fff, 6,
1662 0x1000, 400, 6, 0x7fff, 6, 0x1000, 288, 6,
1663 0x7fff, 6, 0x2000, 0, 30, 0x1000, 416, 6,
1664 0x7fff, 6, 0x1000, 304, 6, 0x7fff, 6, 0x1000,
1665 432, 6, 0x7fff, 6, 0x1000, 320, 6, 0x7fff,
1666 6, 0x1000, 448, 6, 0x7fff, 6, -1,
Ability numbers, named from the English release.
void Object_RefreshSelectorById(u32 objectId)
Waits, at most 300 frames, for an actor's script to reach its end (command 0x10).
void Object_LinkObjectAndSetCallback(u32 objectId, u32 linkedObjectId)
Makes an actor follow another (the linked action script): writes its linkedObject.
struct FieldActor * Object_GetById(s32 actor)
Returns an actor, or NULL if it does not exist.
#define DIRECTION_STEP(dx, dz)
Pixel step by direction: X in the upper halfword, Z in the lower.
BattleUnit, a party member's or enemy's battle state, with the elements, abilities and actions it use...
static void Event_GrowPlant(void)
Growth on the entrance section's target: the plant grows and its cell's collision changes; 0x305 keep...
The task scheduler: tasks, their order and the scheduler's state.
The Colosso race gauge's sprites and work.
const u8 gColosso_LetteringPaletteOffsets[]
static void Event_ReachArena(void)
Reaching the arena: the leader takes a prize (the Claymore if first, the Hunter's Sword if second),...
s16 gColosso_LetteringSlot
@ PRIZE_A
the arena's Claymore and Hunter's Sword
@ OPPONENT
the warrior racing Isaac to the arena
@ GUIDE
explains the third course
s32 gColosso_RivalFinishScript[]
static void Event_SettleRocks(void)
A rock resting on the floor becomes a step (FLAG_SCENE_TEMP_14 to _16).
static void Event_PushRock(void)
Walking into a rock pushes it.
static void ColossoRiver_UpdateBrokenBridge(void)
Advances the bridge animation and its walkable collision cells.
static void ColossoRiver_MarkCourseTerrain(s32 actor)
Marks actors standing in the course's finish terrain.
const u32 * ColossoRiver_GetExits(void)
u32 gColossoRiver_DirectionSteps[]
const s16 gColossoRiver_SpanB[]
static void ColossoRiver_RestoreMatchResult(s32 result)
Back from the battle: the two warriors stand in the arena as the result is shown.
static void ColossoRiver_SpawnRandomEffect(union FieldObject *fieldObject)
Occasionally spawns an animated effect around the finish item.
static void Event_RollLogNorthSouth(void)
Walking into the north-south log rolls it, with the leader, to the other bank.
const struct SceneRegion * ColossoRiver_GetRegions(void)
static void ColossoRiver_PushObjectAhead(void)
Checks the next cell and pushes its object one step if clear.
s32 gColossoRiver_Countdown
s32 gColossoRiver_ScriptA[]
static void Event_TalkToLumberAttendant(s32 scene)
The Lumber Water Crossing Area's attendant: a warrior rolls a log across; then the objective.
#define COLOSSO_RIVER_FACE_DIRECTION
static void InitializeSelectedActor(s32 actorId)
Sets an attendant's movement speed for the shared Colosso dialogue.
static void InitializeActorZero(void)
Sets the leader's movement speed for the shared Colosso dialogue.
static void ColossoRiver_SelectPresentationScript(u32 mode, u32 param)
Selects a presentation script and resets its playback state.
static void ColossoRiver_MoveActorPairByOffset(s32 actorId, s32 dx, s32 dz)
Moves the leader and a course object together between cell centers.
static __inline__ void AdvanceMessage(s32 amount)
Advances to the next message in the current explanation.
const s16 gColossoRiver_ModeRecordTwo[]
static void Event_TalkToPipeworksAttendant(s32 attendant)
The Pipeworks' attendant: a marker shows how the pipes rise and fall like scales; then the objective.
struct SceneEvent gColossoRiver_Events[]
const struct SceneEntrance * ColossoRiver_GetEntrances(void)
const struct SceneEvent * ColossoRiver_GetEvents(void)
static void Event_PushPipeworksBlock(void)
Pushing the Pipeworks block west: water runs into the channel, and the first time the pipes rise (0x3...
s16 gColossoRiver_RoundSpans[]
static void ColossoRiver_WaitForBridgeOpening(void)
Waits for the crossing window, bounded by one bridge cycle.
static void ColossoRiver_StartBrokenBridge(void)
Starts the bridge's repeating opening sequence.
#define COLOSSO_RIVER_SELECT_MODE_BLOCK
static void ColossoRiver_NoOp(void)
static void ColossoRiver_WaitForStageReady(void)
Waits until the stage's setup task reports readiness.
static void Event_TalkToBridgeAttendant(s32 scene)
The Broken Bridge's attendant: a warrior times his crossing; then the objective.
static UNUSED void ColossoRiver_MarkStageReady(void)
Marks the shared stage state ready for the waiting event.
static void Event_DousePipe(void)
Douse on the west pipe: the camera turns to the Pipeworks and the two pipes rise as it fills (0x301).
static void Event_TalkToRockAttendant(s32 scene)
The Rock Challenge's attendant: the first time, a warrior shows how to push the rocks into steps; the...
static void Event_PushRockOrCheckAhead(void)
Walking into something: a rock is pushed, anything else is checked.
struct SceneEntrance gColossoRiver_Entrances[]
static UNUSED void Text_WriteU32AsHex(u8 *buf, u32 value)
Writes eight hexadecimal digits and a terminating null.
static UNUSED void ColossoRiver_SetCourseFlag(void)
static s32 ColossoRiver_CollectFinishItem(s32 firstItem, s32 secondItem)
Moves to the selected finish item and presents it to the party.
s16 gColossoRiver_SpanA[]
s32 gColossoRiver_ApproachScript[]
const struct ScenePlacement * ColossoRiver_GetPlacements(void)
static void ColossoRiver_ExplainFinalsRules(s32 guide)
The guide shows the party the first finals course: the race through the stages to the arena,...
s16 gColossoRiver_ModeRecordFour[]
static void ColossoRiver_ResetBrokenBridge(void)
Stops the bridge task and restores its closed frame.
#define COLOSSO_RIVER_APPLY_MATCHING_SLOT_VALUES
static void ColossoRiver_AnimatePipeworksWater(void)
Runs the five frames that show water entering the Pipeworks channel.
struct ScenePlacement gColossoRiver_Placements[]
u32 gColossoRiver_Exits[]
#define COLOSSO_RIVER_PLACE_STAGED_PAIR
s32 gColossoRiver_ScriptB[]
static void ColossoRiver_SetPipeHeight(struct FieldActor *actor, s32 height)
Moves a Pipeworks actor with the speed used throughout its demonstration.
static void Event_RollLogEastWest(void)
Walking into the east-west log rolls it, with the leader, the way the pad is held.
static void ColossoRiver_ShowMatchResult(s32 result)
The result: the winner's portrait and fanfare, then the course closes.
static void ColossoRiver_ShowRoundIntroduction(s32 round)
The match opens: portraits of the warriors and the round announced.
@ ROCK_A
the Rock Challenge's three rocks
@ PIPEWORKS_BLOCK
pushed west to let water into the Pipeworks
@ LOG_NORTH_SOUTH
the Lumber Water Crossing Area's two logs
@ PIPE_WEST
the Pipeworks' two pipes, a kind of scale
@ BRIDGE_OPERATOR
works the Broken Bridge
static s32 ColossoRiver_PlaceFinishItemAboveActor(struct ScriptInterpreter *interpreter)
Presents the collected item above its collector and signals completion.
s32 ColossoRiver_Initialize(void)
Restores the stages as they were left, then by the arrival: the race (1 and 2), the guide's explanati...
The Colosso finals' three courses (Colosso Log, River and Wall): a helper for the race gauge that no ...
s16 gColosso_ModeMoveTarget
s16 * gColosso_LetteringScript
s16 gColosso_LetteringTimer
s32 gColosso_LetteringPosition
s16 gColosso_ModeMoveDuration
s16 gColosso_LetteringParam
s16 gColosso_LetteringMode
The engine calls the debug menus import, and their palette swatch tiles.
The edition's language, for C to compare (LANGUAGE == LANGUAGE_GERMAN).
static s32 FieldScheduler_AddCallback(SchedulerCallback callback, s32 priority)
Registers a main-image scheduler callback.
static s32 FieldObject_CheckMovementCollision(struct FieldActor *actor, struct FieldPosition *position)
static s32 FieldGameFlag_GetByte(s32 flag)
static void FieldGameFlag_SetByte(s32 flag, s32 value)
void ObjectDispatch_StartCamera(struct DispatchObject *object, s32 linkedObjectHandle)
Starts an object on the camera script (SC_CAMERA).
void ObjectDispatch_WaitForValue16(void *rawObject)
Waits until the object's script reaches SC_END (0x10), at most 300 frames.
The scene script layer: the engine services a scene's events call, declared once (Engine_EventBegin,...
void Engine_ObjectSetPosition(struct FieldActor *object, s32 fixed_x, s32 fixed_y, s32 fixed_z)
s32 Engine_LeaderCheckAhead(void)
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)
void Engine_MessageShowCentered(s32 message, s32 flags)
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)
s32 Engine_TaskRemoveCallback(void(*callback)(void))
void Engine_ActorSetSpeed(s32 actor, s32 speed, s32 acceleration)
void Engine_ActorFaceDirection(s32 actor, s32 facing, s32 frames)
void Engine_EventCloseScreen(void)
void Engine_ActorWalkToAndWait(s32 actor, s32 x, s32 z)
static void Actor_FaceActor(s32 actor, s32 target, s32 frames)
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_MapCopyCellsLayered(s32 srcX, s32 srcY, s32 destX, s32 destY, s32 width, s32 height)
void Engine_ObjectSetScript(struct FieldActor *object, const s32 *script)
void Engine_EventOpenScreen(void)
void Engine_GameFlagSet(s32 flag)
void Engine_CameraWaitForMove(void)
void Engine_ActorWaitForMove(s32 actor)
void Engine_CameraFollowActor(s32 actor, s32 keep_position)
static void Map_CopyCellAttributes(s32 srcX, s32 srcY, s32 width, s32 height, s32 destX, s32 destY)
void Engine_ActorRunRepeatedMotion(s32 actor, s32 repeats)
static void Event_ShowMessage(s32 speaker, s32 flags)
static void Event_PlayCue(s32 cue)
static void Map_CopyCells(s32 srcX, s32 srcY, s32 width, s32 height, s32 destX, s32 destY)
#define STORE_CONST(place)
s32 Engine_GameFlagIsSet(s32 flag)
void Engine_ActorStartRepeatedMotion(s32 actor, s32 repeats)
static s32 Event_AskYesNo(s32 speaker, s32 flags)
static void Actor_SetSpeed(s32 actor, s32 speed, s32 acceleration)
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)
static void Map_CopyCellsLayered(s32 srcX, s32 srcY, s32 destX, s32 destY, s32 width, s32 height)
void Engine_ActorFaceEachOther(s32 actor, s32 other, s32 frames)
void Engine_EventWait(s32 frames)
static struct FieldActor * Actor_Get(s32 actor)
Field objects and actors, and the scene transition styles.
@ ACTOR_PRIORITY_UNDERFOOT
The depth sort treats it as 320 pixels higher on the screen.
The field's runtime work: map cells, scene records and regions, map markers and FieldWork.
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)
@ TALK_FACE_PARTY_AND_BACK
#define PSYNERGY_ON_ACTOR(ability)
#define EVENT_SCRIPT(script)
#define TOUCH_WALKING_INTO(facing)
The scene service layer: one typed inline for each engine service a scene calls by its own name,...
static void FieldObject_SetPosition(struct FieldActor *object, s32 fixed_x, s32 fixed_y, s32 fixed_z)
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_KEEP_MUSIC
The next scene keeps the music that is playing; scene.c clears FLAG_KEEP_MUSIC as it does,...
#define FLAG_RETREAT_BLOCKED
Retreat is blocked, from Psynergy or an item.
#define FLAG_SCENE_TEMP_11
#define FLAG_KEEP_PARTY_POSITION
#define FLAG_SCENE_TEMP_10
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 screen blend's globals and the graphics routines.
void * Runtime_AllocateBlock(s32 kind, s32 size)
As Runtime_AllocateHeapBlock, but tries EWRAM first, for blocks that need room more than speed: the b...
The heap's work slots and HeapState.
The main-image routines scene overlays import.
The register write queue that VBlank carries out after each finished frame.
Colosso Log, River and Wall, and Goma Cave's entrance: giving a character an item and putting it on.
Item numbers, named from the English release.
The keypad state the VBlank interrupt keeps.
volatile u32 gKeysHeld
Keys down now.
Small statement macros both games use for positions, velocities and bounds.
#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 heaps: allocating and freeing blocks.
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_WAIT(n)
Wait n frames.
#define SC_TOP
Script start.
#define SC_END
Return to the main script.
void FieldObject_WaitForMove(void *fieldObject)
Waits a frame at a time until a field object has arrived at its target, at most 600 frames.
ObjectRuntime, a field object's runtime state, and the object snapshots.
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).
Resource numbers, named where their contents are known.
char ResourceId_RivalPathA
void Audio_PlayCueFromEventWork(void)
Starts the current scene's field music, chosen by Scene_ResolveInteractionResult.
Scene numbers, named after their places.
char SceneId_ColossoRiver
The field object script interpreter and the operands its commands read.
Song and sound effect ids, indices into gSound_SongTable.
#define MUS_TREASURE_FOUND
s32 AudioCommand_GetStateByte(void)
Returns the remaining delay before BGM can be restored after a fanfare.
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()
Colosso Log, River and Wall, and Crossbone Isle's platform rooms: an actor drawn as an item's menu ic...
void Colosso_ShowItemIcon(s32 id, s32 item)
Replaces the picture of actor id, when it has a sprite of its own, with the icon of item: the icon's ...
void Colosso_ShowPointer(u32 x, u32 y, u32 style)
Shows the pointer at screen pixel (x, y), drawn at priority style & 3.
void Colosso_MovePointer(u32 x, u32 y, u32 duration)
Glides the pointer to screen pixel (x, y) over duration frames.
void OverlayObject_ResetMotionFields(s32 actor)
Stops the actor where it is: no velocity and no destination.
void Colosso_FadeInCompetitor(s32 id, s32 x, s32 z)
Isaac (id) appears at pixel (x, z) on the stage, facing south: he fades in through the backgrounds wh...
void Colosso_HidePointer(void)
Hides the pointer and frees its VRAM block.
void Colosso_WalkActorToAndStand(s32 actorId, s32 x, s32 z)
Walks the actor at 1.25 pixels a frame to pixel (x, z), waits until it arrives and stands it there.
void Colosso_RestoreCompetitor(s32 id)
Puts Isaac (id) back where Colosso_FadeInCompetitor found him: he stands (or turns south,...
void * Colosso_FindActorAhead(void)
Returns the placed actor standing one cell, or else two cells, ahead of the actor the player moves (s...
Colosso Log and Colosso River: setting up a race against the rival, with the race gauge at the top of...
void Colosso_StartRaceGauge(s32 playerActor, s32 rivalActor, s32 segments, s32 finishX, s32 finishZ, s32 finishItemActorA, s32 finishItemActorB)
Starts the race gauge (struct ColossoGaugeWork, in work slot 59): Isaac and the rival as playerActor ...
void Colosso_StartRival(s32 resource)
Decodes the rival's recorded path (resource) after the gauge's work and, unless the party returns to ...
void Colosso_OfferCheeringSpot(s32 mode, s32 guide, s32 stage)
The guide at a stage, with the mode Colosso_GreetAtStage returned: offer a friend's cheering at the s...
void Colosso_RepeatStageNumber(s32 speaker, s32 competitor)
A stage's guide, after describing the stage, names it again: the copy of that line after it in the te...
void Colosso_AskDoneCheering(s32 id)
A stage's guide, talking to a friend who looks around alone, asks whether they are done cheering.
static void Colosso_TakePlaceForMatch(void)
Raised event 99: the nearest actor with animation 165 level with or below the friend on the map calls...
void Colosso_PlaceFriendsAtCheeringSpots(void)
Puts Garet, Ivan and Mia back at the cells where they chose to cheer, at the centre of each cell.
void Colosso_ClearCheeringSpots(void)
Forgets where Garet, Ivan and Mia cheer from.
s32 Colosso_GreetAtStage(s32 speaker, s32 competitor)
A stage's guide names the stage and decides what to do next.
void Colosso_ControlCharacterAlone(s32 id)
Makes the character the party's only member, the one the player moves and the camera follows,...
void Colosso_RaiseTakePlaceOnPsynergy(void)
A scene callback while a friend looks around the course alone (entrance 2): when the Psynergy request...
static void Colosso_AskReadyToRace(s32 actorId)
The guide at the course's start.
The pushable actors' movement probes and footprint bounds.
The Colosso race gauge's work at the start of work slot 59: its sprites, how far it has slid down,...
A field object as the object dispatcher's far calls take it.
The running scene's event work: its placement and event tables, its actors, the triggers and exit it ...
s32 startTransition
SCENE_TRANSITION(style, variant).
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
u16 radius
Collision radius in pixels: 16, or half the sprite metadata's boxY, when created; the overlap checks ...
u8 motionFlags
ActorMotionFlag bits; zero is free flight in 3D, and 3 is set on creation.
union FieldCoordinate x
16.16 fixed-point pixels
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 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....
u16 work
The side of the player's next footprint (2 after a stop), or scene scratch.
u8 collisionFlags
bits: 7 refuses to move into a solid object | 4 nearer for Psynergy targets | 3 never a talk or Psyne...
s32 velocityZ
16.16 fixed-point pixels per frame
u8 terrainId
The map layer (0 to 3) its ground height is read from, which the scrolling camera updates from the ce...
s32 z
16.16 fixed-point pixels
Full event work allocated by Field_RunScene (heap slot 27).
s32 selectedActor
the leader: its unit and its actor
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 system's routines and globals: interrupts, BIOS sound bias, random numbers and sleep.
s32 Map_GetTerrainHeight(s32 layer, s32 x, s32 y)
Returns the ground height of a layer at (x, y) in 16.16 pixels: the height function of the cell's ter...
The integer types, TRUE, UNUSED and the fixed-address macros.
struct FieldCoordinate::@024321007066302143002254325121164243234242211074 part
s32 fixed
16.16 fixed-point pixels
An object on the field, read as an actor or as an effect.
void Party_RestoreHpPp(s32 cureConditions)
Restores every party member's HP and PP; with cureConditions 1 it also cures poison and haunting.
The patch levels: our groups of the measured changes from the Japanese release.
The sprite VRAM block cache and its owners.
void UiWork_PushValueSlot(u32 value, u32 kind)
Adds a message argument of kind (MSG_ARG_) with value to the first free place of the argument table; ...