fix dendy buffer overflow caused by "cleanup"

fix #721
This commit is contained in:
feos-tas 2016-07-05 16:27:23 +00:00
parent 6dc943d6b1
commit 4869518747
1 changed files with 5 additions and 4 deletions

View File

@ -1225,7 +1225,7 @@ static void Fixit1(void) {
void MMC5_hb(int); //Ugh ugh ugh. void MMC5_hb(int); //Ugh ugh ugh.
static void DoLine(void) { static void DoLine(void) {
if (overclocking) { if (scanline >= 240 && scanline != totalscanlines) {
X6502_Run(256 + 69); X6502_Run(256 + 69);
scanline++; scanline++;
X6502_Run(16); X6502_Run(16);
@ -1233,8 +1233,8 @@ static void DoLine(void) {
} }
int x; int x;
uint8 *target = XBuf + (scanline << 8); uint8 *target = XBuf + ((scanline < 240 ? scanline : 240) << 8);
u8* dtarget = XDBuf + (scanline << 8); u8* dtarget = XDBuf + ((scanline < 240 ? scanline : 240) << 8);
if (MMC5Hack) MMC5_hb(scanline); if (MMC5Hack) MMC5_hb(scanline);
@ -1824,9 +1824,10 @@ int FCEUPPU_Loop(int skip) {
for (scanline = 0; scanline < totalscanlines; ) { //scanline is incremented in DoLine. Evil. :/ for (scanline = 0; scanline < totalscanlines; ) { //scanline is incremented in DoLine. Evil. :/
deempcnt[deemp]++; deempcnt[deemp]++;
if (scanline < normalscanlines) if (scanline < 240)
DEBUG(FCEUD_UpdatePPUView(scanline, 1)); DEBUG(FCEUD_UpdatePPUView(scanline, 1));
DoLine(); DoLine();
if (scanline < normalscanlines || scanline == totalscanlines) if (scanline < normalscanlines || scanline == totalscanlines)
overclocking = 0; overclocking = 0;
else { else {