d_camera almost matching (equivalent) (#2633)

This commit is contained in:
Max Roncace 2025-09-08 07:41:07 -04:00 committed by GitHub
parent 3d5108e4df
commit 54f5a36264
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 1523 additions and 149 deletions

View File

@ -221,7 +221,7 @@ public:
/* 80844590 */ int draw();
/* 8084478C */ ~daHorse_c();
/* 80182D04 */ BOOL getLashDashStart() const { return checkResetStateFlg0(RFLG0_LASH_DASH_START); }
/* 80182D04 */ u32 getLashDashStart() const { return checkResetStateFlg0(RFLG0_LASH_DASH_START); }
bool checkNoBombProc() const { return m_procID == PROC_WAIT_e || m_procID == PROC_MOVE_e; }
@ -257,7 +257,7 @@ public:
daHoZelda_c* getZeldaActor() { return (daHoZelda_c*)m_zeldaActorKeep.getActor(); }
void setZeldaActor(fopAc_ac_c* i_actor) { m_zeldaActorKeep.setData(i_actor); }
bool checkTurnStandCamera() const { return checkResetStateFlg0(RFLG0_TURN_STAND_CAMERA); }
u32 checkTurnStandCamera() const { return checkResetStateFlg0(RFLG0_TURN_STAND_CAMERA); }
BOOL checkTurnStand() const { return checkResetStateFlg0(RFLG0_TURN_STAND); }
u32 checkRodeoMode() const { return checkStateFlg0(FLG0_RODEO_MODE); }
bool checkCutTurnCancel() const { return checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL); }
@ -266,7 +266,7 @@ public:
BOOL checkHorseCallWait() const { return checkStateFlg0(FLG0_NO_DRAW_WAIT); }
BOOL checkTurn() const { return m_procID == PROC_TURN_e && field_0x1720 == 0; }
BOOL checkStop() const { return m_procID == PROC_STOP_e; }
bool checkJump() const { return m_procID == PROC_JUMP_e; }
BOOL checkJump() const { return m_procID == PROC_JUMP_e; }
bool checkWait() const { return m_procID == PROC_WAIT_e; }
bool checkLand() const { return m_procID == PROC_LAND_e && field_0x171a == 0; }
bool checkGetOff() const { return fabsf(speedF) < 3.0f; }

View File

@ -153,6 +153,8 @@ public:
f32 CusCus() { return mCusCus; }
f32 ParallelDist() { return mParallelDist; }
f32 CurveWeight() { return mCurveWeight; }
s16 MapToolCameraLongTimer() { return mMapToolCamLongTimer; }
s16 MapToolCameraShortTimer() { return mMapToolCamShortTimer; }
/* 0x000 */ f32 mDrawNear;
/* 0x004 */ f32 mDrawFar;
@ -210,8 +212,8 @@ public:
/* 0x0D0 */ f32 mLockonChangeCushion;
/* 0x0D4 */ f32 field_0xd4;
/* 0x0D8 */ f32 field_0xd8;
/* 0x0DC */ u16 mMapToolCamShortTimer;
/* 0x0DE */ u16 mMapToolCamLongTimer;
/* 0x0DC */ s16 mMapToolCamShortTimer;
/* 0x0DE */ s16 mMapToolCamLongTimer;
/* 0x0E0 */ f32 field_0xe0;
/* 0x0E4 */ f32 field_0xe4;
/* 0x0E8 */ f32 field_0xe8;

View File

@ -2,12 +2,13 @@
#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_bg_s_lin_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 "d/actor/d_a_player.h"
#include "f_op/f_op_actor.h"
dAttention_c* dComIfGp_getAttention();
@ -92,7 +93,7 @@ struct dCamera_event_param {
struct dCamera_event_data {
/* 0x000 */ u8 field_0x0;
/* 0x004 */ int field_0x4;
/* 0x004 */ int mStaffIdx;
/* 0x008 */ int field_0x8;
/* 0x00C */ int field_0xc;
/* 0x010 */ u8 field_0x10;
@ -144,6 +145,8 @@ class dCamera_c {
public:
class dCamInfo_c {
public:
dCamInfo_c() {}
~dCamInfo_c() {}
/* 0x00 */ cXyz mCenter;
/* 0x0C */ cXyz mEye;
/* 0x18 */ f32 mFovy;
@ -781,6 +784,16 @@ public:
/* 0x20 */ cXyz field_0x20;
};
struct ParaRailData {
/* 0x00 */ int field_0x00;
/* 0x04 */ fopAc_ac_c* field_0x04;
/* 0x08 */ fopAc_ac_c* field_0x08;
/* 0x0C */ u8 field_0x0c;
/* 0x0D */ u8 field_0x0d;
/* 0x0E */ cXyz field_0x10;
/* 0x1C */ f32 field_0x1c;
};
struct OneSideData {
/* 0x00 */ int field_0x00;
/* 0x04 */ u8 field_0x04[0x1c - 0x04];
@ -813,6 +826,54 @@ public:
/* 0x38 */ cXyz field_0x38;
};
struct FixedPositionData {
/* 0x00 */ int field_0x00;
/* 0x04 */ s32 field_0x04;
/* 0x08 */ f32 field_0x08;
/* 0x08 */ f32 field_0x0c;
/* 0x10 */ cXyz field_0x10;
/* 0x1C */ cXyz field_0x1c;
/* 0x28 */ u8 field_0x28;
/* 0x2C */ int field_0x2c;
/* 0x30 */ int field_0x30;
};
struct RideData {
/* 0x00 */ int field_0x00;
/* 0x04 */ int prove;
/* 0x08 */ int field_0x08;
/* 0x0C */ u32 field_0x0c;
/* 0x10 */ int field_0x10;
/* 0x14 */ int field_0x14;
/* 0x18 */ int field_0x18;
/* 0x1C */ u8 field_0x1c;
/* 0x1D */ u8 field_0x1d;
/* 0x20 */ int field_0x20;
/* 0x24 */ cXyz field_0x24;
/* 0x30 */ cXyz field_0x30;
/* 0x3C */ cXyz field_0x3c;
/* 0x48 */ cSAngle field_0x48;
/* 0x4C */ f32 field_0x4c;
/* 0x50 */ f32 field_0x50;
/* 0x54 */ f32 field_0x54;
/* 0x58 */ f32 field_0x58;
/* 0x5C */ cXyz field_0x5c;
/* 0x68 */ cXyz field_0x68;
/* 0x74 */ f32 field_0x74;
/* 0x78 */ f32 field_0x78;
/* 0x7C */ f32 field_0x7c;
/* 0x80 */ f32 field_0x80;
/* 0x84 */ cXyz field_0x84;
/* 0x90 */ u8 field_0x90;
/* 0x91 */ u8 field_0x91;
/* 0x92 */ u8 field_0x92;
/* 0x93 */ bool field_0x93;
/* 0x94 */ fopAc_ac_c* field_0x94;
/* 0x98 */ daHorse_c* field_0x98;
/* 0x9C */ fopAc_ac_c* field_0x9c;
/* 0xA0 */ fopAc_ac_c* field_0xa0;
};
/* 80088A7C */ int StartEventCamera(int, int, ...);
/* 80088BBC */ int EndEventCamera(int);
/* 80088C24 */ int searchEventArgData(char*);
@ -1102,7 +1163,7 @@ public:
/* 0x164 */ int field_0x164;
/* 0x168 */ u8 field_0x168;
/* 0x16C */ int field_0x16c;
/* 0x170 */ int field_0x170;
/* 0x170 */ u32 field_0x170;
/* 0x174 */ u32 mCurCamStyleTimer; // this might be a signed int in ShieldD
/* 0x178 */ u32 mCameraID;
/* 0x17C */ u32 mPadID;
@ -1246,6 +1307,9 @@ public:
/* 0x968 */ f32 field_0x968;
/* 0x96C */ f32 field_0x96c;
/* 0x970 */ dCamSetup_c mCamSetup;
#if DEBUG
u8 unk_debug_0xbc4[0x10];
#endif
/* 0xAEC */ dCamParam_c mCamParam;
/* 0xB0C */ u8 field_0xb0c;
/* 0xB0D */ u8 field_0xb0d[0xd58 - 0xb0d];

View File

@ -13,6 +13,7 @@
#include "cmath.h" // IWYU pragma: export
#include "string.h" // IWYU pragma: export
#include "d/d_com_inf_game.h" // IWYU pragma: export
#include "d/d_bg_s_sph_chk.h" // IWYU pragma: export
#include "d/d_bg_w.h" // IWYU pragma: export
#include "m_Do/m_Do_graphic.h" // IWYU pragma: export
#include "JSystem/J2DGraph/J2DOrthoGraph.h" // IWYU pragma: export

View File

@ -156,6 +156,14 @@ public:
#endif
}
static void onWideZoom() {
//TODO
}
static void offWideZoom() {
//TODO
}
static GXTexObj mFrameBufferTexObj;
static GXTexObj mZbufferTexObj;
static bloom_c m_bloom;

File diff suppressed because it is too large Load Diff

View File

@ -114,8 +114,8 @@ bool dCamera_c::getEvIntData(int* i_data, char* i_event) {
} else {
*i_data = *(int*)mEventData.mEventParams[index].value;
}
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, i_event) != 0) {
*i_data = *dComIfGp_evmng_getMyIntegerP(mEventData.field_0x4, i_event);
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, i_event) != 0) {
*i_data = *dComIfGp_evmng_getMyIntegerP(mEventData.mStaffIdx, i_event);
} else {
#if DEBUG
if (mCurCamStyleTimer == 0 && mCamSetup.CheckFlag(0x40)) {
@ -144,8 +144,8 @@ bool dCamera_c::getEvFloatData(f32* i_data, char* i_event) {
}
*i_data = *(f32*)mEventData.mEventParams[index].value;
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, i_event) != 0) {
*i_data = *dComIfGp_evmng_getMyFloatP(mEventData.field_0x4, i_event);
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, i_event) != 0) {
*i_data = *dComIfGp_evmng_getMyFloatP(mEventData.mStaffIdx, i_event);
} else {
#if DEBUG
if (mCurCamStyleTimer == 0 && mCamSetup.CheckFlag(0x40)) {
@ -177,8 +177,8 @@ int dCamera_c::getEvFloatListData(f32** i_data, char* i_event) {
*i_data = (f32*)mEventData.mEventParams[index].value;
num = mEventData.mEventParams[index].field_0x10;
} else if ((num = dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, i_event))) {
*i_data = dComIfGp_evmng_getMyFloatP(mEventData.field_0x4, i_event);
} else if ((num = dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, i_event))) {
*i_data = dComIfGp_evmng_getMyFloatP(mEventData.mStaffIdx, i_event);
} else {
#if DEBUG
if (mCurCamStyleTimer == 0 && mCamSetup.CheckFlag(0x40)) {
@ -210,8 +210,8 @@ int dCamera_c::getEvXyzListData(cXyz** i_data, char* i_event) {
*i_data = (cXyz*)mEventData.mEventParams[index].value;
return mEventData.mEventParams[index].field_0x10;
} else if ((num = dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, i_event))) {
*i_data = dComIfGp_evmng_getMyXyzP(mEventData.field_0x4, i_event);
} else if ((num = dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, i_event))) {
*i_data = dComIfGp_evmng_getMyXyzP(mEventData.mStaffIdx, i_event);
} else {
#if DEBUG
if (mCurCamStyleTimer == 0 && mCamSetup.CheckFlag(0x40)) {
@ -242,8 +242,8 @@ char* dCamera_c::getEvStringPntData(char* i_event) {
}
string = (char*)mEventData.mEventParams[index].value;
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, i_event)) {
string = dComIfGp_evmng_getMyStringP(mEventData.field_0x4, i_event);
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, i_event)) {
string = dComIfGp_evmng_getMyStringP(mEventData.mStaffIdx, i_event);
} else {
#if DEBUG
if (mCurCamStyleTimer == 0 && mCamSetup.CheckFlag(0x40)) {
@ -272,8 +272,8 @@ bool dCamera_c::getEvIntData(int* i_data, char* i_event, int param_2) {
} else {
*i_data = *(int*)mEventData.mEventParams[index].value;
}
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, i_event) != 0) {
*i_data = *dComIfGp_evmng_getMyIntegerP(mEventData.field_0x4, i_event);
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, i_event) != 0) {
*i_data = *dComIfGp_evmng_getMyIntegerP(mEventData.mStaffIdx, i_event);
} else {
*i_data = param_2;
#if DEBUG
@ -302,8 +302,8 @@ bool dCamera_c::getEvFloatData(f32* i_data, char* i_event, f32 param_2) {
} else {
*i_data = *(f32*)mEventData.mEventParams[index].value;
}
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, i_event) != 0) {
*i_data = *dComIfGp_evmng_getMyFloatP(mEventData.field_0x4, i_event);
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, i_event) != 0) {
*i_data = *dComIfGp_evmng_getMyFloatP(mEventData.mStaffIdx, i_event);
} else {
*i_data = param_2;
#if DEBUG
@ -331,8 +331,8 @@ bool dCamera_c::getEvXyzData(cXyz* i_data, char* i_event, cXyz param_2) {
} else {
*i_data = *(cXyz*)mEventData.mEventParams[index].value;
}
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, i_event) != 0) {
*i_data = *dComIfGp_evmng_getMyXyzP(mEventData.field_0x4, i_event);
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, i_event) != 0) {
*i_data = *dComIfGp_evmng_getMyXyzP(mEventData.mStaffIdx, i_event);
} else {
*i_data = param_2;
#if DEBUG
@ -360,8 +360,8 @@ bool dCamera_c::getEvStringData(char* i_data, char* i_event, char* param_2) {
} else {
strcpy(i_data, (char*)mEventData.mEventParams[index].value);
}
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, i_event) != 0) {
strcpy(i_data, dComIfGp_evmng_getMyStringP(mEventData.field_0x4, i_event));
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, i_event) != 0) {
strcpy(i_data, dComIfGp_evmng_getMyStringP(mEventData.mStaffIdx, i_event));
} else {
strcpy(i_data, param_2);
#if DEBUG
@ -391,8 +391,8 @@ char* dCamera_c::getEvStringPntData(char* i_event, char* param_1) {
} else {
string = (char*)mEventData.mEventParams[index].value;
}
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, i_event)) {
string = dComIfGp_evmng_getMyStringP(mEventData.field_0x4, i_event);
} else if (dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, i_event)) {
string = dComIfGp_evmng_getMyStringP(mEventData.mStaffIdx, i_event);
} else {
string = param_1;
#if DEBUG
@ -3427,8 +3427,8 @@ bool dCamera_c::fixedFramesEvCamera() {
int substanceNum;
char* key = "Centers";
if ((substanceNum = dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, key)) != 0) {
fframes_p->field_0x1c[1] = dComIfGp_evmng_getMyXyzP(mEventData.field_0x4, key);
if ((substanceNum = dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, key)) != 0) {
fframes_p->field_0x1c[1] = dComIfGp_evmng_getMyXyzP(mEventData.mStaffIdx, key);
if (fframes_p->field_0x38 > substanceNum) {
fframes_p->field_0x38 = substanceNum;
}
@ -3438,8 +3438,8 @@ bool dCamera_c::fixedFramesEvCamera() {
}
key = "Eyes";
if ((substanceNum = dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, key)) != 0) {
fframes_p->field_0x1c[0] = dComIfGp_evmng_getMyXyzP(mEventData.field_0x4, key);
if ((substanceNum = dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, key)) != 0) {
fframes_p->field_0x1c[0] = dComIfGp_evmng_getMyXyzP(mEventData.mStaffIdx, key);
if (fframes_p->field_0x38 > substanceNum) {
fframes_p->field_0x38 = substanceNum;
}
@ -3449,8 +3449,8 @@ bool dCamera_c::fixedFramesEvCamera() {
}
key = "Fovys";
if ((substanceNum = dComIfGp_evmng_getMySubstanceNum(mEventData.field_0x4, key)) != 0) {
fframes_p->field_0x24 = dComIfGp_evmng_getMyFloatP(mEventData.field_0x4, key);
if ((substanceNum = dComIfGp_evmng_getMySubstanceNum(mEventData.mStaffIdx, key)) != 0) {
fframes_p->field_0x24 = dComIfGp_evmng_getMyFloatP(mEventData.mStaffIdx, key);
if (fframes_p->field_0x38 > substanceNum) {
fframes_p->field_0x38 = substanceNum;
}