Various alignments to debug + matching TUs (#2391)

This commit is contained in:
hatal175
2025-04-13 21:55:52 +03:00
committed by GitHub
parent 15248c85de
commit efc781e892
47 changed files with 759 additions and 506 deletions
+28 -23
View File
@@ -70,11 +70,12 @@ JASSoundParams* Z2Audible::getOuterParams(int param_0) {
/* 802BBEE4-802BC204 2B6824 0320+00 1/1 0/0 0/0 .text
* setOuterParams__9Z2AudibleFRC14JASSoundParamsRC14JASSoundParamsi */
// NONMATCHING regalloc
void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams const& param_1,
int param_2) {
Z2AudibleChannel* this_01 = &field_0x2c[param_2];
u32 iStack_94 = (field_0x10.field_0x0.half.f1 & 0xf00) >> 8;
int index) {
JUT_ASSERT(89, index >= 0);
JUT_ASSERT(90, index < 1);
Z2AudibleChannel* this_01 = &field_0x2c[index];
u8 iStack_94 = (field_0x10.field_0x0.half.f1 & 0xf00) >> 8;
if (iStack_94 == 0) {
this_01->field_0x0.combine(param_0, param_1);
return;
@@ -105,28 +106,24 @@ void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams con
dVar10 = 0.0f;
}
}
dVar10 -= this_01->field_0x28;
f32 dVar11;
if (dVar10 > 0.0f) {
dVar11 = J3DUD::JMAAbs(dVar10);
dVar11 = Z2Calc::getParamByExp(dVar11, 1.0f, 0.0f, 0.1f, 0.1f, 0.5f, Z2Calc::CURVE_SIGN_1);
f32 dVar15 = dVar10 - this_01->field_0x28;
f32 dVar11 = 1.0f;
if (dVar15 > 0.0f) {
dVar11 = Z2Calc::getParamByExp(J3DUD::JMAAbs(dVar15), 1.0f, 0.0f, 0.1f, 0.1f, 0.5f, Z2Calc::CURVE_SIGN_1);
} else {
dVar11 = J3DUD::JMAAbs(dVar10);
dVar11 = Z2Calc::getParamByExp(dVar11, -1.0f, 0.0f, 0.1f, 1.0f / 30.0f, 0.5f, Z2Calc::CURVE_SIGN_1);
dVar11 = Z2Calc::getParamByExp(J3DUD::JMAAbs(dVar15), -1.0f, 0.0f, 0.1f, 1.0f / 30.0f, 0.5f, Z2Calc::CURVE_SIGN_1);
}
f32 fVar1 = this_01->field_0x28 + (dVar10 * dVar11);
if (fVar1 < 0.0f) {
fVar1 = 0.0f;
} else if (fVar1 > 1.0f) {
fVar1 = 1.0f;
dVar10 = this_01->field_0x28 + (dVar15 * dVar11);
if (dVar10 < 0.0f) {
dVar10 = 0.0f;
} else if (dVar10 > 1.0f) {
dVar10 = 1.0f;
}
local_b0.mVolume = param_1.mVolume * fVar1;
this_01->field_0x28 = fVar1;
f32 dVar8 = J3DUD::JMAAbs(local_b8.x);
f32 dVar13 = Z2Calc::getParamByExp(local_b0.mVolume * dVar8, 1.0f, 0.0f, 0.1f,
local_b0.mVolume = param_1.mVolume * dVar10;
this_01->field_0x28 = dVar10;
f32 dVar13 = Z2Calc::getParamByExp(local_b0.mVolume * J3DUD::JMAAbs(local_b8.x), 1.0f, 0.0f, 0.1f,
1.0f / 30.0f, 1.0 / 3.0f, Z2Calc::CURVE_SIGN_1);
f32 dVar14 = J3DUD::JMAAbs(local_b8.y);
dVar14 = Z2Calc::getParamByExp(local_b0.mVolume * dVar14, 1.0f,
f32 dVar14 = Z2Calc::getParamByExp(local_b0.mVolume * J3DUD::JMAAbs(local_b8.y), 1.0f,
0.0f, 0.1f,
1.0f / 30.0f, 1.0f / 3.0f, Z2Calc::CURVE_SIGN_1);
if (dVar13 > 1.0f / 3.0f) {
@@ -514,7 +511,9 @@ Z2Audience::Z2Audience() : JASGlobalInstance<Z2Audience>(true), field_0x4(1.0f),
}
/* 802BD1FC-802BD288 2B7B3C 008C+00 1/0 1/1 0/0 .text __dt__10Z2AudienceFv */
Z2Audience::~Z2Audience() {}
Z2Audience::~Z2Audience() {
//JUT_ASSERT(751, !isActive());
}
/* 802BD2DC-802BD338 2B7C1C 005C+00 0/0 1/1 0/0 .text
* setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib */
@@ -855,6 +854,12 @@ int Z2Audience::getMaxChannels() {
return mMaxChannels;
}
static void dummyMempool() {
}
// padding (???)
s8 data_80451355;
s8 data_80451356;
+47 -21
View File
@@ -10,6 +10,11 @@
#include "d/d_save.h"
#include "d/d_com_inf_game.h"
#ifdef DEBUG
// Should be in data section
static char sSpotName[144] = {0};
#endif
/* 802C589C-802C58AC 2C01DC 0010+00 3/3 0/0 0/0 .text __ct__11Z2EnvSeBaseFP3Vec */
Z2EnvSeBase::Z2EnvSeBase(Vec* param_0) {
mPos = param_0;
@@ -970,6 +975,10 @@ void Z2EnvSeMgr::setHyrulSewerOpen(bool param_0) {
/* 802C8300-802C8730 2C2C40 0430+00 2/1 1/1 0/0 .text startRiverSe__10Z2EnvSeMgrFSc */
// NONMATCHING JAISound stack issues
bool Z2EnvSeMgr::startRiverSe(s8 param_1) {
#ifdef DEBUG
char* spotName = sSpotName;
#endif
if (Z2GetStatusMgr()->mCameraMapInfo == 6) {
switch (Z2GetSceneMgr()->getCurrentSceneNum()) {
case 5:
@@ -982,7 +991,13 @@ bool Z2EnvSeMgr::startRiverSe(s8 param_1) {
}
case 8:
// fake match: should be 2000.0f according to debug, but that generates an extra entry in sdata2
if (Z2GetStatusMgr()->mPolygonPosition.y < -14500.0f) {
if ((Z2GetStatusMgr()->mPolygonPosition.y >
#ifdef DEBUG
2000.0f
#else
-14500.0f
#endif
)) {
break;
}
case 0x15:
@@ -1003,26 +1018,31 @@ bool Z2EnvSeMgr::startRiverSe(s8 param_1) {
f32 dVar16 = param_1 / 127.0f;
f32 dVar18 = field_0x1ac * mRiverSeMgr.getMaxVolume();
f32 dVar13 = mRiverSeMgr.getPanPower();
f32 dVar14 = mRiverSeMgr.getDolbyPower();
f32 dolbyPower = mRiverSeMgr.getDolbyPower();
f32 dVar17 = field_0x1b0;
f32 fArr0;
f32 fArr1;
f32 fArr2;
f32 fArr3;
switch (field_0x188) {
case 0:
return false;
case 1:
aJStack_742 = Z2SE_ENV_RIVER_SMALL;
fArr3 = dolbyPower;
dVar18 *= Z2Calc::linearTransform(field_0x18c.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f,
true);
dVar17 *= Z2Calc::linearTransform(field_0x19c.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f,
true);
uVar8 = field_0x180.startEnvSeLevel(aJStack_742, dVar16, dVar18, dVar13, dVar14, dVar17, 0);
uVar8 = field_0x180.startEnvSeLevel(aJStack_742, dVar16, dVar18, dVar13, dolbyPower, dVar17, 0);
break;
case 2:
aJStack_742 = Z2SE_ENV_RIVER_NORMAL;
mRiverSeMgr.getMaxPowL();
mRiverSeMgr.getMaxPowR();
mRiverSeMgr.getDolbyPower();
uVar8 = field_0x180.startEnvSeLevel(aJStack_742, dVar16, dVar18, dVar13, dVar14, dVar17, 0);
fArr2 = mRiverSeMgr.getDolbyPower();
uVar8 = field_0x180.startEnvSeLevel(aJStack_742, dVar16, dVar18, dVar13, dolbyPower, dVar17, 0);
break;
case 3:
if (field_0x1b8 > 0) {
@@ -1035,15 +1055,17 @@ bool Z2EnvSeMgr::startRiverSe(s8 param_1) {
}
}
aJStack_742 = Z2SE_ENV_SEWER;
fArr1 = dolbyPower;
dVar18 *= Z2Calc::linearTransform(field_0x18c.calcNoise1f(), 0.0f, 1.0f, 0.6f, 1.0f, true);
dVar17 *= Z2Calc::linearTransform(field_0x19c.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.0f, true);
uVar8 = field_0x180.startEnvSeLevel(aJStack_742, dVar16, dVar18, dVar13, dVar14, dVar17, 0);
uVar8 = field_0x180.startEnvSeLevel(aJStack_742, dVar16, dVar18, dVar13, dolbyPower, dVar17, 0);
break;
case 5:
aJStack_742 = Z2SE_ENV_SPIRIT_FOUNTAIN;
fArr0 = dolbyPower;
dVar18 *= Z2Calc::linearTransform(field_0x18c.calcNoise1f(), 0.0f, 1.0f, 0.6f, 1.0f, true);
dVar17 *= Z2Calc::linearTransform(field_0x19c.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.0f, true);
uVar8 = field_0x180.startEnvSeLevel(aJStack_742, dVar16, dVar18, dVar13, dVar14, dVar17, 0);
uVar8 = field_0x180.startEnvSeLevel(aJStack_742, dVar16, dVar18, dVar13, dolbyPower, dVar17, 0);
break;
}
@@ -1323,23 +1345,27 @@ f32 Z2EnvSeMgr::getFogDensity() {
/* 802C9400-802C950C 2C3D40 010C+00 0/0 0/0 1/1 .text startFogSe__10Z2EnvSeMgrFv */
// NONMATCHING fmuls reg order
bool Z2EnvSeMgr::startFogSe() {
bool iVar5 = false;
f32 dVar10 = field_0x2e8.calcNoise1f();
f32 dVar14 = 0.332f + (0.668f * dVar10);
f32 dVar13 = 0.8f + (dVar10 * 0.2f);
f32 dVar12 = 0.5f - (dVar10 * 0.4f) / 2;
bool iVar5 =
field_0x240.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_L, 20.0f, dVar14, dVar12, 0.5f, dVar13, 0);
f32 ratio = 0.332f;
f32 fVar1 = 0.2f;
f32 fVar2 = 0.4f;
f32 dVar14 = ratio + ((1.0f - ratio) * dVar10);
f32 dVar13 = (1.0f - fVar1) + (dVar10 * fVar1);
f32 dVar12 = 0.5f - (dVar10 * fVar2) / 2;
int iVar1 = 20;
f32 fVar3 = 0.5f;
bool iVar6 =
field_0x240.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_L, iVar1, dVar14, dVar12, fVar3, dVar13, 0);
dVar10 = field_0x2f8.calcNoise1f();
dVar14 = (0.332f + (0.668f * dVar10));
dVar13 = (0.8f + (0.2f * dVar10));
dVar12 = (0.5f + ( 0.4f * dVar10) / 2);
bool iVar6 = field_0x274.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_R, 20.0f, dVar14, dVar12, 0.5f,
dVar14 = (ratio + ((1.0f - ratio) * dVar10));
dVar13 = ((1.0f - fVar1) + dVar10 * fVar1);
dVar12 = (0.5f + (dVar10 * fVar2) / 2);
iVar1 = 20;
fVar3 = 0.5f;
iVar5 = field_0x274.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_R, iVar1, dVar14, dVar12, fVar3,
dVar13, 0);
bool uVar8 = false;
if (iVar5 && iVar6) {
uVar8 = true;
}
return uVar8;
return (iVar6 && iVar5);
}
/* 802C950C-802C9F58 2C3E4C 0A4C+00 2/0 1/1 0/0 .text initLv3WaterSe__10Z2EnvSeMgrFUcUcUcUc */
+18 -12
View File
@@ -16,7 +16,7 @@
#include "dol2asm.h"
/* 802AEEA0-802AF010 2A97E0 0170+00 0/0 1/1 0/0 .text __ct__8Z2SeqMgrFv */
Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance<Z2SeqMgr>(this) {
Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance<Z2SeqMgr>(true) {
mMainBgmMaster.forceIn();
mSubBgmMaster.forceIn();
mBgmPause.forceIn();
@@ -28,6 +28,12 @@ Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance<Z2SeqMgr>(this) {
mTwilightGateVol = 1.0f;
mAllBgmMaster.forceIn();
field_0xa4.forceIn();
#ifdef DEBUG
field_0x00_debug = 1.0f;
field_0x04_debug = 0;
#endif
field_0xb8 = -1;
resetBattleBgmParams();
mBgmStatus = 0xff;
@@ -1931,10 +1937,8 @@ void Z2SeqMgr::startBattleBgm(bool i_fade) {
}
/* 802B5204-802B545C 2AFB44 0258+00 3/3 1/1 0/0 .text stopBattleBgm__8Z2SeqMgrFUcUc */
// NONMATCHING regalloc
void Z2SeqMgr::stopBattleBgm(u8 param_0, u8 param_1) {
if (mBattleSeqCount == 0) {
u8 count;
s16 ivar6 = 0;
if (Z2GetLink() != NULL) {
ivar6 = Z2GetLink()->getMoveSpeed() - 23;
@@ -1946,20 +1950,22 @@ void Z2SeqMgr::stopBattleBgm(u8 param_0, u8 param_1) {
ivar6 = struct_80450861;
}
if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) {
u8 count_out = struct_80450861 + ivar6;
count = struct_80450862 + ivar6 / 2;
mSubBgmHandle->fadeOut(count_out);
mBattleSeqCount = count_out;
param_0 = struct_80450861 + ivar6;
param_1 = struct_80450862 + ivar6 / 2;
mSubBgmHandle->fadeOut(param_0);
mBattleSeqCount = param_0;
} else if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) {
if (mSubBgmStatus > 1) {
count = struct_80450861 + ivar6 / 4;
param_0 = struct_80450861 + ivar6 / 4;
param_1 = struct_80450861 + ivar6 / 4;
} else {
count = 25 + ivar6 / 4;
param_0 = 25 + ivar6 / 4;
param_1 = 25 + ivar6 / 4;
}
mSubBgmHandle->fadeOut(count);
mBattleSeqCount = count;
mSubBgmHandle->fadeOut(param_0);
mBattleSeqCount = param_0;
}
mMainBgmMaster.fadeIn(count);
mMainBgmMaster.fadeIn(param_1);
mBattleDistState = 3;
setBattleDistIgnore(false);
mFlags.mBattleSearched = false;
+1 -1
View File
@@ -490,7 +490,7 @@ void Z2SpeechMgr2::setString(u16 const* s, s16 i_textNum, u8 i_speaker, u16 i_mo
if (i_textNum > 500) {
mTextNum = 500;
JUT_WARN_1(387, "TOO MANY TEXT : now(%d) > max(%d)", i_textNum, 500);
JUT_WARN_DEVICE(387, 1, "TOO MANY TEXT : now(%d) > max(%d)", i_textNum, 500);
} else {
mTextNum = i_textNum;
}