diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index 4d4935b5..cc4abc88 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -179,6 +179,11 @@ int DivPlatformGenesisExt::dispatch(DivCommand c) { rWrite(0x22,lfoValue); break; } + case DIV_CMD_FM_FB: { + chan[2].state.fb=c.value&7; + rWrite(chanOffs[2]+ADDR_FB_ALG,(chan[2].state.alg&7)|(chan[2].state.fb<<3)); + break; + } case DIV_CMD_FM_MULT: { // TODO unsigned short baseAddr=chanOffs[2]|opOffs[orderedOps[c.value]]; DivInstrumentFM::Operator& op=chan[2].state.op[orderedOps[c.value]]; diff --git a/src/engine/platform/ym2203ext.cpp b/src/engine/platform/ym2203ext.cpp index 929687fe..95937207 100644 --- a/src/engine/platform/ym2203ext.cpp +++ b/src/engine/platform/ym2203ext.cpp @@ -155,6 +155,11 @@ int DivPlatformYM2203Ext::dispatch(DivCommand c) { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; } + case DIV_CMD_FM_FB: { + chan[2].state.fb=c.value&7; + rWrite(chanOffs[2]+ADDR_FB_ALG,(chan[2].state.alg&7)|(chan[2].state.fb<<3)); + break; + } case DIV_CMD_FM_MULT: { // TODO unsigned short baseAddr=chanOffs[2]|opOffs[orderedOps[c.value]]; DivInstrument* ins=parent->getIns(opChan[ch].ins,DIV_INS_FM); diff --git a/src/engine/platform/ym2608ext.cpp b/src/engine/platform/ym2608ext.cpp index 285e350d..441640b4 100644 --- a/src/engine/platform/ym2608ext.cpp +++ b/src/engine/platform/ym2608ext.cpp @@ -155,6 +155,11 @@ int DivPlatformYM2608Ext::dispatch(DivCommand c) { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; } + case DIV_CMD_FM_FB: { + chan[2].state.fb=c.value&7; + rWrite(chanOffs[2]+ADDR_FB_ALG,(chan[2].state.alg&7)|(chan[2].state.fb<<3)); + break; + } case DIV_CMD_FM_MULT: { // TODO unsigned short baseAddr=chanOffs[2]|opOffs[orderedOps[c.value]]; DivInstrument* ins=parent->getIns(opChan[ch].ins,DIV_INS_FM); diff --git a/src/engine/platform/ym2610bext.cpp b/src/engine/platform/ym2610bext.cpp index 20b56c01..cd7e494b 100644 --- a/src/engine/platform/ym2610bext.cpp +++ b/src/engine/platform/ym2610bext.cpp @@ -155,6 +155,11 @@ int DivPlatformYM2610BExt::dispatch(DivCommand c) { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; } + case DIV_CMD_FM_FB: { + chan[2].state.fb=c.value&7; + rWrite(chanOffs[2]+ADDR_FB_ALG,(chan[2].state.alg&7)|(chan[2].state.fb<<3)); + break; + } case DIV_CMD_FM_MULT: { // TODO unsigned short baseAddr=chanOffs[2]|opOffs[orderedOps[c.value]]; DivInstrument* ins=parent->getIns(opChan[ch].ins,DIV_INS_FM); diff --git a/src/engine/platform/ym2610ext.cpp b/src/engine/platform/ym2610ext.cpp index a3d5df21..bf6df44e 100644 --- a/src/engine/platform/ym2610ext.cpp +++ b/src/engine/platform/ym2610ext.cpp @@ -155,6 +155,11 @@ int DivPlatformYM2610Ext::dispatch(DivCommand c) { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; } + case DIV_CMD_FM_FB: { + chan[1].state.fb=c.value&7; + rWrite(chanOffs[1]+ADDR_FB_ALG,(chan[1].state.alg&7)|(chan[1].state.fb<<3)); + break; + } case DIV_CMD_FM_MULT: { // TODO unsigned short baseAddr=chanOffs[1]|opOffs[orderedOps[c.value]]; DivInstrument* ins=parent->getIns(opChan[ch].ins,DIV_INS_FM);