Digimon World 3 decomp
The European version, SLES_039.36
Loading...
Searching...
No Matches
actor_control.c File Reference

An actor's moves, controls, methods, drawing and actions. More...

#include "field/field_mode.h"
Include dependency graph for actor_control.c:

Go to the source code of this file.

Macros

#define SET_FILE_0   0x01870070
 
#define SET_FILE_8   0x03CB001E
 
#define SET_FILE_16   0x03C9000B
 
#define SET_FILE_1A   0x03CC0017
 
#define SET_FILE_OTHER   0x03CA0064
 

Functions

s32 FIELDSTG_checkFlightProbe (Actor *actor, s32 x, s32 y, Vec2 offset)
 Whether a flying actor runs into the map at an offset from it: a cell that isn't free, a wall higher than it or a ceiling lower than it (FLIGHT_WALL, FLIGHT_CEILING); then it steps back by offset.
 
s32 FIELDSTG_checkFlightProbes (Actor *actor)
 Whether a flying actor runs into the map at any of the five probes ahead of it (FIELDSTG_checkFlightProbe)
 
void FIELDSTG_moveByPad (Actor *actor, s32 pad)
 Walks or runs an actor in the direction of the pad's arrows (an index of FIELDSTG_padDirs), or stops it when none is held.
 
Actor * FIELDSTG_findActorAt (Vec2 *pos)
 The first actor (task id 5) whose box holds the tile pos: halfWidth to each side of it, half that above and below.
 
s32 FIELDSTG_talkToActorAt (Actor *actor, Vec2 *pos)
 Talks to the character standing at pos, or to the one it stands in for (FIELDSTG_standIns): it answers (ACTOR_TALK), or, for the objects 0x148, 0x15F and 0x160, the player works it (ACTOR_USE).
 
static void stopFlightSound (Actor *actor)
 Stops the sound of the flight, if it plays.
 
static void accelerateFlight (Actor *actor)
 Changes the flight's height speed (zSpeed) by 4 a frame, down to -0xC0 while the player flies (ACTOR_FLY) and up to 0x80 while it floats.
 
static void flyOrFloat (Actor *actor, s32 held)
 Held TRIANGLE flies (ACTOR_FLY, with its sound), else the actor floats and the sound stops.
 
static void turnInFlight (Actor *actor, s32 held)
 Held RIGHT or LEFT turns the actor one direction every 8 frames.
 
void FIELDSTG_controlFlight (Actor *actor)
 The player's flight: it rises unless triangle is held (ACTOR_FLY), left and right turn, and cross, low enough, acts on what the player faces; the map's cells hold floors (2 to 6) and ceilings (18 to 22).
 
void FIELDSTG_controlPlayer (Actor *actor)
 The player's update while it walks (Actor.control) when no menu, event or transition is running: the action button or a forced action (condition 0x12) checks the tile it faces, for an object to act on or, failing that, an event; otherwise the pad moves it.
 
void FIELDSTG_controlClimb (Actor *actor)
 The player's control on a wall: up and down climb, nothing held holds on.
 
void FIELDSTG_followLeader (Actor *actor)
 A partner's control: records the leader's steps in the trail while it moves, and follows them.
 
void FIELDSTG_drainTrail (Actor *actor)
 A follower's update while its trail runs out: it finds the leader (FIELD_TASK_ACTOR) if it has none, then each frame pushes two empty steps at the trail's head and walks two steps from its tail.
 
void FIELDSTG_walkToGoal (Actor *actor)
 Walks an actor to its goal tile (FIELDSTG_setActorGoal) as the pad would, then faces it the goal's way.
 
void FIELDSTG_setActorGoal (Actor *actor, s32 x, s32 y, s32 dir)
 Sets the tile an actor walks to and the direction it ends facing (FIELDSTG_walkToGoal)
 
s32 FIELDSTG_isActorWalking (Actor *actor)
 Whether an actor is still walking to its goal.
 
void FIELDSTG_startActorWalk (Actor *actor)
 Starts an actor walking to its goal.
 
void FIELDSTG_resetActorControl (Actor *actor)
 Gives an actor its kind's control back: the pad for the player, none for kind 1, the trail for the partners.
 
void FIELDSTG_walkActorInDir (Actor *actor, s32 dir)
 Walks an actor out through an exit, in a direction (ACTOR_WALK_OUT)
 
void FIELDSTG_startActorSlide (Actor *actor, s32 dir)
 Starts an actor sliding in a direction (SLOT_SLIDE)
 
void FIELDSTG_stopActorSlide (Actor *actor)
 Stops a sliding actor (SLOT_STOP_SLIDE)
 
void FIELDSTG_startClimbUp (Actor *actor, s32 dir, s32 x, s32 y, s32 height)
 The climbs (SLOT_CLIMB_UP and SLOT_CLIMB_DOWN) and the drop (SLOT_DROP): the actor goes onto the wall at its foot (ACTOR_GET_ON_WALL) or its top (ACTOR_GET_OVER_EDGE), climbs it with the pad (FIELDSTG_controlClimb) and leaves it at the top or the foot; a drop (ACTOR_DROP) falls from height.
 
void FIELDSTG_startClimbDown (Actor *actor, s32 dir, s32 x, s32 y, s32 height)
 Starts the climb down a wall of height from its top, at (x, y)
 
void FIELDSTG_startDrop (Actor *actor, s32 dir, Vec2 pos, s32 height)
 Starts a drop from a ledge of height.
 
void FIELDSTG_startActorGauge (Actor *actor, s32 dir, Vec2 offset)
 Starts the gauge game at an offset from an actor, turning the partners its way.
 
void FIELDSTG_warpActor (Actor *actor, SlotDest *dest, s32 kind)
 Warps the player (SLOT_WARP0 and SLOT_WARP1): the field task plays the warp's effect and cutscene of kind, then leaves for its mode (FIELDSTG_startWarp)
 
void FIELDSTG_launchActor (Actor *actor, SlotDest *dest)
 Sends the player flying to the tile at dest from the nearest launcher (FIELDSTG_createLaunch)
 
void FIELDSTG_setActorAnim (Actor *actor, s32 set)
 Starts an actor's animation set from its first frame.
 
void FIELDSTG_setActorPose (Actor *actor, s32 set, s32 dir)
 Puts an actor in an event's pose: an animation set and a direction (ACTOR_POSED)
 
s32 FIELDSTG_isActorAnimDone (Actor *actor)
 Whether an actor's animation has played to its end.
 
void FIELDSTG_drawActor (void *data, void *drawLayer)
 The layer's sorted callback that draws an actor: its frame from its image, mirrored for the directions 5 and up, and, when it has one, its shadow, a sprite with its own texture page.
 
void FIELDSTG_setActorDir (Actor *actor, s32 dir)
 Turns an actor to a direction.
 
void FIELDSTG_animateActor (Actor *actor)
 Plays an actor's animation: when its set (animSet) changes, it loads the set's animations for the five directions (character 2 picks the file by the set first), then steps the frames of the current direction's and loads a new frame's image into VRAM.
 
void FIELDSTG_restorePlayerControl (Actor *actor)
 Gives the player its pad control back, off any wall.
 
void FIELDSTG_playStepSounds (Actor *actor, s32 moving, s32 canBattle)
 The player's footsteps, every 8 frames when it moves (every 32 for the characters 0x146 and 0x147) or 32 when not; with canBattle each step can start a battle (FIELDSTG_checkBattle)
 
void FIELDSTG_playClimbSounds (Actor *actor)
 The player's climbing sound, every 16 frames.
 
static void beginActorAnim (Actor *actor, s32 anim)
 The first frame of an action: the actor gets its shadow and the action's animation.
 
static void standAgain (Actor *actor)
 Puts a character back to standing, under the player's control again.
 
static void giveControlBack (Actor *player)
 Gives the player that talked back its control, walking or flying.
 
static void setUsedFlag (s32 character)
 Sets the flag of the characters 0x148, 0x15F and 0x160 once they are used.
 
static void runStop (Actor *actor)
 ACTOR_STOP: the stop after a run, then standing.
 
static void runSlide (Actor *actor)
 ACTOR_SLIDE: the slide on ice, with its sound.
 
static void runStopSlide (Actor *actor)
 ACTOR_STOP_SLIDE: the end of a slide, half a second before the player's control comes back.
 
static void runClimbUp (Actor *actor)
 ACTOR_CLIMB_UP: up the wall, to its top.
 
static void runClimbDown (Actor *actor)
 ACTOR_CLIMB_DOWN: down the wall, to its foot.
 
static void runGetOnWall (Actor *actor)
 ACTOR_GET_ON_WALL: from the ground onto the wall, to climb it.
 
static void runClimbOffBottom (Actor *actor)
 ACTOR_CLIMB_OFF_BOTTOM: from the wall's foot onto the ground.
 
static void runClimbOffTop (Actor *actor)
 ACTOR_CLIMB_OFF_TOP: from the wall's top onto the ground above.
 
static void runDrop (Actor *actor)
 ACTOR_DROP: the drop off a wall's edge, the fall and the landing.
 
static void runGauge (Actor *actor, ActorChildren *children)
 ACTOR_GAUGE: the gauge game's poses, from its start to its result's balloon.
 
static void runSearch (Actor *actor)
 ACTOR_SEARCH: the player searches a hidden spot.
 
static void runTalk (Actor *actor, ActorChildren *children)
 ACTOR_TALK: the character's first talk whose conditions hold, then the player's control back and the talk's flag actions.
 
static void runUse (Actor *actor)
 ACTOR_USE: the player works one of the objects 0x148, 0x15F and 0x160.
 
static void runUsed (Actor *actor)
 ACTOR_USED: the object the player worked, which plays its animation, sets its flag and goes away.
 
void FIELDSTG_runActorAction (Actor *actor, ActorChildren *children)
 Runs an actor's action, its substate (ACTOR_STAND...): the walks, the climbs and the drop from ACTOR_GET_OVER_EDGE to ACTOR_DROP (which shift it by a tile, left or right by climbSide), the talk of ACTOR_TALK (the first of the character's talks whose conditions hold) and the others up to ACTOR_STOP_SLIDE.
 

Detailed Description

An actor's moves, controls, methods, drawing and actions.

One file: each of the jump tables of these functions starts right where the one before ends, 4 bytes past a multiple of 8, so a new object between them would move the next one's table.

Definition in file actor_control.c.

Macro Definition Documentation

◆ SET_FILE_0

#define SET_FILE_0   0x01870070

Definition at line 848 of file actor_control.c.

◆ SET_FILE_8

#define SET_FILE_8   0x03CB001E

Definition at line 849 of file actor_control.c.

◆ SET_FILE_16

#define SET_FILE_16   0x03C9000B

Definition at line 850 of file actor_control.c.

◆ SET_FILE_1A

#define SET_FILE_1A   0x03CC0017

Definition at line 851 of file actor_control.c.

◆ SET_FILE_OTHER

#define SET_FILE_OTHER   0x03CA0064

Definition at line 852 of file actor_control.c.

Function Documentation

◆ FIELDSTG_checkFlightProbe()

s32 FIELDSTG_checkFlightProbe ( Actor *  actor,
s32  x,
s32  y,
Vec2  offset 
)

Whether a flying actor runs into the map at an offset from it: a cell that isn't free, a wall higher than it or a ceiling lower than it (FLIGHT_WALL, FLIGHT_CEILING); then it steps back by offset.

actor_control.c

< 2 * 16 pixels, in z's 1/256 pixels

< 3 * 16 pixels, in z's 1/256 pixels

< 4 * 16 pixels, in z's 1/256 pixels

< 5 * 16 pixels, in z's 1/256 pixels

< 6 * 16 pixels, in z's 1/256 pixels

< 6 * 16 pixels, in z's 1/256 pixels

< 5 * 16 pixels, in z's 1/256 pixels

< 4 * 16 pixels, in z's 1/256 pixels

< 3 * 16 pixels, in z's 1/256 pixels

< 2 * 16 pixels, in z's 1/256 pixels

Definition at line 11 of file actor_control.c.

Referenced by FIELDSTG_checkFlightProbes().

Here is the caller graph for this function:

◆ FIELDSTG_checkFlightProbes()

s32 FIELDSTG_checkFlightProbes ( Actor *  actor)

Whether a flying actor runs into the map at any of the five probes ahead of it (FIELDSTG_checkFlightProbe)

Definition at line 90 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_moveByPad()

void FIELDSTG_moveByPad ( Actor *  actor,
s32  pad 
)

Walks or runs an actor in the direction of the pad's arrows (an index of FIELDSTG_padDirs), or stops it when none is held.

< stops after a run

Definition at line 117 of file actor_control.c.

Referenced by FIELDSTG_controlPlayer(), and FIELDSTG_walkToGoal().

Here is the caller graph for this function:

◆ FIELDSTG_findActorAt()

Actor * FIELDSTG_findActorAt ( Vec2 *  pos)

The first actor (task id 5) whose box holds the tile pos: halfWidth to each side of it, half that above and below.

The match depends on the registry being held in a variable.

< every character (FIELDSTG_createActor)

Definition at line 142 of file actor_control.c.

Referenced by FIELDSTG_talkToActorAt().

Here is the caller graph for this function:

◆ FIELDSTG_talkToActorAt()

s32 FIELDSTG_talkToActorAt ( Actor *  actor,
Vec2 *  pos 
)

Talks to the character standing at pos, or to the one it stands in for (FIELDSTG_standIns): it answers (ACTOR_TALK), or, for the objects 0x148, 0x15F and 0x160, the player works it (ACTOR_USE).

Returns 1 when the player acts

< every character (FIELDSTG_createActor)

< that object

< that object

< works one of the objects 0x148, 0x15F and 0x160

< answers the actor that talks to it (talkPartner)

< slows down in the air

Definition at line 164 of file actor_control.c.

Referenced by FIELDSTG_controlFlight(), and FIELDSTG_controlPlayer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ stopFlightSound()

static void stopFlightSound ( Actor *  actor)
inlinestatic

Stops the sound of the flight, if it plays.

< held

Definition at line 209 of file actor_control.c.

Referenced by FIELDSTG_controlFlight(), and flyOrFloat().

Here is the caller graph for this function:

◆ accelerateFlight()

static void accelerateFlight ( Actor *  actor)
inlinestatic

Changes the flight's height speed (zSpeed) by 4 a frame, down to -0xC0 while the player flies (ACTOR_FLY) and up to 0x80 while it floats.

< flies on, triangle held (FIELDSTG_controlFlight)

Definition at line 218 of file actor_control.c.

Referenced by FIELDSTG_controlFlight().

Here is the caller graph for this function:

◆ flyOrFloat()

static void flyOrFloat ( Actor *  actor,
s32  held 
)
inlinestatic

Held TRIANGLE flies (ACTOR_FLY, with its sound), else the actor floats and the sound stops.

< flies on, triangle held (FIELDSTG_controlFlight)

< flies on, triangle held (FIELDSTG_controlFlight)

< held

< flies on, triangle held (FIELDSTG_controlFlight)

< slows down in the air

Definition at line 238 of file actor_control.c.

Referenced by FIELDSTG_controlFlight().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ turnInFlight()

static void turnInFlight ( Actor *  actor,
s32  held 
)
inlinestatic

Held RIGHT or LEFT turns the actor one direction every 8 frames.

Definition at line 255 of file actor_control.c.

Referenced by FIELDSTG_controlFlight().

Here is the caller graph for this function:

◆ FIELDSTG_controlFlight()

void FIELDSTG_controlFlight ( Actor *  actor)

The player's flight: it rises unless triangle is held (ACTOR_FLY), left and right turn, and cross, low enough, acts on what the player faces; the map's cells hold floors (2 to 6) and ceilings (18 to 22).

The match depends on the button's shift and mask as two statements.

< 2 * 16 pixels, in z's 1/256 pixels

< 6 * 16 pixels, in z's 1/256 pixels

< 5 * 16 pixels, in z's 1/256 pixels

< 4 * 16 pixels, in z's 1/256 pixels

< 3 * 16 pixels, in z's 1/256 pixels

< 2 * 16 pixels, in z's 1/256 pixels

< 2 * 16 pixels, in z's 1/256 pixels

< 2 * 16 pixels, in z's 1/256 pixels

< how far above a wall's top a descent stops

< 3 * 16 pixels, in z's 1/256 pixels

< 3 * 16 pixels, in z's 1/256 pixels

< how far above a wall's top a descent stops

< 4 * 16 pixels, in z's 1/256 pixels

< 4 * 16 pixels, in z's 1/256 pixels

< how far above a wall's top a descent stops

< 5 * 16 pixels, in z's 1/256 pixels

< 5 * 16 pixels, in z's 1/256 pixels

< how far above a wall's top a descent stops

< 6 * 16 pixels, in z's 1/256 pixels

< 6 * 16 pixels, in z's 1/256 pixels

< how far above a wall's top a descent stops

Definition at line 271 of file actor_control.c.

Referenced by FIELDSTG_createActor(), and giveControlBack().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_controlPlayer()

void FIELDSTG_controlPlayer ( Actor *  actor)

The player's update while it walks (Actor.control) when no menu, event or transition is running: the action button or a forced action (condition 0x12) checks the tile it faces, for an object to act on or, failing that, an event; otherwise the pad moves it.

The match depends on the object's case being an early exit, a do-while (0) with a break, after which the event's check is the rest of the block.

< the player talks to what it faces, and clears it

< item 4, which the player needs to search the hidden spots

< searches a hidden spot

< the player talks to what it faces, and clears it

Definition at line 388 of file actor_control.c.

Referenced by FIELDSTG_createActor(), FIELDSTG_resetActorControl(), and FIELDSTG_restorePlayerControl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_controlClimb()

void FIELDSTG_controlClimb ( Actor *  actor)

The player's control on a wall: up and down climb, nothing held holds on.

< holds on to a wall (FIELDSTG_controlClimb)

< holds on to a wall (FIELDSTG_controlClimb)

Definition at line 419 of file actor_control.c.

Referenced by FIELDSTG_runActorAction(), and runGetOnWall().

Here is the caller graph for this function:

◆ FIELDSTG_followLeader()

void FIELDSTG_followLeader ( Actor *  actor)

A partner's control: records the leader's steps in the trail while it moves, and follows them.

< every character (FIELDSTG_createActor)

< walks off through an exit (FIELDSTG_walkActorInDir)

< FIELDSTG_startActorSlide

< a power of two

< a power of two

< walks off through an exit (FIELDSTG_walkActorInDir)

< FIELDSTG_startActorSlide

< stops after a run

Definition at line 437 of file actor_control.c.

Referenced by FIELDSTG_createActor(), FIELDSTG_resetActorControl(), and FIELDSTG_resumePartners().

Here is the caller graph for this function:

◆ FIELDSTG_drainTrail()

void FIELDSTG_drainTrail ( Actor *  actor)

A follower's update while its trail runs out: it finds the leader (FIELD_TASK_ACTOR) if it has none, then each frame pushes two empty steps at the trail's head and walks two steps from its tail.

At x 0 it clears the trail and drops this update. The match depends on the leader being read into a variable before trail is set, which makes trail a copy of the pointer the leader was loaded through.

< every character (FIELDSTG_createActor)

< a power of two

< a power of two

< a power of two

Definition at line 492 of file actor_control.c.

Referenced by FIELDSTG_haltPartners().

Here is the caller graph for this function:

◆ FIELDSTG_walkToGoal()

void FIELDSTG_walkToGoal ( Actor *  actor)

Walks an actor to its goal tile (FIELDSTG_setActorGoal) as the pad would, then faces it the goal's way.

Definition at line 529 of file actor_control.c.

Referenced by FIELDSTG_launchActor(), and FIELDSTG_startActorWalk().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_setActorGoal()

void FIELDSTG_setActorGoal ( Actor *  actor,
s32  x,
s32  y,
s32  dir 
)

Sets the tile an actor walks to and the direction it ends facing (FIELDSTG_walkToGoal)

Definition at line 567 of file actor_control.c.

Referenced by setActorMethods().

Here is the caller graph for this function:

◆ FIELDSTG_isActorWalking()

s32 FIELDSTG_isActorWalking ( Actor *  actor)

Whether an actor is still walking to its goal.

Definition at line 575 of file actor_control.c.

Referenced by setActorMethods().

Here is the caller graph for this function:

◆ FIELDSTG_startActorWalk()

void FIELDSTG_startActorWalk ( Actor *  actor)

Starts an actor walking to its goal.

Definition at line 580 of file actor_control.c.

Referenced by setActorMethods().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_resetActorControl()

void FIELDSTG_resetActorControl ( Actor *  actor)

Gives an actor its kind's control back: the pad for the player, none for kind 1, the trail for the partners.

Definition at line 586 of file actor_control.c.

Referenced by setActorMethods().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_walkActorInDir()

void FIELDSTG_walkActorInDir ( Actor *  actor,
s32  dir 
)

Walks an actor out through an exit, in a direction (ACTOR_WALK_OUT)

< walks off through an exit (FIELDSTG_walkActorInDir)

Definition at line 604 of file actor_control.c.

Referenced by setActorMethods().

Here is the caller graph for this function:

◆ FIELDSTG_startActorSlide()

void FIELDSTG_startActorSlide ( Actor *  actor,
s32  dir 
)

Starts an actor sliding in a direction (SLOT_SLIDE)

< FIELDSTG_startActorSlide

< FIELDSTG_startActorSlide

Definition at line 611 of file actor_control.c.

Referenced by setActorMethods().

Here is the caller graph for this function:

◆ FIELDSTG_stopActorSlide()

void FIELDSTG_stopActorSlide ( Actor *  actor)

Stops a sliding actor (SLOT_STOP_SLIDE)

< FIELDSTG_startActorSlide

Definition at line 620 of file actor_control.c.

Referenced by setActorMethods().

Here is the caller graph for this function:

◆ FIELDSTG_startClimbUp()

void FIELDSTG_startClimbUp ( Actor *  actor,
s32  dir,
s32  x,
s32  y,
s32  height 
)

The climbs (SLOT_CLIMB_UP and SLOT_CLIMB_DOWN) and the drop (SLOT_DROP): the actor goes onto the wall at its foot (ACTOR_GET_ON_WALL) or its top (ACTOR_GET_OVER_EDGE), climbs it with the pad (FIELDSTG_controlClimb) and leaves it at the top or the foot; a drop (ACTOR_DROP) falls from height.

< from below (FIELDSTG_startClimbUp)

Definition at line 630 of file actor_control.c.

Referenced by setActorMethods().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_startClimbDown()

void FIELDSTG_startClimbDown ( Actor *  actor,
s32  dir,
s32  x,
s32  y,
s32  height 
)

Starts the climb down a wall of height from its top, at (x, y)

< onto the wall from above (FIELDSTG_startClimbDown)

Definition at line 648 of file actor_control.c.

Referenced by setActorMethods().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_startDrop()

void FIELDSTG_startDrop ( Actor *  actor,
s32  dir,
Vec2  pos,
s32  height 
)

Starts a drop from a ledge of height.

< FIELDSTG_startDrop

Definition at line 666 of file actor_control.c.

Referenced by setActorMethods().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_startActorGauge()

void FIELDSTG_startActorGauge ( Actor *  actor,
s32  dir,
Vec2  offset 
)

Starts the gauge game at an offset from an actor, turning the partners its way.

< plays the gauge game (FIELDSTG_startActorGauge)

< every character (FIELDSTG_createActor)

Definition at line 687 of file actor_control.c.

Referenced by setActorMethods().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_warpActor()

void FIELDSTG_warpActor ( Actor *  actor,
SlotDest *  dest,
s32  kind 
)

Warps the player (SLOT_WARP0 and SLOT_WARP1): the field task plays the warp's effect and cutscene of kind, then leaves for its mode (FIELDSTG_startWarp)

Definition at line 712 of file actor_control.c.

Referenced by setActorMethods().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_launchActor()

void FIELDSTG_launchActor ( Actor *  actor,
SlotDest *  dest 
)

Sends the player flying to the tile at dest from the nearest launcher (FIELDSTG_createLaunch)

Definition at line 722 of file actor_control.c.

Referenced by setActorMethods().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_setActorAnim()

void FIELDSTG_setActorAnim ( Actor *  actor,
s32  set 
)

Starts an actor's animation set from its first frame.

Definition at line 734 of file actor_control.c.

Referenced by beginActorAnim(), FIELDSTG_runActorAction(), FIELDSTG_setActorPose(), runClimbDown(), runClimbOffBottom(), runClimbOffTop(), runClimbUp(), runDrop(), runGauge(), runGetOnWall(), runSearch(), runSlide(), runStop(), runTalk(), runUse(), runUsed(), setActorMethods(), and standAgain().

Here is the caller graph for this function:

◆ FIELDSTG_setActorPose()

void FIELDSTG_setActorPose ( Actor *  actor,
s32  set,
s32  dir 
)

Puts an actor in an event's pose: an animation set and a direction (ACTOR_POSED)

< in the pose an event set (FIELDSTG_setActorPose)

Definition at line 743 of file actor_control.c.

Referenced by setActorMethods().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_isActorAnimDone()

s32 FIELDSTG_isActorAnimDone ( Actor *  actor)

Whether an actor's animation has played to its end.

Definition at line 751 of file actor_control.c.

Referenced by setActorMethods().

Here is the caller graph for this function:

◆ FIELDSTG_drawActor()

void FIELDSTG_drawActor ( void *  data,
void *  drawLayer 
)

The layer's sorted callback that draws an actor: its frame from its image, mirrored for the directions 5 and up, and, when it has one, its shadow, a sprite with its own texture page.

(actor, layer)

The match depends on the shadow's y offset cast to s16, and on the untyped parameters copied to typed locals.

Definition at line 759 of file actor_control.c.

Referenced by FIELDSTG_updateActor().

Here is the caller graph for this function:

◆ FIELDSTG_setActorDir()

void FIELDSTG_setActorDir ( Actor *  actor,
s32  dir 
)

Turns an actor to a direction.

Definition at line 837 of file actor_control.c.

Referenced by setActorMethods().

Here is the caller graph for this function:

◆ FIELDSTG_animateActor()

void FIELDSTG_animateActor ( Actor *  actor)

Plays an actor's animation: when its set (animSet) changes, it loads the set's animations for the five directions (character 2 picks the file by the set first), then steps the frames of the current direction's and loads a new frame's image into VRAM.

The match depends on two early exits written as a do-while (0) with breaks, the pick of the file and the step of the frames: loop.c moves the end of the animation (-1) out of the second one, after the direction's barrier, and reorg fills the first one's < 0x16 branch from its fallthrough, as only a branch out of a loop is. It also depends on reloadImage being read twice, on the width cast to s16 and on reloadImage being cleared last.

Definition at line 867 of file actor_control.c.

Referenced by FIELDSTG_updateActor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_restorePlayerControl()

void FIELDSTG_restorePlayerControl ( Actor *  actor)

Gives the player its pad control back, off any wall.

Definition at line 964 of file actor_control.c.

Referenced by giveControlBack(), runClimbOffBottom(), runClimbOffTop(), runStopSlide(), and standAgain().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_playStepSounds()

void FIELDSTG_playStepSounds ( Actor *  actor,
s32  moving,
s32  canBattle 
)

The player's footsteps, every 8 frames when it moves (every 32 for the characters 0x146 and 0x147) or 32 when not; with canBattle each step can start a battle (FIELDSTG_checkBattle)

Definition at line 972 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the caller graph for this function:

◆ FIELDSTG_playClimbSounds()

void FIELDSTG_playClimbSounds ( Actor *  actor)

The player's climbing sound, every 16 frames.

Definition at line 995 of file actor_control.c.

Referenced by runClimbDown(), and runClimbUp().

Here is the caller graph for this function:

◆ beginActorAnim()

static void beginActorAnim ( Actor *  actor,
s32  anim 
)
inlinestatic

The first frame of an action: the actor gets its shadow and the action's animation.

Definition at line 1006 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ standAgain()

static void standAgain ( Actor *  actor)
inlinestatic

Puts a character back to standing, under the player's control again.

Definition at line 1019 of file actor_control.c.

Referenced by runDrop(), runGauge(), runSearch(), and runUse().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ giveControlBack()

static void giveControlBack ( Actor *  player)
inlinestatic

Gives the player that talked back its control, walking or flying.

Definition at line 1026 of file actor_control.c.

Referenced by runTalk().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setUsedFlag()

static void setUsedFlag ( s32  character)
inlinestatic

Sets the flag of the characters 0x148, 0x15F and 0x160 once they are used.

Definition at line 1035 of file actor_control.c.

Referenced by runUsed().

Here is the caller graph for this function:

◆ runStop()

static void runStop ( Actor *  actor)
inlinestatic

ACTOR_STOP: the stop after a run, then standing.

Definition at line 1050 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runSlide()

static void runSlide ( Actor *  actor)
inlinestatic

ACTOR_SLIDE: the slide on ice, with its sound.

< held

Definition at line 1065 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runStopSlide()

static void runStopSlide ( Actor *  actor)
inlinestatic

ACTOR_STOP_SLIDE: the end of a slide, half a second before the player's control comes back.

< held

Definition at line 1085 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runClimbUp()

static void runClimbUp ( Actor *  actor)
inlinestatic

ACTOR_CLIMB_UP: up the wall, to its top.

Definition at line 1098 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runClimbDown()

static void runClimbDown ( Actor *  actor)
inlinestatic

ACTOR_CLIMB_DOWN: down the wall, to its foot.

Definition at line 1117 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runGetOnWall()

static void runGetOnWall ( Actor *  actor)
inlinestatic

ACTOR_GET_ON_WALL: from the ground onto the wall, to climb it.

< holds on to a wall (FIELDSTG_controlClimb)

Definition at line 1136 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runClimbOffBottom()

static void runClimbOffBottom ( Actor *  actor)
inlinestatic

ACTOR_CLIMB_OFF_BOTTOM: from the wall's foot onto the ground.

Definition at line 1152 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runClimbOffTop()

static void runClimbOffTop ( Actor *  actor)
inlinestatic

ACTOR_CLIMB_OFF_TOP: from the wall's top onto the ground above.

Definition at line 1171 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runDrop()

static void runDrop ( Actor *  actor)
inlinestatic

ACTOR_DROP: the drop off a wall's edge, the fall and the landing.

< once the fall is more than 0x1800

Definition at line 1195 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runGauge()

static void runGauge ( Actor *  actor,
ActorChildren *  children 
)
inlinestatic

ACTOR_GAUGE: the gauge game's poses, from its start to its result's balloon.

< with PLAYER09

< with PLAYER10, until the game ends

< after the game, with a balloon

Definition at line 1236 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runSearch()

static void runSearch ( Actor *  actor)
inlinestatic

ACTOR_SEARCH: the player searches a hidden spot.

Definition at line 1286 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runTalk()

static void runTalk ( Actor *  actor,
ActorChildren *  children 
)
inlinestatic

ACTOR_TALK: the character's first talk whose conditions hold, then the player's control back and the talk's flag actions.

< a treasure's, when it is talked to

Definition at line 1304 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runUse()

static void runUse ( Actor *  actor)
inlinestatic

ACTOR_USE: the player works one of the objects 0x148, 0x15F and 0x160.

Definition at line 1359 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ runUsed()

static void runUsed ( Actor *  actor)
inlinestatic

ACTOR_USED: the object the player worked, which plays its animation, sets its flag and goes away.

< the object's

Definition at line 1382 of file actor_control.c.

Referenced by FIELDSTG_runActorAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FIELDSTG_runActorAction()

void FIELDSTG_runActorAction ( Actor *  actor,
ActorChildren *  children 
)

Runs an actor's action, its substate (ACTOR_STAND...): the walks, the climbs and the drop from ACTOR_GET_OVER_EDGE to ACTOR_DROP (which shift it by a tile, left or right by climbSide), the talk of ACTOR_TALK (the first of the character's talks whose conditions hold) and the others up to ACTOR_STOP_SLIDE.

A treasure (characters 0x21, 0x4D to 0x57, 0x154 to 0x158 and 0x15B, whose talks give an item) doesn't turn to its talker: it opens with TRESUREB, and goes away when the talk ends. The match depends on the talks' loop testing both of its ends with a break at its top, and on the moves of a tile adding a choice of two steps.

< where the player's run doesn't check the probes ahead (FIELDSTG_checkFlightProbes)

< slows down in the air

< flies on, triangle held (FIELDSTG_controlFlight)

< FLIGHT_SPEED_MAX * 6 / 5, for 50 frames a second

< FLIGHT_SPEED_MAX * 6 / 5, for 50 frames a second

< stops after a run

< walks off through an exit (FIELDSTG_walkActorInDir)

< FIELDSTG_startActorSlide

< holds on to a wall (FIELDSTG_controlClimb)

< from below (FIELDSTG_startClimbUp)

< onto the wall from above (FIELDSTG_startClimbDown)

< holds on to a wall (FIELDSTG_controlClimb)

< in the pose an event set (FIELDSTG_setActorPose)

< FIELDSTG_startDrop

< plays the gauge game (FIELDSTG_startActorGauge)

< searches a hidden spot

< answers the actor that talks to it (talkPartner)

< works one of the objects 0x148, 0x15F and 0x160

< that object

Definition at line 1419 of file actor_control.c.

Referenced by FIELDSTG_updateActor().

Here is the call graph for this function:
Here is the caller graph for this function: