mirror of
https://github.com/PodeCaradox/GalaxyQuest-SteamFrame.git
synced 2026-10-19 02:01:17 +02:00
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>
1118 lines
31 KiB
C++
1118 lines
31 KiB
C++
#pragma once
|
|
|
|
#include "Game/Player/MarioModule.hpp"
|
|
#include "Game/Util/TriangleFilter.hpp"
|
|
#include <JSystem/JGeometry/TMatrix.hpp>
|
|
|
|
class AreaObj;
|
|
class CubeCameraArea;
|
|
class FloorCode;
|
|
class GravityInfo;
|
|
class HashSortTable;
|
|
class HitInfo;
|
|
class HitSensor;
|
|
class MarioAbyssDamage;
|
|
class MarioActor;
|
|
class MarioBlown;
|
|
class MarioBump;
|
|
class MarioBury;
|
|
class MarioClimb;
|
|
class MarioCrush;
|
|
class MarioDamage;
|
|
class MarioDarkDamage;
|
|
class MarioFaint;
|
|
class MarioFireDamage;
|
|
class MarioFireDance;
|
|
class MarioFireRun;
|
|
class MarioFlip;
|
|
class MarioFlow;
|
|
class MarioFoo;
|
|
class MarioFpView;
|
|
class MarioFreeze;
|
|
class MarioFrontStep;
|
|
class MarioHang;
|
|
class MarioMagic;
|
|
class MarioModuleTask;
|
|
class MarioMove;
|
|
class MarioParalyze;
|
|
class MarioRabbit;
|
|
class MarioRecovery;
|
|
class MarioSideStep;
|
|
class MarioSkate;
|
|
class MarioSlider;
|
|
class MarioState;
|
|
class MarioStep;
|
|
class MarioStick;
|
|
class MarioStun;
|
|
class MarioSukekiyo;
|
|
class MarioSwim;
|
|
class MarioTalk;
|
|
class MarioTeresa;
|
|
class MarioWait;
|
|
class MarioWall;
|
|
class MarioWarp;
|
|
class Triangle;
|
|
struct SoundList;
|
|
|
|
class Mario : public MarioModule {
|
|
public:
|
|
enum SeVersion {
|
|
SeVersion_NORMAL = 0,
|
|
SeVersion_DARK = 1,
|
|
};
|
|
|
|
typedef bool (Mario::*Task)(u32);
|
|
Mario(MarioActor*);
|
|
|
|
virtual bool postureCtrl(MtxPtr);
|
|
|
|
void initMember();
|
|
|
|
void updateAndClearStrideParameter();
|
|
void checkKeyLock();
|
|
void updateTimers();
|
|
void updateMorphResetTimer();
|
|
void doExtraServices();
|
|
bool isEnableCheckGround() NO_INLINE;
|
|
void setGroundNorm(const TVec3f&);
|
|
void checkForceGrounding();
|
|
void updateGroundInfo();
|
|
void fixHeadFrontVecByGravity();
|
|
bool isNonFixHeadVec() const;
|
|
void createMtxDir(MtxPtr, const TVec3f&, const TVec3f&, const TVec3f&);
|
|
void createDirectionMtx(MtxPtr);
|
|
bool createCorrectionMtx(MtxPtr, TVec3f*);
|
|
void createAngleMtx(MtxPtr, bool);
|
|
void slopeTiltHead(TVec3f*);
|
|
void fixFrontVecByGravity();
|
|
void fixFrontVecFromUpSide();
|
|
void fixSideVecFromFrontUp();
|
|
void setSideVec(const TVec3f&);
|
|
void setHeadVec(const TVec3f&);
|
|
void setFrontVec(const TVec3f&);
|
|
void setFrontVecKeepUp(const TVec3f&, f32);
|
|
void setFrontVecKeepUp(const TVec3f&, u32);
|
|
void setFrontVecKeepUp(const TVec3f&);
|
|
void setFrontVecKeepUpAngle(const TVec3f&, f32);
|
|
void setFrontVecKeepSide(const TVec3f&);
|
|
void setHeadAndFrontVecFromRotate(const TVec3f&);
|
|
void forceSetHeadVecKeepSide(const TVec3f&);
|
|
void setGravityVec(const TVec3f&);
|
|
void draw() const;
|
|
void addTrans(const TVec3f&, const char*);
|
|
void setTrans(const TVec3f&, const char*);
|
|
bool isEnableRush() const;
|
|
bool isForceStopRush() const;
|
|
bool isInvincible() const;
|
|
bool isCeiling() const;
|
|
void inputStick();
|
|
void updateSoundCode();
|
|
const TVec3f& getShadowNorm() const;
|
|
const TVec3f& getAirGravityVec() const;
|
|
const TVec3f getAirFrontVec() const;
|
|
const TVec3f* getGravityVec() const;
|
|
void initAfterConst();
|
|
void writeBackPhyisicalVector();
|
|
void update();
|
|
void updateLookOfs();
|
|
void actionMain();
|
|
void touchWater();
|
|
|
|
bool isBlendWaitGround() const;
|
|
void checkSpecialWaitAnimation();
|
|
void resetSleepTimer();
|
|
|
|
void connectToClimb();
|
|
|
|
bool isIgnoreTriangle(const Triangle*);
|
|
void checkBaseTransBall();
|
|
void createAtField(bool, f32);
|
|
void doSwimmingHitCheck(const HitInfo*, u32);
|
|
void doSpinPunchAroundPolygons();
|
|
void checkMap();
|
|
f32 calcDistToCeil(bool);
|
|
f32 calcDistToCeilOnPress();
|
|
f32 calcDistToCeilHead();
|
|
void fixTransBetweenWall(const TVec3f&, const TVec3f&);
|
|
f32 calcDistWidth();
|
|
void updateCameraPolygon();
|
|
void setCameraPolygon(const Triangle*);
|
|
void checkAllWall(const TVec3f&, f32);
|
|
void calcFrontFloor();
|
|
const TVec3f& getWallNorm() const;
|
|
const TVec3f& getSideWallNorm() const;
|
|
const TVec3f& getFrontWallNorm() const;
|
|
const TVec3f& getBackWallNorm() const;
|
|
const TVec3f& getWallPos() const;
|
|
const Triangle* getWallPolygon() const;
|
|
const Triangle* getGroundPolygon() const;
|
|
void updateFloorCode();
|
|
void updateWallFloorCode();
|
|
void saveLastSafetyTrans();
|
|
void setNotSafetyTimer();
|
|
const TVec3f* getLastSafetyTrans(TVec3f*) const;
|
|
bool checkCurrentFloorCodeSevere(u32) const;
|
|
bool isCurrentFloorSink() const;
|
|
bool isCurrentFloorSand() const;
|
|
bool isCurrentShadowFloorDangerAction() const;
|
|
void checkBaseTransPoint();
|
|
void checkHeadPoint();
|
|
void calcShadowPos();
|
|
bool updateBinderInfo();
|
|
bool isThroughWall(const Triangle*) const;
|
|
bool checkGround();
|
|
CubeCameraArea* getCameraCubeCode() const;
|
|
void updateCubeCode();
|
|
|
|
bool isDamaging() const;
|
|
bool damageLarge(const TVec3f&);
|
|
void decDamageAfterTimer();
|
|
bool checkDamage();
|
|
u16 getDamageAfterTimer() const;
|
|
bool damageFloorCheck();
|
|
bool damageWallCheck();
|
|
bool damagePolygonCheck(const Triangle*);
|
|
bool flipLarge(const TVec3f&);
|
|
bool isEnableAddDamage() const;
|
|
bool damage(const TVec3f&);
|
|
bool doAbyssDamage();
|
|
void connectToFireRun();
|
|
bool doFireDanceWithInitialDamage(u8);
|
|
bool doFireObjHitWithInitialDamage();
|
|
bool doNeedleWithInitialDamage(u8);
|
|
bool doNeedleWithInitialDamage(const Triangle*);
|
|
bool doNeedle(const Triangle*);
|
|
bool doFireDance();
|
|
void checkKarikariDamage();
|
|
bool doDarkDamage();
|
|
bool doParalyze();
|
|
bool doFreeze();
|
|
bool requestCrush();
|
|
bool tryCrush();
|
|
|
|
bool doFlipWeak(const TVec3f&);
|
|
bool faint(const TVec3f&);
|
|
|
|
bool doFlipJump(const TVec3f&);
|
|
bool doFlipBackRoll(const TVec3f&);
|
|
bool doFlipLarge(const TVec3f&);
|
|
bool doFlipRot(const TVec3f&);
|
|
|
|
bool doFrontStep();
|
|
|
|
void beeMarioOnGround();
|
|
bool beeMarioOnAir();
|
|
|
|
bool blown(const TVec3f&);
|
|
|
|
bool taskOnEffectCheck(u32);
|
|
|
|
bool doFlow();
|
|
|
|
void tryStartFoo();
|
|
|
|
bool isRising() const;
|
|
void checkWallRiseAndSlipFront();
|
|
void tryJump();
|
|
void tryTurnJump();
|
|
void trySquatJump();
|
|
void tryBackJump();
|
|
void tryTornadoJump();
|
|
void startTornadoCentering(HitSensor*);
|
|
bool taskOnTornadoCentering(u32);
|
|
void trySpinJump(u8);
|
|
void tryForceJumpDelay(const TVec3f&);
|
|
void tryFreeJumpDelay(const TVec3f&);
|
|
void tryForceJump(const TVec3f&, bool);
|
|
void tryForceFreeJump(const TVec3f&);
|
|
void tryForcePowerJump(const TVec3f&, bool);
|
|
void tryFreeJump(const TVec3f&, bool);
|
|
void tryWallJump(const TVec3f&, bool);
|
|
void tryStickJump(const TVec3f&);
|
|
void trySlipUpJump();
|
|
void tryHangSlipUp();
|
|
void tryDrop();
|
|
bool isDigitalJump() const NO_INLINE;
|
|
void initActiveJumpVec();
|
|
void initJumpParam();
|
|
bool isEnableFutureJump() const;
|
|
void procJump(bool);
|
|
void checkWallRising() NO_INLINE;
|
|
void checkWallJumpHit();
|
|
void decideSlipUp();
|
|
void moveWallSlide(f32);
|
|
bool jumpToHipDrop();
|
|
void procHipDrop();
|
|
void doAirWalk();
|
|
void stopJump();
|
|
void cancelTornadoJump();
|
|
void setRocketBooster(const TVec3f&, f32, u16);
|
|
void procRocketBooster();
|
|
bool isSoftLandingFloor() const;
|
|
void checkAndTryForceJump();
|
|
void doLanding();
|
|
void startSlidingTask(u32, f32, u16);
|
|
bool taskOnSlide(u32);
|
|
bool taskOnWallRising(u32);
|
|
void incAirWalkTimer();
|
|
|
|
void mainMove();
|
|
bool isEnableTurn();
|
|
void recordTurnSlipAngle();
|
|
f32 decideInertia(f32);
|
|
f32 decideInertiaOnIce(f32);
|
|
f32 decideInertiaOnSlip(f32);
|
|
void calcShadowDir(const TVec3f&, TVec3f*);
|
|
bool retainMoveDir(f32, f32, TVec3f*);
|
|
void calcMoveDir(f32, f32, TVec3f*, bool);
|
|
bool checkLockOnHoming();
|
|
void doLockOnHoming();
|
|
void fixPositionInTower();
|
|
|
|
void check2DMode();
|
|
void calcMoveDir2D(f32, f32, TVec3f*);
|
|
void calcShadowDir2D(const TVec3f&, TVec3f*);
|
|
void stick2Dadjust(f32&, f32&);
|
|
void set2Dmode(bool);
|
|
void beforeJumping2D();
|
|
void afterLanding2D();
|
|
void clear2DStick();
|
|
|
|
void set25Dmode(const AreaObj*);
|
|
void update25Dmode();
|
|
void updateAxisFromMode(u8);
|
|
void calcMoveDir25D(f32, f32, TVec3f*);
|
|
|
|
bool checkPressDamage();
|
|
bool checkVerticalPress(bool);
|
|
bool checkSidePressPre();
|
|
bool checkSidePress();
|
|
|
|
void startRabbitMode();
|
|
void endRabbitMode();
|
|
|
|
bool checkWallJumpCode();
|
|
bool doSideStep();
|
|
|
|
bool isSkatableFloor() const;
|
|
bool doSkate();
|
|
|
|
u32 initSoundTable(SoundList* list, u32);
|
|
void initSound();
|
|
void playSoundJ(const char*, s32);
|
|
void stopSoundJ(const char*, u32);
|
|
void startBas(const char*, bool, f32, f32);
|
|
bool isRunningBas(const char*) const;
|
|
void skipBas(f32);
|
|
void playSoundTeresaFlying();
|
|
void playSoundTrampleCombo(u8);
|
|
void setSeVersion(u32);
|
|
|
|
void checkOnimasu(const HitSensor*);
|
|
bool isDossun(const Triangle*) const;
|
|
bool isStageCameraRotate2D() const;
|
|
bool isNoWalkFallOnDossun() const;
|
|
bool isNotReflectGlassGround() const;
|
|
bool isUseAnotherMovingPolygon() const;
|
|
bool isUseFooSpecialGravity(const TVec3f&, TVec3f*) const;
|
|
void updateOnimasu();
|
|
bool isHeadPushEnableArea() const;
|
|
bool isOnimasuBinderPressSkip() const;
|
|
|
|
void checkTornado();
|
|
void resetTornado();
|
|
void calcTornadoTilt();
|
|
void reflectWallOnSpinning(const TVec3f&, u16);
|
|
void forceStopTornado();
|
|
void startRotationTask(u32);
|
|
void doSpinWallEffect();
|
|
bool taskOnRotation(u32);
|
|
|
|
void sendStateMsg(u32);
|
|
bool updatePosture(MtxPtr);
|
|
void changeStatus(MarioState*);
|
|
void closeStatus(MarioState*);
|
|
u32 getCurrentStatus() const;
|
|
bool isStatusActive(u32) const;
|
|
|
|
void checkBeeStick();
|
|
void tryBeeStick(const HitSensor*);
|
|
|
|
void startTalk(const LiveActor*);
|
|
void endTalk();
|
|
void setLastNonFixMoveVec(const TVec3f&);
|
|
|
|
bool isWalling() const;
|
|
void checkWallStick();
|
|
u8 checkStickWallSide();
|
|
s32 checkStickFrontBack();
|
|
bool fixWallingPosition(bool);
|
|
void fixWallingDir(bool);
|
|
bool fixWallingTop();
|
|
bool checkWallFloorCode(u16) const;
|
|
bool checkWallCode(const char*, bool) const;
|
|
bool checkWallCodeNorm(u16, TVec3f*, bool) const;
|
|
void setWallCancel();
|
|
void keepDistFrontWall();
|
|
bool isEnableStickWall();
|
|
bool fixWallingDist();
|
|
bool isInhibitWall() const;
|
|
void tryWallPunch();
|
|
|
|
bool isHanging() const;
|
|
bool fixHangDir(const TVec3f&, TVec3f*);
|
|
bool isEnableBackHang();
|
|
bool isEnableSideHang();
|
|
void checkHang();
|
|
bool isEnableHang();
|
|
|
|
bool isSwimming() const;
|
|
bool forceStartSwimAndShoot(const TVec3f&);
|
|
bool forceExitSwim();
|
|
bool checkStartSwim();
|
|
void startSwim();
|
|
|
|
bool checkWaterDamage();
|
|
|
|
void clearSlope();
|
|
bool isEnableSlopeMove() const;
|
|
void moveSlopeSlide();
|
|
void slopeMove();
|
|
bool taskOnSlipTurn(u32);
|
|
|
|
void lockGroundCheck(void*, bool);
|
|
void unlockGroundCheck(void*);
|
|
bool isUseSimpleGroundCheck() const;
|
|
bool checkGroundOnSlope();
|
|
|
|
void stopWalk();
|
|
void cancelSquatMode();
|
|
f32 getTargetWalkSpeed() const;
|
|
void decideSquatWalkAnimation();
|
|
void decideWalkSpeed();
|
|
void decideWalkAnimation();
|
|
void doBrakingAnimation();
|
|
void checkWallPush();
|
|
void updateBrakeAnimation();
|
|
void updateWalkSpeed();
|
|
void decideOnIceAnimation();
|
|
void updateOnSand();
|
|
void updateOnPoison();
|
|
void updateOnWater();
|
|
|
|
bool doRecovery();
|
|
|
|
bool isSliderFloor() const NO_INLINE;
|
|
bool checkSliderMode() const;
|
|
void startSlider();
|
|
|
|
void checkStep();
|
|
void startStep(const TVec3f&);
|
|
|
|
void checkBump();
|
|
void startBump(const TVec3f&);
|
|
|
|
void checkEnforceMove();
|
|
void checkEnforceMoveInner();
|
|
void recordRelativePosition();
|
|
void invalidateRelativePosition();
|
|
TPos3f* getMoveBaseMtx() const;
|
|
u32 moveRelativePosition(u32);
|
|
u32 moveRelativePositionWall();
|
|
void recordLastGround();
|
|
void getLastGroundPos(TVec3f*) const;
|
|
const TVec3f* getLastGroundEdgeNrm(u32) const;
|
|
u32 getLastGroundEdgeIndex(const TVec3f&, const TVec3f&) const;
|
|
void pushedByReaction();
|
|
void addReaction(const TVec3f&);
|
|
void tryPushToVelocity();
|
|
void push(const TVec3f&);
|
|
void push2(const TVec3f&);
|
|
void powerAreaMove();
|
|
void powerRailMove();
|
|
void recordJumpEnforceMove();
|
|
void doEnforceJump(f32);
|
|
void pushedByWind();
|
|
|
|
void delTask(MarioModuleTask*);
|
|
void execTask();
|
|
void drawTask() const;
|
|
void initTask();
|
|
bool isActiveTask(Task);
|
|
bool isActiveTaskID(u32);
|
|
bool pushTask(Task, u32);
|
|
void popTask(Task);
|
|
void callExtraTasks(u32);
|
|
void startHandy();
|
|
bool taskOnHipDropBlurHopper(u32);
|
|
bool taskOnHipDropBlur(u32);
|
|
bool taskOnHipDropSlide(u32);
|
|
bool taskOnFreezeEnd(u32);
|
|
void startFreezeEnd();
|
|
bool taskOnHandy(u32);
|
|
void startHipDropBlur();
|
|
void startHipDropSlide(const HitSensor*);
|
|
void startJumpDropSlide(const HitSensor*);
|
|
|
|
void startTeresaMode();
|
|
bool getHitWallNorm(TVec3f*);
|
|
void resetTeresaMode();
|
|
void doTeresaReflection(const TVec3f&, bool);
|
|
void startTeresaDisappear();
|
|
|
|
void stopPunch();
|
|
void startMagic();
|
|
|
|
bool doObjWarp(LiveActor*);
|
|
bool doPointWarp(const TVec3f&, const TVec3f&, s32);
|
|
bool isVisibleRecoveryWarpBubble() const;
|
|
void doCubeWarp();
|
|
bool doPointWarpRecovery(const TVec3f&, const TVec3f&);
|
|
|
|
bool isDisableStayHere() const;
|
|
bool isDisableFpViewMode() const;
|
|
void tryFpViewMode();
|
|
|
|
void stick2DadjustGround(f32&, f32&);
|
|
void calcDir2D(f32, f32, TVec3f*);
|
|
|
|
// instruction comments to make it easier to identify each bit
|
|
struct MovementStates {
|
|
/* 0x00 */
|
|
#if defined(__MWERKS__) || defined(__BIG_ENDIAN__)
|
|
unsigned jumping : 1; // _0 (srwi rX, rX, 31)
|
|
unsigned _1 : 1; // extrwi rX, rX, 1, 1
|
|
unsigned _2 : 1;
|
|
unsigned turning : 1; // _3
|
|
unsigned _4 : 1;
|
|
unsigned _5 : 1;
|
|
unsigned _6 : 1;
|
|
unsigned _7 : 1;
|
|
unsigned _8 : 1;
|
|
unsigned _9 : 1;
|
|
unsigned _A : 1; // extrwi rX, rX, 1, 10
|
|
unsigned _B : 1;
|
|
unsigned _C : 1;
|
|
unsigned _D : 1;
|
|
unsigned _E : 1;
|
|
unsigned _F : 1;
|
|
unsigned _10 : 1; // rlwinm rX, rX, 0, 17, 15
|
|
unsigned _11 : 1;
|
|
unsigned _12 : 1;
|
|
unsigned _13 : 1;
|
|
unsigned _14 : 1;
|
|
unsigned _15 : 1;
|
|
unsigned debugMode : 1; // _16
|
|
unsigned _17 : 1; // extrwi rX, rX, 1, 23
|
|
unsigned _18 : 1; // rlwinm rX, rX, 0, 25, 23
|
|
unsigned _19 : 1; // extrwi rX, rX, 1, 25
|
|
unsigned _1A : 1; // extrwi rX, rX, 1, 26
|
|
unsigned _1B : 1;
|
|
unsigned _1C : 1;
|
|
unsigned _1D : 1;
|
|
unsigned digitalJump : 1; // _1E
|
|
unsigned _1F : 1;
|
|
/* 0x04 */
|
|
unsigned _20 : 1;
|
|
unsigned _21 : 1;
|
|
unsigned _22 : 1;
|
|
unsigned _23 : 1; // extrwi rX, rX, 1, 3
|
|
unsigned _24 : 1;
|
|
unsigned _25 : 1;
|
|
unsigned _26 : 1;
|
|
unsigned _27 : 1;
|
|
unsigned _28 : 1;
|
|
unsigned _29 : 1;
|
|
unsigned _2A : 1;
|
|
unsigned _2B : 1;
|
|
unsigned _2C : 1;
|
|
unsigned _2D : 1;
|
|
unsigned _2E : 1;
|
|
unsigned _2F : 1;
|
|
unsigned _30 : 1;
|
|
unsigned _31 : 1;
|
|
unsigned _32 : 1;
|
|
unsigned _33 : 1;
|
|
unsigned _34 : 1;
|
|
unsigned _35 : 1;
|
|
unsigned _36 : 1;
|
|
unsigned _37 : 1;
|
|
unsigned _38 : 1; // rlwimi rX, rX, 7, 24, 24
|
|
unsigned _39 : 1;
|
|
unsigned _3A : 1;
|
|
unsigned _3B : 1;
|
|
unsigned _3C : 1;
|
|
unsigned _3D : 1;
|
|
unsigned _3E : 2; // clrrwi rX, rX, 2
|
|
#else
|
|
unsigned _1F : 1;
|
|
unsigned digitalJump : 1; // _1E
|
|
unsigned _1D : 1;
|
|
unsigned _1C : 1;
|
|
unsigned _1B : 1;
|
|
unsigned _1A : 1; // extrwi rX, rX, 1, 26
|
|
unsigned _19 : 1; // extrwi rX, rX, 1, 25
|
|
unsigned _18 : 1; // rlwinm rX, rX, 0, 25, 23
|
|
unsigned _17 : 1; // extrwi rX, rX, 1, 23
|
|
unsigned debugMode : 1; // _16
|
|
unsigned _15 : 1;
|
|
unsigned _14 : 1;
|
|
unsigned _13 : 1;
|
|
unsigned _12 : 1;
|
|
unsigned _11 : 1;
|
|
unsigned _10 : 1; // rlwinm rX, rX, 0, 17, 15
|
|
unsigned _F : 1;
|
|
unsigned _E : 1;
|
|
unsigned _D : 1;
|
|
unsigned _C : 1;
|
|
unsigned _B : 1;
|
|
unsigned _A : 1; // extrwi rX, rX, 1, 10
|
|
unsigned _9 : 1;
|
|
unsigned _8 : 1;
|
|
unsigned _7 : 1;
|
|
unsigned _6 : 1;
|
|
unsigned _5 : 1;
|
|
unsigned _4 : 1;
|
|
unsigned turning : 1; // _3
|
|
unsigned _2 : 1;
|
|
unsigned _1 : 1; // extrwi rX, rX, 1, 1
|
|
unsigned jumping : 1; // _0 (srwi rX, rX, 31)
|
|
unsigned _3E : 2; // clrrwi rX, rX, 2
|
|
unsigned _3D : 1;
|
|
unsigned _3C : 1;
|
|
unsigned _3B : 1;
|
|
unsigned _3A : 1;
|
|
unsigned _39 : 1;
|
|
unsigned _38 : 1; // rlwimi rX, rX, 7, 24, 24
|
|
unsigned _37 : 1;
|
|
unsigned _36 : 1;
|
|
unsigned _35 : 1;
|
|
unsigned _34 : 1;
|
|
unsigned _33 : 1;
|
|
unsigned _32 : 1;
|
|
unsigned _31 : 1;
|
|
unsigned _30 : 1;
|
|
unsigned _2F : 1;
|
|
unsigned _2E : 1;
|
|
unsigned _2D : 1;
|
|
unsigned _2C : 1;
|
|
unsigned _2B : 1;
|
|
unsigned _2A : 1;
|
|
unsigned _29 : 1;
|
|
unsigned _28 : 1;
|
|
unsigned _27 : 1;
|
|
unsigned _26 : 1;
|
|
unsigned _25 : 1;
|
|
unsigned _24 : 1;
|
|
unsigned _23 : 1; // extrwi rX, rX, 1, 3
|
|
unsigned _22 : 1;
|
|
unsigned _21 : 1;
|
|
unsigned _20 : 1;
|
|
#endif
|
|
};
|
|
struct DrawStates {
|
|
#if defined(__MWERKS__) || defined(__BIG_ENDIAN__)
|
|
unsigned _0 : 1;
|
|
unsigned _1 : 1;
|
|
unsigned _2 : 1;
|
|
unsigned _3 : 1;
|
|
unsigned _4 : 1;
|
|
unsigned _5 : 1;
|
|
unsigned _6 : 1;
|
|
unsigned _7 : 1;
|
|
unsigned _8 : 1;
|
|
unsigned _9 : 1;
|
|
unsigned _A : 1;
|
|
unsigned _B : 1;
|
|
unsigned _C : 1;
|
|
unsigned _D : 1;
|
|
unsigned _E : 1;
|
|
unsigned _F : 1;
|
|
unsigned _10 : 1;
|
|
unsigned _11 : 1;
|
|
unsigned mIsUnderwater : 1;
|
|
unsigned _13 : 1;
|
|
unsigned _14 : 1;
|
|
unsigned _15 : 1;
|
|
unsigned _16 : 1;
|
|
unsigned _17 : 1;
|
|
unsigned _18 : 1;
|
|
unsigned _19 : 1;
|
|
unsigned _1A : 1;
|
|
unsigned _1B : 1;
|
|
unsigned _1C : 1;
|
|
unsigned _1D : 1;
|
|
unsigned _1E : 1;
|
|
unsigned _1F : 1;
|
|
#else
|
|
unsigned _1F : 1;
|
|
unsigned _1E : 1;
|
|
unsigned _1D : 1;
|
|
unsigned _1C : 1;
|
|
unsigned _1B : 1;
|
|
unsigned _1A : 1;
|
|
unsigned _19 : 1;
|
|
unsigned _18 : 1;
|
|
unsigned _17 : 1;
|
|
unsigned _16 : 1;
|
|
unsigned _15 : 1;
|
|
unsigned _14 : 1;
|
|
unsigned _13 : 1;
|
|
unsigned mIsUnderwater : 1;
|
|
unsigned _11 : 1;
|
|
unsigned _10 : 1;
|
|
unsigned _F : 1;
|
|
unsigned _E : 1;
|
|
unsigned _D : 1;
|
|
unsigned _C : 1;
|
|
unsigned _B : 1;
|
|
unsigned _A : 1;
|
|
unsigned _9 : 1;
|
|
unsigned _8 : 1;
|
|
unsigned _7 : 1;
|
|
unsigned _6 : 1;
|
|
unsigned _5 : 1;
|
|
unsigned _4 : 1;
|
|
unsigned _3 : 1;
|
|
unsigned _2 : 1;
|
|
unsigned _1 : 1;
|
|
unsigned _0 : 1;
|
|
#endif
|
|
};
|
|
|
|
inline const MovementStates& getMovementStates() const {
|
|
return mMovementStates;
|
|
}
|
|
|
|
inline const DrawStates& getDrawStates() const {
|
|
return mDrawStates;
|
|
}
|
|
|
|
inline const DrawStates& getPrevDrawStates() const {
|
|
return mPrevDrawStates;
|
|
}
|
|
|
|
const TVec3f& getUpVec() const {
|
|
return _1FC;
|
|
}
|
|
|
|
const TVec3f& getFrontVec() const {
|
|
return mFrontVec;
|
|
}
|
|
|
|
const TVec3f& getJumpVec() const {
|
|
return mJumpVec;
|
|
}
|
|
|
|
inline void setJumpVec(const TVec3f& rVec) {
|
|
mJumpVec = rVec;
|
|
}
|
|
|
|
inline void resetInline() {
|
|
_74C = 0.0f;
|
|
_750 = 0;
|
|
_754 = 0;
|
|
}
|
|
|
|
inline void set3BC(u16 val) {
|
|
_3BC = val;
|
|
}
|
|
|
|
inline void set41E(u16 val) {
|
|
_41E = val;
|
|
}
|
|
|
|
union {
|
|
/* 0x008 */ MovementStates mMovementStates;
|
|
struct {
|
|
/* 0x008 */ u32 mMovementStates_LOW_WORD;
|
|
/* 0x00C */ u32 mMovementStates_HIGH_WORD;
|
|
};
|
|
};
|
|
|
|
union {
|
|
/* 0x010 */ MovementStates _10;
|
|
struct {
|
|
/* 0x010 */ u32 _10_LOW_WORD;
|
|
/* 0x014 */ u32 _10_HIGH_WORD;
|
|
};
|
|
};
|
|
|
|
union {
|
|
/* 0x018 */ DrawStates mDrawStates;
|
|
/* 0x018 */ u32 mDrawStates_WORD;
|
|
};
|
|
union {
|
|
/* 0x01C */ DrawStates _1C;
|
|
/* 0x01C */ u32 _1C_WORD;
|
|
};
|
|
union {
|
|
/* 0x020 */ MovementStates _20;
|
|
struct {
|
|
/* 0x20 */ u32 _20_LOW_WORD;
|
|
/* 0x24 */ u32 _20_HIGH_WORD;
|
|
};
|
|
};
|
|
/* 0x028 */ u32 _28;
|
|
/* 0x02C */ u32 _2C;
|
|
|
|
/* 0x030 */ DrawStates mPrevDrawStates;
|
|
// FAKE
|
|
/* 0x034 */ u32 _34;
|
|
// NOT FAKE
|
|
|
|
/* 0x038 */ f32 _38;
|
|
/* 0x03C */ f32 _3C;
|
|
/* 0x040 */ TVec3f _40;
|
|
/* 0x04C */ TVec3f _4C;
|
|
/* 0x058 */ TVec3f _58;
|
|
/* 0x064 */ TMtx34f _64;
|
|
/* 0x094 */ TMtx34f _94;
|
|
/* 0x0C4 */ TMtx34f _C4;
|
|
/* 0x0F4 */ TMtx34f _F4;
|
|
/* 0x124 */ f32 _124;
|
|
/* 0x128 */ f32 _128;
|
|
/* 0x12C */ u32 _12C;
|
|
/* 0x130 */ TVec3f mPosition;
|
|
/* 0x13C */ TVec3f _13C;
|
|
/* 0x148 */ TVec3f _148;
|
|
/* 0x154 */ TVec3f _154;
|
|
/* 0x160 */ TVec3f mVelocity;
|
|
/* 0x16C */ TVec3f _16C;
|
|
/* 0x178 */ TVec3f mVelocityAfter;
|
|
/* 0x184 */ TVec3f _184;
|
|
/* 0x190 */ TVec3f _190;
|
|
/* 0x19C */ TVec3f _19C;
|
|
/* 0x1A8 */ TVec3f _1A8;
|
|
/* 0x1B4 */ TVec3f _1B4;
|
|
/* 0x1C0 */ TVec3f mStickPos;
|
|
/* 0x1CC */ TVec3f mWorldPadDir;
|
|
/* 0x1D8 */ TVec3f mAirGravityVec;
|
|
/* 0x1E4 */ TVec3f _1E4;
|
|
/* 0x1F0 */ TVec3f mHeadVec;
|
|
/* 0x1FC */ TVec3f _1FC;
|
|
/* 0x208 */ TVec3f mFrontVec;
|
|
/* 0x214 */ TVec3f _214;
|
|
/* 0x220 */ TVec3f _220;
|
|
/* 0x22C */ TVec3f _22C;
|
|
/* 0x238 */ TVec3f _238;
|
|
/* 0x244 */ TVec3f _244;
|
|
/* 0x250 */ TVec3f _250;
|
|
/* 0x25C */ TVec3f _25C;
|
|
/* 0x268 */ TVec3f _268;
|
|
/* 0x274 */ u8 _274;
|
|
/* 0x278 */ f32 mWalkSpeed;
|
|
/* 0x27C */ f32 mPrevAnimFrame;
|
|
/* 0x280 */ f32 _280;
|
|
/* 0x284 */ TVec3f _284;
|
|
/* 0x290 */ TVec3f _290;
|
|
/* 0x29C */ TVec3f _29C;
|
|
/* 0x2A8 */ TVec3f _2A8;
|
|
/* 0x2B4 */ f32 _2B4;
|
|
/* 0x2B8 */ TVec3f _2B8;
|
|
/* 0x2C4 */ TVec3f _2C4;
|
|
/* 0x2D0 */ f32 _2D0;
|
|
/* 0x2D4 */ TVec3f mJumpVec;
|
|
/* 0x2E0 */ TVec3f _2E0;
|
|
/* 0x2EC */ TVec3f _2EC;
|
|
/* 0x2F8 */ TVec3f _2F8;
|
|
/* 0x304 */ TVec3f _304;
|
|
/* 0x310 */ TVec3f mSideVec;
|
|
/* 0x31C */ TVec3f mShadowPos;
|
|
/* 0x328 */ TVec3f _328;
|
|
/* 0x334 */ TVec3f _334;
|
|
/* 0x340 */ f32 _340;
|
|
/* 0x344 */ TVec3f _344; // left/right?
|
|
/* 0x350 */ TVec3f _350;
|
|
/* 0x35C */ TVec3f _35C;
|
|
/* 0x368 */ TVec3f _368;
|
|
/* 0x374 */ TVec3f _374;
|
|
/* 0x380 */ TVec3f _380;
|
|
/* 0x38C */ TVec3f _38C;
|
|
/* 0x398 */ TVec3f _398;
|
|
/* 0x3A4 */ TVec3f _3A4;
|
|
/* 0x3B0 */ TVec3f _3B0;
|
|
/* 0x3BC */ u16 _3BC;
|
|
/* 0x3BE */ u16 _3BE;
|
|
/* 0x3C0 */ u16 _3C0;
|
|
/* 0x3C2 */ u16 _3C2;
|
|
/* 0x3C4 */ u16 _3C4;
|
|
/* 0x3C6 */ u16 _3C6;
|
|
/* 0x3C8 */ u16 _3C8;
|
|
/* 0x3CA */ u16 _3CA;
|
|
/* 0x3CC */ u16 _3CC;
|
|
/* 0x3CE */ u16 _3CE; // a timer
|
|
/* 0x3D0 */ u16 _3D0;
|
|
/* 0x3D2 */ u16 _3D2;
|
|
/* 0x3D4 */ u16 _3D4;
|
|
/* 0x3D8 */ TVec3f _3D8;
|
|
/* 0x3E4 */ TVec3f _3E4;
|
|
/* 0x3F0 */ f32 _3F0;
|
|
/* 0x3F4 */ f32 _3F4;
|
|
/* 0x3F8 */ u16 _3F8;
|
|
/* 0x3FA */ u16 _3FA;
|
|
/* 0x3FC */ u16 _3FC;
|
|
/* 0x3FE */ u16 _3FE;
|
|
/* 0x400 */ u16 _400;
|
|
/* 0x402 */ u16 _402;
|
|
/* 0x404 */ u16 _404;
|
|
/* 0x406 */ u16 _406;
|
|
/* 0x408 */ u16 _408;
|
|
/* 0x40A */ u16 _40A;
|
|
/* 0x40C */ u16 _40C;
|
|
/* 0x40E */ u16 _40E;
|
|
/* 0x410 */ u16 _410;
|
|
/* 0x412 */ u16 _412;
|
|
/* 0x414 */ u16 _414; // a timer
|
|
/* 0x416 */ u16 mMorphResetTimer;
|
|
/* 0x418 */ u16 _418;
|
|
/* 0x41A */ u16 _41A;
|
|
/* 0x41C */ u16 _41C;
|
|
/* 0x41E */ u16 _41E;
|
|
/* 0x420 */ u16 _420;
|
|
/* 0x422 */ u16 _422;
|
|
/* 0x424 */ u16 _424;
|
|
/* 0x426 */ u16 _426;
|
|
/* 0x428 */ u16 _428;
|
|
/* 0x42A */ u16 _42A;
|
|
/* 0x42C */ u16 _42C;
|
|
/* 0x430 */ u32 _430;
|
|
/* 0x434 */ u16 _434; // a timer
|
|
/* 0x436 */ u16 _436;
|
|
/* 0x438 */ u16 _438;
|
|
/* 0x43A */ u16 _43A;
|
|
/* 0x43C */ TVec3f _43C; // front?
|
|
/* 0x448 */ TVec3f _448;
|
|
/* 0x454 */ f32 _454;
|
|
/* 0x458 */ TriangleFilterDelegator< Mario >* _458;
|
|
/* 0x45C */ Triangle* _45C;
|
|
/* 0x460 */ Triangle* _460;
|
|
/* 0x464 */ Triangle* mGroundPolygon;
|
|
/* 0x468 */ Triangle* _468;
|
|
/* 0x46C */ Triangle* _46C;
|
|
/* 0x470 */ Triangle* _470;
|
|
/* 0x474 */ Triangle* _474;
|
|
/* 0x478 */ Triangle* mTmpPolygon;
|
|
/* 0x47C */ Triangle* _47C;
|
|
/* 0x480 */ Triangle* _480;
|
|
/* 0x484 */ Triangle* _484;
|
|
/* 0x488 */ f32 mVerticalSpeed;
|
|
/* 0x48C */ TVec3f mGroundPos;
|
|
/* 0x498 */ TVec3f _498;
|
|
/* 0x4A4 */ TVec3f _4A4;
|
|
/* 0x4B0 */ TVec3f _4B0;
|
|
/* 0x4BC */ TVec3f _4BC;
|
|
/* 0x4C8 */ Triangle* _4C8;
|
|
/* 0x4CC */ Triangle* mFrontWallTriangle;
|
|
/* 0x4D0 */ Triangle* mBackWallTriangle;
|
|
/* 0x4D4 */ Triangle* mSideWallTriangle;
|
|
/* 0x4D8 */ Triangle* _4D8;
|
|
/* 0x4DC */ Triangle* _4DC;
|
|
/* 0x4E0 */ f32 _4E0;
|
|
/* 0x4E4 */ f32 _4E4;
|
|
/* 0x4E8 */ TVec3f _4E8;
|
|
/* 0x4F4 */ TVec3f _4F4;
|
|
|
|
// FAKE
|
|
/* 0x500 */ TVec3f _500;
|
|
// NOT FAKE
|
|
|
|
/* 0x50C */ TVec3f _50C;
|
|
/* 0x518 */ TVec3f _518;
|
|
/* 0x524 */ f32 _524;
|
|
/* 0x528 */ f32 _528;
|
|
/* 0x52C */ f32 _52C;
|
|
/* 0x530 */ f32 _530;
|
|
/* 0x534 */ u16 _534;
|
|
/* 0x538 */ f32 _538;
|
|
/* 0x53C */ f32 _53C;
|
|
/* 0x540 */ f32 mYAngleOffset;
|
|
/* 0x544 */ u16 _544;
|
|
/* 0x548 */ f32 _548;
|
|
/* 0x54C */ TVec3f _54C;
|
|
/* 0x558 */ u32 _558;
|
|
|
|
/// FAKE
|
|
/* 0x55C */ u32 _55C;
|
|
/* 0x560 */ u32 _560;
|
|
// NOT FAKE
|
|
|
|
/* 0x564 */ s32 _564;
|
|
/* 0x568 */ CubeCameraArea* _568;
|
|
/* 0x56C */ AreaObj* _56C;
|
|
/* 0x570 */ u8 _570;
|
|
/* 0x574 */ void* _574;
|
|
/* 0x578 */ u32 _578;
|
|
/* 0x57C */ Triangle* _57C[0x20];
|
|
/* 0x5FC */ const HitSensor* _5FC;
|
|
/* 0x600 */ TVec3f _600;
|
|
/* 0x60C */ u8 _60C;
|
|
/* 0x60D */ bool _60D;
|
|
/* 0x60E */ u8 _60E;
|
|
/* 0x60F */ u8 _60F;
|
|
/* 0x610 */ u8 _610;
|
|
/* 0x611 */ u8 _611;
|
|
/* 0x614 */ f32 _614;
|
|
/* 0x618 */ f32 _618;
|
|
/* 0x61C */ f32 _61C;
|
|
/* 0x620 */ f32 _620;
|
|
/* 0x624 */ bool _624;
|
|
/* 0x628 */ TVec3f _628;
|
|
/* 0x634 */ f32 _634;
|
|
|
|
/* 0x638 */ u8 _638;
|
|
/* 0x63C */ TVec3f mSide2D;
|
|
/* 0x648 */ TVec3f mUp2D;
|
|
/* 0x654 */ TVec3f mNormal2D;
|
|
/* 0x660 */ TVec3f _660;
|
|
/* 0x66C */ bool _66C;
|
|
/* 0x670 */ TVec3f _670;
|
|
/* 0x67C */ TVec3f _67C;
|
|
|
|
/* 0x688 */ TVec3f _688;
|
|
/* 0x694 */ TVec3f _694;
|
|
/* 0x6A0 */ TVec3f _6A0;
|
|
/* 0x6AC */ u8 _6AC;
|
|
/* 0x6AD */ u8 _6AD;
|
|
/* 0x6B0 */ TVec3f _6B0;
|
|
/* 0x6BC */ TVec3f _6BC;
|
|
/* 0x6C8 */ TVec2f _6C8;
|
|
/* 0x6D0 */ TVec3f _6D0;
|
|
/* 0x6DC */ TVec3f _6DC;
|
|
/* 0x6E8 */ TVec3f _6E8;
|
|
/* 0x6F4 */ TVec3f _6F4;
|
|
/* 0x700 */ TVec3f _700;
|
|
/* 0x70C */ TVec3f _70C;
|
|
/* 0x718 */ f32 _718;
|
|
/* 0x71C */ u8 mTargetWalkSpeedIndex;
|
|
/* 0x71D */ u8 _71D;
|
|
/* 0x71E */ u8 _71E;
|
|
/* 0x71F */ u8 _71F;
|
|
/* 0x720 */ const char* _720;
|
|
/* 0x724 */ const char* _724;
|
|
/* 0x728 */ const char* _728;
|
|
/* 0x72C */ f32 _72C;
|
|
/* 0x730 */ HitSensor* _730;
|
|
/* 0x734 */ u8 mIceAnimFoot;
|
|
/* 0x735 */ u8 mSinkTimer;
|
|
/* 0x738 */ f32 _738;
|
|
/* 0x73C */ TVec3f _73C;
|
|
/* 0x748 */ u8 mPoisonTimer;
|
|
/* 0x74C */ f32 _74C;
|
|
/* 0x750 */ u32 _750;
|
|
/* 0x754 */ u32 _754;
|
|
/* 0x758 */ MarioWall* mWall;
|
|
/* 0x75C */ TVec3f _75C;
|
|
/* 0x768 */ MarioStick* mStick;
|
|
/* 0x76C */ u16 _76C;
|
|
/* 0x770 */ f32 _770;
|
|
/* 0x774 */ u16 _774;
|
|
/* 0x778 */ MarioRabbit* mRabbit;
|
|
/* 0x77C */ MarioFoo* mFoo;
|
|
/* 0x780 */ MarioSukekiyo* mSukekiyo;
|
|
/* 0x784 */ MarioBury* mBury;
|
|
/* 0x788 */ MarioWait* mWait;
|
|
/* 0x78C */ MarioClimb* mClimb;
|
|
/* 0x790 */ TVec3f _790;
|
|
/* 0x79C */ MarioHang* mHang;
|
|
/* 0x7A0 */ MarioRecovery* mRecovery;
|
|
/* 0x7A4 */ MarioWarp* mWarp;
|
|
/* 0x7A8 */ MarioFlip* mFlip;
|
|
/* 0x7AC */ MarioSideStep* mSideStep;
|
|
/* 0x7B0 */ MarioFrontStep* mFrontStep;
|
|
/* 0x7B4 */ MarioSkate* mSkate;
|
|
/* 0x7B8 */ MarioTalk* mTalk;
|
|
/* 0x7BC */ MarioTeresa* mTeresa;
|
|
/* 0x7C0 */ MarioDamage* mDamage;
|
|
/* 0x7C4 */ TVec3f _7C4;
|
|
/* 0x7D0 */ u16 _7D0;
|
|
/* 0x7D4 */ TVec3f _7D4;
|
|
/* 0x7E0 */ Triangle* _7E0;
|
|
/* 0x7E4 */ TMtx34f _7E4;
|
|
/* 0x814 */ TVec3f _814;
|
|
/* 0x820 */ Triangle* _820;
|
|
/* 0x824 */ TMtx34f _824;
|
|
/* 0x854 */ MarioFlow* mFlow;
|
|
/* 0x858 */ MarioFireDamage* mFireDamage;
|
|
/* 0x85C */ MarioFireDance* mFireDance;
|
|
/* 0x860 */ MarioFireRun* mFireRun;
|
|
/* 0x864 */ MarioParalyze* mParalyze;
|
|
/* 0x868 */ MarioStun* mStun;
|
|
/* 0x86C */ MarioCrush* mCrush;
|
|
/* 0x870 */ MarioFreeze* mFreeze;
|
|
/* 0x874 */ MarioAbyssDamage* mAbyssDamage;
|
|
/* 0x878 */ MarioDarkDamage* mDarkDamage;
|
|
/* 0x87C */ MarioFaint* mFaint;
|
|
/* 0x880 */ MarioBlown* mBlown;
|
|
/* 0x884 */ MarioSwim* mSwim;
|
|
/* 0x888 */ MarioSlider* mSlider;
|
|
/* 0x88C */ MarioStep* mStep;
|
|
/* 0x890 */ MarioBump* mBump;
|
|
/* 0x894 */ MarioMagic* mMagic;
|
|
/* 0x898 */ bool _898;
|
|
/* 0x89C */ MarioFpView* mFpView;
|
|
/* 0x8A0 */ MarioMove* mMove;
|
|
/* 0x8A4 */ TVec3f _8A4;
|
|
union {
|
|
struct {
|
|
/* 0x8B0 */ TVec3f _8B0;
|
|
/* 0x8BC */ TVec3f _8BC;
|
|
};
|
|
/* 0x8B0 */ TVec3f mRelativeWallPos[2];
|
|
};
|
|
/* 0x8C8 */ Triangle* _8C8;
|
|
/* 0x8CC */ Triangle* _8CC[2];
|
|
/* 0x8D4 */ HitSensor* _8D4;
|
|
/* 0x8D8 */ HitSensor* _8D8;
|
|
/* 0x8DC */ TVec3f _8DC;
|
|
/* 0x8E8 */ Triangle* _8E8;
|
|
/* 0x8EC */ u8 _8EC;
|
|
|
|
// FAKE?
|
|
/* 0x8F0 */ f32 _8F0;
|
|
// NOT FAKE
|
|
|
|
/* 0x8F4 */ f32 _8F4;
|
|
|
|
/* 0x8F8 */ TVec3f _8F8;
|
|
/* 0x904 */ TVec3f _904;
|
|
// NOT FAKE
|
|
|
|
/* 0x910 */ TVec3f _910;
|
|
/* 0x91C */ TVec3f _91C;
|
|
/* 0x928 */ TVec3f _928;
|
|
/* 0x934 */ f32 _934;
|
|
/* 0x938 */ TVec3f _938;
|
|
/* 0x944 */ TVec3f _944;
|
|
/* 0x950 */ TVec3f _950;
|
|
/* 0x95C */ FloorCode* _95C;
|
|
/* 0x960 */ u16 _960;
|
|
/* 0x962 */ u16 _962;
|
|
/* 0x964 */ u16 _964[3];
|
|
/* 0x96A */ u16 _96A;
|
|
|
|
/* 0x96C */ HashSortTable* _96C; // Sounds
|
|
/* 0x970 */ const char* _970; // Sounds or somthing
|
|
/* 0x974 */ MarioModuleTask* _974;
|
|
|
|
// Fake
|
|
/* 0x978 */ u32 _978;
|
|
// Not fake
|
|
|
|
/* 0x97C */ MarioState* _97C;
|
|
/* 0x980 */ MarioState* _980;
|
|
|
|
/* 0x984 */ Task _984[0xb];
|
|
/* 0xA08 */ u32 _A08[11];
|
|
/* 0xA34 */ u16 _A34;
|
|
/* 0xA38 */ u32 _A38;
|
|
/* 0xA3C */ u16 _A3C;
|
|
/* 0xA40 */ TVec3f _A40;
|
|
/* 0xA4C */ TVec3f _A4C;
|
|
/* 0xA58 */ TVec3f _A58;
|
|
/* 0xA64 */ f32 _A64;
|
|
/* 0xA68 */ HitSensor* _A68;
|
|
/* 0xA6C */ u8 _A6C[0x20]; // animations
|
|
/* 0xA8C */ TVec3f _A8C[9];
|
|
};
|