tp/libs/JSystem/JAudio2/JASTrack.cpp

1466 lines
46 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: JASTrack
//
#include "JSystem/JAudio2/JASTrack.h"
#include "JSystem/JAudio2/JASAiCtrl.h"
#include "JSystem/JAudio2/JASBank.h"
#include "JSystem/JAudio2/JASCriticalSection.h"
#include "JSystem/JAudio2/JASDSPInterface.h"
#include "JSystem/JAudio2/JASDriverIF.h"
#include "dol2asm.h"
//
// Types:
//
/* JASMemPool_MultiThreaded<JASTrack> */
struct JASMemPool_MultiThreaded__template0 {
/* 802932E0 */ void func_802932E0(void* _this);
};
/* JASMemPool_MultiThreaded<JASTrack::TChannelMgr> */
struct JASMemPool_MultiThreaded__template1 {
/* 80293334 */ void func_80293334(void* _this);
};
struct JASBankTable__template0 {
/* 80293528 */ void func_80293528(void* _this, u32) /* const */;
};
//
// Forward References:
//
extern "C" void __ct__8JASTrackFv();
extern "C" void __dt__8JASTrackFv();
extern "C" void setChannelMgrCount__8JASTrackFUl();
extern "C" void init__8JASTrackFv();
extern "C" void initTimed__8JASTrackFv();
extern "C" void inherit__8JASTrackFRC8JASTrack();
extern "C" void assignExtBuffer__8JASTrackFUlP14JASSoundParams();
extern "C" void setSeqData__8JASTrackFPvUl();
extern "C" void startSeq__8JASTrackFv();
extern "C" void stopSeq__8JASTrackFv();
extern "C" void start__8JASTrackFv();
extern "C" void close__8JASTrackFv();
extern "C" void connectChild__8JASTrackFUlP8JASTrack();
extern "C" void closeChild__8JASTrackFUl();
extern "C" void openChild__8JASTrackFUl();
extern "C" void connectBus__8JASTrackFii();
extern "C" void setLatestKey__8JASTrackFUc();
extern "C" void channelStart__8JASTrackFPQ28JASTrack11TChannelMgrUlUlUl();
extern "C" void noteOn__8JASTrackFUlUlUl();
extern "C" void gateOn__8JASTrackFUlUlfUl();
extern "C" void noteOff__8JASTrackFUlUs();
extern "C" void checkNoteStop__8JASTrackCFUl();
extern "C" void overwriteOsc__8JASTrackFP10JASChannel();
extern "C" void updateTimedParam__8JASTrackFv();
extern "C" void updateTrack__8JASTrackFf();
extern "C" void updateTempo__8JASTrackFv();
extern "C" void updateSeq__8JASTrackFbf();
extern "C" void seqTimeToDspTime__8JASTrackFf();
extern "C" void setParam__8JASTrackFUlfUl();
extern "C" void noteOffAll__8JASTrackFUs();
extern "C" void mute__8JASTrackFb();
extern "C" void setOscScale__8JASTrackFUlf();
extern "C" void setOscTable__8JASTrackFUlPCQ213JASOscillator5Point();
extern "C" void setOscAdsr__8JASTrackFssssUs();
extern "C" void setFIR__8JASTrackFPCs();
extern "C" void setIIR__8JASTrackFPCs();
extern "C" void readPortSelf__8JASTrackFUl();
extern "C" void writePortSelf__8JASTrackFUlUs();
extern "C" void writePort__8JASTrackFUlUs();
extern "C" void readPort__8JASTrackFUl();
extern "C" void setChannelPauseFlag__8JASTrackFb();
extern "C" void pause__8JASTrackFb();
extern "C" void getTransposeTotal__8JASTrackCFv();
extern "C" void isMute__8JASTrackCFv();
extern "C" void setTempo__8JASTrackFUs();
extern "C" void setTempoRate__8JASTrackFf();
extern "C" void setTimebase__8JASTrackFUs();
extern "C" void updateChannel__8JASTrackFP10JASChannelPQ26JASDsp8TChannel();
extern "C" void channelUpdateCallback__8JASTrackFUlP10JASChannelPQ26JASDsp8TChannelPv();
extern "C" void getRootTrack__8JASTrackFv();
extern "C" void tickProc__8JASTrackFv();
extern "C" void seqMain__8JASTrackFv();
extern "C" void cbSeqMain__Q28JASTrack5TListFPv();
extern "C" void append__Q28JASTrack5TListFP8JASTrack();
extern "C" void seqMain__Q28JASTrack5TListFv();
extern "C" void __ct__Q28JASTrack11TChannelMgrFP8JASTrack();
extern "C" void init__Q28JASTrack11TChannelMgrFv();
extern "C" void releaseAll__Q28JASTrack11TChannelMgrFv();
extern "C" void noteOff__Q28JASTrack11TChannelMgrFUlUs();
extern "C" void setPauseFlag__Q28JASTrack11TChannelMgrFb();
extern "C" void __ct__Q28JASTrack10MoveParam_Fv();
extern "C" void func_802932E0(void* _this);
extern "C" void func_80293334(void* _this);
extern "C" void __sinit_JASTrack_cpp();
extern "C" void __dt__Q28JASTrack5TListFv();
extern "C" void __dt__19JASDefaultBankTableFv();
extern "C" void func_80293528(void* _this, u32);
extern "C" u8 const sAdsTable__8JASTrack[24];
extern "C" u8 const sEnvOsc__8JASTrack[24];
extern "C" u8 const sPitchEnvOsc__8JASTrack[24];
extern "C" u8 sDefaultBankTable__8JASTrack[1036];
extern "C" u8 sTrackList__8JASTrack[16];
extern "C" u32 FILTER_MODE_IIR__6JASDsp;
//
// External References:
//
extern "C" void __ct__17JASGenericMemPoolFv();
extern "C" void __dt__17JASGenericMemPoolFv();
extern "C" void alloc__17JASGenericMemPoolFUl();
extern "C" void free__17JASGenericMemPoolFPvUl();
extern "C" void init__12JASTrackPortFv();
extern "C" void readImport__12JASTrackPortFUl();
extern "C" void readExport__12JASTrackPortFUl();
extern "C" void writeImport__12JASTrackPortFUlUs();
extern "C" void writeExport__12JASTrackPortFUlUs();
extern "C" void __ct__16JASRegisterParamFv();
extern "C" void init__16JASRegisterParamFv();
extern "C" void __ct__10JASSeqCtrlFv();
extern "C" void init__10JASSeqCtrlFv();
extern "C" void start__10JASSeqCtrlFPvUl();
extern "C" void tickProc__10JASSeqCtrlFP8JASTrack();
extern "C" void interrupt__10JASSeqCtrlFQ210JASSeqCtrl8IntrType();
extern "C" void noteOn__7JASBankFPC7JASBankiUcUcUsPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv();
extern "C" void release__10JASChannelFUs();
extern "C" void setOscInit__10JASChannelFUlPCQ213JASOscillator4Data();
extern "C" void setMixConfig__10JASChannelFUlUs();
extern "C" void setKeySweepTarget__10JASChannelFlUl();
extern "C" void free__10JASChannelFv();
extern "C" void getDacRate__9JASDriverFv();
extern "C" void getSubFrames__9JASDriverFv();
extern "C" void setFilterMode__Q26JASDsp8TChannelFUs();
extern "C" void setIIRFilterParam__Q26JASDsp8TChannelFPs();
extern "C" void setFIR8FilterParam__Q26JASDsp8TChannelFPs();
extern "C" void setDistFilter__Q26JASDsp8TChannelFs();
extern "C" void registerSubFrameCallback__9JASDriverFPFPv_lPv();
extern "C" void __dl__FPv();
extern "C" void __dt__Q27JGadget13TNodeLinkListFv();
extern "C" void
Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode();
extern "C" void Remove__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode();
extern "C" void __register_global_object();
extern "C" void __construct_array();
extern "C" void __cvt_fp2unsigned();
extern "C" void _savegpr_20();
extern "C" void _savegpr_23();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_20();
extern "C" void _restgpr_23();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern u8 struct_80451230[8];
extern "C" extern u8 __OSReport_disable;
//
// Declarations:
//
/* ############################################################################################## */
/* 804555A0-804555A4 003BA0 0004+00 6/6 0/0 0/0 .sdata2 @457 */
SECTION_SDATA2 static u8 lit_457[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 80291228-8029131C 28BB68 00F4+00 1/1 3/3 0/0 .text __ct__8JASTrackFv */
#ifdef NONMATCHING
JASTrack::JASTrack() : mDefaultChannelMgr(this), mChannelMgrCount(1), mStatus(0) {
mChannelMgrs[0] = &mDefaultChannelMgr;
for (int i = 1; i < 4; i++) {
mChannelMgrs[i] = NULL;
}
init();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JASTrack::JASTrack() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/__ct__8JASTrackFv.s"
}
#pragma pop
#endif
#ifndef NONMATCHING
/* ############################################################################################## */
/* 804316A8-804316B4 05E3C8 000C+00 1/1 0/0 0/0 .bss @431 */
static u8 lit_431[12];
#endif
/* 804316B4-80431AC0 05E3D4 040C+00 1/2 0/0 0/0 .bss sDefaultBankTable__8JASTrack */
#ifdef NONMATCHING
JASDefaultBankTable JASTrack::sDefaultBankTable;
#else
u8 JASTrack::sDefaultBankTable[1036];
#endif
#ifndef NONMATCHING
/* 80431AC0-80431ACC 05E7E0 000C+00 0/1 0/0 0/0 .bss @433 */
#pragma push
#pragma force_active on
static u8 lit_433[12];
#pragma pop
#endif
/* 80431ACC-80431ADC 05E7EC 0010+00 1/2 0/0 0/0 .bss sTrackList__8JASTrack */
#ifdef NONMATCHING
JASTrack::TList JASTrack::sTrackList;
#else
u8 JASTrack::sTrackList[16];
#endif
#ifndef NONMATCHING
/* 80431ADC-80431AE8 05E7FC 000C+00 3/3 0/0 0/0 .bss @470 */
static u8 lit_470[12];
/* 80431AE8-80431AF4 05E808 000C+00 2/2 0/0 0/0 .bss @476 */
static u8 lit_476[12];
/* 80431AF4-80431B04 05E814 0010+00 3/3 1/1 0/0 .bss
* memPool_$localstatic3$getMemPool___58JASPoolAllocObject_MultiThreaded<Q28JASTrack11TChannelMgr>Fv
*/
extern u8 data_80431AF4[16];
u8 data_80431AF4[16];
/* 80431B04-80431B18 05E824 0010+04 2/2 2/2 0/0 .bss
* memPool_$localstatic3$getMemPool___43JASPoolAllocObject_MultiThreaded<8JASTrack>Fv */
extern u8 data_80431B04[16 + 4 /* padding */];
u8 data_80431B04[16 + 4 /* padding */];
#endif
/* 8029131C-80291444 28BC5C 0128+00 4/4 4/4 0/0 .text __dt__8JASTrackFv */
#ifdef NONMATCHING
// matches with weak fns / literals
JASTrack::~JASTrack() {
for (int i = 1; i < 4; i++) {
delete mChannelMgrs[i];
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JASTrack::~JASTrack() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/__dt__8JASTrackFv.s"
}
#pragma pop
#endif
/* 80291444-802915D4 28BD84 0190+00 1/1 3/3 0/0 .text setChannelMgrCount__8JASTrackFUl */
#ifdef NONMATCHING
// matches with weak fns / literals
void JASTrack::setChannelMgrCount(u32 i_count) {
mChannelMgrCount = 1;
for (int i = 1; i < i_count; i++) {
if (mChannelMgrs[i] == NULL) {
mChannelMgrs[i] = new TChannelMgr(this);
if (mChannelMgrs[i] == NULL) {
return;
}
}
mChannelMgrCount++;
}
for (u32 i = mChannelMgrCount; i < 4; i++) {
if (mChannelMgrs[i] != NULL) {
delete mChannelMgrs[i];
mChannelMgrs[i] = NULL;
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::setChannelMgrCount(u32 param_0) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/setChannelMgrCount__8JASTrackFUl.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 8039AFD0-8039AFE8 027630 0018+00 1/1 0/0 0/0 .rodata sAdsTable__8JASTrack */
JASOscillator::Point const JASTrack::sAdsTable[4] = {
{0, 0, 0x7fff},
{0, 0, 0x7fff},
{0, 0, 0},
{0xe, 0, 0},
};
/* 8039AFE8-8039B000 027648 0018+00 1/2 0/0 0/0 .rodata sEnvOsc__8JASTrack */
JASOscillator::Data const JASTrack::sEnvOsc = {0, 1.0f, NULL, NULL, 1.0f, 0.0f};
/* 8039B000-8039B018 027660 0018+00 0/1 0/0 0/0 .rodata sPitchEnvOsc__8JASTrack */
JASOscillator::Data const JASTrack::sPitchEnvOsc = {1, 1.0f, NULL, NULL, 1.0f, 0.0f};
/* 804555A4-804555A8 003BA4 0004+00 9/9 0/0 0/0 .sdata2 @679 */
SECTION_SDATA2 static f32 lit_679 = 1.0f;
/* 802915D4-802918FC 28BF14 0328+00 2/2 1/1 0/0 .text init__8JASTrackFv */
#ifdef NONMATCHING
// matches with weak fns / literals
void JASTrack::init() {
mSeqCtrl.init();
mTrackPort.init();
initTimed();
mRegisterParam.init();
mOscParam[0] = sEnvOsc;
mOscParam[1] = sPitchEnvOsc;
for (int i = 0; i < 4; i++) {
mOscPoint[i] = sAdsTable[i];
}
mParent = NULL;
for (int i = 0; i < 16; i++) {
mChildren[i] = NULL;
}
mChannelMgrs[0]->init();
mChannelMgrCount = 1;
for (int i = 1; i < 4; i++) {
if (mChannelMgrs[i] != NULL) {
delete mChannelMgrs[i];
mChannelMgrs[i] = NULL;
}
}
mBankTable = &sDefaultBankTable;
field_0x1d8 = 1.0f;
field_0x1dc = 1.0f;
mVibDepth = 0.0f;
mVibPitch = 1.0f;
mTremDepth = 0.0f;
mTremPitch = 1.0f;
mVibDelay = 0;
mTremDelay = 0;
mPanPower = 1.0f;
mDirectRelease = 0;
mSkipSample = 0;
mTempo = 120;
mTimebase = 0x30;
mTempoRate = 1.0f;
updateTempo();
mTranspose = 0;
field_0x22b = 60;
mBankNumber = 0;
mProgNumber = 0xf0;
mBendSense = 0xc;
mNoteOnPrio = 0x40;
mReleasePrio = 0;
mGateRate = 100;
mMixConfig[0] = 0x150;
mMixConfig[1] = 0x210;
mMixConfig[2] = 0x352;
mMixConfig[3] = 0x412;
mMixConfig[4] = 0;
mMixConfig[5] = 0;
for (int i = 0; i < 8; i++) {
mFIR[i] = 0;
}
mFIR[0] = 0x7fff;
for (int i = 0; i < 8; i++) {
mIIR[i] = 0;
}
mIIR[0] = 0x7fff;
mFilterMode = 0;
mFlags.pause = false;
mFlags.mute = false;
mFlags.flag2 = true;
mFlags.flag5 = true;
mFlags.autoDelete = false;
mFlags.flag4 = false;
mFlags.flag6 = false;
mStatus = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::init() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/init__8JASTrackFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804555A8-804555AC 003BA8 0004+00 4/4 0/0 0/0 .sdata2 @690 */
SECTION_SDATA2 static f32 lit_690 = 0.5f;
/* 802918FC-8029194C 28C23C 0050+00 1/1 0/0 0/0 .text initTimed__8JASTrackFv */
#ifdef NONMATCHING
// matches with literals
void JASTrack::initTimed() {
mMoveParam[0].mValue = 1.0f;
mMoveParam[1].mValue = 0.0f;
mMoveParam[3].mValue = 0.5f;
mMoveParam[2].mValue = 0.0f;
mMoveParam[4].mValue = 0.0f;
mMoveParam[5].mValue = 0.0f;
for (int i = 0; i < 6; i++) {
mMoveParam[i].mCount = 0;
mMoveParam[i].mTarget = mMoveParam[i].mValue;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::initTimed() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/initTimed__8JASTrackFv.s"
}
#pragma pop
#endif
/* 8029194C-802919F4 28C28C 00A8+00 1/1 0/0 0/0 .text inherit__8JASTrackFRC8JASTrack */
void JASTrack::inherit(JASTrack const& i_parent) {
mFlags.flag2 = i_parent.mFlags.flag2;
mBankNumber = i_parent.mBankNumber;
mProgNumber = i_parent.mProgNumber;
mNoteOnPrio = i_parent.mNoteOnPrio;
mReleasePrio = i_parent.mReleasePrio;
mSkipSample = i_parent.mSkipSample;
for (int i = 0; i < 8; i++) {
mFIR[i] = i_parent.mFIR[i];
}
for (int i = 0; i < 8; i++) {
mIIR[i] = i_parent.mIIR[i];
}
mFilterMode = i_parent.mFilterMode;
for (int i = 0; i < 6; i++) {
mMixConfig[i] = i_parent.mMixConfig[i];
}
}
/* 802919F4-80291A08 28C334 0014+00 0/0 5/5 0/0 .text
* assignExtBuffer__8JASTrackFUlP14JASSoundParams */
void JASTrack::assignExtBuffer(u32 i_index, JASSoundParams* i_soundParams) {
mChannelMgrs[i_index]->mSoundParams = i_soundParams;
}
/* 80291A08-80291A28 28C348 0020+00 0/0 3/3 0/0 .text setSeqData__8JASTrackFPvUl */
void JASTrack::setSeqData(void* param_0, u32 param_1) {
mSeqCtrl.start(param_0, param_1);
}
/* 80291A28-80291A78 28C368 0050+00 0/0 2/2 0/0 .text startSeq__8JASTrackFv */
#ifdef NONMATCHING
// matches once static data declared correctly
void JASTrack::startSeq() {
JASCriticalSection critical_section;
sTrackList.append(this);
mStatus = 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::startSeq() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/startSeq__8JASTrackFv.s"
}
#pragma pop
#endif
/* 80291A78-80291ABC 28C3B8 0044+00 0/0 2/2 0/0 .text stopSeq__8JASTrackFv */
void JASTrack::stopSeq() {
JASCriticalSection critical_section;
mFlags.flag6 = 1;
}
/* 80291ABC-80291AC8 28C3FC 000C+00 0/0 1/1 0/0 .text start__8JASTrackFv */
void JASTrack::start() {
mStatus = 1;
}
/* 80291AC8-80291B8C 28C408 00C4+00 4/4 0/0 0/0 .text close__8JASTrackFv */
void JASTrack::close() {
for (int i = 0; i < 16; i++) {
JASTrack* child = mChildren[i];
if (child != NULL) {
child->close();
if (child->mFlags.autoDelete) {
delete child;
mChildren[i] = NULL;
}
}
}
for (u32 i = 0; i < mChannelMgrCount; i++) {
if (mChannelMgrs[i] != NULL) {
mChannelMgrs[i]->releaseAll();
}
}
mParent = NULL;
mStatus = 2;
}
/* 80291B8C-80291BB8 28C4CC 002C+00 1/1 1/1 0/0 .text connectChild__8JASTrackFUlP8JASTrack */
bool JASTrack::connectChild(u32 i_index, JASTrack* i_child) {
if (mChildren[i_index] != NULL) {
return false;
}
i_child->mParent = this;
mChildren[i_index] = i_child;
return true;
}
/* 80291BB8-80291C30 28C4F8 0078+00 0/0 1/1 0/0 .text closeChild__8JASTrackFUl */
#ifdef NONMATCHING
// matches with literals
void JASTrack::closeChild(u32 i_index) {
JASTrack* child = mChildren[i_index];
if (child != NULL) {
getRootTrack()->updateSeq(false, 1.0f);
child->close();
if (child->mFlags.autoDelete) {
delete child;
mChildren[i_index] = NULL;
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::closeChild(u32 param_0) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/closeChild__8JASTrackFUl.s"
}
#pragma pop
#endif
/* 80291C30-80291DAC 28C570 017C+00 0/0 2/2 0/0 .text openChild__8JASTrackFUl */
#ifdef NONMATCHING
// matches with weak fns / literals
JASTrack* JASTrack::openChild(u32 i_index) {
JASTrack* child = mChildren[i_index];
if (child != NULL) {
switch (child->mStatus) {
case 0:
break;
case 1:
getRootTrack()->updateSeq(false, 1.0f);
child->close();
// no break
case 2:
bool auto_delete = child->mFlags.autoDelete;
child->init();
child->mFlags.autoDelete = auto_delete;
mChildren[i_index] = NULL;
connectChild(i_index, child);
break;
}
} else {
child = new JASTrack();
if (child == NULL) {
return NULL;
}
child->mFlags.autoDelete = true;
connectChild(i_index, child);
}
child->setChannelMgrCount(mChannelMgrCount);
child->inherit(*this);
return child;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JASTrack* JASTrack::openChild(u32 param_0) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/openChild__8JASTrackFUl.s"
}
#pragma pop
#endif
/* 80291DAC-80291DBC 28C6EC 0010+00 0/0 1/1 0/0 .text connectBus__8JASTrackFii */
void JASTrack::connectBus(int param_0, int param_1) {
mMixConfig[param_0] = param_1;
}
/* 80291DBC-80291DF8 28C6FC 003C+00 0/0 1/1 0/0 .text setLatestKey__8JASTrackFUc */
void JASTrack::setLatestKey(u8 param_0) {
field_0x22b = param_0;
field_0x22b += getTransposeTotal();
}
/* 80291DF8-80291F38 28C738 0140+00 2/2 0/0 0/0 .text
* channelStart__8JASTrackFPQ28JASTrack11TChannelMgrUlUlUl */
#ifdef NONMATCHING
// matches with weak fns
JASChannel* JASTrack::channelStart(JASTrack::TChannelMgr* i_channelMgr, u32 param_1, u32 param_2,
u32 i_updateTimer) {
JASBank* bank = NULL;
if (mBankTable != NULL) {
bank = mBankTable->getBank(mBankNumber);
}
JASChannel* channel = JASBank::noteOn(bank, mProgNumber, param_1, param_2,
mNoteOnPrio | mReleasePrio << 8,
channelUpdateCallback, i_channelMgr);
if (channel == NULL) {
return NULL;
}
channel->setUpdateTimer(i_updateTimer);
channel->setSkipSamples(mSkipSample);
channel->setVibrateDelay(mVibDelay);
channel->setTremoloDelay(mTremDelay);
channel->setParams(i_channelMgr->mParams);
for (u32 i = 0; i < 6; i++) {
channel->setMixConfig(i, mMixConfig[i]);
}
overwriteOsc(channel);
if (mDirectRelease != 0) {
channel->setDirectRelease(mDirectRelease);
}
return channel;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JASChannel* JASTrack::channelStart(JASTrack::TChannelMgr* param_0, u32 param_1, u32 param_2,
u32 param_3) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/channelStart__8JASTrackFPQ28JASTrack11TChannelMgrUlUlUl.s"
}
#pragma pop
#endif
/* 80291F38-80292008 28C878 00D0+00 0/0 1/1 0/0 .text noteOn__8JASTrackFUlUlUl */
#ifdef NONMATCHING
// regalloc
int JASTrack::noteOn(u32 i_noteID, u32 param_1, u32 param_2) {
if (isMute()) {
return 0;
}
int ret = 1;
int var1 = param_1 + getTransposeTotal();
for (u32 i = 0; i < mChannelMgrCount; i++) {
if (mChannelMgrs[i] != NULL) {
mChannelMgrs[i]->noteOff(i_noteID, 0);
JASChannel* channel = channelStart(mChannelMgrs[i], var1, param_2, 0);
if (channel == NULL) {
ret = 0;
}
mChannelMgrs[i]->mChannels[i_noteID] = channel;
}
}
return ret;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int JASTrack::noteOn(u32 param_0, u32 param_1, u32 param_2) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/noteOn__8JASTrackFUlUlUl.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804555AC-804555B0 003BAC 0004+00 1/1 0/0 0/0 .sdata2 @952 */
SECTION_SDATA2 static f32 lit_952 = 100.0f;
/* 804555B0-804555B8 003BB0 0008+00 4/4 0/0 0/0 .sdata2 @954 */
SECTION_SDATA2 static f64 lit_954 = 4503599627370496.0 /* cast u32 to float */;
/* 80292008-80292198 28C948 0190+00 0/0 1/1 0/0 .text gateOn__8JASTrackFUlUlfUl */
#ifdef NONMATCHING
// regalloc
int JASTrack::gateOn(u32 param_0, u32 i_velocity, f32 i_time, u32 i_flags) {
int uvar5 = param_0 + getTransposeTotal();
if (mGateRate != 100) {
i_time *= mGateRate / 100.0f;
}
u32 uvar2 = seqTimeToDspTime(i_time);
u32 update_timer = (i_flags & 6) ? 0 : uvar2;
int uvar7;
if (i_flags & 1) {
uvar7 = field_0x22b;
} else {
uvar7 = uvar5;
}
for (u32 i = 0; i < mChannelMgrCount; i++) {
TChannelMgr* channel_mgr = mChannelMgrs[i];
if (channel_mgr != NULL) {
if (!mFlags.flag4) {
channel_mgr->noteOff(0, 0);
if (!isMute()) {
channel_mgr->mChannels[0] =
channelStart(channel_mgr, uvar7, i_velocity, update_timer);
}
} else {
JASChannel* channel = channel_mgr->mChannels[0];
if (channel != NULL) {
channel->mKey = uvar7 - channel->field_0xdc.field_0x4.field_0x01;
channel->mVelocity = i_velocity;
channel->mUpdateTimer = update_timer;
}
}
if ((i_flags & 1) && channel_mgr->mChannels[0] != NULL) {
channel_mgr->mChannels[0]->setKeySweepTarget(uvar5 - uvar7, uvar2);
}
}
}
mFlags.flag4 = (i_flags >> 1) & 1;
field_0x22b = uvar5;
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int JASTrack::gateOn(u32 param_0, u32 param_1, f32 param_2, u32 param_3) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/gateOn__8JASTrackFUlUlfUl.s"
}
#pragma pop
#endif
/* 80292198-80292220 28CAD8 0088+00 1/1 1/1 0/0 .text noteOff__8JASTrackFUlUs */
int JASTrack::noteOff(u32 i_noteID, u16 param_1) {
int ret = 1;
for (u32 i = 0; i < mChannelMgrCount; i++) {
if (mChannelMgrs[i] != NULL) {
if (!mChannelMgrs[i]->noteOff(i_noteID, param_1)) {
ret = 0;
}
}
}
return ret;
}
/* 80292220-8029226C 28CB60 004C+00 0/0 1/1 0/0 .text checkNoteStop__8JASTrackCFUl */
bool JASTrack::checkNoteStop(u32 i_noteID) const {
for (u32 i = 0; i < mChannelMgrCount; i++) {
if (mChannelMgrs[i] != NULL && mChannelMgrs[i]->mChannels[i_noteID] != NULL) {
return false;
}
}
return true;
}
/* 8029226C-802922D8 28CBAC 006C+00 1/1 0/0 0/0 .text overwriteOsc__8JASTrackFP10JASChannel */
void JASTrack::overwriteOsc(JASChannel* i_channel) {
for (u32 i = 0; i < 2; i++) {
if (mOscParam[i].mTable != NULL) {
i_channel->setOscInit(i, &mOscParam[i]);
}
}
}
/* 802922D8-80292348 28CC18 0070+00 1/1 0/0 0/0 .text updateTimedParam__8JASTrackFv */
#ifdef NONMATCHING
// matches with literals
void JASTrack::updateTimedParam() {
for (u32 i = 0; i < 6; i++) {
MoveParam_* param = &mMoveParam[i];
if (param->mCount != 0) {
param->mValue += (param->mTarget - param->mValue) / param->mCount;
param->mCount--;
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::updateTimedParam() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/updateTimedParam__8JASTrackFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804555B8-804555BC 003BB8 0004+00 1/1 0/0 0/0 .sdata2 @1032 */
SECTION_SDATA2 static f32 lit_1032 = 1.0f / 3.0f;
/* 80292348-802924E4 28CC88 019C+00 1/1 0/0 0/0 .text updateTrack__8JASTrackFf */
#ifdef NONMATCHING
// matches with literals
void JASTrack::updateTrack(f32 param_0) {
updateTempo();
for (u32 i = 0; i < mChannelMgrCount; i++) {
TChannelMgr* channel_mgr = mChannelMgrs[i];
if (channel_mgr != NULL) {
f32 volume = mMoveParam[0].mValue;
volume = volume * volume;
f32 pitch = 1.0f;
f32 fvar6 = mMoveParam[1].mValue * mBendSense * (1.0f / 3.0f);
f32 pan = (mMoveParam[3].mValue - 0.5f) * mPanPower;
f32 fxmix = mMoveParam[2].mValue;
f32 dolby = mMoveParam[4].mValue;
JASSoundParams* sound_params = channel_mgr->mSoundParams;
if (sound_params != NULL) {
volume *= sound_params->mVolume;
pitch *= sound_params->mPitch;
pan += sound_params->mPan - 0.5f;
fxmix += sound_params->mFxMix;
dolby += sound_params->mDolby;
}
pan *= param_0;
if (mParent == NULL) {
channel_mgr->mParams.mVolume = volume;
channel_mgr->mParams.mPitch = pitch;
channel_mgr->mParams.mPan = pan;
channel_mgr->mParams.mFxMix = fxmix;
channel_mgr->mParams.mDolby = dolby;
channel_mgr->mParams.field_0x8 = fvar6;
} else {
TChannelMgr* parent_channel_mgr = mParent->mChannelMgrs[i];
if (parent_channel_mgr == NULL) {
parent_channel_mgr = mParent->mChannelMgrs[0];
}
channel_mgr->mParams.mVolume = parent_channel_mgr->mParams.mVolume * volume;
channel_mgr->mParams.mPitch = parent_channel_mgr->mParams.mPitch * pitch;
channel_mgr->mParams.mPan = (parent_channel_mgr->mParams.mPan - 0.5f) + pan;
channel_mgr->mParams.mFxMix = parent_channel_mgr->mParams.mFxMix + fxmix;
channel_mgr->mParams.mDolby = parent_channel_mgr->mParams.mDolby + dolby;
channel_mgr->mParams.field_0x8 = parent_channel_mgr->mParams.field_0x8 + fvar6;
}
channel_mgr->mParams.mPan += 0.5f;
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::updateTrack(f32 param_0) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/updateTrack__8JASTrackFf.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804555BC-804555C0 003BBC 0004+00 1/1 0/0 0/0 .sdata2 @1042 */
SECTION_SDATA2 static f32 lit_1042 = 4.0f / 3.0f;
/* 804555C0-804555C8 003BC0 0008+00 1/1 0/0 0/0 .sdata2 @1044 */
SECTION_SDATA2 static f64 lit_1044 = 4503601774854144.0 /* cast s32 to float */;
/* 802924E4-80292580 28CE24 009C+00 5/5 0/0 0/0 .text updateTempo__8JASTrackFv */
#ifdef NONMATCHING
// matches with literals
void JASTrack::updateTempo() {
if (mParent == NULL) {
field_0x1dc = mTempoRate * (mTimebase * mTempo * (4.0f / 3.0f) / JASDriver::getDacRate());
} else {
mTempo = mParent->mTempo;
mTimebase = mParent->mTimebase;
field_0x1dc = mParent->field_0x1dc;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::updateTempo() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/updateTempo__8JASTrackFv.s"
}
#pragma pop
#endif
/* 80292580-80292644 28CEC0 00C4+00 4/4 0/0 0/0 .text updateSeq__8JASTrackFbf */
void JASTrack::updateSeq(bool param_0, f32 param_1) {
if (!param_0) {
param_0 = mFlags.flag5;
}
mFlags.flag5 = false;
if (param_0) {
updateTrack(param_1);
}
f32 fvar1 = param_1 * mPanPower;
for (int i = 0; i < 16; i++) {
if (mChildren[i] != NULL && mChildren[i]->mStatus == 1) {
mChildren[i]->updateSeq(param_0, fvar1);
}
}
}
/* ############################################################################################## */
/* 804555C8-804555CC 003BC8 0004+00 1/1 0/0 0/0 .sdata2 @1069 */
SECTION_SDATA2 static f32 lit_1069 = 120.0f;
/* 804555CC-804555D0 003BCC 0004+00 1/1 0/0 0/0 .sdata2 @1070 */
SECTION_SDATA2 static f32 lit_1070 = 10.0f;
/* 80292644-802926E0 28CF84 009C+00 1/1 0/0 0/0 .text seqTimeToDspTime__8JASTrackFf */
#ifdef NONMATCHING
// matches with literals
u32 JASTrack::seqTimeToDspTime(f32 i_seqTime) {
f32 dsp_time;
if (mFlags.flag2) {
dsp_time = i_seqTime / field_0x1dc;
} else {
dsp_time = i_seqTime * (120.0f / mTimebase);
dsp_time *= JASDriver::getSubFrames() / 10.0f;
}
return dsp_time;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 JASTrack::seqTimeToDspTime(f32 param_0) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/seqTimeToDspTime__8JASTrackFf.s"
}
#pragma pop
#endif
/* 802926E0-80292708 28D020 0028+00 0/0 4/4 0/0 .text setParam__8JASTrackFUlfUl */
void JASTrack::setParam(u32 i_index, f32 i_target, u32 i_count) {
MoveParam_* param = &mMoveParam[i_index];
param->mTarget = i_target;
if (i_count == 0) {
param->mValue = param->mTarget;
}
param->mCount = i_count;
}
/* 80292708-802927A0 28D048 0098+00 1/1 0/0 0/0 .text noteOffAll__8JASTrackFUs */
void JASTrack::noteOffAll(u16 param_0) {
for (u8 i = 0; i < 8; i++) {
noteOff(i, param_0);
}
for (int i = 0; i < 16; i++) {
if (mChildren[i] != NULL && mChildren[i]->mStatus == 1) {
mChildren[i]->noteOffAll(param_0);
}
}
}
/* 802927A0-802927D8 28D0E0 0038+00 0/0 2/2 0/0 .text mute__8JASTrackFb */
void JASTrack::mute(bool i_mute) {
mFlags.mute = i_mute;
if (i_mute) {
noteOffAll(10);
}
}
/* 802927D8-802927E8 28D118 0010+00 0/0 1/1 0/0 .text setOscScale__8JASTrackFUlf */
void JASTrack::setOscScale(u32 i_oscNo, f32 i_scale) {
mOscParam[i_oscNo].mScale = i_scale;
}
/* 802927E8-80292808 28D128 0020+00 0/0 1/1 0/0 .text
* setOscTable__8JASTrackFUlPCQ213JASOscillator5Point */
void JASTrack::setOscTable(u32 i_oscNo, JASOscillator::Point const* i_table) {
mOscParam[i_oscNo].mTable = i_table;
if (i_oscNo != 0) {
mOscParam[i_oscNo]._0C = NULL;
}
}
/* 80292808-8029285C 28D148 0054+00 0/0 1/1 0/0 .text setOscAdsr__8JASTrackFssssUs */
void JASTrack::setOscAdsr(s16 param_0, s16 param_1, s16 param_2, s16 param_3, u16 i_directRelease) {
mOscParam[0] = sEnvOsc;
mOscParam[0].mTable = mOscPoint;
mOscPoint[0]._2 = param_0;
mOscPoint[1]._2 = param_1;
mOscPoint[2]._2 = param_2;
mOscPoint[2]._4 = param_3;
mDirectRelease = i_directRelease;
}
/* ############################################################################################## */
/* 804555D0-804555D4 003BD0 0004+00 2/2 0/0 0/0 .sdata2 FILTER_MODE_IIR__6JASDsp */
SECTION_SDATA2 u32 JASDsp::FILTER_MODE_IIR = 0x00000020;
/* 8029285C-8029289C 28D19C 0040+00 0/0 2/2 0/0 .text setFIR__8JASTrackFPCs */
void JASTrack::setFIR(s16 const* i_FIR) {
for (int i = 0; i < 8; i++) {
mFIR[i] = i_FIR[i];
}
mFilterMode &= JASDsp::FILTER_MODE_IIR;
mFilterMode |= 8;
}
/* 8029289C-802928D0 28D1DC 0034+00 0/0 4/4 0/0 .text setIIR__8JASTrackFPCs */
void JASTrack::setIIR(s16 const* i_IIR) {
for (int i = 0; i < 8; i++) {
mIIR[i] = i_IIR[i];
}
mFilterMode |= JASDsp::FILTER_MODE_IIR;
}
/* 802928D0-802928F4 28D210 0024+00 0/0 1/1 0/0 .text readPortSelf__8JASTrackFUl */
u16 JASTrack::readPortSelf(u32 param_0) {
return mTrackPort.readImport(param_0);
}
/* 802928F4-80292918 28D234 0024+00 0/0 1/1 0/0 .text writePortSelf__8JASTrackFUlUs */
void JASTrack::writePortSelf(u32 param_0, u16 param_1) {
mTrackPort.writeExport(param_0, param_1);
}
/* 80292918-8029297C 28D258 0064+00 0/0 4/4 0/0 .text writePort__8JASTrackFUlUs */
void JASTrack::writePort(u32 param_0, u16 param_1) {
mTrackPort.writeImport(param_0, param_1);
if (param_0 == 0 || param_0 == 1) {
JASSeqCtrl::IntrType intr;
if (param_0 == 0) {
intr = JASSeqCtrl::INTRTYPE_VALUE_2;
} else {
intr = JASSeqCtrl::INTRTYPE_VALUE_3;
}
mSeqCtrl.interrupt(intr);
}
}
/* 8029297C-802929A0 28D2BC 0024+00 0/0 3/3 0/0 .text readPort__8JASTrackFUl */
u16 JASTrack::readPort(u32 param_0) {
return mTrackPort.readExport(param_0);
}
/* 802929A0-80292A3C 28D2E0 009C+00 1/1 0/0 0/0 .text setChannelPauseFlag__8JASTrackFb */
void JASTrack::setChannelPauseFlag(bool i_pause) {
for (u32 i = 0; i < mChannelMgrCount; i++) {
if (mChannelMgrs[i] != NULL) {
mChannelMgrs[i]->setPauseFlag(i_pause);
}
}
for (int i = 0; i < 16; i++) {
if (mChildren[i] != NULL) {
mChildren[i]->setChannelPauseFlag(i_pause);
}
}
}
/* 80292A3C-80292AA4 28D37C 0068+00 0/0 2/2 0/0 .text pause__8JASTrackFb */
void JASTrack::pause(bool i_pause) {
if (mFlags.pause != i_pause) {
mFlags.pause = i_pause;
setChannelPauseFlag(i_pause);
mSeqCtrl.interrupt(i_pause ? JASSeqCtrl::INTRTYPE_VALUE_0 : JASSeqCtrl::INTRTYPE_VALUE_1);
}
}
/* 80292AA4-80292AF4 28D3E4 0050+00 3/3 0/0 0/0 .text getTransposeTotal__8JASTrackCFv */
int JASTrack::getTransposeTotal() const {
if (mParent != NULL) {
return mTranspose + mParent->getTransposeTotal();
} else {
return mTranspose;
}
}
/* 80292AF4-80292B58 28D434 0064+00 2/2 0/0 0/0 .text isMute__8JASTrackCFv */
bool JASTrack::isMute() const {
if (mParent != NULL) {
return mFlags.mute || mParent->isMute();
} else {
return mFlags.mute;
}
}
/* 80292B58-80292B8C 28D498 0034+00 0/0 1/1 0/0 .text setTempo__8JASTrackFUs */
void JASTrack::setTempo(u16 i_tempo) {
mTempo = i_tempo;
mFlags.flag5 = true;
updateTempo();
}
/* 80292B8C-80292BC0 28D4CC 0034+00 0/0 2/2 0/0 .text setTempoRate__8JASTrackFf */
void JASTrack::setTempoRate(f32 i_tempoRate) {
mTempoRate = i_tempoRate;
mFlags.flag5 = true;
updateTempo();
}
/* 80292BC0-80292BF4 28D500 0034+00 0/0 1/1 0/0 .text setTimebase__8JASTrackFUs */
void JASTrack::setTimebase(u16 i_timebase) {
mTimebase = i_timebase;
mFlags.flag5 = true;
updateTempo();
}
/* ############################################################################################## */
/* 804555D4-804555D8 003BD4 0004+00 1/1 0/0 0/0 .sdata2 @1246 */
SECTION_SDATA2 static f32 lit_1246 = 32767.0f;
/* 80292BF4-80292CA4 28D534 00B0+00 1/1 0/0 0/0 .text
* updateChannel__8JASTrackFP10JASChannelPQ26JASDsp8TChannel */
#ifdef NONMATCHING
// matches with literals
void JASTrack::updateChannel(JASChannel* param_0, JASDsp::TChannel* param_1) {
param_0->setVibrate(mVibDepth, mVibPitch);
param_0->setTremolo(mTremDepth, mTremPitch);
if (mFilterMode & 0x20) {
param_1->setIIRFilterParam(mIIR);
}
if (mFilterMode & 0x1f) {
param_1->setFIR8FilterParam(mFIR);
}
param_1->setFilterMode(mFilterMode);
param_1->setDistFilter(mMoveParam[5].mValue * 32767.0f);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::updateChannel(JASChannel* param_0, JASDsp::TChannel* param_1) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/updateChannel__8JASTrackFP10JASChannelPQ26JASDsp8TChannel.s"
}
#pragma pop
#endif
/* 80292CA4-80292D88 28D5E4 00E4+00 1/1 0/0 0/0 .text
* channelUpdateCallback__8JASTrackFUlP10JASChannelPQ26JASDsp8TChannelPv */
void JASTrack::channelUpdateCallback(u32 param_0, JASChannel* param_1,
JASDsp::TChannel* param_2, void* param_3) {
TChannelMgr* channel_mgr = static_cast<TChannelMgr*>(param_3);
JASTrack* track = channel_mgr->mTrack;
switch (param_0) {
case 0:
case 1:
param_1->mParams = channel_mgr->mParams;
track->updateChannel(param_1, param_2);
break;
case 3:
param_1->release(0);
param_1->free();
channel_mgr->mChannels[0] = NULL;
break;
case 2:
for (int i = 0; i < 8; i++) {
if (param_1 == channel_mgr->mChannels[i]) {
channel_mgr->mChannels[i] = NULL;
break;
}
}
break;
}
}
/* 80292D88-80292DA0 28D6C8 0018+00 3/3 0/0 0/0 .text getRootTrack__8JASTrackFv */
JASTrack* JASTrack::getRootTrack() {
JASTrack* track = this;
while (track->mParent != NULL) {
track = track->mParent;
}
return track;
}
/* 80292DA0-80292E9C 28D6E0 00FC+00 1/1 0/0 0/0 .text tickProc__8JASTrackFv */
#ifdef NONMATCHING
// matches with literals
int JASTrack::tickProc() {
if (mFlags.pause) {
return 0;
}
int ret = mSeqCtrl.tickProc(this);
updateTimedParam();
mFlags.flag5 = true;
if (ret < 0) {
return -1;
}
for (int i = 0; i < 16; i++) {
JASTrack* child = mChildren[i];
if (child != NULL && child->mStatus == 1) {
ret = child->tickProc();
if (ret < 0) {
getRootTrack()->updateSeq(false, 1.0f);
child->close();
if (child->mFlags.autoDelete) {
delete child;
mChildren[i] = NULL;
}
}
}
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int JASTrack::tickProc() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/tickProc__8JASTrackFv.s"
}
#pragma pop
#endif
/* 80292E9C-80292F6C 28D7DC 00D0+00 1/1 0/0 0/0 .text seqMain__8JASTrackFv */
#ifdef NONMATCHING
// matches with literals
int JASTrack::seqMain() {
if (mFlags.flag6) {
updateSeq(true, 1.0f);
close();
return -1;
} else {
while (field_0x1d8 >= 1.0f) {
field_0x1d8 -= 1.0f;
if (tickProc() < 0) {
updateSeq(false, 1.0f);
close();
return -1;
}
}
field_0x1d8 += field_0x1dc;
updateSeq(false, 1.0f);
return 0;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int JASTrack::seqMain() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/seqMain__8JASTrackFv.s"
}
#pragma pop
#endif
/* 80292F6C-80292F90 28D8AC 0024+00 1/1 0/0 0/0 .text cbSeqMain__Q28JASTrack5TListFPv */
s32 JASTrack::TList::cbSeqMain(void* i_this) {
static_cast<JASTrack::TList*>(i_this)->seqMain();
return 0;
}
/* 80292F90-8029301C 28D8D0 008C+00 1/1 0/0 0/0 .text append__Q28JASTrack5TListFP8JASTrack */
void JASTrack::TList::append(JASTrack* i_track) {
if (!mCallbackRegistered) {
if (!JASDriver::registerSubFrameCallback(cbSeqMain, this)) {
return;
}
mCallbackRegistered = true;
}
Push_back(i_track);
}
/* 8029301C-802930DC 28D95C 00C0+00 1/1 0/0 0/0 .text seqMain__Q28JASTrack5TListFv */
#ifdef NONMATCHING
void JASTrack::TList::seqMain() {
for (iterator it = begin(); it != end(); it++) {
if (it->seqMain() < 0) {
Remove(&*it);
if (it->mFlags.autoDelete) {
delete &*it;
}
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::TList::seqMain() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/seqMain__Q28JASTrack5TListFv.s"
}
#pragma pop
#endif
/* 802930DC-80293148 28DA1C 006C+00 2/2 0/0 0/0 .text __ct__Q28JASTrack11TChannelMgrFP8JASTrack */
#ifdef NONMATCHING
// matches with literals
JASTrack::TChannelMgr::TChannelMgr(JASTrack* i_track) : mSoundParams(NULL), mTrack(i_track) {
for (int i = 0; i < 8; i++) {
mChannels[i] = NULL;
}
for (int i = 0; i < 8; i++) {
field_0x38[i] = 0;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JASTrack::TChannelMgr::TChannelMgr(JASTrack* param_0) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/__ct__Q28JASTrack11TChannelMgrFP8JASTrack.s"
}
#pragma pop
#endif
/* 80293148-802931B0 28DA88 0068+00 1/1 0/0 0/0 .text init__Q28JASTrack11TChannelMgrFv */
#ifdef NONMATCHING
// matches with literals
void JASTrack::TChannelMgr::init() {
mSoundParams = NULL;
mParams.init();
for (int i = 0; i < 8; i++) {
mChannels[i] = NULL;
}
for (int i = 0; i < 8; i++) {
field_0x38[i] = 0;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JASTrack::TChannelMgr::init() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/init__Q28JASTrack11TChannelMgrFv.s"
}
#pragma pop
#endif
/* 802931B0-80293220 28DAF0 0070+00 1/1 0/0 0/0 .text releaseAll__Q28JASTrack11TChannelMgrFv */
void JASTrack::TChannelMgr::releaseAll() {
for (int i = 0; i < 8; i++) {
JASChannel* channel = mChannels[i];
if (channel != NULL) {
channel->release(0);
channel->free();
mChannels[i] = NULL;
}
}
}
/* 80293220-802932A0 28DB60 0080+00 3/3 0/0 0/0 .text noteOff__Q28JASTrack11TChannelMgrFUlUs */
bool JASTrack::TChannelMgr::noteOff(u32 i_channel, u16 param_1) {
JASChannel* channel = mChannels[i_channel];
if (channel == NULL) {
return false;
}
if (param_1 == 0) {
channel->release(0);
} else {
channel->release(param_1);
}
channel->free();
mChannels[i_channel] = NULL;
return true;
}
/* 802932A0-802932C8 28DBE0 0028+00 1/1 0/0 0/0 .text setPauseFlag__Q28JASTrack11TChannelMgrFb */
void JASTrack::TChannelMgr::setPauseFlag(bool i_pause) {
for (int i = 0; i < 8; i++) {
if (mChannels[i] != NULL) {
mChannels[i]->setPauseFlag(i_pause);
}
}
}
/* 802932C8-802932E0 28DC08 0018+00 1/1 0/0 0/0 .text __ct__Q28JASTrack10MoveParam_Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm JASTrack::MoveParam_::MoveParam_() {
extern "C" asm void __ct__Q28JASTrack10MoveParam_Fv() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/__ct__Q28JASTrack10MoveParam_Fv.s"
}
#pragma pop
/* 802932E0-80293334 28DC20 0054+00 2/2 2/2 0/0 .text
* __dt__35JASMemPool_MultiThreaded<8JASTrack>Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802932E0(void* _this) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/func_802932E0.s"
}
#pragma pop
/* 80293334-80293388 28DC74 0054+00 3/3 1/1 0/0 .text
* __dt__50JASMemPool_MultiThreaded<Q28JASTrack11TChannelMgr>Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_80293334(void* _this) {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/func_80293334.s"
}
#pragma pop
/* ############################################################################################## */
/* 803C5B68-803C5B74 022C88 000C+00 2/2 0/0 0/0 .data __vt__19JASDefaultBankTable */
SECTION_DATA extern void* __vt__19JASDefaultBankTable[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)func_80293528,
};
/* 803C5B74-803C5B80 022C94 000C+00 1/1 0/0 0/0 .data __vt__17JASBankTable<256> */
SECTION_DATA extern void* data_803C5B74[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)func_80293528,
};
/* 803C5B80-803C5B90 022CA0 000C+04 1/1 1/1 0/0 .data __vt__11JASBankList */
SECTION_DATA extern void* __vt__11JASBankList[3 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)NULL,
/* padding */
NULL,
};
#ifndef NONMATCHING
/* 80293388-8029345C 28DCC8 00D4+00 0/0 1/0 0/0 .text __sinit_JASTrack_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_JASTrack_cpp() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/__sinit_JASTrack_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80293388, __sinit_JASTrack_cpp);
#pragma pop
/* 8029345C-802934B4 28DD9C 0058+00 1/1 0/0 0/0 .text __dt__Q28JASTrack5TListFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm JASTrack::TList::~TList() {
extern "C" asm void __dt__Q28JASTrack5TListFv() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/__dt__Q28JASTrack5TListFv.s"
}
#pragma pop
/* 802934B4-80293528 28DDF4 0074+00 1/1 0/0 0/0 .text __dt__19JASDefaultBankTableFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm JASDefaultBankTable::~JASDefaultBankTable() {
extern "C" asm void __dt__19JASDefaultBankTableFv() {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/__dt__19JASDefaultBankTableFv.s"
}
#pragma pop
/* 80293528-8029354C 28DE68 0024+00 2/0 0/0 0/0 .text getBank__17JASBankTable<256>CFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_80293528(void* _this, u32 param_0) /* const */ {
nofralloc
#include "asm/JSystem/JAudio2/JASTrack/func_80293528.s"
}
#pragma pop
#endif