OPM/OPZ: FMS/AMS effects

This commit is contained in:
tildearrow 2025-05-21 15:18:59 -05:00
parent 7210187df5
commit 1d786a0c77
2 changed files with 30 additions and 0 deletions

View file

@ -630,6 +630,16 @@ int DivPlatformArcade::dispatch(DivCommand c) {
}
break;
}
case DIV_CMD_FM_FMS: {
chan[c.chan].state.fms=c.value&7;
rWrite(chanOffs[c.chan]+ADDR_FMS_AMS,((chan[c.chan].state.fms&7)<<4)|(chan[c.chan].state.ams&3));
break;
}
case DIV_CMD_FM_AMS: {
chan[c.chan].state.ams=c.value&3;
rWrite(chanOffs[c.chan]+ADDR_FMS_AMS,((chan[c.chan].state.fms&7)<<4)|(chan[c.chan].state.ams&3));
break;
}
case DIV_CMD_FM_MULT: {
unsigned short baseAddr=chanOffs[c.chan]|opOffs[orderedOps[c.value]];
DivInstrumentFM::Operator& op=chan[c.chan].state.op[orderedOps[c.value]];

View file

@ -679,6 +679,26 @@ int DivPlatformTX81Z::dispatch(DivCommand c) {
}*/
break;
}
case DIV_CMD_FM_FMS: {
chan[c.chan].state.fms=c.value&7;
rWrite(chanOffs[c.chan]+ADDR_FMS_AMS,((chan[c.chan].state.fms&7)<<4)|(chan[c.chan].state.ams&3));
break;
}
case DIV_CMD_FM_AMS: {
chan[c.chan].state.ams=c.value&3;
rWrite(chanOffs[c.chan]+ADDR_FMS_AMS,((chan[c.chan].state.fms&7)<<4)|(chan[c.chan].state.ams&3));
break;
}
case DIV_CMD_FM_FMS2: {
chan[c.chan].state.fms2=c.value&7;
rWrite(chanOffs[c.chan]+ADDR_FMS2_AMS2,((chan[c.chan].state.fms2&7)<<4)|(chan[c.chan].state.ams2&3));
break;
}
case DIV_CMD_FM_AMS2: {
chan[c.chan].state.ams2=c.value&3;
rWrite(chanOffs[c.chan]+ADDR_FMS2_AMS2,((chan[c.chan].state.fms2&7)<<4)|(chan[c.chan].state.ams2&3));
break;
}
case DIV_CMD_FM_MULT: {
unsigned short baseAddr=chanOffs[c.chan]|opOffs[orderedOps[c.value]];
DivInstrumentFM::Operator& op=chan[c.chan].state.op[orderedOps[c.value]];