- Fixed a DSB2 bug: masking of bytes when constructing start/end addresses is now correct (previously was allowing uninitialized garbage into upper 8 bits, which ought to be 0).

This commit is contained in:
Bart Trzynadlowski 2011-08-03 06:06:18 +00:00
parent 6a6788952c
commit 915a6c5a17

View file

@ -572,17 +572,17 @@ void CDSB2::WriteMPEGFIFO(UINT8 byte)
break;
case ST_GOT14:
mpegStart &= ~0xff0000;
mpegStart &= 0x00FFFF;
mpegStart |= (byte<<16);
mpegState++;
break;
case ST_14_0:
mpegStart &= ~0xff00;
mpegStart &= 0xFF00FF;
mpegStart |= (byte<<8);
mpegState++;
break;
case ST_14_1:
mpegStart &= ~0xff;
mpegStart &= 0xFFFF00;
mpegStart |= (byte);
mpegState = ST_IDLE;
@ -595,17 +595,17 @@ void CDSB2::WriteMPEGFIFO(UINT8 byte)
printf("mpegStart=%x\n", mpegStart);
break;
case ST_GOT24:
mpegEnd &= ~0xff0000;
mpegEnd &= 0x00FFFF;
mpegEnd |= (byte<<16);
mpegState++;
break;
case ST_24_0:
mpegEnd &= ~0xff00;
mpegEnd &= 0xFF00FF;
mpegEnd |= (byte<<8);
mpegState++;
break;
case ST_24_1:
mpegEnd &= ~0xff;
mpegEnd &= 0xFFFF00;
mpegEnd |= (byte);
printf("mpegEnd=%x\n", mpegEnd);
@ -827,6 +827,8 @@ void CDSB2::Reset(void)
fifoIdxW = fifoIdxR = 0;
mpegState = ST_IDLE;
mpegStart = 0;
mpegEnd = 0;
playing = 0;
M68KSetContext(&M68K);