summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JAudio2/JASSeqParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/JSystem/src/JAudio2/JASSeqParser.cpp')
-rw-r--r--libs/JSystem/src/JAudio2/JASSeqParser.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/libs/JSystem/src/JAudio2/JASSeqParser.cpp b/libs/JSystem/src/JAudio2/JASSeqParser.cpp
index fa3060952a..78f7dfad14 100644
--- a/libs/JSystem/src/JAudio2/JASSeqParser.cpp
+++ b/libs/JSystem/src/JAudio2/JASSeqParser.cpp
@@ -950,7 +950,7 @@ s32 JASSeqParser::parseNoteOn(JASTrack* param_0, u8 param_1) {
return 0;
}
-s32 JASSeqParser::parseCommand(JASTrack* param_0, u8 cmd, u16 param_2) {
+s32 JASSeqParser::parseCommand(JASTrack* param_0, u8 cmd, u16 parameterTypesOverride) {
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
CmdInfo* cmdInfo = NULL;
if (cmd != 0xb0) {
@@ -959,32 +959,32 @@ s32 JASSeqParser::parseCommand(JASTrack* param_0, u8 cmd, u16 param_2) {
} else {
cmdInfo = &sExtCmdInfo[seqCtrl->readByte() & 0xff];
}
- u16 r28 = (u16)cmdInfo->field_0xe;
- r28 |= param_2;
- u32 stack_28[8];
- for (int i = 0; i < cmdInfo->field_0xc; i++, r28 >>= 2) {
- int r27 = 0;
- switch (r28 & 3) {
+ u16 parameterTypes = (u16)cmdInfo->mParameterTypes;
+ parameterTypes |= parameterTypesOverride;
+ u32 args[8];
+ for (int i = 0; i < cmdInfo->mParameterCount; i++, parameterTypes >>= 2) {
+ int value = 0;
+ switch (parameterTypes & 3) {
case 0:
- r27 = (u8)seqCtrl->readByte();
+ value = (u8)seqCtrl->readByte();
break;
case 1:
- r27 = (u16)seqCtrl->read16();
+ value = (u16)seqCtrl->read16();
break;
case 2:
- r27 = seqCtrl->read24();
+ value = seqCtrl->read24();
break;
case 3:
- r27 = readReg(param_0, (u8)seqCtrl->readByte());
+ value = readReg(param_0, (u8)seqCtrl->readByte());
break;
}
- stack_28[i] = r27;
+ args[i] = value;
}
- s32 (JASSeqParser::*ptr)(JASTrack*, u32*) = cmdInfo->field_0x0;
+ s32 (JASSeqParser::*ptr)(JASTrack*, u32*) = cmdInfo->mHandler;
if (!ptr) {
return 0;
}
- return execCommand(param_0, ptr, cmdInfo->field_0xc, stack_28);
+ return execCommand(param_0, ptr, cmdInfo->mParameterCount, args);
}
s32 JASSeqParser::parseRegCommand(JASTrack* param_0, int param_1) {