Various matches (#1984)

This commit is contained in:
hatal175
2023-11-11 05:18:11 +02:00
committed by GitHub
parent bbb38ed305
commit 0b95ee0c23
24 changed files with 423 additions and 1303 deletions
+1 -6
View File
@@ -184,10 +184,6 @@ void J3DJoint::appendChild(J3DJoint* pChild) {
SECTION_DEAD static u32 const pad_803A2080[2] = {0,0};
#pragma pop
struct copyhelper {
u32 x[8];
};
/* 8032F170-8032F254 329AB0 00E4+00 0/0 1/1 0/0 .text __ct__8J3DJointFv */
J3DJoint::J3DJoint() {
mCallBackUserData = NULL;
@@ -198,8 +194,7 @@ J3DJoint::J3DJoint() {
mJntNo = 0;
mKind = 1;
mScaleCompensate = false;
// This line is probably a fake match but the normal = works nothing like this.
*(copyhelper*)&mTransformInfo = *(copyhelper*)&j3dDefaultTransformInfo;
__memcpy(&mTransformInfo, &j3dDefaultTransformInfo, sizeof(J3DTransformInfo));
mBoundingSphereRadius = 0.0f;
mMtxCalc = NULL;
mMesh = NULL;
+26 -97
View File
@@ -383,13 +383,6 @@ asm void JASDriver::readDspBuffer(s16* param_0, u32 param_1) {
#pragma pop
#endif
/* ############################################################################################## */
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039B30C = "DSP-MAIN";
#pragma pop
/* 8029C900-8029C9DC 297240 00DC+00 1/1 1/1 0/0 .text finishDSPFrame__9JASDriverFv */
void JASDriver::finishDSPFrame() {
int r30 = sDspDacWriteBuffer + 1;
@@ -439,89 +432,45 @@ u32 JASDriver::getFrameSamples() {
return sSubFrames * 0x50;
}
/* ############################################################################################## */
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039B315 = "MONO-MIX";
#pragma pop
/* 8029CA10-8029CAC0 297350 00B0+00 1/0 0/0 0/0 .text mixMonoTrack__9JASDriverFPsUlPFl_Ps
*/
// regalloc
#ifdef NONMATCHING
void JASDriver::mixMonoTrack(s16* param_0, u32 param_1, MixCallback param_2) {
void JASDriver::mixMonoTrack(s16* buffer, u32 param_1, MixCallback param_2) {
JASProbe::start(5, "MONO-MIX");
s16* r31 = param_2(param_1);
s16* pTrack = buffer;
if (r31 == NULL) {
return;
}
JASProbe::stop(5);
for (u32 i = param_1; i != 0; i--) {
param_0[0] = JASCalc::clamp<s16, s32>(param_0[0] + r31[0]);
param_0[1] = JASCalc::clamp<s16, s32>(param_0[1] + r31[0]);
param_0 += 2;
pTrack[0] = JASCalc::clamp<s16, s32>(pTrack[0] + r31[0]);
pTrack[1] = JASCalc::clamp<s16, s32>(pTrack[1] + r31[0]);
pTrack += 2;
r31++;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASDriver::mixMonoTrack(s16* param_0, u32 param_1, MixCallback param_2) {
nofralloc
#include "asm/JSystem/JAudio2/JASAiCtrl/mixMonoTrack__9JASDriverFPsUlPFl_Ps.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039B31E = "MONO(W)-MIX";
#pragma pop
/* 8029CAC0-8029CB70 297400 00B0+00 1/0 0/0 0/0 .text mixMonoTrackWide__9JASDriverFPsUlPFl_Ps */
// instruction order
#ifdef NONMATCHING
void JASDriver::mixMonoTrackWide(s16* param_0, u32 param_1, MixCallback param_2) {
void JASDriver::mixMonoTrackWide(s16* buffer, u32 param_1, MixCallback param_2) {
JASProbe::start(5, "MONO(W)-MIX");
s16* r31 = param_2(param_1);
s16* pTrack = buffer;
if (!r31) {
return;
}
JASProbe::stop(5);
for (u32 i = param_1; i != 0; i--) {
param_0[0] = JASCalc::clamp<s16, s32>(param_0[0] + r31[0]);
param_0[1] = JASCalc::clamp<s16, s32>(param_0[1] - r31[0]);
param_0 += 2;
pTrack[0] = JASCalc::clamp<s16, s32>(pTrack[0] + r31[0]);
s32 src = pTrack[1];
src -= r31[0];
pTrack[1] = JASCalc::clamp<s16, s32>(src);
pTrack += 2;
r31++;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASDriver::mixMonoTrackWide(s16* param_0, u32 param_1, MixCallback param_2) {
nofralloc
#include "asm/JSystem/JAudio2/JASAiCtrl/mixMonoTrackWide__9JASDriverFPsUlPFl_Ps.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039B32A = "DSPMIX";
SECTION_DEAD static char const* const stringBase_8039B331 = "MIXING";
#pragma pop
/* 8029CB70-8029CC50 2974B0 00E0+00 1/0 0/0 0/0 .text mixExtraTrack__9JASDriverFPsUlPFl_Ps */
// missing instruction
#ifdef NONMATCHING
void JASDriver::mixExtraTrack(s16* param_0, u32 param_1, MixCallback param_2) {
void JASDriver::mixExtraTrack(s16* buffer, u32 param_1, MixCallback param_2) {
JASProbe::start(5, "DSPMIX");
s16* r31 = param_2(param_1);
if (!r31) {
@@ -529,51 +478,31 @@ void JASDriver::mixExtraTrack(s16* param_0, u32 param_1, MixCallback param_2) {
}
JASProbe::stop(5);
JASProbe::start(6, "MIXING");
s16* pTrack = buffer;
s16* r29 = r31 + getFrameSamples();
for (u32 i = param_1; i != 0; i--) {
param_0[0] = JASCalc::clamp<s16, s32>(param_0[0] + r29[0]);
param_0[1] = JASCalc::clamp<s16, s32>(param_0[1] + r31[0]);
param_0 += 2;
pTrack[0] = JASCalc::clamp<s16, s32>(pTrack[0] + r29[0]);
pTrack[1] = JASCalc::clamp<s16, s32>(pTrack[1] + r31[0]);
pTrack += 2;
r29++;
r31++;
}
JASProbe::stop(6);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASDriver::mixExtraTrack(s16* param_0, u32 param_1, MixCallback param_2) {
nofralloc
#include "asm/JSystem/JAudio2/JASAiCtrl/mixExtraTrack__9JASDriverFPsUlPFl_Ps.s"
}
#pragma pop
#endif
/* 8029CC50-8029CCD4 297590 0084+00 1/0 0/0 0/0 .text mixInterleaveTrack__9JASDriverFPsUlPFl_Ps */
// missing instructions
#ifdef NONMATCHING
void JASDriver::mixInterleaveTrack(s16* param_0, u32 param_1, MixCallback param_2) {
void JASDriver::mixInterleaveTrack(s16* buffer, u32 param_1, MixCallback param_2) {
s16* r31 = param_2(param_1);
if (!r31) {
return;
}
for (u32 i = param_1 * 2; i != 0; i--) {
param_0[0] = JASCalc::clamp<s16, s32>(param_0[0] + r31[0]);
param_0 += 1;
r31++;
if (r31) {
s16* pTrack = buffer;
s16* r30 = r31;
for (u32 i = param_1 * 2; i != 0; i--) {
pTrack[0] = JASCalc::clamp<s16, s32>(pTrack[0] + r30[0]);
pTrack += 1;
r30++;
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASDriver::mixInterleaveTrack(s16* param_0, u32 param_1, MixCallback param_2) {
nofralloc
#include "asm/JSystem/JAudio2/JASAiCtrl/mixInterleaveTrack__9JASDriverFPsUlPFl_Ps.s"
}
#pragma pop
#endif
/* 8029CCD4-8029CCDC -00001 0008+00 0/0 0/0 0/0 .text getSubFrameCounter__9JASDriverFv */
u32 JASDriver::getSubFrameCounter() {
+9 -10
View File
@@ -7,6 +7,7 @@
#include "dol2asm.h"
#include "dolphin/os/OSCache.h"
#include "MSL_C/math.h"
#include "MSL_C/MSL_Common/Src/limits"
//
// Types:
@@ -340,13 +341,11 @@ f32 JASCalc::pow2(f32 x) {
return ret;
}
/* 8028F69C-8028F6C4 289FDC 0028+00 0/0 4/4 0/0 .text clamp<s,l>__7JASCalcFl */
// Could not make clamp not inline
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_8028F69C(void* _this, s32 param_0) {
nofralloc
#include "asm/JSystem/JAudio2/JASCalc/func_8028F69C.s"
}
#pragma pop
template <>
s16 JASCalc::clamp(s32 x) {
if (std::numeric_limits<s16>::min() >= x)
return std::numeric_limits<s16>::min();
if (x >= std::numeric_limits<s16>::max())
return std::numeric_limits<s16>::max();
return x;
}