OPN: FMS/AMS effects

This commit is contained in:
tildearrow 2025-05-21 15:10:47 -05:00
parent 78fb9c4df5
commit 7210187df5
7 changed files with 61 additions and 1 deletions

View file

@ -1501,6 +1501,18 @@ int DivPlatformYM2610B::dispatch(DivCommand c) {
rWrite(chanOffs[c.chan]+ADDR_FB_ALG,(chan[c.chan].state.alg&7)|(chan[c.chan].state.fb<<3));
break;
}
case DIV_CMD_FM_FMS: {
if (c.chan>=psgChanOffs) break;
chan[c.chan].state.fms=c.value&7;
rWrite(chanOffs[c.chan]+ADDR_LRAF,(isMuted[c.chan]?0:(chan[c.chan].pan<<6))|(chan[c.chan].state.fms&7)|((chan[c.chan].state.ams&3)<<4));
break;
}
case DIV_CMD_FM_AMS: {
if (c.chan>=psgChanOffs) break;
chan[c.chan].state.ams=c.value&3;
rWrite(chanOffs[c.chan]+ADDR_LRAF,(isMuted[c.chan]?0:(chan[c.chan].pan<<6))|(chan[c.chan].state.fms&7)|((chan[c.chan].state.ams&3)<<4));
break;
}
case DIV_CMD_FM_MULT: {
if (c.chan>=psgChanOffs) break;
unsigned short baseAddr=chanOffs[c.chan]|opOffs[orderedOps[c.value]];