; /*
sc RESOPT IGNORE=73 DATA=NEAR NMINC UCHAR CONSTLIB STREQ STRMERGE NOSTKCHK NOSTDIO OPTIMIZE OPTSIZE rastaparrot.c
slink from lib:c.o rastaparrot.o to //Clients/RastaParrot lib lib:sc.lib lib:amiga.lib /lib/client.lib SC SD NOICONS
delete rastaparrot.o
quit

 RastaParrot 1.2  (Client for BServer)

 Copyright © 1994-1995 Stefano Reksten of 3AM - The Three Amigos!!!
 All rights reserved.

 The RastaParrot(TM) is Copyright © Massimo Capanni (JAMAICAN of 3AM)
*/

#include <exec/memory.h>
#include <intuition/intuition.h>
#include <graphics/gfxbase.h>

#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <clib/alib_protos.h>
#include <time.h>

#include "/include/client.h"
#include "/include/bitmap/bitmap.h"
#include "/include/bitmap/bitmap_pragmas.h"

char *ver = "$VER: RastaParrot 1.2 "__AMIGADATE__;

extern ULONG RangeSeed;

struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct Library *BitMapBase;

UBYTE rp_cmap[24] = { 0, 0, 0, 5, 2, 0, 0, 0, 0, 9, 4, 1, 11, 0, 0, 11, 15, 0, 15, 6, 0, 15, 15, 15 };

UWORD chip rp1_imgdata[372] = {
 0x0, 0x1, 0x8000, 0x0,
 0x0, 0x3, 0x0, 0x0,
 0x0, 0x187, 0x300, 0x0,
 0x0, 0x1C7, 0x1E00, 0x0,
 0x0, 0x78F7, 0xFC00, 0x0,
 0x0, 0x7FFF, 0xF000, 0x0,
 0x20, 0x3FFF, 0xF000, 0x0,
 0x78, 0x3FFF, 0xE000, 0x0,
 0x7C, 0xBFFF, 0xC000, 0x0,
 0x7E, 0xFFF3, 0xC000, 0x0,
 0x7F, 0xFFE7, 0xC000, 0x0,
 0x7F, 0xFFCF, 0xC000, 0x0,
 0x7F, 0xFFDB, 0xC000, 0x0,
 0x3F, 0xFFC3, 0x8000, 0x0,
 0x1C3F, 0xFFDF, 0x8000, 0x0,
 0x7F3F, 0xFFFF, 0x8000, 0x0,
 0x3FBF, 0xFFFF, 0x8000, 0x0,
 0x1FFF, 0xFFFF, 0x9C00, 0x0,
 0x3FFF, 0xFFFF, 0xCF00, 0x0,
 0x7FFF, 0xFFFF, 0xC7E0, 0x0,
 0x7FFF, 0xFFFF, 0xC3E0, 0x0,
 0xFFFF, 0xFFFF, 0x80C0, 0x0,
 0xCFFF, 0xFFFF, 0x8000, 0x0,
 0xFFF, 0xFFFF, 0x0, 0x0,
 0x1FFF, 0xFFFF, 0x0, 0x0,
 0x1FFF, 0xFFFE, 0x0, 0x0,
 0x1C0F, 0xFFFC, 0x0, 0x0,
 0x807, 0xFFF0, 0x0, 0x0,
 0x1, 0x9000, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x2, 0x0, 0x0,
 0x0, 0x42, 0x1000, 0x0,
 0x0, 0x63, 0x2000, 0x0,
 0x0, 0x7F7, 0xC000, 0x0,
 0x0, 0x7FF, 0xC000, 0x0,
 0x30, 0xFFF, 0x8000, 0x0,
 0x38, 0xFE3, 0x8000, 0x0,
 0x3C, 0xFC3, 0x8000, 0x0,
 0x3E, 0x4F83, 0x8000, 0x0,
 0x1F, 0x3F83, 0xFFE0, 0x0,
 0xF, 0x9F83, 0xFFFF, 0x0,
 0x7, 0xCFC3, 0xFFFF, 0x8000,
 0x1B, 0xEFC3, 0xBFFF, 0xC000,
 0x919, 0xE7F3, 0xC007, 0xC000,
 0xF8F, 0xF3CF, 0xFFC0, 0xE000,
 0xFC7, 0xF9FF, 0xBF00, 0x2000,
 0x1F89, 0xFFFF, 0x87E0, 0x0,
 0x3FF7, 0xFFFF, 0x3E0, 0x0,
 0x47F8, 0x7FFF, 0xC0, 0x0,
 0x7FF, 0x3FFE, 0x0, 0x0,
 0x7FF, 0xFFFE, 0x0, 0x0,
 0xDCF, 0xFFFC, 0x0, 0x0,
 0xC07, 0xFFF8, 0x0, 0x0,
 0x3, 0xFFF0, 0x0, 0x0,
 0x0, 0xFF00, 0x0, 0x0,
 0x0, 0x6F80, 0x0, 0x0,
 0x1, 0x9BC0, 0x0, 0x0,
 0x1, 0x140, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0xC, 0x0, 0x0,
 0x0, 0x18, 0x0, 0x0,
 0x0, 0x30, 0x0, 0x0,
 0x0, 0x24, 0x3FE0, 0x0,
 0x0, 0x3C, 0x7FFF, 0x0,
 0x0, 0x20, 0x7FFF, 0x8000,
 0x0, 0x0, 0x7FFF, 0xC000,
 0x0, 0x0, 0x7FC7, 0xC000,
 0x0, 0x0, 0x7FC0, 0xE000,
 0x0, 0x0, 0x3F00, 0x2000,
 0x0, 0x0, 0x7E0, 0x0,
 0x0, 0x0, 0x3F0, 0x0,
 0x0, 0x0, 0xF0, 0x0,
 0x0, 0x0, 0x60, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x6F80, 0x0, 0x0,
 0x1, 0x9BC0, 0x0, 0x0,
 0x1, 0x140, 0x0, 0x0
 };

UWORD chip rp2_imgdata[372] = {
 0x0, 0x1, 0x8000, 0x0,
 0x0, 0x3, 0x0, 0x0,
 0x0, 0x187, 0x300, 0x0,
 0x0, 0x1C7, 0x1E00, 0x0,
 0x0, 0x78F7, 0xFC00, 0x0,
 0x0, 0x7FFF, 0xF000, 0x0,
 0x0, 0x3FFF, 0xF000, 0x0,
 0x0, 0x3FFF, 0xE000, 0x0,
 0x0, 0xBFFF, 0xC000, 0x0,
 0x0, 0xFFF3, 0xC000, 0x0,
 0x1, 0xFFE7, 0xC000, 0x0,
 0x1, 0xFFCF, 0xC000, 0x0,
 0x1, 0xFFDB, 0xC000, 0x0,
 0x3, 0xFFC3, 0x8000, 0x0,
 0x1C03, 0xFFDF, 0x8000, 0x0,
 0x7F07, 0xFFFF, 0x8000, 0x0,
 0x3F87, 0xFFFF, 0x8000, 0x0,
 0x1FEF, 0xFFFF, 0x9C00, 0x0,
 0x3FFF, 0xFFFF, 0xCF00, 0x0,
 0x7FFF, 0xFFFF, 0xC7E0, 0x0,
 0x7FFF, 0xFFFF, 0xC3E0, 0x0,
 0xFFFF, 0xFFFF, 0x80C0, 0x0,
 0xCFFF, 0xFFFF, 0x8000, 0x0,
 0xFFF, 0xFFFF, 0x0, 0x0,
 0x1FFF, 0xFFFF, 0x0, 0x0,
 0x1FFF, 0xFFFE, 0x0, 0x0,
 0x1C7F, 0xFFFC, 0x0, 0x0,
 0x87F, 0xFFF0, 0x0, 0x0,
 0x79, 0x9000, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x2, 0x0, 0x0,
 0x0, 0x42, 0x1000, 0x0,
 0x0, 0x63, 0x2000, 0x0,
 0x0, 0x7F7, 0xC000, 0x0,
 0x0, 0x7FF, 0xC000, 0x0,
 0x0, 0xFFF, 0x8000, 0x0,
 0x0, 0xFE3, 0x8000, 0x0,
 0x0, 0xFC3, 0x8000, 0x0,
 0x0, 0xCF83, 0x8000, 0x0,
 0x0, 0xFF83, 0xFFE0, 0x0,
 0x1, 0xFF83, 0xFFFF, 0x0,
 0x1, 0xFFC3, 0xFFFF, 0x8000,
 0x1, 0xFFC3, 0xBFFF, 0xC000,
 0x903, 0xFFF3, 0xC007, 0xC000,
 0xF87, 0xFFCF, 0xFFC0, 0xE000,
 0xFC4, 0xFEFF, 0xBF00, 0x2000,
 0x1F81, 0xFCFF, 0x87E0, 0x0,
 0x3FE7, 0x79FF, 0x3E0, 0x0,
 0x47CC, 0x67FF, 0xC0, 0x0,
 0x7D9, 0xEFFE, 0x0, 0x0,
 0x7D7, 0xDFFE, 0x0, 0x0,
 0xDCF, 0xBFFC, 0x0, 0x0,
 0xC1E, 0x7FF8, 0x0, 0x0,
 0x3C, 0xFFF0, 0x0, 0x0,
 0x38, 0xFF00, 0x0, 0x0,
 0x0, 0x6F80, 0x0, 0x0,
 0x1, 0x9BC0, 0x0, 0x0,
 0x1, 0x140, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0xC, 0x0, 0x0,
 0x0, 0x18, 0x0, 0x0,
 0x0, 0x30, 0x0, 0x0,
 0x0, 0x24, 0x3FE0, 0x0,
 0x0, 0x3C, 0x7FFF, 0x0,
 0x0, 0x20, 0x7FFF, 0x8000,
 0x0, 0x0, 0x7FFF, 0xC000,
 0x0, 0x0, 0x7FC7, 0xC000,
 0x0, 0x0, 0x7FC0, 0xE000,
 0x0, 0x0, 0x3F00, 0x2000,
 0x0, 0x0, 0x7E0, 0x0,
 0x0, 0x0, 0x3F0, 0x0,
 0x0, 0x0, 0xF0, 0x0,
 0x0, 0x0, 0x60, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x6F80, 0x0, 0x0,
 0x1, 0x9BC0, 0x0, 0x0,
 0x1, 0x140, 0x0, 0x0
 };

UWORD chip rp3_imgdata[372] = {
 0x0, 0x3000, 0x0, 0x0,
 0x0, 0x1800, 0x0, 0x0,
 0x18, 0x1C30, 0x0, 0x0,
 0xF, 0x1C70, 0x0, 0x0,
 0x7, 0xFDE3, 0xC000, 0x0,
 0x1, 0xFFFF, 0xC000, 0x0,
 0x1, 0xFFFF, 0x8080, 0x0,
 0x0, 0xFFFF, 0x83C0, 0x0,
 0x0, 0x7FFF, 0xA7C0, 0x0,
 0x0, 0x79FF, 0xEFC0, 0x0,
 0x0, 0x7CFF, 0xFFC0, 0x0,
 0x0, 0x7E7F, 0xFFC0, 0x0,
 0x0, 0x7B7F, 0xFFC0, 0x0,
 0x0, 0x387F, 0xFF80, 0x0,
 0x0, 0x3F7F, 0xFF87, 0x0,
 0x0, 0x3FFF, 0xFF9F, 0xC000,
 0x0, 0x3FFF, 0xFFBF, 0x8000,
 0x7, 0x3FFF, 0xFFFF, 0x0,
 0x1E, 0x7FFF, 0xFFFF, 0x8000,
 0xFC, 0x7FFF, 0xFFFF, 0xC000,
 0xF8, 0x7FFF, 0xFFFF, 0xC000,
 0x60, 0x3FFF, 0xFFFF, 0xE000,
 0x0, 0x3FFF, 0xFFFE, 0x6000,
 0x0, 0x1FFF, 0xFFFE, 0x0,
 0x0, 0x1FFF, 0xFFFF, 0x0,
 0x0, 0xFFF, 0xFFFF, 0x0,
 0x0, 0x7FF, 0xFE07, 0x0,
 0x0, 0x1FF, 0xFC02, 0x0,
 0x0, 0x1, 0x3000, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x800, 0x0, 0x0,
 0x1, 0x840, 0x0, 0x0,
 0x0, 0x98C0, 0x0, 0x0,
 0x0, 0x7DFC, 0x0, 0x0,
 0x0, 0x7FFC, 0x0, 0x0,
 0x0, 0x3FFE, 0x180, 0x0,
 0x0, 0x38FE, 0x380, 0x0,
 0x0, 0x387E, 0x780, 0x0,
 0x0, 0x383E, 0x4F80, 0x0,
 0xFF, 0xF83F, 0x9F00, 0x0,
 0x1FFF, 0xF83F, 0x3E00, 0x0,
 0x3FFF, 0xF87E, 0x7C00, 0x0,
 0x7FFF, 0xB87E, 0xFB00, 0x0,
 0x7C00, 0x79FC, 0xF312, 0x0,
 0xE07F, 0xFE79, 0xFE3E, 0x0,
 0x801F, 0xBFF3, 0xFC7E, 0x0,
 0xFC, 0x3FFF, 0xF23F, 0x0,
 0xF8, 0x1FFF, 0xFDFF, 0x8000,
 0x60, 0x1FFF, 0xC3FC, 0x4000,
 0x0, 0xFFF, 0x9FFC, 0x0,
 0x0, 0xFFF, 0xFFFC, 0x0,
 0x0, 0x7FF, 0xFE76, 0x0,
 0x0, 0x3FF, 0xFC06, 0x0,
 0x0, 0x1FF, 0xF800, 0x0,
 0x0, 0x1F, 0xE000, 0x0,
 0x0, 0x3E, 0xC000, 0x0,
 0x0, 0x7B, 0x3000, 0x0,
 0x0, 0x50, 0x1000, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x600, 0x0, 0x0,
 0x0, 0x300, 0x0, 0x0,
 0x0, 0x180, 0x0, 0x0,
 0xFF, 0x8480, 0x0, 0x0,
 0x1FFF, 0xC780, 0x0, 0x0,
 0x3FFF, 0xC080, 0x0, 0x0,
 0x7FFF, 0xC000, 0x0, 0x0,
 0x7C7F, 0xC000, 0x0, 0x0,
 0xE07F, 0xC000, 0x0, 0x0,
 0x801F, 0x8000, 0x0, 0x0,
 0xFC, 0x0, 0x0, 0x0,
 0x1F8, 0x0, 0x0, 0x0,
 0x1E0, 0x0, 0x0, 0x0,
 0xC0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x3E, 0xC000, 0x0,
 0x0, 0x7B, 0x3000, 0x0,
 0x0, 0x50, 0x1000, 0x0
 };

UWORD chip rp4_imgdata[372] = {
 0x0, 0x3000, 0x0, 0x0,
 0x0, 0x1800, 0x0, 0x0,
 0x18, 0x1C30, 0x0, 0x0,
 0xF, 0x1C70, 0x0, 0x0,
 0x7, 0xFDE3, 0xC000, 0x0,
 0x1, 0xFFFF, 0xC000, 0x0,
 0x1, 0xFFFF, 0x8000, 0x0,
 0x0, 0xFFFF, 0x8000, 0x0,
 0x0, 0x7FFF, 0xA000, 0x0,
 0x0, 0x79FF, 0xE000, 0x0,
 0x0, 0x7CFF, 0xF000, 0x0,
 0x0, 0x7E7F, 0xF000, 0x0,
 0x0, 0x7B7F, 0xF000, 0x0,
 0x0, 0x387F, 0xF800, 0x0,
 0x0, 0x3F7F, 0xF807, 0x0,
 0x0, 0x3FFF, 0xFC1F, 0xC000,
 0x0, 0x3FFF, 0xFC3F, 0x8000,
 0x7, 0x3FFF, 0xFEFF, 0x0,
 0x1E, 0x7FFF, 0xFFFF, 0x8000,
 0xFC, 0x7FFF, 0xFFFF, 0xC000,
 0xF8, 0x7FFF, 0xFFFF, 0xC000,
 0x60, 0x3FFF, 0xFFFF, 0xE000,
 0x0, 0x3FFF, 0xFFFE, 0x6000,
 0x0, 0x1FFF, 0xFFFE, 0x0,
 0x0, 0x1FFF, 0xFFFF, 0x0,
 0x0, 0xFFF, 0xFFFF, 0x0,
 0x0, 0x7FF, 0xFFC7, 0x0,
 0x0, 0x1FF, 0xFFC2, 0x0,
 0x0, 0x1, 0x33C0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x800, 0x0, 0x0,
 0x1, 0x840, 0x0, 0x0,
 0x0, 0x98C0, 0x0, 0x0,
 0x0, 0x7DFC, 0x0, 0x0,
 0x0, 0x7FFC, 0x0, 0x0,
 0x0, 0x3FFE, 0x0, 0x0,
 0x0, 0x38FE, 0x0, 0x0,
 0x0, 0x387E, 0x0, 0x0,
 0x0, 0x383E, 0x6000, 0x0,
 0xFF, 0xF83F, 0xE000, 0x0,
 0x1FFF, 0xF83F, 0xF000, 0x0,
 0x3FFF, 0xF87F, 0xF000, 0x0,
 0x7FFF, 0xB87F, 0xF000, 0x0,
 0x7C00, 0x79FF, 0xF812, 0x0,
 0xE07F, 0xFE7F, 0xFC3E, 0x0,
 0x801F, 0xBFEF, 0xE47E, 0x0,
 0xFC, 0x3FE7, 0xF03F, 0x0,
 0xF8, 0x1FF3, 0xDCFF, 0x8000,
 0x60, 0x1FFC, 0xC67C, 0x4000,
 0x0, 0xFFE, 0xF37C, 0x0,
 0x0, 0xFFF, 0x7D7C, 0x0,
 0x0, 0x7FF, 0xBE76, 0x0,
 0x0, 0x3FF, 0xCF06, 0x0,
 0x0, 0x1FF, 0xE780, 0x0,
 0x0, 0x1F, 0xE380, 0x0,
 0x0, 0x3E, 0xC000, 0x0,
 0x0, 0x7B, 0x3000, 0x0,
 0x0, 0x50, 0x1000, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x600, 0x0, 0x0,
 0x0, 0x300, 0x0, 0x0,
 0x0, 0x180, 0x0, 0x0,
 0xFF, 0x8480, 0x0, 0x0,
 0x1FFF, 0xC780, 0x0, 0x0,
 0x3FFF, 0xC080, 0x0, 0x0,
 0x7FFF, 0xC000, 0x0, 0x0,
 0x7C7F, 0xC000, 0x0, 0x0,
 0xE07F, 0xC000, 0x0, 0x0,
 0x801F, 0x8000, 0x0, 0x0,
 0xFC, 0x0, 0x0, 0x0,
 0x1F8, 0x0, 0x0, 0x0,
 0x1E0, 0x0, 0x0, 0x0,
 0xC0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x0, 0x0, 0x0,
 0x0, 0x3E, 0xC000, 0x0,
 0x0, 0x7B, 0x3000, 0x0,
 0x0, 0x50, 0x1000, 0x0
 };


struct Image rp_image = { 0, 0, 0x33, 0x1F, 0x3, rp1_imgdata, 0x7, 0, NULL };

struct Screen *scr;


UWORD top;
WORD left, oldleft;
UBYTE delay = 1, dx;
struct BitMap *bmap, *rasta_bitmap;
struct RastPort *rport;

struct DisplayIDInformation *dinfo;
ULONG command;


void RastaParrot( void )
{
UBYTE direction, brightness, n;
UWORD swidth, sheight;
ULONG displayID;
struct Rectangle *rect;

rect = GETTXTOSCANRECT(dinfo);

swidth = RECTANGLEWIDTH(rect);
sheight = RECTANGLEHEIGHT(rect);
displayID = DISPLAYID(dinfo);
brightness = GETBRIGHTNESS(dinfo);

if ( !CheckAA() )
	{
	if ( displayID & SUPERHIRES )
		{
		displayID &= ~SUPERHIRES;
		displayID |= HIRES;
		swidth >>= 1;
		}
	}

if ( scr = OpenScreenTags( NULL,
	SA_Width, swidth,
	SA_Height, sheight,
	SA_Depth, 3,
	SA_Quiet, TRUE,
	SA_DisplayID, displayID,
	SA_Overscan, OSCAN_TEXT,
	TAG_END ) )
	{
	register struct ViewPort *vp = &(scr->ViewPort);
	register struct RastPort *rp = &(scr->RastPort);

	SpritesOff();

	for( n = 0; n < 24; n++ )
		rp_cmap[n] = rp_cmap[n] * brightness/100;

	for ( n = 0; n < 24; n+=3 )
		SetRGB4( vp, n/3, rp_cmap[n], rp_cmap[n+1], rp_cmap[n+2] );
	SetAPen( rp, 0 );

	delay = 1;
	direction = RangeRand( 2 );
	dx = RangeRand( 3 ) + 1;
	left = RangeRand( swidth );
	oldleft = left;
	top = RangeRand(sheight - 0x5F) + 0x40;

	while( STILL_BLANKING )
		{
		if ( !(--delay) )
			{
			if ( left >= swidth - 82 )
				{
				direction = 1;
				dx = RangeRand( 3 ) + 1;
				left = swidth - 82;
				}
			if ( left <= 12 )
				{
				direction = 0;
				dx = RangeRand( 3 ) + 1;
				left = 12;
				}

			if ( direction == 0 )
				{
				rp_image.ImageData = ( rp_image.ImageData == rp1_imgdata ? rp2_imgdata : rp1_imgdata );
				left += dx;
				}
			else
				{
				rp_image.ImageData = ( rp_image.ImageData == rp3_imgdata ? rp4_imgdata : rp3_imgdata );
				left -= dx;
				}

			WaitTOF();
			RectFill( rp, oldleft, top, oldleft + 0x33, top + 0x1F );
			DrawImage( rp, &rp_image, left, top );
			oldleft = left;

			delay = 10;
			}
		else	WaitTOF();
		}
	SpritesOn();
	CloseScreen( scr );
	}
else
	SendClientMsg( ACTION_FAILED );
}


void __main( char *line )
{
if ( IntuitionBase = (struct IntuitionBase *)OpenLibrary( "intuition.library", 36L ) )
	{
	if ( GfxBase = (struct GfxBase *)OpenLibrary( "graphics.library",0L ) )
		{
		if ( BitMapBase = OpenLibrary( "bitmap.library", 0L ) )
			{
			if ( rasta_bitmap = CreateBitMap( 0x33, 0x1F, 3 ) )
				{
				if ( rport = AllocMem( sizeof(struct RastPort), MEMF_CLEAR ) )
					{
					InitRastPort( rport );
					rport->BitMap = rasta_bitmap;

					RangeSeed = time( NULL );

					if ( dinfo = OpenCommunication() )
						{
						RastaParrot();
						CloseCommunication( dinfo );
						}
					FreeMem( rport, sizeof(struct RastPort) );
					}
				DisposeBitMap( rasta_bitmap );
				}
			CloseLibrary( BitMapBase );
			}
		CloseLibrary( (struct Library *)GfxBase );
		}
	CloseLibrary( (struct Library *)IntuitionBase );
	}
}
