Fast Rectangle Drawing



void FastFillRect(unsigned char* plane,short x1,short y1,short x2,short y2,short mode) __attribute__((__stkparm__));

void FastFillRect_R(register unsigned char* plane asm("%a0"),register short x1 asm("%d0"),register short y1 asm("%d1"),register short x2 asm("%d2"),register short y2 asm("%d3"),short mode) __attribute__((__stkparm__));

void FastFilledRect_Draw_R(register unsigned char* plane asm("%a0"),register short x1 asm("%d0"),register short y1 asm("%d1"),register short x2 asm("%d2"),register short y2 asm("%d3")) __attribute__((__regparm__(5)));

void FastFilledRect_Erase_R(register unsigned char* plane asm("%a0"),register short x1 asm("%d0"),register short y1 asm("%d1"),register short x2 asm("%d2"),register short y2 asm("%d3")) __attribute__((__regparm__(5)));

void FastFilledRect_Invert_R(register unsigned char* plane asm("%a0"),register short x1 asm("%d0"),register short y1 asm("%d1"),register short x2 asm("%d2"),register short y2 asm("%d3")) __attribute__((__regparm__(5)));


These routines draw a filled rectangle whose endpoints are (x1;y1) and (x2;y2) in 240x128 plane plane. FastFilledRect_X_R are the one-mode-only versions of FastFillRect (Draw corresponds to mode == A_NORMAL, Erase corresponds to mode == A_REVERSE, Invert corresponds to mode == A_XOR).

void FastOutlineRect(void* plane,short x1,short y1,short x2,short y2,short mode) __attribute__((__stkparm__));

void FastOutlineRect_R(register void* plane asm("%a0"),register short x1 asm("%d0"),register short y1 asm("%d1"),register short x2 asm("%d2"),register short y2 asm("%d3"),short mode) __attribute__((__stkparm__));

void GrayFastOutlineRect_R(register void* dest1 asm("%a0"),register void* dest2 asm("%a1"), register short x1 asm("%d0"),register short y1 asm("%d1"),register short x2 asm("%d2"),register short y2 asm("%d3"),short color) __attribute__((__stkparm__));


These routines draw an outlined rectangle whose endpoints are (x1;y1) and (x2;y2) in 240x128 plane plane.

void FastEraseRect160_R(register unsigned char* plane asm("%a0"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(3)));

void FastEraseRect240_R(register unsigned char* plane asm("%a0"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(3)));

void GrayFastEraseRect2B160_R(register unsigned char* lightplane asm("%a0"),register unsigned char* darkplane asm("%a1"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(4)));

void GrayFastEraseRect2B240_R(register unsigned char* lightplane asm("%a0"),register unsigned char* darkplane asm("%a1"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(4)));

void FastFillRect160_R(register unsigned char* plane asm("%a0"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(3)));

void FastFillRect240_R(register unsigned char* plane asm("%a0"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(3)));

void GrayFastFillRect2B160_R(register unsigned char* lightplane asm("%a0"),register unsigned char* darkplane asm("%a1"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(4)));

void GrayFastFillRect2B240_R(register unsigned char* lightplane asm("%a0"),register unsigned char* darkplane asm("%a1"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(4)));

void FastInvertRect160_R(register unsigned char* plane asm("%a0"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(3)));

void FastInvertRect240_R(register unsigned char* plane asm("%a0"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(3)));

void GrayFastInvertRect2B160_R(register unsigned char* lightplane asm("%a0"),register unsigned char* darkplane asm("%a1"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(4)));

void GrayFastInvertRect2B240_R(register unsigned char* lightplane asm("%a0"),register unsigned char* darkplane asm("%a1"),register short starty asm("%d0"), register unsigned short lines asm("%d1")) __attribute__((__regparm__(4)));


These routines fill a rectangle with white, black, or invert a rectangle (respectively) whose width is 160 or 240 pixels, and whose height is arbitrary, in a 240x128 plane.

void FastEraseRectX8_R(register unsigned char* plane asm("%a0"),register short startcol asm("%d0"),register short startrow asm("%d1"),register unsigned short nrlines asm("%d2"),register unsigned short bytewidth asm("%d3")) __attribute__((__regparm__(5)));

void FastFillRectX8_R(register unsigned char* plane asm("%a0"),register short startcol asm("%d0"),register short startrow asm("%d1"),register unsigned short nrlines asm("%d2"),register unsigned short bytewidth asm("%d3")) __attribute__((__regparm__(5)));

void FastInvertRectX8_R(register unsigned char* plane asm("%a0"),register short startcol asm("%d0"),register short startrow asm("%d1"),register unsigned short nrlines asm("%d2"),register unsigned short bytewidth asm("%d3")) __attribute__((__regparm__(5)));

FastCopyRectX8_R can be emulated with SpriteX8Get_R and SpriteX8_OR_R.


These routines fill a rectangle with white, black, or invert a rectangle (respectively) whose width and x coordinate is multiple of 8, whose y coordinate is arbitrary, in a 240x128 plane.

FastCopyRectX8_R can be emulated with SpriteX8Get_R and SpriteX8_OR_R.