NES: fix envelope mode not set in reset/forceIns
This commit is contained in:
parent
2871e8df07
commit
f21da72eaf
|
@ -843,6 +843,13 @@ void DivPlatformNES::forceIns() {
|
||||||
for (int i=0; i<5; i++) {
|
for (int i=0; i<5; i++) {
|
||||||
chan[i].insChanged=true;
|
chan[i].insChanged=true;
|
||||||
chan[i].prevFreq=65535;
|
chan[i].prevFreq=65535;
|
||||||
|
if (i<4) {
|
||||||
|
if (i==2) { // triangle
|
||||||
|
rWrite(0x4000+i*4,(chan[i].outVol==0 || !chan[i].active)?0:linearCount);
|
||||||
|
} else {
|
||||||
|
rWrite(0x4000+i*4,(chan[i].envMode<<4)|(chan[i].active?chan[i].outVol:0)|((chan[i].duty&3)<<6));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
rWrite(0x4001,chan[0].sweep);
|
rWrite(0x4001,chan[0].sweep);
|
||||||
rWrite(0x4005,chan[1].sweep);
|
rWrite(0x4005,chan[1].sweep);
|
||||||
|
@ -921,6 +928,16 @@ void DivPlatformNES::reset() {
|
||||||
rWrite(0x4001,chan[0].sweep);
|
rWrite(0x4001,chan[0].sweep);
|
||||||
rWrite(0x4005,chan[1].sweep);
|
rWrite(0x4005,chan[1].sweep);
|
||||||
|
|
||||||
|
for (int i=0; i<4; i++) {
|
||||||
|
if (i<4) {
|
||||||
|
if (i==2) { // triangle
|
||||||
|
rWrite(0x4000+i*4,0);
|
||||||
|
} else {
|
||||||
|
rWrite(0x4000+i*4,(chan[i].envMode<<4)|0|((chan[i].duty&3)<<6));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dacAntiClickOn=true;
|
dacAntiClickOn=true;
|
||||||
dacAntiClick=0;
|
dacAntiClick=0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue