OPN/2/A/B: implement new op enable

This commit is contained in:
tildearrow 2023-02-09 17:36:33 -05:00
parent 932963af34
commit 00b329b896
12 changed files with 243 additions and 116 deletions

View file

@ -293,7 +293,7 @@ void DivPlatformYM2203::tick(bool sysTick) {
for (int j=0; j<4; j++) {
unsigned short baseAddr=chanOffs[i]|opOffs[j];
DivInstrumentFM::Operator& op=chan[i].state.op[j];
if (isMuted[i]) {
if (isMuted[i] || !op.enable) {
rWrite(baseAddr+ADDR_TL,127);
} else {
if (KVS(i,j)) {
@ -336,7 +336,7 @@ void DivPlatformYM2203::tick(bool sysTick) {
if (!parent->song.algMacroBehavior) for (int j=0; j<4; j++) {
unsigned short baseAddr=chanOffs[i]|opOffs[j];
DivInstrumentFM::Operator& op=chan[i].state.op[j];
if (isMuted[i]) {
if (isMuted[i] || !op.enable) {
rWrite(baseAddr+ADDR_TL,127);
} else {
if (KVS(i,j)) {
@ -385,7 +385,7 @@ void DivPlatformYM2203::tick(bool sysTick) {
}
if (m.tl.had) {
op.tl=127-m.tl.val;
if (isMuted[i]) {
if (isMuted[i] || !op.enable) {
rWrite(baseAddr+ADDR_TL,127);
} else {
if (KVS(i,j)) {
@ -508,7 +508,7 @@ void DivPlatformYM2203::commitState(int ch, DivInstrument* ins) {
for (int i=0; i<4; i++) {
unsigned short baseAddr=chanOffs[ch]|opOffs[i];
DivInstrumentFM::Operator& op=chan[ch].state.op[i];
if (isMuted[ch]) {
if (isMuted[ch] || !op.enable) {
rWrite(baseAddr+ADDR_TL,127);
} else {
if (KVS(ch,i)) {
@ -586,7 +586,7 @@ int DivPlatformYM2203::dispatch(DivCommand c) {
for (int i=0; i<4; i++) {
unsigned short baseAddr=chanOffs[c.chan]|opOffs[i];
DivInstrumentFM::Operator& op=chan[c.chan].state.op[i];
if (isMuted[c.chan]) {
if (isMuted[c.chan] || !op.enable) {
rWrite(baseAddr+ADDR_TL,127);
} else {
if (KVS(c.chan,i)) {
@ -676,7 +676,7 @@ int DivPlatformYM2203::dispatch(DivCommand c) {
unsigned short baseAddr=chanOffs[c.chan]|opOffs[orderedOps[c.value]];
DivInstrumentFM::Operator& op=chan[c.chan].state.op[orderedOps[c.value]];
op.tl=c.value2;
if (isMuted[c.chan]) {
if (isMuted[c.chan] || !op.enable) {
rWrite(baseAddr+ADDR_TL,127);
} else {
if (KVS(c.chan,c.value)) {
@ -874,7 +874,7 @@ void DivPlatformYM2203::muteChannel(int ch, bool mute) {
for (int j=0; j<4; j++) {
unsigned short baseAddr=chanOffs[ch]|opOffs[j];
DivInstrumentFM::Operator& op=chan[ch].state.op[j];
if (isMuted[ch]) {
if (isMuted[ch] || !op.enable) {
rWrite(baseAddr+ADDR_TL,127);
} else {
if (KVS(ch,j)) {
@ -891,7 +891,7 @@ void DivPlatformYM2203::forceIns() {
for (int j=0; j<4; j++) {
unsigned short baseAddr=chanOffs[i]|opOffs[j];
DivInstrumentFM::Operator& op=chan[i].state.op[j];
if (isMuted[i]) {
if (isMuted[i] || !op.enable) {
rWrite(baseAddr+ADDR_TL,127);
} else {
if (KVS(i,j)) {