Use this file to discover all available pages before exploring further.
Every boss in Super Mario Galaxy 1 is implemented as a cluster of cooperating classes: a main actor, one or more sub-part actors, a sequencer or battle director that controls phase progression, and a set of named state (nerve) execute functions that handle individual attack moves. The Boss/ directory contains around 130 headers covering ten distinct boss encounters.
Boss sub-parts (arms, tails, shells, legs) are typically LiveActor or PartsModel instances owned by the main boss actor. They share sensor hit routing back to the boss through attackSensor and receiveMsgPlayerAttack delegation.
MainBossActor — inherits LiveActor; owns all sub-parts and sequencer ├── SequencerOrDirector — NerveExecutor subclass managing phase transitions ├── SensorCtrl — routes hit messages between sensors ├── SubPartA — arm / tail / shell / leg LiveActor or PartsModel └── SubPartB ...
The sequencer calls setNerve() on the main actor or sub-parts to advance the battle. Individual phases are implemented as exePhase() methods on the main actor that run each frame while that nerve is active.
Bowser’s encounters (Vs1, Vs2, Vs3) share a base class structure. The main Koopa actor delegates all sensor and message handling to KoopaSensorCtrl and reads phase timing from KoopaSequencer.
DinoPackun (Dino Piranha) — multi-phase with sequencer
Dino Piranha appears in two variants (DinoPackunVs1, DinoPackunVs2) and has a large support structure. The DinoPackun main actor owns its animated tail chain, an egg shell that cracks on first hit, and foot-print effects.
TombSpider transitions from a cocoon phase into a two-phase spider battle. Phase state is delegated to TombSpiderAction1st and TombSpiderAction2nd. Acid glands and threader actors are sub-parts managed through TombSpiderParts.
The giant skeletal fish cycles through swim, open-mouth, bite, and power-up phases. A separate SkeletalFishBossBattleDirector manages the guard fish and volcanic column hazards that accompany the fight.
The tripod boss uses inverse kinematics to plant three legs. Its body matrix is computed each frame from TripodBossBone entries. Step sequencing is driven by TripodBossStepSequence.
BossBegoman (King Kaliente) — rolling boss with followers
BossBegoman extends BegomanBase (a general topman base class) and adds follower management, a parabolic path, and a BossBegomanHead sub-part. It spawns BegomanBaby and BegomanSpike follower actors during the fight.
BossKameck (Kamella) — magic barrier boss with sequencer
BossKameck fields a set of Kameck minions via KameckHolder and fires beams through a beam event listener. BossKameckSequencer (a NerveExecutor) drives which phase the battle is in.
Polta holds two PoltaArm sub-actors. It has a dedicated PoltaActionSequencer and five attack states: ground punch, rock generation, ground-rock attack, punch, and stagger.
Dodoryu (Fiery Dino Piranha variant) — burrowing worm boss
Dodoryu burrows underground and surfaces in different positions. Its move behavior is delegated to DodoryuStateBase subclasses. Hill animations (the dirt mound before surfacing) are managed internally.
OtaKing inherits NameObj rather than LiveActor. Its internal structure (hands, magma pool, long-foot sub-actor) is mostly opaque in the current decompilation state — the class body is padded to match the binary layout. Supporting files include BossStinkBug and its many action/demo helpers, which are related encounters.
class OtaKing : public NameObj {public: OtaKing(const char*); virtual ~OtaKing(); static void makeArchiveList(NameObjArchiveListCollector*, const JMapInfoIter&);private: u8 mPad[(0x158) - sizeof(NameObj)];};
The BossStinkBug (Tarantox) cluster lives alongside in Boss/: BossStinkBug.hpp, BossStinkBugActionBase.hpp, BossStinkBugActionFlyHigh.hpp, BossStinkBugActionFlyLow.hpp, BossStinkBugActionGround.hpp, BossStinkBugActionSequencer.hpp, BossStinkBugBomb.hpp, BossStinkBugBombHolder.hpp, and associated demo files.
When tracing a boss hit reaction, follow the call from receiveMsgPlayerAttack on the main actor through the SensorCtrl delegate and into the sequencer’s nerve change. The pattern is consistent across all bosses: receive → validate hit position → notify sequencer → set new nerve.