; chunky copper display: 92x120
;
; copper loads 91 colors in alternate banks switching display bit at end
; bank1 = 32...127
; bank2 = 160..255

a=1

ps=2:chw=90:chh=90:chc=chw+chw/32+1+2

;#ps=3                           ;pixel size (2 or 3)
;#chw=20                         ;chunky width
;#chh=84                         ;chunky height
;#chc=#chw+#chw/32+1+2           ;coppers per line

ox=3                            ;window offset

builddisplay:
  InitPalette 0,256:PalRGB 0,1,15,15,15:PalRGB 0,129,15,15,15
  BitMap 0,384+64,280+20,7:BitPlanesBitMap 0,1,$f0
  For x.w=0 To chw-1:dx=x*ps+ox:Boxf dx,3,dx+ps-1,2+chh*ps,255-x:Next
;  Box 0,0,367,255,1:Box ox-1,2,chw*ps+ox,chh*ps+3,1
  ;
  ccc.l=CustomChunkySize(chw,chh)

  InitCopList 0,44,256,$13007,8,256,ccc
  InitCopList 1,44,256,$13007,8,256,ccc

  DisplayPalette 0,0:DisplayBitMap 0,0
  DisplayPalette 1,0:DisplayBitMap 1,0

  CustomChunky 0,0,ps,chw,chh,ps
  CustomChunky 1,0,ps,chw,chh,ps

  BLITZ

  Mouse On

  CreateDisplay 0:Use CopList 0

Repeat

  For z.w=0 To 15
    VWait
    For x.w=0 To 15
      For y.w=0 To 15
        ChunkyPlot x,y,x+16*y+256*z,$ff
      Next
    Next
  Next

  For z=15 To 0 Step -1
    VWait
    For x=0 To 15
      For y=0 To 15
        ChunkyPlot x,y,x+16*y+256*z,$ff
      Next
    Next
  Next

Until Joyb(0)<>0
While Joyb(0)<>0:Wend

Repeat
  ChunkyPlot Rnd(90),Rnd(90),Rnd(4096)
Until Joyb(0)<>0
While Joyb(0)<>0:Wend

Repeat
  For n=15 To 0 Step -1
    VWait
    ChunkyCLS 256*n
  Next
Until Joyb(0)<>0
While Joyb(0)<>0:Wend

Repeat
  rr.q=0
  gg.q=0
  vv.q=0
  vr.q=Rnd
  vg.q=Rnd
  vb.q=Rnd

  For n=0 To 90
    ChunkyVlin n,0,89,Int(rr)*256+Int(gg)*16+bb
    rr+vr
    gg+vg
    bb+vb
    If rr>15 OR rr<0 Then rr-vr:vr=-(Sgn(vr)*Rnd)
    If gg>15 OR gg<0 Then gg-vg:vg=-(Sgn(vg)*Rnd)
    If bb>15 OR bb<0 Then bb-vb:vb=-(Sgn(vb)*Rnd)
  Next
  VWait 30
Until Joyb(0)<>0
While Joyb(0)<>0:Wend

For x=0 To 89
  For y=0 To 89
    ChunkyPlot x,y,x*y
  Next
Next

While Joyb(0)=0:Wend

For x=0 To 89
  For y=0 To 89
    ChunkyPlot x,y,2048+2047*Cos(Sqr(x*y/100))
  Next
Next

While Joyb(0)=0:Wend

For x=0 To 89
  For y=0 To 89
    ChunkyPlot x,y,8+7*Cos(x/7)+16*Int(8+7*Sin(y/7))+256*Int(Rnd(x/5))
  Next
Next

While Joyb(0)=0:Wend

ChunkyCLS 0

Dim vx(200)
Dim vy(200)
Dim x(200)
Dim y(200)
Dim ccr(200)
Dim ccg(200)
Dim ccb(200)
Dim ccv(200)

Main:
num=48
vel=2+(Rnd*12)
durata=16

  cr.q=Rnd(15)
  cg.q=Rnd(15)
  cb.q=Rnd(15)
For n=0 To num-1
  vx(n)=vel*(Rnd(2)-1)
  vy(n)=(vel*1.2)*(Rnd(2)-1)
  ccr.q(n)=QLimit(cr+Rnd(8),0,15)
  ccg.q(n)=QLimit(cg+Rnd(8),0,15)
  ccb.q(n)=QLimit(cb+Rnd(8),0,15)
  ccv.q(n)=.05+Rnd/2
Next

  For mm.q=0 To durata Step .15
    VWait
    For nn.w=0 To num-1
      x2=vx(nn)*mm
      y2=(-vy(nn)*mm)+(mm*mm)
      If x(nn)>-45 AND x(nn)<45 AND y(nn)>-45 AND y(nn)<45 Then ChunkyPlot x(nn)+45,y(nn)+45,0
      x(nn)=x2
      y(nn)=y2
      If x(nn)>-45 AND x(nn)<45 AND y(nn)>-45 AND y(nn)<45
        ChunkyPlot x(nn)+45,y(nn)+45,Int(ccr(nn))+Int(ccg(nn))*16+Int(ccb(nn))*256
      EndIf

      ccr(nn)=QLimit(ccr(nn)-ccv(nn),0,15)
      ccg(nn)=QLimit(ccg(nn)-ccv(nn),0,15)
      ccb(nn)=QLimit(ccb(nn)-ccv(nn),0,15)

    Next
  Next

If Joyb(0)=2 Then End
Goto Main