mirror of
https://github.com/PodeCaradox/GalaxyQuest-SteamFrame.git
synced 2026-10-18 19:01:14 +02:00
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>
131 lines
3.5 KiB
C++
131 lines
3.5 KiB
C++
#pragma once
|
|
|
|
#include <revolution/types.h>
|
|
|
|
class CodeTable;
|
|
class JMapInfoIter;
|
|
class Triangle;
|
|
|
|
enum CollisionFloorCode {
|
|
CollisionFloorCode_Normal,
|
|
CollisionFloorCode_Death,
|
|
CollisionFloorCode_Slip,
|
|
CollisionFloorCode_NoSlip,
|
|
CollisionFloorCode_DamageNormal,
|
|
CollisionFloorCode_Ice,
|
|
CollisionFloorCode_JumpLow,
|
|
CollisionFloorCode_JumpMiddle,
|
|
CollisionFloorCode_JumpHigh,
|
|
CollisionFloorCode_Slider,
|
|
CollisionFloorCode_DamageFire,
|
|
CollisionFloorCode_JumpNormal,
|
|
CollisionFloorCode_FireDance,
|
|
CollisionFloorCode_Sand,
|
|
CollisionFloorCode_Glass,
|
|
CollisionFloorCode_DamageElectric,
|
|
CollisionFloorCode_PullBack,
|
|
CollisionFloorCode_Sink,
|
|
CollisionFloorCode_SinkPoison,
|
|
CollisionFloorCode_Slide,
|
|
CollisionFloorCode_WaterBottomH,
|
|
CollisionFloorCode_WaterBottomM,
|
|
CollisionFloorCode_WaterBottomL,
|
|
CollisionFloorCode_Wet,
|
|
CollisionFloorCode_Needle,
|
|
CollisionFloorCode_SinkDeath,
|
|
CollisionFloorCode_Snow,
|
|
CollisionFloorCode_RailMove,
|
|
CollisionFloorCode_AreaMove,
|
|
CollisionFloorCode_Press,
|
|
CollisionFloorCode_NoStampSand,
|
|
CollisionFloorCode_SinkDeathMud,
|
|
CollisionFloorCode_Brake,
|
|
CollisionFloorCode_GlassIce,
|
|
CollisionFloorCode_JumpParasol,
|
|
|
|
CollisionFloorCode_End,
|
|
};
|
|
|
|
enum CollisionWallCode {
|
|
CollisionWallCode_Normal,
|
|
CollisionWallCode_NotWallJump,
|
|
CollisionWallCode_NotWallSlip,
|
|
CollisionWallCode_NotGrab,
|
|
CollisionWallCode_GhostThroughCode,
|
|
CollisionWallCode_NotSideStep,
|
|
CollisionWallCode_Rebound,
|
|
CollisionWallCode_Fur,
|
|
CollisionWallCode_NoAction,
|
|
|
|
CollisionWallCode_End,
|
|
};
|
|
|
|
enum CollisionSoundCode {
|
|
CollisionSoundCode_Null,
|
|
CollisionSoundCode_Soil,
|
|
CollisionSoundCode_Lawn,
|
|
CollisionSoundCode_Stone,
|
|
CollisionSoundCode_Marble,
|
|
CollisionSoundCode_WoodThick,
|
|
CollisionSoundCode_WoodThin,
|
|
CollisionSoundCode_Metal,
|
|
CollisionSoundCode_Snow,
|
|
CollisionSoundCode_Ice,
|
|
CollisionSoundCode_Shallow,
|
|
CollisionSoundCode_Sand,
|
|
CollisionSoundCode_Beach,
|
|
CollisionSoundCode_Carpet,
|
|
CollisionSoundCode_Mud,
|
|
CollisionSoundCode_Honey,
|
|
|
|
CollisionSoundCode_End,
|
|
};
|
|
|
|
enum CollisionCameraCode {
|
|
CollisionCameraCode_NoThrough,
|
|
CollisionCameraCode_Through,
|
|
|
|
CollisionCameraCode_End,
|
|
};
|
|
|
|
class CollisionCode {
|
|
public:
|
|
/// @brief Creates a new `CollisionCode`.
|
|
CollisionCode();
|
|
|
|
const char* getFloorCodeString(const Triangle& rTriangle);
|
|
const char* getWallCodeString(const Triangle& rTriangle);
|
|
const char* getSoundCodeString(const Triangle& rTriangle);
|
|
const char* getSoundCodeString(const JMapInfoIter& rIter);
|
|
u32 getCameraID(const Triangle& rTriangle);
|
|
u32 getCode(const JMapInfoIter& rIter, CodeTable* pCodeTable, const char* pName);
|
|
void createFloorTable();
|
|
void createWallTable();
|
|
void createSoundTable();
|
|
void createCameraTable();
|
|
u32 getFloorCode(const JMapInfoIter& rIter);
|
|
u32 getWallCode(const JMapInfoIter& rIter);
|
|
u32 getSoundCode(const JMapInfoIter& rIter);
|
|
u32 getCameraCode(const JMapInfoIter& rIter);
|
|
u32 getCameraID(const JMapInfoIter& rIter);
|
|
|
|
/* 0x00 */ CodeTable* mFloorTable;
|
|
/* 0x04 */ CodeTable* mWallTable;
|
|
/* 0x08 */ CodeTable* mSoundTable;
|
|
/* 0x0C */ CodeTable* mCameraTable;
|
|
};
|
|
|
|
class CodeTable {
|
|
public:
|
|
CodeTable(u32 numMax);
|
|
|
|
void add(const char* pName, u32 code);
|
|
const char* getString(u32 code);
|
|
|
|
/* 0x00 */ u32 mCodeNum;
|
|
/* 0x04 */ u32 mCodeNumMax;
|
|
/* 0x08 */ u32* mHashTable;
|
|
/* 0x0C */ u32* mCodeTable;
|
|
/* 0x10 */ const char** mNameTable;
|
|
};
|