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

204 lines
10 KiB
C++

#pragma once
#include <JSystem/JGeometry/TVec.hpp>
#include <revolution/gx.h>
#include <revolution/wpad.h>
class BenefitItemLifeUp;
class BenefitItemObj;
class BenefitItemOneUp;
class JMapInfo;
class JMapInfoIter;
class LayoutActor;
class LiveActor;
class ModelObj;
class NameObj;
class NameObjAdaptor;
class NameObjGroup;
class ResTIMG;
class ResourceHolder;
class StageSwitchCtrl;
namespace MR {
class FunctorBase;
}; // namespace MR
namespace MR {
bool isJudgedToClipFrustum(const TVec3f&, f32);
bool isJudgedToClipFrustum100m(const TVec3f&, f32);
bool isJudgedToClipFrustum300m(const TVec3f&, f32);
bool isJudgedToNearClip(const TVec3f&, f32);
bool isInWater(const TVec3f&);
bool isInWater(const LiveActor*, const TVec3f&);
bool isInDeath(const TVec3f&);
bool isInDarkMatter(const TVec3f&);
void connectToScene(LiveActor*, int, int, int, int);
void connectToScene(NameObj*, int, int, int, int);
void connectToSceneCollisionMapObj(LiveActor*);
void connectToSceneCollisionMapObjMovementCalcAnim(LiveActor*);
void connectToSceneCollisionMapObjWeakLight(LiveActor*);
void connectToSceneCollisionMapObjStrongLight(LiveActor*);
void connectToSceneCollisionEnemy(LiveActor*);
void connectToSceneCollisionEnemyMovement(NameObj*);
void connectToSceneCollisionEnemyStrongLight(LiveActor*);
void connectToSceneCollisionEnemyNoShadowedMapObjStrongLight(LiveActor*);
void connectToSceneNpc(LiveActor*);
void connectToSceneNpcMovement(LiveActor*);
void connectToSceneRide(LiveActor*);
void connectToSceneEnemy(LiveActor*);
void connectToSceneEnemyMovement(NameObj*);
void connectToSceneMapObj(LiveActor*);
void connectToSceneMapObjMovement(NameObj*);
void connectToSceneMapObjMovementCalcAnim(NameObj*);
void connectToSceneMapObjNoMovement(LiveActor*);
void connectToSceneMapObjNoCalcAnim(LiveActor*);
void connectToSceneMapObjNoCalcAnimStrongLight(LiveActor*);
void connectToSceneMapObjDecoration(LiveActor*);
void connectToSceneMapObjDecorationStrongLight(LiveActor*);
void connectToSceneMapObjDecorationMovement(NameObj*);
void connectToSceneMapObjStrongLight(LiveActor*);
void connectToSceneMapParts(LiveActor*);
void connectToScenePlanet(LiveActor*);
void connectToSceneEnvironment(LiveActor*);
void connectToSceneEnvironmentStrongLight(LiveActor*);
void connectToClippedMapParts(LiveActor*);
void connectToSceneEnemyDecoration(LiveActor*);
void connectToSceneEnemyDecorationMovement(NameObj*);
void connectToSceneEnemyDecorationMovementCalcAnim(NameObj*);
void connectToSceneItem(LiveActor*);
void connectToSceneItemStrongLight(LiveActor*);
void connectToSceneIndirectEnemy(LiveActor*);
void connectToSceneIndirectNpc(LiveActor*);
void connectToSceneIndirectMapObj(LiveActor*);
void connectToSceneIndirectMapObjStrongLight(LiveActor*);
void connectToSceneScreenEffectMovement(NameObj*);
void connectToSceneAreaObj(NameObj*);
void connectToScene3DModelFor2D(LiveActor*);
void connectToSceneLayout(NameObj*);
void connectToSceneLayoutMovementCalcAnim(NameObj*);
void connectToSceneLayoutDecoration(NameObj*);
void connectToSceneTalkLayout(NameObj*);
void connectToSceneTalkLayoutNoMovement(NameObj*);
void connectToSceneWipeLayout(NameObj*);
void connectToSceneLayoutOnPause(NameObj*);
void connectToSceneLayoutOnPauseNoMovement(NameObj*);
void connectToSceneLayoutOnPauseMovementCalcAnim(NameObj*);
void connectToSceneLayoutMovement(NameObj*);
void connectToSceneMovie(NameObj*);
void connectToSceneMirrorMapObj(LiveActor*);
void connectToSceneMirrorMapObjDecoration(LiveActor*);
void connectToSceneMirrorMapObjNoMovement(LiveActor*);
void connectToSceneCamera(NameObj*);
void connectToSceneNoShadowedMapObj(LiveActor*);
void connectToSceneNoShadowedMapObjStrongLight(LiveActor*);
void connectToSceneNoSilhouettedMapObj(LiveActor*);
void connectToSceneNoSilhouettedMapObjStrongLight(LiveActor*);
void connectToSceneNoSilhouettedMapObjWeakLightNoMovement(LiveActor*);
void connectToSceneSky(LiveActor*);
void connectToSceneAir(LiveActor*);
void connectToSceneSun(LiveActor*);
void connectToSceneCrystal(LiveActor*);
void connectToSceneNormalMapObj(LiveActor*);
void requestMovementOn(NameObj*);
void requestMovementOn(LiveActor*);
void requestMovementOn(LayoutActor*);
void requestMovementOff(NameObj*);
NameObjGroup* joinToNameObjGroup(NameObj*, const char*);
NameObjGroup* joinToMovementOnOffGroup(const char*, NameObj*, u32);
void onMovementOnOffGroup(const char*);
void registerPreDrawFunction(const MR::FunctorBase& functor, int drawType);
NameObjAdaptor* createDrawAdaptor(const char*, const MR::FunctorBase&);
NameObjAdaptor* createAdaptorAndConnectToDrawBloomModel(const char*, const MR::FunctorBase&);
void listenNameObjStageSwitchOnAppear(const NameObj*, const StageSwitchCtrl*, const MR::FunctorBase&);
void listenNameObjStageSwitchOnOffAppear(const NameObj*, const StageSwitchCtrl*, const MR::FunctorBase&, const MR::FunctorBase&);
void listenNameObjStageSwitchOnA(const NameObj*, const StageSwitchCtrl*, const MR::FunctorBase&);
void listenNameObjStageSwitchOnOffA(const NameObj*, const StageSwitchCtrl*, const MR::FunctorBase&, const MR::FunctorBase&);
void listenNameObjStageSwitchOnB(const NameObj*, const StageSwitchCtrl*, const MR::FunctorBase&);
void listenNameObjStageSwitchOffB(const NameObj*, const StageSwitchCtrl*, const MR::FunctorBase&);
void listenNameObjStageSwitchOnOffB(const NameObj*, const StageSwitchCtrl*, const MR::FunctorBase&, const MR::FunctorBase&);
ResourceHolder* createAndAddResourceHolder(const char*);
void* loadResourceFromArc(const char*, const char*);
bool isExistResourceInArc(const char*, const char*);
const ResTIMG* loadTexFromArc(const char*, const char*);
const ResTIMG* loadTexFromArc(const char*);
bool isExistFileInArc(const ResourceHolder*, const char*, ...);
JMapInfo* createCsvParser(const ResourceHolder*, const char*, ...);
JMapInfo* createCsvParser(const char*, const char*, ...);
JMapInfo* tryCreateCsvParser(const LiveActor*, const char*, ...);
JMapInfo* tryCreateCsvParser(const ResourceHolder*, const char*, ...);
s32 getCsvDataElementNum(const JMapInfo*);
void getCsvDataStr(const char**, const JMapInfo*, const char*, s32);
void getCsvDataStrOrNULL(const char**, const JMapInfo*, const char*, s32);
void getCsvDataS32(s32*, const JMapInfo*, const char*, s32);
void getCsvDataU8(u8*, const JMapInfo*, const char*, s32) NO_INLINE;
void getCsvDataF32(f32*, const JMapInfo*, const char*, s32);
void getCsvDataBool(bool*, const JMapInfo*, const char*, s32);
void getCsvDataVec(Vec*, const JMapInfo*, const char*, s32);
void getCsvDataColor(GXColor*, const JMapInfo*, const char*, s32);
bool isStageStateScenarioOpeningCamera();
bool isStageStatePowerStarAppeared();
void declarePowerStar(const NameObj*);
void declarePowerStar(const NameObj*, s32);
void declarePowerStarCoin100();
void appearPowerStarContinueCurrentDemo(const NameObj*, const TVec3f&);
void appearPowerStarWithoutDemo(const NameObj*);
void requestAppearPowerStar(const NameObj*);
void requestAppearPowerStar(const NameObj*, const TVec3f&);
void requestAppearPowerStar(const NameObj*, s32, const TVec3f&);
void requestAppearPowerStar(const NameObj*, const LiveActor*, f32);
void requestAppearPowerStarCoin100();
bool isEndPowerStarAppearDemo(const NameObj*);
ModelObj* createPowerStarDemoModel(const NameObj*, const char*, MtxPtr);
void declareCoin(const NameObj*, s32);
s32 getDeclareRemnantCoinCount(const NameObj*);
void hopCoin(const NameObj*, const TVec3f&, const TVec3f&);
void appearCoinFix(const NameObj*, const TVec3f&, s32);
void appearCoinPop(const NameObj*, const TVec3f&, s32);
void appearCoinPopToDirection(const NameObj*, const TVec3f&, const TVec3f&, s32);
void appearCoinToVelocity(const NameObj*, const TVec3f&, const TVec3f&, s32);
void appearCoinCircle(const NameObj*, const TVec3f&, s32);
void declareStarPiece(const NameObj*, s32);
s32 getDeclareRemnantStarPieceCount(const NameObj*);
s32 getDeclareRemnantStarPieceCountNotExist(const NameObj*);
void declareStarPieceReceiver(const NameObj*, s32);
void clearGotCountStarPieceReceiver(const NameObj*);
void hopStarPiece(const NameObj*, const TVec3f&, const TVec3f&);
bool appearStarPiece(const NameObj*, const TVec3f&, s32, f32, f32, bool);
bool appearStarPieceToDirection(const NameObj*, const TVec3f&, const TVec3f&, s32, f32, f32, bool);
void initStarPieceGetCSSound();
BenefitItemOneUp* createKinokoOneUp();
void appearKinokoOneUpPop(BenefitItemObj*, MtxPtr, f32);
BenefitItemLifeUp* createKinokoSuper();
void appearKinokoSuper(BenefitItemLifeUp*, MtxPtr, f32);
void stopScene(s32);
void stopSceneForDefaultHit(s32);
bool tryRumblePad(const void*, const char*, s32);
bool tryRumblePadVeryStrongLong(const void*, s32);
bool tryRumblePadVeryStrong(const void*, s32);
bool tryRumblePadStrong(const void*, s32);
bool tryRumblePadMiddle(const void*, s32);
bool tryRumblePadWeak(const void*, s32);
bool tryRumblePadVeryWeak(const void*, s32);
bool tryRumbleDefaultHit(const void*, s32);
void shakeCameraVeryStrong();
void shakeCameraStrong();
void shakeCameraNormalStrong();
void shakeCameraNormal();
void shakeCameraNormalWeak();
void shakeCameraWeak();
void shakeCameraVeryWeak();
void shakeCameraInfinity(NameObj*, f32, f32);
void stopShakingCamera(NameObj*);
bool isName(const NameObj*, const char*);
bool isSame(const NameObj*, const NameObj*);
bool tryRegisterNamePosLinkObj(const NameObj*, const JMapInfoIter&);
bool findNamePos(const char*, MtxPtr);
bool findNamePos(const char*, TVec3f*, TVec3f*);
void findNamePosOnGround(const char*, MtxPtr);
bool tryFindNamePos(const char*, MtxPtr);
bool tryFindNamePos(const char*, TVec3f*, TVec3f*);
void findLinkNamePos(const NameObj*, const char*, MtxPtr);
bool tryFindLinkNamePos(const NameObj*, const char*, MtxPtr);
bool tryFindLinkNamePos(const NameObj*, const char*, TVec3f*, TVec3f*);
}; // namespace MR