-#else // USE_320_SCREEN\r
-\r
-static int EmuScanEnd16(unsigned int num)\r
-{\r
- unsigned char *ps=HighCol+8;\r
- unsigned short *pd;\r
- unsigned short *pal=HighPal;\r
- int sh = Pico.video.reg[0xC]&8;\r
- int len, mask = 0xff;\r
-\r
- pd=(unsigned short *)g_screen_ptr + num*800*2 + 800/2 - 320*2/2;\r
-\r
- if (Pico.m.dirtyPal)\r
- PicoDoHighPal555(sh);\r
-\r
- if (Pico.video.reg[12]&1) {\r
- len = 320;\r
- } else {\r
- pd += 32*2;\r
- len = 256;\r
- }\r
-\r
- if (!sh && (rendstatus & PDRAW_SPR_LO_ON_HI))\r
- mask=0x3f; // messed sprites, upper bits are priority stuff\r
-\r
-#if 1\r
- clut_line(pd, ps, pal, (mask<<16) | len);\r
-#else\r
- for (; len > 0; len--)\r
- {\r
- unsigned int p = pal[*ps++ & mask];\r
- p |= p << 16;\r
- *(unsigned int *)pd = p;\r
- *(unsigned int *)(&pd[800]) = p;\r
- pd += 2;\r
- }\r
-#endif\r
-\r
- return 0;\r
+#define MAKE_EMUSCAN(name_, clut_name_, offs_, len_) \\r
+static int name_(unsigned int num) \\r
+{ \\r
+ unsigned char *ps = HighCol+8; \\r
+ unsigned short *pd, *pal = HighPal; \\r
+ int sh = Pico.video.reg[0xC] & 8; \\r
+ int mask = 0xff; \\r
+ \\r
+ pd = (unsigned short *)g_screen_ptr + num*800*2 + offs_;\\r
+ \\r
+ if (Pico.m.dirtyPal) \\r
+ PicoDoHighPal555(sh); \\r
+ \\r
+ if (!sh && (rendstatus & PDRAW_SPR_LO_ON_HI)) \\r
+ mask = 0x3f; /* upper bits are priority stuff */\\r
+ \\r
+ clut_line##clut_name_(pd, ps, pal, (mask<<16) | len_); \\r
+ \\r
+ return 0; \\r