uf-toys

toys and experiments with uf forth
git clone git://git.alexwennerberg.com/uf-toys
Log | Files | Refs | README

dvd.f (1028B) - raw


      1 ( DVD bounce )
      2 ( rewrite of https://git.sr.ht/~rabbits/uxn/tree/main/item/projects/examples/demos/dvd.tal )
      3 
      4 variable dvd-x
      5 variable dvd-y
      6 variable dvd-dx
      7 variable dvd-dy
      8 
      9 variable hit-hor
     10 variable hit-ver
     11 
     12 create dvd_icn hex 
     13     001f , 3f38 , 3838 , 787f , 00fe , fe7e , 7777 , e3c3 ,
     14     000f , 1f3b , 7b77 , e7c7 , 00fc , fe8f , 8707 , 0efc ,
     15     7f00 , 000f , ff7f , 0700 , 0301 , 00ff , f0f8 , ff00 ,
     16     8700 , 00ff , 7f7f , ff00 , f000 , 00e0 , fcfc , 8000 ,
     17 decimal 
     18 
     19 : draw-dvd ( color -- )
     20 dvd_icn spritedata
     21 dvd-x @ dvd-y @ position
     22 sprite ;
     23 
     24 : on-frame
     25 h# 00 draw-dvd
     26 h# 01
     27 dvd-x @ dup 00 <= swap hit-hor @ >= or if 
     28 dvd-dx @ negate dvd-dx !
     29 drop h# 03
     30 then 
     31 dvd-y @ dup 00 <= swap hit-ver @ >= or if 
     32 dvd-dy @ negate dvd-dy !
     33 drop h# 03
     34 then
     35 
     36 dvd-dx @ dvd-x +!
     37 dvd-dy @ dvd-y +!
     38 draw-dvd
     39 brk ;
     40 
     41 : boot 
     42 h# 4cfd h# 4cf3 h# dcf2 colors
     43 1 1 position
     44 screensize@ 10 - hit-ver ! h# 20 - hit-hor !
     45 h# 36 auto
     46 h# 01 draw-dvd
     47 
     48 1 dvd-x  !  1 dvd-y  !
     49 1 dvd-dx !  1 dvd-dy !
     50 
     51 ['] on-frame svector brk
     52 bye ;
     53 save dvd.rom bye