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

86 lines
2.5 KiB
C++

#pragma once
#include "Game/Camera/CameraMan.hpp"
#include "Game/Camera/CameraTargetArg.hpp"
class Camera;
class CameraHolder;
class CameraParamChunk;
class CameraParamChunkEvent;
class CameraParamChunkHolder;
#define NR_FIFO_ITEMS 2
class CameraManEvent : public CameraMan {
public:
enum EPriority {
};
class ChunkFIFOItem {
public:
ChunkFIFOItem();
/* 0x00 */ CameraParamChunkEvent* mChunk;
/* 0x04 */ CameraTargetArg mTargetArg;
/* 0x14 */ u32 mFrame;
};
class ChunkFIFOItemPair {
public:
inline ChunkFIFOItemPair() {
}
/* 0x00 */ ChunkFIFOItem mFirst;
/* 0x18 */ ChunkFIFOItem mSecond;
};
CameraManEvent(CameraHolder*, CameraParamChunkHolder*, const char*);
virtual ~CameraManEvent();
virtual void init(const JMapInfoIter&);
virtual void calc();
virtual void notifyActivate();
virtual void notifyDeactivate();
virtual bool isInterpolationOff() const;
virtual bool isCollisionOff() const;
virtual bool isZeroFrameMoveOff() const;
virtual bool isCorrectingErpPositionOff() const;
void start(s32, const char*, const CameraTargetArg&, s32);
void end(s32, const char*, s32);
bool isEventActive(s32, const char*) const;
bool isActive() const;
bool doesNextChunkHaveInterpolation() const;
u32 getAnimCameraFrame(s32, const char*) const;
void pauseOnAnimCamera(s32, const char*);
void pauseOffAnimCamera(s32, const char*);
void updateChunkFIFO();
void applyChunk();
void checkReset(ChunkFIFOItem*);
void changeCamera();
void setExtraParam();
void setVPanParam();
void resetCameraIfRequested();
void setSafePose();
CameraParamChunkEvent* findChunk(s32, const char*) const NO_INLINE;
void requestChunk(CameraParamChunkEvent*, EPriority, const CameraTargetArg&, s32);
bool cleanChunkFIFO(CameraParamChunk*);
bool isChunkFIFOEmpty() const;
void sendStartInterpolateFrame(CameraParamChunkEvent*, s32);
s32 getInterpolateFrame(CameraParamChunkEvent*, s32) const;
void sendFinishInterpolateFrame(CameraParamChunkEvent*, s32);
s32 searchPriority(CameraParamChunk*) const;
bool isInFIFO(CameraParamChunk*) const;
bool isAnimCameraEnd(s32, const char*) const;
/* 0x48 */ CameraHolder* mHolder;
/* 0x4C */ CameraParamChunkHolder* mChunkHolder;
/* 0x50 */ Camera* mCamera;
/* 0x54 */ ChunkFIFOItemPair mItems[NR_FIFO_ITEMS];
/* 0xB4 */ CameraParamChunkEvent* mChunk;
/* 0xB8 */ u32 _B8;
/* 0xBC */ bool mRequestReset;
};