fix artificial intelligence bomb

and a couple of songs that used 02xx after note off
This commit is contained in:
tildearrow 2022-02-08 22:46:58 -05:00
parent fd8b144185
commit f1730baefa
10 changed files with 32 additions and 12 deletions

View File

@ -250,7 +250,9 @@ int DivPlatformAmiga::dispatch(DivCommand c) {
break;
}
case DIV_CMD_PRE_PORTA:
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
if (chan[c.chan].active) {
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
}
chan[c.chan].inPorta=c.value;
break;
case DIV_CMD_GET_VOLMAX:

View File

@ -315,7 +315,9 @@ int DivPlatformAY8910::dispatch(DivCommand c) {
return 15;
break;
case DIV_CMD_PRE_PORTA:
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
if (chan[c.chan].active) {
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
}
chan[c.chan].inPorta=c.value;
break;
case DIV_CMD_PRE_NOTE:

View File

@ -368,7 +368,9 @@ int DivPlatformAY8930::dispatch(DivCommand c) {
return 31;
break;
case DIV_CMD_PRE_PORTA:
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
if (chan[c.chan].active) {
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
}
chan[c.chan].inPorta=c.value;
break;
case DIV_CMD_PRE_NOTE:

View File

@ -271,9 +271,11 @@ int DivPlatformC64::dispatch(DivCommand c) {
chan[c.chan].note=c.value;
break;
case DIV_CMD_PRE_PORTA:
if (parent->song.resetMacroOnPorta) {
chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
chan[c.chan].keyOn=true;
if (chan[c.chan].active) {
if (parent->song.resetMacroOnPorta) {
chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
chan[c.chan].keyOn=true;
}
}
chan[c.chan].inPorta=c.value;
break;

View File

@ -375,7 +375,9 @@ int DivPlatformNES::dispatch(DivCommand c) {
chan[c.chan].note=c.value;
break;
case DIV_CMD_PRE_PORTA:
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
if (chan[c.chan].active) {
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
}
chan[c.chan].inPorta=c.value;
break;
case DIV_CMD_GET_VOLMAX:

View File

@ -366,7 +366,9 @@ int DivPlatformPCE::dispatch(DivCommand c) {
chan[c.chan].note=c.value;
break;
case DIV_CMD_PRE_PORTA:
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
if (chan[c.chan].active) {
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
}
chan[c.chan].inPorta=c.value;
break;
case DIV_CMD_GET_VOLMAX:

View File

@ -262,7 +262,9 @@ int DivPlatformSAA1099::dispatch(DivCommand c) {
return 15;
break;
case DIV_CMD_PRE_PORTA:
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
if (chan[c.chan].active) {
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
}
chan[c.chan].inPorta=c.value;
break;
case DIV_CMD_PRE_NOTE:

View File

@ -188,7 +188,9 @@ int DivPlatformSMS::dispatch(DivCommand c) {
chan[c.chan].actualNote=c.value;
break;
case DIV_CMD_PRE_PORTA:
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
if (chan[c.chan].active) {
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
}
chan[c.chan].inPorta=c.value;
break;
case DIV_CMD_GET_VOLMAX:

View File

@ -215,7 +215,9 @@ int DivPlatformTIA::dispatch(DivCommand c) {
return 15;
break;
case DIV_CMD_PRE_PORTA:
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
if (chan[c.chan].active) {
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
}
chan[c.chan].inPorta=c.value;
break;
case DIV_CMD_PRE_NOTE:

View File

@ -674,7 +674,9 @@ int DivPlatformYM2610::dispatch(DivCommand c) {
break;
case DIV_CMD_PRE_PORTA:
if (c.chan>3) {
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
if (chan[c.chan].active) {
if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins));
}
}
chan[c.chan].inPorta=c.value;
break;