Master blaster fix
[fceu.git] / fce.c
diff --git a/fce.c b/fce.c
index 1d5b493..abcf10f 100644 (file)
--- a/fce.c
+++ b/fce.c
 #define Pal     (PALRAM)
 
 
-#ifdef DEBUG_ASM_6502
-extern int cpu_repeat;
-extern int cpu_lastval;
-#endif
-
 static void (*RefreshLine)(uint8 *P, uint32 vofs) = NULL;
 static void PRefreshLine(void);
 
@@ -316,15 +311,9 @@ static DECLFR(ARAMH)
 static DECLFR(A2002)
 {
                         uint8 ret;
-#ifdef DEBUG_ASM_6502
-       if (cpu_repeat) return cpu_lastval;
-#endif
                         ret = PPU_status;
                         vtoggle=0;
                         PPU_status&=0x7F;
-#ifdef DEBUG_ASM_6502
-//     cpu_lastval=ret|(PPUGenLatch&0x1F);
-#endif
                         return ret|(PPUGenLatch&0x1F);
 }
 
@@ -337,9 +326,6 @@ static DECLFR(A2007)
 {
                         uint8 ret;
                        uint32 tmp=RefreshAddr&0x3FFF;
-#ifdef DEBUG_ASM_6502
-       if (cpu_repeat) return cpu_lastval;
-#endif
 
                         PPUGenLatch=ret=VRAMBuffer;
                        if(PPU_hook) PPU_hook(tmp);
@@ -355,9 +341,6 @@ static DECLFR(A2007)
                         if (INC32) RefreshAddr+=32;
                         else RefreshAddr++;
                        if(PPU_hook) PPU_hook(RefreshAddr&0x3fff);
-#ifdef DEBUG_ASM_6502
-//     cpu_lastval=ret;
-#endif
                         return ret;
 }
 
@@ -1207,9 +1190,15 @@ void EmLoop(void)
   else if(VBlankON)
    TriggerNMI();
 
-  X6502_Run(256+85-12);
-  for(scanline=242+1;scanline<scanlines_per_frame;scanline++)
-    X6502_Run(256+85);
+  // Note: this is needed for asm core
+  // Warning: using 'scanline' var here breaks Castlevania III
+  {
+   int lines;
+   X6502_Run(256+85-12);
+   for (lines=scanlines_per_frame-242-1;lines;lines--)
+     X6502_Run(256+85);
+  }
+  // X6502_Run((scanlines_per_frame-242)*(256+85)-12);
 
   PPU_status&=0x1f;