diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 7acbe3a7e..d36b40216 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -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]]; diff --git a/src/engine/platform/tx81z.cpp b/src/engine/platform/tx81z.cpp index fe709240d..ba2e879bb 100644 --- a/src/engine/platform/tx81z.cpp +++ b/src/engine/platform/tx81z.cpp @@ -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]];