Files
bigmak94andClaude Opus 5.5 bd9bded792 GalaxyQuest: Super Mario Galaxy in VR on Meta Quest 3
A native port built on the Petari decompilation (previous commit): an
HLE platform layer (OS, DVD, GX, audio, input, NAND) under the game's
own code, an OpenXR presentation (a diorama around the player, a giant
screen, the HUD and settings as compositor layers, SpaceWarp, dynamic
resolution), Touch Plus controls, the tools that convert your own game
files (tools/cook, which also takes the few pieces of data the game's
executable holds from your sys/main.dol), and the port's changes to the
decompilation (`git diff petari-base -- decomp`).  README.md explains
installing and building, docs/TECHNICAL.md how it works.

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

134 lines
6.4 KiB
C++

#pragma once
#include <JSystem/JGeometry.hpp>
#include <revolution.h>
class LayoutActor;
class LiveActor;
class StarPointerOnOffController;
namespace MR {
void initStarPointerGameScene();
void createStarPointerLayout();
void onStarPointerSceneOut();
void setStarPointerModeBase();
void setStarPointerCameraMtxAtGameScene();
void initStarPointerTarget(LiveActor*, f32, const TVec3f& rOffset = TVec3f(0.0f));
void initStarPointerTargetAtPos(LiveActor*, f32, const TVec3f*, const TVec3f&);
void initStarPointerTargetAtMtx(LiveActor*, f32, MtxPtr, const TVec3f&);
void initStarPointerTargetAtJoint(LiveActor*, const char*, f32, const TVec3f&);
void addStarPointerTargetCircle(LayoutActor*, const char*, f32, const TVec2f&, const char*);
bool isStarPointerValid(s32);
bool isStarPointerPointing(const LiveActor*, s32, bool, const char*);
bool tryStarPointerCheck(const LiveActor*, bool, const char*);
bool tryStarPointerCheckWithoutRumble(LiveActor*, bool);
bool isStarPointerPointingPane(const LayoutActor*, const char*, s32, bool, const char*);
bool isStarPointerPointingPaneForMeterLayout(const LayoutActor*, const char*, s32, bool, const char*);
bool isStarPointerPointingTarget(const LayoutActor*, const char*, s32, bool, const char*);
bool isStarPointerPointing1P(const LiveActor*, const char*, bool, bool);
bool isStarPointerPointing1PWithoutCheckZ(const LiveActor*, const char*, bool, bool);
bool isStarPointerPointing2P(const LiveActor*, const char*, bool, bool);
bool isStarPointerPointing2POnPressButton(const LiveActor*, const char*, bool, bool);
bool isStarPointerPointing2POnTriggerButton(const LiveActor*, const char*, bool, bool);
bool isStarPointerPointingFileSelect(const LiveActor*);
bool isStarPointerPointing1Por2P(const LiveActor*, const char*, bool, bool);
bool requestTicoSeedGuidanceForce();
bool requestPointerGuidanceNoInformation();
bool isExistStarPointerGuidance();
bool isExistStarPointerGuidanceFrame1P();
void activeStarPointerGuidance();
void deactiveStarPointerGuidance();
void tryShowTimeoutedStarPointerGuidance();
bool isExistStarPointerTarget(const LiveActor*);
void setStarPointerTargetRadius3d(LiveActor*, f32);
bool isStarPointerPointing(const TVec3f&, f32, s32, bool);
MtxPtr getStarPointerViewMtx();
Mtx44Ptr getStarPointerProjMtx();
f32 getStarPointerRadius(s32);
TVec2f* getStarPointerScreenPosition(s32);
TVec2f getStarPointerScreenPositionOrEdge(s32);
f32 getStarPointerScreenSpeed(s32);
bool isStarPointerInScreen(s32);
bool isStarPointerInScreenAnyPort(s32*);
s32* getStarPointerLastPointedPort(const LiveActor*);
TVec2f* getStarPointerScreenVelocity(s32);
void getStarPointerWorldVelocityDirection(TVec3f*, s32);
TVec3f* getStarPointerWorldPosUsingDepth(s32);
#ifdef TARGET_PC
// VR: the end of the pointing controller's laser in the world (the aim
// ray's first map surface, or open space as far past the player as the
// original aims star bits past its camera) and its distance along the
// ray. Returns false while the pointer does not aim into the diorama.
bool calcVrPointerAimEnd(TVec3f* pEnd, f32* pReach, s32 channel);
#endif
void calcStarPointerWorldPointingPos(TVec3f*, const TVec3f&, s32);
void calcStarPointerWorldPointingPosInsideEdge(TVec3f*, const TVec3f&, s32);
bool calcStarPointerPosOnPlane(TVec3f*, const TVec3f&, const TVec3f&, s32, bool);
bool calcStarPointerWorldVelocityDirectionOnPlane(TVec3f*, const TVec3f&, const TVec3f&, s32);
f32 calcPointRadius2D(const TVec3f&, f32);
bool calcStarPointerStrokeRotateMoment(TVec3f*, const TVec3f&, f32, s32);
bool calcStarPointerScreenDistanceToTarget(const LiveActor*, f32*, s32);
bool tryStartStarPointerCommandStream(const LiveActor*, const TVec3f*, s32, bool);
bool tryEndStarPointerCommandStream(const LiveActor*, s32);
bool isStarPointerCommandStream(const LiveActor*, s32);
void startStarPointerModeTitle(void*);
void startStarPointerModeFileSelect(void*);
void startStarPointerModeGame(void*);
void startStarPointerModeDemo(void*);
void startStarPointerModeDemoWithStarPointer(void*);
void startStarPointerModeDemoWithHandPointerFinger(void*);
void startStarPointerModeDemoMarioDeath(void*);
void startStarPointerModeMarioLauncher(void*);
void startStarPointerModeHomeButton(void*);
void startStarPointerModeChooseYesNo(void*);
void startStarPointerModePauseMenu(void*);
void startStarPointerModeScenarioSelectScene(void*);
void startStarPointerModeBlueStar(void*);
void startStarPointerModePowerStarGetDemo(void*);
void startStarPointerModeStarPieceTarget(void*);
void startStarPointerModeSphereSelectorFinger(void*);
void startStarPointerModeSphereSelectorOnReaction(void*);
void startStarPointerModeEnding(void*);
void startStarPointerModeCommandStream(void*);
void startStarPointerMode1PInvalid2PValid(void*);
void endStarPointerMode(void*);
void requestStarPointerModeErrorWindow(void*);
void requestStarPointerModeSaveLoad(void*);
void requestStarPointerModePictureBook(void*);
void requestStarPointerModePauseMenu(void*);
void requestStarPointerModeBlueStarReady(void*);
void requestStarPointerModeBigBubble(void*, const TVec3f&);
bool isStarPointerModeBlueStarReady();
#ifdef TARGET_PC
s32 getStarPointerModeForPort();
#endif
bool isStarPointerModeStarPieceTarget();
bool isStarPointerModeMarioLauncher();
bool isStarPointerModeHomeButton();
bool isStarPointerModeErrorWindow();
void enableStarPointerShootStarPiece();
void disableStarPointerShootStarPiece();
bool isEnableStarPointerShootStarPiece(s32);
bool isStarPointer2PTransparencyMode();
bool isStarPointer1PInvalid2PValidMode();
void setStarPointerDrawSyncToken();
bool requestBlueStarGuidance();
bool requestTicoSeedGuidance(s32);
bool requestTicoSeedGuidance();
bool requestBigBubbleGuidance();
bool requestMarioLauncherGuidance();
bool requestFileSelectGuidance();
bool requestFileSelectCopyGuidance();
bool requestStarPieceLectureGuidance();
/*
inline void initStarPointerTarget(LiveActor* pActor, f32 radius) {
TVec3f zeroOffset;
zeroOffset.x = 0.0f;
zeroOffset.y = 0.0f;
zeroOffset.z = 0.0f;
initStarPointerTarget(pActor, radius, zeroOffset);
}
*/
}; // namespace MR