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

134 lines
6.5 KiB
C++

#pragma once
#include "Game/Util/JMapInfo.hpp"
#include <JSystem/JGeometry.hpp>
#include <revolution.h>
namespace MR {
bool isValidInfo(const JMapInfoIter& rIter);
bool isObjectName(const JMapInfoIter& rIter, const char* pName);
bool getJMapInfoArgNoInit(const JMapInfoIter& rIter, const char* pFieldName, s32*);
bool getJMapInfoArgNoInit(const JMapInfoIter& rIter, const char* pFieldName, f32*);
bool getJMapInfoArgNoInit(const JMapInfoIter& rIter, const char* pFieldName, bool*);
bool getJMapInfoTrans(const JMapInfoIter& rIter, TVec3f*);
bool getJMapInfoRotate(const JMapInfoIter& rIter, TVec3f*);
bool getJMapInfoMatrixFromRT(const JMapInfoIter& rIter, TPos3f*);
bool getJMapInfoArg0WithInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg0WithInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg0WithInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg1WithInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg1WithInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg2WithInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg2WithInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg3WithInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg3WithInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg4WithInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg7WithInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg0NoInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg0NoInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg0NoInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg1NoInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg1NoInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg1NoInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg2NoInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg2NoInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg2NoInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg3NoInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg3NoInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg3NoInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg4NoInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg4NoInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg4NoInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg5NoInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg5NoInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg5NoInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg6NoInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg6NoInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg6NoInit(const JMapInfoIter& rIter, bool*);
bool getJMapInfoArg7NoInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg7NoInit(const JMapInfoIter& rIter, f32*);
bool getJMapInfoArg7NoInit(const JMapInfoIter& rIter, bool*);
bool isEqualObjectName(const JMapInfoIter& rIter, const char*);
s32 getDemoGroupID(const JMapInfoIter& rIter);
s32 getDemoGroupLinkID(const JMapInfoIter& rIter);
bool getJMapInfoRailArg(const JMapInfoIter& rIter, const char*, s32*);
bool getJMapInfoRailArg0NoInit(const JMapInfoIter& rIter, s32*);
bool getRailId(const JMapInfoIter& rIter, s32*);
bool getObjectName(const char** pDest, const JMapInfoIter& rIter);
bool isExistJMapArg(const JMapInfoIter& rIter);
bool getJMapInfoShapeIdWithInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoTransLocal(const JMapInfoIter& rIter, TVec3f*);
bool getJMapInfoRotateLocal(const JMapInfoIter& rIter, TVec3f*);
bool getJMapInfoScale(const JMapInfoIter& rIter, TVec3f*);
bool getJMapInfoV3f(const JMapInfoIter& rIter, const char*, TVec3f*);
bool getJMapInfoArg1WithInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg2WithInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg3WithInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg4WithInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg5WithInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg6WithInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoArg7WithInit(const JMapInfoIter& rIter, s32*);
bool getJMapInfoFollowID(const JMapInfoIter& rIter, s32*);
bool getJMapInfoGroupID(const JMapInfoIter& rIter, s32*);
bool getJMapInfoClippingGroupID(const JMapInfoIter& rIter, s32*) NO_INLINE;
bool getJMapInfoDemoGroupID(const JMapInfoIter& rIter, s32*);
bool getJMapInfoLinkID(const JMapInfoIter& rIter, s32*);
bool isConnectedWithRail(const JMapInfoIter& rIter);
bool isExistStageSwitchA(const JMapInfoIter& rIter);
bool isExistStageSwitchB(const JMapInfoIter& rIter);
bool isExistStageSwitchAppear(const JMapInfoIter& rIter);
bool isExistStageSwitchDead(const JMapInfoIter& rIter);
bool isExistStageSwitchSleep(const JMapInfoIter& rIter);
bool getJMapInfoCameraSetID(const JMapInfoIter& rIter, s32*);
bool getJMapInfoViewGroupID(const JMapInfoIter& rIter, s32*);
bool getJMapInfoMessageID(const JMapInfoIter& rIter, s32*);
s32 getDemoCastID(const JMapInfoIter& rIter);
const char* getDemoName(const JMapInfoIter& rIter);
const char* getDemoSheetName(const JMapInfoIter& rIter);
bool getNextLinkRailID(const JMapInfoIter& rIter, s32*);
bool isEqualRailUsage(const JMapInfoIter& rIter, const char*);
void getRailPointPos0(const JMapInfoIter& rIter, TVec3f*);
void getRailPointPos1(const JMapInfoIter& rIter, TVec3f*);
void getRailPointPos2(const JMapInfoIter& rIter, TVec3f*);
bool isLoopRailPathIter(const JMapInfoIter& rIter);
template < typename T >
inline bool getValue(const JMapInfoIter& rIter, const char* pName, T* pOut) {
return rIter.getValue< T >(pName, pOut);
}
inline s32 getMessageID(const JMapInfoIter& rIter) {
s32 msgId;
getJMapInfoMessageID(rIter, &msgId);
return msgId;
}
inline bool checkJMapDataEntries(const JMapInfoIter& rIter) {
bool flag;
bool ret;
ret = false;
flag = false;
if (rIter.mInfo != nullptr && rIter.mIndex >= 0) {
flag = true;
}
if (flag) {
s32 numEntries;
if (rIter.mInfo->mData != nullptr) {
numEntries = rIter.mInfo->mData->mNumEntries;
} else {
numEntries = 0;
}
if (rIter.mIndex < numEntries) {
ret = true;
}
}
return ret;
}
}; // namespace MR