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

71 lines
1.9 KiB
C++

#pragma once
#include "Game/LiveActor/LiveActor.hpp"
#include <JSystem/JGeometry.hpp>
typedef void (*PosAttrFunc)(f32, f32, f32);
typedef void (*TexAttrFunc)(f32, f32);
class ElectricRailMovingPoint : public LiveActor {
public:
ElectricRailMovingPoint(const char* pName = "\x88\xda\x93\xae\x93\x64\x8c\x82\x83\x8c\x81\x5b\x83\x8b\x93\x5f");
virtual ~ElectricRailMovingPoint();
virtual void init(const JMapInfoIter&);
virtual void attackSensor(HitSensor*, HitSensor*);
u8 _8C;
u8 _8D;
};
class ElectricRailMoving : public LiveActor {
public:
ElectricRailMoving(const char*);
virtual ~ElectricRailMoving();
virtual void init(const JMapInfoIter&);
virtual void draw() const;
virtual void attackSensor(HitSensor*, HitSensor*);
void disappear();
bool isTouchRail(const HitSensor*, TVec3f*, TVec3f*) const;
void initMapToolInfo(const JMapInfoIter&);
void initSensor();
void initRail(const JMapInfoIter&);
void initPoints();
void initDisplayList();
void drawRailGX(f32) const;
void drawPlane(f32, f32, f32, f32) const;
void drawPlaneGX(f32, f32, f32, f32) const;
void setVertexAttribute(int, int, f32, f32, f32, f32, PosAttrFunc, TexAttrFunc) const;
void updateHitSensorPos();
bool updatePointPos();
void updatePointPosAndModel();
bool isValidCoord(f32) const;
f32 getRepeatedCoord(f32) const;
void calcPointPos(TVec3f*, f32) const;
void move();
void exeDisappear();
void exeDisappeared();
void exeWait();
/* 0x8C */ s32 mSegmentNum;
/* 0x90 */ f32 mMovementSpeed;
/* 0x94 */ f32 mSegmentLength;
/* 0x98 */ s32 mStackHeight;
TPos3f _9C;
u8 _CC;
u8 _CD;
u8 _CE;
u8 _CF;
/* 0xD0 */ TVec3f* mSensorOffsets;
/* 0xD4 */ ElectricRailMovingPoint* mMovingPoints;
s32 _D8;
void* _DC;
u32 _E0;
s32 _E4;
TVec3f* _E8;
f32 _EC;
f32 _F0;
};