Debug version now builds OK and all_source compiles (#2343)

* Fix missing arg to JUT_ASSERT

* Fix some MWCC version diff errors

* Compile m_Do_ext, d_demo, actor_mng

* Add VSCode task to quickly switch between versions

* Unlink magLift for debug

* Update the hash of the debug dol

The old cbea5fa... hash here was for the dol generated by the alf2dol.py script, which produces incorrect alignment.

The dol with the new hash can be obtained by using `dtk elf2dol` to convert the debug .alf file to a dol.

The DOL now builds OK.

* Fix all debug REL dtor splits

All RELs now also build OK, meaning `ninja build/ShieldD/ok` now succeeds.

* Add genMessage declarations to all HIO subclasses

* Fixing more compilation errors

* m_Do_mtx 100% on debug

Cannot be linked due to weak function name mangling?

* Improve various matches

* Fix all remaining compilation errors

* Fix new compilation errors from main

* Fix retail regression

* Link f_pc_profile_lst
This commit is contained in:
LagoLunatic
2025-03-22 21:00:51 -04:00
committed by GitHub
parent d0f89e41b1
commit 4dc0cd9d09
543 changed files with 1413 additions and 1278 deletions
+21 -11
View File
@@ -68,6 +68,11 @@ static void mDoExt_setJ3DData(Mtx mtx, const J3DTransformInfo* transformInfo, u1
J3DSys::mParentS.z = transformInfo->mScale.z;
}
static BOOL isCurrentSolidHeap() {
/* Nonmatching */
return FALSE;
}
/* 8000D320-8000D428 007C60 0108+00 6/6 0/0 0/0 .text initPlay__14mDoExt_baseAnmFsifss */
int mDoExt_baseAnm::initPlay(s16 i_frameMax, int i_attribute, f32 i_rate, s16 i_startF,
s16 i_endF) {
@@ -1043,7 +1048,7 @@ int mDoExt_McaMorf::create(J3DModelData* modelData, mDoExt_McaMorfCallBack1_c* c
return 0;
}
if (modelData->getMaterialNodePointer(0)->getSharedDisplayListObj() && param_10 == 0) {
if (param_10 = modelData->isLocked()) {
if (modelData->isLocked()) {
param_10 = 0x20000;
} else {
param_10 = 0x80000;
@@ -1083,7 +1088,8 @@ int mDoExt_McaMorf::create(J3DModelData* modelData, mDoExt_McaMorfCallBack1_c* c
J3DModelData* r23 = mpModel->getModelData();
u16 jointNum = r23->getJointNum();
for (int i = 0; i < jointNum; i++) {
*info = r23->getJointNodePointer(i)->getTransformInfo();
J3DJoint* joint = r23->getJointNodePointer(i);
*info = joint->getTransformInfo();
JMAEulerToQuat(info->mRotation.x, info->mRotation.y, info->mRotation.z, quat);
info++;
quat++;
@@ -1711,6 +1717,13 @@ void mDoExt_McaMorf2::calc() {
Quaternion sp30;
Quaternion sp20;
Quaternion* var_r27;
f32 var_f31;
f32 var_f30;
f32 var_f29;
f32 sp1C;
f32 sp18;
f32 sp14;
f32 sp10;
if (mpQuat == NULL) {
var_r27 = &sp30;
} else {
@@ -1741,8 +1754,6 @@ void mDoExt_McaMorf2::calc() {
} else {
field_0x40->getTransform(jnt_no, &spF0[1]);
f32 sp1C;
f32 sp18;
sp18 = 1.0f - field_0x44;
sp1C = field_0x44;
@@ -1763,15 +1774,15 @@ void mDoExt_McaMorf2::calc() {
JMAEulerToQuat(spF0[i].mRotation.x, spF0[i].mRotation.y, spF0[i].mRotation.z, &sp60[i]);
}
f32 var_f29 = sp1C / (sp18 + sp1C);
var_f29 = sp1C / (sp18 + sp1C);
JMAQuatLerp(&sp60[0], &sp60[1], var_f29, var_r27);
mDoMtx_quat(spC0, var_r27);
mDoExt_setJ3DData(spC0, var_r30, jnt_no);
}
} else if (field_0x40 == NULL) {
f32 var_f31 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf);
f32 var_f30 = 1.0f - var_f31;
var_f31 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf);
var_f30 = 1.0f - var_f31;
mpAnm->getTransform(jnt_no, &sp80);
if (mpCallback1 != NULL) {
@@ -1800,7 +1811,6 @@ void mDoExt_McaMorf2::calc() {
mpAnm->getTransform(jnt_no, &spF0[0]);
field_0x40->getTransform(jnt_no, &spF0[1]);
f32 sp14, sp10;
sp10 = 1.0f - field_0x44;
sp14 = field_0x44;
@@ -1821,11 +1831,11 @@ void mDoExt_McaMorf2::calc() {
JMAEulerToQuat(spF0[i].mRotation.x, spF0[i].mRotation.y, spF0[i].mRotation.z, &sp40[i]);
}
f32 var_f31 = sp14 / (sp10 + sp14);
var_f31 = sp14 / (sp10 + sp14);
JMAQuatLerp(&sp40[0], &sp40[1], var_f31, &sp20);
var_f31 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf);
f32 var_f30 = 1.0f - var_f31;
var_f30 = 1.0f - var_f31;
JMAQuatLerp(var_r27, &sp20, var_f31, var_r27);
var_r30->mTranslate.x = var_r30->mTranslate.x * var_f30
@@ -2477,7 +2487,7 @@ void mDoExt_cylinderPacket::draw() {
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
if (field_0x28) {
if (mClipZ) {
GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE);
} else {
GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE);
+44 -41
View File
@@ -10,9 +10,37 @@
#include "SSystem/SComponent/c_m3d.h"
#include "SSystem/SComponent/c_math.h"
//
// Declarations:
//
/* ############################################################################################## */
/* 803DD470-803DD4A0 00A190 0030+00 12/12 142/142 1820/1820 .bss now__14mDoMtx_stack_c
*/
Mtx mDoMtx_stack_c::now;
/* 803DD4A0-803DD7A0 00A1C0 0300+00 2/2 0/0 0/0 .bss buffer__14mDoMtx_stack_c */
Mtx mDoMtx_stack_c::buffer[16];
/* 804505A8-804505AC -00001 0004+00 3/3 0/0 0/0 .sdata next__14mDoMtx_stack_c */
Mtx* mDoMtx_stack_c::next = mDoMtx_stack_c::buffer;
/* 804505AC-804505B0 -00001 0004+00 2/2 0/0 0/0 .sdata end__14mDoMtx_stack_c */
Mtx* mDoMtx_stack_c::end = mDoMtx_stack_c::buffer + 16;
/* 80450C18-80450C20 000118 0001+07 1/1 0/0 0/0 .sbss mDoMtx_stack */
static mDoMtx_stack_c mDoMtx_stack;
/* 803DD7B8-803DD8D8 00A4D8 011C+04 0/1 0/0 0/0 .bss mDoMtx_quatStack */
static mDoMtx_quatStack_c mDoMtx_quatStack;
/* ############################################################################################## */
/* 803A2FD8-803A3020 0000F8 0030+18 0/0 23/23 4/4 .data g_mDoMtx_identity */
extern Mtx g_mDoMtx_identity = {
{1.0f, 0.0f, 0.0f, 0.0f},
{0.0f, 1.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 1.0f, 0.0f},
};
static void dummy() {
OSReport("mDoMtx_Dump %s\n");
}
/* 8000C0CC-8000C164 006A0C 0098+00 1/1 0/0 0/0 .text mDoMtx_XYZrotS__FPA4_fsss */
void mDoMtx_XYZrotS(Mtx mtx, s16 x, s16 y, s16 z) {
@@ -117,7 +145,7 @@ void mDoMtx_XrotS(Mtx mtx, s16 x) {
void mDoMtx_XrotM(Mtx mtx, s16 x) {
Mtx tmp;
mDoMtx_XrotS(tmp, x);
MTXConcat(mtx, tmp, mtx);
mDoMtx_concat(mtx, tmp, mtx);
}
/* 8000C3DC-8000C434 006D1C 0058+00 5/5 24/24 809/809 .text mDoMtx_YrotS__FPA4_fs */
@@ -145,7 +173,7 @@ void mDoMtx_YrotS(Mtx mtx, s16 y) {
void mDoMtx_YrotM(Mtx mtx, s16 y) {
Mtx tmp;
mDoMtx_YrotS(tmp, y);
MTXConcat(mtx, tmp, mtx);
mDoMtx_concat(mtx, tmp, mtx);
}
/* 8000C474-8000C4CC 006DB4 0058+00 7/7 1/1 6/6 .text mDoMtx_ZrotS__FPA4_fs */
@@ -173,7 +201,7 @@ void mDoMtx_ZrotS(Mtx mtx, s16 z) {
void mDoMtx_ZrotM(Mtx mtx, s16 z) {
Mtx tmp;
mDoMtx_ZrotS(tmp, z);
MTXConcat(mtx, tmp, mtx);
mDoMtx_concat(mtx, tmp, mtx);
}
/* 8000C50C-8000C710 006E4C 0204+00 0/0 3/3 0/0 .text mDoMtx_lookAt__FPA4_fPC3VecPC3Vecs
@@ -182,8 +210,9 @@ void mDoMtx_lookAt(Mtx mtx, Vec const* param_1, Vec const* param_2, s16 param_3)
cXyz stack_48(*(cXyz*)param_1);
cXyz local_54;
cXyz local_60;
cXyz local_6c = stack_48 - cXyz(*(cXyz*)param_2);
cXyz local_6c;
local_6c = stack_48 - cXyz(*(cXyz*)param_2);
local_6c.normalize();
local_54.set(0.0f, 1.0f, 0.0f);
local_54 = local_54.outprod(local_6c);
@@ -220,22 +249,25 @@ void mDoMtx_lookAt(Mtx mtx, Vec const* param_1, Vec const* param_2, s16 param_3)
/* 8000C710-8000C8D0 007050 01C0+00 0/0 10/10 1/1 .text mDoMtx_lookAt__FPA4_fPC3VecPC3VecPC3Vecs
*/
void mDoMtx_lookAt(Mtx mtx, Vec const* i_eye, Vec const* i_center, Vec const* i_up, s16 i_bank) {
cXyz local_4c(*(cXyz*)i_eye);
cXyz local_58(*(cXyz*)i_center);
cXyz local_64(*(cXyz*)i_up);
cXyz local_4c(*i_eye);
cXyz local_58(*i_center);
cXyz local_64(*i_up);
cXyz local_70 = local_4c - local_58;
if (!local_70.normalizeRS()) {
OS_REPORT("%s: lookat: bad position!\n", __FILE__);
OS_REPORT("%s: ctr %f %f %f+1.0\n", __FILE__, local_58.x, local_58.y, local_58.z);
OS_REPORT("%s: eye %f %f %f\n", __FILE__, local_4c.x, local_4c.y, local_4c.z);
local_58.z += 1.0f;
}
if (cM3d_IsZero(local_64.x) && cM3d_IsZero(local_64.y) && cM3d_IsZero(local_64.z)) {
OS_REPORT("%s: lookat: Zero Vector @ UP!\n", __FILE__);
local_64.y = 1.0f;
}
C_MTXLookAt(mtx, &local_4c, &local_64, &local_58);
Mtx local_40;
mDoMtx_ZrotS(local_40, i_bank);
mDoMtx_concat(local_40, mtx, mtx);
JGeometry::TVec3<f32> local_7c;
local_7c.set(0.0f, mtx[1][1], mtx[2][1]);
JGeometry::TVec3<f32> local_7c(0.0f, mtx[1][1], mtx[2][1]);
if (local_7c.isZero()) {
local_58.y += 1.0f;
C_MTXLookAt(mtx, &local_4c, &local_64, &local_58);
@@ -318,20 +350,6 @@ void mDoMtx_MtxToRot(CMtxP m, csXyz* o_rot) {
}
}
/* ############################################################################################## */
/* 803DD470-803DD4A0 00A190 0030+00 12/12 142/142 1820/1820 .bss now__14mDoMtx_stack_c
*/
Mtx mDoMtx_stack_c::now;
/* 803DD4A0-803DD7A0 00A1C0 0300+00 2/2 0/0 0/0 .bss buffer__14mDoMtx_stack_c */
Mtx mDoMtx_stack_c::buffer[16];
/* 804505A8-804505AC -00001 0004+00 3/3 0/0 0/0 .sdata next__14mDoMtx_stack_c */
Mtx* mDoMtx_stack_c::next = mDoMtx_stack_c::buffer;
/* 804505AC-804505B0 -00001 0004+00 2/2 0/0 0/0 .sdata end__14mDoMtx_stack_c */
Mtx* mDoMtx_stack_c::end = mDoMtx_stack_c::buffer + 16;
/* 8000CCC8-8000CD14 007608 004C+00 0/0 0/0 24/24 .text push__14mDoMtx_stack_cFv */
bool mDoMtx_stack_c::push() {
if (next >= end) {
@@ -420,18 +438,3 @@ void mDoMtx_stack_c::quatM(Quaternion const* param_0) {
mDoMtx_quat(tmp, param_0);
mDoMtx_concat(now, tmp, now);
}
/* 80450C18-80450C20 000118 0001+07 1/1 0/0 0/0 .sbss mDoMtx_stack */
static mDoMtx_stack_c mDoMtx_stack;
/* 803DD7B8-803DD8D8 00A4D8 011C+04 0/1 0/0 0/0 .bss mDoMtx_quatStack */
static mDoMtx_quatStack_c mDoMtx_quatStack;
/* ############################################################################################## */
/* 803A2FD8-803A3020 0000F8 0030+18 0/0 23/23 4/4 .data g_mDoMtx_identity */
extern Mtx g_mDoMtx_identity = {
{1.0f, 0.0f, 0.0f, 0.0f},
{0.0f, 1.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 1.0f, 0.0f},
};