Choć w zasadzie powinienem napisać jeden sprite 🙂
set 14=$8000 set $491=$8000 include "H1:RUNTIME.ACT" MODULE int fno=[1], i=[0] byte bltst=$D653 byte bltmv0=$A115, bltmv1=$A116, bltmv2=$A117 byte array bltsrc = [ 0 96 1 128 96 1 0 97 1 128 97 1 ] proc CIOVE=$E4DF(byte areg, xreg) proc delay() card i for i=0 to 30000 do od return proc bltme() if fno mod 10 = 0 then bltmv0=bltsrc(i*3) bltmv1=bltsrc(i*3+1) bltmv2=bltsrc(i*3+2) bltst=1 fno==+1 i==+1 if i > 3 then fno=1 i=0 fi [$4C $E462] fi fno==+1 [$4C $E462] proc main() byte vc=$D640, clock=$14 int i byte memcont=$D65E, membank=$D65F byte psel=$D645, csel=$D644, cr=$D646, cg=$D647, cb=$D648 byte xdla0=$D641, xdla1=$D642, xdla2=$D643 byte blt0=$D650, blt1=$D651, blt2=$D652 ; bltst=$D653 byte bkg=710, curinh=752 byte iocb1cmd=850 card iocb1buf=852, iocb1len=856 byte nmien=$D40E card vvblkd=$0224 byte array xdl=[98 136 219 0 0 0 64 1 17 223] byte array clrscr= [ 0 0 0 ;src addr 0 0 ;src step y 0 ;src step x 0 0 0 ;dst addr ($0000 up) 64 1 ;dst step y (320) 1 ;dst step x 63 1 ;width (320-1) 239 ;height (240-1) 0 ;and mask 0 ;xor mask 0 ;collision and mask 0 ;zoom 0 ;pattern 0 ] ;control byte array bltmv= [ 0 96 1 ;src addr 0 2 ;src step y 1 ;src step x 224 62 0 ;dst addr 64 1 ;dst step y 1 ;dst step x 124 0 ;width 53 ;height 255 ;and mask 0 ;xor mask 0 ;collision and mask 0 ;zoom 0 ;pattern 0 ] ;control if vc<>$10 then printe("Brak VBXE FX") delay() [$4C $C2AA] ;reset fi memcont=$A8 membank=128+20 moveblock($A000, xdl, 10) xdla0=0 xdla1=64 xdla2=1 moveblock($A100, clrscr, 21) blt0=0 blt1=65 blt2=1 bltst=1 ;blitter's clear scr while bltst <> 0 do od moveblock($A115, bltmv, 21) blt0=21 blt1=65 blt2=1 graphics(0) bkg=0 curinh=1 put(31) close(1) open(1,"D1:HEL.PAL",4,0) psel=1 csel=0 for i=0 to 255 do cr=getd(1) cg=getd(1) cb=getd(1) od close(1) open(1,"D1:HEL.PIC",4,0) iocb1cmd=7 iocb1buf=$A000 iocb1len=$1000 for i=22 to 29 do membank=128+i CIOVE(0,$10) od close(1) vc=3 membank=128+20 i=clock while clock=i do od nmien=0 vvblkd=bltme nmien=$40 do od return