JASChannelMgr and JASBankMgr OK

This commit is contained in:
LagoLunatic
2026-08-28 20:42:59 -04:00
parent e5b3616f36
commit e9f0482395
17 changed files with 467 additions and 132 deletions
+12 -12
View File
@@ -136,13 +136,13 @@ s8 JASystem::TTrack::mainProc() {
}
field_0x364 -= 1.0f;
}
if (mParent && mChannelUpdater.field_0x0) {
if (mParent && mChannelUpdater.mManagedChannels) {
TChannel* channel = mChannelUpdater.getListHead(0);
if (channel) {
mParent->mChannelUpdater.addListHead(channel, 0);
channel->field_0x4 = &mParent->mChannelUpdater;
mChannelUpdater.field_0x0--;
mParent->mChannelUpdater.field_0x0++;
mChannelUpdater.mManagedChannels--;
mParent->mChannelUpdater.mManagedChannels++;
}
}
mIntrMgr.request(REQUEST_UNK_7);
@@ -225,21 +225,21 @@ void JASystem::TTrack::flushAll() {
/* 80281088-80281138 .text moveFreeChannel__Q28JASystem6TTrackFPQ28JASystem11TChannelMgrPQ28JASystem11TChannelMgri */
int JASystem::TTrack::moveFreeChannel(TChannelMgr* param_1, TChannelMgr* param_2, int param_3) {
if (param_3 < 0) {
u32 r31 = param_1->field_0x0;
u32 r31 = param_1->mManagedChannels;
param_2->receiveAllChannels(param_1);
return r31;
}
for (int i = 0; i < param_3; i++) {
if (!param_1->field_0x0) {
if (!param_1->mManagedChannels) {
break;
}
TChannel* channel = param_1->getListHead(0);
if (!channel) {
break;
}
param_1->field_0x0--;
param_1->mManagedChannels--;
param_2->addListHead(channel, 0);
param_2->field_0x0++;
param_2->mManagedChannels++;
}
return 0;
}
@@ -283,14 +283,14 @@ void JASystem::TTrack::connectBus(int line, int param_2) {
}
/* 80281258-802814AC .text noteOn__Q28JASystem6TTrackFUclllUl */
int JASystem::TTrack::noteOn(u8 param_1, s32 param_2, s32 param_3, s32 param_4, u32 param_5) {
int JASystem::TTrack::noteOn(u8 param_1, s32 param_2, s32 param_3, s32 param_4, u32 skipSamples) {
if (field_0x386 && (mPauseStatus & 0x40)) {
return -1;
}
noteOff(param_1, 0);
TChannelMgr* r31 = &mChannelUpdater;
TTrack* parent = mParent;
while (r31->field_0x0 == 0 || r31->field_0x8 == 0) {
while (r31->mManagedChannels == 0 || r31->field_0x8 == 0) {
if (!parent) {
r31 = &mChannelUpdater;
break;
@@ -302,13 +302,13 @@ int JASystem::TTrack::noteOn(u8 param_1, s32 param_2, s32 param_3, s32 param_4,
JUT_ASSERT(527, mParent != NULL);
if (r31 != &mParent->mChannelUpdater) {
if (moveFreeChannel(r31, &mParent->mChannelUpdater, 1) != 1) {
OSReport("in Player (NOTE-MODE) ... ボイス借用に失敗しました!! (%d)\n", r31->field_0x0);
OSReport("in Player (NOTE-MODE) ... ボイス借用に失敗しました!! (%d)\n", r31->mManagedChannels);
}
r31 = &mParent->mChannelUpdater;
}
} else if (r31 != &mChannelUpdater) {
if (moveFreeChannel(r31, &mChannelUpdater, 1) != 1) {
OSReport("in Player ボイス借用に失敗しました!! (%d)\n", r31->field_0x0);
OSReport("in Player ボイス借用に失敗しました!! (%d)\n", r31->mManagedChannels);
}
r31 = &mChannelUpdater;
}
@@ -320,7 +320,7 @@ int JASystem::TTrack::noteOn(u8 param_1, s32 param_2, s32 param_3, s32 param_4,
return -1;
}
mNoteMgr.setChannel(param_1, channel);
channel->field_0xe8 = param_5;
channel->setSkipSamples(skipSamples);
channel->setPanPower(mRegisterParam.getPanPowerBank(), mRegisterParam.getPanPowerExt(), mRegisterParam.getPanPowerOsc(), 0.0f);
overwriteOsc(channel);
if (field_0x374) {