mirror of https://github.com/zeldaret/tp.git
1478 lines
52 KiB
C++
1478 lines
52 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: JASSeqParser
|
|
//
|
|
|
|
#include "JSystem/JAudio2/JASSeqParser.h"
|
|
#include "JSystem/JAudio2/JASCalc.h"
|
|
#include "JSystem/JAudio2/JASReport.h"
|
|
#include "JSystem/JAudio2/JASSeqCtrl.h"
|
|
#include "JSystem/JAudio2/JASTrack.h"
|
|
#include "JSystem/JAudio2/JASTrackPort.h"
|
|
#include "JSystem/JMath/random.h"
|
|
#include "JSystem/JSupport/JSupport.h"
|
|
#include "dol2asm.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" void conditionCheck__12JASSeqParserFP8JASTrackQ212JASSeqParser15BranchCondition();
|
|
extern "C" void writeReg__12JASSeqParserFP8JASTrackUlUl();
|
|
extern "C" void readReg__12JASSeqParserCFP8JASTrackUl();
|
|
extern "C" void cmdOpenTrack__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdCloseTrack__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdCall__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdCallF__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdRet__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdRetF__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdJmp__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdJmpF__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdJmpTable__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdCallTable__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdLoopS__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdLoopE__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdNote__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdNoteOn__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdNoteOff__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdReadPort__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdWritePort__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdParentWritePort__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdChildWritePort__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdParentReadPort__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdChildReadPort__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdCheckPortImport__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdCheckPortExport__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdWait__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdWaitByte__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdSetLastNote__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdEnvScaleSet__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdEnvSet__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdSimpleADSR__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdBusConnect__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdSetIntTable__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdSetInterrupt__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdDisInterrupt__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdClrI__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdRetI__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdIntTimer__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdSyncCPU__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdTempo__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" s32 cmdFinish__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" bool cmdNop__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdFIRSet__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdIIRSet__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdIIRCutOff__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdBankPrg__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdBank__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdPrg__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdParamI__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdParamII__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdParamE__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdParamEI__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdReg__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdRegLoad__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdRegUni__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdRegTblLoad__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdDump__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void cmdPrintf__12JASSeqParserFP8JASTrackPUl();
|
|
extern "C" void execNoteOnGate__12JASSeqParserFP8JASTrackUlUlUlUl();
|
|
extern "C" void execNoteOnMidi__12JASSeqParserFP8JASTrackUlUlUl();
|
|
extern "C" void execNoteOff__12JASSeqParserFP8JASTrackUl();
|
|
extern "C" void execCommand__12JASSeqParserFP8JASTrackM12JASSeqParserFPCvPvP8JASTrackPUl_lUlPUl();
|
|
extern "C" void parseNoteOff__12JASSeqParserFP8JASTrackUc();
|
|
extern "C" void parseNoteOn__12JASSeqParserFP8JASTrackUc();
|
|
extern "C" void parseCommand__12JASSeqParserFP8JASTrackUcUs();
|
|
extern "C" void parseRegCommand__12JASSeqParserFP8JASTracki();
|
|
extern "C" void parse__12JASSeqParserFP8JASTrack();
|
|
extern "C" void __sinit_JASSeqParser_cpp();
|
|
extern "C" extern char const* const JASSeqParser__stringBase0;
|
|
extern "C" u8 sCmdInfo__12JASSeqParser[1536];
|
|
extern "C" u8 sExtCmdInfo__12JASSeqParser[4080];
|
|
extern "C" extern void* __vt__12JASSeqParser[8];
|
|
extern "C" u8 sCallBackFunc__12JASSeqParser[4];
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void JASReport__FPCce();
|
|
extern "C" void setSeqData__8JASTrackFPvUl();
|
|
extern "C" void start__8JASTrackFv();
|
|
extern "C" void closeChild__8JASTrackFUl();
|
|
extern "C" void openChild__8JASTrackFUl();
|
|
extern "C" void connectBus__8JASTrackFii();
|
|
extern "C" void setLatestKey__8JASTrackFUc();
|
|
extern "C" void noteOn__8JASTrackFUlUlUl();
|
|
extern "C" void gateOn__8JASTrackFUlUlfUl();
|
|
extern "C" void noteOff__8JASTrackFUlUs();
|
|
extern "C" void setParam__8JASTrackFUlfUl();
|
|
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 setTempo__8JASTrackFUs();
|
|
extern "C" void setTimebase__8JASTrackFUs();
|
|
extern "C" void checkImport__12JASTrackPortCFUl();
|
|
extern "C" void checkExport__12JASTrackPortCFUl();
|
|
extern "C" void write__16JASRegisterParamFQ216JASRegisterParam5RegIDUl();
|
|
extern "C" void read__16JASRegisterParamFQ216JASRegisterParam5RegID();
|
|
extern "C" void setIntrMask__10JASSeqCtrlFUl();
|
|
extern "C" void clrIntrMask__10JASSeqCtrlFUl();
|
|
extern "C" void retIntr__10JASSeqCtrlFv();
|
|
extern "C" void checkIntr__10JASSeqCtrlFv();
|
|
extern "C" void __dt__12JASSeqParserFv();
|
|
extern "C" void call__12JASSeqReaderFUl();
|
|
extern "C" void loopStart__12JASSeqReaderFUl();
|
|
extern "C" void loopEnd__12JASSeqReaderFv();
|
|
extern "C" void ret__12JASSeqReaderFv();
|
|
extern "C" void readMidiValue__12JASSeqReaderFv();
|
|
extern "C" void __ct__Q25JMath13TRandom_fast_FUl();
|
|
extern "C" void __ptmf_test();
|
|
extern "C" void __ptmf_scall();
|
|
extern "C" void __cvt_fp2unsigned();
|
|
extern "C" void _savegpr_25();
|
|
extern "C" void _savegpr_27();
|
|
extern "C" void _savegpr_28();
|
|
extern "C" void _savegpr_29();
|
|
extern "C" void _restgpr_25();
|
|
extern "C" void _restgpr_27();
|
|
extern "C" void _restgpr_28();
|
|
extern "C" void _restgpr_29();
|
|
extern "C" u8 const CUTOFF_TO_IIR_TABLE__7JASCalc[1024];
|
|
extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
/* 80293CF4-80293DC4 28E634 00D0+00 3/3 0/0 0/0 .text
|
|
* conditionCheck__12JASSeqParserFP8JASTrackQ212JASSeqParser15BranchCondition */
|
|
bool JASSeqParser::conditionCheck(JASTrack* param_0, JASSeqParser::BranchCondition param_1) {
|
|
u16 reg = readReg(param_0, 3);
|
|
switch (param_1) {
|
|
case 0:
|
|
return 1;
|
|
case 1:
|
|
return reg == 0;
|
|
case 2:
|
|
return reg != 0;
|
|
case 3:
|
|
return reg == 1;
|
|
case 4:
|
|
return 0x8000 <= reg;
|
|
case 5:
|
|
return 0x8000 > reg;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/* 803C5E80-803C6480 022FA0 0600+00 1/2 0/0 0/0 .data sCmdInfo__12JASSeqParser */
|
|
SECTION_DATA JASSeqParser::CmdInfo JASSeqParser::sCmdInfo[96] = {
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdNoteOn, 0x0003, 0x0000,
|
|
&JASSeqParser::cmdNoteOff, 0x0001, 0x0000,
|
|
&JASSeqParser::cmdNote, 0x0004, 0x0040,
|
|
&JASSeqParser::cmdSetLastNote, 0x0001, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdParamE, 0x0002, 0x0000,
|
|
&JASSeqParser::cmdParamI, 0x0002, 0x0004,
|
|
&JASSeqParser::cmdParamEI, 0x0003, 0x0010,
|
|
&JASSeqParser::cmdParamII, 0x0003, 0x0014,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdOpenTrack, 0x0002, 0x0008,
|
|
&JASSeqParser::cmdCloseTrack, 0x0001, 0x0000,
|
|
&JASSeqParser::cmdCall, 0x0001, 0x0002,
|
|
&JASSeqParser::cmdCallF, 0x0002, 0x0008,
|
|
&JASSeqParser::cmdRet, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdRetF, 0x0001, 0x0000,
|
|
&JASSeqParser::cmdJmp, 0x0001, 0x0002,
|
|
&JASSeqParser::cmdJmpF, 0x0002, 0x0008,
|
|
&JASSeqParser::cmdJmpTable, 0x0002, 0x000B,
|
|
&JASSeqParser::cmdCallTable, 0x0002, 0x000B,
|
|
&JASSeqParser::cmdLoopS, 0x0001, 0x0001,
|
|
&JASSeqParser::cmdLoopE, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdReadPort, 0x0002, 0x0000,
|
|
&JASSeqParser::cmdWritePort, 0x0002, 0x000C,
|
|
&JASSeqParser::cmdCheckPortImport, 0x0001, 0x0000,
|
|
&JASSeqParser::cmdCheckPortExport, 0x0001, 0x0000,
|
|
&JASSeqParser::cmdParentWritePort, 0x0002, 0x000C,
|
|
&JASSeqParser::cmdChildWritePort, 0x0002, 0x000C,
|
|
&JASSeqParser::cmdParentReadPort, 0x0002, 0x0000,
|
|
&JASSeqParser::cmdChildReadPort, 0x0002, 0x0000,
|
|
&JASSeqParser::cmdRegLoad, 0x0002, 0x0004,
|
|
&JASSeqParser::cmdReg, 0x0003, 0x0030,
|
|
&JASSeqParser::cmdReg, 0x0003, 0x0010,
|
|
&JASSeqParser::cmdRegUni, 0x0002, 0x0000,
|
|
&JASSeqParser::cmdRegTblLoad, 0x0004, 0x00E0,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdTempo, 0x0001, 0x0001,
|
|
&JASSeqParser::cmdBankPrg, 0x0001, 0x0001,
|
|
&JASSeqParser::cmdBank, 0x0001, 0x0000,
|
|
&JASSeqParser::cmdPrg, 0x0001, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdEnvScaleSet, 0x0002, 0x0004,
|
|
&JASSeqParser::cmdEnvSet, 0x0002, 0x0008,
|
|
&JASSeqParser::cmdSimpleADSR, 0x0005, 0x0155,
|
|
&JASSeqParser::cmdBusConnect, 0x0002, 0x0004,
|
|
&JASSeqParser::cmdIIRCutOff, 0x0001, 0x0000,
|
|
&JASSeqParser::cmdIIRSet, 0x0004, 0x0055,
|
|
&JASSeqParser::cmdFIRSet, 0x0001, 0x0002,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdWait, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdWaitByte, 0x0001, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdSetIntTable, 0x0001, 0x0002,
|
|
&JASSeqParser::cmdSetInterrupt, 0x0001, 0x0001,
|
|
&JASSeqParser::cmdDisInterrupt, 0x0001, 0x0001,
|
|
&JASSeqParser::cmdRetI, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdClrI, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdIntTimer, 0x0002, 0x0004,
|
|
&JASSeqParser::cmdSyncCPU, 0x0001, 0x0001,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdPrintf, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdNop, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdFinish, 0x0000, 0x0000,
|
|
};
|
|
|
|
/* 803C648C-803C747C 0235AC 0FF0+00 1/2 0/0 0/0 .data sExtCmdInfo__12JASSeqParser */
|
|
SECTION_DATA JASSeqParser::CmdInfo JASSeqParser::sExtCmdInfo[255] = {
|
|
NULL, 0x0000, 0x0000,
|
|
&JASSeqParser::cmdDump, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
NULL, 0x0000, 0x0000,
|
|
};
|
|
|
|
/* 803C747C-803C7550 -00001 00D4+00 1/1 0/0 0/0 .data @632 */
|
|
SECTION_DATA static void* lit_632[53] = {
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x80),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x90),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x98),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xA0),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xA8),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xB0),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xBC),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xC8),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xF0),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x100),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x108),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x110),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x118),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x140),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x168),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x190),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1B8),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1E0),
|
|
(void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1E8),
|
|
};
|
|
|
|
/* 804555D8-804555DC 003BD8 0004+00 6/6 0/0 0/0 .sdata2 @627 */
|
|
SECTION_SDATA2 static f32 lit_627 = 32767.0f;
|
|
|
|
/* 804555DC-804555E0 003BDC 0004+00 2/2 0/0 0/0 .sdata2 @628 */
|
|
SECTION_SDATA2 static f32 lit_628 = 1524.0f;
|
|
|
|
/* 804555E0-804555E4 003BE0 0004+00 2/2 0/0 0/0 .sdata2 @629 */
|
|
SECTION_SDATA2 static f32 lit_629 = 12192.0f;
|
|
|
|
/* 804555E4-804555E8 003BE4 0004+00 1/1 0/0 0/0 .sdata2 @630 */
|
|
SECTION_SDATA2 static f32 lit_630 = 0.00390625f;
|
|
|
|
/* 804555E8-804555F0 003BE8 0004+04 1/1 0/0 0/0 .sdata2 @631 */
|
|
SECTION_SDATA2 static f32 lit_631[1 + 1 /* padding */] = {
|
|
0.015625f,
|
|
/* padding */
|
|
0.0f,
|
|
};
|
|
|
|
/* 804555F0-804555F8 003BF0 0008+00 3/3 0/0 0/0 .sdata2 @634 */
|
|
SECTION_SDATA2 static f64 lit_634 = 4503599627370496.0 /* cast u32 to float */;
|
|
|
|
/* 80293DC4-80293FC8 28E704 0204+00 8/7 0/0 0/0 .text writeReg__12JASSeqParserFP8JASTrackUlUl */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
void JASSeqParser::writeReg(JASTrack* param_0, u32 param_1, u32 param_2) {
|
|
param_0->writeReg(JASRegisterParam::REG3, param_2);
|
|
if (param_1 < 0x40) {
|
|
param_0->writeReg(JASRegisterParam::RegID(param_1), param_2);
|
|
return;
|
|
}
|
|
switch (param_1) {
|
|
case 0x40:
|
|
case 0x41:
|
|
case 0x42:
|
|
case 0x43:
|
|
case 0x44:
|
|
case 0x45:
|
|
case 0x46:
|
|
case 0x47:
|
|
case 0x48:
|
|
case 0x49:
|
|
case 0x4a:
|
|
case 0x4b:
|
|
case 0x4c:
|
|
case 0x4d:
|
|
case 0x4e:
|
|
case 0x4f:
|
|
param_0->setPort(param_1 - 0x40, param_2);
|
|
break;
|
|
case 0x60:
|
|
case 0x61:
|
|
break;
|
|
case 0x62:
|
|
param_0->setTimebase(param_2);
|
|
break;
|
|
case 0x63:
|
|
param_0->setTranspose(param_2);
|
|
break;
|
|
case 0x64:
|
|
param_0->setBendSense(param_2);
|
|
break;
|
|
case 0x65:
|
|
param_0->setGateRate(param_2);
|
|
break;
|
|
case 0x66:
|
|
param_0->setSkipSample(param_2);
|
|
break;
|
|
case 0x67:
|
|
param_0->setBankNumber(u8(param_2));
|
|
break;
|
|
case 0x68:
|
|
param_0->setProgNumber(u8(param_2));
|
|
break;
|
|
case 0x69:
|
|
param_0->setPanPower(param_2 / 32767.0f);
|
|
break;
|
|
case 0x6a:
|
|
param_0->setReleasePrio(JSUHiByte(param_2));
|
|
param_0->setNoteOnPrio(JSULoByte(param_2));
|
|
break;
|
|
case 0x6b:
|
|
param_0->setNoteOnPrio(param_2);
|
|
break;
|
|
case 0x6c:
|
|
param_0->setReleasePrio(param_2);
|
|
break;
|
|
case 0x6d:
|
|
param_0->setDirectRelease(param_2);
|
|
break;
|
|
case 0x6e:
|
|
param_0->setVibDepth(param_2 / 1524.0f);
|
|
break;
|
|
case 0x6f:
|
|
param_0->setVibDepth(param_2 / 12192.0f);
|
|
break;
|
|
case 0x70:
|
|
param_0->setTremDepth(param_2 / 256.0f);
|
|
break;
|
|
case 0x71:
|
|
param_0->setVibPitch(param_2 / 64.0f);
|
|
break;
|
|
case 0x72:
|
|
param_0->setTremPitch(param_2 / 64.0f);
|
|
break;
|
|
case 0x73:
|
|
param_0->setVibDelay(param_2);
|
|
break;
|
|
case 0x74:
|
|
param_0->setTremDelay(param_2);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void JASSeqParser::writeReg(JASTrack* param_0, u32 param_1, u32 param_2) {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/writeReg__12JASSeqParserFP8JASTrackUlUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 803C7550-803C7624 -00001 00D4+00 1/1 0/0 0/0 .data @720 */
|
|
SECTION_DATA static void* lit_720[53] = {
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x5C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xA0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xC8),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xD0),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xDC),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xE4),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xEC),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xF4),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xFC),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x104),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x118),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x128),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x130),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x138),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x140),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x154),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x168),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x17C),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x190),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1A4),
|
|
(void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1AC),
|
|
};
|
|
|
|
/* 804555F8-804555FC 003BF8 0004+00 1/1 0/0 0/0 .sdata2 @718 */
|
|
SECTION_SDATA2 static f32 lit_718 = 256.0f;
|
|
|
|
/* 804555FC-80455600 003BFC 0004+00 1/1 0/0 0/0 .sdata2 @719 */
|
|
SECTION_SDATA2 static f32 lit_719 = 64.0f;
|
|
|
|
/* 80293FC8-80294188 28E908 01C0+00 7/6 0/0 0/0 .text readReg__12JASSeqParserCFP8JASTrackUl */
|
|
// Matches with literals
|
|
#ifdef NONMATCHING
|
|
u32 JASSeqParser::readReg(JASTrack* param_0, u32 param_1) const {
|
|
if (param_1 < 0x40) {
|
|
return param_0->readReg(JASRegisterParam::RegID(param_1));
|
|
}
|
|
u32 result = 0;
|
|
switch (param_1) {
|
|
case 0x40:
|
|
case 0x41:
|
|
case 0x42:
|
|
case 0x43:
|
|
case 0x44:
|
|
case 0x45:
|
|
case 0x46:
|
|
case 0x47:
|
|
case 0x48:
|
|
case 0x49:
|
|
case 0x4a:
|
|
case 0x4b:
|
|
case 0x4c:
|
|
case 0x4d:
|
|
case 0x4e:
|
|
case 0x4f:
|
|
return param_0->getPort(param_1 - 0x40);
|
|
case 0x60:
|
|
u16 r27 = 1;
|
|
for (int i = 0; i < 16; i++) {
|
|
JASTrack* child = param_0->getChild(i);
|
|
if (child && child->getStatus() == 1) {
|
|
result |= r27;
|
|
}
|
|
r27 <<= 1;
|
|
}
|
|
break;
|
|
case 0x61:
|
|
return param_0->getSeqCtrl()->getSeqReader()->getLoopCount();
|
|
case 0x62:
|
|
return param_0->getTimebase();
|
|
case 0x63:
|
|
return param_0->mTranspose;
|
|
case 0x64:
|
|
return param_0->getBendSense();
|
|
case 0x65:
|
|
return param_0->getGateRate();
|
|
case 0x66:
|
|
return param_0->getSkipSample();
|
|
case 0x67:
|
|
return param_0->getBankNumber();
|
|
case 0x68:
|
|
return param_0->getProgNumber();
|
|
case 0x69:
|
|
return param_0->getPanPower() * 32767.0f;
|
|
case 0x6a:
|
|
return param_0->getReleasePrio() | param_0->getNoteOnPrio();
|
|
case 0x6b:
|
|
return param_0->getNoteOnPrio();
|
|
case 0x6c:
|
|
return param_0->getReleasePrio();
|
|
case 0x6d:
|
|
return param_0->getDirectRelease();
|
|
case 0x6e:
|
|
return param_0->getVibDepth() * 1524.0f;
|
|
case 0x6f:
|
|
return param_0->getVibDepth() * 12192.0f;
|
|
case 0x70:
|
|
return param_0->getTremDepth() * 256.0f;
|
|
case 0x71:
|
|
return param_0->getVibPitch() * 64.0f;
|
|
case 0x72:
|
|
return param_0->getTremPitch() * 64.0f;
|
|
case 0x73:
|
|
return param_0->getVibDelay();
|
|
case 0x74:
|
|
return param_0->getTremDelay();
|
|
default:
|
|
break;
|
|
}
|
|
return result;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm u32 JASSeqParser::readReg(JASTrack* param_0, u32 param_1) const {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/readReg__12JASSeqParserCFP8JASTrackUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80294188-802941F0 28EAC8 0068+00 1/0 0/0 0/0 .text cmdOpenTrack__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
s32 JASSeqParser::cmdOpenTrack(JASTrack* param_0, u32* param_1) {
|
|
u32 r29 = param_1[0];
|
|
u32 r28 = param_1[1];
|
|
JASTrack* child = param_0->openChild(r29);
|
|
if (!child) {
|
|
return 0;
|
|
}
|
|
child->setSeqData(param_0->getSeqCtrl()->getBase(), r28);
|
|
child->start();
|
|
return 0;
|
|
}
|
|
|
|
/* 802941F0-8029421C 28EB30 002C+00 1/0 0/0 0/0 .text cmdCloseTrack__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
s32 JASSeqParser::cmdCloseTrack(JASTrack* param_0, u32* param_1) {
|
|
param_0->closeChild(*param_1);
|
|
return 0;
|
|
}
|
|
|
|
/* 8029421C-80294248 28EB5C 002C+00 1/0 0/0 0/0 .text cmdCall__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdCall(JASTrack* param_0, u32* param_1) {
|
|
param_0->getSeqCtrl()->call(*param_1);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294248-8029429C 28EB88 0054+00 1/0 0/0 0/0 .text cmdCallF__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdCallF(JASTrack* param_0, u32* param_1) {
|
|
if (conditionCheck(param_0, BranchCondition(param_1[0]))) {
|
|
param_0->getSeqCtrl()->call(param_1[1]);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 8029429C-802942D4 28EBDC 0038+00 1/0 0/0 0/0 .text cmdRet__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdRet(JASTrack* param_0, u32* param_1) {
|
|
if (!param_0->getSeqCtrl()->ret()) {
|
|
return 0;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 802942D4-80294328 28EC14 0054+00 1/0 0/0 0/0 .text cmdRetF__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdRetF(JASTrack* param_0, u32* param_1) {
|
|
if (conditionCheck(param_0, BranchCondition(param_1[0]))) {
|
|
if (!param_0->getSeqCtrl()->ret()) {
|
|
return 0;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 80294328-80294340 28EC68 0018+00 1/0 0/0 0/0 .text cmdJmp__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdJmp(JASTrack* param_0, u32* param_1) {
|
|
param_0->getSeqCtrl()->jump(param_1[0]);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294340-80294398 28EC80 0058+00 1/0 0/0 0/0 .text cmdJmpF__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdJmpF(JASTrack* param_0, u32* param_1) {
|
|
if (conditionCheck(param_0, BranchCondition(param_1[0]))) {
|
|
param_0->getSeqCtrl()->jump(param_1[1]);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 80294398-802943CC 28ECD8 0034+00 1/0 0/0 0/0 .text cmdJmpTable__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdJmpTable(JASTrack* param_0, u32* param_1) {
|
|
u32 uVar1 = param_1[0];
|
|
uVar1 += uVar1 * 2;
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
seqCtrl->jump(seqCtrl->get24(param_1[1] + uVar1));
|
|
return 0;
|
|
}
|
|
|
|
/* 802943CC-8029441C 28ED0C 0050+00 1/0 0/0 0/0 .text cmdCallTable__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
s32 JASSeqParser::cmdCallTable(JASTrack* param_0, u32* param_1) {
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
u32 uVar1 = param_1[0];
|
|
uVar1 += uVar1 * 2;
|
|
seqCtrl->call(seqCtrl->get24(param_1[1] + uVar1));
|
|
return 0;
|
|
}
|
|
|
|
/* 8029441C-80294448 28ED5C 002C+00 1/0 0/0 0/0 .text cmdLoopS__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdLoopS(JASTrack* param_0, u32* param_1) {
|
|
param_0->getSeqCtrl()->loopStart(param_1[0]);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294448-80294470 28ED88 0028+00 1/0 0/0 0/0 .text cmdLoopE__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdLoopE(JASTrack* param_0, u32* param_1) {
|
|
param_0->getSeqCtrl()->loopEnd();
|
|
return 0;
|
|
}
|
|
|
|
/* 80294470-802944B4 28EDB0 0044+00 1/0 0/0 0/0 .text cmdNote__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdNote(JASTrack* param_0, u32* param_1) {
|
|
execNoteOnGate(param_0, param_1[1], param_1[2], param_1[3], param_1[0]);
|
|
return 0;
|
|
}
|
|
|
|
/* 802944B4-802944F4 28EDF4 0040+00 1/0 0/0 0/0 .text cmdNoteOn__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdNoteOn(JASTrack* param_0, u32* param_1) {
|
|
execNoteOnMidi(param_0, param_1[1], param_1[0], param_1[2]);
|
|
return 0;
|
|
}
|
|
|
|
/* 802944F4-80294528 28EE34 0034+00 1/0 0/0 0/0 .text cmdNoteOff__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdNoteOff(JASTrack* param_0, u32* param_1) {
|
|
execNoteOff(param_0, param_1[0]);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294528-80294588 28EE68 0060+00 1/0 0/0 0/0 .text cmdReadPort__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdReadPort(JASTrack* param_0, u32* param_1) {
|
|
u16 tmp = param_0->readPortSelf(param_1[0]);
|
|
writeReg(param_0, param_1[1], tmp);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294588-802945BC 28EEC8 0034+00 1/0 0/0 0/0 .text cmdWritePort__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
s32 JASSeqParser::cmdWritePort(JASTrack* param_0, u32* param_1) {
|
|
param_0->writePortSelf(param_1[0], param_1[1]);
|
|
return 0;
|
|
}
|
|
|
|
/* 802945BC-802945F8 28EEFC 003C+00 1/0 0/0 0/0 .text
|
|
* cmdParentWritePort__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdParentWritePort(JASTrack* param_0, u32* param_1) {
|
|
JASTrack* parent = param_0->getParent();
|
|
if (parent) {
|
|
parent->writePort(param_1[0], param_1[1]);
|
|
} else {
|
|
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 802945F8-80294644 28EF38 004C+00 1/0 0/0 0/0 .text
|
|
* cmdChildWritePort__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdChildWritePort(JASTrack* param_0, u32* param_1) {
|
|
JASTrack* child = param_0->getChild(JSUHiNibble(param_1[0]));
|
|
if (child) {
|
|
child->writePort(JSULoNibble(param_1[0]), param_1[1]);
|
|
} else {
|
|
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 80294644-802946AC 28EF84 0068+00 1/0 0/0 0/0 .text
|
|
* cmdParentReadPort__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdParentReadPort(JASTrack* param_0, u32* param_1) {
|
|
JASTrack* parent = param_0->getParent();
|
|
if (parent) {
|
|
u16 tmp = parent->readPort(param_1[0]);
|
|
writeReg(param_0, param_1[1], tmp);
|
|
} else {
|
|
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 802946AC-80294724 28EFEC 0078+00 1/0 0/0 0/0 .text
|
|
* cmdChildReadPort__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdChildReadPort(JASTrack* param_0, u32* param_1) {
|
|
JASTrack* child = param_0->getChild(JSUHiNibble(param_1[0]));
|
|
if (child) {
|
|
u16 tmp = child->readPort(JSULoNibble(param_1[0]));
|
|
writeReg(param_0, param_1[1], tmp);
|
|
} else {
|
|
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 80294724-80294770 28F064 004C+00 1/0 0/0 0/0 .text
|
|
* cmdCheckPortImport__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdCheckPortImport(JASTrack* param_0, u32* param_1) {
|
|
u8 tmp = param_0->checkPortIn(param_1[0]);
|
|
param_0->writeReg(JASRegisterParam::REG3, tmp);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294770-802947BC 28F0B0 004C+00 1/0 0/0 0/0 .text
|
|
* cmdCheckPortExport__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdCheckPortExport(JASTrack* param_0, u32* param_1) {
|
|
u8 tmp = param_0->checkPort(param_1[0]);
|
|
param_0->writeReg(JASRegisterParam::REG3, tmp);
|
|
return 0;
|
|
}
|
|
|
|
/* 802947BC-802947F4 28F0FC 0038+00 1/0 0/0 0/0 .text cmdWait__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdWait(JASTrack* param_0, u32* param_1) {
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
seqCtrl->wait(seqCtrl->readMidiValue());
|
|
return 0;
|
|
}
|
|
|
|
/* 802947F4-80294804 28F134 0010+00 1/0 0/0 0/0 .text cmdWaitByte__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdWaitByte(JASTrack* param_0, u32* param_1) {
|
|
param_0->getSeqCtrl()->wait(param_1[0]);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294804-8029483C 28F144 0038+00 1/0 0/0 0/0 .text cmdSetLastNote__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
s32 JASSeqParser::cmdSetLastNote(JASTrack* param_0, u32* param_1) {
|
|
u32 r31 = param_1[0];
|
|
if (r31 < 256) {
|
|
param_0->setLatestKey(r31);
|
|
} else {
|
|
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80455600-80455608 003C00 0004+04 1/1 0/0 0/0 .sdata2 @931 */
|
|
SECTION_SDATA2 static f32 lit_931[1 + 1 /* padding */] = {
|
|
16383.0f,
|
|
/* padding */
|
|
0.0f,
|
|
};
|
|
|
|
/* 8029483C-8029488C 28F17C 0050+00 1/0 0/0 0/0 .text cmdEnvScaleSet__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
s32 JASSeqParser::cmdEnvScaleSet(JASTrack* param_0, u32* param_1) {
|
|
param_0->setOscScale(param_1[0], param_1[1] / 16383.0f);
|
|
return 0;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s32 JASSeqParser::cmdEnvScaleSet(JASTrack* param_0, u32* param_1) {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/cmdEnvScaleSet__12JASSeqParserFP8JASTrackPUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8029488C-802948C8 28F1CC 003C+00 1/0 0/0 0/0 .text cmdEnvSet__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdEnvSet(JASTrack* param_0, u32* param_1) {
|
|
param_0->setOscTable(param_1[0], (JASOscillator::Point*)param_0->getSeqCtrl()->getAddr(param_1[1]));
|
|
return 0;
|
|
}
|
|
|
|
/* 802948C8-8029491C 28F208 0054+00 1/0 0/0 0/0 .text cmdSimpleADSR__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
s32 JASSeqParser::cmdSimpleADSR(JASTrack* param_0, u32* param_1) {
|
|
param_0->setOscAdsr(param_1[0], param_1[1], param_1[2], param_1[3], param_1[4]);
|
|
return 0;
|
|
}
|
|
|
|
/* 8029491C-8029494C 28F25C 0030+00 1/0 0/0 0/0 .text cmdBusConnect__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
s32 JASSeqParser::cmdBusConnect(JASTrack* param_0, u32* param_1) {
|
|
param_0->connectBus(param_1[0], param_1[1]);
|
|
return 0;
|
|
}
|
|
|
|
/* 8029494C-8029495C 28F28C 0010+00 1/0 0/0 0/0 .text cmdSetIntTable__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
s32 JASSeqParser::cmdSetIntTable(JASTrack* param_0, u32* param_1) {
|
|
param_0->getSeqCtrl()->setIntrTable(param_1[0]);
|
|
return 0;
|
|
}
|
|
|
|
/* 8029495C-80294988 28F29C 002C+00 1/0 0/0 0/0 .text
|
|
* cmdSetInterrupt__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdSetInterrupt(JASTrack* param_0, u32* param_1) {
|
|
param_0->getSeqCtrl()->setIntrMask(param_1[0]);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294988-802949B4 28F2C8 002C+00 1/0 0/0 0/0 .text
|
|
* cmdDisInterrupt__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdDisInterrupt(JASTrack* param_0, u32* param_1) {
|
|
param_0->getSeqCtrl()->clrIntrMask(param_1[0]);
|
|
return 0;
|
|
}
|
|
|
|
/* 802949B4-802949E4 28F2F4 0030+00 1/0 0/0 0/0 .text cmdClrI__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdClrI(JASTrack* param_0, u32* param_1) {
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
seqCtrl->clrIntr();
|
|
seqCtrl->checkIntr();
|
|
return 0;
|
|
}
|
|
|
|
/* 802949E4-80294A20 28F324 003C+00 1/0 0/0 0/0 .text cmdRetI__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdRetI(JASTrack* param_0, u32* param_1) {
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
seqCtrl->retIntr();
|
|
seqCtrl->checkIntr();
|
|
return 0;
|
|
}
|
|
|
|
/* 80294A20-80294A3C 28F360 001C+00 1/0 0/0 0/0 .text cmdIntTimer__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdIntTimer(JASTrack* param_0, u32* param_1) {
|
|
param_0->getSeqCtrl()->setIntrTimer(param_1[0], param_1[1]);
|
|
return 0;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80451240-80451244 000740 0004+00 1/1 1/1 0/0 .sbss sCallBackFunc__12JASSeqParser */
|
|
u16 (*JASSeqParser::sCallBackFunc)(JASTrack*, u16);
|
|
|
|
/* 80294A3C-80294AA4 28F37C 0068+00 1/0 0/0 0/0 .text cmdSyncCPU__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdSyncCPU(JASTrack* param_0, u32* param_1) {
|
|
u16 r31 = 0xffff;
|
|
if (sCallBackFunc) {
|
|
r31 = sCallBackFunc(param_0, param_1[0]);
|
|
}
|
|
param_0->writeReg(JASRegisterParam::REG3, r31);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294AA4-80294AD4 28F3E4 0030+00 1/0 0/0 0/0 .text cmdTempo__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdTempo(JASTrack* param_0, u32* param_1) {
|
|
param_0->setTempo(param_1[0]);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294AD4-80294ADC 28F414 0008+00 1/0 0/0 0/0 .text cmdFinish__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdFinish(JASTrack* param_0, u32* param_1) {
|
|
return -1;
|
|
}
|
|
|
|
/* 80294ADC-80294AE4 28F41C 0008+00 1/0 0/0 0/0 .text cmdNop__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdNop(JASTrack* param_0, u32* param_1) {
|
|
return 0;
|
|
}
|
|
|
|
/* 80294AE4-80294B1C 28F424 0038+00 1/0 0/0 0/0 .text cmdFIRSet__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdFIRSet(JASTrack* param_0, u32* param_1) {
|
|
param_0->setFIR((s16*)param_0->getSeqCtrl()->getAddr(param_1[0]));
|
|
return 0;
|
|
}
|
|
|
|
/* 80294B1C-80294B70 28F45C 0054+00 1/0 0/0 0/0 .text cmdIIRSet__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdIIRSet(JASTrack* param_0, u32* param_1) {
|
|
s16 stack_10[4];
|
|
for (int i = 0; i < 4; i++) {
|
|
stack_10[i] = param_1[i];
|
|
}
|
|
param_0->setIIR(stack_10);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294B70-80294BB4 28F4B0 0044+00 1/0 0/0 0/0 .text cmdIIRCutOff__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
s32 JASSeqParser::cmdIIRCutOff(JASTrack* param_0, u32* param_1) {
|
|
u32 r31 = param_1[0];
|
|
if (r31 < 128) {
|
|
param_0->setIIR(JASCalc::CUTOFF_TO_IIR_TABLE[r31]);
|
|
} else {
|
|
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 80294BB4-80294BD0 28F4F4 001C+00 1/0 0/0 0/0 .text cmdBankPrg__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdBankPrg(JASTrack* param_0, u32* param_1) {
|
|
u16 r31 = JSULoHalf(param_1[0]);
|
|
param_0->setBankNumber(JSUHiByte(r31));
|
|
param_0->setProgNumber(JSULoByte(r31));
|
|
return 0;
|
|
}
|
|
|
|
/* 80294BD0-80294BE4 28F510 0014+00 1/0 0/0 0/0 .text cmdBank__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdBank(JASTrack* param_0, u32* param_1) {
|
|
param_0->setBankNumber(param_1[0] & 0xff);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294BE4-80294BF8 28F524 0014+00 1/0 0/0 0/0 .text cmdPrg__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdPrg(JASTrack* param_0, u32* param_1) {
|
|
param_0->setProgNumber(param_1[0] & 0xff);
|
|
return 0;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80455608-80455610 003C08 0008+00 4/4 0/0 0/0 .sdata2 @1064 */
|
|
SECTION_SDATA2 static f64 lit_1064 = 4503601774854144.0 /* cast s32 to float */;
|
|
|
|
/* 80294BF8-80294C54 28F538 005C+00 1/0 0/0 0/0 .text cmdParamI__12JASSeqParserFP8JASTrackPUl */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
s32 JASSeqParser::cmdParamI(JASTrack* param_0, u32* param_1) {
|
|
param_0->setParam(param_1[0], s16(param_1[1]) / 32767.0f, 0);
|
|
return 0;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s32 JASSeqParser::cmdParamI(JASTrack* param_0, u32* param_1) {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/cmdParamI__12JASSeqParserFP8JASTrackPUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80294C54-80294CB0 28F594 005C+00 1/0 0/0 0/0 .text cmdParamII__12JASSeqParserFP8JASTrackPUl */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
s32 JASSeqParser::cmdParamII(JASTrack* param_0, u32* param_1) {
|
|
param_0->setParam(param_1[0], s16(param_1[1]) / 32767.0f, param_1[2]);
|
|
return 0;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s32 JASSeqParser::cmdParamII(JASTrack* param_0, u32* param_1) {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/cmdParamII__12JASSeqParserFP8JASTrackPUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80294CB0-80294D2C 28F5F0 007C+00 1/0 0/0 0/0 .text cmdParamE__12JASSeqParserFP8JASTrackPUl */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
s32 JASSeqParser::cmdParamE(JASTrack* param_0, u32* param_1) {
|
|
s32* r31 = (s32*)param_1 + 1;
|
|
s16 r30 = *r31 << 8;
|
|
if ((*r31 & 0x80) == 0) {
|
|
r30 = r30 | s16(*r31 << 1);
|
|
}
|
|
param_0->setParam(param_1[0], r30 / 32767.0f, 0);
|
|
return 0;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s32 JASSeqParser::cmdParamE(JASTrack* param_0, u32* param_1) {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/cmdParamE__12JASSeqParserFP8JASTrackPUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80294D2C-80294DA8 28F66C 007C+00 1/0 0/0 0/0 .text cmdParamEI__12JASSeqParserFP8JASTrackPUl */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
s32 JASSeqParser::cmdParamEI(JASTrack* param_0, u32* param_1) {
|
|
s32* r31 = (s32*)param_1 + 1;
|
|
s16 r30 = *r31 << 8;
|
|
if ((*r31 & 0x80) == 0) {
|
|
r30 = r30 | s16(*r31 << 1);
|
|
}
|
|
param_0->setParam(param_1[0], r30 / 32767.0f, param_1[2]);
|
|
return 0;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s32 JASSeqParser::cmdParamEI(JASTrack* param_0, u32* param_1) {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/cmdParamEI__12JASSeqParserFP8JASTrackPUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80294DA8-80294F10 28F6E8 0168+00 3/0 0/0 0/0 .text cmdReg__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdReg(JASTrack* param_0, u32* param_1) {
|
|
u32 r29 = param_1[1];
|
|
u32 r30 = param_1[2];
|
|
switch (param_1[0]) {
|
|
case 0:
|
|
break;
|
|
case 1:
|
|
r30 += readReg(param_0, r29);
|
|
break;
|
|
case 2:
|
|
r30 = readReg(param_0, r29) - r30;
|
|
break;
|
|
case 3:
|
|
r30 = readReg(param_0, r29) - r30;
|
|
r29 = 3;
|
|
break;
|
|
case 4:
|
|
r30 *= readReg(param_0, r29);
|
|
r29 = 0x21;
|
|
break;
|
|
case 5:
|
|
r30 &= readReg(param_0, r29);
|
|
break;
|
|
case 6:
|
|
r30 |= readReg(param_0, r29);
|
|
break;
|
|
case 7:
|
|
r30 ^= readReg(param_0, r29);
|
|
break;
|
|
case 8:
|
|
static JMath::TRandom_fast_ oRandom(0);
|
|
u32 tmp = oRandom.get_bit32() >> 9;
|
|
r30 = tmp % r30;
|
|
break;
|
|
case 9:
|
|
r30 = readReg(param_0, r29) << r30;
|
|
break;
|
|
case 10:
|
|
r30 = readReg(param_0, r29) >> r30;
|
|
break;
|
|
default:
|
|
return 0;
|
|
}
|
|
writeReg(param_0, r29, r30);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294F10-80294F40 28F850 0030+00 1/0 0/0 0/0 .text cmdRegLoad__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdRegLoad(JASTrack* param_0, u32* param_1) {
|
|
writeReg(param_0, param_1[0], param_1[1]);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294F40-80294FB4 28F880 0074+00 1/0 0/0 0/0 .text cmdRegUni__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdRegUni(JASTrack* param_0, u32* param_1) {
|
|
u32 r31 = param_1[1];
|
|
s32 r30 = 0;
|
|
switch (param_1[0]) {
|
|
case 11:
|
|
r30 = -readReg(param_0, r31);
|
|
break;
|
|
default:
|
|
return 0;
|
|
}
|
|
writeReg(param_0, r31, r30);
|
|
return 0;
|
|
}
|
|
|
|
/* 80294FB4-80295088 28F8F4 00D4+00 1/0 0/0 0/0 .text cmdRegTblLoad__12JASSeqParserFP8JASTrackPUl
|
|
*/
|
|
// case 12
|
|
#ifdef NONMATCHING
|
|
s32 JASSeqParser::cmdRegTblLoad(JASTrack* param_0, u32* param_1) {
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
u32 p1 = param_1[1];
|
|
u32 p2 = param_1[2];
|
|
u32 p3 = param_1[3];
|
|
u32 r27;
|
|
switch (param_1[0]) {
|
|
case 12:
|
|
r27 = seqCtrl->getByte(p2 + p3);
|
|
break;
|
|
case 13:
|
|
r27 = seqCtrl->get16(p2 + p3 * 2);
|
|
break;
|
|
case 14:
|
|
p3 += p3 *2;
|
|
r27 = seqCtrl->get24(p2 + p3);
|
|
break;
|
|
case 15:
|
|
r27 = seqCtrl->get32(p2 + p3 * 4);
|
|
break;
|
|
case 16:
|
|
r27 = seqCtrl->get32(p2 + p3);
|
|
break;
|
|
default:
|
|
return 0;
|
|
}
|
|
writeReg(param_0, p1, r27);
|
|
return 0;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s32 JASSeqParser::cmdRegTblLoad(JASTrack* param_0, u32* param_1) {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/cmdRegTblLoad__12JASSeqParserFP8JASTrackPUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80295088-8029526C 28F9C8 01E4+00 1/0 0/0 0/0 .text cmdDump__12JASSeqParserFP8JASTrackPUl */
|
|
s32 JASSeqParser::cmdDump(JASTrack* param_0, u32* param_1) {
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
JASReport("--------------- JASTrack (%8x) dump ----------------", param_0);
|
|
JASReport(" Base: 0x%08x Cur: 0x%08x(0x%06x)", seqCtrl->getBase(), seqCtrl->getCur(), (u8*)seqCtrl->getCur() - (u8*)seqCtrl->getBase());
|
|
JASReport("");
|
|
JASReport(" REG_A: 0x%04x REG_B: 0x%04x REG_S: 0x%04x", readReg(param_0, 0), readReg(param_0, 1), readReg(param_0, 2));
|
|
JASReport(" REG_X: 0x%04x REG_Y: 0x%04x REG_F: 0x%04x", readReg(param_0, 4), readReg(param_0, 5), readReg(param_0, 3));
|
|
JASReport("");
|
|
JASReport(" PORT 0-3: 0x%04x 0x%04x 0x%04x 0x%04x", param_0->getPort(0x0), param_0->getPort(0x1), param_0->getPort(0x2), param_0->getPort(0x3));
|
|
JASReport(" PORT 4-7: 0x%04x 0x%04x 0x%04x 0x%04x", param_0->getPort(0x4), param_0->getPort(0x5), param_0->getPort(0x6), param_0->getPort(0x7));
|
|
JASReport(" PORT 8-B: 0x%04x 0x%04x 0x%04x 0x%04x", param_0->getPort(0x8), param_0->getPort(0x9), param_0->getPort(0xa), param_0->getPort(0xb));
|
|
JASReport(" PORT C-F: 0x%04x 0x%04x 0x%04x 0x%04x", param_0->getPort(0xc), param_0->getPort(0xd), param_0->getPort(0xe), param_0->getPort(0xf));
|
|
JASReport("");
|
|
return 0;
|
|
}
|
|
|
|
/* 8029526C-80295498 28FBAC 022C+00 1/0 0/0 0/0 .text cmdPrintf__12JASSeqParserFP8JASTrackPUl */
|
|
// many things
|
|
#ifdef NONMATCHING
|
|
s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) {
|
|
char stack_c[4];
|
|
u32 stack_10[4];
|
|
char buffer[128];
|
|
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
int r30 = 0;
|
|
for (u8 i = 0; i < 128; i++) {
|
|
buffer[i] = seqCtrl->readByte();
|
|
if (buffer[i] == 0) {
|
|
break;
|
|
}
|
|
if (buffer[i] == '\\') {
|
|
buffer[i] = seqCtrl->readByte();
|
|
if (buffer[i] == 0) {
|
|
break;
|
|
}
|
|
if (buffer[i] == 'n') {
|
|
buffer[i] = '\r';
|
|
}
|
|
} else if (buffer[i] == '%') {
|
|
buffer[i + 1] = seqCtrl->readByte();
|
|
if (buffer[i + 1] == 0) {
|
|
break;
|
|
}
|
|
switch (buffer[i + 1]) {
|
|
case 'd':
|
|
stack_c[r30] = 0;
|
|
break;
|
|
case 'x':
|
|
stack_c[r30] = 1;
|
|
break;
|
|
case 's':
|
|
stack_c[r30] = 2;
|
|
break;
|
|
case 'r':
|
|
stack_c[r30] = 3;
|
|
buffer[i + 1] = 'd';
|
|
break;
|
|
case 'R':
|
|
stack_c[r30] = 4;
|
|
buffer[i + 1] = 'x';
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
r30++;
|
|
}
|
|
}
|
|
for (u32 i = 0; i < r30; i++) {
|
|
stack_10[i] = seqCtrl->readByte();
|
|
switch (stack_c[i]) {
|
|
case 2:
|
|
stack_10[i] = (u32)seqCtrl->getAddr(stack_10[i]);
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
stack_10[i] = readReg(param_0, stack_10[i] & 0xff);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
JASReport(buffer, stack_10[0], stack_10[1], stack_10[2], stack_10[3]);
|
|
return 0;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/cmdPrintf__12JASSeqParserFP8JASTrackPUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80295498-80295540 28FDD8 00A8+00 1/0 0/0 0/0 .text
|
|
* execNoteOnGate__12JASSeqParserFP8JASTrackUlUlUlUl */
|
|
// stack shenanigans
|
|
#ifdef NONMATCHING
|
|
s32 JASSeqParser::execNoteOnGate(JASTrack* param_0, u32 param_1, u32 param_2, u32 param_3,
|
|
u32 param_4) {
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
u8 tmp = param_4;
|
|
int r31 = 0;
|
|
if (tmp >> 6 & 1) {
|
|
r31 |= 2;
|
|
}
|
|
if (tmp >> 7 & 1) {
|
|
r31 |= 1;
|
|
}
|
|
if (param_3 == 0) {
|
|
r31 |= 4;
|
|
}
|
|
int result = param_0->gateOn(param_1, param_2, param_3, r31);
|
|
if (param_3) {
|
|
seqCtrl->wait(param_3);
|
|
} else {
|
|
seqCtrl->waitNoteFinish();
|
|
}
|
|
return result;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s32 JASSeqParser::execNoteOnGate(JASTrack* param_0, u32 param_1, u32 param_2, u32 param_3,
|
|
u32 param_4) {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/execNoteOnGate__12JASSeqParserFP8JASTrackUlUlUlUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80295540-80295570 28FE80 0030+00 1/0 0/0 0/0 .text
|
|
* execNoteOnMidi__12JASSeqParserFP8JASTrackUlUlUl */
|
|
s32 JASSeqParser::execNoteOnMidi(JASTrack* param_0, u32 param_1, u32 param_2, u32 param_3) {
|
|
return param_0->noteOn(param_1, param_2, param_3);
|
|
}
|
|
|
|
/* 80295570-8029559C 28FEB0 002C+00 1/0 0/0 0/0 .text execNoteOff__12JASSeqParserFP8JASTrackUl */
|
|
s32 JASSeqParser::execNoteOff(JASTrack* param_0, u32 param_1) {
|
|
return param_0->noteOff(param_1, 0);
|
|
}
|
|
|
|
/* 8029559C-802955C8 28FEDC 002C+00 1/0 0/0 0/0 .text
|
|
* execCommand__12JASSeqParserFP8JASTrackM12JASSeqParserFPCvPvP8JASTrackPUl_lUlPUl */
|
|
s32 JASSeqParser::execCommand(JASTrack* param_0, s32 (JASSeqParser::*param_1)(JASTrack*, u32*),
|
|
u32 param_2, u32* param_3) {
|
|
return (this->*param_1)(param_0, param_3);
|
|
}
|
|
|
|
/* 802955C8-80295600 28FF08 0038+00 1/1 0/0 0/0 .text parseNoteOff__12JASSeqParserFP8JASTrackUc */
|
|
s32 JASSeqParser::parseNoteOff(JASTrack* param_0, u8 param_1) {
|
|
if (param_1 & 7) {
|
|
execNoteOff(param_0, param_1 & 7);
|
|
} else {
|
|
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 80295600-802956B0 28FF40 00B0+00 1/1 0/0 0/0 .text parseNoteOn__12JASSeqParserFP8JASTrackUc */
|
|
s32 JASSeqParser::parseNoteOn(JASTrack* param_0, u8 param_1) {
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
u32 r28 = seqCtrl->readByte();
|
|
u32 r27 = seqCtrl->readByte();
|
|
if ((r28 & 7) == 0) {
|
|
execNoteOnGate(param_0, param_1, r27, seqCtrl->readMidiValue(), r28);
|
|
} else {
|
|
execNoteOnMidi(param_0, r28 & 7, param_1, r27);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* 802956B0-80295864 28FFF0 01B4+00 2/2 0/0 0/0 .text parseCommand__12JASSeqParserFP8JASTrackUcUs
|
|
*/
|
|
// u16 bit or
|
|
#ifdef NONMATCHING
|
|
s32 JASSeqParser::parseCommand(JASTrack* param_0, u8 cmd, u16 param_2) {
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
CmdInfo* cmdInfo = NULL;
|
|
if (cmd != 0xb0) {
|
|
cmdInfo = &sCmdInfo[cmd - 0xa0];
|
|
} else {
|
|
cmdInfo = &sExtCmdInfo[seqCtrl->readByte() & 0xff];
|
|
}
|
|
u16 r28 = cmdInfo->field_0xe | param_2;
|
|
u32 stack_28[8];
|
|
for (int i = 0; i < cmdInfo->field_0xc; i++) {
|
|
int r27 = 0;
|
|
switch (r28 & 3) {
|
|
case 0:
|
|
r27 = seqCtrl->readByte();
|
|
break;
|
|
case 1:
|
|
r27 = seqCtrl->read16();
|
|
break;
|
|
case 2:
|
|
r27 = seqCtrl->read24();
|
|
break;
|
|
case 3:
|
|
r27 = readReg(param_0, seqCtrl->readByte());
|
|
break;
|
|
}
|
|
stack_28[i] = r27;
|
|
r28 >>= 2;
|
|
}
|
|
s32 (JASSeqParser::*ptr)(JASTrack*, u32*) = cmdInfo->field_0x0;
|
|
if (!ptr) {
|
|
return 0;
|
|
}
|
|
return execCommand(param_0, ptr, cmdInfo->field_0xc, stack_28);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s32 JASSeqParser::parseCommand(JASTrack* param_0, u8 param_1, u16 param_2) {
|
|
nofralloc
|
|
#include "asm/JSystem/JAudio2/JASSeqParser/parseCommand__12JASSeqParserFP8JASTrackUcUs.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80295864-802958D4 2901A4 0070+00 1/1 0/0 0/0 .text parseRegCommand__12JASSeqParserFP8JASTracki
|
|
*/
|
|
s32 JASSeqParser::parseRegCommand(JASTrack* param_0, int param_1) {
|
|
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
|
|
u8 r30 = seqCtrl->readByte();
|
|
u16 r29 = 0;
|
|
u16 r28 = 3;
|
|
for (int i = 0; i < param_1; i++) {
|
|
if (r30 & 0x80) {
|
|
r29 |= r28;
|
|
}
|
|
r30 <<= 1;
|
|
r28 <<= 2;
|
|
}
|
|
return parseCommand(param_0, seqCtrl->readByte(), r29);
|
|
}
|
|
|
|
/* 802958D4-80295950 290214 007C+00 1/0 0/0 0/0 .text parse__12JASSeqParserFP8JASTrack */
|
|
s32 JASSeqParser::parse(JASTrack* param_0) {
|
|
u32 r31 = param_0->getSeqCtrl()->readByte();
|
|
s32 r30 = 0;
|
|
if ((r31 & 0x80) == 0) {
|
|
r30 = parseNoteOn(param_0, r31);
|
|
} else {
|
|
switch (r31 & 0xf0) {
|
|
case 0x80:
|
|
r30 = parseNoteOff(param_0, r31 & 0xf);
|
|
break;
|
|
case 0x90:
|
|
r30 = parseRegCommand(param_0, (r31 & 7) + 1);
|
|
break;
|
|
default:
|
|
r30 = parseCommand(param_0, r31, 0);
|
|
break;
|
|
}
|
|
}
|
|
return r30;
|
|
}
|