OPL: fix kick volume in drums mode

This commit is contained in:
tildearrow 2022-05-23 00:07:32 -05:00
parent 1a446c1cdd
commit 519bf244b9
1 changed files with 9 additions and 9 deletions

View File

@ -352,7 +352,7 @@ void DivPlatformOPL::tick(bool sysTick) {
if (isMuted[i]) { if (isMuted[i]) {
rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6));
} else { } else {
if (isOutputL[ops==4][chan[i].state.alg][j] || i>=melodicChans) { if (isOutputL[ops==4][chan[i].state.alg][j] || i>melodicChans) {
rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[i].outVol&0x3f))/63))|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[i].outVol&0x3f))/63))|(op.ksl<<6));
} else { } else {
rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6));
@ -479,7 +479,7 @@ void DivPlatformOPL::tick(bool sysTick) {
if (isMuted[i]) { if (isMuted[i]) {
rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6));
} else { } else {
if (isOutputL[ops==4][chan[i].state.alg][j] || i>=melodicChans) { if (isOutputL[ops==4][chan[i].state.alg][j] || i>melodicChans) {
rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[i].outVol&0x3f))/63))|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[i].outVol&0x3f))/63))|(op.ksl<<6));
} else { } else {
rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6));
@ -688,7 +688,7 @@ void DivPlatformOPL::muteChannel(int ch, bool mute) {
if (isMuted[ch]) { if (isMuted[ch]) {
rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6));
} else { } else {
if (isOutputL[ops==4][chan[ch].state.alg][i] || ch>=melodicChans) { if (isOutputL[ops==4][chan[ch].state.alg][i] || ch>melodicChans) {
rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[ch].outVol&0x3f))/63))|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[ch].outVol&0x3f))/63))|(op.ksl<<6));
} else { } else {
rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6));
@ -808,7 +808,7 @@ int DivPlatformOPL::dispatch(DivCommand c) {
if (isMuted[c.chan]) { if (isMuted[c.chan]) {
rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6));
} else { } else {
if (isOutputL[ops==4][chan[c.chan].state.alg][i] || c.chan>=melodicChans) { if (isOutputL[ops==4][chan[c.chan].state.alg][i] || c.chan>melodicChans) {
rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[c.chan].outVol&0x3f))/63))|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[c.chan].outVol&0x3f))/63))|(op.ksl<<6));
} else { } else {
rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6));
@ -911,7 +911,7 @@ int DivPlatformOPL::dispatch(DivCommand c) {
if (isMuted[c.chan]) { if (isMuted[c.chan]) {
rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6));
} else { } else {
if (isOutputL[ops==4][chan[c.chan].state.alg][i] || c.chan>=melodicChans) { if (isOutputL[ops==4][chan[c.chan].state.alg][i] || c.chan>melodicChans) {
rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[c.chan].outVol&0x3f))/63))|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[c.chan].outVol&0x3f))/63))|(op.ksl<<6));
} else { } else {
rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6));
@ -1060,7 +1060,7 @@ int DivPlatformOPL::dispatch(DivCommand c) {
if (isMuted[c.chan]) { if (isMuted[c.chan]) {
rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6));
} else { } else {
if (isOutputL[ops==4][chan[c.chan].state.alg][c.value] || c.chan>=melodicChans) { if (isOutputL[ops==4][chan[c.chan].state.alg][c.value] || c.chan>melodicChans) {
rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[c.chan].outVol&0x3f))/63))|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[c.chan].outVol&0x3f))/63))|(op.ksl<<6));
} else { } else {
rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6));
@ -1290,7 +1290,7 @@ int DivPlatformOPL::dispatch(DivCommand c) {
if (isMuted[c.chan]) { if (isMuted[c.chan]) {
rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6));
} else { } else {
if (isOutputL[ops==4][chan[c.chan].state.alg][i] || c.chan>=melodicChans) { if (isOutputL[ops==4][chan[c.chan].state.alg][i] || c.chan>melodicChans) {
rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[c.chan].outVol&0x3f))/63))|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[c.chan].outVol&0x3f))/63))|(op.ksl<<6));
} else { } else {
rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6));
@ -1307,7 +1307,7 @@ int DivPlatformOPL::dispatch(DivCommand c) {
if (isMuted[c.chan]) { if (isMuted[c.chan]) {
rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6));
} else { } else {
if (isOutputL[ops==4][chan[c.chan].state.alg][c.value] || c.chan>=melodicChans) { if (isOutputL[ops==4][chan[c.chan].state.alg][c.value] || c.chan>melodicChans) {
rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[c.chan].outVol&0x3f))/63))|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[c.chan].outVol&0x3f))/63))|(op.ksl<<6));
} else { } else {
rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6));
@ -1380,7 +1380,7 @@ void DivPlatformOPL::forceIns() {
if (isMuted[i]) { if (isMuted[i]) {
rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,63|(op.ksl<<6));
} else { } else {
if (isOutputL[ops==4][chan[i].state.alg][j] || i>=melodicChans) { if (isOutputL[ops==4][chan[i].state.alg][j] || i>melodicChans) {
rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[i].outVol&0x3f))/63))|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,(63-(((63-op.tl)*(chan[i].outVol&0x3f))/63))|(op.ksl<<6));
} else { } else {
rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6)); rWrite(baseAddr+ADDR_KSL_TL,op.tl|(op.ksl<<6));