mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-18 12:52:51 -04:00
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
This commit is contained in:
@@ -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 ));
|
||||
}
|
||||
|
||||
@@ -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_();
|
||||
|
||||
+136
-120
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,4 +4,6 @@
|
||||
|
||||
JAISeqDataUser::~JAISeqDataUser() {}
|
||||
|
||||
JAISeqDataMgr::~JAISeqDataMgr() {}
|
||||
JAISeqDataMgr::~JAISeqDataMgr() {
|
||||
JUT_ASSERT(14, false);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
params_.init();
|
||||
fader_.forceIn();
|
||||
audience_ = audience;
|
||||
prepareCount_ = 0;
|
||||
count_ = 0;
|
||||
|
||||
if (param_1 != 0 && audience_ != NULL) {
|
||||
audible_ = audience_->newAudible(*param_1, soundID, NULL, 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]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JASHeapCtrl
|
||||
//
|
||||
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
|
||||
#include "JSystem/JAudio2/JASHeapCtrl.h"
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: JASTrack
|
||||
//
|
||||
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
|
||||
#include "JSystem/JAudio2/JASTrack.h"
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user