Skip to content

Commit 5302ec4

Browse files
authored
Fix debug build for fixedFrameEvCamera while also getting some overall matching (#2415)
1 parent 476c893 commit 5302ec4

File tree

2 files changed

+27
-47
lines changed

2 files changed

+27
-47
lines changed

include/d/d_camera.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -816,7 +816,7 @@ class dCamera_c {
816816
/* 0x40 */ fopAc_ac_c* field_0x40;
817817
/* 0x44 */ fpc_ProcID field_0x44;
818818
/* 0x48 */ u8 field_0x48[0x4c - 0x48];
819-
/* 0x4C */ u32 field_0x4c;
819+
/* 0x4C */ s32 field_0x4c;
820820
} fixedPos;
821821
struct trans {
822822
/* 0x00 */ cXyz mStartEye;

src/d/d_ev_camera.cpp

Lines changed: 26 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -512,17 +512,13 @@ bool dCamera_c::pauseEvCamera() {
512512
return true;
513513
}
514514

515-
/* 804253A8-804253B4 0520C8 000C+00 1/1 0/0 0/0 .bss @4202 */
516-
static u8 lit_4202[12];
517-
518515
namespace {
519516
/* 804253B4-804253C0 0520D4 000C+00 2/3 0/0 0/0 .bss WolfAdditionVec__25@unnamed@d_ev_camera_cpp@*/
520517
static cXyz WolfAdditionVec;
521518
}
522519

523520
/* 800897E8-8008A510 084128 0D28+00 0/0 1/0 0/0 .text fixedFrameEvCamera__9dCamera_cFv */
524521
bool dCamera_c::fixedFrameEvCamera() {
525-
// NONMATCHING
526522
if (mCurCamStyleTimer == 0) {
527523
cXyz sp38, sp44;
528524
getEvXyzData(&sp44, "Eye", mEye);
@@ -534,9 +530,9 @@ bool dCamera_c::fixedFrameEvCamera() {
534530
getEvStringData(&mWork.event.field_0x28, "RelUseMask", "oo");
535531

536532
#ifdef DEBUG
537-
if (strlen(mWork.event.field_0x28) != 2) {
533+
if (strlen(&mWork.event.field_0x28) != 2) {
538534
OSReport("camera: event: bad length -> xx\n");
539-
strcpy(mWork.event.field_0x28, "xx");
535+
strcpy(&mWork.event.field_0x28, "xx");
540536
JUTAssertion::showAssert(JUTAssertion::getSDevice(), "d_ev_camera.cpp", 0x32e, "0");
541537
OSPanic("d_ev_camera.cpp", 0x32e, "Halt");
542538
}
@@ -627,7 +623,7 @@ bool dCamera_c::fixedFrameEvCamera() {
627623
f32 fVar3 = cXyz(mRelPos2 - positionOf(mpPlayerActor)).abs();
628624
sp44.x = -sp44.x;
629625
mRelPos2 = relationalPos(mWork.event.mRelActor, &sp44);
630-
f32 fVar4 = cXyz().abs(mRelPos2 - positionOf(mpPlayerActor));
626+
f32 fVar4 = cXyz(mRelPos2 - positionOf(mpPlayerActor)).abs();
631627
if (fVar3 > fVar4) {
632628
sp44.x = -sp44.x;
633629
}
@@ -649,7 +645,7 @@ bool dCamera_c::fixedFrameEvCamera() {
649645
field_0x5c.mFovy = mWork.event.mFovy;
650646

651647
if (mWork.event.field_0x30) {
652-
field_0x5c.mBank = (s16)(int)(mWork.event.field_0x20 * 182.04445f);
648+
field_0x5c.mBank = cAngle::d2s(mWork.event.field_0x20);
653649
setFlag(0x400);
654650
}
655651

@@ -663,8 +659,8 @@ bool dCamera_c::fixedFrameEvCamera() {
663659

664660
/* 8008A510-8008A974 084E50 0464+00 0/0 1/0 0/0 .text stokerEvCamera__9dCamera_cFv */
665661
bool dCamera_c::stokerEvCamera() {
666-
// NONMATCHING
667662
if (mCurCamStyleTimer == 0) {
663+
cXyz unused_0, unused_1;
668664
getEvXyzData(&mWork.stoker.field_0x4, "EyeGap", cXyz::Zero);
669665
getEvXyzData(&mWork.stoker.field_0x10, "CtrGap", cXyz::Zero);
670666
getEvFloatData(&mWork.stoker.field_0x20, "EyeCus", 1.0f);
@@ -698,7 +694,7 @@ bool dCamera_c::stokerEvCamera() {
698694
cStack_d0.U(cStack_d0.U() + mWork.stoker.field_0x30->shape_angle.y);
699695

700696
cXyz cStack_38 = attentionPos(mWork.stoker.field_0x30) + cStack_d0.Xyz();
701-
field_0x5c.mCenter += (cStack_38 - field_0x5c.mCenter) * mWork.stoker.field_0x20;
697+
field_0x5c.mCenter += (cStack_38 - field_0x5c.mCenter) * mWork.stoker.field_0x1c;
702698
}
703699

704700
if (mWork.stoker.field_0x2c) {
@@ -708,19 +704,19 @@ bool dCamera_c::stokerEvCamera() {
708704
}
709705

710706
cStack_d0.Val(mWork.talk.field_0x4);
711-
cSAngle acStack_e0;
712-
cStack_d0.V(acStack_e0 + cStack_d0.V());
713-
cSAngle acStack_e4;
714-
cStack_d0.U(acStack_e4 + cStack_d0.U());
715-
field_0x5c.mEye += (((attentionPos(mWork.stoker.field_0x30)) + cStack_d0.Xyz()) - field_0x5c.mEye) * mWork.stoker.field_0x20;
707+
//cSAngle acStack_e0;
708+
cStack_d0.V(cStack_d0.V() + mWork.stoker.field_0x2c->shape_angle.x);
709+
cStack_d0.U(cStack_d0.U() + mWork.stoker.field_0x2c->shape_angle.y);
710+
cXyz tmp_vec = attentionPos(mWork.stoker.field_0x2c) + cStack_d0.Xyz();
711+
field_0x5c.mEye += (tmp_vec - field_0x5c.mEye) * mWork.stoker.field_0x20;
716712
}
717713

718714
field_0x5c.mDirection.Val(field_0x5c.mEye - field_0x5c.mCenter);
719715
field_0x5c.mFovy = mWork.stoker.field_0x24;
720716

721717
if (mWork.event.field_0x1) {
722718
cAngle this_00;
723-
field_0x5c.mBank = this_00.d2s(mWork.chase.field_0x2c);
719+
field_0x5c.mBank = this_00.d2s(mWork.chase.field_0x28);
724720
setFlag(0x400);
725721
}
726722

@@ -871,30 +867,22 @@ bool dCamera_c::rollingEvCamera() {
871867
namespace {
872868
/* 804253CC-804253D8 0520EC 000C+00 1/2 0/0 0/0 .bss MidnaAdditionVec__25@unnamed@d_ev_camera_cpp@ */
873869
static cXyz MidnaAdditionVec;
874-
} // namesoace
875-
876-
/* 804528F0-804528F8 000EF0 0004+04 1/1 0/0 0/0 .sdata2 @5959 */
877-
SECTION_SDATA2 static f32 lit_5959[1 + 1 /* padding */] = {
878-
100000.0f,
879-
/* padding */
880-
0.0f,
881-
};
882870

883-
/* 804528F8-80452900 000EF8 0008+00 10/10 0/0 0/0 .sdata2 @5962 */
884-
SECTION_SDATA2 static f64 lit_5962 = 4503601774854144.0 /* cast s32 to float */;
871+
/* 8008E750-8008E774 089090 0024+00 1/1 0/0 0/0 .text isRelChar__25@unnamed@d_ev_camera_cpp@Fc */
872+
static inline bool isRelChar(char param_1) {
873+
return param_1 != '-' && param_1 != 'x';
874+
}
875+
} // namespace
885876

886877
/* 8008B9B0-8008BE2C 0862F0 047C+00 0/0 1/0 0/0 .text fixedPositionEvCamera__9dCamera_cFv */
887878
bool dCamera_c::fixedPositionEvCamera() {
888879
// NONMATCHING
889-
static cXyz DefaultGap_5851;
890-
if (struct_80450F88[0] == 0) {
891-
DefaultGap_5851 = cXyz::Zero;
892-
struct_80450F88[0] = 1;
893-
}
880+
static cXyz DefaultGap(cXyz::Zero);
881+
bool rv = true;
894882

895883
if (mCurCamStyleTimer == 0) {
896-
getEvXyzData(&mWork.event.field_0x10, "CtrGap", DefaultGap_5851);
897884
cXyz sp24;
885+
getEvXyzData(&mWork.event.field_0x10, "CtrGap", DefaultGap);
898886
getEvXyzData(&sp24, "Eye", mEye);
899887
getEvFloatData(&mWork.fixedPos.field_0x28, "Fovy", mFovy);
900888
getEvFloatData(&mWork.fixedPos.field_0x30, "CtrCus", 1.0f);
@@ -904,16 +892,16 @@ bool dCamera_c::fixedPositionEvCamera() {
904892
getEvStringData(&mWork.event.field_0x48, "RelUseMask", "o");
905893
mWork.event.field_0x0 = getEvIntData(&mWork.event.field_0x4c, "Timer", -1);
906894

907-
mWork.fixedPos.field_0x40 = getEvActor("Target", "@PLAYER");
908-
if (mWork.fixedPos.field_0x40 == NULL) {
895+
//mWork.fixedPos.field_0x40 = getEvActor("Target", "@PLAYER");
896+
if ((mWork.fixedPos.field_0x40 = getEvActor("Target", "@PLAYER")) == NULL) {
909897
OS_REPORT("camera: event: error: target actor missing\n");
910898
return 1;
911899
}
912900

913901
mWork.fixedPos.field_0x44 = fopAcM_GetID(mWork.fixedPos.field_0x40);
914902
mWork.fixedPos.field_0x3c = getEvActor("RelActor");
915903

916-
if (mWork.fixedPos.field_0x3c && (mWork.event.field_0x48 != '-' && mWork.event.field_0x48 != 'x')) {
904+
if (mWork.fixedPos.field_0x3c && isRelChar(mWork.event.field_0x48)) {
917905
mWork.fixedPos.field_0x4 = relationalPos(mWork.fixedPos.field_0x3c, &sp24);
918906
} else {
919907
mWork.fixedPos.field_0x4 = sp24;
@@ -923,10 +911,9 @@ bool dCamera_c::fixedPositionEvCamera() {
923911
field_0x158.field_0x0 = true;
924912
}
925913

926-
bool rv;
927914
if (fopAcM_SearchByID(mWork.fixedPos.field_0x44) == NULL) {
928915
OS_REPORT("camera: event: error: target actor dead\n");
929-
rv = 1;
916+
return 1;
930917
}
931918

932919
mWork.fixedPos.field_0x1c = relationalPos(mWork.rolling.field_0x40, &mWork.talk.field_0x10);
@@ -936,8 +923,8 @@ bool dCamera_c::fixedPositionEvCamera() {
936923

937924
f32 fVar1 = mWork.rolling.field_0x38;
938925
if (mWork.event.field_0x0 && mCurCamStyleTimer < mWork.fixedPos.field_0x4c) {
939-
fVar1 = mWork.rolling.field_0x34 + (mWork.rolling.field_0x38 - mWork.rolling.field_0x34) * (mCurCamStyleTimer / mWork.rolling.field_0x4c);
940-
rv = 0;
926+
fVar1 = mWork.rolling.field_0x34 + (mWork.rolling.field_0x38 - mWork.rolling.field_0x34) * (mCurCamStyleTimer / f32(mWork.fixedPos.field_0x4c));
927+
rv = false;
941928
}
942929

943930
if (field_0x5c.mDirection.R() > fVar1) {
@@ -974,13 +961,6 @@ bool dCamera_c::uniformAcceleEvCamera() {
974961
transEvCamera(3);
975962
}
976963

977-
namespace {
978-
/* 8008E750-8008E774 089090 0024+00 1/1 0/0 0/0 .text isRelChar__25@unnamed@d_ev_camera_cpp@Fc */
979-
static bool isRelChar(char param_1) {
980-
return param_1 != '-' && param_1 != 'x';
981-
}
982-
} // namespace
983-
984964
/* 8008BE98-8008E750 0867D8 28B8+00 3/3 0/0 0/0 .text transEvCamera__9dCamera_cFi */
985965
bool dCamera_c::transEvCamera(int param_1) {
986966
// NONMATCHING

0 commit comments

Comments
 (0)