integrate M-HT's neon scalers
[fceu.git] / ppu098.c
index 023975b..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)
@@ -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,7 @@ static void Fixit1(void)
 void MMC5_hb(int);     /* Ugh ugh ugh. */
 static void DoLine(void)
 {
-#ifndef GP2X
+#ifndef __arm__
  int x;
 #endif
  uint8 *target=XBuf+scanline*320+32;
@@ -716,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)