unsigned short sprites[8][16] = { // 000 White {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}, {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}, // 001 Light Gray {0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF}, {0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF}, // 002 Dark Gray {0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000}, {0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000}, // 003 Black {0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF}, {0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF} }; unsigned short masks[4][16] = { // 000 White {~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000,~0x0000}, // 001 Light Gray {~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF}, // 002 Dark Gray {~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000,~0xFFFF,~0x0000}, // 003 Black {~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF,~0xFFFF}, }; unsigned short tilemap[9][12] = { {1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1} }; void ClipGrayDrawTilemap16(short x, short y, void *map, void *tiles, void *masks, void *light, void *dark) { short **mapptr=map; short **tilesptr=tiles; short **masksptr=masks; short loop_w=0; short loop_v=0; ClipSprite16(50,50,16,tilesptr[2],light,SPRT_OR); ClipSprite16(50,50,16,tilesptr[2],dark,SPRT_OR); for(;loop_v<8;loop_v++) { for(loop_w=0;loop_w<11;loop_w++) { ClipSprite16((-(x&15))+(loop_w<<4),-(y&15)+(loop_v<<4),16,masksptr[mapptr[loop_v][loop_w]],light,SPRT_AND); ngetchx(); ClipSprite16((-(x&15))+(loop_w<<4),-(y&15)+(loop_v<<4),16,masksptr[mapptr[loop_v][loop_w]],dark,SPRT_AND); ClipSprite16((-(x&15))+(loop_w<<4),-(y&15)+(loop_v<<4),16,tilesptr[mapptr[loop_v][loop_w]*2],light,SPRT_OR); ClipSprite16((-(x&15))+(loop_w<<4),-(y&15)+(loop_v<<4),16,tilesptr[(mapptr[loop_v][loop_w]*2)+1],dark,SPRT_OR); } } }