(bifurcan) Modernize style

This commit is contained in:
Devine Lu Linvega 2024-01-14 16:06:24 -08:00
parent 6128c79b18
commit 6e50e4ce92
1 changed files with 74 additions and 117 deletions

View File

@ -1,162 +1,119 @@
( Bifurcan ) ( Bifurcan )
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ] |00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ] |20 @Screen &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &wheel $1 ] |90 @Mouse &vector $2 &x $2 &y $2 &state $1 &wheel $1
|c0 @DateTime [ &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 ] |c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1
|80 @Controller [ &vector $2 &button $1 &key $1 ] |80 @Controller &vector $2 &button $1 &key $1
|0000 |0000
@last $1 @last $1
@style $1 @style $1
@pointer [ &x $2 &y $2 ] @pointer &x $2 &y $2
@center [ &x $2 &y $2 ] @center &x $2 &y $2
|0100 ( -> ) |0100
( theme ) @on-reset ( -> )
( | theme )
#0f3a .System/r DEO2 #0f3a .System/r DEO2
#0fda .System/g DEO2 #0fda .System/g DEO2
#0faa .System/b DEO2 #0faa .System/b DEO2
( vectors ) ( | vectors )
;on-frame .Screen/vector DEO2 ;on-frame .Screen/vector DEO2
;on-mouse .Mouse/vector DEO2 ;on-mouse .Mouse/vector DEO2
;on-button .Controller/vector DEO2 ;on-button .Controller/vector DEO2
( find center ) ( | find center )
.Screen/width DEI2 #01 SFT2 .center/x STZ2 .Screen/width DEI2 #01 SFT2 .center/x STZ2
.Screen/height DEI2 #01 SFT2 .center/y STZ2 .Screen/height DEI2 #01 SFT2 .center/y STZ2
( background ) ( | background )
;tiles ;cover-pattern JSR2 ;tiles cover-pattern redraw BRK
;redraw JSR2
BRK
@on-frame ( -> ) @on-frame ( -> )
( only draw once per second ) .DateTime/second DEI .last LDZ NEQ [ JMP BRK ] .DateTime/second DEI .last STZ
( only draw once per second ) redraw BRK
.DateTime/second DEI .last LDZ NEQ JMP [ BRK ]
.DateTime/second DEI .last STZ
;redraw JSR2
BRK
@on-mouse ( -> ) @on-mouse ( -> )
draw-cursor .Mouse/state DEI #00 NEQ [ JMP BRK ] ,select JSR BRK
;draw-cursor JSR2
.Mouse/state DEI #00 NEQ JMP BRK
,select JSR
BRK
@on-button ( -> ) @on-button ( -> )
.Controller/button DEI #00 NEQ JMP
.Controller/button DEI #00 NEQ JMP BRK BRK ,select JSR BRK
,select JSR
BRK
@select ( -- ) @select ( -- )
( incr ) .style LDZ INC #03 mod .style STZ
( incr ) .style LDZ INC #03 ;mod JSR2 .style STZ ( bg ) ;tiles [ #00 .style LDZ #40 SFT ] ADD2 cover-pattern
( bg ) ;tiles [ #00 .style LDZ #40 SFT ] ADD2 ;cover-pattern JSR2 ( fg ) redraw
( fg ) ;redraw JSR2 ( release ) #0000 .Mouse/state DEO
( release ) #0000 .Mouse/state DEO .Controller/button DEO .Controller/button DEO
JMP2r
JMP2r
@redraw ( -- ) @redraw ( -- )
( | hrs )
( hrs ) [ .center/x LDZ2 #0018 SUB2 ] [ .center/y LDZ2 #0048 SUB2 ] .DateTime/hour DEI #0a DIV ;draw-number JSR2 [ .center/x LDZ2 #0008 ADD2 ] [ .center/y LDZ2 #0048 SUB2 ] .DateTime/hour DEI #0a ;mod JSR2 ;draw-number JSR2
[ .center/x LDZ2 #0018 SUB2 ] ( | min )
[ .center/y LDZ2 #0048 SUB2 ] [ .center/x LDZ2 #0018 SUB2 ] [ .center/y LDZ2 #0018 SUB2 ] .DateTime/minute DEI #0a DIV ;draw-number JSR2 [ .center/x LDZ2 #0008 ADD2 ] [ .center/y LDZ2 #0018 SUB2 ] .DateTime/minute DEI #0a ;mod JSR2 ;draw-number JSR2
.DateTime/hour DEI #0a DIV ;draw-number JSR2 ( | sec )
[ .center/x LDZ2 #0008 ADD2 ] [ .center/x LDZ2 #0018 SUB2 ] [ .center/y LDZ2 #0018 ADD2 ] .DateTime/second DEI #0a DIV ;draw-number JSR2 [ .center/x LDZ2 #0008 ADD2 ] [ .center/y LDZ2 #0018 ADD2 ] .DateTime/second DEI #0a ;mod JSR2
[ .center/y LDZ2 #0048 SUB2 ]
.DateTime/hour DEI #0a ;mod JSR2 ;draw-number JSR2
( min )
[ .center/x LDZ2 #0018 SUB2 ]
[ .center/y LDZ2 #0018 SUB2 ]
.DateTime/minute DEI #0a DIV ;draw-number JSR2
[ .center/x LDZ2 #0008 ADD2 ]
[ .center/y LDZ2 #0018 SUB2 ]
.DateTime/minute DEI #0a ;mod JSR2 ;draw-number JSR2
( sec )
[ .center/x LDZ2 #0018 SUB2 ]
[ .center/y LDZ2 #0018 ADD2 ]
.DateTime/second DEI #0a DIV
;draw-number JSR2
[ .center/x LDZ2 #0008 ADD2 ]
[ .center/y LDZ2 #0018 ADD2 ]
.DateTime/second DEI #0a ;mod JSR2
@draw-number ( x* y* n -- ) @draw-number ( x* y* n -- )
,&digit STR
,&digit STR ,&y STR2 ,&x STR2 ,&y STR2
,&x STR2
#0f00 #0f00
&loop &loop ( -- )
( save-x ) DUP #03 ;mod JSR2 #00 SWP #30 SFT2 [ LIT2 &x $2 ] ADD2 .Screen/x DEO2 ( save-x ) DUP #03 mod #00 SWP #30 SFT2 [ LIT2 &x $2 ] ADD2 .Screen/x DEO2
( save-y ) DUP #03 DIV #00 SWP #30 SFT2 [ LIT2 &y $2 ] ADD2 .Screen/y DEO2 ( save-y ) DUP #03 DIV #00 SWP #30 SFT2 [ LIT2 &y $2 ] ADD2 .Screen/y DEO2
( get digit* ) DUP [ LIT &digit $1 ] DUP ADD #00 SWP ;digits ADD2 LDA2 ( get digit* ) DUP [ LIT &digit $1 ] DUP ADD #00 SWP ;digits ADD2 LDA2
( get bit ) ROT #0e SWP SUB SFT2 #0001 AND2 ( get bit ) ROT #0e SWP SUB SFT2 #0001 AND2
( set tile ) #30 SFT2 ;tiles ADD2 ( set tile ) #30 SFT2 ;tiles ADD2
( set style ) .style LDZ #40 SFT #00 SWP ADD2 ( set style ) .style LDZ #40 SFT #00 SWP ADD2 .Screen/addr DEO2
.Screen/addr DEO2
( draw ) #01 .Screen/sprite DEO ( draw ) #01 .Screen/sprite DEO
INC GTHk ,&loop JCN INC GTHk ,&loop JCN
POP2 POP2 JMP2r
JMP2r
@cover-pattern ( addr* -- ) @cover-pattern ( addr* -- )
.Screen/addr DEO2 .Screen/addr DEO2
.Screen/height DEI2 #03 SFT2 NIP ,&h STR .Screen/height DEI2 #03 SFT2 NIP ,&h STR
.Screen/width DEI2 #03 SFT2 NIP ,&w STR .Screen/width DEI2 #03 SFT2 NIP ,&w STR
[ LIT &h $1 ] #00 [ LIT &h $1 ] #00
&ver &ver ( -- )
#00 OVR #30 SFT2 .Screen/y DEO2 #00 OVR #30 SFT2 .Screen/y DEO2
[ LIT &w $1 ] #00 [ LIT &w $1 ] #00
&hor &hor ( -- )
#00 OVR #30 SFT2 .Screen/x DEO2 #00 OVR #30 SFT2 .Screen/x DEO2
#01 .Screen/sprite DEO #01 .Screen/sprite DEO
INC GTHk ,&hor JCN INC GTHk ,&hor JCN
POP2 POP2 INC GTHk ,&ver JCN
INC GTHk ,&ver JCN POP2 JMP2r
POP2
JMP2r
@draw-cursor ( -- ) @draw-cursor ( -- )
( | clear last cursor )
( clear last cursor )
;cursor .Screen/addr DEO2 ;cursor .Screen/addr DEO2
.pointer/x LDZ2 .Screen/x DEO2 .pointer/x LDZ2 .Screen/x DEO2
.pointer/y LDZ2 .Screen/y DEO2 .pointer/y LDZ2 .Screen/y DEO2
#40 .Screen/sprite DEO #40 .Screen/sprite DEO
( record pointer positions ) ( | record pointer positions )
.Mouse/x DEI2 DUP2 .pointer/x STZ2 .Screen/x DEO2 .Mouse/x DEI2 DUP2 .pointer/x STZ2
.Mouse/y DEI2 DUP2 .pointer/y STZ2 .Screen/y DEO2 .Screen/x DEO2
( colorize on state ) .Mouse/y DEI2 DUP2 .pointer/y STZ2
.Screen/y DEO2
( | colorize on state )
#41 [ .Mouse/state DEI #00 NEQ ] ADD .Screen/sprite DEO #41 [ .Mouse/state DEI #00 NEQ ] ADD .Screen/sprite DEO
JMP2r
JMP2r @mod ( -- )
DIVk MUL SUB JMP2r
@mod DIVk MUL SUB JMP2r @cursor [ 80c0 e0f0 f8e0 1000 ]
@cursor @digits [
80c0 e0f0 f8e0 1000 7b6f 2492 73e7 73cf 5bc9 79cf 49ef 7249
7bef 7bc9 ]
@digits @tiles [
7b6f 2492 73e7 73cf 0102 0408 1020 4080 8040 2010 0804 0201
5bc9 79cf 49ef 7249 0718 2040 4080 8080 0101 0102 0204 18e0
7bef 7bc9 0808 0810 e304 0808 0808 0804 e310 0808 ]
@tiles
0102 0408 1020 4080
8040 2010 0804 0201
0718 2040 4080 8080
0101 0102 0204 18e0
0808 0810 e304 0808
0808 0804 e310 0808