SpriteX8 Mirror and Rotate Routines



void SpriteX8_MIRROR_H(short h,unsigned char* src,short bytewidth,unsigned char* dest) __attribute__((__stkparm__));

void SpriteX8_MIRROR_H_R(register short h asm("%d0"),register unsigned char* src asm("%a0"),register short bytewidth asm("%d1"),register unsigned char* dest asm("%a1")) __attribute__((__regparm__(4)));

void SpriteX8_MIRROR_V(short h,unsigned char* src,short bytewidth,unsigned char* dest) __attribute__((__stkparm__));

void SpriteX8_MIRROR_V_R(register short h asm("%d0"),register unsigned char* src asm("%a1"),register short bytewidth asm("%d2"),register unsigned char* dest asm("%a0")) __attribute__((__regparm__(4)));

void SpriteX8_MIRROR_HV_R(register short h asm("%d0"),register unsigned char* src asm("%a0"),register short bytewidth asm("%d1"),register unsigned char* dest asm("%a1")) __attribute__((__regparm__(4)));


void SpriteX8X8_ROTATE_RIGHT_R(register short h asm("%d0"),register unsigned char* src asm("%a0"),register short bytewidth asm("%d1"),register unsigned char* dest asm("%a1")) __attribute__((__regparm__(4)));

void SpriteX8X8_ROTATE_LEFT_R(register short h asm("%d0"),register unsigned char* src asm("%a0"),register short bytewidth asm("%d1"),register unsigned char* dest asm("%a1")) __attribute__((__regparm__(4)));

void SpriteX8X8_RR_MH_R(register short h asm("%d0"),register unsigned char* src asm("%a0"),register short bytewidth asm("%d1"),register unsigned char* dest asm("%a1")) __attribute__((__regparm__(4)));

void SpriteX8X8_RL_MH_R(register short h asm("%d0"),register unsigned char* src asm("%a0"),register short bytewidth asm("%d1"),register unsigned char* dest asm("%a1")) __attribute__((__regparm__(4)));


SpriteX8_MIRROR_H/SpriteX8_MIRROR_V are utility functions which can be used to generate a horizontally or vertically mirrored version of a variable-sized sprite (X8 sprite). The height of the sprite is specified by parameter h and the width in bytes is specified by parameter bytewidth.
SpriteX8_MIRROR_HV_R generates a both horizontally and vertically mirrored version of a X8 sprite.
SpriteX8X8_ROTATE_RIGHT_R/SpriteX8X8_ROTATE_LEFT_R are utility functions which can be used to generate a pi/2 right or left rotated version of a variable-sized square sprite (X8X8 sprite). The height and width of the sprite is specified by parameter bytewidth.
SpriteX8X8_RR_MH_R/SpriteX8X8_RL_MH_R mirror and rotate a square sprite (see extgraph.h to see why these functions exist).