-#ifdef _ASM_DRAW_C_AMIPS\r
-int TileNorm(int sx,int addr,int pal);\r
-int TileFlip(int sx,int addr,int pal);\r
-#else\r
-static int TileNorm(int sx,int addr,int pal)\r
-{\r
- unsigned char *pd = HighCol+sx;\r
- unsigned int pack=0; unsigned int t=0;\r
-\r
- pack=*(unsigned int *)(Pico.vram+addr); // Get 8 pixels\r
- if (pack)\r
- {\r
- t=pack&0x0000f000; if (t) pd[0]=(unsigned char)(pal|(t>>12));\r
- t=pack&0x00000f00; if (t) pd[1]=(unsigned char)(pal|(t>> 8));\r
- t=pack&0x000000f0; if (t) pd[2]=(unsigned char)(pal|(t>> 4));\r
- t=pack&0x0000000f; if (t) pd[3]=(unsigned char)(pal|(t ));\r
- t=pack&0xf0000000; if (t) pd[4]=(unsigned char)(pal|(t>>28));\r
- t=pack&0x0f000000; if (t) pd[5]=(unsigned char)(pal|(t>>24));\r
- t=pack&0x00f00000; if (t) pd[6]=(unsigned char)(pal|(t>>20));\r
- t=pack&0x000f0000; if (t) pd[7]=(unsigned char)(pal|(t>>16));\r
- return 0;\r
- }\r
-\r
- return 1; // Tile blank\r
+#define TileNormMaker(funcname,pix_func) \\r
+static int funcname(int sx,int addr,int pal) \\r
+{ \\r
+ unsigned char *pd = HighCol+sx; \\r
+ unsigned int pack=0; unsigned int t=0; \\r
+ \\r
+ pack=*(unsigned int *)(Pico.vram+addr); /* Get 8 pixels */ \\r
+ if (pack) \\r
+ { \\r
+ t=(pack&0x0000f000)>>12; pix_func(0); \\r
+ t=(pack&0x00000f00)>> 8; pix_func(1); \\r
+ t=(pack&0x000000f0)>> 4; pix_func(2); \\r
+ t=(pack&0x0000000f) ; pix_func(3); \\r
+ t=(pack&0xf0000000)>>28; pix_func(4); \\r
+ t=(pack&0x0f000000)>>24; pix_func(5); \\r
+ t=(pack&0x00f00000)>>20; pix_func(6); \\r
+ t=(pack&0x000f0000)>>16; pix_func(7); \\r
+ return 0; \\r
+ } \\r
+ \\r
+ return 1; /* Tile blank */ \\r