uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit 9970b650943de2a91f8c49d8342476587019d996
parent 19095def48ed0a3afa8372fb3077efee63ff3524
Author: Andrew Alderwick <andrew@alderwick.co.uk>
Date:   Sat, 11 Dec 2021 16:31:54 +0000

Renamed and signed 100r demo.

Diffstat:
Dprojects/examples/demos/100r-splash.tal | 230-------------------------------------------------------------------------------
Aprojects/examples/demos/drool.tal | 236+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 236 insertions(+), 230 deletions(-)

diff --git a/projects/examples/demos/100r-splash.tal b/projects/examples/demos/100r-splash.tal @@ -1,230 +0,0 @@ -( devices ) - -|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 ] -|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ] -|b0 @DateTime [ &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 ] - -( variables ) - -|0000 - -( program ) - -|0100 @Reset ( -> ) - ( seed prng (must be nonzero) ) - #00 .DateTime/second DEI - #00 .DateTime/minute DEI #60 SFT2 EOR2 - #00 .DateTime/hour DEI #c0 SFT2 EOR2 ;prng/x STA2 - #00 .DateTime/hour DEI #04 SFT2 - #00 .DateTime/day DEI #10 SFT2 EOR2 - #00 .DateTime/month DEI #60 SFT2 EOR2 - .DateTime/year DEI2 #a0 SFT2 EOR2 ;prng/y STA2 - ;prng/x LDA2 ;prng/y LDA2 EOR2 - - ;rabbits STH2 #0f05 &loop-x - #0f05 &loop-y - ROTk SWP STH2kr STA2 POP - INC2r INC2r - INC - GTHk ,&loop-y JCN - POP2 - INC - GTHk ,&loop-x JCN - POP2 POP2r - ( fall through ) - -@repeat - ;init-occupancy JSR2 - #00 ;precalc-frame STA - ;precalculate-vector .Screen/vector DEO2 - BRK - -@init-occupancy ( -- ) - #1400 &loop-y - #1400 &loop-x - ROTk #00 ;set-occupied JSR2 POP - INC - GTHk ,&loop-x JCN - POP2 - INC - GTHk ,&loop-y JCN - POP2 - ;rabbits - DUP2 #00c8 ADD2 SWP2 &loop-rabbits - LDA2k #01 ;set-occupied JSR2 - INC2 INC2 - GTH2k ,&loop-rabbits JCN - POP2 POP2 - JMP2r - -@precalculate-vector ( -> ) - ,precalculate JSR BRK - -@precalculate ( -- ) - ;rabbits #00c8 OVR ,precalc-frame LDR MUL2 ADD2 ( first rabbit address ) - DUP2 #00c8 ADD2 SWP2 &loop-rabbits - DUP2 ,move-rabbit JSR - INC2 INC2 - GTH2k ,&loop-rabbits JCN - POP2 POP2 - ,precalc-frame LDR INC DUP ,precalc-frame STR - #05 EQU JMP JMP2r - ;display-init JSR2 - ;display .Screen/vector DEO2 - JMP2r - -@precalc-frame $1 - -@set-occupied ( x y value -- ) - STH - #00 SWP #0014 MUL2 ( x yoffset* / value ) - ROT #00 SWP ADD2 ( offset* / value ) - ;occupied ADD2 STH2 STAr - JMP2r - -@move-rabbit ( addr* -- ) - STH2k LDA2 ( x y / addr* ) - DUP2 #00 ,set-occupied JSR - ;&possible-moves ( x y possible* / addr* ) - OVR2 #01 SUB ,&check-move JSR ( up ) - OVR2 #01 ADD ,&check-move JSR ( down ) - OVR2 #0100 SUB2 ,&check-move JSR ( left ) - OVR2 #0100 ADD2 ,&check-move JSR ( right ) - ;&possible-moves SUB2 ( x y num-possible-times-2* / addr* ) - DUP ,&can-move JCN - POP2 - &write ( x y / addr* ) - DUP2 #01 ,set-occupied JSR - STH2r #00c8 ADD2 STA2 - JMP2r - - &can-move ( x y num-possible-times-2* / addr* ) - NIP2 ( num-possible-times-2* / addr* ) - ,prng JSR SWP2 DIV2k MUL2 SUB2 #fe AND ( chosen-move* / addr* ) - ;&possible-moves ADD2 LDA2 - ,&write JMP - - &check-move ( possible* new-x new-y -- possible'* ) - DUP2 ,get-occupied JSR ,&blocked JCN - OVR2r LIT2r 00c8 SUB2r ( possible* new-x new-y / previous-frame-addr* ) - &check-history-loop - ;rabbits INC2 STH2kr GTH2 ,&history-okay JCN - DUP2 STH2kr LDA2 EQU2 ,&history-clash JCN - LIT2r 00c8 SUB2r - ,&check-history-loop JMP - &history-okay - POP2r - OVR2 STA2 INC2 INC2 - JMP2r - &history-clash ( possible* new-x new-y / previous-frame-addr* ) - POP2r - &blocked ( possible* new-x new-y ) - POP2 - JMP2r - - &possible-moves $10 - -@get-occupied ( x y -- value ) - #00 SWP #0014 MUL2 ( x yoffset* ) - ROT #00 SWP ADD2 ( offset* ) - ;occupied ADD2 LDA - JMP2r - -@prng ( -- number* ) - LIT2 &x $2 - DUP2 #50 SFT2 EOR2 - DUP2 #03 SFT2 EOR2 - LIT2 &y $2 DUP2 ,&x STR2 - DUP2 #01 SFT2 EOR2 EOR2 - ,&y STR2k POP - JMP2r - -@display-init ( -- ) - .Screen/width DEI2 #01 SFT2 #0050 SUB2 ;display-rabbit/xoffset STA2 - .Screen/height DEI2 #01 SFT2 #0050 SUB2 ;display-rabbit/yoffset STA2 - ;rabbit-sprite .Screen/addr DEO2 - JMP2r - -@display-rabbit ( color n counter -- ) - OVR LTHk ,&finish JCN - SUB ( color n timeline ) - DUP #63 GTH ,&start JCN - #17 DIVk STHk MUL SUB ( color n stage-timeline / frame ) - DUP #07 GTH ,&static JCN - ( rabbit is in-between two frames ) - #08 OVR SUB ,&from-weight STR - ,&to-weight STR ( color n / frame ) - #00 SWP #10 SFT2 ;rabbits ADD2 #00c8 #00 STHr MUL2 ADD2 ( color from-addr* ) - LDA2k STH2 #00c8 ADD2 LDA2 - &draw ( color to-x to-y / from-x from-y ) - STHr ,&mix JSR LIT2 &yoffset $2 ADD2 .Screen/y DEO2 - STHr ,&mix JSR LIT2 &xoffset $2 ADD2 .Screen/x DEO2 - .Screen/sprite DEO - JMP2r - - &mix ( to-z from-z -- mixed* ) - #00 SWP LIT2 00 &from-weight 00 MUL2 ( to-n from-mixed* ) - ROT #00 SWP LIT2 00 &to-weight 00 MUL2 ADD2 - JMP2r - - &finish ( color n counter n ) - POP - LITr ff ,&static JMP - &start ( color n counter ) - LITr 04 - &static ( color n counter / frame ) - INCr - POP - #00 SWP #10 SFT2 ;rabbits ADD2 #00c8 #00 STHr MUL2 ADD2 - LDA2 STH2k - ,&draw JMP - -@display-counter $1 - -@display ( -> ) - ,display-counter LDR #01 SUB DUP ,display-counter STR - DUP #f0 LTH ,&skip-palette JCN - #ff OVR SUB #00 - DUP2 .System/r DEO2 - DUP2 .System/g DEO2 - .System/b DEO2 - &skip-palette - INCk #0000 &clear-loop - ROTk ;display-rabbit JSR2 - INC - DUP #64 LTH ,&clear-loop JCN - POP2 POP - #0500 &draw-loop - ROTk ;display-rabbit JSR2 - INC - DUP #64 LTH ,&draw-loop JCN - POP2 - ,&no-finish JCN - ;sunset .Screen/vector DEO2 - &no-finish - BRK - -@sunset ( -> ) - ;display-counter LDA #02 SUB DUP ;display-counter STA - DUP #1f GTH ,&skip-palette JCN - DUP #01 SFT #00 - DUP2 .System/r DEO2 - DUP2 .System/g DEO2 - .System/b DEO2 - #6400 &draw-loop - #05 OVR #00 ;display-rabbit JSR2 - INC - GTHk ,&draw-loop JCN - POP2 - &skip-palette - ,&no-finish JCN - ;repeat JMP2 - &no-finish - BRK - -@rabbit-sprite 003c 7e7e 7e7e 3c00 - -@occupied $190 - -@rabbits - diff --git a/projects/examples/demos/drool.tal b/projects/examples/demos/drool.tal @@ -0,0 +1,236 @@ +( + 100r animated logo splash screen + by Andrew Alderwick, 2021 + based on artwork by Hundred Rabbits +) + +( devices ) + +|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 ] +|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ] +|b0 @DateTime [ &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 ] + +( variables ) + +|0000 + +( program ) + +|0100 @Reset ( -> ) + ( seed prng (must be nonzero) ) + #00 .DateTime/second DEI + #00 .DateTime/minute DEI #60 SFT2 EOR2 + #00 .DateTime/hour DEI #c0 SFT2 EOR2 ;prng/x STA2 + #00 .DateTime/hour DEI #04 SFT2 + #00 .DateTime/day DEI #10 SFT2 EOR2 + #00 .DateTime/month DEI #60 SFT2 EOR2 + .DateTime/year DEI2 #a0 SFT2 EOR2 ;prng/y STA2 + ;prng/x LDA2 ;prng/y LDA2 EOR2 + + ;rabbits STH2 #0f05 &loop-x + #0f05 &loop-y + ROTk SWP STH2kr STA2 POP + INC2r INC2r + INC + GTHk ,&loop-y JCN + POP2 + INC + GTHk ,&loop-x JCN + POP2 POP2r + ( fall through ) + +@repeat + ;init-occupancy JSR2 + #00 ;precalc-frame STA + ;precalculate-vector .Screen/vector DEO2 + BRK + +@init-occupancy ( -- ) + #1400 &loop-y + #1400 &loop-x + ROTk #00 ;set-occupied JSR2 POP + INC + GTHk ,&loop-x JCN + POP2 + INC + GTHk ,&loop-y JCN + POP2 + ;rabbits + DUP2 #00c8 ADD2 SWP2 &loop-rabbits + LDA2k #01 ;set-occupied JSR2 + INC2 INC2 + GTH2k ,&loop-rabbits JCN + POP2 POP2 + JMP2r + +@precalculate-vector ( -> ) + ,precalculate JSR BRK + +@precalculate ( -- ) + ;rabbits #00c8 OVR ,precalc-frame LDR MUL2 ADD2 ( first rabbit address ) + DUP2 #00c8 ADD2 SWP2 &loop-rabbits + DUP2 ,move-rabbit JSR + INC2 INC2 + GTH2k ,&loop-rabbits JCN + POP2 POP2 + ,precalc-frame LDR INC DUP ,precalc-frame STR + #05 EQU JMP JMP2r + ;display-init JSR2 + ;display .Screen/vector DEO2 + JMP2r + +@precalc-frame $1 + +@set-occupied ( x y value -- ) + STH + #00 SWP #0014 MUL2 ( x yoffset* / value ) + ROT #00 SWP ADD2 ( offset* / value ) + ;occupied ADD2 STH2 STAr + JMP2r + +@move-rabbit ( addr* -- ) + STH2k LDA2 ( x y / addr* ) + DUP2 #00 ,set-occupied JSR + ;&possible-moves ( x y possible* / addr* ) + OVR2 #01 SUB ,&check-move JSR ( up ) + OVR2 #01 ADD ,&check-move JSR ( down ) + OVR2 #0100 SUB2 ,&check-move JSR ( left ) + OVR2 #0100 ADD2 ,&check-move JSR ( right ) + ;&possible-moves SUB2 ( x y num-possible-times-2* / addr* ) + DUP ,&can-move JCN + POP2 + &write ( x y / addr* ) + DUP2 #01 ,set-occupied JSR + STH2r #00c8 ADD2 STA2 + JMP2r + + &can-move ( x y num-possible-times-2* / addr* ) + NIP2 ( num-possible-times-2* / addr* ) + ,prng JSR SWP2 DIV2k MUL2 SUB2 #fe AND ( chosen-move* / addr* ) + ;&possible-moves ADD2 LDA2 + ,&write JMP + + &check-move ( possible* new-x new-y -- possible'* ) + DUP2 ,get-occupied JSR ,&blocked JCN + OVR2r LIT2r 00c8 SUB2r ( possible* new-x new-y / previous-frame-addr* ) + &check-history-loop + ;rabbits INC2 STH2kr GTH2 ,&history-okay JCN + DUP2 STH2kr LDA2 EQU2 ,&history-clash JCN + LIT2r 00c8 SUB2r + ,&check-history-loop JMP + &history-okay + POP2r + OVR2 STA2 INC2 INC2 + JMP2r + &history-clash ( possible* new-x new-y / previous-frame-addr* ) + POP2r + &blocked ( possible* new-x new-y ) + POP2 + JMP2r + + &possible-moves $10 + +@get-occupied ( x y -- value ) + #00 SWP #0014 MUL2 ( x yoffset* ) + ROT #00 SWP ADD2 ( offset* ) + ;occupied ADD2 LDA + JMP2r + +@prng ( -- number* ) + LIT2 &x $2 + DUP2 #50 SFT2 EOR2 + DUP2 #03 SFT2 EOR2 + LIT2 &y $2 DUP2 ,&x STR2 + DUP2 #01 SFT2 EOR2 EOR2 + ,&y STR2k POP + JMP2r + +@display-init ( -- ) + .Screen/width DEI2 #01 SFT2 #0050 SUB2 ;display-rabbit/xoffset STA2 + .Screen/height DEI2 #01 SFT2 #0050 SUB2 ;display-rabbit/yoffset STA2 + ;rabbit-sprite .Screen/addr DEO2 + JMP2r + +@display-rabbit ( color n counter -- ) + OVR LTHk ,&finish JCN + SUB ( color n timeline ) + DUP #63 GTH ,&start JCN + #17 DIVk STHk MUL SUB ( color n stage-timeline / frame ) + DUP #07 GTH ,&static JCN + ( rabbit is in-between two frames ) + #08 OVR SUB ,&from-weight STR + ,&to-weight STR ( color n / frame ) + #00 SWP #10 SFT2 ;rabbits ADD2 #00c8 #00 STHr MUL2 ADD2 ( color from-addr* ) + LDA2k STH2 #00c8 ADD2 LDA2 + &draw ( color to-x to-y / from-x from-y ) + STHr ,&mix JSR LIT2 &yoffset $2 ADD2 .Screen/y DEO2 + STHr ,&mix JSR LIT2 &xoffset $2 ADD2 .Screen/x DEO2 + .Screen/sprite DEO + JMP2r + + &mix ( to-z from-z -- mixed* ) + #00 SWP LIT2 00 &from-weight 00 MUL2 ( to-n from-mixed* ) + ROT #00 SWP LIT2 00 &to-weight 00 MUL2 ADD2 + JMP2r + + &finish ( color n counter n ) + POP + LITr ff ,&static JMP + &start ( color n counter ) + LITr 04 + &static ( color n counter / frame ) + INCr + POP + #00 SWP #10 SFT2 ;rabbits ADD2 #00c8 #00 STHr MUL2 ADD2 + LDA2 STH2k + ,&draw JMP + +@display-counter $1 + +@display ( -> ) + ,display-counter LDR #01 SUB DUP ,display-counter STR + DUP #f0 LTH ,&skip-palette JCN + #ff OVR SUB #00 + DUP2 .System/r DEO2 + DUP2 .System/g DEO2 + .System/b DEO2 + &skip-palette + INCk #0000 &clear-loop + ROTk ;display-rabbit JSR2 + INC + DUP #64 LTH ,&clear-loop JCN + POP2 POP + #0500 &draw-loop + ROTk ;display-rabbit JSR2 + INC + DUP #64 LTH ,&draw-loop JCN + POP2 + ,&no-finish JCN + ;sunset .Screen/vector DEO2 + &no-finish + BRK + +@sunset ( -> ) + ;display-counter LDA #02 SUB DUP ;display-counter STA + DUP #1f GTH ,&skip-palette JCN + DUP #01 SFT #00 + DUP2 .System/r DEO2 + DUP2 .System/g DEO2 + .System/b DEO2 + #6400 &draw-loop + #05 OVR #00 ;display-rabbit JSR2 + INC + GTHk ,&draw-loop JCN + POP2 + &skip-palette + ,&no-finish JCN + ;repeat JMP2 + &no-finish + BRK + +@rabbit-sprite 003c 7e7e 7e7e 3c00 + +@occupied $190 + +@rabbits +