Super Mario Galaxy stores its animations in Nintendo’s J3D binary formats. Each format targets a different aspect of a model: bone transforms, material colours, texture coordinates, texture frame selections, and mesh visibility. The animation subsystem provides a separate player class for each format. All players share a commonDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/SMGCommunity/Petari/llms.txt
Use this file to discover all available pages before exploring further.
AnmPlayerBase foundation that manages a J3DFrameCtrl and a resource table lookup. Skeletal (BCK) animation is handled by the more capable XanimePlayer, which supports multi-track blending, interpolation frames, and per-actor default animations. The ActorAnimKeeper class sits above all players and provides a single named-animation interface used by most LiveActor subclasses.
AnmPlayerBase
AnmPlayerBase is the shared base for all non-skeletal animation players. It stores the active J3DAnmBase resource pointer and a J3DFrameCtrl that drives playback timing.
MaterialAnmPlayerBase extends this with a J3DModelData* pointer and abstract attach / detach methods used to bind the animation to the model’s material array.
Animation players
XanimePlayer — BCK skeletal animation
XanimePlayer — BCK skeletal animation
XanimePlayer is the primary skeletal animation driver. It supports up to two simultaneous tracks with weighted blending, configurable interpolation frame counts, and a default animation that plays when no explicit animation is set.BckCtrl — BCK playback settings table
BckCtrl — BCK playback settings table
BckCtrl stores a table of BckCtrlData entries read from a BCSV file. Each entry overrides playback parameters (start frame, end frame, repeat frame, interpolation length, loop mode) for a named BCK animation.BpkPlayer — BPK color animation
BpkPlayer — BPK color animation
Drives material colour-register animation (BPK format). Inherits
MaterialAnmPlayerBase and implements attach/detach to bind the colour animation to the model’s material.BrkPlayer — BRK TEV register animation
BrkPlayer — BRK TEV register animation
Drives TEV colour-register animation (BRK format). Used to animate material indirect and constant colours that BPK does not cover.
BtkPlayer — BTK texture SRT animation
BtkPlayer — BTK texture SRT animation
Animates texture scale, rotation, and translation (SRT) parameters on material samplers. Used for scrolling textures, pulsing effects, and UV distortion.
BtpPlayer — BTP texture pattern animation
BtpPlayer — BTP texture pattern animation
Steps through an indexed sequence of texture frames stored in the model’s texture palette. Used for sprite-sheet style animations.
BvaPlayer — BVA mesh visibility animation
BvaPlayer — BVA mesh visibility animation
Toggles individual mesh visibility flags over time (BVA format). Used to show or hide sub-meshes of a model on a per-frame schedule.
Animation format summary
| Format | Player | Animates |
|---|---|---|
| BCK | XanimePlayer | Bone / joint transforms (skeletal) |
| BPK | BpkPlayer | Material colour registers |
| BRK | BrkPlayer | TEV colour registers |
| BTK | BtkPlayer | Texture SRT (scale, rotation, translation) |
| BTP | BtpPlayer | Texture pattern (frame index) |
| BVA | BvaPlayer | Mesh visibility flags |
ActorAnimKeeper
ActorAnimKeeper is the per-actor animation coordinator. It holds a table of named ActorAnimKeeperInfo entries, each of which bundles the BCK, BTK, BRK, BPK, BTP, and BVA animation names that should play together under a single animation name.
ActorAnimKeeper::tryCreate returns nullptr if the actor’s model does not have an associated animation data BCSV. Always null-check the result before use.start("Walk") on an ActorAnimKeeper will simultaneously start the BCK, BTK, BRK, BPK, BTP, and BVA animations listed in the matching ActorAnimKeeperInfo row, providing a single consistent call-site for full-model animation changes.