#include "snap.h" IMPORT struct RastPort rp; Point OldFrame[9]; Point NewFrame[9]; LONG OFType = 0; UWORD Ptrn; STATIC VOID MultiDraw(rp, num, xy) struct RastPort *rp; LONG num; Point *xy; { REGISTER LONG i = 0; REGISTER Point *coord = xy; while (ix, (LONG)coord->y); coord++; Draw(rp, (LONG)coord->x, (LONG)coord->y); i++; } } VOID crawl_frame(dir) LONG dir; { REGISTER UWORD temp = Ptrn; if (dir) { Ptrn = ((Ptrn<<1) & 0xfffe) | ((Ptrn & 0x8000)>>15); } else { Ptrn = ((Ptrn>>1) & 0x7fff) | ((Ptrn & 1)<<15); } temp ^= Ptrn; SetDrPt(&rp, temp); MultiDraw(&rp, OFType, &OldFrame[0]); SetDrPt(&rp, Ptrn); } VOID erase_frame() { if (OFType) { MultiDraw(&rp, OFType, &OldFrame[0]); OFType = 0; } } VOID draw_frame(ft) LONG ft; { REGISTER LONG i; /* Remove old frame */ WaitTOF(); erase_frame(); /* Draw the new frame */ MultiDraw(&rp, ft, &NewFrame[0]); /* save the frame for erasing later */ for (i=0; i<=ft; i++) { OldFrame[i].x = NewFrame[i].x; OldFrame[i].y = NewFrame[i].y; } OFType = ft; }