Semi-preshifted sprite routines and macros


void PreshiftSprite16x16(register unsigned short *src asm("%a0"),register unsigned long *dest asm("%a1"));

void PreshiftGrayISprite16x16(register unsigned short *src asm("%a0"),register unsigned long *dest asm("%a1"));

PSprite16x16_OR_R, PSprite16x16_XOR_R, GrayPSprite16x16_OR_R, GrayPSprite16x16_XOR_R macros.


Preshift... functions: preshift non-masked interlaced sprite pointed to by src to buffer pointed to by dest. The buffer must be large enough to hold the preshifted sprite: SIZE_OF_PSPRITE16x16 bytes for a B/W sprite, SIZE_OF_PGSPRITE16x16 bytes for a grayscale sprite.
Macros: draw preshifted sprite pointed to by sprt at coordinates x and y to plane dest (dest0 and dest1 for grayscale sprites).
Due to the huge size of the macros (hundreds of bytes), we suggest using a function containing the macro if you use these macros more than twice. Of course, this will decrease brute force performance.
See the comparison between the different approaches in another part of the documentation.