merge mappers from FCEU-mm
[fceu.git] / ppu098.c
index d0a0a49..65bdafc 100644 (file)
--- a/ppu098.c
+++ b/ppu098.c
@@ -34,8 +34,8 @@
 #include  "video.h"
 #include  "input.h"
 
-#ifdef GP2X
-#include       "drivers/gp2x/asmutils.h"
+#ifdef __arm__
+#include       "drivers/arm/asmutils.h"
 #endif
 
 #define Pal     (PALRAM)
@@ -86,7 +86,7 @@ static void makeppulut(void)
  }
 }
 
-#ifdef ASM_6502
+#if defined(ASM_6502) && !defined(DEBUG_ASM_6502)
 static void asmcpu_update(int32 cycles)
 {
  // some code from x6502.c
@@ -370,7 +370,7 @@ static void ResetRL(uint8 *target)
  Plinef=target;
  Pline=target;
  firsttile=0;
- linestartts=timestamp*48+X.count;
+ linestartts=timestamp*48+X6502_GetCycleCount();
  tofix=0;
  FCEUPPU_LineUpdate098();
  tofix=1;
@@ -489,9 +489,13 @@ static void FASTAPASS(1) RefreshLine098(int lastpixel)
         if(!ScreenON && !SpriteON)
         {
          uint32 tem;
+         int tiles;
          tem=Pal[0]|(Pal[0]<<8)|(Pal[0]<<16)|(Pal[0]<<24);
          tem|=0x40404040;
-         FCEU_dwmemset(Pline,tem,numtiles*8);
+         tiles=numtiles;
+         if(firsttile+tiles > 256/8) tiles=256/8-firsttile;
+         if(tiles > 0)
+          FCEU_dwmemset(Pline,tem,tiles*8);
          P+=numtiles*8;
          Pline=P;
 
@@ -695,7 +699,9 @@ static void Fixit1(void)
 void MMC5_hb(int);     /* Ugh ugh ugh. */
 static void DoLine(void)
 {
+#ifndef __arm__
  int x;
+#endif
  uint8 *target=XBuf+scanline*320+32;
 
  if(MMC5Hack && (ScreenON || SpriteON)) MMC5_hb(scanline);
@@ -714,7 +720,7 @@ static void DoLine(void)
  if(SpriteON)
   CopySprites098(target);
 
-#ifdef GP2X
+#ifdef __arm__
  if(ScreenON || SpriteON)  // Yes, very el-cheapo.
  {
   if(PPU[1]&0x01)