Files
bigmak94andClaude Opus 5.5 4b395efe5c Add the Petari decompilation (SMGCommunity/Petari@0a5c660)
The sources of Petari (https://github.com/SMGCommunity/Petari), the
Super Mario Galaxy decompilation by the SMGCommunity, at commit
0a5c6608dc3b4c44a9aa68c2535d1793dc565f02, unchanged but for LF line
endings: LICENSE (as LICENSE-Petari.txt; CC0 1.0), include/, libs/ and
src/.  Left out: the game data Petari keeps from the original
executable, the error message archive (include/Game/System/
ErrorArchive.hpp) and two tables (src/Game/System/GalaxyID.bcsv and
StoryEvent.bcsv); GalaxyQuest's converter takes them from the player's
own disc.  The port's changes follow in the next commit, so
`git diff petari-base -- decomp` shows them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 01:59:38 +02:00

127 lines
4.2 KiB
C++

#pragma once
#include "Game/LiveActor/LiveActor.hpp"
class Mario;
class MarioActor;
class MarioAnimator;
class MarioState;
class Triangle;
class MarioModule {
public:
inline MarioModule(MarioActor* pActor) : mActor(pActor) {
}
virtual f32 getStickY() const;
virtual void addVelocity(const TVec3f&);
virtual void addVelocity(const TVec3f&, f32);
MarioActor* getActor() const {
return mActor;
}
Mario* getPlayer() const;
MarioAnimator* getAnimator() const;
TVec3f& getShadowPos() const;
const TVec3f& getGravityVec() const;
const TVec3f& getAirGravityVec() const;
TVec3f& getFrontVec() const;
bool isStatusActiveID(u32) const;
bool isStatusActiveS(MarioState*) const;
u16 getPlayerMode() const;
bool isPlayerModeBee() const;
bool isPlayerModeIce() const;
bool isPlayerModeTeresa() const;
bool isPlayerModeHopper() const;
bool isPlayerModeInvincible() const;
bool isPlayerModeFoo() const;
void changeAnimation(const char*, const char* = nullptr);
void changeAnimationNonStop(const char*);
void changeAnimationWithAttr(const char*, u32);
void stopAnimation(const char*, const char* = nullptr);
bool isDefaultAnimationRun(const char*) const;
void changeAnimationInterpoleFrame(u32);
bool isAnimationRun(const char*) const;
bool isAnimationTerminate(const char*) const;
bool isAnimationTerminateUpper(const char*) const;
const char* getAnimationStringPointer(const char*) const;
const char* getCurrentBckName() const;
void changeAnimationUpper(const char*, const char* = nullptr);
void changeAnimationUpperWeak(const char*, const char* = nullptr);
void stopAnimationUpper(const char*, const char* = nullptr);
void stopAnimationUpperForce();
f32 getAnimationFrame() const;
void changeAnimation(const char*, u32);
bool isAnimationRun(const char*, u32);
void stopAnimation(const char*, u32);
void setJointGlobalMtx(u16, MtxPtr);
void setYangleOffset(f32);
bool isStickOn() const;
bool isStickFull() const;
TVec3f& getWorldPadDir() const;
bool calcWorldPadDir(TVec3f*, f32, f32, bool);
void addVelocityAfter(const TVec3f&);
void clearVelocity();
TVec3f& getVelocity() const;
void addTrans(const TVec3f&, const char*);
f32 cutGravityElementFromJumpVec(bool);
f32 cutVecElementFromJumpVec(const TVec3f&);
TVec3f& getJumpVec() const;
void setJumpVec(const TVec3f&);
void playEffect(const char*);
void playEffectTrans(const char*, const TVec3f&);
void playEffectRT(const char*, const TVec3f&, const TVec3f&);
void playEffectRTZ(const char*, const TVec3f&, const TVec3f&);
void playEffectRTW(const char*, const TVec3f&, const TVec3f&);
void playEffectSRT(const char*, f32, const TVec3f&, const TVec3f&);
void stopEffect(const char*);
void stopEffectForce(const char*);
void playSound(const char*, s32 a2 = -1);
void stopSound(const char*, u32);
void startCamVib(u32);
TVec3f& getCamPos() const;
TVec3f& getCamDirX() const;
TVec3f& getCamDirY() const;
TVec3f& getCamDirZ() const;
void startPadVib(u32);
void startPadVib(const char*);
f32 getStickX() const;
f32 getStickP() const;
bool checkTrgA() const;
bool checkLvlA() const;
bool checkTrgZ() const;
bool checkLvlZ() const;
bool checkPreLvlZ() const;
bool checkSquat(bool);
TVec3f& getTrans() const;
const Triangle* getGroundPolygon() const;
bool isOnSlipGround() const;
bool isSlipFloorCode(s32) const;
bool isSlipPolygon(const Triangle*) const;
u32 getFloorCode() const;
f32 calcPolygonAngleD(const Triangle*) const;
f32 calcAngleD(const TVec3f&) const;
Triangle* getTmpPolygon() const;
bool sendPunch(HitSensor*, bool);
HitSensor* getSensor(const Triangle*) const;
f32 marioAcos(f32) const;
bool isInputDisable() const;
MarioActor* mActor; // 0x4
};
class MarioModuleTask {
public:
virtual void init() = 0;
virtual void start() = 0;
virtual void update() = 0;
virtual void calc() = 0;
virtual void end() = 0;
virtual bool exec() = 0;
virtual void draw() const = 0;
void* _4;
MarioModuleTask* mNext;
};