mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-03 18:06:02 -04:00
298 lines
9.4 KiB
C++
298 lines
9.4 KiB
C++
//
|
|
// 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) {
|
|
case 1:
|
|
((JAIStream*)(param_3))->field_0x2c5 = 1;
|
|
break;
|
|
case 0:
|
|
((JAIStream*)(param_3))->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) {
|
|
field_0x290 = 0;
|
|
field_0x2c0 = param_2;
|
|
field_0x2b8 = param_1;
|
|
field_0x29c = 0;
|
|
field_0x2c5 = 0;
|
|
field_0x2c6 = 0;
|
|
for (int i = 0; i < CHANNEL_MAX; i++) {
|
|
field_0x2a0[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);
|
|
field_0x290 = 0;
|
|
if (field_0x2c0 != NULL) {
|
|
field_0x2bc = field_0x2c0->calc(param_1);
|
|
} else {
|
|
field_0x2bc = NULL;
|
|
}
|
|
}
|
|
|
|
/* 802A3230-802A33F4 29DB70 01C4+00 1/1 0/0 0/0 .text prepare_prepareStream___9JAIStreamFv */
|
|
bool JAIStream::prepare_prepareStream_() {
|
|
u32 local_28;
|
|
JAIStreamAramMgr* streamAramMgr;
|
|
switch (field_0x290) {
|
|
case 0:
|
|
streamAramMgr = field_0x2b8->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);
|
|
field_0x290 = 1;
|
|
prepareCount = 0;
|
|
} else {
|
|
increasePrepareCount_JAISound_();
|
|
}
|
|
break;
|
|
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);
|
|
}
|
|
field_0x2c5 = 0;
|
|
if (field_0x0a8.field_0x0.prepare(field_0x294, -1)) {
|
|
field_0x290 = 2;
|
|
}
|
|
break;
|
|
case 2:
|
|
if (field_0x2c5 != 0) {
|
|
field_0x2c5 = 0;
|
|
field_0x290 = 3;
|
|
} else {
|
|
increasePrepareCount_JAISound_();
|
|
}
|
|
break;
|
|
case 3:
|
|
return true;
|
|
case 4:
|
|
JUT_WARN(155, "PC must not pass here.");
|
|
break;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/* 802A33F4-802A3498 29DD34 00A4+00 1/1 0/0 0/0 .text prepare___9JAIStreamFv */
|
|
void JAIStream::prepare_() {
|
|
if (field_0x2c6 != 0) {
|
|
return;
|
|
}
|
|
switch(status_.state.unk) {
|
|
case 0:
|
|
if (prepare_prepareStream_()) {
|
|
status_.state.unk = 5;
|
|
prepare_startStream_();
|
|
}
|
|
break;
|
|
case 1:
|
|
if (prepare_prepareStream_()) {
|
|
status_.state.unk = 3;
|
|
}
|
|
break;
|
|
case 4:
|
|
status_.state.unk = 5;
|
|
prepare_startStream_();
|
|
break;
|
|
case 5:
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* 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()) {
|
|
field_0x2c6 = 0;
|
|
field_0x2c4 = 0;
|
|
field_0x290 = 4;
|
|
}
|
|
}
|
|
|
|
/* 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) {
|
|
bool local_54;
|
|
JASSoundParams local_4c;
|
|
params.mixOutAll(param_1, &local_4c, (status_.isMute() || param_2.field_0x0.flags.flag1) ? 0.0f : fader.getIntensity());
|
|
if (field_0x2bc != NULL) {
|
|
field_0x2bc->virtual4(this, local_4c);
|
|
}
|
|
JASSoundParams* mixParams = &local_4c;
|
|
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);
|
|
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);
|
|
} 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);
|
|
}
|
|
}
|
|
prepare_();
|
|
if (field_0x290 == 4) {
|
|
local_54 = false;
|
|
if (status_.isPaused() || param_2.field_0x0.flags.flag2) {
|
|
local_54 = true;
|
|
}
|
|
if (local_54 != field_0x2c4) {
|
|
field_0x0a8.field_0x0.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 (field_0x2bc != NULL) {
|
|
field_0x2c0->virtual4(field_0x2bc);
|
|
field_0x2bc = NULL;
|
|
}
|
|
}
|
|
|
|
/* 802A37FC-802A388C 29E13C 0090+00 1/0 0/0 0/0 .text JAISound_tryDie___9JAIStreamFv */
|
|
bool JAIStream::JAISound_tryDie_() {
|
|
if (field_0x2c6) {
|
|
die_JAIStream_();
|
|
return true;
|
|
}
|
|
switch (field_0x290) {
|
|
case 0:
|
|
case 1:
|
|
die_JAIStream_();
|
|
return true;
|
|
case 2:
|
|
case 3:
|
|
field_0x290 = 5;
|
|
field_0x0a8.field_0x0.cancel();
|
|
break;
|
|
case 4:
|
|
field_0x290 = 6;
|
|
field_0x0a8.field_0x0.stop(10);
|
|
break;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/* 802A388C-802A3948 29E1CC 00BC+00 0/0 1/1 0/0 .text JAIStreamMgr_calc___9JAIStreamFv */
|
|
void JAIStream::JAIStreamMgr_calc_() {
|
|
if (field_0x2c6 != 0) {
|
|
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 (field_0x2bc != NULL) {
|
|
field_0x2bc->calc(this);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 802A3948-802A3950 29E288 0008+00 1/0 0/0 0/0 .text getNumChild__9JAIStreamCFv */
|
|
s32 JAIStream::getNumChild() const {
|
|
return 6;
|
|
}
|
|
|
|
/* 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 .")
|
|
}
|
|
}
|
|
return field_0x2a0[i_idx];
|
|
}
|
|
|
|
/* 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;
|
|
}
|
|
}
|
|
|
|
/* 802A3ABC-802A3AC4 29E3FC 0008+00 1/0 0/0 0/0 .text getTrack__9JAIStreamFv */
|
|
JASTrack* JAIStream::getTrack() {
|
|
return NULL;
|
|
}
|
|
|
|
/* 802A3AC4-802A3ACC 29E404 0008+00 1/0 0/0 0/0 .text getChildTrack__9JAIStreamFi */
|
|
JASTrack* JAIStream::getChildTrack(int param_0) {
|
|
return NULL;
|
|
}
|
|
|
|
/* 802A3ACC-802A3AD0 29E40C 0004+00 1/0 0/0 0/0 .text asStream__9JAIStreamFv */
|
|
JAIStream* JAIStream::asStream() {
|
|
return this;
|
|
}
|
|
|
|
/* 802A3AD0-802A3AD8 29E410 0008+00 1/0 0/0 0/0 .text getTempoMgr__9JAIStreamFv */
|
|
JAITempoMgr* JAIStream::getTempoMgr() {
|
|
return NULL;
|
|
}
|