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