summaryrefslogtreecommitdiff
path: root/src/JSystem/JAudio2/JAIStream.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-11-27 21:19:33 -0800
committerGitHub <noreply@github.com>2025-11-27 21:19:33 -0800
commit6f96e665186c87f15acb6f5cb8d27665afee3130 (patch)
tree3ea70fe7d635a0f55aae44b1a386814766a46597 /src/JSystem/JAudio2/JAIStream.cpp
parent767caeecc3e374779cccc9960b6546b74e7a9e50 (diff)
various Z2Audio / JAudio debug cleanup (#2876)
* some JAudio work * audio cleanup checkpoint * checkpoint more audio cleanup * fix symbols * more z2 cleanup * fix regression * fix build * some fixes
Diffstat (limited to 'src/JSystem/JAudio2/JAIStream.cpp')
-rw-r--r--src/JSystem/JAudio2/JAIStream.cpp168
1 files changed, 87 insertions, 81 deletions
diff --git a/src/JSystem/JAudio2/JAIStream.cpp b/src/JSystem/JAudio2/JAIStream.cpp
index 2094e353f9..878c7e3e7f 100644
--- a/src/JSystem/JAudio2/JAIStream.cpp
+++ b/src/JSystem/JAudio2/JAIStream.cpp
@@ -1,55 +1,53 @@
-//
-// Generated By: dol2asm
-// Translation Unit: JAIStream
-//
-
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/JAudio2/JAIStream.h"
#include "JSystem/JAudio2/JAIStreamMgr.h"
#include "JSystem/JAudio2/JAISoundChild.h"
#include "JSystem/JAudio2/JAIStreamDataMgr.h"
-#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JAudio2/JAIAudience.h"
/* 802A30D4-802A3104 29DA14 0030+00 1/1 0/0 0/0 .text
* JAIStream_JASAramStreamCallback___FUlP13JASAramStreamPv */
-static void JAIStream_JASAramStreamCallback_(u32 param_1, JASAramStream* param_2, void* param_3) {
- switch (param_1) {
+static void JAIStream_JASAramStreamCallback_(u32 type, JASAramStream* aramStream, void* userData) {
+ JAIStream* stream = (JAIStream*)userData;
+
+ switch (type) {
case 1:
- ((JAIStream*)(param_3))->field_0x2c5 = 1;
+ stream->field_0x2c5 = 1;
break;
case 0:
- ((JAIStream*)(param_3))->field_0x2c6 = 1;
+ stream->field_0x2c6 = 1;
break;
}
}
/* 802A3104-802A319C 29DA44 0098+00 0/0 1/1 0/0 .text
* __ct__9JAIStreamFP12JAIStreamMgrP31JAISoundStrategyMgr<9JAIStream> */
-JAIStream::JAIStream(JAIStreamMgr* param_1, JAISoundStrategyMgr<JAIStream>* param_2) : JSULink<JAIStream>(this) {
+JAIStream::JAIStream(JAIStreamMgr* streamMgr, JAISoundStrategyMgr<JAIStream>* soundStrategyMgr) : JSULink<JAIStream>(this) {
field_0x290 = 0;
- field_0x2c0 = param_2;
- field_0x2b8 = param_1;
- field_0x29c = 0;
+ field_0x2c0 = soundStrategyMgr;
+ streamMgr_ = streamMgr;
+ streamAramAddr_ = 0;
field_0x2c5 = 0;
field_0x2c6 = 0;
+
for (int i = 0; i < CHANNEL_MAX; i++) {
- field_0x2a0[i] = NULL;
+ children_[i] = NULL;
}
}
/* 802A319C-802A3230 29DADC 0094+00 0/0 1/1 0/0 .text
* JAIStreamMgr_startID___9JAIStreamF10JAISoundIDlPCQ29JGeometry8TVec3<f>P11JAIAudiencei */
-void JAIStream::JAIStreamMgr_startID_(JAISoundID param_1, s32 param_2,
- JGeometry::TVec3<f32> const* param_3, JAIAudience* param_4,
- int param_5) {
- field_0x298 = param_5;
- field_0x294 = param_2;
- start_JAISound_(param_1, param_3, param_4);
+void JAIStream::JAIStreamMgr_startID_(JAISoundID id, s32 streamFileEntry,
+ const JGeometry::TVec3<f32>* posPtr, JAIAudience* audience,
+ int category) {
+ field_0x298 = category;
+ field_0x294 = streamFileEntry;
+ start_JAISound_(id, posPtr, audience);
field_0x290 = 0;
+
if (field_0x2c0 != NULL) {
- field_0x2bc = field_0x2c0->calc(param_1);
+ field_0x2bc = field_0x2c0->calc(id);
} else {
field_0x2bc = NULL;
}
@@ -59,15 +57,17 @@ void JAIStream::JAIStreamMgr_startID_(JAISoundID param_1, s32 param_2,
bool JAIStream::prepare_prepareStream_() {
u32 local_28;
JAIStreamAramMgr* streamAramMgr;
+
switch (field_0x290) {
case 0:
- streamAramMgr = field_0x2b8->getStreamAramMgr();
+ streamAramMgr = streamMgr_->getStreamAramMgr();
JUT_ASSERT(100, streamAramMgr);
- field_0x29c = streamAramMgr->newStreamAram(&local_28);
- if (field_0x29c != NULL) {
- field_0x0a8.field_0x0.init((u32)field_0x29c, local_28, &JAIStream_JASAramStreamCallback_, this);
+
+ streamAramAddr_ = streamAramMgr->newStreamAram(&local_28);
+ if (streamAramAddr_ != NULL) {
+ inner_.aramStream_.init((u32)streamAramAddr_, local_28, &JAIStream_JASAramStreamCallback_, this);
field_0x290 = 1;
- prepareCount = 0;
+ prepareCount_ = 0;
} else {
increasePrepareCount_JAISound_();
}
@@ -75,14 +75,16 @@ bool JAIStream::prepare_prepareStream_() {
case 1:
if (audible_ != NULL) {
JASSoundParams* soundParams = audible_->getOuterParams(0);
- field_0x0a8.field_0x0.setPitch(soundParams->mPitch);
- field_0x0a8.field_0x0.setVolume(soundParams->mVolume);
- field_0x0a8.field_0x0.setPan(soundParams->mPan);
- field_0x0a8.field_0x0.setFxmix(soundParams->mFxMix);
- field_0x0a8.field_0x0.setDolby(soundParams->mDolby);
+ inner_.aramStream_.setPitch(soundParams->mPitch);
+ inner_.aramStream_.setVolume(soundParams->mVolume);
+ inner_.aramStream_.setPan(soundParams->mPan);
+ inner_.aramStream_.setFxmix(soundParams->mFxMix);
+ inner_.aramStream_.setDolby(soundParams->mDolby);
}
+
field_0x2c5 = 0;
- if (field_0x0a8.field_0x0.prepare(field_0x294, -1)) {
+
+ if (inner_.aramStream_.prepare(field_0x294, -1)) {
field_0x290 = 2;
}
break;
@@ -97,7 +99,7 @@ bool JAIStream::prepare_prepareStream_() {
case 3:
return true;
case 4:
- JUT_WARN(155, "PC must not pass here.");
+ JUT_WARN(155, "%s", "PC must not pass here.");
break;
}
@@ -109,7 +111,11 @@ void JAIStream::prepare_() {
if (field_0x2c6 != 0) {
return;
}
+
switch(status_.state.unk) {
+ case 6:
+ JUT_ASSERT(171, false);
+ break;
case 0:
if (prepare_prepareStream_()) {
status_.state.unk = 5;
@@ -133,7 +139,7 @@ void JAIStream::prepare_() {
/* 802A3498-802A34E4 29DDD8 004C+00 1/1 0/0 0/0 .text prepare_startStream___9JAIStreamFv
*/
void JAIStream::prepare_startStream_() {
- if (field_0x0a8.field_0x0.start()) {
+ if (inner_.aramStream_.start()) {
field_0x2c6 = 0;
field_0x2c4 = 0;
field_0x290 = 4;
@@ -142,65 +148,64 @@ void JAIStream::prepare_startStream_() {
/* 802A34E4-802A3720 29DE24 023C+00 0/0 1/1 0/0 .text
* JAIStreamMgr_mixOut___9JAIStreamFRC14JASSoundParams16JAISoundActivity */
-void JAIStream::JAIStreamMgr_mixOut_(JASSoundParams const& param_1, JAISoundActivity param_2) {
+void JAIStream::JAIStreamMgr_mixOut_(const JASSoundParams& inParams, JAISoundActivity activity) {
bool local_54;
- JASSoundParams local_4c;
- params.mixOutAll(param_1, &local_4c, (status_.isMute() || param_2.field_0x0.flags.flag1) ? 0.0f : fader.getIntensity());
+ JASSoundParams outParams;
+ params_.mixOutAll(inParams, &outParams, (status_.isMute() || activity.field_0x0.flags.flag1) ? 0.0f : fader_.getIntensity());
+
if (field_0x2bc != NULL) {
- field_0x2bc->virtual4(this, local_4c);
+ field_0x2bc->virtual4(this, outParams);
}
- JASSoundParams* mixParams = &local_4c;
+
+ JASSoundParams* mixParams = &outParams;
if (audible_ != NULL && audience_ != NULL) {
for (int i = 0; i < audience_->getMaxChannels(); i++) {
JASSoundParams* outerParams = audible_->getOuterParams(i);
if (outerParams != NULL) {
- audience_->mixChannelOut(local_4c, audible_, i);
+ audience_->mixChannelOut(outParams, audible_, i);
mixParams = outerParams;
break;
}
}
}
+
for (int i = 0; i < CHANNEL_MAX; i++) {
- field_0x0a8.field_0x0.setPitch(mixParams->mPitch);
- if (field_0x2a0[i] != NULL) {
- field_0x0a8.field_0x0.setChannelVolume(i, field_0x2a0[i]->mMove.mParams.mVolume *
- mixParams->mVolume);
- field_0x0a8.field_0x0.setChannelPan(
- i, (field_0x2a0[i]->mMove.mParams.mPan + mixParams->mPan) - 0.5f);
- field_0x0a8.field_0x0.setChannelFxmix(i, field_0x2a0[i]->mMove.mParams.mFxMix +
- mixParams->mFxMix);
- field_0x0a8.field_0x0.setChannelDolby(i, field_0x2a0[i]->mMove.mParams.mDolby +
- mixParams->mDolby);
+ inner_.aramStream_.setPitch(mixParams->mPitch);
+ if (children_[i] != NULL) {
+ inner_.aramStream_.setChannelVolume(i, children_[i]->mMove.params_.mVolume * mixParams->mVolume);
+ inner_.aramStream_.setChannelPan(i, (children_[i]->mMove.params_.mPan + mixParams->mPan) - 0.5f);
+ inner_.aramStream_.setChannelFxmix(i, children_[i]->mMove.params_.mFxMix + mixParams->mFxMix);
+ inner_.aramStream_.setChannelDolby(i, children_[i]->mMove.params_.mDolby + mixParams->mDolby);
} else {
- field_0x0a8.field_0x0.setChannelVolume(i, mixParams->mVolume);
- field_0x0a8.field_0x0.setChannelPan(i, mixParams->mPan);
- field_0x0a8.field_0x0.setChannelFxmix(i, mixParams->mFxMix);
- field_0x0a8.field_0x0.setChannelDolby(i, mixParams->mDolby);
+ inner_.aramStream_.setChannelVolume(i, mixParams->mVolume);
+ inner_.aramStream_.setChannelPan(i, mixParams->mPan);
+ inner_.aramStream_.setChannelFxmix(i, mixParams->mFxMix);
+ inner_.aramStream_.setChannelDolby(i, mixParams->mDolby);
}
}
+
prepare_();
+
if (field_0x290 == 4) {
- local_54 = false;
- if (status_.isPaused() || param_2.field_0x0.flags.flag2) {
- local_54 = true;
- }
+ local_54 = status_.isPaused() || activity.field_0x0.flags.flag2;
if (local_54 != field_0x2c4) {
- field_0x0a8.field_0x0.pause(local_54);
+ inner_.aramStream_.pause(local_54);
field_0x2c4 = local_54;
}
}
}
/* 802A3720-802A37FC 29E060 00DC+00 1/1 0/0 0/0 .text die_JAIStream___9JAIStreamFv */
-// NONMATCHING JASPolAllocObject<_> locations
void JAIStream::die_JAIStream_() {
die_JAISound_();
+
for (int i = 0; i < CHANNEL_MAX; i++) {
- if (field_0x2a0[i] != NULL) {
- delete field_0x2a0[i];
- field_0x2a0[i] = NULL;
+ if (children_[i] != NULL) {
+ delete children_[i];
+ children_[i] = NULL;
}
}
+
if (field_0x2bc != NULL) {
field_0x2c0->virtual4(field_0x2bc);
field_0x2bc = NULL;
@@ -213,6 +218,7 @@ bool JAIStream::JAISound_tryDie_() {
die_JAIStream_();
return true;
}
+
switch (field_0x290) {
case 0:
case 1:
@@ -221,11 +227,11 @@ bool JAIStream::JAISound_tryDie_() {
case 2:
case 3:
field_0x290 = 5;
- field_0x0a8.field_0x0.cancel();
+ inner_.aramStream_.cancel();
break;
case 4:
field_0x290 = 6;
- field_0x0a8.field_0x0.stop(10);
+ inner_.aramStream_.stop(10);
break;
}
@@ -238,12 +244,14 @@ void JAIStream::JAIStreamMgr_calc_() {
field_0x290 = 0;
stop_JAISound_();
}
+
if (calc_JAISound_()) {
for (int i = 0; i < CHANNEL_MAX; i++) {
- if (field_0x2a0[i] != NULL) {
- field_0x2a0[i]->calc();
+ if (children_[i] != NULL) {
+ children_[i]->calc();
}
}
+
if (field_0x2bc != NULL) {
field_0x2bc->calc(this);
}
@@ -252,27 +260,25 @@ void JAIStream::JAIStreamMgr_calc_() {
/* 802A3948-802A3950 29E288 0008+00 1/0 0/0 0/0 .text getNumChild__9JAIStreamCFv */
s32 JAIStream::getNumChild() const {
- return 6;
+ return NUM_CHILDREN;
}
/* 802A3950-802A3A24 29E290 00D4+00 1/0 0/0 0/0 .text getChild__9JAIStreamFi */
-// NONMATCHING JASPoolAllocObject<_> locations
-JAISoundChild* JAIStream::getChild(int i_idx) {
- if (field_0x2a0[i_idx] == NULL) {
- field_0x2a0[i_idx] = new JAISoundChild();
- if (field_0x2a0[i_idx] == NULL) {
- JUT_WARN(370, "JASPoolAllocObject::<JAISoundChild>::operator new failed .")
+JAISoundChild* JAIStream::getChild(int index) {
+ if (children_[index] == NULL) {
+ children_[index] = new JAISoundChild();
+ if (children_[index] == NULL) {
+ JUT_WARN(370, "%s", "JASPoolAllocObject::<JAISoundChild>::operator new failed .")
}
}
- return field_0x2a0[i_idx];
+ return children_[index];
}
/* 802A3A24-802A3ABC 29E364 0098+00 1/0 0/0 0/0 .text releaseChild__9JAIStreamFi */
-// NONMATCHING JASPoolAllocObject<_> locations
-void JAIStream::releaseChild(int i_idx) {
- if (field_0x2a0[i_idx] != NULL) {
- delete field_0x2a0[i_idx];
- field_0x2a0[i_idx] = NULL;
+void JAIStream::releaseChild(int index) {
+ if (children_[index] != NULL) {
+ delete children_[index];
+ children_[index] = NULL;
}
}