sprite limit
[picodrive.git] / Pico / Draw.c
index 989d9bd..edb4a02 100644 (file)
@@ -54,6 +54,7 @@ void DrawSpritesFromCache(int *hc, int sh);
 void DrawLayer(int plane_sh, int *hcache, int cellskip, int maxcells);\r
 void FinalizeLineBGR444(int sh);\r
 void FinalizeLineRGB555(int sh);\r
+void *blockcpy(void *dst, const void *src, size_t n);\r
 void blockcpy_or(void *dst, void *src, size_t n, int pat);\r
 #else\r
 // utility\r
@@ -63,6 +64,7 @@ void blockcpy_or(void *dst, void *src, size_t n, int pat)
   for (; n; n--)\r
     *pd++ = (unsigned char) (*ps++ | pat);\r
 }\r
+#define blockcpy memcpy\r
 #endif\r
 \r
 \r
@@ -610,8 +612,8 @@ static void DrawTilesFromCacheShPrep(void)
   {\r
     // as some layer has covered whole line with hi priority tiles,\r
     // we can process whole line and then act as if sh/hi mode was off.\r
-    rendstatus|=0x80;\r
     int c = 320/4, *zb = (int *)(HighCol+8);\r
+    rendstatus|=0x80;\r
     while (c--)\r
     {\r
       int tmp = *zb;\r
@@ -1108,7 +1110,7 @@ static void DrawAllSprites(int *hcache, int maxwidth, int prio, int sh)
 \r
     // sprite limit\r
     ntiles += pack>>28;\r
-    if(ntiles > 40) break;\r
+    if(!(PicoOpt&0x40000) && ntiles > 40) break;\r
 \r
     if(pack & 0x00800000) continue;\r
 \r