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

FIGHTSTG's models: meshes and their drawing, bones, motions, the models task and its controls, faces, effect models, the fighters' data, and the jumps and moves of a model (model_mesh.c, models.c, face.c, effect_model.c, fighter_info.c, move.c, draw.c and interp.c). More...

Include dependency graph for model.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ShortVec3
 A position or rotation, without the SVECTOR pad. More...
 
struct  Mesh
 Draws one bone of a Model (FIGHTSTG_createMesh), from the parts of an archive. More...
 
struct  MeshDrawState
 A Mesh's drawing state while its drawer (FIGHTSTG_drawMesh) walks its command bytes: a high nibble of 8 to 14 sets one of the flags, a low nibble of 1 the texture page and CLUT, 2 to 5 one of the flat colors, and 0 starts a run of polygons, each a 0 byte then its vertices' indices, its normals' indices when lit and its UVs when textured. More...
 
struct  ModelBone
 One part of a Model: a mesh (Mesh) placed by a matrix relative to its parent's. More...
 
struct  ModelControl
 What drives a Model, owned by whoever created it. More...
 
struct  MotionStep
 A motion in the motions' archive: its keyframes, step by step. More...
 
struct  Model
 A 3D model (FIGHTSTG_createModel), registered with id 0x11: a tree of bones, each drawn by a Mesh child (children[i] for bone i, children[0] the model's face, FIGHTSTG_createFace), and the motion it plays, from the archive of motions in motionFile. More...
 
struct  EffectModelEntry
 A battle effect that is a model (FIGHTSTG_startEffectModel): FIGHTSTG_effectModels lists them, ending with id 0. More...
 
struct  EffectModel
 Shows an effect's model at a place until its motion ends (FIGHTSTG_startEffectModel) More...
 
struct  InterpFuncs
 FIGHTSTG_interp: the functions that go between values. More...
 
struct  MoveTask
 FIGHTSTG_startMove's task: moves a ModelControl to a position. More...
 
struct  FighterEntry
 An entry of the fighters' file's list. More...
 
struct  FightersFile
 The fighters' file: offsets from its start. More...
 
struct  FighterInfo
 A fighter's entry in its file, from FIGHTSTG_fighterCache.funcs.getInfo. More...
 
struct  FighterInfoEnemy
 An enemy's FighterInfo: it has 3 cameras where a partner has 12. More...
 
struct  FighterInfoFuncs
 The fighters' file (FIGHTSTG_fighterCache.funcs) More...
 
struct  FighterCache
 FIGHTSTG_fighterCache: the last fighter getInfo found, and the fighters' file's functions. More...
 
struct  ModelsChildren
 The Models task's children: a removed model stays until it is gone. More...
 
struct  Models
 The fighters' models (FIGHTSTG_createModels), registered as BATTLE_TASK_MODELS: up to four, each one with its ModelControl, found by an id. More...
 
struct  FaceRect
 A part of a fighter's face (its eyes, then up to 14 more) and where its three frames are in its texture: copied into place by a DR_MOVE. More...
 
struct  FacePart
 
struct  Face
 A model's face (FIGHTSTG_createFace, the model's first child): the eyes blink (or close for some motions) and the other parts loop their frames. More...
 
struct  JumpParams
 The jump heights and speeds (t per frame) of the Jump kinds 1-6. More...
 
struct  Jump
 A ModelControl's jump (FIGHTSTG_startJump): up and down from its y, or for kinds 4 and 5 also forwards from or back to its home. More...
 

Macros

#define FILE_FIGHTERS   0x1CC
 The fighters' file, which FIGHTSTG_fighterCache.funcs reads.
 

Functions

Models * FIGHTSTG_createModels (void)
 The tasks FIGHTSTG starts for WFIGHTMN and WFIGHTTS.
 
void FIGHTSTG_blendBone (Model *model, ModelBone *bone)
 Blends a bone's position, rotation and scale from the saved pose (FIGHTSTG_saveBlendPose) towards their first keys at or after the model's frame, by its blend; when either scale has a 0, the key's is taken as it is.
 
void FIGHTSTG_poseBone (Model *model, ModelBone *bone, s32 frame)
 Sets a bone's position, rotation and scale to their keys at FRAME, interpolated between the keys around it.
 
void FIGHTSTG_poseBones (Model *model, Mesh **children)
 Moves the root bone by the model's move along its rotation, then poses (FIGHTSTG_poseBone) or blends (FIGHTSTG_blendBone) each other bone.
 
void FIGHTSTG_saveBlendPose (Model *model)
 Saves each bone's pose as the one a blend starts from.
 
void FIGHTSTG_setMotion (Model *model, s32 motion, s32 restart)
 Model.setMotion: lays out the motion's keyframes.
 
void FIGHTSTG_updateModel (Model *model, Mesh **children)
 The model's task: loads its textures and makes its meshes and face, then each frame follows its control's motion, steps and poses it, places the root at the control's position, builds each bone's matrices (a bone scaled to 48 or less is hidden) and queues its meshes on the control's layers; frees the bones when killed.
 
Mesh * FIGHTSTG_createMesh (void *archive, Vec2 texPos)
 Creates a Mesh from an archive: its vertices (entry 0), normals (1), commands (2) and bounds (5)
 
void FIGHTSTG_setModelColor (Model *model, s32 mode, CVECTOR *color)
 Model.setColor: sets the color mode, and the color unless COLOR is NULL, of the meshes of each bone but the root (once for each of the control's enabled layers)
 
void FIGHTSTG_setBoneNoBoundsCheck (Model *model, s32 bone, s32 value)
 Model.setBoneNoBoundsCheck: sets bone's Mesh noBoundsCheck when either of the control's layers is enabled and bone isn't 0.
 
s32 FIGHTSTG_isMotionDone (Model *model)
 Model.isMotionDone.
 
Model * FIGHTSTG_createModel (s32 file, s32 motionFile, Vec2 texPos, ModelControl *control, s32 hasIdle)
 Creates a model (registered as BATTLE_TASK_MODEL) from the bone list in FILE: each bone's parent, mesh file and keys file, with the file's high half; HASIDLE makes its motions go back to its idle motion.
 
Model * FIGHTSTG_createPlainModel (s32 file, s32 motionFile, Vec2 texPos, ModelControl *control)
 A model whose motions just end (FIGHTSTG_createModel)
 
void FIGHTSTG_lightMesh (Mesh *mesh)
 The colors of a Mesh's normals under the lights, through its matrix.
 
void FIGHTSTG_projectMesh (Mesh *mesh, Layer *layer)
 The screen positions of a Mesh's vertices and their depths in the layer's ordering table.
 
void FIGHTSTG_addMeshPolyGT (MeshDrawState *state)
 Adds the polygon in state as a gouraud-shaded textured triangle or quad; the colors, points and UVs are copied a word or a halfword at a time.
 
void FIGHTSTG_addMeshPolyFT (MeshDrawState *state)
 The same as a flat-shaded textured triangle or quad.
 
s32 FIGHTSTG_isMeshOnScreen (Mesh *mesh, Layer *layer)
 Whether a Mesh may be on screen: the screen positions of the 9 points of its bounds against the layer's clip, 64 pixels bigger each way; noBoundsCheck skips the check.
 
void FIGHTSTG_drawMesh (void *arg, Layer *layer)
 A layer callback that draws a Mesh: walks its command bytes (see MeshDrawState), setting its texture (setMeshTexture), and adds each polygon that faces the camera to the layer's ordering table (drawMeshPolygons).
 
void FIGHTSTG_drawMeshWireframe (Mesh *mesh, Layer *layer)
 Draws a Mesh as wireframe: each polygon of its command runs as a green LINE_F4 through its screen points, with a LINE_F2 to close a quad.
 
void FIGHTSTG_queueMeshDraw (Mesh *mesh, s32 layerId, MATRIX *matrix)
 Mesh.draw: has the layer draw the Mesh (FIGHTSTG_drawMesh) with MATRIX.
 
void FIGHTSTG_queueMeshWireframe (Mesh *mesh, s32 layerId, MATRIX *matrix)
 Mesh.drawWireframe: has the layer draw the Mesh as wireframe (FIGHTSTG_drawMeshWireframe) with MATRIX.
 
void FIGHTSTG_updateMesh (Mesh *mesh)
 The Mesh's task: frees its screen positions, depths and colors when killed.
 
void FIGHTSTG_updateMove (MoveTask *task)
 The move's task: takes the model from from to to along tStep, a step each frame, and dies there.
 
FighterInfo * FIGHTSTG_getFighterInfo (s32 id)
 the match depends on reaching the cache through the symbol until a fighter is found, and on each branch storing and returning its own info
 
void FIGHTSTG_cacheFighter (s32 index)
 Loads entry index of the fighters file into FIGHTSTG_fighterCache: its id and kind, and its info, an enemy's from kind 0x3A on or else a partner's.
 
void FIGHTSTG_getFighterRange (u32 enemy, s32 *min, s32 *max)
 The first and last entries of the fighters file that are enemies (enemy set) or partners.
 
void FIGHTSTG_updateModels (Models *task)
 The fighters' models' task: nothing to do but start.
 
s32 FIGHTSTG_findModelSlot (Models *task, s32 id)
 The slot of the fighter model registered as ID, or -1.
 
s32 FIGHTSTG_findFreeModelSlot (Models *task)
 A free fighter model slot, or -1.
 
void FIGHTSTG_removeFighterModel (Models *task, s32 id)
 Models.remove: kills the model registered as ID and frees its slot.
 
void FIGHTSTG_addFighterModel (Models *task, s32 id, s32 fighter, s32 visible)
 Models.add: replaces the model registered as ID with FIGHTER's, in a free slot with that slot's textures, drawn on layer BATTLE_LAYER_MODELS when VISIBLE.
 
ModelControl * FIGHTSTG_getModelControl (Models *task, s32 id)
 Models.get: the control of the model registered as ID, or NULL.
 
void FIGHTSTG_setModelId (Models *task, s32 id, s32 newId)
 Models.setId: registers the model ID as NEWID instead, removing the one that had it.
 
s32 FIGHTSTG_getModelFighter (Models *task, s32 id)
 Models.getFighter: the fighter of the model registered as ID, or 0.
 
void FIGHTSTG_faceModel (Models *task, s32 id)
 Models.face: puts the model registered as ID at its side's place, facing the other side, as its home.
 
void FIGHTSTG_setModelIdleMotion (Models *task, s32 id, s32 motion)
 Models.setIdleMotion.
 
Model * FIGHTSTG_createIdlingModel (s32 file, s32 motionFile, Vec2 texPos, ModelControl *control)
 A model whose motions go back to its idle motion (FIGHTSTG_createModel): the fighters'.
 
void FIGHTSTG_updateJump (Jump *task)
 The jump's task: lifts its model and drops it along ease curves at its speed; kind 4 also moves it forward from home, 5 back home and 6 drops it to its home height, mirrored for the enemy.
 
Jump * FIGHTSTG_startJump (ModelControl *control, s32 kind, s32 distance)
 Starts a jump of control's model of kind 1-6 (FIGHTSTG_jumps), forward by distance for kind 4.
 
MoveTask * FIGHTSTG_startMove (ModelControl *control, ShortVec3 *to, s32 time)
 Moves control's model from where it is to to over time frames.
 
void FIGHTSTG_drawShadedQuad (s32 layerId, s32 depth, DVECTOR *xy, CVECTOR *colors, s32 semi)
 A Gouraud-shaded quad on a layer, blended when semi is set; the match depends on setSemiTrans inside the if and on poly moving on past it.
 
void FIGHTSTG_stepMotion (Model *model)
 Steps a model's motion by the frames gone by, blending into a new pose where a keyframe has 0x8000, and starts the idle motion when it ends.
 
s32 FIGHTSTG_getEyesFrame (Face *task)
 The eyes' frame for the model's motion: 2 (closed) for motions 4 to 11, 1 for 2, else 0 (open)
 
void FIGHTSTG_moveFacePart (Face *task, DR_MOVE *prim, s32 part, s32 frame)
 Fills prim to copy part's frame of the face's texture over the part, in VRAM.
 
void FIGHTSTG_updateFace (Face *task)
 A fighter's face task: each frame, copies the eyes' frame (blinking at random while open) and the other parts' frames (a three-frame cycle) over the model's texture, for the parts whose frame changed.
 
Face * FIGHTSTG_createFace (Model *model, s32 fighter)
 Creates the face of fighter's model, with its parts (FIGHTSTG_fighterCache.getFace); none for fighter 0.
 
void FIGHTSTG_projectPoint (Layer *layer, SVECTOR *pos, ShortVec3 *out)
 Projects pos to the screen: its x and y, and its depth in the layer's ordering table.
 
void FIGHTSTG_updateEffectModel (EffectModel *task, Model **children)
 An effect model's task: creates its model at its position and rotation on layer BATTLE_LAYER_MODELS and ends when its motion is over.
 
s32 FIGHTSTG_getEffectModelFile (s32 id)
 The model file of effect model id (FIGHTSTG_effectModels), or 0 for none.
 
EffectModel * FIGHTSTG_startEffectModel (s32 id, SVECTOR *pos, SVECTOR *rot)
 Starts the effect model id at pos and rot, its model in FIGHTSTG_effectModels and its textures at (0x280, 0x100); killed at once when id has no entry.
 
void FIGHTSTG_interpNop (void)
 FIGHTSTG_interp.nop: empty, and nothing calls it.
 
void FIGHTSTG_lerpVector (SVECTOR *from, SVECTOR *to, s32 t, SVECTOR *out)
 FIGHTSTG_interp.lerp: out is from moved t (0-0x1000) of the way to to, on the GTE.
 
s32 FIGHTSTG_ease (s32 curve, s32 t, s32 value)
 Returns value scaled by the sine of t (4096 is 1.0) on the given curve: 0 a quarter of t, 1 the same as a cosine, 2 half of t.
 
void FIGHTSTG_drawQuad (s32 layerId, s32 depth, DVECTOR *xy, CVECTOR *colors)
 the functions of FIGHTSTG_battle, FIGHTSTG_action and FIGHTSTG_battleFuncs
 
void FIGHTSTG_drawBlendedQuad (s32 layerId, s32 depth, DVECTOR *xy, CVECTOR *colors)
 A Gouraud-shaded quad on a layer, blended.
 
FaceRect * FIGHTSTG_getFighterFace (s32 id)
 Fighter id's face parts (FaceRect), in the fighters file.
 

Variables

MATRIX IDENTITY_MATRIX
 the root bone's parent (src/engine/data/matrices.c)
 
FighterCache FIGHTSTG_fighterCache
 Shared between the overlay's objects.
 
InterpFuncs FIGHTSTG_interp
 the functions that go between values
 
Vec2 FIGHTSTG_fighterTexPos []
 the fighters' models' texture places
 
EffectModelEntry FIGHTSTG_effectModels []
 the effect models, ended by an id of 0; the European version's differ
 
JumpParams FIGHTSTG_jumps []
 the jumps of FIGHTSTG_startJump, by kind from 1
 
s32 FIGHTSTG_partnerIdleMotion
 the partner's idle motion while stage 0x1D is up
 

Detailed Description

FIGHTSTG's models: meshes and their drawing, bones, motions, the models task and its controls, faces, effect models, the fighters' data, and the jumps and moves of a model (model_mesh.c, models.c, face.c, effect_model.c, fighter_info.c, move.c, draw.c and interp.c).

Definition in file model.h.

Macro Definition Documentation

◆ FILE_FIGHTERS

#define FILE_FIGHTERS   0x1CC

The fighters' file, which FIGHTSTG_fighterCache.funcs reads.

Definition at line 189 of file model.h.

Function Documentation

◆ FIGHTSTG_createModels()

Models * FIGHTSTG_createModels ( void  )

The tasks FIGHTSTG starts for WFIGHTMN and WFIGHTTS.

The tasks FIGHTSTG starts for WFIGHTMN and WFIGHTTS.

< the fighters'

Definition at line 154 of file models.c.

Referenced by setUpBattle(), and WFIGHTMN_updateMenu().

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

◆ FIGHTSTG_blendBone()

void FIGHTSTG_blendBone ( Model *  model,
ModelBone *  bone 
)

Blends a bone's position, rotation and scale from the saved pose (FIGHTSTG_saveBlendPose) towards their first keys at or after the model's frame, by its blend; when either scale has a 0, the key's is taken as it is.

Definition at line 23 of file model_mesh.c.

Referenced by FIGHTSTG_poseBones().

Here is the caller graph for this function:

◆ FIGHTSTG_poseBone()

void FIGHTSTG_poseBone ( Model *  model,
ModelBone *  bone,
s32  frame 
)

Sets a bone's position, rotation and scale to their keys at FRAME, interpolated between the keys around it.

Definition at line 83 of file model_mesh.c.

Referenced by FIGHTSTG_poseBones(), and FIGHTSTG_stepMotion().

Here is the caller graph for this function:

◆ FIGHTSTG_poseBones()

void FIGHTSTG_poseBones ( Model *  model,
Mesh **  children 
)

Moves the root bone by the model's move along its rotation, then poses (FIGHTSTG_poseBone) or blends (FIGHTSTG_blendBone) each other bone.

Definition at line 143 of file model_mesh.c.

Referenced by FIGHTSTG_updateModel().

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

◆ FIGHTSTG_saveBlendPose()

void FIGHTSTG_saveBlendPose ( Model *  model)

Saves each bone's pose as the one a blend starts from.

Definition at line 173 of file model_mesh.c.

Referenced by FIGHTSTG_stepMotion().

Here is the caller graph for this function:

◆ FIGHTSTG_setMotion()

void FIGHTSTG_setMotion ( Model *  model,
s32  motion,
s32  restart 
)

Model.setMotion: lays out the motion's keyframes.

Definition at line 185 of file model_mesh.c.

Referenced by FIGHTSTG_createModel(), FIGHTSTG_stepMotion(), and FIGHTSTG_updateModel().

Here is the caller graph for this function:

◆ FIGHTSTG_updateModel()

void FIGHTSTG_updateModel ( Model *  model,
Mesh **  children 
)

The model's task: loads its textures and makes its meshes and face, then each frame follows its control's motion, steps and poses it, places the root at the control's position, builds each bone's matrices (a bone scaled to 48 or less is hidden) and queues its meshes on the control's layers; frees the bones when killed.

Definition at line 296 of file model_mesh.c.

Referenced by FIGHTSTG_createModel().

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

◆ FIGHTSTG_createMesh()

Mesh * FIGHTSTG_createMesh ( void *  archive,
Vec2  texPos 
)

Creates a Mesh from an archive: its vertices (entry 0), normals (1), commands (2) and bounds (5)

Definition at line 1061 of file model_mesh.c.

Referenced by FIGHTSTG_updateModel().

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

◆ FIGHTSTG_setModelColor()

void FIGHTSTG_setModelColor ( Model *  model,
s32  mode,
CVECTOR *  color 
)

Model.setColor: sets the color mode, and the color unless COLOR is NULL, of the meshes of each bone but the root (once for each of the control's enabled layers)

Definition at line 410 of file model_mesh.c.

Referenced by FIGHTSTG_createModel().

Here is the caller graph for this function:

◆ FIGHTSTG_setBoneNoBoundsCheck()

void FIGHTSTG_setBoneNoBoundsCheck ( Model *  model,
s32  bone,
s32  value 
)

Model.setBoneNoBoundsCheck: sets bone's Mesh noBoundsCheck when either of the control's layers is enabled and bone isn't 0.

The match depends on the pointer to the bone's slot, which children[bone + 1] computes with the addu's operands the other way round.

Definition at line 433 of file model_mesh.c.

Referenced by FIGHTSTG_createModel().

Here is the caller graph for this function:

◆ FIGHTSTG_isMotionDone()

s32 FIGHTSTG_isMotionDone ( Model *  model)

Model.isMotionDone.

Definition at line 445 of file model_mesh.c.

Referenced by FIGHTSTG_createModel().

Here is the caller graph for this function:

◆ FIGHTSTG_createModel()

Model * FIGHTSTG_createModel ( s32  file,
s32  motionFile,
Vec2  texPos,
ModelControl *  control,
s32  hasIdle 
)

Creates a model (registered as BATTLE_TASK_MODEL) from the bone list in FILE: each bone's parent, mesh file and keys file, with the file's high half; HASIDLE makes its motions go back to its idle motion.

< a model (FIGHTSTG_updateModel)

Definition at line 452 of file model_mesh.c.

Referenced by FIGHTSTG_createIdlingModel(), and FIGHTSTG_createPlainModel().

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

◆ FIGHTSTG_createPlainModel()

Model * FIGHTSTG_createPlainModel ( s32  file,
s32  motionFile,
Vec2  texPos,
ModelControl *  control 
)

A model whose motions just end (FIGHTSTG_createModel)

Definition at line 502 of file model_mesh.c.

Referenced by FIGHTSTG_updateEffectModel(), and FIGHTSTG_updateStage().

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

◆ FIGHTSTG_lightMesh()

void FIGHTSTG_lightMesh ( Mesh *  mesh)

The colors of a Mesh's normals under the lights, through its matrix.

Definition at line 507 of file model_mesh.c.

Referenced by FIGHTSTG_drawMesh().

Here is the caller graph for this function:

◆ FIGHTSTG_projectMesh()

void FIGHTSTG_projectMesh ( Mesh *  mesh,
Layer *  layer 
)

The screen positions of a Mesh's vertices and their depths in the layer's ordering table.

Definition at line 541 of file model_mesh.c.

Referenced by FIGHTSTG_drawMesh(), and FIGHTSTG_drawMeshWireframe().

Here is the caller graph for this function:

◆ FIGHTSTG_addMeshPolyGT()

void FIGHTSTG_addMeshPolyGT ( MeshDrawState *  state)

Adds the polygon in state as a gouraud-shaded textured triangle or quad; the colors, points and UVs are copied a word or a halfword at a time.

Definition at line 580 of file model_mesh.c.

Referenced by drawMeshPolygons().

Here is the caller graph for this function:

◆ FIGHTSTG_addMeshPolyFT()

void FIGHTSTG_addMeshPolyFT ( MeshDrawState *  state)

The same as a flat-shaded textured triangle or quad.

Definition at line 615 of file model_mesh.c.

Referenced by drawMeshPolygons().

Here is the caller graph for this function:

◆ FIGHTSTG_isMeshOnScreen()

s32 FIGHTSTG_isMeshOnScreen ( Mesh *  mesh,
Layer *  layer 
)

Whether a Mesh may be on screen: the screen positions of the 9 points of its bounds against the layer's clip, 64 pixels bigger each way; noBoundsCheck skips the check.

The match depends on the + 128s kept in w and h, which gcc otherwise folds into the - 64s.

Definition at line 648 of file model_mesh.c.

Referenced by FIGHTSTG_drawMesh(), and FIGHTSTG_drawMeshWireframe().

Here is the caller graph for this function:

◆ FIGHTSTG_drawMesh()

void FIGHTSTG_drawMesh ( void *  arg,
Layer *  layer 
)

A layer callback that draws a Mesh: walks its command bytes (see MeshDrawState), setting its texture (setMeshTexture), and adds each polygon that faces the camera to the layer's ordering table (drawMeshPolygons).

The match depends on the mesh coming in as a void *, on the ?: for q and on each polygon's checks and drawing being a do-while (0) with breaks (both in drawMeshPolygons).

Definition at line 815 of file model_mesh.c.

Referenced by FIGHTSTG_queueMeshDraw().

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

◆ FIGHTSTG_drawMeshWireframe()

void FIGHTSTG_drawMeshWireframe ( Mesh *  mesh,
Layer *  layer 
)

Draws a Mesh as wireframe: each polygon of its command runs as a green LINE_F4 through its screen points, with a LINE_F2 to close a quad.

Each addPrim is written out with linkTag.

Definition at line 909 of file model_mesh.c.

Referenced by FIGHTSTG_queueMeshWireframe().

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

◆ FIGHTSTG_queueMeshDraw()

void FIGHTSTG_queueMeshDraw ( Mesh *  mesh,
s32  layerId,
MATRIX *  matrix 
)

Mesh.draw: has the layer draw the Mesh (FIGHTSTG_drawMesh) with MATRIX.

Definition at line 1022 of file model_mesh.c.

Referenced by FIGHTSTG_createMesh().

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

◆ FIGHTSTG_queueMeshWireframe()

void FIGHTSTG_queueMeshWireframe ( Mesh *  mesh,
s32  layerId,
MATRIX *  matrix 
)

Mesh.drawWireframe: has the layer draw the Mesh as wireframe (FIGHTSTG_drawMeshWireframe) with MATRIX.

Definition at line 1031 of file model_mesh.c.

Referenced by FIGHTSTG_createMesh().

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

◆ FIGHTSTG_updateMesh()

void FIGHTSTG_updateMesh ( Mesh *  mesh)

The Mesh's task: frees its screen positions, depths and colors when killed.

Definition at line 1039 of file model_mesh.c.

Referenced by FIGHTSTG_createMesh().

Here is the caller graph for this function:

◆ FIGHTSTG_updateMove()

void FIGHTSTG_updateMove ( MoveTask *  task)

The move's task: takes the model from from to to along tStep, a step each frame, and dies there.

Definition at line 103 of file move.c.

Referenced by FIGHTSTG_startMove().

Here is the caller graph for this function:

◆ FIGHTSTG_getFighterInfo()

FighterInfo * FIGHTSTG_getFighterInfo ( s32  id)

the match depends on reaching the cache through the symbol until a fighter is found, and on each branch storing and returning its own info

Definition at line 12 of file fighter_info.c.

Referenced by FIGHTSTG_getFighterFace().

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

◆ FIGHTSTG_cacheFighter()

void FIGHTSTG_cacheFighter ( s32  index)

Loads entry index of the fighters file into FIGHTSTG_fighterCache: its id and kind, and its info, an enemy's from kind 0x3A on or else a partner's.

Definition at line 57 of file fighter_info.c.

Here is the call graph for this function:

◆ FIGHTSTG_getFighterRange()

void FIGHTSTG_getFighterRange ( u32  enemy,
s32 *  min,
s32 *  max 
)

The first and last entries of the fighters file that are enemies (enemy set) or partners.

Definition at line 90 of file fighter_info.c.

Here is the call graph for this function:

◆ FIGHTSTG_updateModels()

void FIGHTSTG_updateModels ( Models *  task)

The fighters' models' task: nothing to do but start.

Definition at line 7 of file models.c.

Referenced by FIGHTSTG_createModels().

Here is the caller graph for this function:

◆ FIGHTSTG_findModelSlot()

s32 FIGHTSTG_findModelSlot ( Models *  task,
s32  id 
)

The slot of the fighter model registered as ID, or -1.

Definition at line 21 of file models.c.

Referenced by FIGHTSTG_getModelControl(), FIGHTSTG_getModelFighter(), FIGHTSTG_removeFighterModel(), and FIGHTSTG_setModelId().

Here is the caller graph for this function:

◆ FIGHTSTG_findFreeModelSlot()

s32 FIGHTSTG_findFreeModelSlot ( Models *  task)

A free fighter model slot, or -1.

Definition at line 33 of file models.c.

Referenced by FIGHTSTG_addFighterModel().

Here is the caller graph for this function:

◆ FIGHTSTG_removeFighterModel()

void FIGHTSTG_removeFighterModel ( Models *  task,
s32  id 
)

Models.remove: kills the model registered as ID and frees its slot.

Definition at line 45 of file models.c.

Referenced by FIGHTSTG_addFighterModel(), FIGHTSTG_createModels(), and FIGHTSTG_setModelId().

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

◆ FIGHTSTG_addFighterModel()

void FIGHTSTG_addFighterModel ( Models *  task,
s32  id,
s32  fighter,
s32  visible 
)

Models.add: replaces the model registered as ID with FIGHTER's, in a free slot with that slot's textures, drawn on layer BATTLE_LAYER_MODELS when VISIBLE.

Definition at line 64 of file models.c.

Referenced by FIGHTSTG_createModels().

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

◆ FIGHTSTG_getModelControl()

ModelControl * FIGHTSTG_getModelControl ( Models *  task,
s32  id 
)

Models.get: the control of the model registered as ID, or NULL.

Definition at line 88 of file models.c.

Referenced by FIGHTSTG_createModels(), FIGHTSTG_faceModel(), and FIGHTSTG_setModelIdleMotion().

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

◆ FIGHTSTG_setModelId()

void FIGHTSTG_setModelId ( Models *  task,
s32  id,
s32  newId 
)

Models.setId: registers the model ID as NEWID instead, removing the one that had it.

Definition at line 99 of file models.c.

Referenced by FIGHTSTG_createModels().

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

◆ FIGHTSTG_getModelFighter()

s32 FIGHTSTG_getModelFighter ( Models *  task,
s32  id 
)

Models.getFighter: the fighter of the model registered as ID, or 0.

Definition at line 105 of file models.c.

Referenced by FIGHTSTG_createModels().

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

◆ FIGHTSTG_faceModel()

void FIGHTSTG_faceModel ( Models *  task,
s32  id 
)

Models.face: puts the model registered as ID at its side's place, facing the other side, as its home.

Definition at line 116 of file models.c.

Referenced by FIGHTSTG_createModels().

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

◆ FIGHTSTG_setModelIdleMotion()

void FIGHTSTG_setModelIdleMotion ( Models *  task,
s32  id,
s32  motion 
)

Models.setIdleMotion.

Definition at line 145 of file models.c.

Referenced by FIGHTSTG_createModels().

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

◆ FIGHTSTG_createIdlingModel()

Model * FIGHTSTG_createIdlingModel ( s32  file,
s32  motionFile,
Vec2  texPos,
ModelControl *  control 
)

A model whose motions go back to its idle motion (FIGHTSTG_createModel): the fighters'.

Definition at line 497 of file model_mesh.c.

Referenced by FIGHTSTG_addFighterModel().

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

◆ FIGHTSTG_updateJump()

void FIGHTSTG_updateJump ( Jump *  task)

The jump's task: lifts its model and drops it along ease curves at its speed; kind 4 also moves it forward from home, 5 back home and 6 drops it to its home height, mirrored for the enemy.

Definition at line 8 of file move.c.

Referenced by FIGHTSTG_startJump().

Here is the caller graph for this function:

◆ FIGHTSTG_startJump()

Jump * FIGHTSTG_startJump ( ModelControl *  control,
s32  kind,
s32  distance 
)

Starts a jump of control's model of kind 1-6 (FIGHTSTG_jumps), forward by distance for kind 4.

Definition at line 89 of file move.c.

Referenced by startModelJump().

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

◆ FIGHTSTG_startMove()

MoveTask * FIGHTSTG_startMove ( ModelControl *  control,
ShortVec3 *  to,
s32  time 
)

Moves control's model from where it is to to over time frames.

Definition at line 142 of file move.c.

Referenced by FIGHTSTG_runScriptModel(), and moveModelHome().

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

◆ FIGHTSTG_drawShadedQuad()

void FIGHTSTG_drawShadedQuad ( s32  layerId,
s32  depth,
DVECTOR *  xy,
CVECTOR *  colors,
s32  semi 
)

A Gouraud-shaded quad on a layer, blended when semi is set; the match depends on setSemiTrans inside the if and on poly moving on past it.

Definition at line 28 of file draw.c.

Referenced by FIGHTSTG_drawBlendedQuad(), and FIGHTSTG_drawQuad().

Here is the caller graph for this function:

◆ FIGHTSTG_stepMotion()

void FIGHTSTG_stepMotion ( Model *  model)

Steps a model's motion by the frames gone by, blending into a new pose where a keyframe has 0x8000, and starts the idle motion when it ends.

Definition at line 242 of file model_mesh.c.

Referenced by FIGHTSTG_updateModel().

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

◆ FIGHTSTG_getEyesFrame()

s32 FIGHTSTG_getEyesFrame ( Face *  task)

The eyes' frame for the model's motion: 2 (closed) for motions 4 to 11, 1 for 2, else 0 (open)

Definition at line 7 of file face.c.

Referenced by FIGHTSTG_updateFace().

Here is the caller graph for this function:

◆ FIGHTSTG_moveFacePart()

void FIGHTSTG_moveFacePart ( Face *  task,
DR_MOVE *  prim,
s32  part,
s32  frame 
)

Fills prim to copy part's frame of the face's texture over the part, in VRAM.

Definition at line 27 of file face.c.

Referenced by FIGHTSTG_updateFace().

Here is the caller graph for this function:

◆ FIGHTSTG_updateFace()

void FIGHTSTG_updateFace ( Face *  task)

A fighter's face task: each frame, copies the eyes' frame (blinking at random while open) and the other parts' frames (a three-frame cycle) over the model's texture, for the parts whose frame changed.

Definition at line 43 of file face.c.

Referenced by FIGHTSTG_createFace().

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

◆ FIGHTSTG_createFace()

Face * FIGHTSTG_createFace ( Model *  model,
s32  fighter 
)

Creates the face of fighter's model, with its parts (FIGHTSTG_fighterCache.getFace); none for fighter 0.

Definition at line 119 of file face.c.

Referenced by FIGHTSTG_updateModel().

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

◆ FIGHTSTG_projectPoint()

void FIGHTSTG_projectPoint ( Layer *  layer,
SVECTOR *  pos,
ShortVec3 *  out 
)

Projects pos to the screen: its x and y, and its depth in the layer's ordering table.

Definition at line 8 of file draw.c.

◆ FIGHTSTG_updateEffectModel()

void FIGHTSTG_updateEffectModel ( EffectModel *  task,
Model **  children 
)

An effect model's task: creates its model at its position and rotation on layer BATTLE_LAYER_MODELS and ends when its motion is over.

Definition at line 7 of file effect_model.c.

Referenced by FIGHTSTG_startEffectModel().

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

◆ FIGHTSTG_getEffectModelFile()

s32 FIGHTSTG_getEffectModelFile ( s32  id)

The model file of effect model id (FIGHTSTG_effectModels), or 0 for none.

Definition at line 307 of file effect_model.c.

Referenced by FIGHTSTG_runScriptEffectModel().

Here is the caller graph for this function:

◆ FIGHTSTG_startEffectModel()

EffectModel * FIGHTSTG_startEffectModel ( s32  id,
SVECTOR *  pos,
SVECTOR *  rot 
)

Starts the effect model id at pos and rot, its model in FIGHTSTG_effectModels and its textures at (0x280, 0x100); killed at once when id has no entry.

The match depends on the entry pointer and on texPos set as one Vec2 (as two members, gcc stores them sooner).

Definition at line 322 of file effect_model.c.

Referenced by FIGHTSTG_runScriptEffectModel().

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

◆ FIGHTSTG_interpNop()

void FIGHTSTG_interpNop ( void  )

FIGHTSTG_interp.nop: empty, and nothing calls it.

Definition at line 7 of file interp.c.

◆ FIGHTSTG_lerpVector()

void FIGHTSTG_lerpVector ( SVECTOR *  from,
SVECTOR *  to,
s32  t,
SVECTOR *  out 
)

FIGHTSTG_interp.lerp: out is from moved t (0-0x1000) of the way to to, on the GTE.

Definition at line 12 of file interp.c.

◆ FIGHTSTG_ease()

s32 FIGHTSTG_ease ( s32  curve,
s32  t,
s32  value 
)

Returns value scaled by the sine of t (4096 is 1.0) on the given curve: 0 a quarter of t, 1 the same as a cosine, 2 half of t.

Definition at line 31 of file interp.c.

◆ FIGHTSTG_drawQuad()

void FIGHTSTG_drawQuad ( s32  layerId,
s32  depth,
DVECTOR *  xy,
CVECTOR *  colors 
)

the functions of FIGHTSTG_battle, FIGHTSTG_action and FIGHTSTG_battleFuncs

the functions of FIGHTSTG_battle, FIGHTSTG_action and FIGHTSTG_battleFuncs

Definition at line 64 of file draw.c.

Here is the call graph for this function:

◆ FIGHTSTG_drawBlendedQuad()

void FIGHTSTG_drawBlendedQuad ( s32  layerId,
s32  depth,
DVECTOR *  xy,
CVECTOR *  colors 
)

A Gouraud-shaded quad on a layer, blended.

Definition at line 69 of file draw.c.

Here is the call graph for this function:

◆ FIGHTSTG_getFighterFace()

FaceRect * FIGHTSTG_getFighterFace ( s32  id)

Fighter id's face parts (FaceRect), in the fighters file.

Definition at line 81 of file fighter_info.c.

Here is the call graph for this function:

Variable Documentation

◆ IDENTITY_MATRIX

MATRIX IDENTITY_MATRIX
extern

the root bone's parent (src/engine/data/matrices.c)

Definition at line 12 of file matrices.c.

Referenced by FIGHTSTG_createModel(), and FIGHTSTG_projectPoint().

◆ FIGHTSTG_fighterCache

◆ FIGHTSTG_interp

InterpFuncs FIGHTSTG_interp
extern

the functions that go between values

Definition at line 44 of file interp.c.

Referenced by FIGHTSTG_fadeStage(), FIGHTSTG_updateBattleCamera(), FIGHTSTG_updateJump(), FIGHTSTG_updateLights(), and FIGHTSTG_updateMove().

◆ FIGHTSTG_fighterTexPos

Vec2 FIGHTSTG_fighterTexPos[]
extern

the fighters' models' texture places

Definition at line 58 of file models.c.

Referenced by FIGHTSTG_addFighterModel().

◆ FIGHTSTG_effectModels

EffectModelEntry FIGHTSTG_effectModels[]
extern

the effect models, ended by an id of 0; the European version's differ

Definition at line 171 of file effect_model.c.

Referenced by FIGHTSTG_getEffectModelFile(), and FIGHTSTG_startEffectModel().

◆ FIGHTSTG_jumps

JumpParams FIGHTSTG_jumps[]
extern

the jumps of FIGHTSTG_startJump, by kind from 1

Definition at line 83 of file move.c.

Referenced by FIGHTSTG_startJump().

◆ FIGHTSTG_partnerIdleMotion

s32 FIGHTSTG_partnerIdleMotion
extern

the partner's idle motion while stage 0x1D is up

Definition at line 1079 of file model_mesh.c.

Referenced by FIGHTSTG_runScriptStage().