diff --git a/src/sound/Y8950Adpcm.cc b/src/sound/Y8950Adpcm.cc index 1cbd40b1d..328808aa9 100644 --- a/src/sound/Y8950Adpcm.cc +++ b/src/sound/Y8950Adpcm.cc @@ -260,7 +260,7 @@ void Y8950Adpcm::writeData(byte data) emu.memPntr = startAddr; readDelay = 0; } - if (emu.memPntr <= stopAddr) { + if (emu.memPntr < stopAddr) { writeMemory(emu.memPntr, data); emu.memPntr += 2; // two nibbles at a time @@ -281,6 +281,9 @@ void Y8950Adpcm::writeData(byte data) } else { // set EOS bit in status register y8950.setStatus(Y8950::STATUS_EOS); + // Eugeny tested that the pointer wraps when writing + // after EOS is set + emu.memPntr = startAddr; } } else if ((reg7 & R07_MODE) == 0x80) {