summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCaroline Madsen <69010899+randomsalience@users.noreply.github.com>2025-04-01 22:05:30 -0400
committerGitHub <noreply@github.com>2025-04-01 19:05:30 -0700
commite55c504f28caf0815a0bf7ba31c4014dd8d3d849 (patch)
tree83510f9cd7889fa10bbdb5d522093c6977a99036 /include
parent9847b2a2787b0db8ce931552fa6d99da21ad0873 (diff)
d_camera work (#2369)
* bumpCheck matching * checkGroundInfo matching * chaseCamera matching * lockonCamera attempted * talktoCamera matching * subjectCamera, magneCamera matching * colosseumCamera close, plus various fixes * towerCamera attempted * hookshotCamera matching
Diffstat (limited to 'include')
-rw-r--r--include/SSystem/SComponent/c_angle.h3
-rw-r--r--include/SSystem/SComponent/c_cc_d.h6
-rw-r--r--include/d/actor/d_a_alink.h12
-rw-r--r--include/d/actor/d_a_horse.h3
-rw-r--r--include/d/actor/d_a_player.h8
-rw-r--r--include/d/actor/d_a_tag_mwait.h2
-rw-r--r--include/d/d_attention.h6
-rw-r--r--include/d/d_bg_s.h1
-rw-r--r--include/d/d_cam_param.h26
-rw-r--r--include/d/d_camera.h357
-rw-r--r--include/d/d_cc_s.h1
-rw-r--r--include/d/d_com_inf_game.h61
-rw-r--r--include/d/d_name.h4
-rw-r--r--include/d/d_particle.h18
-rw-r--r--include/d/d_s_play.h31
-rw-r--r--include/d/d_s_play_env.h27
-rw-r--r--include/d/d_spline_path.h15
-rw-r--r--include/d/d_stage.h2
-rw-r--r--include/f_op/f_op_camera.h1
19 files changed, 396 insertions, 188 deletions
diff --git a/include/SSystem/SComponent/c_angle.h b/include/SSystem/SComponent/c_angle.h
index db0055ef6e..cc98ae4c5b 100644
--- a/include/SSystem/SComponent/c_angle.h
+++ b/include/SSystem/SComponent/c_angle.h
@@ -42,6 +42,8 @@ public:
void operator*=(float);
bool operator<(const cSAngle& other) const { return mAngle < other.mAngle; }
bool operator>(const cSAngle& other) const { return mAngle > other.mAngle; }
+ bool operator<=(const cSAngle& other) const { return mAngle <= other.mAngle; }
+ bool operator>=(const cSAngle& other) const { return mAngle >= other.mAngle; }
operator s16(void) const { return mAngle; }
void operator=(const cSAngle& other) { mAngle = other.mAngle; }
static inline cSAngle getMaxNegative(void) { return cSAngle((s16)-0x8000); }
@@ -133,6 +135,7 @@ public:
void R(f32 i_radius) { mRadius = i_radius; }
void U(cSAngle const& i_azimuth) { mAzimuth = i_azimuth.Val(); }
+ void V(cSAngle const& i_inclination) { mInclination = i_inclination.Val(); }
cSGlobe(const cSGlobe&);
cSGlobe(float, short, short);
diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h
index a56f90ca8d..de6af75a72 100644
--- a/include/SSystem/SComponent/c_cc_d.h
+++ b/include/SSystem/SComponent/c_cc_d.h
@@ -69,12 +69,10 @@ public:
/* 0x1C vtable */
struct Shape {
- /* 80167BBC */ ~Shape();
+ /* 80167BBC */ ~Shape() {}
/* 0x00 */ int _0;
- /* 0x04 */ f32 _4;
- /* 0x08 */ f32 _8;
- /* 0x0C */ f32 _C;
+ /* 0x04 */ cXyz _4;
/* 0x10 */ f32 _10;
/* 0x14 */ f32 _14;
};
diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h
index be330877ad..9668025af7 100644
--- a/include/d/actor/d_a_alink.h
+++ b/include/d/actor/d_a_alink.h
@@ -3088,7 +3088,7 @@ public:
virtual bool cancelWolfLock(fopAc_ac_c*);
virtual s32 getAtnActorID() const;
virtual s32 getItemID() const;
- virtual s32 getGrabActorID() const;
+ virtual u32 getGrabActorID() const;
virtual BOOL exchangeGrabActor(fopAc_ac_c*);
virtual BOOL setForceGrab(fopAc_ac_c*, int, int);
virtual void setForcePutPos(cXyz const&);
@@ -3346,10 +3346,16 @@ public:
const daAlink_AnmData* getAnmData(daAlink_ANM anmID) const { return &m_anmDataTable[anmID]; }
const daAlink_FaceTexData* getFaceTexData(daAlink_FTANM i_anmID) const { return &m_faceTexDataTable[i_anmID]; }
+ s16 getCameraAngleX() const { return field_0x310a; }
+ s16 getCameraAngleY() const { return field_0x310c; }
+ cXyz* getSubjectEyePos() { return &field_0x3768; }
+
u32 checkReinRide() const { return mRideStatus == 1 || mRideStatus == 2; }
int getGrassHowlEventActor() const { return field_0x3198; }
MtxP getShieldMtx() const { return mShieldModel->getBaseTRMtx(); }
MtxP getMagneBootsMtx() { return mMagneBootMtx; }
+ MtxP getMagneBootsInvMtx() { return mMagneBootInvMtx; }
+ s16 getMagneBootsModelShapeAngle() const { return field_0x3118; }
bool checkFishingCastMode() const {
bool var_r5;
@@ -3439,6 +3445,7 @@ public:
bool checkSpinnerRideWait() const {
return mProcID == PROC_SPINNER_WAIT && mProcVar2.field_0x300c == 0;
}
+ bool checkRoofSwitchHang() const { return mProcID == PROC_ROOF_SWITCH_HANG; }
fopAc_ac_c* getCopyRodActor() { return mCopyRodAcKeep.getActor(); }
fopAc_ac_c* getHookshotRoofWaitActor() { return mCargoCarryAcKeep.getActor(); }
@@ -3507,10 +3514,11 @@ public:
const cXyz& getWindSpeed() const { return mWindSpeed; }
const cXyz& getHsChainTopPos() const { return mHookshotTopPos; }
const cXyz& getHsChainRootPos() const { return mHeldItemRootPos; }
-
const cXyz& getHsSubChainRootPos() const { return field_0x3810; }
+ const csXyz& getHsAngle() const { return field_0x316c; }
s16 getHookshotStopTime() const { return field_0x3026; }
+ bool getHookshotLeft() const { return field_0x3020 == 0; }
static int getBallModelIdx() { return 0x25; }
static int getBallBtkIdx() { return 0x49; }
diff --git a/include/d/actor/d_a_horse.h b/include/d/actor/d_a_horse.h
index c02b5458f6..b1b7ee7339 100644
--- a/include/d/actor/d_a_horse.h
+++ b/include/d/actor/d_a_horse.h
@@ -221,7 +221,8 @@ public:
/* 80844590 */ int draw();
/* 8084478C */ ~daHorse_c();
- /* 80182D04 */ void getLashDashStart() const;
+ /* 80182D04 */ bool getLashDashStart() const { return checkResetStateFlg0(RFLG0_LASH_DASH_START); }
+
bool checkNoBombProc() const { return m_procID == PROC_WAIT_e || m_procID == PROC_MOVE_e; }
bool checkResetStateFlg0(daHorse_RFLG0 flag) const { return m_resetStateFlg0 & flag; }
diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h
index ebd38a7d1f..acc7b2cb16 100644
--- a/include/d/actor/d_a_player.h
+++ b/include/d/actor/d_a_player.h
@@ -694,12 +694,12 @@ public:
inline static BOOL checkSwordGet();
cXyz getHeadTopPos() const { return mHeadTopPos; }
- BOOL checkThrowDamage() const { return checkNoResetFlg1(FLG1_THROW_DAMAGE); }
- BOOL checkGoronSideMove() const { return mSpecialMode == 0x2B; }
+ u32 checkThrowDamage() const { return checkNoResetFlg1(FLG1_THROW_DAMAGE); }
+ bool checkGoronSideMove() const { return mSpecialMode == 0x2B; }
cXyz* getRightFootPosP() { return &mRightFootPos; }
cXyz* getLeftFootPosP() { return &mLeftFootPos; }
BOOL checkCopyRodThrowAfter() const { return checkNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER); }
- BOOL checkRide() const { return checkHorseRide() || checkBoarRide() || checkSpinnerRide() || checkCanoeRide() || checkBoardRide(); }
+ u32 checkRide() const { return checkHorseRide() || checkBoarRide() || checkSpinnerRide() || checkCanoeRide() || checkBoardRide(); }
cXyz getRightHandPos() const { return mRightHandPos; }
const cXyz getLeftHandPos() const { return mLeftHandPos; }
const cXyz getItemPos() const { return mItemPos; }
@@ -765,7 +765,7 @@ public:
virtual bool cancelWolfLock(fopAc_ac_c*);
virtual s32 getAtnActorID() const { return -1; }
virtual s32 getItemID() const;
- virtual s32 getGrabActorID() const { return -1; }
+ virtual u32 getGrabActorID() const { return fpcM_ERROR_PROCESS_ID_e; }
virtual BOOL exchangeGrabActor(fopAc_ac_c*);
virtual BOOL setForceGrab(fopAc_ac_c*, int, int);
virtual void setForcePutPos(cXyz const&);
diff --git a/include/d/actor/d_a_tag_mwait.h b/include/d/actor/d_a_tag_mwait.h
index bfd9546fa8..709dcbf47a 100644
--- a/include/d/actor/d_a_tag_mwait.h
+++ b/include/d/actor/d_a_tag_mwait.h
@@ -10,7 +10,7 @@ public:
/* 80D5C01C */ ~daTagMwait_c();
/* 80D5C0A8 */ int execute();
- bool checkEndMessage() {return fopAcM_isSwitch(this, mEnterSw); }
+ BOOL checkEndMessage() {return fopAcM_isSwitch(this, mEnterSw); }
/* 0x568 */ u8 mOnSw;
/* 0x569 */ u8 mEnterSw;
diff --git a/include/d/d_attention.h b/include/d/d_attention.h
index 085ecc4314..41ad71e140 100644
--- a/include/d/d_attention.h
+++ b/include/d/d_attention.h
@@ -213,9 +213,9 @@ public:
/* 8007378C */ fopAc_ac_c* CheckObjectTarget(s32);
/* 800737E4 */ bool LockonTruth();
/* 80073838 */ int checkDistance(cXyz*, s16, cXyz*, f32, f32, f32, f32);
- /* 8016E424 */ void LockEdge();
- /* 80182994 */ void GetCheckObjectCount();
- /* 80182AD0 */ void keepLock(int);
+ /* 8016E424 */ bool LockEdge() { return chkFlag(8) || chkFlag(0x20); }
+ /* 80182994 */ int GetCheckObjectCount() { return mCheckObjectCount; }
+ /* 80182AD0 */ void keepLock(int timer) { mAttnBlockTimer = timer; }
/* 8014B010 */ static dist_entry& getDistTable(int i_no) { return dist_table[i_no]; }
fopAc_ac_c* getCatghTarget() { return mCatghTarget.getCatghTarget(); }
diff --git a/include/d/d_bg_s.h b/include/d/d_bg_s.h
index cecd2ee3f5..088e80e4ad 100644
--- a/include/d/d_bg_s.h
+++ b/include/d/d_bg_s.h
@@ -110,6 +110,7 @@ public:
bool WaterChk(dBgS_SplGrpChk* chk) { return SplGrpChk(chk); }
u32 GetMtrlSndId(const cBgS_PolyInfo& param_0) { return dKy_pol_sound_get(&param_0); }
void DebugDrawPoly(dBgW_Base *param_1) {}
+ fopAc_ac_c* GetActorPointer(cBgS_PolyInfo const& param_0) { return cBgS::GetActorPointer(param_0); }
}; // Size: 0x1404
bool dBgS_CheckBGroundPoly(cBgS_PolyInfo const&);
diff --git a/include/d/d_cam_param.h b/include/d/d_cam_param.h
index 48cfa63238..28d010bb8a 100644
--- a/include/d/d_cam_param.h
+++ b/include/d/d_cam_param.h
@@ -37,6 +37,12 @@ public:
f32 FwdWeightL(s32 param_0) { return mChkInfo[param_0].mWeightL; }
f32 FwdBackMargin() { return mFwdBackMargin; }
f32 FwdCushion() { return mFwdCushion; }
+ f32 GazeBackMargin() { return mGazeBackMargin; }
+ f32 WallCushion() { return mWallCushion; }
+ f32 WallBackCushion() { return mWallBackCushion; }
+ f32 CornerCushion() { return mCornerCushion; }
+ f32 CornerAngleMax() { return mCornerAngleMax; }
+ f32 FloorMargin() { return mFloorMargin; }
// name is a guess for now
struct ChkInfo {
@@ -79,14 +85,14 @@ public:
/* 80088620 */ int SearchStyle(u32);
/* 80182C60 */ void Arg2(s16 val) { mMapToolArg2 = val; }
- /* 80182C3C */ int Arg2() { return mMapToolArg2; }
+ /* 80182C3C */ s16 Arg2() { return mMapToolArg2; }
/* 80182C48 */ u8 Arg1() { return mMapToolArg1; }
/* 80182C6C */ void Arg1(u8 val) { mMapToolArg1 = val; }
/* 80182C50 */ u8 Arg0() { return mMapToolArg0; }
/* 80182C74 */ void Arg0(u8 val) { mMapToolArg0 = val; }
/* 80182C7C */ void Fovy(u8 val) { mMapToolFovy = val; }
/* 80182C58 */ u8 Fovy() { return mMapToolFovy; }
- /* 80182CB4 */ bool CheckFlag(u16 flag) { return mCurrentStyle->field_0x6 & flag; }
+ /* 80182CB4 */ bool CheckFlag(u16 flag) { return (flag & mCurrentStyle->field_0x6) != 0; }
/* 80182CD0 */ f32 Val(s32 param_0, int param_1) {
return mCamStyleData[param_0].field_0x8[param_1];
}
@@ -104,7 +110,8 @@ public:
u32 Id(s32 i_style) { return mCamStyleData[i_style].field_0x0; }
int Algorythmn(s32 i_style) { return mCamStyleData[i_style].field_0x4; }
int Algorythmn() { return mCurrentStyle->field_0x4; }
- bool Flag(s32 param_0, u16 param_1) { return mCamStyleData[param_0].field_0x6 & param_1; }
+ u16 Flag(s32 param_0, u16 param_1) { return mCamStyleData[param_0].field_0x6 & param_1; }
+ void SetFlag(u16 i_flag) { mCurrentStyle->field_0x6 |= i_flag; }
/* 8008858C */ virtual ~dCamParam_c();
};
@@ -115,7 +122,7 @@ public:
/* 80088918 */ bool CheckLatitudeRange(s16*);
/* 80088988 */ f32 PlayerHideDist();
- /* 80182BB8 */ bool CheckFlag2(u16 i_flag) { return mFlags2 & i_flag; }
+ /* 80182BB8 */ bool CheckFlag2(u16 i_flag) { return (i_flag & mFlags2) != 0; }
/* 80182BE8 */ f32 WaitRollSpeed() { return mWaitRollSpeed; }
/* 80182BF0 */ int WaitRollTimer() { return mWaitRollTimer; }
/* 80182C1C */ int ThrowTimer() { return mThrowTimer; }
@@ -126,7 +133,7 @@ public:
/* 80182CF4 */ int ChargeTimer() { return mChargeTimer; }
/* 80182CFC */ f32 ChargeLatitude() { return mChargeLatitude; }
- bool CheckFlag(u16 i_flag) { return mDebugFlags & i_flag; }
+ bool CheckFlag(u16 i_flag) { return (i_flag & mDebugFlags) != 0; }
f32 ManualEndVal() { return mManualEndVal; }
f32 CinemaScopeTrimHeight() { return mTrimCineScopeHeight; }
f32 VistaTrimHeight() { return mTrimVistaHeight; }
@@ -134,6 +141,15 @@ public:
f32 ForceLockOffDist() { return mForceLockOffDist; }
f32 USOValue() { return mFalseValue; }
f32 USOAngle() { return mFalseAngle; }
+ f32 WindShakeGap4Ctr() { return mWindShakeCtr; }
+ f32 WindShakeGap4Fvy() { return mWindShakeFvy; }
+ f32 LockonChangeCushion() { return mLockonChangeCushion; }
+ int LockonChangeTimer() { return mLockonChangeTimer; }
+ f32 Cushion4Base() { return mBaseCushion; }
+ f32 Cushion4Jump() { return mJumpCushion; }
+ f32 CusCus() { return mCusCus; }
+ f32 ParallelDist() { return mParallelDist; }
+ f32 CurveWeight() { return mCurveWeight; }
/* 0x000 */ f32 mDrawNear;
/* 0x004 */ f32 mDrawFar;
diff --git a/include/d/d_camera.h b/include/d/d_camera.h
index 95b57f812f..79adaa5ff5 100644
--- a/include/d/d_camera.h
+++ b/include/d/d_camera.h
@@ -6,10 +6,10 @@
#include "d/d_bg_s_gnd_chk.h"
#include "d/d_cam_param.h"
#include "d/d_drawlist.h"
+#include "d/d_spline_path.h"
#include "d/d_stage.h"
-#include "dolphin/types.h"
+#include "f_op/f_op_actor.h"
-class fopAc_ac_c;
dAttention_c& dComIfGp_getAttention();
struct dCamMapToolData {
@@ -84,27 +84,6 @@ struct dCamera_monitoring_things {
/* 0x14 */ cXyz field_0x14;
};
-struct d2DBSplinePath {
- /* 0x00 */ s32 field_0x0;
- /* 0x04 */ s32 field_0x4;
- /* 0x08 */ s32 field_0x8;
- /* 0x0C */ s32 field_0xc;
- /* 0x10 */ f32 field_0x10;
- /* 0x14 */ f32 field_0x14;
- /* 0x18 */ f32 field_0x18;
- /* 0x1C */ f32 field_0x1c;
- /* 0x20 */ u32 field_0x20;
- /* 0x24 */ u32 field_0x24;
- /* 0x28 */ u32 field_0x28;
- /* 0x2C */ u32 field_0x2c;
-
- d2DBSplinePath() { Init(0, 0); }
-
- /* 80097878 */ void Init(s32, s32);
- /* 80097B68 */ void Spot(f32*, f32);
- /* 801828D4 */ virtual ~d2DBSplinePath() {}
-};
-
struct dCamera_event_param {
/* 0x00 */ char name[16];
/* 0x10 */ int field_0x10;
@@ -190,13 +169,13 @@ public:
struct BG {
class {
public:
- /* 0x00 */ u8 field_0x0;
+ /* 0x00 */ bool field_0x0;
/* 0x04 */ dBgS_CamGndChk field_0x4;
/* 0x58 */ f32 field_0x58;
} /* 0x000 */ field_0x0;
class {
public:
- /* 0x00 */ u8 field_0x0;
+ /* 0x00 */ bool field_0x0;
/* 0x04 */ dBgS_CamGndChk field_0x4;
/* 0x58 */ f32 field_0x58;
} /* 0x05C */ field_0x5c;
@@ -209,7 +188,7 @@ public:
/* 0x10 */ cXyz field_0x10;
/* 0x1C */ cSAngle field_0x1c;
/* 0x1E */ cSAngle field_0x1e;
- /* 0x20 */ int field_0x20;
+ /* 0x20 */ fopAc_ac_c* field_0x20;
/* 0x24 */ cSGlobe field_0x24;
/* 0x2C */ cSGlobe field_0x2c;
/* 0x34 */ int field_0x34;
@@ -255,42 +234,42 @@ public:
/* 8008933C */ bool getEvStringData(char*, char*, char*);
/* 800894C4 */ fopAc_ac_c* getEvActor(char*);
/* 800895F4 */ fopAc_ac_c* getEvActor(char*, char*);
- /* 80089730 */ int pauseEvCamera();
- /* 800897E8 */ int fixedFrameEvCamera();
- /* 8008A510 */ int stokerEvCamera();
- /* 8008A974 */ int rollingEvCamera();
- /* 8008B9B0 */ int fixedPositionEvCamera();
- /* 8008BE2C */ int uniformTransEvCamera();
- /* 8008BE50 */ int uniformBrakeEvCamera();
- /* 8008BE74 */ int uniformAcceleEvCamera();
+ /* 80089730 */ bool pauseEvCamera();
+ /* 800897E8 */ bool fixedFrameEvCamera();
+ /* 8008A510 */ bool stokerEvCamera();
+ /* 8008A974 */ bool rollingEvCamera();
+ /* 8008B9B0 */ bool fixedPositionEvCamera();
+ /* 8008BE2C */ bool uniformTransEvCamera();
+ /* 8008BE50 */ bool uniformBrakeEvCamera();
+ /* 8008BE74 */ bool uniformAcceleEvCamera();
/* 8008BE98 */ void transEvCamera(int);
- /* 8008E938 */ int watchActorEvCamera();
- /* 8008FAE8 */ int restorePosEvCamera();
- /* 80090174 */ int talktoEvCamera();
+ /* 8008E938 */ bool watchActorEvCamera();
+ /* 8008FAE8 */ bool restorePosEvCamera();
+ /* 80090174 */ bool talktoEvCamera();
/* 80090230 */ bool maptoolIdEvCamera();
- /* 80090478 */ int styleEvCamera();
- /* 80090514 */ int gameOverEvCamera();
- /* 80091468 */ int tactEvCamera();
- /* 800923B8 */ int turnToActorEvCamera();
- /* 800923C0 */ int stbWaitEvCamera();
- /* 800924D0 */ int saveEvCamera();
- /* 8009258C */ int loadEvCamera();
- /* 800929AC */ int useItem0EvCamera();
- /* 800937AC */ int useItem1EvCamera();
- /* 80094240 */ int getItemEvCamera();
- /* 80094A70 */ int possessedEvCamera();
- /* 80095010 */ int fixedFramesEvCamera();
- /* 8009544C */ int bSplineEvCamera();
- /* 800956E4 */ int twoActor0EvCamera();
- /* 80095E7C */ int peepHoleEvCamera();
- /* 80095FD0 */ int digHoleEvCamera();
- /* 800965AC */ int hintTalkEvCamera();
- /* 80096EDC */ int bspTransEvCamera();
- /* 80097694 */ int portalWarpEvCamera();
+ /* 80090478 */ bool styleEvCamera();
+ /* 80090514 */ bool gameOverEvCamera();
+ /* 80091468 */ bool tactEvCamera();
+ /* 800923B8 */ bool turnToActorEvCamera();
+ /* 800923C0 */ bool stbWaitEvCamera();
+ /* 800924D0 */ bool saveEvCamera();
+ /* 8009258C */ bool loadEvCamera();
+ /* 800929AC */ bool useItem0EvCamera();
+ /* 800937AC */ bool useItem1EvCamera();
+ /* 80094240 */ bool getItemEvCamera();
+ /* 80094A70 */ bool possessedEvCamera();
+ /* 80095010 */ bool fixedFramesEvCamera();
+ /* 8009544C */ bool bSplineEvCamera();
+ /* 800956E4 */ bool twoActor0EvCamera();
+ /* 80095E7C */ bool peepHoleEvCamera();
+ /* 80095FD0 */ bool digHoleEvCamera();
+ /* 800965AC */ bool hintTalkEvCamera();
+ /* 80096EDC */ bool bspTransEvCamera();
+ /* 80097694 */ bool portalWarpEvCamera();
/* 8009771C */ cXyz attentionPos(fopAc_ac_c*);
/* 80097738 */ cSAngle directionOf(fopAc_ac_c*);
/* 8009775C */ cXyz positionOf(fopAc_ac_c*);
- /* 8009778C */ void eyePos(fopAc_ac_c*);
+ /* 8009778C */ cXyz eyePos(fopAc_ac_c*);
/* 8016008C */ dCamera_c(camera_class*);
/* 80160304 */ ~dCamera_c();
/* 80160470 */ void initialize(camera_class*, fopAc_ac_c*, u32, u32);
@@ -347,7 +326,7 @@ public:
/* 80165EF4 */ int defaultTriming();
/* 80165FB4 */ void setView(f32, f32, f32, f32);
/* 8016608C */ cSAngle forwardCheckAngle();
- /* 80166764 */ void bumpCheck(u32);
+ /* 80166764 */ bool bumpCheck(u32);
/* 80167BF8 */ bool lineBGCheckBoth(cXyz*, cXyz*, dBgS_LinChk*, u32);
/* 80167CD8 */ BOOL jutOutCheck(cXyz*, f32);
/* 80167E3C */ void tooNearEscape(cXyz*);
@@ -355,13 +334,11 @@ public:
/* 80167FEC */ void checkGroundInfo();
/* 80168744 */ bool chaseCamera(s32);
/* 8016C384 */ bool lockonCamera(s32);
- /* 8016E448 */ void getMsgCmdSpeaker();
- /* 8016E4A4 */ void getMsgCmdCut(s32);
+ /* 8016E448 */ fopAc_ac_c* getMsgCmdSpeaker();
+ /* 8016E4A4 */ s32 getMsgCmdCut(s32);
/* 8016E4F4 */ bool talktoCamera(s32);
- /* 80174E18 */ void talkBasePos(fopAc_ac_c*);
- /* 80174E34 */ void talkEyePos(fopAc_ac_c*);
/* 80174EA4 */ bool CalcSubjectAngle(s16*, s16*);
- /* 80174EAC */ void SaveZoomRatio();
+ /* 80174EAC */ bool SaveZoomRatio();
/* 80174ED4 */ bool subjectCamera(s32);
/* 80176074 */ bool magneCamera(s32);
/* 801767F8 */ bool colosseumCamera(s32);
@@ -378,7 +355,7 @@ public:
/* 8017E730 */ bool fixedPositionCamera(s32);
/* 8017F25C */ bool oneSideCamera(s32);
/* 8017F828 */ bool eventCamera(s32);
- /* 8018050C */ int currentEvCamera();
+ /* 8018050C */ bool currentEvCamera();
/* 801806D4 */ bool letCamera(s32);
/* 801806DC */ void setEventRecoveryTrans(s16);
/* 80180738 */ void runEventRecoveryTrans();
@@ -407,8 +384,11 @@ public:
/* 80181E20 */ cXyz Up();
/* 80181E64 */ cXyz Eye();
/* 80181E98 */ cXyz Center();
- /* 8018295C */ void footHeightOf(fopAc_ac_c*);
+
+ /* 8018295C */ f32 footHeightOf(fopAc_ac_c* i_actor) { return i_actor->current.pos.y; }
/* 801829AC */ cSAngle Bank() { return mBank + mShake.field_0x40; }
+ /* 80174E18 */ cXyz talkBasePos(fopAc_ac_c* i_actor) { return i_actor->current.pos; }
+ /* 80174E34 */ cXyz talkEyePos(fopAc_ac_c* i_actor) { return i_actor->eyePos; }
void debugDraw();
@@ -416,13 +396,13 @@ public:
f32 TrimHeight() { return mTrimHeight; }
int Type() { return mCurType; }
int Mode() { return mCurMode; }
- f32 Fovy() { return mFovY + mShake.field_0x3c; }
+ f32 Fovy() { return mFovy + mShake.field_0x3c; }
bool isModeOK() { return field_0x158.field_0x0; }
bool push_any_key() { return field_0x224; }
- bool chkFlag(u32 i_flag) { return mEventFlags & i_flag; }
- void setFlag(u32 i_flag) { mEventFlags |= i_flag; }
- void clrFlag(u32 i_flag) { mEventFlags &= ~i_flag; }
+ bool chkFlag(u32 i_flag) { return (mEventFlags & i_flag) != 0; }
+ u32 setFlag(u32 i_flag) { return mEventFlags |= i_flag; }
+ u32 clrFlag(u32 i_flag) { return mEventFlags &= ~i_flag; }
bool CheckFlag(u32 i_flag) { return mEventFlags & i_flag; }
@@ -450,7 +430,7 @@ public:
s16 U2() {
if (chkFlag(0x10)) {
- return field_0x5c.field_0x0.U();
+ return field_0x5c.mDirection.U();
} else {
return field_0x8c;
}
@@ -469,27 +449,27 @@ public:
/* 0x021 */ u8 field_0x21;
/* 0x022 */ u8 field_0x22[2];
/* 0x024 */ int field_0x24;
- /* 0x028 */ cSGlobe field_0x28;
+ /* 0x028 */ cSGlobe mDirection;
/* 0x030 */ cXyz mCenter;
/* 0x03C */ cXyz mEye;
/* 0x048 */ cXyz mUp;
/* 0x054 */ cSAngle mBank;
- /* 0x058 */ f32 mFovY;
+ /* 0x058 */ f32 mFovy;
class {
public:
- /* 0x00 */ cSGlobe field_0x0;
- /* 0x08 */ cXyz field_0x8;
- /* 0x14 */ cXyz field_0x14;
- /* 0x20 */ cSAngle field_0x20;
+ /* 0x00 */ cSGlobe mDirection;
+ /* 0x08 */ cXyz mCenter;
+ /* 0x14 */ cXyz mEye;
+ /* 0x20 */ cSAngle mBank;
+ /* 0x24 */ f32 mFovy;
}
/* 0x05C */ field_0x5c;
- /* 0x080 */ f32 field_0x80;
/* 0x084 */ f32 field_0x84;
/* 0x088 */ u32 field_0x88;
/* 0x08C */ cSAngle field_0x8c;
/* 0x090 */ cXyz field_0x90;
/* 0x09C */ cXyz field_0x9c;
- /* 0x0A8 */ int field_0xa8;
+ /* 0x0A8 */ u32 field_0xa8;
/* 0x0AC */ u32 field_0xac;
/* 0x0B0 */ dCamInfo_c field_0xb0;
/* 0x0D0 */ dCamInfo_c field_0xd0[2];
@@ -514,19 +494,19 @@ public:
/* 0x4 */ cSAngle field_0x4;
}
/* 0x158 */ field_0x158;
- /* 0x160 */ int field_0x160;
+ /* 0x160 */ u32 field_0x160;
/* 0x164 */ int field_0x164;
/* 0x168 */ u8 field_0x168;
/* 0x169 */ int field_0x16c;
/* 0x170 */ int field_0x170;
- /* 0x174 */ u32 mCurCamTypeTimer;
+ /* 0x174 */ u32 mCurCamStyleTimer;
/* 0x178 */ u32 mCameraID;
/* 0x17C */ u32 mPadID;
/* 0x180 */ fopAc_ac_c* mpPlayerActor;
/* 0x184 */ fopAc_ac_c* mpLockonTarget;
- /* 0x188 */ u32 field_0x188;
- /* 0x18C */ u32 field_0x18c;
- /* 0x190 */ int field_0x190;
+ /* 0x188 */ fopAc_ac_c* field_0x188;
+ /* 0x18C */ fopAc_ac_c* field_0x18c;
+ /* 0x190 */ int mIsWolf;
/* 0x194 */ bool field_0x194;
/* 0x198 */ fpc_ProcID mLockOnActorID;
/* 0x19C */ fopAc_ac_c* mpLockOnActor;
@@ -565,7 +545,7 @@ public:
/* 0x221 */ bool mTrigB;
/* 0x222 */ u8 field_0x222;
/* 0x223 */ u8 field_0x223;
- /* 0x224 */ u8 field_0x224;
+ /* 0x224 */ bool field_0x224;
/* 0x228 */ dCamForcusLine mFocusLine;
/* 0x298 */ dCamera_FakeAngle_system mFakeAngleSys;
/* 0x2A0 */ dCamera_monitoring_things mMonitor;
@@ -573,10 +553,206 @@ public:
/* 0x2C4 */ int field_0x2c4;
/* 0x2C8 */ f32 field_0x2c8;
/* 0x2CC */ BG mBG;
- /* 0x3E8 */ u8 field_0x3e8;
- /* 0x3EC */ int field_0x3ec;
- /* 0x3F0 */ int field_0x3f0;
- /* 0x3F4 */ u8 field_0x3f4[0x4E8 - 0x3F4];
+ /* 0x3E8 */ union {
+ struct {
+ /* 0x00 */ int field_0x0;
+ /* 0x04 */ int field_0x4;
+ /* 0x08 */ f32 field_0x8;
+ /* 0x0C */ f32 field_0xc;
+ /* 0x10 */ int field_0x10;
+ /* 0x14 */ int field_0x14;
+ /* 0x18 */ s16 field_0x18;
+ /* 0x1A */ s16 field_0x1a;
+ /* 0x1C */ s16 field_0x1c;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2c;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ f32 field_0x38;
+ /* 0x3C */ f32 field_0x3c;
+ /* 0x40 */ f32 field_0x40;
+ /* 0x44 */ int field_0x44;
+ /* 0x48 */ f32 field_0x48;
+ /* 0x4C */ f32 field_0x4c;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ cXyz field_0x58;
+ /* 0x64 */ cXyz field_0x64;
+ /* 0x70 */ bool field_0x70;
+ /* 0x71 */ bool field_0x71;
+ /* 0x72 */ bool field_0x72;
+ /* 0x73 */ bool field_0x73;
+ /* 0x74 */ f32 field_0x74;
+ /* 0x78 */ f32 field_0x78;
+ /* 0x7C */ f32 field_0x7c;
+ /* 0x80 */ f32 field_0x80;
+ /* 0x84 */ f32 field_0x84;
+ /* 0x88 */ f32 field_0x88;
+ /* 0x8C */ int field_0x8c;
+ /* 0x90 */ bool field_0x90;
+ /* 0x91 */ bool field_0x91;
+ /* 0x92 */ bool field_0x92;
+ /* 0x93 */ bool field_0x93;
+ /* 0x94 */ bool field_0x94;
+ /* 0x95 */ bool field_0x95;
+ /* 0x96 */ cSAngle field_0x96;
+ /* 0x98 */ cSAngle field_0x98;
+ /* 0x9A */ cSAngle field_0x9a;
+ /* 0x9C */ int field_0x9c;
+ /* 0xA0 */ int field_0xa0;
+ /* 0xA4 */ f32 field_0xa4;
+ /* 0xA8 */ int field_0xa8;
+ /* 0xAC */ f32 field_0xac;
+ } chase;
+ struct {
+ /* 0x00 */ int field_0x0;
+ /* 0x04 */ u8 field_0x4[8];
+ /* 0x0C */ int field_0xc;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ int field_0x14;
+ /* 0x18 */ bool field_0x18;
+ /* 0x1C */ cXyz field_0x1c;
+ /* 0x28 */ bool field_0x28;
+ /* 0x29 */ bool field_0x29;
+ /* 0x2A */ bool field_0x2a;
+ /* 0x2C */ int field_0x2c;
+ /* 0x30 */ int field_0x30;
+ /* 0x34 */ cSGlobe field_0x34;
+ /* 0x3C */ fpc_ProcID field_0x3c;
+ /* 0x40 */ bool field_0x40;
+ /* 0x42 */ cSAngle field_0x42;
+ /* 0x44 */ int field_0x44;
+ /* 0x48 */ f32 field_0x48;
+ /* 0x4C */ f32 field_0x4c;
+ /* 0x50 */ cSAngle field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5c;
+ /* 0x60 */ f32 field_0x60;
+ } lockon;
+ struct {
+ /* 0x00 */ int field_0x0;
+ /* 0x04 */ cXyz field_0x4;
+ /* 0x10 */ cXyz field_0x10;
+ /* 0x1C */ cXyz field_0x1c;
+ /* 0x28 */ cSGlobe field_0x28;
+ /* 0x30 */ cSGlobe field_0x30;
+ /* 0x38 */ int field_0x38;
+ /* 0x3C */ int field_0x3c;
+ /* 0x40 */ int field_0x40;
+ /* 0x44 */ int field_0x44;
+ /* 0x48 */ int field_0x48;
+ /* 0x4C */ f32 field_0x4c;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5c;
+ /* 0x60 */ f32 field_0x60;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+ /* 0x6C */ f32 field_0x6c;
+ /* 0x70 */ fopAc_ac_c* field_0x70;
+ /* 0x74 */ fopAc_ac_c* field_0x74;
+ /* 0x78 */ fopAc_ac_c* field_0x78;
+ /* 0x7C */ f32 field_0x7c;
+ /* 0x80 */ f32 field_0x80;
+ /* 0x84 */ s16 field_0x84;
+ /* 0x86 */ s16 field_0x86;
+ /* 0x88 */ bool field_0x88;
+ /* 0x89 */ bool field_0x89;
+ /* 0x8C */ u32 field_0x8c;
+ /* 0x90 */ cXyz field_0x90;
+ /* 0x9C */ cXyz field_0x9c;
+ /* 0xA8 */ cSGlobe field_0xa8;
+ /* 0xB0 */ f32 field_0xb0;
+ /* 0xB4 */ cXyz field_0xb4;
+ /* 0xC0 */ cXyz field_0xc0;
+ /* 0xCC */ cXyz field_0xcc;
+ /* 0xD8 */ cXyz field_0xd8;
+ } talk;
+ struct {
+ /* 0x00 */ int field_0x0;
+ /* 0x04 */ cXyz field_0x4;
+ /* 0x10 */ int field_0x10;
+ /* 0x14 */ int field_0x14;
+ /* 0x18 */ int field_0x18;
+ /* 0x1C */ bool field_0x1c;
+ /* 0x1D */ bool field_0x1d;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ cSAngle field_0x28;
+ /* 0x2A */ cSAngle field_0x2a;
+ /* 0x2C */ cSAngle field_0x2c;
+ /* 0x2E */ cSAngle field_0x2e;
+ /* 0x30 */ cXyz field_0x30;
+ /* 0x3C */ cXyz field_0x3c;
+ /* 0x48 */ cSGlobe field_0x48;
+ } subject;
+ struct {
+ /* 0x00 */ int field_0x0;
+ /* 0x04 */ cXyz field_0x4;
+ /* 0x10 */ cXyz field_0x10;
+ /* 0x1C */ cSGlobe field_0x1c;
+ } magne;
+ struct {
+ /* 0x00 */ u8 field_0x0[8];
+ /* 0x08 */ cXyz field_0x8;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ int field_0x18;
+ } colosseum;
+ struct {
+ /* 0x00 */ int field_0x0;
+ /* 0x04 */ int field_0x4;
+ /* 0x08 */ f32 field_0x8;
+ /* 0x0C */ f32 field_0xc;
+ /* 0x10 */ int field_0x10;
+ /* 0x14 */ int field_0x14;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1c;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ cSAngle field_0x28;
+ /* 0x2C */ f32 field_0x2c;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ int field_0x38;
+ /* 0x3C */ f32 field_0x3c;
+ /* 0x40 */ f32 field_0x40;
+ /* 0x44 */ f32 field_0x44;
+ /* 0x48 */ cXyz field_0x48;
+ /* 0x54 */ cXyz field_0x54;
+ /* 0x60 */ cSAngle field_0x60;
+ /* 0x64 */ int field_0x64;
+ /* 0x68 */ bool field_0x68;
+ /* 0x69 */ bool field_0x69;
+ /* 0x6A */ bool field_0x6a;
+ /* 0x6B */ bool field_0x6b;
+ /* 0x6C */ bool field_0x6c;
+ /* 0x70 */ f32 field_0x70;
+ /* 0x74 */ f32 field_0x74;
+ /* 0x78 */ f32 field_0x78;
+ /* 0x7C */ f32 field_0x7c;
+ /* 0x80 */ f32 field_0x80;
+ /* 0x84 */ f32 field_0x84;
+ } tower;
+ struct {
+ /* 0x00 */ int field_0x0;
+ /* 0x04 */ u8 field_0x4[4];
+ /* 0x08 */ cXyz field_0x8;
+ /* 0x14 */ cXyz field_0x14;
+ /* 0x20 */ bool field_0x20;
+ } hookshot;
+ struct {
+ /* 0x00 */ bool field_0x0;
+ /* 0x04 */ int field_0x4;
+ /* 0x08 */ int field_0x8;
+ } event;
+ struct {
+ u8 field_0x0[0x100];
+ } bytes;
+ } mWork;
/* 0x4E8 */ dCamera_event_data mEventData;
/* 0x60C */ u32 mEventFlags;
/* 0x610 */ u8 field_0x610;
@@ -652,7 +828,7 @@ public:
/* 0x92C */ f32 field_0x92c;
/* 0x930 */ u8 field_0x930[0x930 - 0x92c];
/* 0x934 */ f32 field_0x934;
- /* 0x938 */ u8 field_0x938[0x93C - 0x938];
+ /* 0x938 */ int field_0x938;
/* 0x93C */ int field_0x93c;
/* 0x940 */ int field_0x940;
/* 0x944 */ u8 field_0x944;
@@ -662,7 +838,8 @@ public:
/* 0x954 */ u8 field_0x954[0x958 - 0x954];
/* 0x958 */ int field_0x958;
/* 0x95C */ cXyz field_0x95c;
- /* 0x968 */ u8 field_0x968[0x970 - 0x968];
+ /* 0x968 */ f32 field_0x968;
+ /* 0x96C */ f32 field_0x96c;
/* 0x970 */ dCamSetup_c mCamSetup;
/* 0xAEC */ dCamParam_c mCamParam;
/* 0xB0C */ u8 field_0xb0c;
diff --git a/include/d/d_cc_s.h b/include/d/d_cc_s.h
index 619bb360b8..9db69795ed 100644
--- a/include/d/d_cc_s.h
+++ b/include/d/d_cc_s.h
@@ -47,6 +47,7 @@ public:
void SetMass(cCcD_Obj* i_obj, u8 i_priority) { mMass_Mng.Set(i_obj, i_priority); }
void SetMassCam(cM3dGCps& i_cps) { mMass_Mng.SetCam(i_cps); }
u32 GetMassResultCam() { return mMass_Mng.GetResultCam(); }
+ void GetMassCamTopPos(Vec* o_pos) { mMass_Mng.GetCamTopPos(o_pos); }
void PrepareMass() { mMass_Mng.Prepare(); }
u32 ChkMass(cXyz* param_0, fopAc_ac_c** param_1, dCcMassS_HitInf* param_2) {
diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h
index 4432c181e1..aae93b2b76 100644
--- a/include/d/d_com_inf_game.h
+++ b/include/d/d_com_inf_game.h
@@ -85,6 +85,13 @@ class daAlink_c;
class dMsgObject_c;
class J2DOrthoGraph;
+class dComIfG_MesgCamInfo_c {
+public:
+ /* 0x00 */ int mID;
+ /* 0x04 */ int mBasicID;
+ /* 0x08 */ fopAc_ac_c* mActor[10];
+};
+
class dComIfG_play_c {
public:
dComIfG_play_c() { this->ct(); }
@@ -361,10 +368,10 @@ public:
s32 getItemRupeeCount() { return mItemRupeeCount; }
s16 getItemKeyNumCount() { return mItemKeyNumCount; }
void clearNowAnimeID() { mNowAnimeID = -1; }
- void clearMesgCamInfoID() { mMesgCamInfo = -1; }
+ void clearMesgCamInfoID() { mMesgCamInfo.mID = -1; }
void clearBaseAnimeID() { mBaseAnimeID = 0; }
void clearFaceAnimeID() { mFaceAnimeID = 0; }
- void clearMesgCamInfoBasicID() { mMesgCamInfoBasicID = 0; }
+ void clearMesgCamInfoBasicID() { mMesgCamInfo.mBasicID = 0; }
void clearItemMaxLifeCount() { mItemMaxLifeCount = 0; }
void clearItemMaxOilCount() { mItemMaxOilCount = 0; }
void clearItemOilCount() { mItemOilCount = 0; }
@@ -463,23 +470,23 @@ public:
void setMsgCommonArchive(JKRArchive* arc) { mMsgCommonArchive = arc; }
void setMsgArchive(int i, JKRArchive* arc) { mMsgArchive[i] = arc; }
void setMsgObjectClass(dMsgObject_c* obj) { mMsgObjectClass = obj; }
- void setMesgCamInfoBasicID(int id) { mMesgCamInfoBasicID = id; }
+ void setMesgCamInfoBasicID(int id) { mMesgCamInfo.mBasicID = id; }
void setMesgCamInfoActor(fopAc_ac_c* param_1, fopAc_ac_c* param_2, fopAc_ac_c* param_3,
fopAc_ac_c* param_4, fopAc_ac_c* param_5, fopAc_ac_c* param_6,
fopAc_ac_c* param_7, fopAc_ac_c* param_8, fopAc_ac_c* param_9,
fopAc_ac_c* param_10) {
- mMesgCamInfoActor1 = param_1;
- mMesgCamInfoActor2 = param_2;
- mMesgCamInfoActor3 = param_3;
- mMesgCamInfoActor4 = param_4;
- mMesgCamInfoActor5 = param_5;
- mMesgCamInfoActor6 = param_6;
- mMesgCamInfoActor7 = param_7;
- mMesgCamInfoActor8 = param_8;
- mMesgCamInfoActor9 = param_9;
- mMesgCamInfoActor10 = param_10;
+ mMesgCamInfo.mActor[0] = param_1;
+ mMesgCamInfo.mActor[1] = param_2;
+ mMesgCamInfo.mActor[2] = param_3;
+ mMesgCamInfo.mActor[3] = param_4;
+ mMesgCamInfo.mActor[4] = param_5;
+ mMesgCamInfo.mActor[5] = param_6;
+ mMesgCamInfo.mActor[6] = param_7;
+ mMesgCamInfo.mActor[7] = param_8;
+ mMesgCamInfo.mActor[8] = param_9;
+ mMesgCamInfo.mActor[9] = param_10;
}
- int getMesgCamInfo() { return mMesgCamInfoBasicID; }
+ dComIfG_MesgCamInfo_c* getMesgCamInfo() { return &mMesgCamInfo; }
void setFontArchive(JKRArchive* arc) { mFontArchive = arc; }
void setRubyArchive(JKRArchive* arc) { mRubyArchive = arc; }
void setMain2DArchive(JKRArchive* arc) { mMain2DArchive = arc; }
@@ -494,7 +501,7 @@ public:
}
void setPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[param_0][i] |= flag; }
void clearPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[param_0][i] &= ~flag; }
- u32 checkPlayerStatus(int param_0, int i, u32 flag) { return flag & mPlayerStatus[param_0][i]; }
+ u32 checkPlayerStatus(int param_0, int i, u32 flag) { return mPlayerStatus[param_0][i] & flag; }
int getPlayerCameraID(int i) { return mPlayerCameraID[i * 8]; }
int getCameraPlayer1ID(int i) { return mCameraInfo[i].field_0x5; }
@@ -521,6 +528,7 @@ public:
}
f32 getCameraZoomForcus(int i_no) { return mCameraInfo[i_no].mCameraZoomForcus; }
+ void setCameraZoomForcus(int i_no, f32 i_focus) { mCameraInfo[i_no].mCameraZoomForcus = i_focus; }
f32 getCameraZoomScale(int i_no) { return mCameraInfo[i_no].mCameraZoomScale; }
void setCameraZoomScale(int i_no, f32 i_scale) { mCameraInfo[i_no].mCameraZoomScale = i_scale; }
@@ -539,7 +547,7 @@ public:
*o_bank = mCameraInfo[i].mCameraBank;
}
- void setMesgCamInfoID(int param_0) { mMesgCamInfo = param_0; }
+ void setMesgCamInfoID(int param_0) { mMesgCamInfo.mID = param_0; }
void setStatus(u16 status) { mStatus = status; }
s32 checkStatus(u16 flags) { return flags & mStatus; }
@@ -778,18 +786,7 @@ public:
/* 0x04FAB */ u8 field_0x4fab; // related to setWarpItemData
/* 0x04FAC */ u8 field_0x4fac; // related to setWarpItemData
/* 0x04FAD */ u8 field_0x4fad[3];
- /* 0x04FB0 */ int mMesgCamInfo;
- /* 0x04FB4 */ int mMesgCamInfoBasicID;
- /* 0x04FB8 */ fopAc_ac_c* mMesgCamInfoActor1;
- /* 0x04FBC */ fopAc_ac_c* mMesgCamInfoActor2;
- /* 0x04FC0 */ fopAc_ac_c* mMesgCamInfoActor3;
- /* 0x04FC4 */ fopAc_ac_c* mMesgCamInfoActor4;
- /* 0x04FC8 */ fopAc_ac_c* mMesgCamInfoActor5;
- /* 0x04FCC */ fopAc_ac_c* mMesgCamInfoActor6;
- /* 0x04FD0 */ fopAc_ac_c* mMesgCamInfoActor7;
- /* 0x04FD4 */ fopAc_ac_c* mMesgCamInfoActor8;
- /* 0x04FD8 */ fopAc_ac_c* mMesgCamInfoActor9;
- /* 0x04FDC */ fopAc_ac_c* mMesgCamInfoActor10;
+ /* 0x04FB0 */ dComIfG_MesgCamInfo_c mMesgCamInfo;
/* 0x04FE0 */ u32 mPlayerStatus[1][4];
/* 0x04FF0 */ u8 field_0x4ff0[0x8];
/* 0x04FF8 */ __d_timer_info_c mTimerInfo;
@@ -2792,6 +2789,10 @@ inline f32 dComIfGp_getCameraZoomScale(int i_no) {
return g_dComIfG_gameInfo.play.getCameraZoomScale(i_no);
}
+inline void dComIfGp_setCameraZoomForcus(int i_no, f32 i_focus) {
+ g_dComIfG_gameInfo.play.setCameraZoomForcus(i_no, i_focus);
+}
+
inline f32 dComIfGp_getCameraZoomForcus(int i_no) {
return g_dComIfG_gameInfo.play.getCameraZoomForcus(i_no);
}
@@ -3236,11 +3237,11 @@ inline void dComIfGp_setMesgCameraAttrInfo(int param_1) {
g_dComIfG_gameInfo.play.setMesgCamInfoBasicID(param_1);
}
-inline int dComIfGp_getMesgCameraInfo() {
+inline dComIfG_MesgCamInfo_c* dComIfGp_getMesgCameraInfo() {
return g_dComIfG_gameInfo.play.getMesgCamInfo();
}
-inline s32 dComIfGp_roomControl_getStayNo() {
+inline int dComIfGp_roomControl_getStayNo() {
return dStage_roomControl_c::getStayNo();
}
diff --git a/include/d/d_name.h b/include/d/d_name.h
index 229debe31b..8360d381b0 100644
--- a/include/d/d_name.h
+++ b/include/d/d_name.h
@@ -14,7 +14,7 @@ class STControl;
class dNm_HIO_c {
public:
/* 8024E3E0 */ dNm_HIO_c();
- /* 802511A4 */ virtual ~dNm_HIO_c();
+ /* 802511A4 */ virtual ~dNm_HIO_c() {}
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 mMenuScale;
@@ -27,7 +27,7 @@ public:
dDlst_NameIN_c() {}
/* 80251094 */ virtual void draw();
- /* 8025115C */ virtual ~dDlst_NameIN_c();
+ /* 8025115C */ virtual ~dDlst_NameIN_c() {}
/* 0x04 */ J2DScreen* NameInScr;
/* 0x08 */ JUTFont* font;
diff --git a/include/d/d_particle.h b/include/d/d_particle.h
index 958c1a145f..eea3e1d825 100644
--- a/include/d/d_particle.h
+++ b/include/d/d_particle.h
@@ -6,6 +6,8 @@
#include "d/d_particle_name.h"
#include "d/d_kankyo.h"
+void dPa_cleanupGX();
+
class J3DAnmTexPattern;
class J3DModel;
class J3DModelData;
@@ -114,8 +116,8 @@ public:
dPa_setColorEcallBack(const GXColor& color) { mColor = color; }
/* 800502E4 */ virtual ~dPa_setColorEcallBack() {}
- /* 800502B0 */ virtual void draw(JPABaseEmitter*);
- /* 800502E0 */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
+ /* 800502B0 */ virtual void draw(JPABaseEmitter*) { GXSetTevColor(GX_TEVREG1, mColor); }
+ /* 800502E0 */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8) {}
/* 0x4 */ GXColor mColor;
};
@@ -126,7 +128,7 @@ public:
/* 8004FF8C */ virtual ~dPa_selectTexEcallBack() {}
/* 8004ADC4 */ virtual void draw(JPABaseEmitter*);
- /* 80050010 */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
+ /* 80050010 */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8) {}
/* 0x4 */ u8 field_0x4;
};
@@ -184,7 +186,7 @@ public:
/* 80050378 */ virtual ~dPa_modelEcallBack() {}
/* 8004AA34 */ virtual void draw(JPABaseEmitter*);
- /* 80050014 */ virtual void drawAfter(JPABaseEmitter*);
+ /* 80050014 */ virtual void drawAfter(JPABaseEmitter* param_0) { cleanupModel(param_0); }
/* 8004AAA8 */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
static void setModel(JPABaseEmitter* param_0, J3DModelData* param_1,
@@ -211,7 +213,7 @@ class dPa_light8EcallBack : public dPa_levelEcallBack {
public:
/* 8005015C */ virtual ~dPa_light8EcallBack() {}
/* 8004A340 */ virtual void draw(JPABaseEmitter*);
- /* 800501E0 */ virtual void drawAfter(JPABaseEmitter*);
+ /* 800501E0 */ virtual void drawAfter(JPABaseEmitter*) { dPa_cleanupGX(); }
/* 8004979C */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
};
@@ -226,7 +228,7 @@ class dPa_gen_d_light8EcallBack : public dPa_levelEcallBack {
public:
/* 800503FC */ virtual ~dPa_gen_d_light8EcallBack() {}
/* 8004A388 */ virtual void draw(JPABaseEmitter*);
- /* 80050098 */ virtual void drawAfter(JPABaseEmitter*);
+ /* 80050098 */ virtual void drawAfter(JPABaseEmitter*) { dPa_cleanupGX(); }
/* 800497CC */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
};
@@ -241,7 +243,7 @@ class dPa_gen_b_light8EcallBack : public dPa_levelEcallBack {
public:
/* 800500B8 */ virtual ~dPa_gen_b_light8EcallBack() {}
/* 8004A364 */ virtual void draw(JPABaseEmitter*);
- /* 8005013C */ virtual void drawAfter(JPABaseEmitter*);
+ /* 8005013C */ virtual void drawAfter(JPABaseEmitter*) { dPa_cleanupGX(); }
/* 800497B0 */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
};
@@ -452,7 +454,7 @@ public:
}
static dPa_selectTexEcallBack mTsubo[8];
- static u8 mLifeBall[24];
+ static dPa_setColorEcallBack mLifeBall[3];
static Mtx mWindViewMatrix;
static JPAEmitterManager* mEmitterMng;
static dPa_wbPcallBack_c mWaterBubblePcallBack;
diff --git a/include/d/d_s_play.h b/include/d/d_s_play.h
index 816ca182d1..4c7dc454a8 100644
--- a/include/d/d_s_play.h
+++ b/include/d/d_s_play.h
@@ -1,7 +1,7 @@
#ifndef D_S_D_S_PLAY_H
#define D_S_D_S_PLAY_H
-#include "SSystem/SComponent/c_xyz.h"
+#include "d/d_s_play_env.h"
#include "f_op/f_op_scene.h"
#include "m_Do/m_Do_hostIO.h"
@@ -32,32 +32,6 @@ public:
void genMessage(JORMContext*);
};
-class dScnPly_env_otherHIO_c {
-public:
- /* 80259440 */ dScnPly_env_otherHIO_c();
-
- /* 8025AC0C */ virtual ~dScnPly_env_otherHIO_c() {}
-
- /* 0x4 */ f32 mShadowDensity;
- /* 0x8 */ u8 mLODBias;
- /* 0x9 */ u8 field_0x9;
- /* 0xA */ u8 mDispTransCylinder;
-};
-
-class dScnPly_env_debugHIO_c {
-public:
- /* 80259468 */ dScnPly_env_debugHIO_c();
-
- /* 8025ABC4 */ virtual ~dScnPly_env_debugHIO_c() {}
-
-private:
- /* 0x04 */ u8 field_0x4;
- /* 0x08 */ cXyz mBoxCullMinSize;
- /* 0x14 */ cXyz mBoxCullMaxSize;
- /* 0x20 */ cXyz mSphereCullCenter;
- /* 0x2C */ f32 mSphereCullRadius;
-};
-
class dScnPly_env_HIO_c {
public:
/* 8025AD04 */ virtual ~dScnPly_env_HIO_c() {}
@@ -67,9 +41,6 @@ public:
/* 0x14 */ dScnPly_env_debugHIO_c mDebug;
};
-extern s8 pauseTimer__9dScnPly_c;
-extern s8 nextPauseTimer__9dScnPly_c; // sPauseTimer
-
class dScnPly_c : public scene_class {
public:
/* 80259400 */ s8 calcPauseTimer();
diff --git a/include/d/d_s_play_env.h b/include/d/d_s_play_env.h
new file mode 100644
index 0000000000..5d207dcc8a
--- /dev/null
+++ b/include/d/d_s_play_env.h
@@ -0,0 +1,27 @@
+#include "SSystem/SComponent/c_xyz.h"
+
+class dScnPly_env_otherHIO_c {
+public:
+ /* 80259440 */ dScnPly_env_otherHIO_c();
+
+ /* 8025AC0C */ virtual ~dScnPly_env_otherHIO_c() {}
+
+ /* 0x4 */ f32 mShadowDensity;
+ /* 0x8 */ u8 mLODBias;
+ /* 0x9 */ u8 field_0x9;
+ /* 0xA */ u8 mDispTransCylinder;
+};
+
+class dScnPly_env_debugHIO_c {
+public:
+ /* 80259468 */ dScnPly_env_debugHIO_c();
+
+ /* 8025ABC4 */ virtual ~dScnPly_env_debugHIO_c() {}
+
+private:
+ /* 0x04 */ u8 field_0x4;
+ /* 0x08 */ cXyz mBoxCullMinSize;
+ /* 0x14 */ cXyz mBoxCullMaxSize;
+ /* 0x20 */ cXyz mSphereCullCenter;
+ /* 0x2C */ f32 mSphereCullRadius;
+};
diff --git a/include/d/d_spline_path.h b/include/d/d_spline_path.h
index 7e011ed099..f45d8d95f2 100644
--- a/include/d/d_spline_path.h
+++ b/include/d/d_spline_path.h
@@ -16,12 +16,6 @@ struct dPathCurve {
class d2DBSplinePath {
public:
- /* 80097878 */ void Init(s32, s32);
- /* 80097904 */ bool Step();
- /* 80097B20 */ f32 Calc(f32*);
- /* 80097A6C */ cXyz Calc(cXyz*);
- /* 80097B68 */ f32 Spot(f32*, f32);
-
/* 0x00 */ s32 field_0x00;
/* 0x04 */ s32 field_0x04;
/* 0x08 */ s32 field_0x08;
@@ -30,7 +24,14 @@ public:
/* 0x14 */ f32 mCurveWeight[3];
/* 0x20 */ int mCurveKey[3];
/* 0x2C */ int field_0x2c;
- /* 0x30 */ void* field_0x30;
+
+ d2DBSplinePath() { Init(0, 0); }
+ /* 80097878 */ void Init(s32, s32);
+ /* 80097904 */ bool Step();
+ /* 80097B20 */ f32 Calc(f32*);
+ /* 80097A6C */ cXyz Calc(cXyz*);
+ /* 80097B68 */ f32 Spot(f32*, f32);
+ /* 801828D4 */ virtual ~d2DBSplinePath() {}
};
#endif /* D_D_SPLINE_PATH_H */
diff --git a/include/d/d_stage.h b/include/d/d_stage.h
index 5f11a9c264..e63b56c8ef 100644
--- a/include/d/d_stage.h
+++ b/include/d/d_stage.h
@@ -561,7 +561,7 @@ public:
void setTreasure(stage_tresure_class*);
- s16 getWorldRollAngleX() { return mWorldRollAngleX; }
+ s16 getWorldRollAngleX() { return (s16)mWorldRollAngleX; }
s16 getWorldRollDirAngleY() { return mWorldRollDirAngleY; }
public:
diff --git a/include/f_op/f_op_camera.h b/include/f_op/f_op_camera.h
index da55182179..584bff29d4 100644
--- a/include/f_op/f_op_camera.h
+++ b/include/f_op/f_op_camera.h
@@ -8,6 +8,7 @@ class camera_class;
struct camera_process_profile_definition {
/* 0x00 */ view_process_profile_definition base;
/* 0x3C */ leafdraw_method_class* sub_method; // Subclass methods
+ /* 0x40 */ u32 unk_0x40;
};
static s32 fopCam_Draw(camera_class* i_this);