diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-11-27 21:19:33 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-27 21:19:33 -0800 |
| commit | 6f96e665186c87f15acb6f5cb8d27665afee3130 (patch) | |
| tree | 3ea70fe7d635a0f55aae44b1a386814766a46597 /src/JSystem | |
| parent | 767caeecc3e374779cccc9960b6546b74e7a9e50 (diff) | |
various Z2Audio / JAudio debug cleanup (#2876)
* some JAudio work
* audio cleanup checkpoint
* checkpoint more audio cleanup
* fix symbols
* more z2 cleanup
* fix regression
* fix build
* some fixes
Diffstat (limited to 'src/JSystem')
28 files changed, 790 insertions, 730 deletions
diff --git a/src/JSystem/JAudio2/JAIAudience.cpp b/src/JSystem/JAudio2/JAIAudience.cpp index 6d8ba4eff7..3e1205e2fc 100644 --- a/src/JSystem/JAudio2/JAIAudience.cpp +++ b/src/JSystem/JAudio2/JAIAudience.cpp @@ -1,5 +1,12 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAIAudience.h" +#include "JSystem/JAudio2/JAISeMgr.h" +#include "JSystem/JAudio2/JAISeqMgr.h" +#include "JSystem/JAudio2/JAIStreamMgr.h" -JAIAudience::~JAIAudience() {} +JAIAudience::~JAIAudience() { + JUT_ASSERT(14, ! JAISeMgr::getInstance() || ( JAISeMgr::getInstance() ->getAudience() != this )); + JUT_ASSERT(15, ! JAISeqMgr::getInstance() || ( JAISeqMgr::getInstance() ->getAudience() != this )); + JUT_ASSERT(16, ! JAIStreamMgr::getInstance() || ( JAIStreamMgr::getInstance() ->getAudience() != this )); +} diff --git a/src/JSystem/JAudio2/JAISe.cpp b/src/JSystem/JAudio2/JAISe.cpp index ad08fcd3d8..08fc743591 100644 --- a/src/JSystem/JAudio2/JAISe.cpp +++ b/src/JSystem/JAudio2/JAISe.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISe -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISe.h" @@ -11,56 +6,62 @@ /* 8029F03C-8029F0F8 29997C 00BC+00 0/0 1/1 0/0 .text * __ct__5JAISeFP8JAISeMgrP27JAISoundStrategyMgr<5JAISe>Ul */ -JAISe::JAISe(JAISeMgr* param_0, JAISoundStrategyMgr<JAISe>* param_1, u32 param_2) : JSULink<JAISe>(this) { - inner_.mSoundStrategyMgr = param_1; - inner_.seMgr = param_0; - inner_.mProperPriority = param_2; +JAISe::JAISe(JAISeMgr* seMgr, JAISoundStrategyMgr<JAISe>* soundStrategyMgr, u32 priority) : JSULink<JAISe>(this) { + inner_.mSoundStrategyMgr = soundStrategyMgr; + inner_.seMgr = seMgr; + inner_.mProperPriority = priority; } /* 8029F0F8-8029F214 299A38 011C+00 1/1 0/0 0/0 .text mixOut___5JAISeFRC14JASSoundParams */ -void JAISe::mixOut_(JASSoundParams const& param_0) { +void JAISe::mixOut_(const JASSoundParams& params) { inner_.track.setTempoRate(inner_.mTempoMgr.getTempo()); - JASSoundParams stackParams; - params.mixOutAll(param_0, &stackParams, fader.getIntensity()); + JASSoundParams mixParams; + params_.mixOutAll(params, &mixParams, fader_.getIntensity()); + if (inner_.field_0x278) { - inner_.field_0x278->virtual4(this, stackParams); + inner_.field_0x278->virtual4(this, mixParams); } + if (audible_) { int maxChannels = audience_->getMaxChannels(); for (int i = 0; i < maxChannels; i++) { - audience_->mixChannelOut(stackParams, audible_, i); + audience_->mixChannelOut(mixParams, audible_, i); } } else { - inner_.mSoundParams = stackParams; + inner_.mSoundParams = mixParams; } } /* 8029F214-8029F250 299B54 003C+00 1/1 0/0 0/0 .text stopTrack___5JAISeFv */ void JAISe::stopTrack_() { switch (inner_.track.getStatus()) { - case 0: + case JASTrack::STATUS_FREE: break; - case 1: + case JASTrack::STATUS_RUN: inner_.track.stopSeq(); break; - case 2: + case JASTrack::STATUS_STOP: break; } } /* 8029F250-8029F304 299B90 00B4+00 1/1 0/0 0/0 .text startTrack___5JAISeFRC14JASSoundParams */ -void JAISe::startTrack_(JASSoundParams const& param_0) { - if (inner_.track.getStatus() == 2) { +void JAISe::startTrack_(const JASSoundParams& params) { + JUT_ASSERT(72, inner_.track.getStatus() != JASTrack::STATUS_RUN); + + if (inner_.track.getStatus() == JASTrack::STATUS_STOP) { inner_.track.init(); } + if (audible_) { initTrack_JAISound_(&inner_.track); } else { - params.mixOutAll(param_0, &inner_.mSoundParams, fader.getIntensity()); + params_.mixOutAll(params, &inner_.mSoundParams, fader_.getIntensity()); inner_.track.setChannelMgrCount(1); inner_.track.assignExtBuffer(0, &inner_.mSoundParams); } + inner_.field_0x26c = 1; inner_.track.setSeqData(inner_.mSeqData.field_0x0, inner_.mSeqData.field_0x4); inner_.track.startSeq(); @@ -68,27 +69,27 @@ void JAISe::startTrack_(JASSoundParams const& param_0) { /* 8029F304-8029F4CC 299C44 01C8+00 0/0 1/1 0/0 .text * JAISeCategoryMgr_mixOut___5JAISeFbRC14JASSoundParams16JAISoundActivity */ -void JAISe::JAISeCategoryMgr_mixOut_(bool param_0, JASSoundParams const& param_1, JAISoundActivity param_2) { - mixOut_(param_1); +void JAISe::JAISeCategoryMgr_mixOut_(bool param_0, const JASSoundParams& params, JAISoundActivity activity) { + mixOut_(params); if (isStopping()) { stopTrack_(); } else if (param_0) { if (status_.isPlaying()) { if (inner_.field_0x26c) { switch (inner_.track.getStatus()) { - case 2: + case JASTrack::STATUS_STOP: if (status_.field_0x1.flags.flag1) { - startTrack_(param_1); + startTrack_(params); } else { stop_JAISound_(); } break; - case 1: - inner_.track.pause(status_.isPaused() || param_2.field_0x0.flags.flag2); - inner_.track.mute(status_.isMute() || param_2.field_0x0.flags.flag1); + case JASTrack::STATUS_RUN: + inner_.track.pause(status_.isPaused() || activity.field_0x0.flags.flag2); + inner_.track.mute(status_.isMute() || activity.field_0x0.flags.flag1); } } else { - startTrack_(param_1); + startTrack_(params); } } } else if (status_.field_0x1.flags.flag1) { @@ -106,31 +107,33 @@ void JAISe::JAISeCategoryMgr_mixOut_(bool param_0, JASSoundParams const& param_1 /* 8029F4CC-8029F5C8 299E0C 00FC+00 0/0 1/1 0/0 .text JAISeCategoryMgr_calc___5JAISeFv */ void JAISe::JAISeCategoryMgr_calc_() { prepare_(); + if (calc_JAISound_()) { inner_.mTempoMgr.calc(); if (inner_.field_0x278) { inner_.field_0x278->calc(this); } } - if (isStopping() || mPriority == -1) { + + if (isStopping() || priority_ == -1) { inner_.mPriority = -1; } else { - inner_.mPriority = inner_.mProperPriority + mPriority; + inner_.mPriority = inner_.mProperPriority + priority_; } } /* 8029F5C8-8029F650 299F08 0088+00 2/1 0/0 0/0 .text JAISound_tryDie___5JAISeFv */ bool JAISe::JAISound_tryDie_() { switch (inner_.track.getStatus()) { - case 0: - case 2: + case JASTrack::STATUS_FREE: + case JASTrack::STATUS_STOP: if (inner_.field_0x278) { inner_.mSoundStrategyMgr->virtual4(inner_.field_0x278); inner_.field_0x278 = NULL; } die_JAISound_(); return true; - case 1: + case JASTrack::STATUS_RUN: break; } return false; @@ -138,11 +141,13 @@ bool JAISe::JAISound_tryDie_() { /* 8029F650-8029F6D8 299F90 0088+00 0/0 1/1 0/0 .text * JAISeMgr_startID___5JAISeF10JAISoundIDPCQ29JGeometry8TVec3<f>P11JAIAudience */ -void JAISe::JAISeMgr_startID_(JAISoundID param_0, JGeometry::TVec3<f32> const* param_1, JAIAudience* param_2) { - start_JAISound_(param_0, param_1, param_2); +void JAISe::JAISeMgr_startID_(JAISoundID id, const JGeometry::TVec3<f32>* posPtr, JAIAudience* audience) { + JUT_ASSERT(221, inner_.track.getStatus() == JASTrack::STATUS_FREE); + + start_JAISound_(id, posPtr, audience); inner_.field_0x26c = 0; if (inner_.mSoundStrategyMgr) { - inner_.field_0x278 = inner_.mSoundStrategyMgr->calc(param_0); + inner_.field_0x278 = inner_.mSoundStrategyMgr->calc(id); } else { inner_.field_0x278 = NULL; } @@ -159,14 +164,17 @@ JAISoundChild* JAISe::getChild(int param_0) { } /* 8029F6E8-8029F6EC 29A028 0004+00 2/1 0/0 0/0 .text releaseChild__5JAISeFi */ -void JAISe::releaseChild(int param_0) { - /* empty function */ -} +void JAISe::releaseChild(int param_0) {} /* 8029F6EC-8029F78C 29A02C 00A0+00 1/1 0/0 0/0 .text prepare_getSeqData___5JAISeFv */ bool JAISe::prepare_getSeqData_() { - switch (inner_.seMgr->getSeqDataMgr()->getSeqData(soundID, &inner_.mSeqData)) { + JUT_ASSERT(271, inner_.track.getStatus() != JASTrack::STATUS_RUN); + JUT_ASSERT(272, inner_.seMgr); + JUT_ASSERT(273, inner_.seMgr ->getSeqDataMgr()); + + switch (inner_.seMgr->getSeqDataMgr()->getSeqData(getID(), &inner_.mSeqData)) { case 0: + OS_REPORT("Failed In Loading Sequence Data:SE(0x%08x)\n", *(u32*)&getID()); status_.state.unk = 2; return false; case 1: @@ -174,7 +182,10 @@ bool JAISe::prepare_getSeqData_() { return false; case 2: return true; + default: + JUT_ASSERT(296, false); } + return false; } @@ -182,6 +193,7 @@ bool JAISe::prepare_getSeqData_() { void JAISe::prepare_() { switch (status_.state.unk) { case 6: + JUT_ASSERT(306, false); break; case 2: stop_JAISound_(); diff --git a/src/JSystem/JAudio2/JAISeMgr.cpp b/src/JSystem/JAudio2/JAISeMgr.cpp index 040f2fde5b..0501961910 100644 --- a/src/JSystem/JAudio2/JAISeMgr.cpp +++ b/src/JSystem/JAudio2/JAISeMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISeMgr -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISeMgr.h" @@ -12,14 +7,14 @@ /* 8029F8B0-8029F91C 29A1F0 006C+00 2/1 0/0 0/0 .text * isUsingSeqData__16JAISeCategoryMgrFRC16JAISeqDataRegion */ -bool JAISeCategoryMgr::isUsingSeqData(JAISeqDataRegion const& param_0) { - JSULink<JAISe>* link = mSeList.getFirst(); - while (link != NULL) { - JAISe* obj = link->getObject(); - if (param_0.intersects(*obj->getSeqData())) { +bool JAISeCategoryMgr::isUsingSeqData(const JAISeqDataRegion& seqDataRegion) { + JSULink<JAISe>* i = mSeList.getFirst(); + while (i != NULL) { + JAISe* obj = i->getObject(); + if (seqDataRegion.intersects(*obj->getSeqData())) { return true; } - link = link->getNext(); + i = i->getNext(); } return false; @@ -27,67 +22,68 @@ bool JAISeCategoryMgr::isUsingSeqData(JAISeqDataRegion const& param_0) { /* 8029F91C-8029F9C4 29A25C 00A8+00 2/1 0/0 0/0 .text * releaseSeqData__16JAISeCategoryMgrFRC16JAISeqDataRegion */ -int JAISeCategoryMgr::releaseSeqData(JAISeqDataRegion const& param_0) { +int JAISeCategoryMgr::releaseSeqData(const JAISeqDataRegion& seqDataRegion) { bool bVar1 = false; - for (JSULink<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - if (param_0.intersects(*link->getObject()->getSeqData())) { - link->getObject()->stop(); + for (JSULink<JAISe>* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + if (seqDataRegion.intersects(*i->getObject()->getSeqData())) { + i->getObject()->stop(); bVar1 = true; } } - // Fake match. li 2 needs to come after clrlwi - u32 x = bVar1; - u32 y = x; - int rv = 2; - if (x) { - rv = 1; - } - return rv; + + enum {_1 = 1, _2}; // fakematch, figure out what this enum is eventually + return bVar1 ? _1 : _2; } /* 8029F9C4-8029FB30 29A304 016C+00 1/1 0/0 0/0 .text JAISeMgr_calc___16JAISeCategoryMgrFv */ void JAISeCategoryMgr::JAISeMgr_calc_() { mParams.calc(); - for (JSULink<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->JAISeCategoryMgr_calc_(); + for (JSULink<JAISe>* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->JAISeCategoryMgr_calc_(); } + sortByPriority_(); } /* 8029FB30-8029FC34 29A470 0104+00 1/1 0/0 0/0 .text JAISeMgr_freeDeadSe___16JAISeCategoryMgrFv */ -// JASPoolAllocObject<_> locations void JAISeCategoryMgr::JAISeMgr_freeDeadSe_() { - JSULink<JAISe>* link = mSeList.getFirst(); - while (link != NULL) { - JSULink<JAISe>* link_next = link->getNext(); - if (link->getObject()->status_.isDead()) { - mSeList.remove(link); - delete link->getObject(); + JSULink<JAISe>* i = mSeList.getFirst(); + while (i != NULL) { + JSULink<JAISe>* link_next = i->getNext(); + if (i->getObject()->status_.isDead()) { + JUT_ASSERT(71, ! i->getObject() ->isHandleAttached()); + mSeList.remove(i); + delete i->getObject(); } - link = link_next; + i = link_next; } } /* 8029FC88-8029FD40 29A5C8 00B8+00 1/1 0/0 0/0 .text * JAISeMgr_acceptsNewSe___16JAISeCategoryMgrCFUl */ -bool JAISeCategoryMgr::JAISeMgr_acceptsNewSe_(u32 param_0) const { +bool JAISeCategoryMgr::JAISeMgr_acceptsNewSe_(u32 priority) const { s32 maxSe = getMaxSe(); if (maxSe <= 0) { return 1; } s32 stopCount = 0; - for (JSULink<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - if (param_0 < link->getObject()->JAISeCategoryMgr_getProperPriority_()) { + for (JSULink<JAISe>* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + if (priority < i->getObject()->JAISeCategoryMgr_getProperPriority_()) { return 1; } - if (!link->getObject()->isStopping()) { + if (!i->getObject()->isStopping()) { stopCount++; } } - return stopCount < maxSe; + + if (stopCount < maxSe) { + return true; + } else { + return false; + } } /* 8029FD40-8029FDE0 29A680 00A0+00 1/1 0/0 0/0 .text sortByPriority___16JAISeCategoryMgrFv */ @@ -96,6 +92,7 @@ void JAISeCategoryMgr::sortByPriority_() { JSULink<JAISe>* link = mSeList.getFirst(); u32 lowestPriority = link->getObject()->JAISeCategoryMgr_getPriority_(); JSULink<JAISe>* current = link->getNext(); + for (int j = 1; j < i; j++) { u32 itemPriority = current->getObject()->JAISeCategoryMgr_getPriority_(); if (itemPriority < lowestPriority) { @@ -104,32 +101,36 @@ void JAISeCategoryMgr::sortByPriority_() { } current = current->getNext(); } - mSeList.remove(link); - mSeList.append(link); + + bool result = mSeList.remove(link); + JUT_ASSERT(131, result); + + result = mSeList.append(link); + JUT_ASSERT(133, result); } } /* 8029FDE0-8029FE34 29A720 0054+00 0/0 1/1 0/0 .text stop__16JAISeCategoryMgrFUl */ -void JAISeCategoryMgr::stop(u32 param_0) { - for (JSULink<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(param_0); +void JAISeCategoryMgr::stop(u32 fadeTime) { + for (JSULink<JAISe>* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(fadeTime); } } /* 8029FE34-8029FE78 29A774 0044+00 1/1 0/0 0/0 .text stop__16JAISeCategoryMgrFv */ void JAISeCategoryMgr::stop() { - for (JSULink<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(); + for (JSULink<JAISe>* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(); } } /* 8029FE78-8029FEEC 29A7B8 0074+00 1/1 0/0 0/0 .text stopSoundID__16JAISeCategoryMgrF10JAISoundID */ -void JAISeCategoryMgr::stopSoundID(JAISoundID param_0) { - if (!param_0.isAnonymous()) { - for (JSULink<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - if ((u32)link->getObject()->getID() == (u32)param_0) { - link->getObject()->stop(); +void JAISeCategoryMgr::stopSoundID(JAISoundID id) { + if (!id.isAnonymous()) { + for (JSULink<JAISe>* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + if ((u32)i->getObject()->getID() == (u32)id) { + i->getObject()->stop(); } } } @@ -137,42 +138,44 @@ void JAISeCategoryMgr::stopSoundID(JAISoundID param_0) { /* 8029FEEC-8029FF18 29A82C 002C+00 0/0 2/2 0/0 .text pause__16JAISeCategoryMgrFb */ void JAISeCategoryMgr::pause(bool param_0) { - for (JSULink<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->pause(param_0); + for (JSULink<JAISe>* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->pause(param_0); } } /* 8029FF18-802A0074 29A858 015C+00 1/1 0/0 0/0 .text * JAISeMgr_mixOut___16JAISeCategoryMgrFRC18JAISoundParamsMove16JAISoundActivity */ -void JAISeCategoryMgr::JAISeMgr_mixOut_(JAISoundParamsMove const& param_0, - JAISoundActivity param_1) { - JASSoundParams aJStack_30; - aJStack_30.combine(param_0.mParams, mParams.mParams); - JSULink<JAISe>* this_00 = mSeList.getFirst(); - int iVar1 = getMaxActiveSe(); +void JAISeCategoryMgr::JAISeMgr_mixOut_(const JAISoundParamsMove& params, + JAISoundActivity activity) { + JASSoundParams mixParams; + mixParams.combine(params.params_, mParams.params_); + JSULink<JAISe>* i = mSeList.getFirst(); + int maxActiveSe = getMaxActiveSe(); + int sp28; - if (iVar1 > 0) { - while (this_00 != NULL && iVar1 > 0 && !this_00->getObject()->isFarAway()) { - this_00->getObject()->JAISeCategoryMgr_mixOut_(true, aJStack_30, param_1); - this_00 = this_00->getNext(); - iVar1--; + if (maxActiveSe > 0) { + while (i != NULL && maxActiveSe > 0 && !i->getObject()->isFarAway()) { + i->getObject()->JAISeCategoryMgr_mixOut_(true, mixParams, activity); + i = i->getNext(); + maxActiveSe--; + sp28 = maxActiveSe; } - for (; this_00 != NULL; this_00 = this_00->getNext()) { - this_00->getObject()->JAISeCategoryMgr_mixOut_(false, aJStack_30, param_1); + for (; i != NULL; i = i->getNext()) { + i->getObject()->JAISeCategoryMgr_mixOut_(false, mixParams, activity); } } else { - while (this_00 != NULL && !this_00->getObject()->isFarAway()) { - this_00->getObject()->JAISeCategoryMgr_mixOut_(true, aJStack_30, param_1); - this_00 = this_00->getNext(); + while (i != NULL && !i->getObject()->isFarAway()) { + i->getObject()->JAISeCategoryMgr_mixOut_(true, mixParams, activity); + i = i->getNext(); } - for (; this_00 != NULL; this_00 = this_00->getNext()) { - this_00->getObject()->JAISeCategoryMgr_mixOut_(false, aJStack_30, param_1); + for (; i != NULL; i = i->getNext()) { + i->getObject()->JAISeCategoryMgr_mixOut_(false, mixParams, activity); } } } /* 802A0074-802A0168 29A9B4 00F4+00 0/0 1/1 0/0 .text __ct__8JAISeMgrFb */ -JAISeMgr::JAISeMgr(bool param_0) : JASGlobalInstance<JAISeMgr>(param_0) { +JAISeMgr::JAISeMgr(bool setInstance) : JASGlobalInstance<JAISeMgr>(setInstance) { mAudience = NULL; mSeqDataMgr = NULL; mStrategyMgr = NULL; @@ -182,9 +185,9 @@ JAISeMgr::JAISeMgr(bool param_0) : JASGlobalInstance<JAISeMgr>(param_0) { /* 802A0168-802A01D8 29AAA8 0070+00 1/0 0/0 0/0 .text * isUsingSeqData__8JAISeMgrFRC16JAISeqDataRegion */ -bool JAISeMgr::isUsingSeqData(JAISeqDataRegion const& param_0) { +bool JAISeMgr::isUsingSeqData(const JAISeqDataRegion& seqDataRegion) { for (int i = 0; i < 16; i++) { - if (mCategoryMgrs[i].JAISeCategoryMgr::isUsingSeqData(param_0)) { + if (mCategoryMgrs[i].JAISeCategoryMgr::isUsingSeqData(seqDataRegion)) { return true; } } @@ -193,26 +196,27 @@ bool JAISeMgr::isUsingSeqData(JAISeqDataRegion const& param_0) { /* 802A01D8-802A0268 29AB18 0090+00 1/0 0/0 0/0 .text * releaseSeqData__8JAISeMgrFRC16JAISeqDataRegion */ -int JAISeMgr::releaseSeqData(JAISeqDataRegion const& param_0) { - u8 r30 = 0; +int JAISeMgr::releaseSeqData(const JAISeqDataRegion& seqDataRegion) { + bool r30 = 0; for (int i = 0; i < 16; i++) { - switch (mCategoryMgrs[i].JAISeCategoryMgr::releaseSeqData(param_0)) { - case 0: - return 0; - case 1: - r30 = 1; - break; + switch (mCategoryMgrs[i].JAISeCategoryMgr::releaseSeqData(seqDataRegion)) { + case 0: + return 0; + case 1: + r30 = 1; + break; } } + return (r30 != 0) ? 1 : 0; } /* 802A0268-802A02A0 29ABA8 0038+00 0/0 1/1 0/0 .text * setCategoryArrangement__8JAISeMgrFRC24JAISeCategoryArrangement */ -void JAISeMgr::setCategoryArrangement(JAISeCategoryArrangement const& param_0) { +void JAISeMgr::setCategoryArrangement(const JAISeCategoryArrangement& arrangement) { for (int i = 0; i < 16; i++) { - mCategoryMgrs[i].setMaxActiveSe(param_0.mItems[i].mMaxActiveSe); - mCategoryMgrs[i].setMaxInactiveSe(param_0.mItems[i].mMaxInactiveSe); + mCategoryMgrs[i].setMaxActiveSe(arrangement.mItems[i].mMaxActiveSe); + mCategoryMgrs[i].setMaxInactiveSe(arrangement.mItems[i].mMaxInactiveSe); } } @@ -225,9 +229,9 @@ void JAISeMgr::stop() { /* 802A02F4-802A0358 29AC34 0064+00 0/0 1/1 0/0 .text stopSoundID__8JAISeMgrF10JAISoundID */ -void JAISeMgr::stopSoundID(JAISoundID param_0) { +void JAISeMgr::stopSoundID(JAISoundID id) { for (int i = 0; i < 16; i++) { - mCategoryMgrs[i].stopSoundID(param_0); + mCategoryMgrs[i].stopSoundID(id); } } @@ -240,14 +244,16 @@ void JAISeMgr::initParams() { /* 802A03D8-802A03E0 -00001 0008+00 0/0 0/0 0/0 .text setAudience__8JAISeMgrFP11JAIAudience */ -void JAISeMgr::setAudience(JAIAudience* param_0) { - mAudience = param_0; +void JAISeMgr::setAudience(JAIAudience* audience) { + JUT_ASSERT(363, ! isActive()); + mAudience = audience; } /* 802A03E0-802A0434 29AD20 0054+00 0/0 1/1 0/0 .text setSeqDataMgr__8JAISeMgrFP13JAISeqDataMgr */ -void JAISeMgr::setSeqDataMgr(JAISeqDataMgr* param_0) { +void JAISeMgr::setSeqDataMgr(JAISeqDataMgr* seqDataMgr) { + JUT_ASSERT(377, ! isActive()); resetSeqDataMgr(); - mSeqDataMgr = param_0; + mSeqDataMgr = seqDataMgr; mSeqDataMgr->setSeqDataUser(this); } @@ -260,21 +266,25 @@ void JAISeMgr::resetSeqDataMgr() { } /* 802A0484-802A0574 29ADC4 00F0+00 1/1 0/0 0/0 .text newSe___8JAISeMgrFiUl */ -JAISe* JAISeMgr::newSe_(int i_category, u32 param_1) { - if (i_category < 0) { - i_category = 0; +JAISe* JAISeMgr::newSe_(int category, u32 priority) { + JUT_ASSERT(396, category < NUM_CATEGORIES); + + if (category < 0) { + category = 0; } - if (!mCategoryMgrs[i_category].JAISeMgr_acceptsNewSe_(param_1)) { + JAISeCategoryMgr* categoryMgr = &mCategoryMgrs[category]; + if (!categoryMgr->JAISeMgr_acceptsNewSe_(priority)) { return NULL; } - JAISe* se = new JAISe(this, mStrategyMgr, param_1); + JAISe* se = new JAISe(this, mStrategyMgr, priority); if (se == NULL) { + JUT_WARN(410, "%s", "JASPoolAllocObject::<JAISe>::operator new failed .\n") return NULL; } - mCategoryMgrs[i_category].JAISeMgr_appendSe_(se); + categoryMgr->JAISeMgr_appendSe_(se); return se; } @@ -298,43 +308,49 @@ void JAISeMgr::mixOut() { /* 802A0768-802A08D0 29B0A8 0168+00 0/0 1/1 0/0 .text * startSound__8JAISeMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f> */ -bool JAISeMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, - JGeometry::TVec3<f32> const* param_2) { - if (param_1 && param_1->isSoundAttached()) { - param_1->getSound()->stop(); +bool JAISeMgr::startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3<f32>* posPtr) { + if (handle && *handle) { + (*handle)->stop(); } - JAISoundInfo* pSoundInfo = JASGlobalInstance<JAISoundInfo>::getInstance(); - u32 uVar4; - u32 categoryIndex; - if (pSoundInfo != NULL) { - categoryIndex = pSoundInfo->getCategory(param_0); - uVar4 = pSoundInfo->getPriority(param_0); + JAISoundInfo* soundInfoPtr = JASGlobalInstance<JAISoundInfo>::getInstance(); + u32 priority; + u32 category; + if (soundInfoPtr != NULL) { + category = soundInfoPtr->getCategory(id); + priority = soundInfoPtr->getPriority(id); } else { - categoryIndex = param_0.mId.mBytes.b1; - uVar4 = 0; + category = id.id_.info.type.parts.groupID; + priority = 0; } - JAISe* pJAISe = newSe_(categoryIndex, uVar4); - if (pJAISe == NULL) { - JASReport("cannot new Se %08x.", param_0.mId.mFullId); + + JAISe* se = newSe_(category, priority); + if (se == NULL) { + #if !PLATFORM_SHIELD + JASReport("cannot new Se %08x.", id.id_.composite_); + #endif return false; } - JAIAudience* pAudience = getAudience(categoryIndex); - pJAISe->JAISeMgr_startID_(param_0, param_2, pAudience); - if (pSoundInfo != NULL) { - pSoundInfo->getSeInfo(param_0, pJAISe); + + JAIAudience* audiencePtr = getAudience(category); + se->JAISeMgr_startID_(id, posPtr, audiencePtr); + + if (soundInfoPtr != NULL) { + soundInfoPtr->getSeInfo(id, se); } - if (param_1 != NULL) { - pJAISe->attachHandle(param_1); + + if (handle != NULL) { + se->attachHandle(handle); } + return true; } /* 802A08D0-802A08FC 29B210 002C+00 0/0 2/2 0/0 .text getNumActiveSe__8JAISeMgrCFv */ int JAISeMgr::getNumActiveSe() const { - int sum = 0; + int num = 0; for (int i = 0; i < 16; i++) { - sum += mCategoryMgrs[i].getNumSe(); + num += mCategoryMgrs[i].getNumSe(); } - return sum; + return num; } diff --git a/src/JSystem/JAudio2/JAISeq.cpp b/src/JSystem/JAudio2/JAISeq.cpp index 215317e194..5e9ec3a5ad 100644 --- a/src/JSystem/JAudio2/JAISeq.cpp +++ b/src/JSystem/JAudio2/JAISeq.cpp @@ -1,14 +1,8 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISeq -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISeq.h" #include "JSystem/JAudio2/JAISeqMgr.h" #include "JSystem/JAudio2/JAISoundChild.h" -#include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JAudio2/JASCriticalSection.h" #include "JSystem/JAudio2/JAIAudience.h" @@ -17,17 +11,17 @@ namespace { /* 802A0A6C-802A0A8C 29B3AC 0020+00 1/1 0/0 0/0 .text * JASTrack_isFreeOrStopped__20@unnamed@JAISeq_cpp@FP8JASTrack */ static bool JASTrack_isFreeOrStopped(JASTrack* track) { - u8 status = track->getStatus(); - return status == 0 || status == 2; + u32 status = track->getStatus(); + return status == JASTrack::STATUS_FREE || status == JASTrack::STATUS_STOP; } } // namespace /* 802A0A8C-802A0B64 29B3CC 00D8+00 0/0 2/1 0/0 .text * __ct__6JAISeqFP9JAISeqMgrP28JAISoundStrategyMgr<6JAISeq> */ -JAISeq::JAISeq(JAISeqMgr* param_0, JAISoundStrategyMgr<JAISeq>* param_1) : JSULink<JAISeq>(this) { - inner_.seqMgr = param_0; - inner_.strategyMgr = param_1; +JAISeq::JAISeq(JAISeqMgr* seqMgr, JAISoundStrategyMgr<JAISeq>* soundStrategyMgr) : JSULink<JAISeq>(this) { + inner_.seqMgr = seqMgr; + inner_.strategyMgr = soundStrategyMgr; inner_.mSoundParams.init(); for (int i = 0; i < 32; i++) { inner_.mSoundChild[i] = NULL; @@ -36,13 +30,14 @@ JAISeq::JAISeq(JAISeqMgr* param_0, JAISoundStrategyMgr<JAISeq>* param_1) : JSULi /* 802A0B64-802A0C04 29B4A4 00A0+00 0/0 1/1 0/0 .text * JAISeqMgr_startID___6JAISeqF10JAISoundIDPCQ29JGeometry8TVec3<f>P11JAIAudienceii */ -void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3<f32> const* param_1, - JAIAudience* param_2, int param_3, int param_4) { - inner_.field_0x39c = param_3; +void JAISeq::JAISeqMgr_startID_(JAISoundID id, const JGeometry::TVec3<f32>* posPtr, + JAIAudience* audience, int category, int param_4) { + inner_.field_0x39c = category; reserveChildTracks_(param_4); - start_JAISound_(param_0, param_1, param_2); + start_JAISound_(id, posPtr, audience); + if (inner_.strategyMgr) { - field_0x3a8 = inner_.strategyMgr->calc(param_0); + field_0x3a8 = inner_.strategyMgr->calc(id); } else { field_0x3a8 = NULL; } @@ -50,7 +45,9 @@ void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3<f32> const* /* 802A0C04-802A0CA4 29B544 00A0+00 1/1 0/0 0/0 .text * playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -void JAISeq::playSeqData_(JASSoundParams const& param_0, JAISoundActivity param_1) { +void JAISeq::playSeqData_(const JASSoundParams& params, JAISoundActivity activity) { + JUT_ASSERT(72, JASTrack_isFreeOrStopped( & inner_.outputTrack )); + inner_.outputTrack.setSeqData(inner_.mSeqData.field_0x0, inner_.mSeqData.field_0x4); if (audible_) { initTrack_JAISound_(&inner_.outputTrack); @@ -58,33 +55,42 @@ void JAISeq::playSeqData_(JASSoundParams const& param_0, JAISoundActivity param_ inner_.outputTrack.setChannelMgrCount(1); inner_.outputTrack.assignExtBuffer(0, &inner_.mSoundParams); } - mixOut_(param_0, param_1); + + mixOut_(params, activity); inner_.outputTrack.startSeq(); } /* 802A0CA4-802A0E48 29B5E4 01A4+00 1/1 0/0 0/0 .text reserveChildTracks___6JAISeqFi */ void JAISeq::reserveChildTracks_(int param_0) { + JUT_ASSERT(92, inner_.outputTrack.getStatus() == JASTrack::STATUS_FREE); + for (int i = 0; i < 2; i++) { JASTrack* track = new JASTrack(); if (track) { track->setAutoDelete(true); inner_.outputTrack.connectChild(i, track); + for (int j = 0; j < 16; j++) { - if (i * 16 + j >= param_0) { + int sp18 = i * 16 + j; + if (sp18 >= param_0) { continue; } + JASTrack* track2 = new JASTrack(); if (track2) { track2->setAutoDelete(true); track->connectChild(j, track2); + } else { + JUT_WARN(117, "%s", "JASPoolAllocObject::<JASTrack>::operator new failed .\n"); } } + } else { + JUT_WARN(124, "%s", "JASPoolAllocObject::<JASTrack>::operator new failed .\n"); } } } /* 802A0E48-802A0EDC 29B788 0094+00 1/1 0/0 0/0 .text releaseChildTracks___6JAISeqFv */ -// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations void JAISeq::releaseChildTracks_() { for (u32 i = 0; i < 2; i++) { JASTrack* track = inner_.outputTrack.getChild(i); @@ -102,13 +108,17 @@ void JAISeq::releaseChildTracks_() { /* 802A0EDC-802A0F90 29B81C 00B4+00 1/1 0/0 0/0 .text prepare_getSeqData___6JAISeqFv */ bool JAISeq::prepare_getSeqData_() { - JAISoundID id(soundID); + JAISoundID id(soundID_); // fakematch, should be using getID but it messes up stack if (id.isAnonymous()) { return true; } + JAISeqDataMgr* seqDataMgr = inner_.seqMgr->getSeqDataMgr(); + JUT_ASSERT(162, seqDataMgr); + switch (seqDataMgr->getSeqData(id, &inner_.mSeqData)) { case 0: + OS_REPORT("Failed In Loading Sequence Data:SEQ(0x%08x)\n", getID()); status_.state.unk = 2; break; case 1: @@ -117,14 +127,16 @@ bool JAISeq::prepare_getSeqData_() { case 2: return true; } + return false; } /* 802A0F90-802A108C 29B8D0 00FC+00 2/1 0/0 0/0 .text * prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -bool JAISeq::prepare_(JASSoundParams const& param_0, JAISoundActivity param_1) { +bool JAISeq::prepare_(const JASSoundParams& params, JAISoundActivity activity) { switch (status_.state.unk) { case 6: + JUT_ASSERT(193, false); break; case 2: stop_JAISound_(); @@ -132,7 +144,7 @@ bool JAISeq::prepare_(JASSoundParams const& param_0, JAISoundActivity param_1) { case 0: if (prepare_getSeqData_()) { status_.state.unk = 5; - playSeqData_(param_0, param_1); + playSeqData_(params, activity); return true; } break; @@ -143,20 +155,22 @@ bool JAISeq::prepare_(JASSoundParams const& param_0, JAISoundActivity param_1) { return false; case 4: status_.state.unk = 5; - playSeqData_(param_0, param_1); + playSeqData_(params, activity); return true; case 5: return true; } + return false; } /* 802A108C-802A1180 29B9CC 00F4+00 0/0 1/1 0/0 .text JAISeqMgr_calc___6JAISeqFv */ void JAISeq::JAISeqMgr_calc_() { - if (inner_.outputTrack.getStatus() == 2 || (inner_.outputTrack.getStatus() == 0 && status_.state.unk == 2)) { + if (inner_.outputTrack.getStatus() == JASTrack::STATUS_STOP || (inner_.outputTrack.getStatus() == JASTrack::STATUS_FREE && status_.state.unk == 2)) { die_(); return; } + if (calc_JAISound_()) { inner_.mTempoMgr.calc(); for (int i = 0; i < 32; i++) { @@ -171,18 +185,22 @@ void JAISeq::JAISeqMgr_calc_() { } /* 802A1180-802A1268 29BAC0 00E8+00 2/2 0/0 0/0 .text die___6JAISeqFv */ -// NONMATCHING JASPoolAllocObject<_> locations void JAISeq::die_() { + JUT_ASSERT(269, JASTrack_isFreeOrStopped( & inner_.outputTrack )); + for (int i = 0; i < 32; i++) { if (inner_.mSoundChild[i]) { delete inner_.mSoundChild[i]; inner_.mSoundChild[i] = NULL; } } + if (field_0x3a8) { + JUT_ASSERT(281, inner_.strategyMgr); inner_.strategyMgr->virtual4(field_0x3a8); field_0x3a8 = NULL; } + releaseChildTracks_(); die_JAISound_(); } @@ -193,32 +211,40 @@ bool JAISeq::JAISound_tryDie_() { die_(); return true; } - fader.forceOut(); + + fader_.forceOut(); status_.state.flags.flag1 = 1; - JASCriticalSection cs; - inner_.outputTrack.stopSeq(); + + { + JASCriticalSection cs; + inner_.outputTrack.stopSeq(); + } + return false; } /* 802A1348-802A14FC 29BC88 01B4+00 2/2 0/0 0/0 .text * mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -void JAISeq::mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { +void JAISeq::mixOut_(const JASSoundParams& params, JAISoundActivity activity) { inner_.outputTrack.setTempoRate(inner_.mTempoMgr.getTempo()); - inner_.outputTrack.mute(param_1.field_0x0.flags.flag1 || status_.isMute()); - inner_.outputTrack.pause(param_1.field_0x0.flags.flag2 || status_.isPaused()); - JASSoundParams stackParams; - params.mixOutAll(param_0, &stackParams, fader.getIntensity()); + inner_.outputTrack.mute(activity.field_0x0.flags.flag1 || status_.isMute()); + inner_.outputTrack.pause(activity.field_0x0.flags.flag2 || status_.isPaused()); + + JASSoundParams outParams; + params_.mixOutAll(params, &outParams, fader_.getIntensity()); + if (field_0x3a8) { - field_0x3a8->virtual4(this, stackParams); + field_0x3a8->virtual4(this, outParams); } + if (audible_) { int maxChannels = audience_->getMaxChannels(); for (int i = 0; i < maxChannels; i++) { - audience_->mixChannelOut(stackParams, audible_, i); + audience_->mixChannelOut(outParams, audible_, i); } } else { - inner_.mSoundParams = stackParams; - for (int i = 0; i < 32; i++) { + inner_.mSoundParams = outParams; + for (int i = 0; i < NUM_CHILDREN; i++) { if (inner_.mSoundChild[i]) { JASTrack* track = JAISeq::getChildTrack(i); if (track) { @@ -231,45 +257,49 @@ void JAISeq::mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { /* 802A14FC-802A1570 29BE3C 0074+00 0/0 1/1 0/0 .text * JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -void JAISeq::JAISeqMgr_mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { - if (prepare_(param_0, param_1) && inner_.outputTrack.getStatus() == 1) { - mixOut_(param_0, param_1); +void JAISeq::JAISeqMgr_mixOut_(const JASSoundParams& params, JAISoundActivity activity) { + if (prepare_(params, activity) && inner_.outputTrack.getStatus() == JASTrack::STATUS_RUN) { + mixOut_(params, activity); } } /* 802A1570-802A1578 29BEB0 0008+00 1/0 0/0 0/0 .text getNumChild__6JAISeqCFv */ s32 JAISeq::getNumChild() const { - return 32; + return NUM_CHILDREN; } /* 802A1578-802A165C 29BEB8 00E4+00 1/0 0/0 0/0 .text getChild__6JAISeqFi */ -// NONMATCHING JASPoolAllocObject<_> locations JAISoundChild* JAISeq::getChild(int index) { + JUT_ASSERT(371, status_.isAlive()); + JUT_ASSERT(372, index >= 0); + JUT_ASSERT(373, index < NUM_CHILDREN); + if (inner_.mSoundChild[index]) { return inner_.mSoundChild[index]; } + inner_.mSoundChild[index] = new JAISoundChild(); if (!inner_.mSoundChild[index]) { + JUT_WARN(379, "%s", "JASPoolAllocObject::<JAISoundChild>::operator new failed .\n"); return NULL; } + return inner_.mSoundChild[index]; } /* 802A165C-802A1728 29BF9C 00CC+00 1/0 0/0 0/0 .text releaseChild__6JAISeqFi */ -// NONMATCHING JASPoolAllocObject<_> locations -void JAISeq::releaseChild(int param_0) { - if (inner_.outputTrack.getStatus() == 1 && inner_.mSoundChild[param_0]) { - JASTrack* track = getChildTrack(param_0); +void JAISeq::releaseChild(int index) { + if (inner_.outputTrack.getStatus() == JASTrack::STATUS_RUN && inner_.mSoundChild[index]) { + JASTrack* track = getChildTrack(index); if (track) { track->assignExtBuffer(0, NULL); } - delete inner_.mSoundChild[param_0]; - inner_.mSoundChild[param_0] = NULL; + delete inner_.mSoundChild[index]; + inner_.mSoundChild[index] = NULL; } } - /* 802A1728-802A1730 29C068 0008+00 1/0 0/0 0/0 .text getTrack__6JAISeqFv */ JASTrack* JAISeq::getTrack() { return &inner_.outputTrack; @@ -277,12 +307,15 @@ JASTrack* JAISeq::getTrack() { /* 802A1730-802A1768 29C070 0038+00 2/1 0/0 0/0 .text getChildTrack__6JAISeqFi */ JASTrack* JAISeq::getChildTrack(int param_0) { - u32 tmp = u32(param_0) >> 4; - JASTrack* track = inner_.outputTrack.getChild(tmp); + u32 index = u32(param_0) >> 4; + JASTrack* track = inner_.outputTrack.getChild(index); + if (track) { - JASTrack* track2 = track->getChild(param_0 - (tmp << 4)); + u32 var_r28 = param_0 - (index << 4); + JASTrack* track2 = track->getChild(var_r28); return track2; } + return NULL; } diff --git a/src/JSystem/JAudio2/JAISeqDataMgr.cpp b/src/JSystem/JAudio2/JAISeqDataMgr.cpp index 7abec15e6d..bbf1ee5995 100644 --- a/src/JSystem/JAudio2/JAISeqDataMgr.cpp +++ b/src/JSystem/JAudio2/JAISeqDataMgr.cpp @@ -4,4 +4,6 @@ JAISeqDataUser::~JAISeqDataUser() {} -JAISeqDataMgr::~JAISeqDataMgr() {} +JAISeqDataMgr::~JAISeqDataMgr() { + JUT_ASSERT(14, false); +} diff --git a/src/JSystem/JAudio2/JAISeqMgr.cpp b/src/JSystem/JAudio2/JAISeqMgr.cpp index ed595122ae..a740b3e2d4 100644 --- a/src/JSystem/JAudio2/JAISeqMgr.cpp +++ b/src/JSystem/JAudio2/JAISeqMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISeqMgr -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISeqMgr.h" @@ -12,9 +7,9 @@ /* 802A1804-802A1870 29C144 006C+00 1/0 0/0 0/0 .text * isUsingSeqData__9JAISeqMgrFRC16JAISeqDataRegion */ -bool JAISeqMgr::isUsingSeqData(JAISeqDataRegion const& param_1) { - for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - if (param_1.intersects(link->getObject()->getSeqData())) { +bool JAISeqMgr::isUsingSeqData(const JAISeqDataRegion& seqDataRegion) { + for (JSULink<JAISeq>* i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + if (seqDataRegion.intersects(i->getObject()->getSeqData())) { return true; } } @@ -23,25 +18,20 @@ bool JAISeqMgr::isUsingSeqData(JAISeqDataRegion const& param_1) { /* 802A1870-802A1914 29C1B0 00A4+00 1/0 0/0 0/0 .text * releaseSeqData__9JAISeqMgrFRC16JAISeqDataRegion */ -int JAISeqMgr::releaseSeqData(JAISeqDataRegion const& param_1) { +int JAISeqMgr::releaseSeqData(const JAISeqDataRegion& seqDataRegion) { bool bVar1 = false; - for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - if (param_1.intersects(link->getObject()->getSeqData())) { - link->getObject()->stop(); + for (JSULink<JAISeq>* i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + if (seqDataRegion.intersects(i->getObject()->getSeqData())) { + i->getObject()->stop(); bVar1 = true; } } - ReleaseSeqResult uVar4; - if (!bVar1) { - uVar4 = RELEASE_SEQ_2; - } else { - uVar4 = RELEASE_SEQ_1; - } - return uVar4; + + return bVar1 ? RELEASE_SEQ_1 : RELEASE_SEQ_2; } /* 802A1914-802A1A08 29C254 00F4+00 0/0 1/1 0/0 .text __ct__9JAISeqMgrFb */ -JAISeqMgr::JAISeqMgr(bool param_1) : JASGlobalInstance<JAISeqMgr>(param_1), mAudience(NULL) { +JAISeqMgr::JAISeqMgr(bool setInstance) : JASGlobalInstance<JAISeqMgr>(setInstance), mAudience(NULL) { seqDataMgr_ = NULL; field_0x10 = NULL; field_0x70 = 16; @@ -51,38 +41,40 @@ JAISeqMgr::JAISeqMgr(bool param_1) : JASGlobalInstance<JAISeqMgr>(param_1), mAud /* 802A1A08-802A1AF4 29C348 00EC+00 1/1 0/0 0/0 .text freeDeadSeq___9JAISeqMgrFv */ void JAISeqMgr::freeDeadSeq_() { - JSULink<JAISeq>* link = mSeqList.getFirst(); - while (link != NULL) { - JAISeq* seq = link->getObject(); - JSULink<JAISeq>* next = link->getNext(); + JSULink<JAISeq>* i = mSeqList.getFirst(); + while (i != NULL) { + JAISeq* seq = i->getObject(); + JSULink<JAISeq>* next = i->getNext(); if (seq->status_.isDead()) { - mSeqList.remove(link); + mSeqList.remove(i); delete seq; } - link = next; + i = next; } } /* 802A1B48-802A1C90 29C488 0148+00 0/0 1/1 0/0 .text * startSound__9JAISeqMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f> */ -bool JAISeqMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2, - JGeometry::TVec3<f32> const* param_3) { - if (param_2 != NULL && *param_2) { - (*param_2)->stop(); +bool JAISeqMgr::startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3<f32>* posPtr) { + if (handle != NULL && *handle) { + (*handle)->stop(); } + JAISoundInfo* soundInfo = JASGlobalInstance<JAISoundInfo>::getInstance(); - int category = (soundInfo != NULL) ? soundInfo->getCategory(param_1) : -1; - JAISeqData aJStack_38(NULL, 0); + int category = (soundInfo != NULL) ? soundInfo->getCategory(id) : -1; + JAISeqData seqData(NULL, 0); + JUT_ASSERT(81, seqDataMgr_); - if (seqDataMgr_->getSeqData(param_1, &aJStack_38) == JAISeqDataMgr::SeqDataReturnValue_0) { + if (seqDataMgr_->getSeqData(id, &seqData) == JAISeqDataMgr::SeqDataReturnValue_0) { return false; } - JAISeq* jaiSeq = beginStartSeq_(); - if (jaiSeq != NULL) { - jaiSeq->JAISeqMgr_startID_(param_1, param_3, mAudience, category, field_0x70); - if (endStartSeq_(jaiSeq, param_2) != 0) { + + JAISeq* seq = beginStartSeq_(); + if (seq != NULL) { + seq->JAISeqMgr_startID_(id, posPtr, mAudience, category, field_0x70); + if (endStartSeq_(seq, handle)) { if (soundInfo != NULL) { - soundInfo->getSeqInfo(param_1, jaiSeq); + soundInfo->getSeqInfo(id, seq); } return true; } @@ -94,32 +86,37 @@ bool JAISeqMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2, /* 802A1C90-802A1DFC 29C5D0 016C+00 0/0 4/4 0/0 .text calc__9JAISeqMgrFv */ void JAISeqMgr::calc() { mMove.calc(); - for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->JAISeqMgr_calc_(); + + JSULink<JAISeq>* i; + for (i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->JAISeqMgr_calc_(); } freeDeadSeq_(); } /* 802A1DFC-802A1E3C 29C73C 0040+00 0/0 1/1 0/0 .text stop__9JAISeqMgrFv */ void JAISeqMgr::stop() { - for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(); + JSULink<JAISeq>* i; + for (i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(); } } /* 802A1E3C-802A1E8C 29C77C 0050+00 0/0 1/1 0/0 .text stop__9JAISeqMgrFUl */ -void JAISeqMgr::stop(u32 param_0) { - for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(param_0); +void JAISeqMgr::stop(u32 fadeTime) { + JSULink<JAISeq>* i; + for (i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(fadeTime); } } /* 802A1E8C-802A1EFC 29C7CC 0070+00 0/0 1/1 0/0 .text stopSoundID__9JAISeqMgrF10JAISoundID */ -void JAISeqMgr::stopSoundID(JAISoundID param_1) { - if (!param_1.isAnonymous()) { - for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - if ((u32)link->getObject()->getID() == (u32)param_1) { - link->getObject()->stop(); +void JAISeqMgr::stopSoundID(JAISoundID id) { + JSULink<JAISeq>* i; + if (!id.isAnonymous()) { + for (i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + if ((u32)i->getObject()->getID() == (u32)id) { + i->getObject()->stop(); } } } @@ -127,8 +124,9 @@ void JAISeqMgr::stopSoundID(JAISoundID param_1) { /* 802A1EFC-802A1F58 29C83C 005C+00 0/0 4/4 0/0 .text mixOut__9JAISeqMgrFv */ void JAISeqMgr::mixOut() { - for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->JAISeqMgr_mixOut_(mMove.mParams, mActivity); + JSULink<JAISeq>* i; + for (i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->JAISeqMgr_mixOut_(mMove.params_, mActivity); } } @@ -143,13 +141,13 @@ JAISeq* JAISeqMgr::beginStartSeq_() { /* 802A1FE8-802A20F0 29C928 0108+00 1/1 0/0 0/0 .text * endStartSeq___9JAISeqMgrFP6JAISeqP14JAISoundHandle */ -bool JAISeqMgr::endStartSeq_(JAISeq* param_1, JAISoundHandle* param_2) { - JAISeq* sound = param_1->getObject(); +bool JAISeqMgr::endStartSeq_(JAISeq* seq, JAISoundHandle* handle) { + JAISeq* sound = seq->getObject(); if (sound != NULL) { if (sound->status_.isAlive()) { - mSeqList.append(param_1); - if (param_2 != NULL) { - sound->attachHandle(param_2); + mSeqList.append(seq); + if (handle != NULL) { + sound->attachHandle(handle); } return true; } diff --git a/src/JSystem/JAudio2/JAISound.cpp b/src/JSystem/JAudio2/JAISound.cpp index 5783aa0ed3..404d254509 100644 --- a/src/JSystem/JAudio2/JAISound.cpp +++ b/src/JSystem/JAudio2/JAISound.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISound -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISound.h" @@ -14,24 +9,24 @@ /* 802A2184-802A21A0 29CAC4 001C+00 0/0 14/14 0/0 .text releaseSound__14JAISoundHandleFv */ void JAISoundHandle::releaseSound() { - if (sound_ == NULL) { - return; + if (sound_ != NULL) { + sound_->handle_ = NULL; + sound_ = NULL; } - sound_->handle_ = NULL; - sound_ = NULL; } /* 802A21A0-802A21BC 29CAE0 001C+00 3/3 3/3 0/0 .text releaseHandle__8JAISoundFv */ void JAISound::releaseHandle() { - if (handle_ == NULL) { - return; + if (handle_ != NULL) { + handle_->sound_ = NULL; + handle_ = NULL; } - handle_->sound_ = NULL; - handle_ = NULL; } /* 802A21BC-802A2220 29CAFC 0064+00 0/0 3/3 0/0 .text attachHandle__8JAISoundFP14JAISoundHandle */ void JAISound::attachHandle(JAISoundHandle* handle) { + JUT_ASSERT(55, handle); + if (handle->isSoundAttached()) { handle->getSound()->stop(); } @@ -67,43 +62,42 @@ s32 JAISoundStatus_::unlockIfLocked() { /* 802A2280-802A22F8 29CBC0 0078+00 0/0 4/4 0/0 .text * mixOutAll__14JAISoundParamsFRC14JASSoundParamsP14JASSoundParamsf */ -void JAISoundParams::mixOutAll(JASSoundParams const& param_0, JASSoundParams* param_1, - f32 param_2) { - param_1->mVolume = mMove.mParams.mVolume * (param_0.mVolume * mProperty.field_0x0) * param_2; - param_1->mFxMix = mMove.mParams.mFxMix + (param_0.mFxMix + mProperty.field_0x4); - param_1->mPitch = mMove.mParams.mPitch * (param_0.mPitch * mProperty.field_0x8); - param_1->mPan = (param_0.mPan + mMove.mParams.mPan) - 0.5f; - param_1->mDolby = param_0.mDolby + mMove.mParams.mDolby; +void JAISoundParams::mixOutAll(const JASSoundParams& inParams, JASSoundParams* outParams, f32 param_2) { + outParams->mVolume = move_.params_.mVolume * (inParams.mVolume * property_.field_0x0) * param_2; + outParams->mFxMix = move_.params_.mFxMix + (inParams.mFxMix + property_.field_0x4); + outParams->mPitch = move_.params_.mPitch * (inParams.mPitch * property_.field_0x8); + outParams->mPan = (inParams.mPan + move_.params_.mPan) - 0.5f; + outParams->mDolby = inParams.mDolby + move_.params_.mDolby; } /* 802A22F8-802A2328 29CC38 0030+00 0/0 3/3 0/0 .text __ct__8JAISoundFv */ -JAISound::JAISound() : params() {} +JAISound::JAISound() : params_() {} /* 802A2328-802A244C 29CC68 0124+00 0/0 3/3 0/0 .text * start_JAISound___8JAISoundF10JAISoundIDPCQ29JGeometry8TVec3<f>P11JAIAudience */ -void JAISound::start_JAISound_(JAISoundID param_0, JGeometry::TVec3<f32> const* param_1, - JAIAudience* param_2) { +void JAISound::start_JAISound_(JAISoundID id, const JGeometry::TVec3<f32>* posPtr, JAIAudience* audience) { handle_ = NULL; - soundID = param_0; + soundID_ = id; status_.init(); - params.init(); - fader.forceIn(); - audience_ = param_2; - prepareCount = 0; - mCount = 0; - - if (param_1 != 0 && audience_ != NULL) { - audible_ = audience_->newAudible(*param_1, soundID, NULL, 0); + params_.init(); + fader_.forceIn(); + audience_ = audience; + prepareCount_ = 0; + count_ = 0; + + if (posPtr != NULL && audience_ != NULL) { + audible_ = audience_->newAudible(*posPtr, soundID_, NULL, 0); } else { audible_ = NULL; } - mPriority = 0; + + priority_ = 0; } /* 802A244C-802A2474 29CD8C 0028+00 0/0 2/2 0/0 .text acceptsNewAudible__8JAISoundCFv */ bool JAISound::acceptsNewAudible() const { bool accepts = false; - if (audible_ == NULL && status_.state.flags.flag2 == 0) { + if (audible_ == NULL && status_.state.flags.calcedOnce == 0) { accepts = true; } return accepts; @@ -111,25 +105,25 @@ bool JAISound::acceptsNewAudible() const { /* 802A2474-802A24DC 29CDB4 0068+00 0/0 2/2 0/0 .text /* * newAudible__8JAISoundFRCQ29JGeometry8TVec3<f>PCQ29JGeometry8TVec3<f>UlP11JAIAudience */ -void JAISound::newAudible(JGeometry::TVec3<f32> const& param_0, - JGeometry::TVec3<f32> const* param_1, u32 param_2, JAIAudience* param_3) { - if (param_3 != NULL) { - audience_ = param_3; +void JAISound::newAudible(const JGeometry::TVec3<f32>& pos, + const JGeometry::TVec3<f32>* param_1, u32 param_2, JAIAudience* audience) { + JUT_ASSERT(151, acceptsNewAudible()); + if (audience != NULL) { + audience_ = audience; } - JAISoundID sound = soundID; - audible_ = audience_->newAudible(param_0, sound, param_1, param_2); + + JUT_ASSERT(157, audience_); + audible_ = audience_->newAudible(pos, soundID_, param_1, param_2); } /* 802A24DC-802A2598 29CE1C 00BC+00 0/0 24/24 0/0 .text stop__8JAISoundFUl */ -void JAISound::stop(u32 fadeCount) { - ASSERT(status_.isAlive()); - if (fadeCount == 0) { +void JAISound::stop(u32 fadeTime) { + JUT_ASSERT(164, status_.isAlive()); + if (fadeTime == 0) { stop(); - return; } else { - fader.fadeOut(fadeCount); + fader_.fadeOut(fadeTime); removeLifeTime_(); - status_.field_0x1.flags.flag2 = 0; status_.state.flags.flag5 = 1; status_.state.flags.flag1 = 1; } @@ -163,7 +157,7 @@ void JAISound::die_JAISound_() { audible_ = NULL; audience_ = NULL; } - fader.forceOut(); + fader_.forceOut(); releaseHandle(); status_.state.unk = 6; } @@ -171,49 +165,51 @@ void JAISound::die_JAISound_() { /* 802A266C-802A26B8 29CFAC 004C+00 0/0 3/3 0/0 .text increasePrepareCount_JAISound___8JAISoundFv */ void JAISound::increasePrepareCount_JAISound_() { - if ((++prepareCount & 0xFF) == 0) { - JASReport("It cost %d steps to prepare Sound(ID:%08x, Address%08x).\n", prepareCount, - (u32)soundID, this); + if ((++prepareCount_ & 0xFF) == 0) { + JASReport("It cost %d steps to prepare Sound(ID:%08x, Address%08x).\n", prepareCount_, + *(u32*)&soundID_, this); } } /* 802A26B8-802A29DC 29CFF8 0324+00 0/0 3/3 0/0 .text calc_JAISound___8JAISoundFv */ bool JAISound::calc_JAISound_() { - status_.state.flags.flag2 = 1; + status_.state.flags.calcedOnce = 1; if (isStopping() && JAISound_tryDie_()) { return false; } - ASSERT(status_.isAlive()); + + JUT_ASSERT(230, status_.isAlive()); bool isPlaying = status_.isPlaying(); if (isPlaying) { - mCount++; + count_++; } + bool isPaused = status_.isPaused(); if (isPaused == false) { - fader.calc(); + fader_.calc(); } + bool playing = isPlaying && isPaused == false; if (playing) { - params.mMove.calc(); + params_.move_.calc(); if (audible_ != NULL) { audible_->calc(); } if (status_.field_0x1.flags.flag2 != 0) { - if (lifeTime == 0) { + if (lifeTime_ == 0) { stop_JAISound_(); } else { - lifeTime--; + lifeTime_--; } } } + if (audience_ != NULL && audible_ != NULL) { - u32 priority = audience_->calcPriority(audible_); - mPriority = priority; - if (priority == 0xFFFFFFFF && status_.field_0x1.flags.flag1 == 0) { + if ((priority_ = audience_->calcPriority(audible_)) == 0xFFFFFFFF && status_.field_0x1.flags.flag1 == 0) { stop_JAISound_(); } } else { - mPriority = 0; + priority_ = 0; } return playing; @@ -221,20 +217,24 @@ bool JAISound::calc_JAISound_() { /* 802A29DC-802A2AB0 29D31C 00D4+00 0/0 2/2 0/0 .text initTrack_JAISound___8JAISoundFP8JASTrack */ void JAISound::initTrack_JAISound_(JASTrack* track) { - JASSoundParams* soundParams[8]; - ASSERT(audience_); - ASSERT(audible_); + JASSoundParams* soundParams[JASTrack::TChannelMgr::CHANNEL_MAX]; + JUT_ASSERT(286, audience_); + JUT_ASSERT(287, audible_); + int numChannels = 0; + JUT_ASSERT(290, audience_->getMaxChannels() < JASTrack::TChannelMgr::CHANNEL_MAX); + for (int i = 0; i < audience_->getMaxChannels(); i++) { JASSoundParams* currentParams = audible_->getOuterParams(i); if (currentParams != NULL) { - soundParams[numChannels] = currentParams; - numChannels++; + soundParams[numChannels++] = currentParams; } } - ASSERT(numChannels >= 1); + + JUT_ASSERT(298, numChannels >= 1); track->setChannelMgrCount(numChannels); - for (size_t i = 0; i < track->getChannelMgrCount(); i++) { + + for (u32 i = 0; i < track->getChannelMgrCount(); i++) { track->assignExtBuffer(i, soundParams[i]); } } diff --git a/src/JSystem/JAudio2/JAISoundChild.cpp b/src/JSystem/JAudio2/JAISoundChild.cpp index bad6495501..d96e8956fc 100644 --- a/src/JSystem/JAudio2/JAISoundChild.cpp +++ b/src/JSystem/JAudio2/JAISoundChild.cpp @@ -8,9 +8,9 @@ void JAISoundChild::init() { mParams.init(); } -void JAISoundChild::mixOut(JASTrack* pTrack) { - mParams = mMove.mParams; - pTrack->assignExtBuffer(0, &mParams); +void JAISoundChild::mixOut(JASTrack* track) { + mParams = mMove.params_; + track->assignExtBuffer(0, &mParams); } void JAISoundChild::calc() { diff --git a/src/JSystem/JAudio2/JAISoundHandles.cpp b/src/JSystem/JAudio2/JAISoundHandles.cpp index a8ebe2dd03..19e15c8061 100644 --- a/src/JSystem/JAudio2/JAISoundHandles.cpp +++ b/src/JSystem/JAudio2/JAISoundHandles.cpp @@ -1,22 +1,18 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISoundHandles -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISoundHandles.h" /* 802A2C98-802A2CF4 29D5D8 005C+00 0/0 1/1 0/0 .text * getHandleSoundID__15JAISoundHandlesF10JAISoundID */ -JAISoundHandle* JAISoundHandles::getHandleSoundID(JAISoundID param_0) { +JAISoundHandle* JAISoundHandles::getHandleSoundID(JAISoundID id) { for (int i = 0; i < numHandles_; i++) { - if (mSoundHandle[i].isSoundAttached()) { - if (JAISoundID(mSoundHandle[i]->soundID) == param_0) { - return &mSoundHandle[i]; + if (handle_[i].isSoundAttached()) { + if (handle_[i]->getID() == id) { + return &handle_[i]; } } } + return NULL; } @@ -24,9 +20,10 @@ JAISoundHandle* JAISoundHandles::getHandleSoundID(JAISoundID param_0) { */ JAISoundHandle* JAISoundHandles::getFreeHandle() { for (int i = 0; i < numHandles_; i++) { - if (!mSoundHandle[i].isSoundAttached()) { - return &mSoundHandle[i]; + if (!handle_[i].isSoundAttached()) { + return &handle_[i]; } } + return NULL; } diff --git a/src/JSystem/JAudio2/JAISoundInfo.cpp b/src/JSystem/JAudio2/JAISoundInfo.cpp index 05667fdead..a822c41e3a 100644 --- a/src/JSystem/JAudio2/JAISoundInfo.cpp +++ b/src/JSystem/JAudio2/JAISoundInfo.cpp @@ -1,16 +1,11 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISoundInfo -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISoundInfo.h" /* 802A2D34-802A2D50 29D674 001C+00 0/0 1/1 0/0 .text __ct__12JAISoundInfoFb */ -JAISoundInfo::JAISoundInfo(bool param_0) : JASGlobalInstance<JAISoundInfo>(param_0) { -} +JAISoundInfo::JAISoundInfo(bool setInstance) : JASGlobalInstance<JAISoundInfo>(setInstance) {} /* 802A2D50-802A2DB4 29D690 0064+00 1/0 2/2 0/0 .text __dt__12JAISoundInfoFv */ JAISoundInfo::~JAISoundInfo() { + JUT_ASSERT(14, false); } diff --git a/src/JSystem/JAudio2/JAISoundParams.cpp b/src/JSystem/JAudio2/JAISoundParams.cpp index 2e745d84cc..5d2ac2095a 100644 --- a/src/JSystem/JAudio2/JAISoundParams.cpp +++ b/src/JSystem/JAudio2/JAISoundParams.cpp @@ -2,47 +2,49 @@ #include "JSystem/JAudio2/JAISoundParams.h" -void JAISoundParamsMove::moveVolume(f32 newValue, u32 count) { - if (count == 0) { - mParams.mVolume = newValue; - mTransition.mVolume.mCount = 0; +void JAISoundParamsMove::moveVolume(f32 newValue, u32 maxSteps) { + JUT_ASSERT(12, (newValue>=0.f)); + if (maxSteps == 0) { + params_.mVolume = newValue; + transition_.volume_.remainingSteps_ = 0; } else { - mTransition.mVolume.set(newValue, mParams.mVolume, count); + transition_.volume_.set(newValue, params_.mVolume, maxSteps); } } -void JAISoundParamsMove::movePitch(f32 newValue, u32 count) { - if (count == 0) { - mParams.mPitch = newValue; - mTransition.mPitch.mCount = 0; +void JAISoundParamsMove::movePitch(f32 newValue, u32 maxSteps) { + JUT_ASSERT(27, (newValue>=0.f)); + if (maxSteps == 0) { + params_.mPitch = newValue; + transition_.pitch_.remainingSteps_ = 0; } else { - mTransition.mPitch.set(newValue, mParams.mPitch, count); + transition_.pitch_.set(newValue, params_.mPitch, maxSteps); } } -void JAISoundParamsMove::moveFxMix(f32 newValue, u32 count) { - if (count == 0) { - mParams.mFxMix = newValue; - mTransition.mFxMix.mCount = 0; +void JAISoundParamsMove::moveFxMix(f32 newValue, u32 maxSteps) { + if (maxSteps == 0) { + params_.mFxMix = newValue; + transition_.fxMix_.remainingSteps_ = 0; } else { - mTransition.mFxMix.set(newValue, mParams.mFxMix, count); + transition_.fxMix_.set(newValue, params_.mFxMix, maxSteps); } } -void JAISoundParamsMove::movePan(f32 newValue, u32 count) { - if (count == 0) { - mParams.mPan = newValue; - mTransition.mPan.mCount = 0; +void JAISoundParamsMove::movePan(f32 newValue, u32 maxSteps) { + if (maxSteps == 0) { + params_.mPan = newValue; + transition_.pan_.remainingSteps_ = 0; } else { - mTransition.mPan.set(newValue, mParams.mPan, count); + transition_.pan_.set(newValue, params_.mPan, maxSteps); } } -void JAISoundParamsMove::moveDolby(f32 newValue, u32 count) { - if (count == 0) { - mParams.mDolby = newValue; - mTransition.mDolby.mCount = 0; +void JAISoundParamsMove::moveDolby(f32 newValue, u32 maxSteps) { + if (maxSteps == 0) { + params_.mDolby = newValue; + transition_.dolby_.remainingSteps_ = 0; } else { - mTransition.mDolby.set(newValue, mParams.mDolby, count); + transition_.dolby_.set(newValue, params_.mDolby, maxSteps); } } diff --git a/src/JSystem/JAudio2/JAISoundStarter.cpp b/src/JSystem/JAudio2/JAISoundStarter.cpp index 233ef6cbf2..1c0fe4f6b1 100644 --- a/src/JSystem/JAudio2/JAISoundStarter.cpp +++ b/src/JSystem/JAudio2/JAISoundStarter.cpp @@ -1,37 +1,32 @@ -// -// JAISoundStarter -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISoundStarter.h" #include "JSystem/JAudio2/JAISoundHandles.h" /* 802A2F6C-802A2F88 29D8AC 001C+00 0/0 1/1 0/0 .text __ct__15JAISoundStarterFb */ -JAISoundStarter::JAISoundStarter(bool param_0) : JASGlobalInstance<JAISoundStarter>(param_0) { -} +JAISoundStarter::JAISoundStarter(bool setInstance) : + JASGlobalInstance<JAISoundStarter>(setInstance) {} /* 802A2F88-802A2FEC 29D8C8 0064+00 1/0 7/7 0/0 .text __dt__15JAISoundStarterFv */ -JAISoundStarter::~JAISoundStarter() { -} +JAISoundStarter::~JAISoundStarter() {} /* 802A2FEC-802A30D4 29D92C 00E8+00 0/0 4/4 0/0 .text * startLevelSound__15JAISoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f> */ -bool JAISoundStarter::startLevelSound(JAISoundID param_0, JAISoundHandle* param_1, - JGeometry::TVec3<f32> const* param_2) { - if (*param_1) { - if (JAISoundID((u32)(*param_1)->soundID) == param_0) { - (*param_1)->updateLifeTime(1); - if (param_2 != NULL) { - (*param_1)->setPos(*param_2); +bool JAISoundStarter::startLevelSound(JAISoundID id, JAISoundHandle* handlePtr, const JGeometry::TVec3<f32>* posPtr) { + JUT_ASSERT(20, handlePtr); + if (*handlePtr) { + if ((*handlePtr)->getID() == id) { + (*handlePtr)->updateLifeTime(1); + if (posPtr != NULL) { + (*handlePtr)->setPos(*posPtr); } return true; } } - bool iVar2 = startSound(param_0, param_1, param_2); - if ((iVar2) && *param_1) { - (*param_1)->setLifeTime(1, false); + bool rt = startSound(id, handlePtr, posPtr); + if (rt && *handlePtr) { + (*handlePtr)->setLifeTime(1, false); } - return iVar2; + return rt; } diff --git a/src/JSystem/JAudio2/JAIStream.cpp b/src/JSystem/JAudio2/JAIStream.cpp index 2094e353f9..878c7e3e7f 100644 --- a/src/JSystem/JAudio2/JAIStream.cpp +++ b/src/JSystem/JAudio2/JAIStream.cpp @@ -1,55 +1,53 @@ -// -// Generated By: dol2asm -// Translation Unit: JAIStream -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAIStream.h" #include "JSystem/JAudio2/JAIStreamMgr.h" #include "JSystem/JAudio2/JAISoundChild.h" #include "JSystem/JAudio2/JAIStreamDataMgr.h" -#include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JAudio2/JAIAudience.h" /* 802A30D4-802A3104 29DA14 0030+00 1/1 0/0 0/0 .text * JAIStream_JASAramStreamCallback___FUlP13JASAramStreamPv */ -static void JAIStream_JASAramStreamCallback_(u32 param_1, JASAramStream* param_2, void* param_3) { - switch (param_1) { +static void JAIStream_JASAramStreamCallback_(u32 type, JASAramStream* aramStream, void* userData) { + JAIStream* stream = (JAIStream*)userData; + + switch (type) { case 1: - ((JAIStream*)(param_3))->field_0x2c5 = 1; + stream->field_0x2c5 = 1; break; case 0: - ((JAIStream*)(param_3))->field_0x2c6 = 1; + stream->field_0x2c6 = 1; break; } } /* 802A3104-802A319C 29DA44 0098+00 0/0 1/1 0/0 .text * __ct__9JAIStreamFP12JAIStreamMgrP31JAISoundStrategyMgr<9JAIStream> */ -JAIStream::JAIStream(JAIStreamMgr* param_1, JAISoundStrategyMgr<JAIStream>* param_2) : JSULink<JAIStream>(this) { +JAIStream::JAIStream(JAIStreamMgr* streamMgr, JAISoundStrategyMgr<JAIStream>* soundStrategyMgr) : JSULink<JAIStream>(this) { field_0x290 = 0; - field_0x2c0 = param_2; - field_0x2b8 = param_1; - field_0x29c = 0; + field_0x2c0 = soundStrategyMgr; + streamMgr_ = streamMgr; + streamAramAddr_ = 0; field_0x2c5 = 0; field_0x2c6 = 0; + for (int i = 0; i < CHANNEL_MAX; i++) { - field_0x2a0[i] = NULL; + children_[i] = NULL; } } /* 802A319C-802A3230 29DADC 0094+00 0/0 1/1 0/0 .text * JAIStreamMgr_startID___9JAIStreamF10JAISoundIDlPCQ29JGeometry8TVec3<f>P11JAIAudiencei */ -void JAIStream::JAIStreamMgr_startID_(JAISoundID param_1, s32 param_2, - JGeometry::TVec3<f32> const* param_3, JAIAudience* param_4, - int param_5) { - field_0x298 = param_5; - field_0x294 = param_2; - start_JAISound_(param_1, param_3, param_4); +void JAIStream::JAIStreamMgr_startID_(JAISoundID id, s32 streamFileEntry, + const JGeometry::TVec3<f32>* posPtr, JAIAudience* audience, + int category) { + field_0x298 = category; + field_0x294 = streamFileEntry; + start_JAISound_(id, posPtr, audience); field_0x290 = 0; + if (field_0x2c0 != NULL) { - field_0x2bc = field_0x2c0->calc(param_1); + field_0x2bc = field_0x2c0->calc(id); } else { field_0x2bc = NULL; } @@ -59,15 +57,17 @@ void JAIStream::JAIStreamMgr_startID_(JAISoundID param_1, s32 param_2, bool JAIStream::prepare_prepareStream_() { u32 local_28; JAIStreamAramMgr* streamAramMgr; + switch (field_0x290) { case 0: - streamAramMgr = field_0x2b8->getStreamAramMgr(); + streamAramMgr = streamMgr_->getStreamAramMgr(); JUT_ASSERT(100, streamAramMgr); - field_0x29c = streamAramMgr->newStreamAram(&local_28); - if (field_0x29c != NULL) { - field_0x0a8.field_0x0.init((u32)field_0x29c, local_28, &JAIStream_JASAramStreamCallback_, this); + + streamAramAddr_ = streamAramMgr->newStreamAram(&local_28); + if (streamAramAddr_ != NULL) { + inner_.aramStream_.init((u32)streamAramAddr_, local_28, &JAIStream_JASAramStreamCallback_, this); field_0x290 = 1; - prepareCount = 0; + prepareCount_ = 0; } else { increasePrepareCount_JAISound_(); } @@ -75,14 +75,16 @@ bool JAIStream::prepare_prepareStream_() { case 1: if (audible_ != NULL) { JASSoundParams* soundParams = audible_->getOuterParams(0); - field_0x0a8.field_0x0.setPitch(soundParams->mPitch); - field_0x0a8.field_0x0.setVolume(soundParams->mVolume); - field_0x0a8.field_0x0.setPan(soundParams->mPan); - field_0x0a8.field_0x0.setFxmix(soundParams->mFxMix); - field_0x0a8.field_0x0.setDolby(soundParams->mDolby); + inner_.aramStream_.setPitch(soundParams->mPitch); + inner_.aramStream_.setVolume(soundParams->mVolume); + inner_.aramStream_.setPan(soundParams->mPan); + inner_.aramStream_.setFxmix(soundParams->mFxMix); + inner_.aramStream_.setDolby(soundParams->mDolby); } + field_0x2c5 = 0; - if (field_0x0a8.field_0x0.prepare(field_0x294, -1)) { + + if (inner_.aramStream_.prepare(field_0x294, -1)) { field_0x290 = 2; } break; @@ -97,7 +99,7 @@ bool JAIStream::prepare_prepareStream_() { case 3: return true; case 4: - JUT_WARN(155, "PC must not pass here."); + JUT_WARN(155, "%s", "PC must not pass here."); break; } @@ -109,7 +111,11 @@ void JAIStream::prepare_() { if (field_0x2c6 != 0) { return; } + switch(status_.state.unk) { + case 6: + JUT_ASSERT(171, false); + break; case 0: if (prepare_prepareStream_()) { status_.state.unk = 5; @@ -133,7 +139,7 @@ void JAIStream::prepare_() { /* 802A3498-802A34E4 29DDD8 004C+00 1/1 0/0 0/0 .text prepare_startStream___9JAIStreamFv */ void JAIStream::prepare_startStream_() { - if (field_0x0a8.field_0x0.start()) { + if (inner_.aramStream_.start()) { field_0x2c6 = 0; field_0x2c4 = 0; field_0x290 = 4; @@ -142,65 +148,64 @@ void JAIStream::prepare_startStream_() { /* 802A34E4-802A3720 29DE24 023C+00 0/0 1/1 0/0 .text * JAIStreamMgr_mixOut___9JAIStreamFRC14JASSoundParams16JAISoundActivity */ -void JAIStream::JAIStreamMgr_mixOut_(JASSoundParams const& param_1, JAISoundActivity param_2) { +void JAIStream::JAIStreamMgr_mixOut_(const JASSoundParams& inParams, JAISoundActivity activity) { bool local_54; - JASSoundParams local_4c; - params.mixOutAll(param_1, &local_4c, (status_.isMute() || param_2.field_0x0.flags.flag1) ? 0.0f : fader.getIntensity()); + JASSoundParams outParams; + params_.mixOutAll(inParams, &outParams, (status_.isMute() || activity.field_0x0.flags.flag1) ? 0.0f : fader_.getIntensity()); + if (field_0x2bc != NULL) { - field_0x2bc->virtual4(this, local_4c); + field_0x2bc->virtual4(this, outParams); } - JASSoundParams* mixParams = &local_4c; + + JASSoundParams* mixParams = &outParams; if (audible_ != NULL && audience_ != NULL) { for (int i = 0; i < audience_->getMaxChannels(); i++) { JASSoundParams* outerParams = audible_->getOuterParams(i); if (outerParams != NULL) { - audience_->mixChannelOut(local_4c, audible_, i); + audience_->mixChannelOut(outParams, audible_, i); mixParams = outerParams; break; } } } + for (int i = 0; i < CHANNEL_MAX; i++) { - field_0x0a8.field_0x0.setPitch(mixParams->mPitch); - if (field_0x2a0[i] != NULL) { - field_0x0a8.field_0x0.setChannelVolume(i, field_0x2a0[i]->mMove.mParams.mVolume * - mixParams->mVolume); - field_0x0a8.field_0x0.setChannelPan( - i, (field_0x2a0[i]->mMove.mParams.mPan + mixParams->mPan) - 0.5f); - field_0x0a8.field_0x0.setChannelFxmix(i, field_0x2a0[i]->mMove.mParams.mFxMix + - mixParams->mFxMix); - field_0x0a8.field_0x0.setChannelDolby(i, field_0x2a0[i]->mMove.mParams.mDolby + - mixParams->mDolby); + inner_.aramStream_.setPitch(mixParams->mPitch); + if (children_[i] != NULL) { + inner_.aramStream_.setChannelVolume(i, children_[i]->mMove.params_.mVolume * mixParams->mVolume); + inner_.aramStream_.setChannelPan(i, (children_[i]->mMove.params_.mPan + mixParams->mPan) - 0.5f); + inner_.aramStream_.setChannelFxmix(i, children_[i]->mMove.params_.mFxMix + mixParams->mFxMix); + inner_.aramStream_.setChannelDolby(i, children_[i]->mMove.params_.mDolby + mixParams->mDolby); } else { - field_0x0a8.field_0x0.setChannelVolume(i, mixParams->mVolume); - field_0x0a8.field_0x0.setChannelPan(i, mixParams->mPan); - field_0x0a8.field_0x0.setChannelFxmix(i, mixParams->mFxMix); - field_0x0a8.field_0x0.setChannelDolby(i, mixParams->mDolby); + inner_.aramStream_.setChannelVolume(i, mixParams->mVolume); + inner_.aramStream_.setChannelPan(i, mixParams->mPan); + inner_.aramStream_.setChannelFxmix(i, mixParams->mFxMix); + inner_.aramStream_.setChannelDolby(i, mixParams->mDolby); } } + prepare_(); + if (field_0x290 == 4) { - local_54 = false; - if (status_.isPaused() || param_2.field_0x0.flags.flag2) { - local_54 = true; - } + local_54 = status_.isPaused() || activity.field_0x0.flags.flag2; if (local_54 != field_0x2c4) { - field_0x0a8.field_0x0.pause(local_54); + inner_.aramStream_.pause(local_54); field_0x2c4 = local_54; } } } /* 802A3720-802A37FC 29E060 00DC+00 1/1 0/0 0/0 .text die_JAIStream___9JAIStreamFv */ -// NONMATCHING JASPolAllocObject<_> locations void JAIStream::die_JAIStream_() { die_JAISound_(); + for (int i = 0; i < CHANNEL_MAX; i++) { - if (field_0x2a0[i] != NULL) { - delete field_0x2a0[i]; - field_0x2a0[i] = NULL; + if (children_[i] != NULL) { + delete children_[i]; + children_[i] = NULL; } } + if (field_0x2bc != NULL) { field_0x2c0->virtual4(field_0x2bc); field_0x2bc = NULL; @@ -213,6 +218,7 @@ bool JAIStream::JAISound_tryDie_() { die_JAIStream_(); return true; } + switch (field_0x290) { case 0: case 1: @@ -221,11 +227,11 @@ bool JAIStream::JAISound_tryDie_() { case 2: case 3: field_0x290 = 5; - field_0x0a8.field_0x0.cancel(); + inner_.aramStream_.cancel(); break; case 4: field_0x290 = 6; - field_0x0a8.field_0x0.stop(10); + inner_.aramStream_.stop(10); break; } @@ -238,12 +244,14 @@ void JAIStream::JAIStreamMgr_calc_() { field_0x290 = 0; stop_JAISound_(); } + if (calc_JAISound_()) { for (int i = 0; i < CHANNEL_MAX; i++) { - if (field_0x2a0[i] != NULL) { - field_0x2a0[i]->calc(); + if (children_[i] != NULL) { + children_[i]->calc(); } } + if (field_0x2bc != NULL) { field_0x2bc->calc(this); } @@ -252,27 +260,25 @@ void JAIStream::JAIStreamMgr_calc_() { /* 802A3948-802A3950 29E288 0008+00 1/0 0/0 0/0 .text getNumChild__9JAIStreamCFv */ s32 JAIStream::getNumChild() const { - return 6; + return NUM_CHILDREN; } /* 802A3950-802A3A24 29E290 00D4+00 1/0 0/0 0/0 .text getChild__9JAIStreamFi */ -// NONMATCHING JASPoolAllocObject<_> locations -JAISoundChild* JAIStream::getChild(int i_idx) { - if (field_0x2a0[i_idx] == NULL) { - field_0x2a0[i_idx] = new JAISoundChild(); - if (field_0x2a0[i_idx] == NULL) { - JUT_WARN(370, "JASPoolAllocObject::<JAISoundChild>::operator new failed .") +JAISoundChild* JAIStream::getChild(int index) { + if (children_[index] == NULL) { + children_[index] = new JAISoundChild(); + if (children_[index] == NULL) { + JUT_WARN(370, "%s", "JASPoolAllocObject::<JAISoundChild>::operator new failed .") } } - return field_0x2a0[i_idx]; + return children_[index]; } /* 802A3A24-802A3ABC 29E364 0098+00 1/0 0/0 0/0 .text releaseChild__9JAIStreamFi */ -// NONMATCHING JASPoolAllocObject<_> locations -void JAIStream::releaseChild(int i_idx) { - if (field_0x2a0[i_idx] != NULL) { - delete field_0x2a0[i_idx]; - field_0x2a0[i_idx] = NULL; +void JAIStream::releaseChild(int index) { + if (children_[index] != NULL) { + delete children_[index]; + children_[index] = NULL; } } diff --git a/src/JSystem/JAudio2/JAIStreamDataMgr.cpp b/src/JSystem/JAudio2/JAIStreamDataMgr.cpp index 7a6393bdb9..b5e6821822 100644 --- a/src/JSystem/JAudio2/JAIStreamDataMgr.cpp +++ b/src/JSystem/JAudio2/JAIStreamDataMgr.cpp @@ -2,6 +2,10 @@ #include "JSystem/JAudio2/JAIStreamDataMgr.h" -JAIStreamDataMgr::~JAIStreamDataMgr() {} +JAIStreamDataMgr::~JAIStreamDataMgr() { + JUT_ASSERT(11, false); +} -JAIStreamAramMgr::~JAIStreamAramMgr() {} +JAIStreamAramMgr::~JAIStreamAramMgr() { + JUT_ASSERT(16, false); +} diff --git a/src/JSystem/JAudio2/JAIStreamMgr.cpp b/src/JSystem/JAudio2/JAIStreamMgr.cpp index 3fedba540b..76c8ae4734 100644 --- a/src/JSystem/JAudio2/JAIStreamMgr.cpp +++ b/src/JSystem/JAudio2/JAIStreamMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAIStreamMgr -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAIStreamMgr.h" @@ -11,115 +6,128 @@ #include "JSystem/JAudio2/JAISoundInfo.h" /* 802A3B68-802A3C3C 29E4A8 00D4+00 0/0 1/1 0/0 .text __ct__12JAIStreamMgrFb */ -JAIStreamMgr::JAIStreamMgr(bool param_0) : JASGlobalInstance<JAIStreamMgr>(param_0) { +JAIStreamMgr::JAIStreamMgr(bool setInstance) : JASGlobalInstance<JAIStreamMgr>(setInstance) { streamDataMgr_ = NULL; mStreamAramMgr = NULL; field_0x6c = NULL; - field_0x54 = NULL; + mAudience = NULL; mParams.init(); mActivity.init(); } /* 802A3C3C-802A3D70 29E57C 0134+00 0/0 1/1 0/0 .text * startSound__12JAIStreamMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f> */ -bool JAIStreamMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2, - JGeometry::TVec3<f32> const* param_3) { +bool JAIStreamMgr::startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3<f32>* posPtr) { JUT_ASSERT(37, streamDataMgr_); - if (param_2 != NULL && *param_2) { - (*param_2)->stop(); + if (handle != NULL && *handle) { + (*handle)->stop(); } - s32 streamFileEntry = streamDataMgr_->getStreamFileEntry(param_1); + + s32 streamFileEntry = streamDataMgr_->getStreamFileEntry(id); if (streamFileEntry < 0) { - JUT_WARN(46, "Cannot find the stream file entry for ID:%08x\n", param_1.mId.mFullId) + JUT_WARN(46, "Cannot find the stream file entry for ID:%08x\n", id.id_.composite_) return false; } + JAIStream* stream = newStream_(); - JAISoundInfo* piVar5 = JASGlobalInstance<JAISoundInfo>::getInstance(); - int iVar2 = -1; - if (piVar5 != NULL) { - iVar2 = piVar5->getCategory(param_1); + JAISoundInfo* soundInfo = JASGlobalInstance<JAISoundInfo>::getInstance(); + + int category = -1; + if (soundInfo != NULL) { + category = soundInfo->getCategory(id); } + if (stream == NULL) { return false; } - stream->JAIStreamMgr_startID_(param_1, streamFileEntry, param_3, field_0x54, iVar2); - if (piVar5 != NULL) { - piVar5->getStreamInfo(param_1, stream); + + stream->JAIStreamMgr_startID_(id, streamFileEntry, posPtr, mAudience, category); + if (soundInfo != NULL) { + soundInfo->getStreamInfo(id, stream); } - if (param_2 != NULL) { - stream->attachHandle(param_2); + + if (handle != NULL) { + stream->attachHandle(handle); } + return false; } /* 802A3D70-802A3E68 29E6B0 00F8+00 1/1 0/0 0/0 .text freeDeadStream___12JAIStreamMgrFv */ void JAIStreamMgr::freeDeadStream_() { - JSULink<JAIStream>* link = mStreamList.getFirst(); - while (link != NULL) { - JAIStream* stream = link->getObject(); - JSULink<JAIStream>* next = link->getNext(); + JSULink<JAIStream>* i = mStreamList.getFirst(); + while (i != NULL) { + JAIStream* stream = i->getObject(); + JSULink<JAIStream>* next = i->getNext(); if (stream->status_.isDead()) { - mStreamList.remove(link); + mStreamList.remove(i); void* aramAddr = stream->JAIStreamMgr_getAramAddr_(); if (aramAddr != NULL) { - mStreamAramMgr->deleteStreamAram((u32)aramAddr); + bool result = mStreamAramMgr->deleteStreamAram((u32)aramAddr); + JUT_ASSERT(105, result); } delete stream; } - link = next; + i = next; } } /* 802A3EBC-802A4028 29E7FC 016C+00 0/0 1/1 0/0 .text calc__12JAIStreamMgrFv */ void JAIStreamMgr::calc() { + JSULink<JAIStream>* i; mParams.calc(); - for (JSULink<JAIStream>* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->JAIStreamMgr_calc_(); + for (i = mStreamList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->JAIStreamMgr_calc_(); } freeDeadStream_(); } /* 802A4028-802A4068 29E968 0040+00 0/0 1/1 0/0 .text stop__12JAIStreamMgrFv */ void JAIStreamMgr::stop() { - for (JSULink<JAIStream>* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(); + JSULink<JAIStream>* i; + for (i = mStreamList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(); } } /* 802A4068-802A40B8 29E9A8 0050+00 0/0 2/2 0/0 .text stop__12JAIStreamMgrFUl */ -void JAIStreamMgr::stop(u32 param_0) { - for (JSULink<JAIStream>* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(param_0); +void JAIStreamMgr::stop(u32 fadeTime) { + JSULink<JAIStream>* i; + for (i = mStreamList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(fadeTime); } } /* 802A40B8-802A4118 29E9F8 0060+00 0/0 1/1 0/0 .text stopSoundID__12JAIStreamMgrF10JAISoundID */ -void JAIStreamMgr::stopSoundID(JAISoundID param_0) { - for (JSULink<JAIStream>* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) { - if ((u32)link->getObject()->getID() == (u32)param_0) { - link->getObject()->stop(); +void JAIStreamMgr::stopSoundID(JAISoundID id) { + JSULink<JAIStream>* i; + for (i = mStreamList.getFirst(); i != NULL; i = i->getNext()) { + if ((u32)i->getObject()->getID() == (u32)id) { + i->getObject()->stop(); } } } /* 802A4118-802A4174 29EA58 005C+00 0/0 1/1 0/0 .text mixOut__12JAIStreamMgrFv */ void JAIStreamMgr::mixOut() { - for (JSULink<JAIStream>* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->JAIStreamMgr_mixOut_(mParams.mParams, mActivity); + JSULink<JAIStream>* i; + for (i = mStreamList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->JAIStreamMgr_mixOut_(mParams.params_, mActivity); } } /* 802A4174-802A4244 29EAB4 00D0+00 1/1 0/0 0/0 .text newStream___12JAIStreamMgrFv */ JAIStream* JAIStreamMgr::newStream_() { if (mStreamAramMgr == NULL) { - JUT_WARN(229, "JAIStreamAramMgr must be set.\n"); + JUT_WARN(229, "%s", "JAIStreamAramMgr must be set.\n"); return NULL; } + JAIStream* stream = new JAIStream(this, field_0x6c); if (stream == NULL) { - JUT_WARN(235, "JASPoolAllocObject::<JAIStream>::operator new failed .\n"); + JUT_WARN(235, "%s", "JASPoolAllocObject::<JAIStream>::operator new failed .\n"); return NULL; } diff --git a/src/JSystem/JAudio2/JASCalc.cpp b/src/JSystem/JAudio2/JASCalc.cpp index fa192e91b9..66e25e046b 100644 --- a/src/JSystem/JAudio2/JASCalc.cpp +++ b/src/JSystem/JAudio2/JASCalc.cpp @@ -1,34 +1,32 @@ -// -// JASCalc -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASCalc.h" -#include <dolphin/os.h> -#include "math.h" -#include "limits.h" +#include <math.h> +#include <limits.h> /* 8028F2E8-8028F318 289C28 0030+00 0/0 1/1 0/0 .text imixcopy__7JASCalcFPCsPCsPsUl */ -void JASCalc::imixcopy(const s16 *s1, const s16 *s2, s16 *dst, u32 n) { +void JASCalc::imixcopy(const s16* s1, const s16* s2, s16* dst, u32 n) { for (n; n != 0; n--) { - *dst++ = *((s16 *)s1)++; - *dst++ = *((s16 *)s2)++; + *dst++ = *((s16*)s1)++; + *dst++ = *((s16*)s2)++; } } /* 8028F318-8028F354 289C58 003C+00 1/1 0/0 0/0 .text bcopyfast__7JASCalcFPCvPvUl */ -void JASCalc::bcopyfast(const void *src, void *dest, u32 size) { - u32 copy1, copy2, copy3, copy4; +void JASCalc::bcopyfast(const void* src, void* dest, u32 size) { + JUT_ASSERT(226, (reinterpret_cast<u32>(src) & 0x03) == 0); + JUT_ASSERT(227, (reinterpret_cast<u32>(dest) & 0x03) == 0); + JUT_ASSERT(228, (size & 0x0f) == 0); - u32 *usrc = (u32 *)src; - u32 *udest = (u32 *)dest; + u32 copy1, copy2, copy3, copy4; + u32* usrc = (u32*)src; + u32* udest = (u32*)dest; for (size = size / (4 * sizeof(u32)); size != 0; size--) { - copy1 = *((u32 *)usrc)++; - copy2 = *((u32 *)usrc)++; - copy3 = *((u32 *)usrc)++; - copy4 = *((u32 *)usrc)++; + copy1 = *((u32*)usrc)++; + copy2 = *((u32*)usrc)++; + copy3 = *((u32*)usrc)++; + copy4 = *((u32*)usrc)++; *udest++ = copy1; *udest++ = copy2; @@ -38,12 +36,12 @@ void JASCalc::bcopyfast(const void *src, void *dest, u32 size) { } /* 8028F354-8028F454 289C94 0100+00 0/0 3/3 0/0 .text bcopy__7JASCalcFPCvPvUl */ -void JASCalc::bcopy(const void *src, void *dest, u32 size) { - u32 *usrc; - u32 *udest; +void JASCalc::bcopy(const void* src, void* dest, u32 size) { + u32* usrc; + u32* udest; - u8 *bsrc = (u8 *)src; - u8 *bdest = (u8 *)dest; + u8* bsrc = (u8*)src; + u8* bdest = (u8*)dest; u8 endbitsSrc = (reinterpret_cast<u32>(bsrc) & 0x03); u8 enbitsDst = (reinterpret_cast<u32>(bdest) & 0x03); @@ -82,8 +80,11 @@ void JASCalc::bcopy(const void *src, void *dest, u32 size) { } /* 8028F454-8028F480 289D94 002C+00 1/1 0/0 0/0 .text bzerofast__7JASCalcFPvUl */ -void JASCalc::bzerofast(void *dest, u32 size) { - u32 *udest = (u32 *)dest; +void JASCalc::bzerofast(void* dest, u32 size) { + JUT_ASSERT(336, (reinterpret_cast<u32>(dest) & 0x03) == 0); + JUT_ASSERT(337, (size & 0x0f) == 0); + + u32* udest = (u32*)dest; for (size = size / (4 * sizeof(u32)); size != 0; size--) { *udest++ = 0; @@ -94,9 +95,9 @@ void JASCalc::bzerofast(void *dest, u32 size) { } /* 8028F480-8028F578 289DC0 00F8+00 0/0 6/6 0/0 .text bzero__7JASCalcFPvUl */ -void JASCalc::bzero(void *dest, u32 size) { - u32 *udest; - u8 *bdest = (u8 *)dest; +void JASCalc::bzero(void* dest, u32 size) { + u32* udest; + u8* bdest = (u8*)dest; if ((size & 0x1f) == 0 && (reinterpret_cast<u32>(dest) & 0x1f) == 0) { DCZeroRange(dest, size); return; @@ -136,7 +137,6 @@ void JASCalc::bzero(void *dest, u32 size) { } } -/* ############################################################################################## */ /* 8039ABB8-8039AFB8 027218 0400+00 0/0 4/4 0/0 .rodata CUTOFF_TO_IIR_TABLE__7JASCalc */ s16 const JASCalc::CUTOFF_TO_IIR_TABLE[128][4] = { 0x0F5C, 0x0A3D, 0x4665, 0x1E73, diff --git a/src/JSystem/JAudio2/JASCallback.cpp b/src/JSystem/JAudio2/JASCallback.cpp index 18d29ce4f5..b67f3848d1 100644 --- a/src/JSystem/JAudio2/JASCallback.cpp +++ b/src/JSystem/JAudio2/JASCallback.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JASCallback -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASCallback.h" @@ -10,28 +5,28 @@ /* 8028FFA8-80290030 28A8E8 0088+00 0/0 2/2 0/0 .text regist__14JASCallbackMgrFPFPv_lPv */ -bool JASCallbackMgr::regist(JASCallback* function, void* argument) -{ +bool JASCallbackMgr::regist(JASCallback* callback, void* argument) { JASCriticalSection criticalSection; - for (int i = 0; i < 0x20; i++) { - if (mCallbacks[i].mFunction == NULL) { - mCallbacks[i].mFunction = function; - mCallbacks[i].mArgument = argument; + for (int i = 0; i < NUM_CALLBACKS; i++) { + if (callbacks_[i].callback_ == NULL) { + callbacks_[i].callback_ = callback; + callbacks_[i].arg_ = argument; return true; } } + return false; } /* 80290030-802900C4 28A970 0094+00 0/0 1/1 0/0 .text reject__14JASCallbackMgrFPFPv_lPv */ -int JASCallbackMgr::reject(JASCallback* function, void* argument) { +int JASCallbackMgr::reject(JASCallback* callback, void* argument) { int rejectNum = 0; JASCriticalSection criticalSection; - for (int i = 0; i < 0x20; i++) { - if (mCallbacks[i].mFunction == function && mCallbacks[i].mArgument == argument) { - mCallbacks[i].mFunction = NULL; - mCallbacks[i].mArgument = NULL; + for (int i = 0; i < NUM_CALLBACKS; i++) { + if (callbacks_[i].callback_ == callback && callbacks_[i].arg_ == argument) { + callbacks_[i].callback_ = NULL; + callbacks_[i].arg_ = NULL; rejectNum++; } } @@ -40,10 +35,10 @@ int JASCallbackMgr::reject(JASCallback* function, void* argument) { /* 802900C4-80290140 28AA04 007C+00 0/0 3/3 0/0 .text callback__14JASCallbackMgrFv */ void JASCallbackMgr::callback() { - for (int i = 0; i < 0x20; i++) { - if (mCallbacks[i].mFunction && mCallbacks[i].mFunction(mCallbacks[i].mArgument) < 0) { - mCallbacks[i].mFunction = NULL; - mCallbacks[i].mArgument = NULL; + for (int i = 0; i < NUM_CALLBACKS; i++) { + if (callbacks_[i].callback_ && callbacks_[i].callback_(callbacks_[i].arg_) < 0) { + callbacks_[i].callback_ = NULL; + callbacks_[i].arg_ = NULL; } } } diff --git a/src/JSystem/JAudio2/JASDvdThread.cpp b/src/JSystem/JAudio2/JASDvdThread.cpp index b5c31dbf4a..2de97b7978 100644 --- a/src/JSystem/JAudio2/JASDvdThread.cpp +++ b/src/JSystem/JAudio2/JASDvdThread.cpp @@ -1,16 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: JASDvdThread -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASDvdThread.h" #include "JSystem/JAudio2/JASTaskThread.h" #include "JSystem/JKernel/JKRSolidHeap.h" -#include "dolphin/types.h" -/* ############################################################################################## */ /* 80451208-80451210 000708 0004+04 2/1 0/0 0/0 .sbss sThread__6JASDvd */ JASTaskThread* JASDvd::sThread; @@ -20,10 +13,19 @@ JASTaskThread* JASDvd::getThreadPointer() { } /* 8028FF04-8028FFA8 28A844 00A4+00 0/0 1/1 0/0 .text createThread__6JASDvdFliUl */ -bool JASDvd::createThread(s32 priority, int param_1, u32 param_2) { - if (sThread != NULL) return false; - sThread = new (JASDram, 0) JASTaskThread(priority, param_1, param_2); - sThread->setCurrentHeap(JKRGetSystemHeap()); - OSResumeThread(sThread->getThreadRecord()); +bool JASDvd::createThread(s32 priority, int msgCount, u32 stackSize) { + if (sThread != NULL) { + JUT_WARN_DEVICE(32, 2, "%s", "JASDvd::createThread が2回呼び出されました"); + return false; + } + + sThread = new (JASDram, 0) JASTaskThread(priority, msgCount, stackSize); + JUT_ASSERT(36, sThread); + + JKRHeap* pCurrentHeap = JKRGetSystemHeap(); + JUT_ASSERT(38, pCurrentHeap); + + sThread->setCurrentHeap(pCurrentHeap); + sThread->resume(); return true; } diff --git a/src/JSystem/JAudio2/JASHeapCtrl.cpp b/src/JSystem/JAudio2/JASHeapCtrl.cpp index ec89a82aba..66b8a40d03 100644 --- a/src/JSystem/JAudio2/JASHeapCtrl.cpp +++ b/src/JSystem/JAudio2/JASHeapCtrl.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JASHeapCtrl -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASHeapCtrl.h" diff --git a/src/JSystem/JAudio2/JASTaskThread.cpp b/src/JSystem/JAudio2/JASTaskThread.cpp index a1cd980baf..b6e11789d2 100644 --- a/src/JSystem/JAudio2/JASTaskThread.cpp +++ b/src/JSystem/JAudio2/JASTaskThread.cpp @@ -1,20 +1,16 @@ -// -// Generated By: dol2asm -// Translation Unit: JASTaskThread -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASTaskThread.h" #include "JSystem/JAudio2/JASCalc.h" #include "JSystem/JAudio2/JASCriticalSection.h" #include "JSystem/JKernel/JKRSolidHeap.h" -#include "dolphin/os.h" /* 8028F6C4-8028F724 28A004 0060+00 0/0 1/1 0/0 .text __ct__13JASTaskThreadFiiUl */ -JASTaskThread::JASTaskThread(int param_0, int param_1, u32 param_2) : JKRThread(JASDram, param_2, param_1, param_0) { +JASTaskThread::JASTaskThread(int priority, int msgCount, u32 stackSize) : + JKRThread(JASDram, stackSize, msgCount, priority) +{ field_0x84 = false; - OSInitThreadQueue(&mpThreadQueue); + OSInitThreadQueue(&threadQueue_); } /* 8028F724-8028F850 28A064 012C+00 1/0 0/0 0/0 .text __dt__13JASTaskThreadFv */ @@ -32,58 +28,62 @@ JASTaskThread::~JASTaskThread() { /* 8028F850-8028F9EC 28A190 019C+00 1/1 0/0 0/0 .text allocCallStack__13JASTaskThreadFPFPv_vPCvUl */ -void* JASTaskThread::allocCallStack(void (*param_0)(void*), void const* param_1, u32 param_2) { +void* JASTaskThread::allocCallStack(JASThreadCallback callback, const void* msg, u32 msgSize) { ThreadMemPool* heap; - u32 size = param_2 + 8; + u32 size = msgSize + 8; JASThreadCallStack *callStack = (JASThreadCallStack*) JASKernel::getCommandHeap()->alloc(size); if (callStack == NULL) { return NULL; } - callStack->field_0x4 = 1; - JASCalc::bcopy(param_1, callStack->field_0x8.buffer, param_2); - callStack->mRunFunc = param_0; + + callStack->msgType_ = 1; + JASCalc::bcopy(msg, callStack->msg.buffer, msgSize); + callStack->callback_ = callback; return callStack; } /* 8028F9EC-8028FB5C 28A32C 0170+00 1/1 0/0 0/0 .text allocCallStack__13JASTaskThreadFPFPv_vPv */ -void* JASTaskThread::allocCallStack(void (*runFunc)(void*), void* param_1) { +void* JASTaskThread::allocCallStack(JASThreadCallback callback, void* msg) { JASThreadCallStack *callStack; - callStack = (JASThreadCallStack*)JASKernel::getCommandHeap()->alloc(0xc); + callStack = (JASThreadCallStack*)JASKernel::getCommandHeap()->alloc(12); if (callStack == NULL) { return NULL; } - callStack->field_0x4 = 0; - callStack->field_0x8.pBuffer = param_1; - callStack->mRunFunc = runFunc; + + callStack->msgType_ = 0; + callStack->msg.bufferPtr = msg; + callStack->callback_ = callback; return callStack; } /* 8028FB5C-8028FC54 28A49C 00F8+00 0/0 6/6 0/0 .text sendCmdMsg__13JASTaskThreadFPFPv_vPCvUl */ -int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void const* param_1, u32 param_2) { - void* pvVar1; +int JASTaskThread::sendCmdMsg(JASThreadCallback callback, const void* msg, u32 msgSize) { + void* callstack; - pvVar1 = allocCallStack(param_0, param_1, param_2); - if (pvVar1 == NULL) { + callstack = allocCallStack(callback, msg, msgSize); + if (callstack == NULL) { return 0; } - int iVar2 = sendMessage(pvVar1); - if (iVar2 == 0) { - JASKernel::getCommandHeap()->free(pvVar1); + + BOOL iVar2 = sendMessage(callstack); + if (!iVar2) { + JASKernel::getCommandHeap()->free(callstack); } return iVar2; } /* 8028FC54-8028FD4C 28A594 00F8+00 0/0 3/3 0/0 .text sendCmdMsg__13JASTaskThreadFPFPv_vPv */ -int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void* param_1) { - void* pvVar1; +int JASTaskThread::sendCmdMsg(JASThreadCallback callback, void* msg) { + void* callstack; - pvVar1 = allocCallStack(param_0, param_1); - if (pvVar1 == NULL) { + callstack = allocCallStack(callback, msg); + if (callstack == NULL) { return 0; } - int iVar2 = sendMessage(pvVar1); - if (iVar2 == 0) { - JASKernel::getCommandHeap()->free(pvVar1); + + BOOL iVar2 = sendMessage(callstack); + if (!iVar2) { + JASKernel::getCommandHeap()->free(callstack); } return iVar2; } @@ -91,19 +91,21 @@ int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void* param_1) { /* 8028FD4C-8028FE88 28A68C 013C+00 1/0 0/0 0/0 .text run__13JASTaskThreadFv */ // NONMATCHING Regalloc void* JASTaskThread::run() { - JASThreadCallStack* ppcVar1; + JASThreadCallStack* callstack; OSInitFastCast(); do { - ppcVar1 = (JASThreadCallStack*)waitMessageBlock(); + callstack = (JASThreadCallStack*)waitMessageBlock(); if (field_0x84) { - OSSleepThread(&mpThreadQueue); + OSSleepThread(&threadQueue_); } - if (ppcVar1->field_0x4) { - ppcVar1->mRunFunc(ppcVar1->field_0x8.buffer); + + if (callstack->msgType_) { + callstack->callback_(callstack->msg.buffer); } else { - ppcVar1->mRunFunc(ppcVar1->field_0x8.pBuffer); + callstack->callback_(callstack->msg.bufferPtr); } - JASKernel::getCommandHeap()->free(ppcVar1); + + JASKernel::getCommandHeap()->free(callstack); } while (true); } @@ -114,7 +116,7 @@ void JASTaskThread::pause(bool param_0) { field_0x84 = 1; } else { if (field_0x84) { - OSWakeupThread(&mpThreadQueue); + OSWakeupThread(&threadQueue_); } field_0x84 = 0; } diff --git a/src/JSystem/JAudio2/JASTrack.cpp b/src/JSystem/JAudio2/JASTrack.cpp index 34b319c4f4..7cb87f68d7 100644 --- a/src/JSystem/JAudio2/JASTrack.cpp +++ b/src/JSystem/JAudio2/JASTrack.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JASTrack -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASTrack.h" diff --git a/src/JSystem/JAudio2/JAUInitializer.cpp b/src/JSystem/JAudio2/JAUInitializer.cpp index f475232811..83fb025938 100644 --- a/src/JSystem/JAudio2/JAUInitializer.cpp +++ b/src/JSystem/JAudio2/JAUInitializer.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAUInitializer -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAUInitializer.h" @@ -14,69 +9,78 @@ #include "JSystem/JAudio2/JASAudioThread.h" #include "JSystem/JAudio2/JASDriverIF.h" #include "JSystem/JAudio2/JASDvdThread.h" -#include "JSystem/JAudio2/JASTaskThread.h" #include "JSystem/JAudio2/JASTrack.h" #include "JSystem/JAudio2/JASWaveArcLoader.h" #include "JSystem/JKernel/JKRAram.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "JSystem/JKernel/JKRThread.h" -#include <dolphin/os.h> /* 802A4AD0-802A4B28 29F410 0058+00 0/0 1/1 0/0 .text __ct__18JAU_JASInitializerFv */ JAU_JASInitializer::JAU_JASInitializer() { - field_0x00 = 0; - field_0x04 = 0; - field_0x14 = -1; - field_0x18 = -1; - field_0x08 = 0x1000; - field_0x0c = 3; - field_0x10 = 2; + audioMemory_ = 0; + audioMemSize_ = 0; + dvdThreadId_ = -1; + audioThreadId_ = -1; + heapSize_ = 0x1000; + dvdThreadPriority_ = 3; + audioThreadPriority_ = 2; field_0x1c = 0x80; - field_0x2c = 1.0f; - field_0x24 = 0x2760; - field_0x28 = 2; + dspLevel_ = 1.0f; + aramBlockSize_ = 0x2760; + aramChannelNum_ = 2; field_0x20 = 0; - field_0x30 = NULL; + waveArcDir_ = NULL; } /* 802A4B28-802A4D3C 29F468 0214+00 0/0 1/1 0/0 .text * initJASystem__18JAU_JASInitializerFP12JKRSolidHeap */ // NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations -void JAU_JASInitializer::initJASystem(JKRSolidHeap* param_0) { +void JAU_JASInitializer::initJASystem(JKRSolidHeap* heap) { if (JASAudioThread::getThreadPointer()) { - + JUT_WARN(48, "%s", "Though initialized JASAudioThread, called JAU_JASInitializer::initJASystem()\n"); } else if (JASDvd::getThreadPointer()) { - + JUT_WARN(52, "%s", "Though initialized JASDvd, called JAU_JASInitializer::initJASystem()\n"); } else { - JASKernel::setupRootHeap(param_0, field_0x08); - if (field_0x00 == 0) { - field_0x00 = JKRAram::getManager()->getAudioMemory(); + JASKernel::setupRootHeap(heap, heapSize_); + + if (audioMemory_ == 0) { + audioMemory_ = JKRAram::getManager()->getAudioMemory(); } - if (field_0x04 == 0) { - field_0x04 = JKRAram::getManager()->getAudioMemSize(); + + if (audioMemSize_ == 0) { + audioMemSize_ = JKRAram::getManager()->getAudioMemSize(); } - JASKernel::setupAramHeap(field_0x00, field_0x04); + + JASKernel::setupAramHeap(audioMemory_, audioMemSize_); + JASTrack::newMemPool(field_0x1c); if (field_0x20 > 0) { JASTrack::TChannelMgr::newMemPool(field_0x20); } - JASDvd::createThread(field_0x0c,0x80,0x1000); - JASAudioThread::create(field_0x10); + + JASDvd::createThread(dvdThreadPriority_, 0x80, 0x1000); + JASAudioThread::create(audioThreadPriority_); JKRThreadSwitch* threadSwitch = JKRThreadSwitch::getManager(); if (threadSwitch) { - if (field_0x14 >= 0) { - threadSwitch->enter(JASDvd::getThreadPointer(), field_0x14); + if (dvdThreadId_ >= 0) { + threadSwitch->enter(JASDvd::getThreadPointer(), dvdThreadId_); } - if (field_0x18 >= 0) { - threadSwitch->enter(JASAudioThread::getThreadPointer(), field_0x18); + if (audioThreadId_ >= 0) { + threadSwitch->enter(JASAudioThread::getThreadPointer(), audioThreadId_); } } - JASDriver::setDSPLevel(field_0x2c); - JASAramStream::initSystem(field_0x24,field_0x28); + + JASDriver::setDSPLevel(dspLevel_); + JASAramStream::initSystem(aramBlockSize_, aramChannelNum_); } - if (field_0x30) { - JASWaveArcLoader::setCurrentDir(field_0x30); + + if (waveArcDir_) { + JASWaveArcLoader::setCurrentDir(waveArcDir_); } + + #if PLATFORM_SHIELD + JASDriver::setOutputMode(1); + #else switch (OSGetSoundMode()) { case 0: JASDriver::setOutputMode(0); @@ -85,6 +89,7 @@ void JAU_JASInitializer::initJASystem(JKRSolidHeap* param_0) { JASDriver::setOutputMode(1); break; } + #endif } /* 802A4D3C-802A4D60 29F67C 0024+00 0/0 1/1 0/0 .text __ct__18JAU_JAIInitializerFv */ @@ -104,5 +109,5 @@ void JAU_JAIInitializer::initJAInterface() { JAISe::newMemPool(field_0x0); JAISoundChild::newMemPool(field_0xc); s32 r29 = JASDram->getFreeSize(); - //OSReport("JAU_JAIInitializer uses %d bytes\n", r30 - r29); + OS_REPORT("JAU_JAIInitializer uses %d bytes\n", r30 - r29); } diff --git a/src/JSystem/JAudio2/JAUSectionHeap.cpp b/src/JSystem/JAudio2/JAUSectionHeap.cpp index 1defae3172..70e361f772 100644 --- a/src/JSystem/JAudio2/JAUSectionHeap.cpp +++ b/src/JSystem/JAudio2/JAUSectionHeap.cpp @@ -52,7 +52,7 @@ namespace { } } virtual s32 getStreamFileEntry(JAISoundID id) { - u32 short_id = id.mId.mAdvancedId.mShortId; + u32 short_id = id.id_.info.waveID; if (short_id >= field_0x4) { return -1; } @@ -455,8 +455,8 @@ bool JAUSectionHeap::loadDynamicSeq(JAISoundID param_0, bool param_1) { /* 802A5EF8-802A5F24 2A0838 002C+00 0/0 1/1 0/0 .text * releaseIdleDynamicSeqDataBlock__14JAUSectionHeapFv */ -void JAUSectionHeap::releaseIdleDynamicSeqDataBlock() { - sectionHeapData_.seqDataBlocks.releaseIdleDynamicSeqDataBlock(sectionHeapData_.seqDataUser); +u32 JAUSectionHeap::releaseIdleDynamicSeqDataBlock() { + return sectionHeapData_.seqDataBlocks.releaseIdleDynamicSeqDataBlock(sectionHeapData_.seqDataUser); } /* 802A5F24-802A5F9C 2A0864 0078+00 1/1 0/0 0/0 .text JAUNewSectionHeap__FP12JKRSolidHeapb */ diff --git a/src/JSystem/JAudio2/JAUSeqCollection.cpp b/src/JSystem/JAudio2/JAUSeqCollection.cpp index 4cc4b1c3d9..7387d21dd5 100644 --- a/src/JSystem/JAudio2/JAUSeqCollection.cpp +++ b/src/JSystem/JAudio2/JAUSeqCollection.cpp @@ -82,7 +82,7 @@ JAUSeqDataMgr_SeqCollection::SeqDataReturnValue JAUSeqDataMgr_SeqCollection::get if (!isValid()) { return SeqDataReturnValue_0; } - if (JAUSeqCollection::getSeqData(param_0.mId.mBytes.b1, param_0.mId.mAdvancedId.mShortId, param_1)) { + if (JAUSeqCollection::getSeqData(param_0.id_.info.type.parts.groupID, param_0.id_.info.waveID, param_1)) { return SeqDataReturnValue_2; } return SeqDataReturnValue_0; diff --git a/src/JSystem/JAudio2/JAUSoundTable.cpp b/src/JSystem/JAudio2/JAUSoundTable.cpp index 5f2c332887..beeca0335f 100644 --- a/src/JSystem/JAudio2/JAUSoundTable.cpp +++ b/src/JSystem/JAudio2/JAUSoundTable.cpp @@ -21,15 +21,15 @@ u8 JAUSoundTable::getTypeID(JAISoundID param_0) const { if (param_0.isAnonymous()) { return 0xff; } - JAUSoundTableSection* section = field_0x0.getSection(param_0.mId.mBytes.b0); + JAUSoundTableSection* section = field_0x0.getSection(param_0.id_.info.type.parts.sectionID); if (section == NULL) { return 0xff; } - JAUSoundTableGroup* group = field_0x0.getGroup(section, param_0.mId.mBytes.b1); + JAUSoundTableGroup* group = field_0x0.getGroup(section, param_0.id_.info.type.parts.groupID); if (group == NULL) { return 0xff; } - return group->getTypeID(param_0.mId.mAdvancedId.mShortId); + return group->getTypeID(param_0.id_.info.waveID); } /* 802A728C-802A73D4 2A1BCC 0148+00 0/0 7/7 0/0 .text getData__13JAUSoundTableCF10JAISoundID */ @@ -37,15 +37,15 @@ JAUSoundTableItem* JAUSoundTable::getData(JAISoundID param_0) const { if (param_0.isAnonymous()) { return NULL; } - JAUSoundTableSection* section = field_0x0.getSection(param_0.mId.mBytes.b0); + JAUSoundTableSection* section = field_0x0.getSection(param_0.id_.info.type.parts.sectionID); if (section == NULL) { return NULL; } - JAUSoundTableGroup* group = field_0x0.getGroup(section, param_0.mId.mBytes.b1); + JAUSoundTableGroup* group = field_0x0.getGroup(section, param_0.id_.info.type.parts.groupID); if (group == NULL) { return NULL; } - return getItem(group, param_0.mId.mAdvancedId.mShortId); + return getItem(group, param_0.id_.info.waveID); } /* 802A73D4-802A7420 2A1D14 004C+00 0/0 1/1 0/0 .text init__17JAUSoundNameTableFPCv */ diff --git a/src/JSystem/JAudio2/JAUStreamFileTable.cpp b/src/JSystem/JAudio2/JAUStreamFileTable.cpp index 2c950278e9..e646e0ddc4 100644 --- a/src/JSystem/JAudio2/JAUStreamFileTable.cpp +++ b/src/JSystem/JAudio2/JAUStreamFileTable.cpp @@ -1,7 +1,6 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAUStreamFileTable.h" -#include "dolphin/os.h" /* 802A7420-802A742C 2A1D60 000C+00 0/0 1/1 0/0 .text __ct__18JAUStreamFileTableFv */ JAUStreamFileTable::JAUStreamFileTable() { @@ -40,7 +39,7 @@ const char* JAUStreamFileTable::getFilePath(int index) const { /* 802A74AC-802A74E8 2A1DEC 003C+00 1/0 0/0 0/0 .text * getStreamFileEntry__32JAUStreamDataMgr_StreamFileTableF10JAISoundID */ s32 JAUStreamDataMgr_StreamFileTable::getStreamFileEntry(JAISoundID soundId) { - const char* filePath = getFilePath(soundId.mId.mAdvancedId.mShortId); + const char* filePath = getFilePath(soundId.id_.info.waveID); if (filePath == NULL) { return -1; } diff --git a/src/JSystem/JAudio2/dspproc.cpp b/src/JSystem/JAudio2/dspproc.cpp index f85fc37cec..a7efc896f7 100644 --- a/src/JSystem/JAudio2/dspproc.cpp +++ b/src/JSystem/JAudio2/dspproc.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: dspproc -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/dspproc.h" @@ -13,9 +8,9 @@ void DSPReleaseHalt2(u32 msg) { u32 msgs[2]; u16 dspMap = DSP_CreateMap2(msg); - msgs[0] = (msg<<16) | dspMap; + msgs[0] = (msg << 16) | dspMap; - DSPSendCommands2(msgs,0,NULL); + DSPSendCommands2(msgs, 0, NULL); } /* 804512F8-80451300 0007F8 0004+04 2/2 0/0 0/0 .sbss flag */ @@ -23,7 +18,8 @@ static volatile BOOL flag; /* 8029E540-8029E54C 298E80 000C+00 1/1 0/0 0/0 .text setup_callback__FUs */ static void setup_callback(u16 param_0) { - flag = 0; + OS_REPORT("Finish %d\n", param_0); + flag = FALSE; } /* 8029E560-8029E5C4 298EA0 0064+00 0/0 1/1 0/0 .text DsetupTable__FUlUlUlUlUl */ @@ -34,22 +30,23 @@ void DsetupTable(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4 table[2] = param_2; table[3] = param_3; table[4] = param_4; - flag = 1; - DSPSendCommands2(table,5,setup_callback); + OS_REPORT("Table Setup\n"); + + flag = TRUE; + DSPSendCommands2(table, 5, setup_callback); while (true) { - if (flag==0) { + if (!flag) { return; } } } -/* ############################################################################################## */ /* 804507C8-804507D0 000248 0002+06 3/3 0/0 0/0 .sdata DSP_MIXERLEVEL */ static u16 DSP_MIXERLEVEL = 0x4000; /* 8029E5E0-8029E604 298F20 0024+00 0/0 1/1 0/0 .text DsetMixerLevel__Ff */ void DsetMixerLevel(f32 level) { - DSP_MIXERLEVEL = 4096.0f*level; + DSP_MIXERLEVEL = 4096.0f * level; } /* 8029E620-8029E674 298F60 0054+00 0/0 1/1 0/0 .text DsyncFrame2ch__FUlUlUl */ diff --git a/src/JSystem/JAudio2/dsptask.cpp b/src/JSystem/JAudio2/dsptask.cpp index 48bc2a06af..772cacbc17 100644 --- a/src/JSystem/JAudio2/dsptask.cpp +++ b/src/JSystem/JAudio2/dsptask.cpp @@ -1,38 +1,29 @@ -// -// Generated By: dol2asm -// Translation Unit: dsptask -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/dsptask.h" #include "JSystem/JAudio2/osdsp.h" #include "global.h" -// -// Forward References: -// - static void DspInitWork(); static void DspHandShake(void* param_0); static int DspStartWork(u32 param_0, void (*param_1)(u16)); -// -// External References: -// - extern int Dsp_Running_Check(); extern int Dsp_Running_Start(); /* 8029E6E0-8029E718 299020 0038+00 1/1 0/0 0/0 .text DspHandShake__FPv */ void DspHandShake(void*) { + OS_REPORT("DSP InitCallback \n"); while (DSPCheckMailFromDSP() == 0) {} - DSPReadMailFromDSP(); - DSPCheckMailFromDSP(); + u32 result = DSPReadMailFromDSP(); + OS_REPORT("♪JDSP/Boot:: DSPからのファーストメール(%x)が届きました\n", result); + result = DSPCheckMailFromDSP(); + OS_REPORT("♪JDSP/Boot:: DSPからのセカンドメール(%x)が届きました\n", result); + + OS_REPORT("♪JDSP/Boot:: DSPとの接続に成功しました\n"); Dsp_Running_Start(); } -/* ############################################################################################## */ /* 803C7920-803C9820 024A40 1F00+00 1/1 0/0 0/0 .data jdsp */ static u8 jdsp[7936] ALIGN_DECL(32) = { 0x02, 0x9F, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x00, @@ -542,6 +533,7 @@ static u8 AUDIO_YIELD_BUFFER[8192] ALIGN_DECL(32); /* 8029E720-8029E7CC 299060 00AC+00 0/0 1/1 0/0 .text DspBoot__FPFPv_v */ void DspBoot(void (*param_0)(void*)) { DspInitWork(); + OS_REPORT("Dsp をブートします\n"); audio_task.priority = 0xf0; audio_task.iram_mmem_addr = (u16*)(jdsp + 0x80000000); audio_task.iram_length = sizeof(jdsp); @@ -557,6 +549,7 @@ void DspBoot(void (*param_0)(void*)) { audio_task.req_cb = param_0; DSPInit(); DSPAddPriorTask(&audio_task); + OS_REPORT("Dspブートしました\n"); } /* 8029E7E0-8029E8C8 299120 00E8+00 0/0 4/4 0/0 .text DSPSendCommands2__FPUlUlPFUs_v */ @@ -565,17 +558,20 @@ int DSPSendCommands2(u32* param_1, u32 param_2, void (*callBack)(u16)) { BOOL interruptFlag; s32 startWorkStatus; - while (Dsp_Running_Check() == 0) {}; + while (Dsp_Running_Check() == 0) { + OS_REPORT("Warning:まだブートしてません\n"); + }; interruptFlag = OSDisableInterrupts(); if (DSPCheckMailToDSP()) { + OS_REPORT("エラー::DSPがメッセージを受け取っていません\n"); OSRestoreInterrupts(interruptFlag); return -1; } DSPSendMailToDSP(param_2); DSPAssertInt(); - while(DSPCheckMailToDSP() != 0); + while (DSPCheckMailToDSP() != 0); if (param_2 == 0) { param_2 = 1; @@ -594,9 +590,7 @@ int DSPSendCommands2(u32* param_1, u32 param_2, void (*callBack)(u16)) { return startWorkStatus; } -/* ############################################################################################## */ /* 80433FE0-80434060 060D00 0080+00 3/3 0/0 0/0 .bss taskwork */ - typedef struct { u16 field_0x0; u16 field_0x2; @@ -606,14 +600,12 @@ typedef struct { static TaskWorkStruct taskwork[16]; /* 8029E8E0-8029E90C 299220 002C+00 1/1 0/0 0/0 .text DspInitWork__Fv */ -// Loop is unrolled but should not be static void DspInitWork() { for (int i = 0; i < 16; i++) { taskwork[i].field_0x4 = NULL; } } -/* ############################################################################################## */ /* 80451300-80451304 000800 0004+00 2/2 0/0 0/0 .sbss taskreadp */ static u32 taskreadp; @@ -625,6 +617,7 @@ static int DspStartWork(u32 param_0, void (*param_1)(u16)) { u32 taskWritePrev = taskwritep; u32 writeVal = ((taskWritePrev + 1) & 0xf); if (writeVal == taskreadp) { + OS_REPORT("DSP-Task Buffer is full ( %d, %d)\n", taskwritep, taskreadp); return 0; } @@ -636,7 +629,9 @@ static int DspStartWork(u32 param_0, void (*param_1)(u16)) { /* 8029E980-8029E9E8 2992C0 0068+00 0/0 1/1 0/0 .text DspFinishWork__FUs */ void DspFinishWork(u16 param_0) { - if (param_0 == taskwork[taskreadp].field_0x0) { + if (param_0 != taskwork[taskreadp].field_0x0) { + OS_REPORT("Error:: Not finish task\n"); + } else { if (taskwork[taskreadp].field_0x4) { taskwork[taskreadp].field_0x4(taskreadp); } |
