Browse code

Cleaned up a few demos

neauoire authored on 14/03/2022 16:55:31
Showing 4 changed files
... ...
@@ -1,15 +1,4 @@
1
-( 
2
-	Bifurcan
3
-	Every second, the Labyrinth reorganize itself to display the time. 
4
-)
5
-
6
-%RTN { JMP2r }
7
-%MOD { DUP2 DIV MUL SUB }
8
-%TOS { #00 SWP }
9
-%2// { #01 SFT2 }
10
-%8** { #30 SFT2 }
11
-
12
-( devices )
1
+( Bifurcan )
13 2
 
14 3
 |00 @System     [ &vector $2 &pad      $6 &r      $2 &g     $2 &b      $2 ]
15 4
 |20 @Screen     [ &vector $2 &width    $2 &height $2 &pad   $2 &x      $2 &y      $2 &addr $2 &pixel $1 &sprite $1 ]
... ...
@@ -17,17 +6,12 @@
17 6
 |b0 @DateTime   [ &year   $2 &month    $1 &day    $1 &hour  $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 ]
18 7
 |80 @Controller [ &vector $2 &button   $1 &key    $1 ] 
19 8
 
20
-( variables )
21
-
22 9
 |0000
23 10
 
24 11
 @last  $1
25 12
 @style $1
26 13
 @pointer [ &x $2 &y $2 ]
27 14
 @center  [ &x $2 &y $2 ]
28
-@anchor  [ &x $2 &y $2 ]
29
-
30
-( program )
31 15
 
32 16
 |0100 ( -> )
33 17
 
... ...
@@ -35,16 +19,13 @@
35 19
 	#0f3a .System/r DEO2 
36 20
 	#0fda .System/g DEO2 
37 21
 	#0faa .System/b DEO2
38
-
39 22
 	( vectors )
40 23
 	;on-frame .Screen/vector DEO2
41 24
 	;on-mouse .Mouse/vector DEO2
42 25
 	;on-button .Controller/vector DEO2
43
-
44 26
 	( find center )
45
-	.Screen/width DEI2 2// .center/x STZ2
46
-	.Screen/height DEI2 2// .center/y STZ2
47
-
27
+	.Screen/width DEI2 #01 SFT2 .center/x STZ2
28
+	.Screen/height DEI2 #01 SFT2 .center/y STZ2
48 29
 	( background ) 
49 30
 	;tiles ;cover-pattern JSR2
50 31
 	;redraw JSR2
... ...
@@ -54,8 +35,7 @@ BRK
54 35
 @on-frame ( -> )
55 36
 
56 37
 	( only draw once per second )
57
-	.DateTime/second DEI .last LDZ NEQ #01 JCN [ BRK ]
58
-
38
+	.DateTime/second DEI .last LDZ NEQ JMP [ BRK ]
59 39
 	.DateTime/second DEI .last STZ
60 40
 	;redraw JSR2
61 41
 
... ...
@@ -65,26 +45,27 @@ BRK
65 45
 
66 46
 	;draw-cursor JSR2
67 47
 
68
-	.Mouse/state DEI #00 EQU ,&no-touch JCN
69
-		( incr ) .style LDZ INC #03 MOD .style STZ
70
-		( bg ) ;tiles .style LDZ #40 SFT TOS ADD2 ;cover-pattern JSR2
71
-		( fg ) ;redraw JSR2
72
-		( release ) #00 .Mouse/state DEO
73
-	&no-touch
48
+	.Mouse/state DEI #00 NEQ JMP BRK
49
+	,select JSR
74 50
 
75 51
 BRK 
76 52
 
77 53
 @on-button ( -> )
78 54
 	
79
-	.Controller/button DEI #00 EQU ,&no-touch JCN
80
-		( incr ) .style LDZ INC #03 MOD .style STZ
81
-		( bg ) ;tiles .style LDZ #40 SFT TOS ADD2 ;cover-pattern JSR2
82
-		( fg ) ;redraw JSR2
83
-		( release ) #00 .Mouse/state DEO
84
-	&no-touch
85
-	
55
+	.Controller/button DEI #00 NEQ JMP BRK
56
+	,select JSR
57
+
86 58
 BRK
87 59
 
60
+@select ( -- )
61
+
62
+	( incr ) .style LDZ INC #03 ;mod JSR2 .style STZ
63
+	( bg ) ;tiles [ #00 .style LDZ #40 SFT ] ADD2 ;cover-pattern JSR2
64
+	( fg ) ;redraw JSR2
65
+	( release ) #0000 .Mouse/state DEO .Controller/button DEO
66
+
67
+JMP2r
68
+
88 69
 @redraw ( -- )
89 70
 	
90 71
 	( hrs )
... ...
@@ -93,14 +74,14 @@ BRK
93 74
 	.DateTime/hour DEI #0a DIV ;draw-number JSR2
94 75
 	[ .center/x LDZ2 #0008 ADD2 ] 
95 76
 	[ .center/y LDZ2 #0048 SUB2 ] 
96
-	.DateTime/hour DEI #0a MOD ;draw-number JSR2
77
+	.DateTime/hour DEI #0a ;mod JSR2 ;draw-number JSR2
97 78
 	( min )
98 79
 	[ .center/x LDZ2 #0018 SUB2 ] 
99 80
 	[ .center/y LDZ2 #0018 SUB2 ] 
100 81
 	.DateTime/minute DEI #0a DIV ;draw-number JSR2
101 82
 	[ .center/x LDZ2 #0008 ADD2 ] 
102 83
 	[ .center/y LDZ2 #0018 SUB2 ] 
103
-	.DateTime/minute DEI #0a MOD ;draw-number JSR2
84
+	.DateTime/minute DEI #0a ;mod JSR2 ;draw-number JSR2
104 85
 	( sec )
105 86
 	[ .center/x LDZ2 #0018 SUB2 ] 
106 87
 	[ .center/y LDZ2 #0018 ADD2 ]
... ...
@@ -108,50 +89,47 @@ BRK
108 89
 	;draw-number JSR2
109 90
 	[ .center/x LDZ2 #0008 ADD2 ] 
110 91
 	[ .center/y LDZ2 #0018 ADD2 ] 
111
-	.DateTime/second DEI #0a MOD 
92
+	.DateTime/second DEI #0a ;mod JSR2 
112 93
 	;draw-number JSR2
113 94
 
114
-RTN
95
+JMP2r
115 96
 
116 97
 @draw-number ( x* y* n -- )
117 98
 	
118
-	STH
119
-	( save pos ) .anchor/y STZ2 .anchor/x STZ2
120
-	#00 #0f
99
+	,&digit STR ,&y STR2 ,&x STR2
100
+	#0f00 
121 101
 	&loop
122
-		( save-x ) OVR #03 MOD TOS 8** .anchor/x LDZ2 ADD2 .Screen/x DEO2
123
-		( save-y ) OVR #03 DIV TOS 8** .anchor/y LDZ2 ADD2 .Screen/y DEO2
124
-		( get digit* ) OVR STHkr DUP ADD TOS ;digits ADD2 LDA2 
102
+		( save-x ) DUP #03 ;mod JSR2 #00 SWP #30 SFT2 [ LIT2 &x $2 ] ADD2 .Screen/x DEO2
103
+		( save-y ) DUP #03 DIV #00 SWP #30 SFT2 [ LIT2 &y $2 ] ADD2 .Screen/y DEO2
104
+		( get digit* ) DUP [ LIT &digit $1 ] DUP ADD #00 SWP ;digits ADD2 LDA2 
125 105
 		( get bit ) ROT #0e SWP SUB SFT2 #0001 AND2 
126
-		( set tile ) 8** ;tiles ADD2 
127
-		( set style ) .style LDZ #40 SFT TOS ADD2
128
-		.Screen/addr DEO2
106
+		( set tile ) #30 SFT2 ;tiles ADD2 
107
+		( set style ) .style LDZ #40 SFT #00 SWP ADD2
108
+			.Screen/addr DEO2
129 109
 		( draw ) #01 .Screen/sprite DEO
130
-		( incr ) SWP INC SWP 
131
-		LTHk ,&loop JCN
110
+		INC GTHk ,&loop JCN
132 111
 	POP2
133
-	POPr
134 112
 
135
-RTN
113
+JMP2r
136 114
 
137 115
 @cover-pattern ( addr* -- )
138 116
 	
139
-	( load ) .Screen/addr DEO2
140
-	#0000 .Screen/height DEI2
117
+	.Screen/addr DEO2
118
+	.Screen/height DEI2 #03 SFT2 NIP ,&h STR
119
+	.Screen/width DEI2 #03 SFT2 NIP ,&w STR
120
+	[ LIT &h $1 ] #00
141 121
 	&ver
142
-		( save ) OVR2 .Screen/y DEO2
143
-		#0000 .Screen/width DEI2
122
+		#00 OVR #30 SFT2 .Screen/y DEO2
123
+		[ LIT &w $1 ] #00
144 124
 		&hor
145
-			( save ) OVR2 .Screen/x DEO2
146
-			( draw ) #01 .Screen/sprite DEO
147
-			( incr ) SWP2 #0008 ADD2 SWP2
148
-			LTH2k ,&hor JCN
149
-		POP2 POP2
150
-		( incr ) SWP2 #0008 ADD2 SWP2
151
-		LTH2k ,&ver JCN
152
-	POP2 POP2
125
+			#00 OVR #30 SFT2 .Screen/x DEO2
126
+			#01 .Screen/sprite DEO
127
+			INC GTHk ,&hor JCN
128
+		POP2
129
+		INC GTHk ,&ver JCN
130
+	POP2
153 131
 
154
-RTN
132
+JMP2r
155 133
 
156 134
 @draw-cursor ( -- )
157 135
 	
... ...
@@ -166,20 +144,22 @@ RTN
166 144
 	( colorize on state )
167 145
 	#41 [ .Mouse/state DEI #00 NEQ ] ADD .Screen/sprite DEO
168 146
 
169
-RTN
147
+JMP2r
148
+
149
+@mod DUP2 DIV MUL SUB JMP2r
170 150
 
171
-@cursor [ 
172
-	80c0 e0f0 f8e0 1000 ]
151
+@cursor 
152
+	80c0 e0f0 f8e0 1000
173 153
 
174
-@digits [
154
+@digits
175 155
 	7b6f 2492 73e7 73cf 
176 156
 	5bc9 79cf 49ef 7249 
177
-	7bef 7bc9 ]
157
+	7bef 7bc9
178 158
 
179
-@tiles [
159
+@tiles
180 160
 	0102 0408 1020 4080
181 161
 	8040 2010 0804 0201 
182 162
 	0718 2040 4080 8080
183 163
 	0101 0102 0204 18e0
184 164
 	0808 0810 e304 0808
185
-	0808 0804 e310 0808 ]
165
+	0808 0804 e310 0808
186 166
similarity index 68%
187 167
rename from projects/examples/gui/animation.tal
188 168
rename to projects/examples/demos/dvd.tal
... ...
@@ -1,20 +1,11 @@
1
-( GUI Animation )
2
-
3
-%2// { #01 SFT2 }
4
-%AUTO-XADDR  { #05 .Screen/auto DEO }
5
-
6
-( devices )
1
+( DVD Bounce )
7 2
 
8 3
 |00 @System     &vector $2 &wst      $1 &rst    $1 &eaddr  $2 &ecode  $1 &pad     $1 &r       $2 &g      $2 &b     $2 &debug  $1 &halt $1
9 4
 |20 @Screen     &vector $2 &width    $2 &height $2 &auto   $1 &pad    $1 &x       $2 &y       $2 &addr   $2 &pixel $1 &sprite $1
10 5
 
11 6
 |0000
12 7
 
13
-@dvd 
14
-	&x $2 &y $2 
15
-	&dx $1 &dy $1
16
-
17
-( program )
8
+@dvd &x $2 &y $2 &dx $1 &dy $1
18 9
 
19 10
 |0100 ( -> )
20 11
 	
... ...
@@ -22,57 +13,41 @@
22 13
 	#4cfd .System/r DEO2 
23 14
 	#4cf3 .System/g DEO2 
24 15
 	#dcf2 .System/b DEO2
25
-
26 16
 	( vectors )
27 17
 	;on-frame .Screen/vector DEO2
28
-
29 18
 	( starting position )
30
-	.Screen/width DEI2 2// .dvd/x STZ2
31
-	.Screen/height DEI2 2// .dvd/y STZ2
32
-	
33
-	AUTO-XADDR
34
-
35
-	#01 ;draw-dvd JSR2
19
+	.Screen/width DEI2 #01 SFT2 .dvd/x STZ2
20
+	.Screen/height DEI2 #01 SFT2 .dvd/y STZ2
21
+	#36 .Screen/auto DEO
22
+	#01 ,draw-dvd JSR
36 23
 	
37 24
 BRK
38 25
 
39 26
 @on-frame ( -> )
40 27
 
41
-	#00 ;draw-dvd JSR2
42
-
28
+	#00 ,draw-dvd JSR
43 29
 	( case: hit-right ) .dvd/x LDZ2 .Screen/width DEI2 #0020 SUB2 EQU2
44 30
 	( case: hit-left ) .dvd/x LDZ2 #0000 EQU2 
45 31
 	#0000 EQU2 ,&no-flipx JCN 
46
-		.dvd/dx LDZk #00 EQU SWP STZ &no-flipx
47
-
32
+		.dvd/dx LDZk #00 EQU SWP STZ 
33
+		&no-flipx
48 34
 	( case: hit-bottom ) .dvd/y LDZ2 .Screen/height DEI2 #0010 SUB2 EQU2
49 35
 	( case: hit-top ) .dvd/y LDZ2 #0000 EQU2 
50 36
 	#0000 EQU2 ,&no-flipy JCN 
51
-		.dvd/dy LDZk #00 EQU SWP STZ &no-flipy
52
-
37
+		.dvd/dy LDZk #00 EQU SWP STZ 
38
+		&no-flipy
53 39
 	( incr ) .dvd/x LDZ2 #0001 #00 .dvd/dx LDZ #00 EQU DUP2 ADD2 SUB2 ADD2 .dvd/x STZ2
54 40
 	( incr ) .dvd/y LDZ2 #0001 #00 .dvd/dy LDZ #00 EQU DUP2 ADD2 SUB2 ADD2 .dvd/y STZ2
55
-
56
-	#01 ;draw-dvd JSR2
41
+	#01 ,draw-dvd JSR
57 42
 
58 43
 BRK
59 44
 
60 45
 @draw-dvd ( color -- )
61 46
 	
62
-	STH
63 47
 	;dvd_icn .Screen/addr DEO2
64 48
 	.dvd/x LDZ2 .Screen/x DEO2
65 49
 	.dvd/y LDZ2 .Screen/y DEO2
66
-	#0800
67
-	&loop
68
-		DUP #04 NEQ ,&no-lb JCN
69
-			.Screen/x DEI2k #0020 SUB2 ROT DEO2
70
-			.Screen/y DEI2k #0008 ADD2 ROT DEO2
71
-			&no-lb
72
-		STHkr .Screen/sprite DEO
73
-		INC GTHk ,&loop JCN
74
-	POP2
75
-	POPr
50
+	.Screen/sprite DEOk DEO
76 51
 
77 52
 JMP2r
78 53
 
... ...
@@ -4,14 +4,10 @@
4 4
 |0020 @Screen &vector $2 &width  $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
5 5
 |0080 @Controller &vector $2 &button $1 &key $1
6 6
 
7
-( variables )
8
-
9 7
 |0000
10 8
 
11 9
 @slime $1
12 10
 
13
-( init )
14
-
15 11
 |0100 ( -> ) @program
16 12
 	
17 13
 	( theme )
... ...
@@ -4,8 +4,6 @@
4 4
 |20 @Screen     &vector $2 &width    $2 &height $2 &auto   $1 &pad    $1 &x       $2 &y       $2 &addr   $2 &pixel  $1 &sprite $1
5 5
 |90 @Mouse      &vector $2 &x        $2 &y      $2 &state  $1 &pad    $3 &scrollx $2 &scrolly $2
6 6
 
7
-( variables )
8
-
9 7
 |0000
10 8
 
11 9
 @cat
... ...
@@ -13,8 +11,6 @@
13 11
 @pointer
14 12
 	&x $2 &y $2
15 13
 
16
-( program )
17
-
18 14
 |0100 ( -> )
19 15
 	
20 16
 	( theme )
... ...
@@ -98,11 +94,10 @@ JMP2r
98 94
 
99 95
 @draw-tail ( frame -- )
100 96
 
101
-	DUP ,&last LDR NEQ ,&changed JCN
102
-		POP JMP2r &changed
97
+	STHk ,&last LDR NEQ ,&changed JCN
98
+		POPr JMP2r &changed
103 99
 	( only redraw on change )
104
-	DUP
105
-	;frames ROT #00 SWP ADD2 LDA
100
+	STHr #00 OVR ;frames ADD2 LDA
106 101
 	#00 SWP #40 SFT2 ;body/tail ADD2
107 102
 		.Screen/addr DEO2
108 103
 	.cat/x LDZ2 .Screen/x DEO2