mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-09 14:05:28 -04:00
JAIStreamMgr work, copy pikmin2 JAI enums
This commit is contained in:
@@ -3,6 +3,58 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
enum JAISoundType {
|
||||
SOUNDPARAM_Unk0 = 0,
|
||||
SOUNDPARAM_Dopplar = 1,
|
||||
SOUNDPARAM_Demo = 2,
|
||||
SOUNDPARAM_Unk3 = 3,
|
||||
SOUNDPARAM_Distance = 4,
|
||||
SOUNDPARAM_Unk5 = 5,
|
||||
SOUNDPARAM_Direct = 6,
|
||||
SOUNDPARAM_Fadeout = 7,
|
||||
SOUNDPARAM_Unk8 = 8,
|
||||
SOUNDPARAM_Unk9 = 9,
|
||||
SOUNDPARAM_Unk10 = 10,
|
||||
SOUNDPARAM_Pause = 11,
|
||||
};
|
||||
|
||||
enum JAISoundState {
|
||||
SOUNDSTATE_Inactive = 0,
|
||||
SOUNDSTATE_Stored = 1,
|
||||
SOUNDSTATE_Loaded = 2,
|
||||
SOUNDSTATE_Ready = 3,
|
||||
SOUNDSTATE_Playing = 4,
|
||||
SOUNDSTATE_Fadeout = 5,
|
||||
};
|
||||
|
||||
enum JAISoundTrackActiveFlags {
|
||||
SOUNDACTIVE_Unk0 = 0,
|
||||
SOUNDACTIVE_Unk1 = 1 << 0, // 0x1
|
||||
SOUNDACTIVE_DoFadeout = 1 << 1, // 0x2
|
||||
SOUNDACTIVE_TempoProportion = 1 << 2, // 0x4
|
||||
SOUNDACTIVE_Unk4 = 1 << 3, // 0x8
|
||||
SOUNDACTIVE_Unk5 = 1 << 4, // 0x10
|
||||
SOUNDACTIVE_Unk6 = 1 << 5, // 0x20
|
||||
SOUNDACTIVE_TrackVolume = 1 << 6, // 0x40
|
||||
SOUNDACTIVE_TrackPan = 1 << 7, // 0x80
|
||||
SOUNDACTIVE_TrackDolby = 1 << 8, // 0x100
|
||||
SOUNDACTIVE_TrackPitch = 1 << 9, // 0x200
|
||||
SOUNDACTIVE_Unk11 = 1 << 10, // 0x400
|
||||
SOUNDACTIVE_TrackFxmix = 1 << 11, // 0x800
|
||||
SOUNDACTIVE_TrackPortData = 1 << 12, // 0x1000
|
||||
SOUNDACTIVE_Unk14 = 1 << 13, // 0x2000
|
||||
SOUNDACTIVE_Unk15 = 1 << 14, // 0x4000
|
||||
SOUNDACTIVE_Unk16 = 1 << 15, // 0x8000
|
||||
SOUNDACTIVE_Unk17 = 1 << 16, // 0x10000
|
||||
SOUNDACTIVE_Unk18 = 1 << 17, // 0x20000
|
||||
SOUNDACTIVE_Volume = 1 << 18, // 0x40000
|
||||
SOUNDACTIVE_Pan = 1 << 19, // 0x80000
|
||||
SOUNDACTIVE_Pitch = 1 << 20, // 0x100000
|
||||
SOUNDACTIVE_Fxmix = 1 << 21, // 0x200000
|
||||
SOUNDACTIVE_Dolby = 1 << 22, // 0x400000
|
||||
SOUNDACTIVE_TrackInterruptSwitch = 1 << 23, // 0x800000
|
||||
};
|
||||
|
||||
namespace JAInter {
|
||||
class Actor;
|
||||
class SeParameter;
|
||||
@@ -103,7 +155,7 @@ public:
|
||||
void setDemoFxmix(f32 f1, u32 r4) { setFxmix(f1, r4, 3); }
|
||||
void setDemoPan(f32 f1, u32 r4) { setPan(f1, r4, 3); }
|
||||
void setDemoPitch(f32 f1, u32 r4) { setPitch(f1, r4, 3); }
|
||||
void setDemoVolume(f32 f1, u32 r4) { setVolume(f1, r4, 3); }
|
||||
void setDemoVolume(f32 f1, u32 r4) { setVolume(f1, r4, SOUNDPARAM_Unk3); }
|
||||
void setFadetime(u32) {}
|
||||
void setID(u32) {}
|
||||
void setMainSoundPPointer(JAISound**) {}
|
||||
@@ -121,7 +173,7 @@ public:
|
||||
void setWait(u8) {}
|
||||
|
||||
/* 0x04 */ u8 field_0x4;
|
||||
/* 0x05 */ u8 field_0x5;
|
||||
/* 0x05 */ u8 mState;
|
||||
/* 0x06 */ u8 field_0x6;
|
||||
/* 0x07 */ u8 field_0x7;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
@@ -129,7 +181,7 @@ public:
|
||||
/* 0x0a */ s16 field_0xa;
|
||||
/* 0x0c */ u32 mSoundID;
|
||||
/* 0x10 */ int field_0x10;
|
||||
/* 0x14 */ u32 field_0x14;
|
||||
/* 0x14 */ u32 mFadeCounter;
|
||||
/* 0x18 */ u32 field_0x18;
|
||||
/* 0x1c */ int field_0x1c;
|
||||
/* 0x20 */ PositionInfo_t* mPositionInfo;
|
||||
@@ -148,7 +200,7 @@ namespace JAInter {
|
||||
public:
|
||||
MoveParaSet(f32 param_1=1.0f) { init(param_1); }
|
||||
int set(f32 param_1, u32 param_2);
|
||||
bool move();
|
||||
BOOL move();
|
||||
|
||||
void init(f32 value) {
|
||||
mCurrentValue = value;
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace JAInter {
|
||||
/* 0x04 */ f32 field_0x4;
|
||||
/* 0x08 */ f32 field_0x8;
|
||||
/* 0x0C */ f32 field_0xc;
|
||||
/* 0x10 */ int field_0x10;
|
||||
/* 0x10 */ u32 mActiveTrackFlag;
|
||||
/* 0x14 */ JAISound* mpSound;
|
||||
};
|
||||
|
||||
@@ -38,15 +38,17 @@ namespace JAInter {
|
||||
|
||||
class StreamParameter {
|
||||
public:
|
||||
/* 0x000 */ u8 field_0x0;
|
||||
void init() {} // TODO
|
||||
|
||||
/* 0x000 */ u8 mPauseMode;
|
||||
/* 0x004 */ int field_0x4;
|
||||
/* 0x008 */ int field_0x8;
|
||||
/* 0x00C */ int field_0xc;
|
||||
/* 0x010 */ int field_0x10;
|
||||
/* 0x014 */ JAInter::MoveParaSet field_0x14[20];
|
||||
/* 0x008 */ u32 mVolumeFlags;
|
||||
/* 0x00C */ u32 mPitchFlags;
|
||||
/* 0x010 */ u32 mPanFlags;
|
||||
/* 0x014 */ JAInter::MoveParaSet mVolumes[20];
|
||||
/* 0x154 */ JAInter::MoveParaSet* pitch;
|
||||
/* 0x158 */ JAInter::MoveParaSet* pan;
|
||||
/* 0x15C */ streamUpdate_t* field_0x15c;
|
||||
/* 0x15C */ streamUpdate_t* mUpdateData;
|
||||
};
|
||||
|
||||
namespace StreamMgr {
|
||||
|
||||
@@ -176,7 +176,7 @@ void JAIZelBasic::gframeProcess() {
|
||||
if (!JAInter::SeMgr::seHandle) {
|
||||
return;
|
||||
}
|
||||
if (JAInter::SeMgr::seHandle->field_0x5 >= 4) {
|
||||
if (JAInter::SeMgr::seHandle->mState >= SOUNDSTATE_Playing) {
|
||||
zeldaGFrameWork();
|
||||
}
|
||||
processFrameWork();
|
||||
@@ -197,14 +197,14 @@ void JAIZelBasic::resetProcess() {
|
||||
for (int i = 0; i < JAIGlobalParameter::getParamSeqPlayTrackMax(); i++) {
|
||||
JAInter::SeqUpdateData* data = JAInter::SequenceMgr::getPlayTrackInfo(i);
|
||||
if (data && data->field_0x48) {
|
||||
data->field_0x48->setSeqInterVolume(6, 0.0f, 1);
|
||||
data->field_0x48->setSeqInterVolume(SOUNDPARAM_Direct, 0.0f, 1);
|
||||
}
|
||||
}
|
||||
if (JAInter::StreamMgr::getUpdateInfo()->mpSound) {
|
||||
JAInter::StreamMgr::getUpdateInfo()->mpSound->stop(1);
|
||||
}
|
||||
if (JAInter::SeMgr::seHandle) {
|
||||
JAInter::SeMgr::seHandle->setSeqInterVolume(6, 0.0f, 1);
|
||||
JAInter::SeMgr::seHandle->setSeqInterVolume(SOUNDPARAM_Direct, 0.0f, 1);
|
||||
}
|
||||
mNextSceneBgmId = 0;
|
||||
field_0x022e = 0;
|
||||
@@ -214,7 +214,7 @@ void JAIZelBasic::resetProcess() {
|
||||
/* 802A31C0-802A334C .text resetRecover__11JAIZelBasicFv */
|
||||
void JAIZelBasic::resetRecover() {
|
||||
if (JAInter::SeMgr::seHandle) {
|
||||
JAInter::SeMgr::seHandle->setSeqInterVolume(6, 1.0f, 0);
|
||||
JAInter::SeMgr::seHandle->setSeqInterVolume(SOUNDPARAM_Direct, 1.0f, 0);
|
||||
}
|
||||
for (int i = 0; i < JAIGlobalParameter::getParamSeqPlayTrackMax(); i++) {
|
||||
JAInter::SeqUpdateData* data = JAInter::SequenceMgr::getPlayTrackInfo(i);
|
||||
@@ -540,7 +540,7 @@ void JAIZelBasic::enemyNearByGFrame() {
|
||||
void JAIZelBasic::bgmAllMute(u32 param_1) {
|
||||
field_0x0080 = 0.0;
|
||||
if (mpMainBgmSound) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), param_1, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), param_1, SOUNDPARAM_Unk0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -549,14 +549,14 @@ void JAIZelBasic::taktModeMute() {
|
||||
field_0x0098 = 0.0f;
|
||||
if (mpMainBgmSound) {
|
||||
if (mMainBgmNum != JA_BGM_TAKT_MAKORE && mMainBgmNum != JA_BGM_TAKT_MEDRI) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 10, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 10, SOUNDPARAM_Unk0);
|
||||
} else {
|
||||
field_0x0098 = 1.0f;
|
||||
}
|
||||
}
|
||||
field_0x00a4 = 0.0;
|
||||
if (mpSubBgmSound) {
|
||||
mpSubBgmSound->setVolume(calcSubBgmVol(), 10, 0);
|
||||
mpSubBgmSound->setVolume(calcSubBgmVol(), 10, SOUNDPARAM_Unk0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -564,17 +564,17 @@ void JAIZelBasic::taktModeMute() {
|
||||
void JAIZelBasic::taktModeMuteOff() {
|
||||
field_0x0098 = 1.0;
|
||||
if (mpMainBgmSound) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 10, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 10, SOUNDPARAM_Unk0);
|
||||
}
|
||||
if (mSubBgmNum == JA_BGM_TAKT_KAZE) {
|
||||
field_0x008c = 1.0;
|
||||
if (mpMainBgmSound) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 45, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 45, SOUNDPARAM_Unk0);
|
||||
}
|
||||
}
|
||||
field_0x00a4 = 1.0;
|
||||
if (mpSubBgmSound) {
|
||||
mpSubBgmSound->setVolume(calcSubBgmVol(), 10, 0);
|
||||
mpSubBgmSound->setVolume(calcSubBgmVol(), 10, SOUNDPARAM_Unk0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -598,7 +598,7 @@ void JAIZelBasic::cbPracticeStop() {
|
||||
field_0x00a8 = 1.0;
|
||||
field_0x009c = 1.0;
|
||||
if (mpMainBgmSound) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 90, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 90, SOUNDPARAM_Unk0);
|
||||
}
|
||||
field_0x00d0 = 0;
|
||||
}
|
||||
@@ -886,11 +886,11 @@ void JAIZelBasic::talkIn() {
|
||||
if (field_0x0064 != 1 && isDemo() != 1 && field_0x0098 != 0.0f) {
|
||||
field_0x0084 = JAIZelParam::VOL_BGM_TALKING;
|
||||
if (mpMainBgmSound && mMainBgmNum != JA_BGM_BIRDMAN_GOAL && mMainBgmNum != JA_BGM_BIRDMAN_FAIL) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 2, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 2, SOUNDPARAM_Unk0);
|
||||
}
|
||||
field_0x00a0 = JAIZelParam::VOL_BGM_TALKING;
|
||||
if (mpSubBgmSound) {
|
||||
mpSubBgmSound->setSeqInterVolume(0, calcSubBgmVol(), 2);
|
||||
mpSubBgmSound->setSeqInterVolume(SOUNDPARAM_Unk0, calcSubBgmVol(), 2);
|
||||
}
|
||||
setSeCategoryVolume(0, JAIZelParam::VOL_SE_SYSTEM_TALKING);
|
||||
setSeCategoryVolume(1, JAIZelParam::VOL_SE_LINK_VOICE_TALKING);
|
||||
@@ -910,11 +910,11 @@ void JAIZelBasic::talkOut() {
|
||||
}
|
||||
field_0x0084 = JAIZelParam::VOL_BGM_DEFAULT;
|
||||
if (mpMainBgmSound) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 2, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 2, SOUNDPARAM_Unk0);
|
||||
}
|
||||
field_0x00a0 = JAIZelParam::VOL_BGM_DEFAULT;
|
||||
if (mpSubBgmSound) {
|
||||
mpSubBgmSound->setSeqInterVolume(0, calcSubBgmVol(), 2);
|
||||
mpSubBgmSound->setSeqInterVolume(SOUNDPARAM_Unk0, calcSubBgmVol(), 2);
|
||||
}
|
||||
setSeCategoryVolume(0, JAIZelParam::VOL_SE_SYSTEM_DEFAULT);
|
||||
setSeCategoryVolume(1, JAIZelParam::VOL_SE_LINK_VOICE_DEFAULT);
|
||||
@@ -930,11 +930,11 @@ void JAIZelBasic::talkOut() {
|
||||
void JAIZelBasic::menuIn() {
|
||||
field_0x0088 = JAIZelParam::VOL_BGM_PAUSING;
|
||||
if (mpMainBgmSound) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 2, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 2, SOUNDPARAM_Unk0);
|
||||
}
|
||||
field_0x00a0 = JAIZelParam::VOL_BGM_PAUSING;
|
||||
if (mpSubBgmSound) {
|
||||
mpSubBgmSound->setSeqInterVolume(0, calcSubBgmVol(), 2);
|
||||
mpSubBgmSound->setSeqInterVolume(SOUNDPARAM_Unk0, calcSubBgmVol(), 2);
|
||||
}
|
||||
setSeCategoryVolume(0, JAIZelParam::VOL_SE_SYSTEM_PAUSING);
|
||||
setSeCategoryVolume(1, JAIZelParam::VOL_SE_LINK_VOICE_PAUSING);
|
||||
@@ -1064,7 +1064,7 @@ void JAIZelBasic::changeSeaBgm() {
|
||||
case 2:
|
||||
field_0x0094 = (sp08 - (sp0C.field_0xC + 2000.0f)) / 1000.0f;
|
||||
if (mpMainBgmSound) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 1, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 1, SOUNDPARAM_Unk0);
|
||||
}
|
||||
return;
|
||||
default:
|
||||
@@ -1080,14 +1080,14 @@ void JAIZelBasic::changeSeaBgm() {
|
||||
case 1:
|
||||
field_0x0094 = ((sp0C.field_0xC + 2000.0f) - sp08) / 2000.0f;
|
||||
if (mpMainBgmSound) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 1, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 1, SOUNDPARAM_Unk0);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
field_0x0094 = 0.0f;
|
||||
if (mpMainBgmSound) {
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 0, 0);
|
||||
mpMainBgmSound->setVolume(calcMainBgmVol(), 0, SOUNDPARAM_Unk0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ void JAIZelSound::setSeDistanceVolume(u8 r30) {
|
||||
} else {
|
||||
f31 = 1.0f;
|
||||
}
|
||||
setSeInterVolume(4, f31, r30, 0);
|
||||
setSeInterVolume(SOUNDPARAM_Distance, f31, r30, 0);
|
||||
}
|
||||
|
||||
/* 802AF2A0-802AF314 .text setSeDistancePan__11JAIZelSoundFUc */
|
||||
@@ -82,7 +82,7 @@ void JAIZelSound::setSeDistancePan(u8 r31) {
|
||||
if ((getSwBit() & 0x00800000) && field_0x18 > 1) {
|
||||
return;
|
||||
}
|
||||
setSeInterPan(4, setDistancePanCommon(), r31, 0);
|
||||
setSeInterPan(SOUNDPARAM_Distance, setDistancePanCommon(), r31, 0);
|
||||
}
|
||||
|
||||
/* 802AF314-802AF458 .text setSeDistanceDolby__11JAIZelSoundFUc */
|
||||
@@ -110,5 +110,5 @@ void JAIZelSound::setSeDistanceDolby(u8 r30) {
|
||||
}
|
||||
|
||||
u8 r0 = f0;
|
||||
setSeInterDolby(4, r0 / 127.0f, r30, 0);
|
||||
setSeInterDolby(SOUNDPARAM_Distance, r0 / 127.0f, r30, 0);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ void JAInter::BankWave::setWaveScene() {
|
||||
|
||||
/* 802914D4-80291578 .text loadSecondStayWave__Q27JAInter8BankWaveFv */
|
||||
void JAInter::BankWave::loadSecondStayWave() {
|
||||
if (SeMgr::seHandle->field_0x5 == 3 && flags.flag2 == 0 && initOnCodeWs) {
|
||||
if (SeMgr::seHandle->mState == SOUNDSTATE_Ready && flags.flag2 == 0 && initOnCodeWs) {
|
||||
for (int i = 0; initOnCodeWs[i].field_0x0; i++) {
|
||||
if (initOnCodeWs[i].field_0x8 == 1) {
|
||||
loadGroupWave(i, 0);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
/* 8029859C-802985C4 .text __ct__8JAISoundFv */
|
||||
JAISound::JAISound() {
|
||||
field_0x3c = NULL;
|
||||
field_0x5 = 0;
|
||||
mState = SOUNDSTATE_Inactive;
|
||||
field_0x6 = 10;
|
||||
field_0x24 = NULL;
|
||||
}
|
||||
@@ -51,7 +51,7 @@ void JAISound::clearMainSoundPPointer() {
|
||||
/* 80298648-80298688 .text start__8JAISoundFUl */
|
||||
void JAISound::start(u32 param_1) {
|
||||
setPrepareFlag(0);
|
||||
field_0x14 = param_1;
|
||||
mFadeCounter = param_1;
|
||||
}
|
||||
|
||||
/* 80298688-802986B8 .text stop__8JAISoundFUl */
|
||||
@@ -380,7 +380,7 @@ void JAISound::setSeqPortData(u8 line_, u16 param_2, u32 param_3) {
|
||||
if (!getSeqParameter()) {
|
||||
return;
|
||||
}
|
||||
if (getSeqParameter()->field_0x10[line_].mCurrentValue == 0.0f && field_0x5 >= 3) {
|
||||
if (getSeqParameter()->field_0x10[line_].mCurrentValue == 0.0f && mState >= SOUNDSTATE_Ready) {
|
||||
u16 local_38;
|
||||
JASystem::TTrack* track = getSeqParameter()->getRootTrackPointer();
|
||||
track->readPortApp(line_ << 16, &local_38);
|
||||
@@ -403,7 +403,7 @@ void JAISound::setTrackVolume(u8 line_, f32 param_2, u32 param_3) {
|
||||
if (!getSeqParameter()) {
|
||||
return;
|
||||
}
|
||||
if (field_0x5 >= 4 && (getSeqParameter()->field_0x135c->field_0x4 & 1 << line_) == 0) {
|
||||
if (mState >= SOUNDSTATE_Playing && (getSeqParameter()->field_0x135c->field_0x4 & 1 << line_) == 0) {
|
||||
return;
|
||||
}
|
||||
if (param_3 == 0) {
|
||||
@@ -544,7 +544,7 @@ void JAISound::setPauseMode(u8 param_1, u8 param_2) {
|
||||
if (param_1 != 0) {
|
||||
switch (param_1) {
|
||||
case 1:
|
||||
setSeqInterVolume(11, param_2 / 127.0f, 1);
|
||||
setSeqInterVolume(SOUNDPARAM_Pause, param_2 / 127.0f, 1);
|
||||
break;
|
||||
case 2:
|
||||
JASystem::TTrack* track = getSeqParameter()->getRootTrackPointer();
|
||||
@@ -555,7 +555,7 @@ void JAISound::setPauseMode(u8 param_1, u8 param_2) {
|
||||
getSeqParameter();
|
||||
switch (getSeqParameter()->field_0x1261) {
|
||||
case 1:
|
||||
setSeqInterVolume(11, 1.0f, 1);
|
||||
setSeqInterVolume(SOUNDPARAM_Pause, 1.0f, 1);
|
||||
break;
|
||||
case 2:
|
||||
JASystem::TTrack* track = getSeqParameter()->getRootTrackPointer();
|
||||
@@ -572,23 +572,23 @@ void JAISound::setPauseMode(u8 param_1, u8 param_2) {
|
||||
if (param_1 != 0) {
|
||||
switch (param_1) {
|
||||
case 1:
|
||||
setStreamInterVolume(11, param_2 / 127.0f, 1);
|
||||
setStreamInterVolume(SOUNDPARAM_Pause, param_2 / 127.0f, 1);
|
||||
break;
|
||||
case 2:
|
||||
JAInter::StreamLib::setPauseFlag(2);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (getStreamParameter()->field_0x0) {
|
||||
switch (getStreamParameter()->mPauseMode) {
|
||||
case 1:
|
||||
setStreamInterVolume(11, 1.0f, 1);
|
||||
setStreamInterVolume(SOUNDPARAM_Pause, 1.0f, 1);
|
||||
break;
|
||||
case 2:
|
||||
JAInter::StreamLib::clearPauseFlag(2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
getStreamParameter()->field_0x0 = param_1;
|
||||
getStreamParameter()->mPauseMode = param_1;
|
||||
break;
|
||||
default:
|
||||
JUT_ASSERT_MSG(1443, 0, "JAISound::setPauseMode サウンドカテゴリービットが異常です。\n");
|
||||
@@ -647,7 +647,7 @@ int JAInter::MoveParaSet::set(f32, u32) {
|
||||
}
|
||||
|
||||
/* 8029B07C-8029B0C4 .text move__Q27JAInter11MoveParaSetFv */
|
||||
bool JAInter::MoveParaSet::move() {
|
||||
BOOL JAInter::MoveParaSet::move() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -671,20 +671,20 @@ void JAInter::LinkSound::init(JAISound* param_1, u32 param_2) {
|
||||
field_0x4 = NULL;
|
||||
Buffer[0x00].field_0x30 = NULL;
|
||||
Buffer[0x00].field_0x34 = Buffer + 1;
|
||||
Buffer[0x00].field_0x5 = 0;
|
||||
Buffer[0x00].mState = SOUNDSTATE_Inactive;
|
||||
Buffer[0x00].mPositionInfo = new (JAIBasic::getCurrentJAIHeap(), 0x20) JAISound::PositionInfo_t[JAIGlobalParameter::getParamAudioCameraMax()];
|
||||
JUT_ASSERT_MSG(2084, Buffer[0x00].mPositionInfo, "LinkSound::initLinkSound Cannot Alloc Heap!!\n");
|
||||
int i;
|
||||
for (i = 1; i < param_2 - 1; i++) {
|
||||
Buffer[i].field_0x30 = Buffer + (i - 1);
|
||||
Buffer[i].field_0x34 = Buffer + (i + 1);
|
||||
Buffer[i].field_0x5 = 0;
|
||||
Buffer[i].mState = SOUNDSTATE_Inactive;
|
||||
Buffer[i].mPositionInfo = new (JAIBasic::getCurrentJAIHeap(), 0x20) JAISound::PositionInfo_t[JAIGlobalParameter::getParamAudioCameraMax()];
|
||||
JUT_ASSERT_MSG(2092, Buffer[i].mPositionInfo, "LinkSound::initLinkSound Cannot Alloc Heap!!\n");
|
||||
}
|
||||
Buffer[i].field_0x30 = Buffer + (i - 1);
|
||||
Buffer[i].field_0x34 = NULL;
|
||||
Buffer[i].field_0x5 = 0;
|
||||
Buffer[i].mState = SOUNDSTATE_Inactive;
|
||||
Buffer[i].mPositionInfo = new (JAIBasic::getCurrentJAIHeap(), 0x20) JAISound::PositionInfo_t[JAIGlobalParameter::getParamAudioCameraMax()];
|
||||
JUT_ASSERT_MSG(2099, Buffer[i].mPositionInfo, "LinkSound::initLinkSound Cannot Alloc Heap!!\n");
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include "string.h"
|
||||
#include "dolphin/os/OS.h"
|
||||
|
||||
const u32 sChannelMax = 2;
|
||||
|
||||
#define JUT_ASSERT_3(LINE, COND) \
|
||||
if (!(COND)) { \
|
||||
if (!(COND)) { \
|
||||
@@ -114,8 +116,8 @@ void JAInter::StreamMgr::init() {
|
||||
tmp->field_0x4 = 1.0f;
|
||||
tmp->field_0x8 = 1.0f;
|
||||
tmp->field_0xc = 0.5f;
|
||||
tmp->field_0x10 = 0;
|
||||
tmp->mpSound = 0;
|
||||
tmp->mActiveTrackFlag = SOUNDACTIVE_Unk0;
|
||||
tmp->mpSound = NULL;
|
||||
}
|
||||
|
||||
/* 8029BEB4-8029C04C .text storeStreamBuffer__Q27JAInter9StreamMgrFPP8JAISoundPQ27JAInter5ActorUlUlUcPv */
|
||||
@@ -129,20 +131,20 @@ void JAInter::StreamMgr::storeStreamBuffer(JAISound** param_1, JAInter::Actor* p
|
||||
}
|
||||
JAISound* sound = streamControl.getSound();
|
||||
StreamParameter* para = sound->getStreamParameter();
|
||||
para->field_0x0 = 0;
|
||||
para->mPauseMode = 0;
|
||||
para->field_0x4 = 0;
|
||||
para->field_0x8 = 0;
|
||||
para->field_0xc = 0;
|
||||
para->field_0x10 = 0;
|
||||
para->mVolumeFlags = 0;
|
||||
para->mPitchFlags = 0;
|
||||
para->mPanFlags = 0;
|
||||
for (u32 i = 0; i < 20; i++) {
|
||||
MoveParaSet* movePara = ¶->field_0x14[i];
|
||||
MoveParaSet* movePara = ¶->mVolumes[i];
|
||||
movePara->init(1.0f);
|
||||
}
|
||||
for (u32 i = 0; i < JAIGlobalParameter::getParamStreamParameterLines(); i++) {
|
||||
para->pitch[i].init(1.0f);
|
||||
para->pan[i].init(0.5f);
|
||||
}
|
||||
sound->field_0x5 = 1;
|
||||
sound->mState = SOUNDSTATE_Stored;
|
||||
sound->field_0x6 = 10;
|
||||
streamUpdate->field_0x2 = 0;
|
||||
sound->initParameter(param_1, param_2, param_3, param_4, param_5, param_6);
|
||||
@@ -150,17 +152,17 @@ void JAInter::StreamMgr::storeStreamBuffer(JAISound** param_1, JAInter::Actor* p
|
||||
|
||||
/* 8029C04C-8029C0F0 .text releaseStreamBuffer__Q27JAInter9StreamMgrFP8JAISoundUl */
|
||||
void JAInter::StreamMgr::releaseStreamBuffer(JAISound* param_1, u32 param_2) {
|
||||
if (param_2 == 0 || param_1->field_0x5 < 4) {
|
||||
if (param_2 == 0 || param_1->mState < SOUNDSTATE_Playing) {
|
||||
StreamLib::stop();
|
||||
param_1->field_0x5 = 0;
|
||||
streamUpdate->mpSound = 0;
|
||||
param_1->mState = SOUNDSTATE_Inactive;
|
||||
streamUpdate->mpSound = NULL;
|
||||
param_1->clearMainSoundPPointer();
|
||||
streamControl.releaseSound(param_1);
|
||||
JASystem::Dvd::unpauseDvdT();
|
||||
} else {
|
||||
if (param_1->getStreamParameter()->field_0x15c) {
|
||||
param_1->getStreamParameter()->field_0x15c->field_0x10 |= 2;
|
||||
param_1->field_0x14 = param_2;
|
||||
if (param_1->getStreamParameter()->mUpdateData) {
|
||||
param_1->getStreamParameter()->mUpdateData->mActiveTrackFlag |= SOUNDACTIVE_DoFadeout;
|
||||
param_1->mFadeCounter = param_2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -178,19 +180,19 @@ void JAInter::StreamMgr::processGFrameStream() {
|
||||
/* 8029C128-8029C1D8 .text checkEntriedStream__Q27JAInter9StreamMgrFv */
|
||||
void JAInter::StreamMgr::checkEntriedStream() {
|
||||
for (JAISound* sound = streamControl.field_0x4; sound; sound = sound->field_0x34) {
|
||||
if (sound->field_0x5 != 1 || StreamLib::getPlayingFlag() == 1) {
|
||||
if (sound->mState != SOUNDSTATE_Stored || StreamLib::getPlayingFlag() == 1) {
|
||||
continue;
|
||||
}
|
||||
sound->field_0x5 = 2;
|
||||
sound->getStreamParameter()->field_0x15c = streamUpdate;
|
||||
sound->mState = SOUNDSTATE_Loaded;
|
||||
sound->getStreamParameter()->mUpdateData = streamUpdate;
|
||||
streamUpdate_t* tmp = streamUpdate;
|
||||
tmp->field_0x0 = 0;
|
||||
tmp->field_0x1 = 0;
|
||||
tmp->field_0x4 = 1.0f;
|
||||
tmp->field_0x8 = 1.0f;
|
||||
tmp->field_0xc = 0.5f;
|
||||
tmp->field_0x10 = 0;
|
||||
tmp->mpSound = 0;
|
||||
tmp->mActiveTrackFlag = SOUNDACTIVE_Unk0;
|
||||
tmp->mpSound = NULL;
|
||||
streamUpdate->mpSound = sound;
|
||||
}
|
||||
}
|
||||
@@ -201,14 +203,14 @@ void JAInter::StreamMgr::checkWaitStream() {
|
||||
if (!sound) {
|
||||
return;
|
||||
}
|
||||
if (sound->field_0x5 != 2) {
|
||||
if (sound->mState != SOUNDSTATE_Loaded) {
|
||||
return;
|
||||
}
|
||||
char buffer[64];
|
||||
strcpy(buffer, JAIGlobalParameter::getParamStreamPath());
|
||||
strcat(buffer, streamList[JAIBasic::getInterface()->getSoundOffsetNumberFromID(sound->getID())].field_0x10);
|
||||
JAIBasic::getInterface()->setSeExtParameter(sound);
|
||||
sound->field_0x5 = 3;
|
||||
sound->mState = SOUNDSTATE_Ready;
|
||||
checkPlayingStream();
|
||||
StreamLib::start(buffer, sound->getStreamParameter()->field_0x4, streamList[sound->getID() & 0x3FF].field_0x20);
|
||||
StreamLib::setPrepareFlag(1);
|
||||
@@ -220,16 +222,16 @@ void JAInter::StreamMgr::checkRequestStream() {
|
||||
if (!sound) {
|
||||
return;
|
||||
}
|
||||
if (sound->field_0x5 != 3) {
|
||||
if (sound->mState != SOUNDSTATE_Ready) {
|
||||
return;
|
||||
}
|
||||
if (streamUpdate->field_0x2) {
|
||||
return;
|
||||
}
|
||||
sound->field_0x5 = 4;
|
||||
if (sound->field_0x14 > 1) {
|
||||
sound->setStreamInterVolume(7, 0.0, 0);
|
||||
sound->setStreamInterVolume(7, 1.0, sound->field_0x14);
|
||||
sound->mState = SOUNDSTATE_Playing;
|
||||
if (sound->mFadeCounter > 1) {
|
||||
sound->setStreamInterVolume(SOUNDPARAM_Fadeout, 0.0, 0);
|
||||
sound->setStreamInterVolume(SOUNDPARAM_Fadeout, 1.0, sound->mFadeCounter);
|
||||
StreamLib::setVolume(0.0);
|
||||
}
|
||||
StreamLib::setPrepareFlag(0);
|
||||
@@ -237,7 +239,129 @@ void JAInter::StreamMgr::checkRequestStream() {
|
||||
|
||||
/* 8029C344-8029C730 .text checkPlayingStream__Q27JAInter9StreamMgrFv */
|
||||
void JAInter::StreamMgr::checkPlayingStream() {
|
||||
/* Nonmatching */
|
||||
JAISound* streamSound = getUpdateInfo()->mpSound;
|
||||
if (streamSound == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
streamUpdate_t* data = getUpdateInfo();
|
||||
if (streamSound->mState >= SOUNDSTATE_Playing) {
|
||||
streamSound->getStreamParameter();
|
||||
if (StreamLib::getPlayingFlag() == 2) {
|
||||
streamSound->mState = SOUNDSTATE_Inactive;
|
||||
if (streamSound->getStreamParameter()->mUpdateData) {
|
||||
streamSound->getStreamParameter()->mUpdateData->mpSound = NULL;
|
||||
}
|
||||
streamSound->clearMainSoundPPointer();
|
||||
streamControl.releaseSound(streamSound);
|
||||
return;
|
||||
}
|
||||
|
||||
if (streamSound->field_0x6 != 0) {
|
||||
streamSound->field_0x6--;
|
||||
}
|
||||
|
||||
if ((data->mActiveTrackFlag & SOUNDACTIVE_DoFadeout) != 0) {
|
||||
streamSound->setStreamInterVolume(SOUNDPARAM_Fadeout, 0.0f, streamSound->mFadeCounter);
|
||||
streamSound->mState = SOUNDSTATE_Fadeout;
|
||||
data->mActiveTrackFlag ^= SOUNDACTIVE_DoFadeout;
|
||||
}
|
||||
|
||||
if (streamSound->mState == SOUNDSTATE_Fadeout &&
|
||||
(streamSound->getStreamInterVolume(SOUNDPARAM_Fadeout) == 0.0f || streamSound->mFadeCounter == 0) &&
|
||||
streamSound->field_0x6 == 0
|
||||
) {
|
||||
StreamLib::stop();
|
||||
streamSound->mState = SOUNDSTATE_Inactive;
|
||||
if (streamSound->getStreamParameter()->mUpdateData != NULL) {
|
||||
streamSound->getStreamParameter()->mUpdateData->mpSound = NULL;
|
||||
}
|
||||
streamSound->clearMainSoundPPointer();
|
||||
streamControl.releaseSound(streamSound);
|
||||
}
|
||||
}
|
||||
if (streamSound->mState < SOUNDSTATE_Ready) {
|
||||
return;
|
||||
}
|
||||
|
||||
StreamParameter* param = streamSound->getStreamParameter();
|
||||
if (data->mActiveTrackFlag & SOUNDACTIVE_Volume) {
|
||||
f32 volFactor = 1.0f;
|
||||
for (u8 i = 0; i < 20; i++) {
|
||||
MoveParaSet* vol = ¶m->mVolumes[i];
|
||||
if (param->mVolumeFlags & (1 << i)) {
|
||||
if (vol->move() == FALSE) {
|
||||
param->mVolumeFlags ^= (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
volFactor *= vol->mCurrentValue;
|
||||
}
|
||||
|
||||
if (streamUpdate->field_0x4 != volFactor) {
|
||||
StreamLib::setVolume(volFactor);
|
||||
streamUpdate->field_0x4 = volFactor;
|
||||
}
|
||||
|
||||
if (param->mVolumeFlags == 0) {
|
||||
data->mActiveTrackFlag ^= SOUNDACTIVE_Volume;
|
||||
}
|
||||
}
|
||||
|
||||
if (data->mActiveTrackFlag & SOUNDACTIVE_Pitch) {
|
||||
f32 pitchFactor = 1.0f;
|
||||
for (u8 i = 0; i < 7; i++) {
|
||||
MoveParaSet* pitch = ¶m->pitch[i];
|
||||
if (param->mPitchFlags & (1 << i)) {
|
||||
if (pitch->move() == FALSE) {
|
||||
param->mPitchFlags ^= (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
pitchFactor *= pitch->mCurrentValue;
|
||||
}
|
||||
|
||||
if (streamUpdate->field_0x8 != pitchFactor) {
|
||||
StreamLib::setPitch(pitchFactor);
|
||||
streamUpdate->field_0x8 = pitchFactor;
|
||||
}
|
||||
|
||||
if (param->mPitchFlags == 0) {
|
||||
data->mActiveTrackFlag ^= SOUNDACTIVE_Pitch;
|
||||
}
|
||||
}
|
||||
|
||||
if (data->mActiveTrackFlag & SOUNDACTIVE_Pan) {
|
||||
f32 panFactor = 0.0f;
|
||||
for (u8 i = 0; i < 7; i++) {
|
||||
MoveParaSet* pan = ¶m->pan[i];
|
||||
if (param->mPanFlags & (1 << i)) {
|
||||
if (pan->move() == FALSE) {
|
||||
param->mPanFlags ^= (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
panFactor += (pan->mCurrentValue - 0.5f);
|
||||
}
|
||||
|
||||
panFactor += 0.5f;
|
||||
if (panFactor > 1.0f) {
|
||||
panFactor = 1.0f;
|
||||
} else if (panFactor < 0.0f) {
|
||||
panFactor = 0.0f;
|
||||
}
|
||||
|
||||
if (streamUpdate->field_0xc != panFactor) {
|
||||
StreamLib::setPan(panFactor);
|
||||
getUpdateInfo()->field_0xc = panFactor;
|
||||
}
|
||||
|
||||
if (param->mPanFlags == 0) {
|
||||
data->mActiveTrackFlag ^= SOUNDACTIVE_Pan;
|
||||
}
|
||||
}
|
||||
|
||||
streamSound->field_0x18++;
|
||||
}
|
||||
|
||||
/* 8029C730-8029C858 .text Play_DirectPCM__Q27JAInter9StreamLibFPQ28JASystem11TDSPChannelPsUsUlsUs */
|
||||
|
||||
Reference in New Issue
Block a user