mirror of https://github.com/zeldaret/tp
101 lines
3.2 KiB
C++
101 lines
3.2 KiB
C++
#ifndef JASSEQPARSER_H
|
|
#define JASSEQPARSER_H
|
|
|
|
#include "dolphin/types.h"
|
|
|
|
class JASTrack;
|
|
|
|
/**
|
|
* @ingroup jsystem-jaudio
|
|
*
|
|
*/
|
|
class JASSeqParser {
|
|
public:
|
|
enum BranchCondition {};
|
|
|
|
struct CmdInfo {
|
|
s32 (JASSeqParser::*field_0x0)(JASTrack*, u32*);
|
|
u16 field_0xc;
|
|
u16 field_0xe;
|
|
};
|
|
|
|
virtual ~JASSeqParser() {}
|
|
virtual s32 parse(JASTrack*);
|
|
virtual s32 execNoteOnMidi(JASTrack*, u32, u32, u32);
|
|
virtual s32 execNoteOnGate(JASTrack*, u32, u32, u32, u32);
|
|
virtual s32 execNoteOff(JASTrack*, u32);
|
|
virtual s32 execCommand(JASTrack*, s32 (JASSeqParser::*)(JASTrack*, u32*), u32, u32*);
|
|
|
|
bool conditionCheck(JASTrack*, JASSeqParser::BranchCondition);
|
|
void writeReg(JASTrack*, u32, u32);
|
|
u32 readReg(JASTrack*, u32) const;
|
|
s32 cmdOpenTrack(JASTrack*, u32*);
|
|
s32 cmdCloseTrack(JASTrack*, u32*);
|
|
s32 cmdCall(JASTrack*, u32*);
|
|
s32 cmdCallF(JASTrack*, u32*);
|
|
s32 cmdRet(JASTrack*, u32*);
|
|
s32 cmdRetF(JASTrack*, u32*);
|
|
s32 cmdJmp(JASTrack*, u32*);
|
|
s32 cmdJmpF(JASTrack*, u32*);
|
|
s32 cmdJmpTable(JASTrack*, u32*);
|
|
s32 cmdCallTable(JASTrack*, u32*);
|
|
s32 cmdLoopS(JASTrack*, u32*);
|
|
s32 cmdLoopE(JASTrack*, u32*);
|
|
s32 cmdNote(JASTrack*, u32*);
|
|
s32 cmdNoteOn(JASTrack*, u32*);
|
|
s32 cmdNoteOff(JASTrack*, u32*);
|
|
s32 cmdReadPort(JASTrack*, u32*);
|
|
s32 cmdWritePort(JASTrack*, u32*);
|
|
s32 cmdParentWritePort(JASTrack*, u32*);
|
|
s32 cmdChildWritePort(JASTrack*, u32*);
|
|
s32 cmdParentReadPort(JASTrack*, u32*);
|
|
s32 cmdChildReadPort(JASTrack*, u32*);
|
|
s32 cmdCheckPortImport(JASTrack*, u32*);
|
|
s32 cmdCheckPortExport(JASTrack*, u32*);
|
|
s32 cmdWait(JASTrack*, u32*);
|
|
s32 cmdWaitByte(JASTrack*, u32*);
|
|
s32 cmdSetLastNote(JASTrack*, u32*);
|
|
s32 cmdEnvScaleSet(JASTrack*, u32*);
|
|
s32 cmdEnvSet(JASTrack*, u32*);
|
|
s32 cmdSimpleADSR(JASTrack*, u32*);
|
|
s32 cmdBusConnect(JASTrack*, u32*);
|
|
s32 cmdSetIntTable(JASTrack*, u32*);
|
|
s32 cmdSetInterrupt(JASTrack*, u32*);
|
|
s32 cmdDisInterrupt(JASTrack*, u32*);
|
|
s32 cmdClrI(JASTrack*, u32*);
|
|
s32 cmdRetI(JASTrack*, u32*);
|
|
s32 cmdIntTimer(JASTrack*, u32*);
|
|
s32 cmdSyncCPU(JASTrack*, u32*);
|
|
s32 cmdTempo(JASTrack*, u32*);
|
|
s32 cmdFinish(JASTrack*, u32*);
|
|
s32 cmdNop(JASTrack*, u32*);
|
|
s32 cmdFIRSet(JASTrack*, u32*);
|
|
s32 cmdIIRSet(JASTrack*, u32*);
|
|
s32 cmdIIRCutOff(JASTrack*, u32*);
|
|
s32 cmdBankPrg(JASTrack*, u32*);
|
|
s32 cmdBank(JASTrack*, u32*);
|
|
s32 cmdPrg(JASTrack*, u32*);
|
|
s32 cmdParamI(JASTrack*, u32*);
|
|
s32 cmdParamII(JASTrack*, u32*);
|
|
s32 cmdParamE(JASTrack*, u32*);
|
|
s32 cmdParamEI(JASTrack*, u32*);
|
|
s32 cmdReg(JASTrack*, u32*);
|
|
s32 cmdRegLoad(JASTrack*, u32*);
|
|
s32 cmdRegUni(JASTrack*, u32*);
|
|
s32 cmdRegTblLoad(JASTrack*, u32*);
|
|
s32 cmdDump(JASTrack*, u32*);
|
|
s32 cmdPrintf(JASTrack*, u32*);
|
|
s32 parseNoteOff(JASTrack*, u8);
|
|
s32 parseNoteOn(JASTrack*, u8);
|
|
s32 parseCommand(JASTrack*, u8, u16);
|
|
s32 parseRegCommand(JASTrack*, int);
|
|
|
|
static void registerSeqCallback(u16 (*param_0)(JASTrack*, u16)) { sCallBackFunc = param_0; }
|
|
|
|
static CmdInfo sCmdInfo[96];
|
|
static CmdInfo sExtCmdInfo[255];
|
|
static u16 (*sCallBackFunc)(JASTrack*, u16);
|
|
};
|
|
|
|
#endif /* JASSEQPARSER_H */
|