mirror of
https://github.com/encounter/tp.git
synced 2026-07-11 06:18:46 -07:00
JASSeqCtrl OK + misc functions (#346)
* JASSeqCtrl OK + misc functions * Work on JASAudioThread
This commit is contained in:
@@ -4,30 +4,24 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JAudio2/JASAudioThread.h"
|
||||
#include "JSystem/JAudio2/JASDriverIF.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/os/OS.h"
|
||||
#include "dolphin/dsp/dsp.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JKRHeap {
|
||||
static u8 sSystemHeap[4];
|
||||
static u8 sCurrentHeap[4];
|
||||
};
|
||||
|
||||
struct JKRThread {
|
||||
/* 802D1610 */ JKRThread(JKRHeap*, u32, int, int);
|
||||
/* 802D1758 */ ~JKRThread();
|
||||
};
|
||||
|
||||
struct JASProbe {
|
||||
/* 80290EE4 */ void start(s32, char const*);
|
||||
/* 80290F24 */ void stop(s32);
|
||||
/* 80290EE4 */ static void start(s32, char const*);
|
||||
/* 80290F24 */ static void stop(s32);
|
||||
};
|
||||
|
||||
template <typename A0>
|
||||
struct JASMemPool_MultiThreaded {};
|
||||
struct JASMemPool {};
|
||||
|
||||
/* JASMemPool_MultiThreaded<JASChannel> */
|
||||
struct JASMemPool_MultiThreaded__template2 {
|
||||
/* 802978DC */ void func_802978DC(void* _this);
|
||||
@@ -35,27 +29,17 @@ struct JASMemPool_MultiThreaded__template2 {
|
||||
|
||||
struct JASGenericMemPool {
|
||||
/* 80290848 */ JASGenericMemPool();
|
||||
/* 802908C8 */ void newMemPool(u32, int);
|
||||
/* 802908C8 */ static void newMemPool(u32, int);
|
||||
};
|
||||
|
||||
struct JASDsp {
|
||||
/* 8029D958 */ void boot(void (*)(void*));
|
||||
/* 8029D9C4 */ void finishWork(u16);
|
||||
/* 8029DAC8 */ void initBuffer();
|
||||
};
|
||||
|
||||
struct JASDriver {
|
||||
/* 8029C388 */ void initAI(void (*)(void));
|
||||
/* 8029C4E4 */ void startDMA();
|
||||
/* 8029C504 */ void stopDMA();
|
||||
/* 8029C568 */ void updateDac();
|
||||
/* 8029C6C4 */ void updateDSP();
|
||||
/* 8029C900 */ void finishDSPFrame();
|
||||
/* 8029E2F8 */ void updateDacCallback();
|
||||
/* 8029D958 */ static void boot(void (*)(void*));
|
||||
/* 8029D9C4 */ static void finishWork(u16);
|
||||
/* 8029DAC8 */ static void initBuffer();
|
||||
};
|
||||
|
||||
struct JASDSPChannel {
|
||||
/* 8029D3C8 */ void initAll();
|
||||
/* 8029D3C8 */ static void initAll();
|
||||
};
|
||||
|
||||
//
|
||||
@@ -96,67 +80,41 @@ extern "C" void* __nw__FUlP7JKRHeapi();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void __ct__9JKRThreadFP7JKRHeapUlii();
|
||||
extern "C" void __dt__9JKRThreadFv();
|
||||
extern "C" void OSDisableInterrupts();
|
||||
extern "C" void OSRestoreInterrupts();
|
||||
extern "C" void OSSendMessage();
|
||||
extern "C" void OSReceiveMessage();
|
||||
extern "C" void OSJamMessage();
|
||||
extern "C" void OSInitThreadQueue();
|
||||
extern "C" void OSExitThread();
|
||||
extern "C" void OSResumeThread();
|
||||
extern "C" void OSSleepThread();
|
||||
extern "C" void DSPCheckMailFromDSP();
|
||||
extern "C" void DSPReadMailFromDSP();
|
||||
extern "C" void __register_global_object();
|
||||
extern "C" extern u8 data_80431B34[16 + 4 /* padding */];
|
||||
extern "C" extern u8 JASDram[4];
|
||||
extern "C" extern u8 struct_80451260[8];
|
||||
extern "C" u8 sSystemHeap__7JKRHeap[4];
|
||||
extern "C" u8 sCurrentHeap__7JKRHeap[4];
|
||||
extern "C" extern u8 __OSReport_disable;
|
||||
|
||||
extern JKRHeap* JASDram;
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803C78E0-803C78F0 024A00 0010+00 2/2 0/0 0/0 .data __vt__14JASAudioThread */
|
||||
SECTION_DATA extern void* __vt__14JASAudioThread[4] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__14JASAudioThreadFv,
|
||||
(void*)run__14JASAudioThreadFv,
|
||||
};
|
||||
|
||||
/* 8029CCDC-8029CD4C 29761C 0070+00 1/1 0/0 0/0 .text __ct__14JASAudioThreadFiiUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JASAudioThread::JASAudioThread(int param_0, int param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAudioThread/__ct__14JASAudioThreadFiiUl.s"
|
||||
JASAudioThread::JASAudioThread(int stackSize, int msgCount, u32 threadPriority)
|
||||
:
|
||||
JKRThread(JASDram, threadPriority, msgCount, stackSize),
|
||||
JASGlobalInstance<JASAudioThread>(true)
|
||||
{
|
||||
sbPauseFlag = false;
|
||||
OSInitThreadQueue(&sThreadQueue);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029CD4C-8029CDC0 29768C 0074+00 0/0 1/1 0/0 .text create__14JASAudioThreadFl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASAudioThread::create(s32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAudioThread/create__14JASAudioThreadFl.s"
|
||||
void JASAudioThread::create(long threadPriority) {
|
||||
JASAudioThread* sAudioThread = new (JASDram, 0) JASAudioThread(threadPriority, 0x10, 0x1400);
|
||||
sAudioThread->setCurrentHeap(JKRGetSystemHeap());
|
||||
sAudioThread->resume();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029CDC0-8029CDEC 297700 002C+00 0/0 1/1 0/0 .text stop__14JASAudioThreadFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASAudioThread::stop() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAudioThread/stop__14JASAudioThreadFv.s"
|
||||
void JASAudioThread::stop() {
|
||||
jamMessageBlock((void*)2);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039B338-8039B338 027998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
@@ -169,18 +127,93 @@ SECTION_DEAD static char const* const stringBase_8039B338 = "SFR_DSP";
|
||||
static u8 lit_205[12 + 4 /* padding */];
|
||||
|
||||
/* 804512D8-804512E0 0007D8 0004+04 1/1 2/2 0/0 .sbss snIntCount__14JASAudioThread */
|
||||
u8 JASAudioThread::snIntCount[4 + 4 /* padding */];
|
||||
volatile int JASAudioThread::snIntCount;
|
||||
|
||||
class Lock {
|
||||
public:
|
||||
Lock() {
|
||||
mInterrupts = OSDisableInterrupts();
|
||||
}
|
||||
~Lock() {
|
||||
OSRestoreInterrupts(mInterrupts);
|
||||
}
|
||||
private:
|
||||
BOOL mInterrupts;
|
||||
};
|
||||
|
||||
class JASChannel {};
|
||||
|
||||
template <class T>
|
||||
class JASMemPool_MultiThreaded {
|
||||
public:
|
||||
static void newMemPool(int param_1) {
|
||||
Lock lock;
|
||||
JASGenericMemPool::newMemPool(0x108, param_1);
|
||||
}
|
||||
};
|
||||
|
||||
template <class T>
|
||||
class JASPoolAllocObject_MultiThreaded {
|
||||
public:
|
||||
static void newMemPool(int param_1) {
|
||||
JASMemPool_MultiThreaded<T>::newMemPool(param_1);
|
||||
}
|
||||
};
|
||||
|
||||
/* 8029CDEC-8029CF68 29772C 017C+00 1/0 0/0 0/0 .text run__14JASAudioThreadFv */
|
||||
// JASPoolAllocObject_MultiThreaded is complex
|
||||
#ifdef NONMATCHING
|
||||
void* JASAudioThread::run() {
|
||||
i_OSInitFastCast();
|
||||
JASDriver::initAI(DMACallback);
|
||||
JASDsp::boot(DSPCallback);
|
||||
JASDsp::initBuffer();
|
||||
JASDSPChannel::initAll();
|
||||
|
||||
JASPoolAllocObject_MultiThreaded<JASChannel>::newMemPool(0x48);
|
||||
JASDriver::startDMA();
|
||||
|
||||
while (true) {
|
||||
OSMessage msg = waitMessageBlock();
|
||||
switch ((int)msg) {
|
||||
case AUDIOMSG_DMA:
|
||||
if (sbPauseFlag) {
|
||||
JASDriver::stopDMA();
|
||||
OSSleepThread(&sThreadQueue);
|
||||
}
|
||||
JASDriver::updateDac();
|
||||
JASDriver::updateDacCallback();
|
||||
break;
|
||||
|
||||
case AUDIOMSG_DSP:
|
||||
snIntCount--;
|
||||
if (snIntCount == 0) {
|
||||
JASProbe::stop(7);
|
||||
JASDriver::finishDSPFrame();
|
||||
} else {
|
||||
JASProbe::start(2, "SFR_DSP");
|
||||
JASDriver::updateDSP();
|
||||
JASProbe::stop(2);
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOMSG_STOP:
|
||||
JASDriver::stopDMA();
|
||||
OSExitThread(NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASAudioThread::run() {
|
||||
asm void* JASAudioThread::run() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAudioThread/run__14JASAudioThreadFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
#endif
|
||||
/* ############################################################################################## */
|
||||
/* 8039B338-8039B338 027998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
@@ -191,33 +224,26 @@ SECTION_DEAD static char const* const pad_8039B34B = "\0\0\0\0\0\0\0\0\0\0\0\0\0
|
||||
#pragma pop
|
||||
|
||||
/* 8029CF68-8029CFBC 2978A8 0054+00 1/1 0/0 0/0 .text DMACallback__14JASAudioThreadFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASAudioThread::DMACallback() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAudioThread/DMACallback__14JASAudioThreadFv.s"
|
||||
void JASAudioThread::DMACallback() {
|
||||
JASAudioThread* thread = getInstance();
|
||||
JASProbe::stop(4);
|
||||
JASProbe::start(4, "UPDATE-DAC");
|
||||
thread->sendMessage((void*)AUDIOMSG_DMA);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8029CFBC-8029D028 2978FC 006C+00 1/1 0/0 0/0 .text DSPCallback__14JASAudioThreadFPv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASAudioThread::DSPCallback(void* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAudioThread/DSPCallback__14JASAudioThreadFPv.s"
|
||||
}
|
||||
#pragma pop
|
||||
void JASAudioThread::DSPCallback(void*) {
|
||||
JASAudioThread* thread = getInstance();
|
||||
while (DSPCheckMailFromDSP() == 0) { }
|
||||
|
||||
/* 8029D028-8029D0B4 297968 008C+00 1/0 0/0 0/0 .text __dt__14JASAudioThreadFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JASAudioThread::~JASAudioThread() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASAudioThread/__dt__14JASAudioThreadFv.s"
|
||||
u32 mail = DSPReadMailFromDSP();
|
||||
if (mail >> 0x10 == 0xF355) {
|
||||
if ((mail & 0xFF00) == 0xFF00) {
|
||||
thread->sendMessage((void*)AUDIOMSG_DSP);
|
||||
} else {
|
||||
JASDsp::finishWork(mail);
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8039B338-8039B338 027998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
||||
+152
-142
@@ -6,217 +6,227 @@
|
||||
#include "JSystem/JAudio2/JASSeqCtrl.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JAudio2/JASSeqReader.h"
|
||||
#include "JSystem/JAudio2/JASTrack.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JASTrack {
|
||||
/* 80292220 */ void checkNoteStop(u32) const;
|
||||
};
|
||||
|
||||
struct JASSeqReader {
|
||||
/* 80296108 */ void init();
|
||||
/* 80296148 */ void init(void*);
|
||||
};
|
||||
|
||||
// TODO: Use JASSeqParser.hh when possible
|
||||
struct JASSeqParser {
|
||||
/* 80293CAC */ ~JASSeqParser();
|
||||
/* 80293CAC */ inline virtual ~JASSeqParser() {}
|
||||
/* 802958D4 */ virtual int parse(JASTrack*);
|
||||
/* 80295540 */ virtual void execNoteOnMidi(JASTrack*, u32, u32, u32);
|
||||
/* 80295498 */ virtual void execNoteOnGate(JASTrack*, u32, u32, u32, u32);
|
||||
/* 80295570 */ virtual void execNoteOff(JASTrack*, u32);
|
||||
/* 8029559C */ virtual void execCommand(JASTrack*, s32 (JASSeqParser::*)(JASTrack*, u32*), u32, u32*);
|
||||
|
||||
static u8 sCmdInfo[1536];
|
||||
static u8 sExtCmdInfo[4080];
|
||||
static u8 sCallBackFunc[4];
|
||||
};
|
||||
|
||||
struct JASSeqCtrl {
|
||||
struct IntrType {};
|
||||
enum IntrType {
|
||||
INTRTYPE_VALUE_0,
|
||||
INTRTYPE_VALUE_1,
|
||||
INTRTYPE_VALUE_2,
|
||||
INTRTYPE_VALUE_3,
|
||||
INTRTYPE_VALUE_4,
|
||||
INTRTYPE_VALUE_5,
|
||||
INTRTYPE_VALUE_6,
|
||||
};
|
||||
|
||||
/* 802938BC */ JASSeqCtrl();
|
||||
/* 80293924 */ void init();
|
||||
/* 80293980 */ void start(void*, u32);
|
||||
/* 802939C4 */ void tickProc(JASTrack*);
|
||||
/* 802939C4 */ int tickProc(JASTrack*);
|
||||
/* 80293ABC */ void interrupt(JASSeqCtrl::IntrType);
|
||||
/* 80293AE0 */ void setIntrMask(u32);
|
||||
/* 80293AF0 */ void clrIntrMask(u32);
|
||||
/* 80293B00 */ void retIntr();
|
||||
/* 80293B28 */ void findIntr();
|
||||
/* 80293B00 */ int retIntr();
|
||||
/* 80293B28 */ int findIntr();
|
||||
/* 80293B78 */ void checkIntr();
|
||||
/* 80293BE8 */ void timerProcess();
|
||||
|
||||
static u8 sDefaultParser[4 + 4 /* padding */];
|
||||
u32 get24(int param_0) {
|
||||
return mReader.get24(param_0);
|
||||
}
|
||||
|
||||
/* 0x00 */ JASSeqReader mReader;
|
||||
/* 0x3c */ JASSeqParser* field_0x3c;
|
||||
/* 0x40 */ s32 field_0x40;
|
||||
/* 0x44 */ void* field_0x44;
|
||||
/* 0x48 */ u32 field_0x48;
|
||||
/* 0x4c */ u16 field_0x4c;
|
||||
/* 0x4e */ u16 field_0x4e;
|
||||
/* 0x50 */ u8 field_0x50;
|
||||
/* 0x51 */ u8 field_0x51;
|
||||
/* 0x52 */ u16 field_0x52;
|
||||
/* 0x54 */ u32 field_0x54;
|
||||
/* 0x58 */ u32 field_0x58;
|
||||
static JASSeqParser sDefaultParser;
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
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 setIntrMask__10JASSeqCtrlFUl();
|
||||
extern "C" void clrIntrMask__10JASSeqCtrlFUl();
|
||||
extern "C" void retIntr__10JASSeqCtrlFv();
|
||||
extern "C" void findIntr__10JASSeqCtrlFv();
|
||||
extern "C" void checkIntr__10JASSeqCtrlFv();
|
||||
extern "C" void timerProcess__10JASSeqCtrlFv();
|
||||
extern "C" void __sinit_JASSeqCtrl_cpp();
|
||||
extern "C" void __dt__12JASSeqParserFv();
|
||||
extern "C" u8 sDefaultParser__10JASSeqCtrl[4 + 4 /* padding */];
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void checkNoteStop__8JASTrackCFUl();
|
||||
extern "C" void init__12JASSeqReaderFv();
|
||||
extern "C" void init__12JASSeqReaderFPv();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void __register_global_object();
|
||||
extern "C" extern void* __vt__12JASSeqParser[8];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80451238-80451240 000738 0004+04 3/3 0/0 0/0 .sbss sDefaultParser__10JASSeqCtrl */
|
||||
u8 JASSeqCtrl::sDefaultParser[4 + 4 /* padding */];
|
||||
JASSeqParser JASSeqCtrl::sDefaultParser;
|
||||
|
||||
/* 802938BC-80293924 28E1FC 0068+00 0/0 1/1 0/0 .text __ct__10JASSeqCtrlFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JASSeqCtrl::JASSeqCtrl() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/__ct__10JASSeqCtrlFv.s"
|
||||
JASSeqCtrl::JASSeqCtrl() {
|
||||
mReader.init();
|
||||
field_0x3c = &sDefaultParser;
|
||||
field_0x40 = 0;
|
||||
field_0x44 = NULL;
|
||||
field_0x48 = 0;
|
||||
field_0x4c = 0;
|
||||
field_0x4e = 0;
|
||||
field_0x50 = 0;
|
||||
field_0x51 = 0;
|
||||
field_0x54 = 0;
|
||||
field_0x58 = 0;
|
||||
mReader.init();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80293924-80293980 28E264 005C+00 0/0 1/1 0/0 .text init__10JASSeqCtrlFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSeqCtrl::init() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/init__10JASSeqCtrlFv.s"
|
||||
void JASSeqCtrl::init() {
|
||||
mReader.init();
|
||||
field_0x3c = &sDefaultParser;
|
||||
field_0x40 = 0;
|
||||
field_0x44 = NULL;
|
||||
field_0x48 = 0;
|
||||
field_0x4c = 0;
|
||||
field_0x4e = 0;
|
||||
field_0x50 = 0;
|
||||
field_0x54 = 0;
|
||||
field_0x58 = 0;
|
||||
field_0x51 = 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80293980-802939C4 28E2C0 0044+00 0/0 1/1 0/0 .text start__10JASSeqCtrlFPvUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSeqCtrl::start(void* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/start__10JASSeqCtrlFPvUl.s"
|
||||
void JASSeqCtrl::start(void* param_0, u32 param_1) {
|
||||
mReader.init(param_0);
|
||||
mReader.jump(param_1);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802939C4-80293ABC 28E304 00F8+00 0/0 1/1 0/0 .text tickProc__10JASSeqCtrlFP8JASTrack
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSeqCtrl::tickProc(JASTrack* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/tickProc__10JASSeqCtrlFP8JASTrack.s"
|
||||
int JASSeqCtrl::tickProc(JASTrack* param_0) {
|
||||
if (!mReader.getBase()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
interrupt(INTRTYPE_VALUE_6);
|
||||
timerProcess();
|
||||
|
||||
if (field_0x51) {
|
||||
if (!param_0->checkNoteStop(0)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
field_0x51 = 0;
|
||||
}
|
||||
|
||||
if (field_0x40 > 0) {
|
||||
field_0x40--;
|
||||
}
|
||||
|
||||
checkIntr();
|
||||
|
||||
while ((field_0x40 == 0 || field_0x44 != NULL) && field_0x51 == 0) {
|
||||
if (field_0x3c->parse(param_0) < 0) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80293ABC-80293AE0 28E3FC 0024+00 2/2 2/2 0/0 .text
|
||||
* interrupt__10JASSeqCtrlFQ210JASSeqCtrl8IntrType */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSeqCtrl::interrupt(JASSeqCtrl::IntrType param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/interrupt__10JASSeqCtrlFQ210JASSeqCtrl8IntrType.s"
|
||||
void JASSeqCtrl::interrupt(JASSeqCtrl::IntrType param_0) {
|
||||
if (field_0x4e & (1 << param_0)) {
|
||||
field_0x4c |= (1 << param_0);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80293AE0-80293AF0 28E420 0010+00 0/0 1/1 0/0 .text setIntrMask__10JASSeqCtrlFUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSeqCtrl::setIntrMask(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/setIntrMask__10JASSeqCtrlFUl.s"
|
||||
void JASSeqCtrl::setIntrMask(u32 param_0) {
|
||||
field_0x4e |= param_0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80293AF0-80293B00 28E430 0010+00 0/0 1/1 0/0 .text clrIntrMask__10JASSeqCtrlFUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSeqCtrl::clrIntrMask(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/clrIntrMask__10JASSeqCtrlFUl.s"
|
||||
void JASSeqCtrl::clrIntrMask(u32 param_0) {
|
||||
field_0x4e &= ~param_0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80293B00-80293B28 28E440 0028+00 0/0 1/1 0/0 .text retIntr__10JASSeqCtrlFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSeqCtrl::retIntr() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/retIntr__10JASSeqCtrlFv.s"
|
||||
int JASSeqCtrl::retIntr() {
|
||||
if (field_0x44 == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mReader.jump(field_0x44);
|
||||
field_0x44 = NULL;
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80293B28-80293B78 28E468 0050+00 1/1 0/0 0/0 .text findIntr__10JASSeqCtrlFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSeqCtrl::findIntr() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/findIntr__10JASSeqCtrlFv.s"
|
||||
int JASSeqCtrl::findIntr() {
|
||||
u32 uVar1 = field_0x4e & field_0x4c;
|
||||
for (int i = 0; uVar1 != 0; uVar1 >>= 1, i++) {
|
||||
if (uVar1 & 1) {
|
||||
field_0x4c &= ~(1 << i);
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80293B78-80293BE8 28E4B8 0070+00 1/1 2/2 0/0 .text checkIntr__10JASSeqCtrlFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSeqCtrl::checkIntr() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/checkIntr__10JASSeqCtrlFv.s"
|
||||
void JASSeqCtrl::checkIntr() {
|
||||
if (field_0x44) return;
|
||||
int intr = findIntr();
|
||||
|
||||
if (intr < 0) return;
|
||||
|
||||
u32 uVar2 = field_0x48;
|
||||
uVar2 += intr * 3;
|
||||
u32 uVar1 = get24(uVar2);
|
||||
field_0x44 = mReader.getCur();
|
||||
mReader.jump(uVar1);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80293BE8-80293C6C 28E528 0084+00 1/1 0/0 0/0 .text timerProcess__10JASSeqCtrlFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSeqCtrl::timerProcess() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/timerProcess__10JASSeqCtrlFv.s"
|
||||
void JASSeqCtrl::timerProcess() {
|
||||
if (field_0x54 == 0) return;
|
||||
|
||||
field_0x54--;
|
||||
if (field_0x54) return;
|
||||
|
||||
interrupt(INTRTYPE_VALUE_5);
|
||||
|
||||
if (field_0x50) {
|
||||
field_0x50--;
|
||||
if (field_0x50) {
|
||||
field_0x54 = field_0x58;
|
||||
}
|
||||
} else {
|
||||
field_0x54 = field_0x58;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80431B18-80431B28 05E838 000C+04 1/1 0/0 0/0 .bss @433 */
|
||||
static u8 lit_433[12 + 4 /* padding */];
|
||||
|
||||
/* 80293C6C-80293CAC 28E5AC 0040+00 0/0 1/0 0/0 .text __sinit_JASSeqCtrl_cpp */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void __sinit_JASSeqCtrl_cpp() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/__sinit_JASSeqCtrl_cpp.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
REGISTER_CTORS(0x80293C6C, __sinit_JASSeqCtrl_cpp);
|
||||
#pragma pop
|
||||
|
||||
/* 80293CAC-80293CF4 28E5EC 0048+00 1/1 1/0 0/0 .text __dt__12JASSeqParserFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JASSeqParser::~JASSeqParser() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSeqCtrl/__dt__12JASSeqParserFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
@@ -522,7 +522,7 @@ asm void JASTrack::noteOff(u32 param_0, u16 param_1) {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASTrack::checkNoteStop(u32 param_0) const {
|
||||
asm bool JASTrack::checkNoteStop(u32 param_0) const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASTrack/checkNoteStop__8JASTrackCFUl.s"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user