mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-05 09:33:47 -04:00
8ce8d2f541
* Add JSystem PCH * Fix build issues, remove weak order fakematches, and fix functionvalue weak func order
167 lines
7.5 KiB
C++
167 lines
7.5 KiB
C++
//
|
|
// Generated by dtk
|
|
// Translation Unit: JAISystemInterface.cpp
|
|
//
|
|
|
|
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
|
|
|
#include "JSystem/JAudio/JAISystemInterface.h"
|
|
#include "JSystem/JAudio/JASTrack.h"
|
|
#include "JSystem/JAudio/JAISequenceMgr.h"
|
|
#include "JSystem/JAudio/JAIGlobalParameter.h"
|
|
#include "dolphin/dvd/dvd.h"
|
|
|
|
JASystem::Kernel::TPortCmd JAInter::SystemInterface::systemPortCmd;
|
|
|
|
/* 8029E188-8029E1B4 .text checkFileExsistence__Q27JAInter15SystemInterfaceFPc */
|
|
BOOL JAInter::SystemInterface::checkFileExsistence(char* param_1) {
|
|
if (DVDConvertPathToEntrynum(param_1) != -1)
|
|
return TRUE;
|
|
else
|
|
return FALSE;
|
|
}
|
|
|
|
/* 8029E1B4-8029E2A0 .text checkSeqActiveFlag__Q27JAInter15SystemInterfaceFPQ28JASystem6TTrack */
|
|
int JAInter::SystemInterface::checkSeqActiveFlag(JASystem::TTrack* param_1) {
|
|
if (param_1 && param_1->field_0x37e) {
|
|
if (param_1->mChildren[0] || param_1->mChildren[1] || param_1->mChildren[2] || param_1->mChildren[3] ||
|
|
param_1->mChildren[4] || param_1->mChildren[5] || param_1->mChildren[6] || param_1->mChildren[7] ||
|
|
param_1->mChildren[8] || param_1->mChildren[9] || param_1->mChildren[10] || param_1->mChildren[11] ||
|
|
param_1->mChildren[12] || param_1->mChildren[13] || param_1->mChildren[14] || param_1->mChildren[15]
|
|
) {
|
|
return param_1->field_0x37e;
|
|
}
|
|
return 0;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 8029E2A0-8029E478 .text trackToSeqp__Q27JAInter15SystemInterfaceFP8JAISoundUc */
|
|
JASystem::TTrack* JAInter::SystemInterface::trackToSeqp(JAISound* seq, u8 trackNo) {
|
|
JASystem::TTrack* result = NULL;
|
|
if (!IsJAISoundIDInUse(seq->getID())) {
|
|
JASystem::TTrack* rootTrack = seq->getSeqParameter()->getRootTrackPointer();
|
|
JASystem::TTrack* childTrack = rootTrack->getChild(trackNo >> 4);
|
|
if (childTrack != NULL) {
|
|
result = childTrack->getChild(trackNo & 0xF);
|
|
}
|
|
} else {
|
|
result = seq->getSeqParameter()->getRootTrackPointer()->getChild(trackNo & 0xF);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/* 8029E478-8029E494 .text setSeqPortargsF32__Q27JAInter15SystemInterfaceFPQ27JAInter13SeqUpdateDataUlUcf */
|
|
void JAInter::SystemInterface::setSeqPortargsF32(JAInter::SeqUpdateData* updateData, u32 playerParameterIndex, u8 portArgIndex, f32 value) {
|
|
updateData->systemTrackParameter[playerParameterIndex].mPortArgs.asArray[portArgIndex].f32 = value;
|
|
}
|
|
|
|
/* 8029E494-8029E4B0 .text setSeqPortargsU32__Q27JAInter15SystemInterfaceFPQ27JAInter13SeqUpdateDataUlUcUl */
|
|
void JAInter::SystemInterface::setSeqPortargsU32(JAInter::SeqUpdateData* updateData, u32 playerParameterIndex, u8 portArgIndex, u32 value) {
|
|
updateData->systemTrackParameter[playerParameterIndex].mPortArgs.asArray[portArgIndex].u32 = value;
|
|
}
|
|
|
|
/* 8029E4B0-8029E518 .text rootInit__Q27JAInter15SystemInterfaceFPQ27JAInter13SeqUpdateData */
|
|
void JAInter::SystemInterface::rootInit(JAInter::SeqUpdateData* updateData) {
|
|
JAISound* r30 = updateData->field_0x48;
|
|
JASystem::TTrack* track = r30->getSeqParameter()->getRootTrackPointer();
|
|
outerInit(updateData, track, JAIGlobalParameter::getParamSeqTrackMax(), 0xFFFF, 0);
|
|
r30->getSeqParameter();
|
|
}
|
|
|
|
/* 8029E518-8029E5B4 .text trackInit__Q27JAInter15SystemInterfaceFPQ27JAInter13SeqUpdateData */
|
|
void JAInter::SystemInterface::trackInit(JAInter::SeqUpdateData* updateData) {
|
|
JAISound* seq = updateData->field_0x48;
|
|
u32 max = 16;
|
|
if (!IsJAISoundIDInUse(seq->getID())) {
|
|
max = JAIGlobalParameter::getParamSeqTrackMax();
|
|
}
|
|
for (u32 i = 0; i < max; i++) {
|
|
if ((updateData->field_0x4 & 1 << i) == 0) {
|
|
outerInit(updateData, trackToSeqp(seq, i), i, 0xFFFF, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 8029E5B4-8029E7B8 .text outerInit__Q27JAInter15SystemInterfaceFPQ27JAInter13SeqUpdateDataPvUlUsUc */
|
|
void JAInter::SystemInterface::outerInit(JAInter::SeqUpdateData* updateData, void* track, u32 trackNo, u16 paramFlags, u8 p5) {
|
|
if (track == NULL) {
|
|
return;
|
|
}
|
|
JASystem::Kernel::TPortArgs* portArgs = &updateData->systemTrackParameter[trackNo].mPortArgs.asStruct;
|
|
JASystem::TTrack* seqP = (JASystem::TTrack*)track;
|
|
updateData->systemTrackParameter[trackNo].mTrack = seqP;
|
|
portArgs->mTrack = (JASystem::TTrack*)track;
|
|
updateData->systemTrackParameter[trackNo].mCommand.setPortCmd(setSePortParameter, portArgs);
|
|
JASystem::TTrack::TOuterParam* outerParam = seqP->getOuterParam();
|
|
if (trackNo == JAIGlobalParameter::getParamSeqTrackMax()) {
|
|
portArgs->mTrackVolume = updateData->mSeqVolume;
|
|
portArgs->mTrackPitch = updateData->mSeqPitch;
|
|
portArgs->mTrackFxmix = updateData->mSeqFxmix;
|
|
portArgs->mTrackPan = updateData->mSeqPan;
|
|
portArgs->mTrackDolby = updateData->mSeqDolby;
|
|
portArgs->mTrackTempo = updateData->mSeqTempo;
|
|
portArgs->mFlags = 0xFF;
|
|
outerParam->onSwitch(OUTERPARAM_Tempo);
|
|
} else {
|
|
JAInter::SeqParameter* seqParam = updateData->field_0x48->getSeqParameter();
|
|
portArgs->mTrackVolume = seqParam->mTrackVolumes[trackNo].mCurrentValue;
|
|
portArgs->mTrackPitch = seqParam->mTrackPitches[trackNo].mCurrentValue;
|
|
portArgs->mTrackFxmix = seqParam->mTrackFxmixes[trackNo].mCurrentValue;
|
|
portArgs->mTrackPan = seqParam->mTrackPans[trackNo].mCurrentValue;
|
|
portArgs->mTrackDolby = seqParam->mTrackDolbys[trackNo].mCurrentValue;
|
|
portArgs->_20 = 0;
|
|
portArgs->mFlags = 0x7F;
|
|
seqP->muteTrack(seqParam->mMuteBits[trackNo].flag1);
|
|
}
|
|
|
|
outerParam->onSwitch(OUTERPARAM_Volume);
|
|
outerParam->onSwitch(OUTERPARAM_Pitch);
|
|
outerParam->onSwitch(OUTERPARAM_Fxmix);
|
|
outerParam->onSwitch(OUTERPARAM_Pan);
|
|
outerParam->onSwitch(OUTERPARAM_Dolby);
|
|
if (!(paramFlags & OUTERPARAM_Volume)) {
|
|
outerParam->setParam(OUTERPARAM_Volume, 0.0f);
|
|
}
|
|
if (!(paramFlags & OUTERPARAM_Pitch)) {
|
|
outerParam->setParam(OUTERPARAM_Pitch, 0.0f);
|
|
}
|
|
if (!(paramFlags & OUTERPARAM_Fxmix)) {
|
|
outerParam->setParam(OUTERPARAM_Fxmix, 0.0f);
|
|
}
|
|
if (!(paramFlags & OUTERPARAM_Pan)) {
|
|
outerParam->setParam(OUTERPARAM_Pan, 0.0f);
|
|
}
|
|
if (!(paramFlags & OUTERPARAM_Dolby)) {
|
|
outerParam->setParam(OUTERPARAM_Dolby, 0.0f);
|
|
}
|
|
updateData->systemTrackParameter[trackNo].mCommand.addPortCmdOnce();
|
|
}
|
|
|
|
/* 8029E7B8-8029E820 .text setPortParameter__Q27JAInter15SystemInterfaceFPQ38JASystem6Kernel9TPortArgsPQ28JASystem6TTrackUlUl */
|
|
void JAInter::SystemInterface::setPortParameter(JASystem::Kernel::TPortArgs* args, JASystem::TTrack* seqP, u32 r5, u32 paramFlag) {
|
|
u32 r31 = 1 << (r5 - 2);
|
|
if ((args->mFlags & r31) != 0) {
|
|
f32 f1 = ((f32*)&args->mTrackVolume)[r5 - 2];
|
|
seqP->getOuterParam()->setParam(paramFlag, f1);
|
|
args->mFlags = args->mFlags ^ r31;
|
|
}
|
|
}
|
|
|
|
/* 8029E820-8029E8F4 .text setSePortParameter__Q27JAInter15SystemInterfaceFPQ38JASystem6Kernel9TPortArgs */
|
|
void JAInter::SystemInterface::setSePortParameter(JASystem::Kernel::TPortArgs* args) {
|
|
JASystem::TTrack* track = args->mTrack;
|
|
if (track == NULL) {
|
|
return;
|
|
}
|
|
setPortParameter(args, track, 0x02, OUTERPARAM_Volume);
|
|
setPortParameter(args, track, 0x03, OUTERPARAM_Pitch);
|
|
setPortParameter(args, track, 0x04, OUTERPARAM_Pan);
|
|
setPortParameter(args, track, 0x05, OUTERPARAM_Fxmix);
|
|
setPortParameter(args, track, 0x09, OUTERPARAM_Tempo);
|
|
setPortParameter(args, track, 0x06, OUTERPARAM_Dolby);
|
|
if ((args->mFlags & 0x40) != 0 && args->_20 != 0) {
|
|
track->setInterrupt(5);
|
|
}
|
|
}
|