// // 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 */ struct JASMemPool_MultiThreaded__template0 { /* 802932E0 */ void func_802932E0(void* _this); }; /* JASMemPool_MultiThreaded */ 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_MultiThreadedFv */ 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(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(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_MultiThreadedFv */ #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