diff options
| author | Caroline Madsen <69010899+randomsalience@users.noreply.github.com> | 2024-10-27 00:35:25 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-26 21:35:25 -0700 |
| commit | f5e80cf9fda54894e97af8629386e2a7c562479a (patch) | |
| tree | 033b66397086e01b49bb30968cc30e3480a11c76 /include | |
| parent | 606178dc88e162969a636644f410c72cbb5eca64 (diff) | |
d_camera work (#2226)
Diffstat (limited to 'include')
| -rw-r--r-- | include/SSystem/SComponent/c_angle.h | 18 | ||||
| -rw-r--r-- | include/SSystem/SComponent/c_bg_s_lin_chk.h | 23 | ||||
| -rw-r--r-- | include/d/actor/d_a_alink.h | 8 | ||||
| -rw-r--r-- | include/d/actor/d_a_midna.h | 12 | ||||
| -rw-r--r-- | include/d/actor/d_a_player.h | 16 | ||||
| -rw-r--r-- | include/d/d_attention.h | 2 | ||||
| -rw-r--r-- | include/d/d_bg_s_grp_pass_chk.h | 5 | ||||
| -rw-r--r-- | include/d/d_bg_s_sph_chk.h | 8 | ||||
| -rw-r--r-- | include/d/d_cam_param.h | 15 | ||||
| -rw-r--r-- | include/d/d_camera.h | 131 | ||||
| -rw-r--r-- | include/d/d_cc_mass_s.h | 2 | ||||
| -rw-r--r-- | include/d/d_cc_s.h | 2 | ||||
| -rw-r--r-- | include/d/d_com_inf_actor.h | 7 | ||||
| -rw-r--r-- | include/d/d_com_inf_game.h | 8 | ||||
| -rw-r--r-- | include/d/d_drawlist.h | 1 | ||||
| -rw-r--r-- | include/d/d_kankyo.h | 2 | ||||
| -rw-r--r-- | include/d/d_stage.h | 11 | ||||
| -rw-r--r-- | include/f_op/f_op_camera.h | 2 | ||||
| -rw-r--r-- | include/f_op/f_op_view.h | 4 |
19 files changed, 204 insertions, 73 deletions
diff --git a/include/SSystem/SComponent/c_angle.h b/include/SSystem/SComponent/c_angle.h index debf6ad07c..2ac5066607 100644 --- a/include/SSystem/SComponent/c_angle.h +++ b/include/SSystem/SComponent/c_angle.h @@ -63,6 +63,9 @@ struct cAngle { /* Converts Radian value into Degree value */ static f32 r2d(f32 r) { return Radian_to_Degree(r); } + /* Converts Degree value into Radian value */ + static f32 d2r(f32 d) { return Degree_to_Radian(d); } + /* Converts Degree value to s16 angle */ static s16 d2s(f32 d) { return Degree_to_SAngle(d); } @@ -111,16 +114,23 @@ public: void Val(const cXyz&); cXyz Xyz(void) const; void Globe(class cSGlobe*) const; + + void R(f32 i_radial) { mRadial = i_radial; } + void U(cSAngle const& i_angle) { mAngle2 = i_angle.Val(); } + void V(cSAngle const& i_angle) { mAngle1 = i_angle.Val(); } }; class cSGlobe { public: float mRadius; - cSAngle mAzimuth; // original: V - cSAngle mInclination; // original: U + cSAngle mInclination; // original: V + cSAngle mAzimuth; // original: U cSGlobe() {} + void R(f32 i_radius) { mRadius = i_radius; } + void U(cSAngle const& i_azimuth) { mAzimuth = i_azimuth.Val(); } + cSGlobe(const cSGlobe&); cSGlobe(float, short, short); cSGlobe(float, const cSAngle&, const cSAngle&); @@ -132,8 +142,8 @@ public: void Val(float, const cSAngle&, const cSAngle&); void Val(const cXyz&); float R(void) const { return mRadius; } - const cSAngle& V(void) const { return mAzimuth; } - const cSAngle& U(void) const { return mInclination; } + const cSAngle& V(void) const { return mInclination; } + const cSAngle& U(void) const { return mAzimuth; } cXyz Xyz(void) const; void Polar(cSPolar*) const; cXyz Norm(void) const; diff --git a/include/SSystem/SComponent/c_bg_s_lin_chk.h b/include/SSystem/SComponent/c_bg_s_lin_chk.h index ad5be88650..207e40a0e0 100644 --- a/include/SSystem/SComponent/c_bg_s_lin_chk.h +++ b/include/SSystem/SComponent/c_bg_s_lin_chk.h @@ -9,13 +9,20 @@ class cBgS_LinChk : public cBgS_Chk, public cBgS_PolyInfo { public: /* 0x024 */ cM3dGLin mLin; /* 0x040 */ cXyz field_0x40; - /* 0x04C */ u32 field_0x4c; + /* 0x04C */ u32 mStts; /* 0x050 */ bool mPreWallChk; /* 0x051 */ bool mPreGroundChk; /* 0x052 */ bool mPreRoofChk; /* 0x053 */ bool mFrontFlag; /* 0x054 */ bool mBackFlag; + enum Status { + STTS_HIT = 0x10, + STTS_ROOF_OFF = 0x20000000, + STTS_WALL_OFF = 0x40000000, + STTS_GROUND_OFF = 0x80000000, + }; + public: cBgS_LinChk(); void ct(); @@ -25,9 +32,9 @@ public: virtual ~cBgS_LinChk(); - void ClrHit() { field_0x4c &= ~16; } - void SetHit() { field_0x4c |= 16; } - u32 ChkHit() const { return field_0x4c & 16; } + void ClrHit() { mStts &= ~STTS_HIT; } + void SetHit() { mStts |= STTS_HIT; } + u32 ChkHit() const { return mStts & STTS_HIT; } void SetCross(const cXyz& pos) { mLin.SetEnd(pos); } cXyz& i_GetCross() { return mLin.GetEnd(); } cXyz* GetCrossP() { return &mLin.GetEndP(); } @@ -40,8 +47,12 @@ public: bool GetPreGroundChk() const { return mPreGroundChk; } bool GetPreRoofChk() const { return mPreRoofChk; } cXyz* GetStartP() { return &mLin.GetStartP(); } - void ClrSttsRoofOff() { field_0x4c &= ~0x20000000; } - void ClrSttsWallOff() { field_0x4c &= ~0x40000000; } + void ClrSttsRoofOff() { mStts &= ~STTS_ROOF_OFF; } + void SetSttsRoofOff() { mStts |= STTS_ROOF_OFF; } + void ClrSttsWallOff() { mStts &= ~STTS_WALL_OFF; } + void SetSttsWallOff() { mStts |= STTS_WALL_OFF; } + void ClrSttsGroundOff() { mStts &= ~STTS_GROUND_OFF; } + void SetSttsGroundOff() { mStts |= STTS_GROUND_OFF; } }; #endif /* C_BG_S_LIN_CHK_H */ diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 92ab3d82bc..3419656f72 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -3082,7 +3082,7 @@ public: virtual BOOL checkHorseRideNotReady() const; virtual bool checkArrowChargeEnd() const; virtual f32 getSearchBallScale() const; - virtual s16 checkFastShotTime(); + virtual int checkFastShotTime(); virtual bool checkNoEquipItem() const; virtual bool checkKandelaarSwing(int) const; virtual s16 getBoardCutTurnOffsetAngleY() const; @@ -3334,6 +3334,12 @@ public: bool checkHorseGetOffMode() const { return mProcID == PROC_HORSE_GETOFF; } bool checkHorseRideOn() const { return mProcID == PROC_HORSE_RIDE; } bool checkGrabUp() const { return mProcID == PROC_GRAB_UP; } + bool checkSpinnerRideWait() const { + return mProcID == PROC_SPINNER_WAIT && mProcVar2.field_0x300c == 0; + } + + fopAc_ac_c* getCopyRodActor() { return mCopyRodAcKeep.getActor(); } + fopAc_ac_c* getHookshotRoofWaitActor() { return mCargoCarryAcKeep.getActor(); } BOOL checkRideOn() const { return mRideStatus != 0; } diff --git a/include/d/actor/d_a_midna.h b/include/d/actor/d_a_midna.h index d79b08645b..6f9e614717 100644 --- a/include/d/actor/d_a_midna.h +++ b/include/d/actor/d_a_midna.h @@ -29,7 +29,7 @@ public: enum daMidna_FLG0 { FLG0_UNK_80000000 = 0x80000000, - FLG0_UNK_8000000 = 0x8000000, + FLG0_PORTAL_OBJ_CALL = 0x8000000, FLG0_NPC_NEAR = 0x100000, FLG0_NPC_FAR = 0x40000, FLG0_UNK_20000 = 0x20000, @@ -112,6 +112,7 @@ public: bool checkDemoTypeNone() const { return mDemoType == 0; } void changeOriginalDemo() { mDemoType = 3; } void changeDemoMode(u32 mode) { mDemoMode = mode; } + BOOL checkPortalObjCall() { return checkStateFlg0(FLG0_PORTAL_OBJ_CALL); } BOOL checkNpcNear() { return checkStateFlg0(FLG0_NPC_NEAR); } BOOL checkNpcFar() { return checkStateFlg0(FLG0_NPC_FAR); } BOOL checkNoDraw() const { return checkStateFlg0(FLG0_NO_DRAW); } @@ -137,7 +138,7 @@ public: } void offTagWaitPos() { - offStateFlg0((daMidna_FLG0)(FLG0_UNK_80000000 | FLG0_UNK_8000000 | FLG0_UNK_400)); + offStateFlg0((daMidna_FLG0)(FLG0_UNK_80000000 | FLG0_PORTAL_OBJ_CALL | FLG0_UNK_400)); } void onTagNoHairLead() { @@ -176,7 +177,7 @@ public: bool checkPortalObjRide() const { - return checkStateFlg0(FLG0_UNK_8000000) && checkStateFlg0(FLG0_UNK_200); + return checkStateFlg0(FLG0_PORTAL_OBJ_CALL) && checkStateFlg0(FLG0_UNK_200); } inline static BOOL checkMidnaRealBody(); @@ -191,6 +192,11 @@ public: void resetRatBody() {} + bool checkFlyWaitAnime() { + return field_0x5e4[0].getIdx() == 0x1CB || field_0x5e4[0].getIdx() == 0x1C7 + || field_0x5e4[0].getIdx() == 0x1C8 || field_0x5e4[0].getIdx() == 0x1C9; + } + static u8 const m_texDataTable[84]; static u8 const m_anmDataTable[636]; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index ded02632ca..a47eecb73b 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -325,6 +325,8 @@ public: FLG3_UNK_80000000 = 0x80000000, FLG3_UNK_40000000 = 0x40000000, FLG3_UNK_20000000 = 0x20000000, + FLG3_COPY_ROD_ATN_KEEP = 0x10000000, + FLG3_BOOMERANG_ATN_KEEP = 0x8000000, FLG3_UNK_4000000 = 0x4000000, FLG3_UNK_2000000 = 0x2000000, FLG3_UNK_1000000 = 0x1000000, @@ -445,6 +447,7 @@ public: RFLG0_GRAB_UP_END = 0x20, RFLG0_UNK_10 = 0x10, RFLG0_UNK_8 = 0x8, + RFLG0_GRAB_THROW = 0x4, RFLG0_UNK_2 = 0x2, RFLG0_UNK_1 = 0x1, }; @@ -595,8 +598,8 @@ public: virtual MtxP getBottleMtx(); virtual BOOL checkPlayerGuard() const; virtual u32 checkPlayerFly() const { return 0; } - virtual BOOL checkFrontRoll() const; // weak - virtual BOOL checkWolfDash() const; // weak + virtual BOOL checkFrontRoll() const { return FALSE; } + virtual BOOL checkWolfDash() const { return FALSE; } virtual BOOL checkAutoJump() const; virtual bool checkSideStep() const; virtual bool checkWolfTriggerJump() const; @@ -640,7 +643,7 @@ public: virtual bool cancelWolfLock(fopAc_ac_c*); virtual s32 getAtnActorID() const { return -1; } virtual s32 getItemID() const; - virtual s32 getGrabActorID() const; // weak + virtual s32 getGrabActorID() const { return -1; } virtual BOOL exchangeGrabActor(fopAc_ac_c*); virtual BOOL setForceGrab(fopAc_ac_c*, int, int); virtual void setForcePutPos(cXyz const&); @@ -652,7 +655,7 @@ public: virtual void setOutPower(f32, short, int); virtual void setGrabCollisionOffset(f32, f32, cBgS_PolyInfo*); virtual void onMagneGrab(f32, f32); - virtual void onFrollCrashFlg(u8, int); // weak + virtual void onFrollCrashFlg(u8, int) {} virtual MtxP getModelJointMtx(u16); virtual MtxP getHeadMtx(); virtual bool setHookshotCarryOffset(fpc_ProcID, cXyz const*); @@ -684,7 +687,7 @@ public: virtual BOOL checkHorseRideNotReady() const; virtual bool checkArrowChargeEnd() const; virtual f32 getSearchBallScale() const; - virtual s16 checkFastShotTime(); + virtual int checkFastShotTime(); virtual bool checkNoEquipItem() const; virtual bool checkFireMaterial() const; virtual bool checkKandelaarSwing(int) const; @@ -788,6 +791,7 @@ public: BOOL checkHorseZelda() const { return checkNoResetFlg2(FLG2_HORSE_ZELDA); } BOOL checkSpecialHorseRide() { return checkNoResetFlg2(daPy_FLG2(FLG2_HORSE_ZELDA | FLG2_UNK_1000000 | FLG2_UNK_800000)); } BOOL checkBoardNoFootAngle() const { return checkResetFlg1(RFLG1_UNK_40); } + bool checkGrabThrow() const { return checkResetFlg0(RFLG0_GRAB_THROW); } void onBossRoomWait() { onEndResetFlg0(ERFLG0_BOSS_ROOM_WAIT); } void onBeeFollow() { onEndResetFlg0(ERFLG0_BEE_FOLLOW); } @@ -875,6 +879,8 @@ public: BOOL checkWolfGrowl() const { return checkResetFlg0(RFLG0_WOLF_GROWL); } BOOL checkWolfThreat() const { return checkWolfGrowl(); } BOOL checkWolfBark() const { return checkResetFlg0(RFLG0_WOLF_BARK); } + u32 checkBoomerangAtnKeep() const { return checkNoResetFlg3(FLG3_BOOMERANG_ATN_KEEP); } + u32 checkCopyRodAtnKeep() const { return checkNoResetFlg3(FLG3_COPY_ROD_ATN_KEEP); } void onPlayerNoDraw() { onNoResetFlg0(FLG0_PLAYER_NO_DRAW); } void offPlayerNoDraw() { offNoResetFlg0(FLG0_PLAYER_NO_DRAW); } diff --git a/include/d/d_attention.h b/include/d/d_attention.h index d08d0fd814..c17aab2eb6 100644 --- a/include/d/d_attention.h +++ b/include/d/d_attention.h @@ -216,6 +216,8 @@ public: void clrFlag(u32 flag) { mFlags &= ~flag; } int GetActionCount() { return mActionCount; } int GetLockonCount() { return mLockonCount; } + void LockSoundOn() { clrFlag(0x400000); } + void LockSoundOff() { setFlag(0x400000); } bool Lockon() { return LockonTruth() || chkFlag(0x20000000); } // only matches with -O2? int ZHintRequest(fopAc_ac_c* param_1, int param_2) { return mZHintTarget.request(param_1, param_2); diff --git a/include/d/d_bg_s_grp_pass_chk.h b/include/d/d_bg_s_grp_pass_chk.h index 058419e02f..301c657813 100644 --- a/include/d/d_bg_s_grp_pass_chk.h +++ b/include/d/d_bg_s_grp_pass_chk.h @@ -17,12 +17,13 @@ public: void OnWaterGrp() { mGrp |= WATER_GRP; } void OnSpl() { mGrp |= WATER_GRP; } + void OffWaterGrp() { mGrp &= ~WATER_GRP; } void OnNormalGrp() { mGrp |= NORMAL_GRP; } void OffNormalGrp() { mGrp &= ~NORMAL_GRP; } void OffFullGrp() { mGrp &= ~FULL_GRP; } void OnAll() { mGrp |= FULL_GRP; } - u32 MaskNormalGrp() const {return mGrp & 1; } - u32 MaskWaterGrp() const {return mGrp & 2; } + u32 MaskNormalGrp() const {return mGrp & NORMAL_GRP; } + u32 MaskWaterGrp() const {return mGrp & WATER_GRP; } private: /* 0x4 */ u32 mGrp; }; diff --git a/include/d/d_bg_s_sph_chk.h b/include/d/d_bg_s_sph_chk.h index 9186dc694d..460bceb937 100644 --- a/include/d/d_bg_s_sph_chk.h +++ b/include/d/d_bg_s_sph_chk.h @@ -15,7 +15,15 @@ public: /* 80078A14 */ dBgS_SphChk(); /* 80078AC0 */ virtual ~dBgS_SphChk(); + void SetCallback(SphChk_Callback i_callback) { mCallback = i_callback; } + /* 0x50 */ SphChk_Callback mCallback; }; +class dBgS_CamSphChk : public dBgS_SphChk { +public: + dBgS_CamSphChk() { SetCam(); } + /* 80165E74 */ virtual ~dBgS_CamSphChk() {} +}; + #endif /* D_BG_D_BG_S_SPH_CHK_H */ diff --git a/include/d/d_cam_param.h b/include/d/d_cam_param.h index 074d3f2fd2..438a796283 100644 --- a/include/d/d_cam_param.h +++ b/include/d/d_cam_param.h @@ -31,6 +31,12 @@ public: /* 80088464 */ dCamBGChk_c(); f32 WallUpDistance() { return mWallUpDistance; } + f32 FwdDistance(s32 param_0) { return mChkInfo[param_0].mDistance; } + s16 FwdChkAngle(s32 param_0) { return cAngle::d2s(mChkInfo[param_0].mChkAngle); } + f32 FwdWeightH(s32 param_0) { return mChkInfo[param_0].mWeightH; } + f32 FwdWeightL(s32 param_0) { return mChkInfo[param_0].mWeightL; } + f32 FwdBackMargin() { return mFwdBackMargin; } + f32 FwdCushion() { return mFwdCushion; } // name is a guess for now struct ChkInfo { @@ -79,7 +85,7 @@ public: /* 80182C74 */ void Arg0(u8); /* 80182C7C */ void Fovy(u8); /* 80182C58 */ void Fovy(); - /* 80182CB4 */ void CheckFlag(u16); + /* 80182CB4 */ bool CheckFlag(u16 flag) { return mCurrentStyle->field_0x6 & flag; } /* 80182CD0 */ void Val(s32, int); /* 0x00 */ u8 mMapToolFovy; @@ -108,7 +114,7 @@ public: /* 80182BB8 */ void CheckFlag2(u16); /* 80182BE8 */ void WaitRollSpeed(); /* 80182BF0 */ void WaitRollTimer(); - /* 80182C1C */ void ThrowTimer(); + /* 80182C1C */ // void ThrowTimer(); /* 80182C24 */ void ThrowCushion(); /* 80182C2C */ void ThrowVAngle(); /* 80182C34 */ void ThrowCtrAdjust(); @@ -120,6 +126,11 @@ public: f32 ManualEndVal() { return mManualEndVal; } f32 CinemaScopeTrimHeight() { return mTrimCineScopeHeight; } f32 VistaTrimHeight() { return mTrimVistaHeight; } + f32 ForceLockOffTimer() { return mForceLockOffTimer; } + f32 ForceLockOffDist() { return mForceLockOffDist; } + int ThrowTimer() { return mThrowTimer; } + f32 USOValue() { return mFalseValue; } + f32 USOAngle() { return mFalseAngle; } /* 0x000 */ f32 mDrawNear; /* 0x004 */ f32 mDrawFar; diff --git a/include/d/d_camera.h b/include/d/d_camera.h index 0248f65099..eb0d120644 100644 --- a/include/d/d_camera.h +++ b/include/d/d_camera.h @@ -1,6 +1,7 @@ #ifndef D_D_CAMERA_H #define D_D_CAMERA_H +#include "d/d_attention.h" #include "d/d_bg_s_lin_chk.h" #include "d/d_bg_s_gnd_chk.h" #include "d/d_cam_param.h" @@ -9,12 +10,25 @@ #include "dolphin/types.h" class fopAc_ac_c; +dAttention_c& dComIfGp_getAttention(); struct dCamMapToolData { dCamMapToolData() { Clr(); } /* 8015FEB8 */ int Set(s32, s32, fopAc_ac_c*, u16, u8); + dCamMapToolData& operator=(dCamMapToolData const& other) { + __memcpy(&field_0x0, &other.field_0x0, sizeof(stage_camera2_data_class)); + __memcpy(&field_0x18, &other.field_0x18, sizeof(stage_arrow_data_class)); + field_0x2c = other.field_0x2c; + field_0x30 = other.field_0x30; + field_0x34 = other.field_0x34; + field_0x38 = other.field_0x38; + field_0x3a = other.field_0x3a; + field_0x3b = other.field_0x3b; + return *this; + } + void Clr() { field_0x2c = 0xFF; field_0x30 = 0xFF; @@ -119,6 +133,29 @@ struct dCamera_type_data { /* 0x18 */ s16 field_0x18[2][11]; }; // Size: 0x44 +struct camSphChkdata { + camSphChkdata(cXyz* i_center, cXyz* param_1, f32 i_radius) { + field_0x0 = i_center; + field_0x8 = param_1; + field_0xc = *i_center; + field_0x4 = i_radius; + field_0x1c = false; + field_0x18 = i_radius; + } + + void Base(cXyz* param_0) { + field_0x0 = param_0; + field_0xc = *param_0; + } + + /* 0x00 */ cXyz* field_0x0; + /* 0x04 */ f32 field_0x4; + /* 0x08 */ cXyz* field_0x8; + /* 0x0C */ cXyz field_0xc; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ bool field_0x1c; +}; + class camera_class; class dCamera_c; @@ -143,7 +180,7 @@ public: /* 0x0C */ f32 mPosXDelta; /* 0x10 */ f32 mPosYDelta; /* 0x14 */ f32 mValueDelta; - /* 0x18 */ cSAngle field_0x18; + /* 0x18 */ cSAngle mAngle; }; /* 0x00 */ _stick mMainStick; @@ -179,7 +216,7 @@ public: /* 0x38 */ f32 field_0x38; /* 0x3C */ int field_0x3c; /* 0x40 */ int field_0x40; - /* 0x44 */ int field_0x44; + /* 0x44 */ u8 field_0x44; } /* 0x0C0 */ field_0xc0; class { public: @@ -264,10 +301,10 @@ public: /* 801617B0 */ void updatePad(); /* 80161D84 */ void initMonitor(); /* 80161E34 */ void updateMonitor(); - /* 80162088 */ void checkForceLockTarget(); + /* 80162088 */ bool checkForceLockTarget(); /* 801622B0 */ void infoReport(); - /* 801622B4 */ void Run(); - /* 80162D38 */ void NotRun(); + /* 801622B4 */ bool Run(); + /* 80162D38 */ bool NotRun(); /* 80162FB8 */ s16 V(); /* 80162FD4 */ s16 U(); /* 8016300C */ bool SetTrimSize(s32); @@ -277,13 +314,13 @@ public: /* 8016317C */ void setStageMapToolData(); /* 80163340 */ void setMapToolData(); /* 80163558 */ void SetTagData(fopAc_ac_c*, s32, u16, u8); - /* 801635AC */ void setRoomMapToolData(dCamMapToolData*, s32, s32); - /* 801635E4 */ void nextMode(s32); - /* 80163C38 */ void onModeChange(s32, s32); + /* 801635AC */ inline void setRoomMapToolData(dCamMapToolData*, s32, s32); + /* 801635E4 */ s32 nextMode(s32); + /* 80163C38 */ bool onModeChange(s32, s32); /* 80163D50 */ int ModeFix(s32); - /* 80163D5C */ void nextType(s32); - /* 8016444C */ void onTypeChange(s32, s32); - /* 8016469C */ int onStyleChange(s32, s32); + /* 80163D5C */ s32 nextType(s32); + /* 8016444C */ bool onTypeChange(s32, s32); + /* 8016469C */ bool onStyleChange(s32, s32); /* 801647B0 */ int onRoomChange(s32); /* 80164878 */ fopAc_ac_c* getParamTargetActor(s32); /* 80164944 */ int GetCameraTypeFromMapToolID(s32, s32); @@ -292,27 +329,27 @@ public: /* 80164C64 */ void pushInfo(dCamera_c::dCamInfo_c*, s16); /* 80164CAC */ void popInfo(dCamera_c::dCamInfo_c*); /* 80164D2C */ f32 heightOf(fopAc_ac_c*); - /* 80164E20 */ void relationalPos(fopAc_ac_c*, fopAc_ac_c*, cXyz*, f32); - /* 80164D6C */ void relationalPos(fopAc_ac_c*, cXyz*); + /* 80164E20 */ cXyz relationalPos(fopAc_ac_c*, fopAc_ac_c*, cXyz*, f32); + /* 80164D6C */ cXyz relationalPos(fopAc_ac_c*, cXyz*); /* 80165104 */ void setUSOAngle(); /* 80165158 */ cSAngle getUSOAngle(cSAngle); - /* 8016517C */ void pointInSight(cXyz*); + /* 8016517C */ bool pointInSight(cXyz*); /* 80167C24 */ void radiusActorInSight(fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*); - /* 80165238 */ void radiusActorInSight(fopAc_ac_c*, fopAc_ac_c*, cXyz*, cXyz*, f32, s16, f32); + /* 80165238 */ f32 radiusActorInSight(fopAc_ac_c*, fopAc_ac_c*, cXyz*, cXyz*, f32, s16, f32); /* 801657EC */ f32 groundHeight(cXyz*); - /* 801658C0 */ void lineBGCheck(cXyz*, cXyz*, dBgS_LinChk*, u32); - /* 80165AF0 */ void lineBGCheck(cXyz*, cXyz*, u32); - /* 801659F4 */ void lineBGCheck(cXyz*, cXyz*, cXyz*, u32); - /* 80165B60 */ void lineCollisionCheckBush(cXyz*, cXyz*); - /* 80165CE0 */ void compWallMargin(cXyz*, cXyz*, f32); - /* 80165EF4 */ void defaultTriming(); + /* 801658C0 */ bool lineBGCheck(cXyz*, cXyz*, dBgS_LinChk*, u32); + /* 80165AF0 */ bool lineBGCheck(cXyz*, cXyz*, u32); + /* 801659F4 */ bool lineBGCheck(cXyz*, cXyz*, cXyz*, u32); + /* 80165B60 */ u32 lineCollisionCheckBush(cXyz*, cXyz*); + /* 80165CE0 */ cXyz compWallMargin(cXyz*, cXyz*, f32); + /* 80165EF4 */ int defaultTriming(); /* 80165FB4 */ void setView(f32, f32, f32, f32); - /* 8016608C */ void forwardCheckAngle(); + /* 8016608C */ cSAngle forwardCheckAngle(); /* 80166764 */ void bumpCheck(u32); /* 80167BF8 */ void lineBGCheckBoth(cXyz*, cXyz*, dBgS_LinChk*, u32); /* 80167CD8 */ void jutOutCheck(cXyz*, f32); /* 80167E3C */ void tooNearEscape(cXyz*); - /* 80167EF4 */ void getWaterSurfaceHeight(cXyz*); + /* 80167EF4 */ f32 getWaterSurfaceHeight(cXyz*); /* 80167FEC */ void checkGroundInfo(); /* 80168744 */ bool chaseCamera(s32); /* 8016C384 */ bool lockonCamera(s32); @@ -374,7 +411,7 @@ public: bool Active() { return field_0x24 == 0; } f32 TrimHeight() { return mTrimHeight; } int Type() { return mCurType; } - int Mode() { return mNextMode; } + int Mode() { return mCurMode; } f32 Fovy() { return mFovY + mShake.field_0x3c; } bool isModeOK() { return field_0x158.field_0x0; } bool push_any_key() { return field_0x224; } @@ -395,6 +432,12 @@ public: mEventData.field_0x24 = i_flag; } + void Att() { + dAttention_c& attn = dComIfGp_getAttention(); + mpLockonTarget = attn.LockonTruth() ? attn.LockonTarget(0) : NULL; + attn.LockSoundOn(); + } + static engine_fn engine_tbl[]; /* 0x000 */ camera_class* field_0x0; @@ -431,7 +474,7 @@ public: class { public: /* 0x00 */ int field_0x0; - /* 0x04 */ u16 field_0x4; + /* 0x04 */ s16 field_0x4; /* 0x08 */ dCamInfo_c field_0x8; /* 0x28 */ cXyz field_0x28; } @@ -450,21 +493,24 @@ public: } /* 0x158 */ field_0x158; /* 0x160 */ int field_0x160; - /* 0x164 */ u8 field_0x164[0x170 - 0x164]; + /* 0x164 */ int field_0x164; + /* 0x168 */ u8 field_0x168; + /* 0x169 */ int field_0x16c; /* 0x170 */ int field_0x170; /* 0x174 */ u32 mCurCamTypeTimer; /* 0x178 */ u32 mCameraID; /* 0x17C */ u32 mPadID; /* 0x180 */ fopAc_ac_c* mpPlayerActor; /* 0x184 */ fopAc_ac_c* mpLockonTarget; - /* 0x188 */ u8 field_0x188[0x190 - 0x188]; + /* 0x188 */ u32 field_0x188; + /* 0x18C */ u32 field_0x18c; /* 0x190 */ int field_0x190; - /* 0x194 */ u8 field_0x194; - /* 0x198 */ u32 field_0x198; - /* 0x19C */ u32 field_0x19c; - /* 0x1A0 */ int mCurMode; - /* 0x1A4 */ int mNextMode; - /* 0x1A8 */ int field_0x1a8; + /* 0x194 */ bool field_0x194; + /* 0x198 */ u32 mLockOnActorID; + /* 0x19C */ fopAc_ac_c* mpLockOnActor; + /* 0x1A0 */ int mForceLockTimer; + /* 0x1A4 */ int mCurMode; + /* 0x1A8 */ int mNextMode; /* 0x1AC */ int field_0x1ac; /* 0x1B0 */ cSAngle field_0x1b0; /* 0x1B4 */ f32 field_0x1b4; @@ -485,16 +531,16 @@ public: /* 0x215 */ u8 field_0x215; /* 0x216 */ u8 field_0x216; /* 0x217 */ u8 field_0x217; - /* 0x218 */ u8 mHoldX; - /* 0x219 */ u8 mTrigX; - /* 0x21A */ u8 mHoldY; - /* 0x21B */ u8 mTrigY; + /* 0x218 */ bool mHoldX; + /* 0x219 */ bool mTrigX; + /* 0x21A */ bool mHoldY; + /* 0x21B */ bool mTrigY; /* 0x21C */ bool mHoldZ; - /* 0x21D */ u8 mTrigZ; + /* 0x21D */ bool mTrigZ; /* 0x21E */ u8 field_0x21e; /* 0x21F */ u8 field_0x21f; - /* 0x220 */ u8 mHoldB; - /* 0x221 */ u8 mTrigB; + /* 0x220 */ bool mHoldB; + /* 0x221 */ bool mTrigB; /* 0x222 */ u8 field_0x222; /* 0x223 */ u8 field_0x223; /* 0x224 */ u8 field_0x224; @@ -580,13 +626,14 @@ public: /* 0x920 */ f32 mTrimHeight; /* 0x924 */ int mTrimSize; /* 0x928 */ int mTrimTypeForce; - /* 0x92C */ u8 field_0x92c[0x934 - 0x92c]; + /* 0x92C */ f32 field_0x92c; + /* 0x930 */ u8 field_0x930[0x930 - 0x92c]; /* 0x934 */ f32 field_0x934; /* 0x938 */ u8 field_0x938[0x93C - 0x938]; /* 0x93C */ int field_0x93c; /* 0x940 */ int field_0x940; /* 0x944 */ u8 field_0x944; - /* 0x948 */ int field_0x948; + /* 0x948 */ int mThrowTimer; /* 0x94C */ cSAngle field_0x94c; /* 0x950 */ int field_0x950; /* 0x954 */ u8 field_0x954[0x958 - 0x954]; diff --git a/include/d/d_cc_mass_s.h b/include/d/d_cc_mass_s.h index 5d1a0667fe..d6fd4e17c3 100644 --- a/include/d/d_cc_mass_s.h +++ b/include/d/d_cc_mass_s.h @@ -73,7 +73,7 @@ public: /* 80085CF0 */ void Clear(); /* 80085D98 */ void Set(cCcD_Obj* p_obj, u8 priority); /* 80085E6C */ void SetCam(cM3dGCps const& cps); - /* 80085EB0 */ u8 GetResultCam() const; + /* 80085EB0 */ u32 GetResultCam() const; /* 80085EB8 */ void GetCamTopPos(Vec* p_out); }; diff --git a/include/d/d_cc_s.h b/include/d/d_cc_s.h index 81ee42a44e..8787b9c385 100644 --- a/include/d/d_cc_s.h +++ b/include/d/d_cc_s.h @@ -45,6 +45,8 @@ public: /* 80086754 */ virtual void CalcParticleAngle(dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, csXyz*); 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 PrepareMass() { mMass_Mng.Prepare(); } static bool m_mtrl_hit_tbl[64]; diff --git a/include/d/d_com_inf_actor.h b/include/d/d_com_inf_actor.h index ebfe576837..a0bf089d54 100644 --- a/include/d/d_com_inf_actor.h +++ b/include/d/d_com_inf_actor.h @@ -1,10 +1,11 @@ #ifndef D_COM_D_COM_INF_ACTOR_H #define D_COM_D_COM_INF_ACTOR_H +class fopAc_ac_c; class dComIfGoat_info_c { public: - /* 0x0 */ int field_0x0; + /* 0x0 */ fopAc_ac_c* field_0x0; }; class dComIfAc_info_c { @@ -20,4 +21,8 @@ inline bool dComIfA_PauseCheck() { return g_dComIfAc_gameInfo.mPause; } +inline fopAc_ac_c* dComIfGoat_GetThrow() { + return g_dComIfGoat_gameInfo.field_0x0; +} + #endif /* D_COM_D_COM_INF_ACTOR_H */ diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index cac5fc947f..f09383e86d 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -2622,6 +2622,14 @@ inline int dComIfGp_getStagePlightNumInfo() { return g_dComIfG_gameInfo.play.getStage().getPlightNumInfo(); } +inline s16 dComIfGp_getStageWorldRollAngleX() { + return g_dComIfG_gameInfo.play.getStage().getWorldRollAngleX(); +} + +inline s16 dComIfGp_getStageWorldRollDirAngleY() { + return g_dComIfG_gameInfo.play.getStage().getWorldRollDirAngleY(); +} + inline u8 dComIfGp_isHeapLockFlag() { return g_dComIfG_gameInfo.play.isHeapLockFlag(); } diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index 0ef98b382d..f6dcf5a0d9 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -249,6 +249,7 @@ public: s8 getCameraID() { return mCameraID; } void setMode(int mode) { mMode = mode; } view_port_class* getViewPort() { return &mViewport; } + scissor_class* getScissor() { return &mViewport.mScissor; } private: /* 0x00 */ view_port_class mViewport; diff --git a/include/d/d_kankyo.h b/include/d/d_kankyo.h index 1fb81440e1..4f95c53463 100644 --- a/include/d/d_kankyo.h +++ b/include/d/d_kankyo.h @@ -603,6 +603,6 @@ void dKy_ParticleColor_get_bg(cXyz* param_0, dKy_tevstr_c* param_1, _GXColor* pa _GXColor dKy_light_influence_col(_GXColor* param_0, f32 param_1); static void dKy_WaterIn_Light_set(); void dKy_SordFlush_set(cXyz param_0, int param_1); - +void dKy_camera_water_in_status_set(u8 status); #endif /* D_KANKYO_D_KANKYO_H */ diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 5bcb8234d4..e343b1da66 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -76,7 +76,7 @@ struct stage_scls_info_class { /* 0x9 */ s8 mRoom; /* 0xA */ u8 field_0xa; /* 0xB */ u8 field_0xb; - /* 0xC */ s8 mWipe; + /* 0xC */ u8 mWipe; char* getStage() { return mStage; } @@ -567,6 +567,9 @@ public: void setTreasure(stage_tresure_class*); + s16 getWorldRollAngleX() { return mWorldRollAngleX; } + s16 getWorldRollDirAngleY() { return mWorldRollDirAngleY; } + public: /* 0x08 */ stage_camera_class* mCamera; /* 0x0C */ stage_arrow_class* mArrow; @@ -588,8 +591,8 @@ public: /* 0x4C */ int mVrboxcolNumInfo; /* 0x50 */ u32 mPlightNumInfo; /* 0x54 */ u16 mPlayerNum; - /* 0x56 */ u16 field_0x56; - /* 0x58 */ u16 field_0x58; + /* 0x56 */ s16 mWorldRollAngleX; + /* 0x58 */ s16 mWorldRollDirAngleY; /* 0x5A */ u16 field_0x5a; /* 0x5C */ stage_stag_info_class* mStagInfo; /* 0x60 */ stage_scls_info_dummy_class* mSclsInfo; @@ -1109,7 +1112,7 @@ inline u8 dStage_stagInfo_DefaultCameraType(stage_stag_info_class* pstag) { return pstag->mCameraType; } -inline u32 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) { +inline u8 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) { return p_info->field_0xb & 0xF; } diff --git a/include/f_op/f_op_camera.h b/include/f_op/f_op_camera.h index fa7cf44858..43e4cba6f7 100644 --- a/include/f_op/f_op_camera.h +++ b/include/f_op/f_op_camera.h @@ -14,4 +14,6 @@ static s32 fopCam_Draw(camera_class* param_1); static int fopCam_Execute(camera_class* pCamera); int fopCam_IsDelete(camera_class* pCamera); +extern leafdraw_method_class g_fopCam_Method; + #endif diff --git a/include/f_op/f_op_view.h b/include/f_op/f_op_view.h index 71cfb3ed59..e7a0077852 100644 --- a/include/f_op/f_op_view.h +++ b/include/f_op/f_op_view.h @@ -56,4 +56,6 @@ struct view_class : public leafdraw_class { /* 0x1E0 */ Mtx mViewMtxNoTrans; }; -#endif
\ No newline at end of file +extern leafdraw_method_class g_fopVw_Method; + +#endif |
