JASBasicWaveBank OK

This commit is contained in:
LagoLunatic
2026-09-20 13:16:06 -04:00
parent 9066be8e31
commit 3bf1629173
7 changed files with 51 additions and 46 deletions
+1 -1
View File
@@ -871,7 +871,7 @@ config.libs = [
Object(Matching, "JSystem/JAudio/JASBasicBank.cpp"),
Object(Matching, "JSystem/JAudio/JASBasicInst.cpp"),
Object(Matching, "JSystem/JAudio/JASDrumSet.cpp"),
Object(NonMatching, "JSystem/JAudio/JASBasicWaveBank.cpp"),
Object(Matching, "JSystem/JAudio/JASBasicWaveBank.cpp"),
Object(Matching, "JSystem/JAudio/JASSimpleWaveBank.cpp"),
Object(Matching, "JSystem/JAudio/JASInstEffect.cpp"),
Object(Matching, "JSystem/JAudio/JASInstSense.cpp"),
+2 -2
View File
@@ -282,7 +282,7 @@ namespace JASystem {
u8 checkImport(int i) const { return mTrackPort.checkImport(i); }
u8 checkExport(int i) const { return mTrackPort.checkExport(i); }
void getActivity() const {}
void getRoute() const {}
int getRoute() const { return mRoute; }
TSeqCtrl* getSeq() { return &mSeqCtrl; }
void pauseTrackAll() { pause(true, true); }
void unPauseTrackAll() { pause(false, true); }
@@ -311,7 +311,7 @@ namespace JASystem {
/* 0x360 */ TOuterParam* mOuterParam;
/* 0x364 */ f32 field_0x364;
/* 0x368 */ f32 field_0x368;
/* 0x36C */ int field_0x36c;
/* 0x36C */ int mRoute;
/* 0x370 */ u32 mUpdateFlags;
/* 0x374 */ u16 field_0x374;
/* 0x376 */ u16 field_0x376;
+30 -23
View File
@@ -414,12 +414,13 @@ void JAIBasic::stopAllSound(u32 soundID, void* param_2) {
void JAIBasic::deleteObject(void* param_1) {
/* Nonmatching */
JAInter::DummyVec* r30 = NULL;
bool r29;
for (int i = 0; i < JAIGlobalParameter::getParamSeCategoryMax(); i++) {
JAISound* sound = JAInter::SeMgr::seRegist[i].field_0x4;
while (sound) {
JAISound* nextSound = sound->field_0x34;
if (sound->field_0x24 == param_1) {
bool r29 = false;
r29 = false;
if (sound->checkSwBit(0x8000)) {
r29 = true;
if (!r30) {
@@ -445,12 +446,18 @@ void JAIBasic::deleteObject(void* param_1) {
/* 80290D94-80290DA0 .text getMapInfoFxline__8JAIBasicFUl */
BOOL JAIBasic::getMapInfoFxline(u32 param_1) {
return param_1 ? TRUE : FALSE;
if (param_1 != 0) {
return TRUE;
}
return FALSE;
}
/* 80290DA0-80290DAC .text getMapInfoGround__8JAIBasicFUl */
BOOL JAIBasic::getMapInfoGround(u32 param_1) {
return param_1 ? TRUE : FALSE;
if (param_1 != 0) {
return TRUE;
}
return FALSE;
}
/* 80290DAC-80290DC4 .text getMapInfoFxParameter__8JAIBasicFUl */
@@ -481,9 +488,9 @@ void JAIBasic::setSeCategoryVolume(u8 param_1, u8 param_2) {
}
/* 80290E50-80291034 .text setParameterSeqSync__8JAIBasicFPQ28JASystem6TTrackUs */
u16 JAIBasic::setParameterSeqSync(JASystem::TTrack* param_1, u16 param_2) {
/* Nonmatching */
u16 r30 = 0;
u16 JAIBasic::setParameterSeqSync(JASystem::TTrack* track, u16 param_2) {
/* Nonmatching - regalloc */
u16 result = 0;
switch (param_2) {
case 0:
for (int i = 0; i < JAIGlobalParameter::seqPlayTrackMax; i++) {
@@ -491,33 +498,33 @@ u16 JAIBasic::setParameterSeqSync(JASystem::TTrack* param_1, u16 param_2) {
continue;
}
JAInter::SeqParameter* seqParam = JAInter::SequenceMgr::getPlayTrackInfo(i)->mSequence->getSeqParameter();
JASystem::TTrack* track = &seqParam->mTrack;
if (track == (JAInter::SequenceMgr::getPlayTrackInfo(i)->mSequence->getID() & 0x800 ? param_1->mParent->mParent : param_1->mParent)) {
u32 r28 = JAInter::routeToTrack(param_1->field_0x36c);
r30 = JAInter::SoundTable::getInfoPointer(JAInter::SequenceMgr::getPlayTrackInfo(i)->mSequence->getID())->mFlag >> 8;
JAInter::SystemInterface::outerInit(JAInter::SequenceMgr::getPlayTrackInfo(i), param_1, r28, r30, param_2 & 1);
JAInter::SequenceMgr::getPlayTrackInfo(i)->field_0x4 |= 1 << r28;
r30 = 0;
JASystem::TTrack* seqTrack = seqParam->getRootTrackPointer();
if (seqTrack == (JAInter::SequenceMgr::getPlayTrackInfo(i)->mSequence->getID() & 0x800 ? track->getParent()->getParent() : track->getParent())) {
u32 trackNo = JAInter::routeToTrack(track->getRoute());
u16 paramFlags = (JAInter::SoundTable::getInfoPointer(JAInter::SequenceMgr::getPlayTrackInfo(i)->mSequence->getID())->mFlag >> 8) & 0xFFFF;
JAInter::SystemInterface::outerInit(JAInter::SequenceMgr::getPlayTrackInfo(i), track, trackNo, paramFlags, param_2 & 1);
JAInter::SequenceMgr::getPlayTrackInfo(i)->field_0x4 |= 1 << trackNo;
result = 0;
i = JAIGlobalParameter::seqPlayTrackMax;
}
}
break;
case 1: {
u8 tmp = param_1->field_0x36c;
JAInter::SeMgr::seTrackUpdate_s* r31 = JAInter::SeMgr::seTrackUpdate;
JASystem::TTrack::TOuterParam* r28 = param_1->mOuterParam;
r28->setParam(OUTERPARAM_Volume, r31[tmp].mPlayingVolume);
r28->setParam(OUTERPARAM_Pan, r31[tmp].mPlayingPan);
r28->setParam(OUTERPARAM_Pitch, r31[tmp].mPlayingPitch);
r28->setParam(OUTERPARAM_Fxmix, r31[tmp].mPlayingFxmix);
r28->setParam(OUTERPARAM_Dolby, msBasic->field_0xd != 2 ? 0.0f : r31[tmp].mPlayingDolby);
u8 route = track->getRoute();
JAInter::SeMgr::seTrackUpdate_s* trackData = JAInter::SeMgr::seTrackUpdate;
JASystem::TTrack::TOuterParam* outerParam = track->getOuterParam();
outerParam->setParam(OUTERPARAM_Volume, trackData[route].mPlayingVolume);
outerParam->setParam(OUTERPARAM_Pan, trackData[route].mPlayingPan);
outerParam->setParam(OUTERPARAM_Pitch, trackData[route].mPlayingPitch);
outerParam->setParam(OUTERPARAM_Fxmix, trackData[route].mPlayingFxmix);
outerParam->setParam(OUTERPARAM_Dolby, msBasic->field_0xd != 2 ? 0.0f : trackData[route].mPlayingDolby);
break;
}
case 127:
param_1->writePortApp(0, JAInter::SeMgr::seScene);
track->writePortApp(0, JAInter::SeMgr::seScene);
break;
}
return r30;
return result;
}
/* 80291034-80291114 .text setSeExtParameter__8JAIBasicFP8JAISound */
+3 -3
View File
@@ -58,10 +58,10 @@ void JAInter::deleteTmpDVDFile(u8** tmpPointer) {
}
/* 802918FC-8029193C .text routeToTrack__7JAInterFUl */
u32 JAInter::routeToTrack(u32 param_1) {
u32 JAInter::routeToTrack(u32 route) {
u32 r4;
u32 r5 = 0;
r4 = param_1 & 0xF0000000;
r4 = route & 0xF0000000;
if (r4 == 0) {
return 0;
}
@@ -70,5 +70,5 @@ u32 JAInter::routeToTrack(u32 param_1) {
} else if (r4 == 0x20000000) {
r5 = 0xFF;
}
return param_1 & r5;
return route & r5;
}
+9 -11
View File
@@ -78,23 +78,21 @@ void JASystem::TBasicWaveBank::incWaveTable(const TWaveGroup* waveGroup) {
/* 80285D54-80285E28 .text decWaveTable__Q28JASystem14TBasicWaveBankFPCQ38JASystem14TBasicWaveBank10TWaveGroup */
void JASystem::TBasicWaveBank::decWaveTable(const TWaveGroup* waveGroup) {
/* Nonmatching */
OSLockMutex(&mMutex);
for (int i = 0; i < waveGroup->getWaveCount(); i++) {
u32 waveID = waveGroup->getWaveID(i);
TWaveInfo* waveInfo = mWaveTable[waveID];
TWaveInfo* waveInfo2 = &waveGroup->mCtrlWaveArray[i];
for (; waveInfo; waveInfo = waveInfo->mPrev) {
if (waveInfo != waveInfo2) {
TWaveInfo** waveTable = &mWaveTable[waveGroup->getWaveID(i)];
TWaveInfo* waveInfo = &waveGroup->mCtrlWaveArray[i];
for (TWaveInfo* it = *waveTable; it; it = it->mPrev) {
if (it != waveInfo) {
continue;
}
if (!waveInfo->mNext) {
mWaveTable[waveID] = waveInfo->mPrev;
if (!it->mNext) {
*waveTable = it->mPrev;
} else {
waveInfo->mNext->mPrev = waveInfo->mPrev;
it->mNext->mPrev = it->mPrev;
}
if (waveInfo->mPrev) {
waveInfo->mPrev->mNext = waveInfo->mNext;
if (it->mPrev) {
it->mPrev->mNext = it->mNext;
}
break;
}
+1 -1
View File
@@ -685,7 +685,7 @@ int JASystem::TSeqParser::cmdPrintf(TTrack* track, u32* args) {
if (byteArray[i] == 2) {
registers[i] = (int)track->getSeq()->getAddr(registers[i]);
} else if (byteArray[i] == 5) {
registers[i] = track->field_0x36c;
registers[i] = track->mRoute;
} else if (byteArray[i] >= 3) {
registers[i] = track->exchangeRegisterValue(registers[i]);
}
+5 -5
View File
@@ -23,7 +23,7 @@ JASystem::TTrack::TTrack() {
mParent = NULL;
field_0x364 = 0.0f;
field_0x368 = 0.0f;
field_0x36c = 0;
mRoute = 0;
mUpdateFlags = 0;
field_0x374 = 0;
field_0x376 = 0x78;
@@ -70,7 +70,7 @@ void JASystem::TTrack::init() {
}
field_0x364 = 0.0f;
field_0x368 = 1.0f;
field_0x36c = 0;
mRoute = 0;
mVibrate.init();
mUpdateFlags = 0;
field_0x374 = 0;
@@ -972,13 +972,13 @@ JASystem::TTrack* JASystem::TTrack::openChild(u8 trk_no, u8 param_2) {
new_track->mParent = this;
new_track->field_0x37b = param_2;
u32 top_nibble = field_0x36c & 0xf0000000;
u32 top_nibble = mRoute & 0xf0000000;
if (top_nibble >= 0x70000000) {
// "JASTrack:openTrack: The hierarchy exceeds 8 levels and an invalid track ID is generated.\n"
OSReport("JASTrack:openTrack: 階層が8段階を超えてしまい、不正なトラックIDが生成されました\n");
}
new_track->field_0x36c = (top_nibble + 0x10000000) |
(((field_0x36c) << 4 | ((u32) trk_no)) & 0x0FFFFFFF);
new_track->mRoute = (top_nibble + 0x10000000) |
(((mRoute) << 4 | ((u32) trk_no)) & 0x0FFFFFFF);
mChildren[(int)trk_no] = new_track;
new_track->inherit();
return new_track;