mirror of
https://github.com/zeldaret/tww.git
synced 2026-10-09 05:31:51 -04:00
JASBasicWaveBank OK
This commit is contained in:
+1
-1
@@ -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"),
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user