1
|
1
|
new file mode 100644
|
...
|
...
|
@@ -0,0 +1,271 @@
|
|
1
|
+( Boing )
|
|
2
|
+
|
|
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
|
|
4
|
+|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
|
|
5
|
+
|
|
6
|
+|0000
|
|
7
|
+
|
|
8
|
+ @ball &x $2 &y $2
|
|
9
|
+ @timer $1
|
|
10
|
+ @frame $1
|
|
11
|
+
|
|
12
|
+|0100 @reset
|
|
13
|
+
|
|
14
|
+ ( vectors )
|
|
15
|
+ ;on-frame .Screen/vector DEO2
|
|
16
|
+ ( theme )
|
|
17
|
+ #aff0 .System/r DEO2
|
|
18
|
+ #af00 .System/g DEO2
|
|
19
|
+ #af00 .System/b DEO2
|
|
20
|
+ ( screen size )
|
|
21
|
+ #0140 .Screen/width DEO2
|
|
22
|
+ #0100 .Screen/height DEO2
|
|
23
|
+ ( inital position )
|
|
24
|
+ #0020 .ball/x STZ2
|
|
25
|
+ #0020 .ball/y STZ2
|
|
26
|
+
|
|
27
|
+ ;make-shadow JSR2
|
|
28
|
+
|
|
29
|
+ ;draw-background JSR2
|
|
30
|
+ ;draw-shadow JSR2
|
|
31
|
+
|
|
32
|
+BRK
|
|
33
|
+
|
|
34
|
+@on-frame ( -> )
|
|
35
|
+
|
|
36
|
+ ( every 4th frame )
|
|
37
|
+ .timer LDZ INC .timer STZk POP #03 EQU JMP [ BRK ]
|
|
38
|
+ ( reset timer )
|
|
39
|
+ #00 .timer STZ
|
|
40
|
+ ( 12 frames animation )
|
|
41
|
+ .frame LDZ INC DUP #0c NEQ MUL .frame STZ
|
|
42
|
+ ;move-ball JSR2
|
|
43
|
+
|
|
44
|
+BRK
|
|
45
|
+
|
|
46
|
+@make-shadow ( -- )
|
|
47
|
+
|
|
48
|
+ ;bg ;shadow #0188 ;mcpy JSR2
|
|
49
|
+ #0188 #0000
|
|
50
|
+ &loop
|
|
51
|
+ DUP2 ;shadow ADD2 LDA2k #aa55 AND2 SWP2 STA2
|
|
52
|
+ INC2 INC2 GTH2k ,&loop JCN
|
|
53
|
+ POP2 POP2
|
|
54
|
+
|
|
55
|
+JMP2r
|
|
56
|
+
|
|
57
|
+@move-ball ( -- )
|
|
58
|
+
|
|
59
|
+ ( .ball/x LDZ2k INC2 INC2 ROT STZ2 )
|
|
60
|
+ ;draw-ball JSR2
|
|
61
|
+
|
|
62
|
+JMP2r
|
|
63
|
+
|
|
64
|
+@draw-shadow ( -- )
|
|
65
|
+
|
|
66
|
+ .ball/x LDZ2 #0008 ADD2 .Screen/x DEO2
|
|
67
|
+ .ball/y LDZ2 #0008 ADD2 .Screen/y DEO2
|
|
68
|
+ ;shadow .Screen/addr DEO2
|
|
69
|
+ #66 .Screen/auto DEO
|
|
70
|
+ #0700
|
|
71
|
+ &loop-bg
|
|
72
|
+ #0f .Screen/sprite DEO
|
|
73
|
+ INC GTHk ,&loop-bg JCN
|
|
74
|
+ POP2
|
|
75
|
+
|
|
76
|
+JMP2r
|
|
77
|
+
|
|
78
|
+@draw-ball ( -- )
|
|
79
|
+
|
|
80
|
+ .frame LDZ
|
|
81
|
+ ( bg )
|
|
82
|
+ DUP #06 DIV INC #05 MUL #40 ADD STH
|
|
83
|
+ .ball/x LDZ2 .Screen/x DEO2
|
|
84
|
+ .ball/y LDZ2 .Screen/y DEO2
|
|
85
|
+ ;bg .Screen/addr DEO2
|
|
86
|
+ #66 .Screen/auto DEO
|
|
87
|
+ #0700
|
|
88
|
+ &loop-bg
|
|
89
|
+ STHkr .Screen/sprite DEO
|
|
90
|
+ INC GTHk ,&loop-bg JCN
|
|
91
|
+ POP2
|
|
92
|
+ POPr
|
|
93
|
+ ( fg )
|
|
94
|
+ DUP #06 DIV #00 EQU INC #05 MUL #40 ADD STH
|
|
95
|
+ .ball/x LDZ2 .Screen/x DEO2
|
|
96
|
+ .ball/y LDZ2 .Screen/y DEO2
|
|
97
|
+ #06 DIVk MUL SUB #00 SWP #0188 MUL2 ;ball-icn ADD2 .Screen/addr DEO2
|
|
98
|
+ #66 .Screen/auto DEO
|
|
99
|
+ #0700
|
|
100
|
+ &loop-fg
|
|
101
|
+ STHkr .Screen/sprite DEO
|
|
102
|
+ INC GTHk ,&loop-fg JCN
|
|
103
|
+ POP2
|
|
104
|
+ POPr
|
|
105
|
+
|
|
106
|
+JMP2r
|
|
107
|
+
|
|
108
|
+@draw-background ( -- )
|
|
109
|
+
|
|
110
|
+ ( hor lines )
|
|
111
|
+ #01 .Screen/auto DEO
|
|
112
|
+ ;hor-icn .Screen/addr DEO2
|
|
113
|
+ .Screen/height DEI2 #04 SFT2 NIP #04 SUB #00
|
|
114
|
+ &ver
|
|
115
|
+ #0020 .Screen/x DEO2
|
|
116
|
+ #00 OVR #40 SFT2 #0020 ADD2 .Screen/y DEO2
|
|
117
|
+ .Screen/width DEI2 #03 SFT2 NIP #08 SUB #00
|
|
118
|
+ &hor
|
|
119
|
+ #0f .Screen/sprite DEO
|
|
120
|
+ INC GTHk ,&hor JCN
|
|
121
|
+ POP2
|
|
122
|
+ INC GTHk ,&ver JCN
|
|
123
|
+ POP2
|
|
124
|
+ ( ver lines )
|
|
125
|
+ #02 .Screen/auto DEO
|
|
126
|
+ ;ver-icn .Screen/addr DEO2
|
|
127
|
+ .Screen/width DEI2 #04 SFT2 NIP #03 SUB #00
|
|
128
|
+ &ver2
|
|
129
|
+ #0027 .Screen/y DEO2
|
|
130
|
+ #00 OVR #40 SFT2 #0019 ADD2 .Screen/x DEO2
|
|
131
|
+ .Screen/height DEI2 #03 SFT2 NIP #0a SUB #00
|
|
132
|
+ &hor2
|
|
133
|
+ #0f .Screen/sprite DEO
|
|
134
|
+ INC GTHk ,&hor2 JCN
|
|
135
|
+ POP2
|
|
136
|
+ INC GTHk ,&ver2 JCN
|
|
137
|
+ POP2
|
|
138
|
+
|
|
139
|
+JMP2r
|
|
140
|
+
|
|
141
|
+@mcpy ( src* dst* len* -- )
|
|
142
|
+
|
|
143
|
+ SWP2 STH2
|
|
144
|
+ OVR2 ADD2 SWP2
|
|
145
|
+ &loop
|
|
146
|
+ LDAk STH2kr STA INC2r
|
|
147
|
+ INC2 GTH2k ,&loop JCN
|
|
148
|
+ POP2 POP2
|
|
149
|
+ POP2r
|
|
150
|
+
|
|
151
|
+JMP2r
|
|
152
|
+
|
|
153
|
+@hor-icn
|
|
154
|
+ 0000 0000 0000 00ff
|
|
155
|
+@ver-icn
|
|
156
|
+ 0101 0101 0101 0101
|
|
157
|
+
|
|
158
|
+@ball-icn ( 56 x 56 )
|
|
159
|
+ ( 00 )
|
|
160
|
+ 0000 0000 0000 0000 0000 0000 0304 0830 0000 073f 180c 1f3f 00f4 c103 070f bf8f
|
|
161
|
+ 0040 0cfc e2c1 c1c1 0000 0000 80a0 e0e4 0000 0000 0000 0000 0000 0000 0101 0303
|
|
162
|
+ 60c0 01e3 fbf0 f0e0 7fff fefe fc78 000f 8100 0000 0001 0103 8040 f8ff ffff ffff
|
|
163
|
+ f2f1 f9f8 1c00 0303 0000 8080 4020 b0e0 0707 0f1f 2720 2060 e0c0 c080 8000 e0fc
|
|
164
|
+ 0f1f 1f3f 3f3f 7f7f e3ff f8f8 f8f0 f0f0 fefe 7e0e 0001 0103 0101 0101 01c1 f9fe
|
|
165
|
+ e0e0 e0f0 f0f0 f0f8 6060 4041 4141 0139 ffff ffff fefe fefe 7f0f 0100 0000 0000
|
|
166
|
+ e0e0 e000 3c3f 7f7f 0303 0707 0787 fff1 fefe fefc fcfc fcfc 1804 0606 0e0e 0e0e
|
|
167
|
+ 3e1e 1e1e 1e0e 0f0f fe1c 0003 0303 0303 0000 0080 f1ff fefe 7fff ffff ffff 3f07
|
|
168
|
+ f0e0 e0e0 c0c0 8080 3800 070f 0f1f 1f3f 0e0c 0cfc e0c0 c080 0f09 0400 0001 0000
|
|
169
|
+ 0303 c37b 3c3c 9e1e fcfc fcfc f818 040f 0000 0101 0303 078f 80e0 feff fffe fcf8
|
|
170
|
+ 3f7f 7f3e 0603 070e 8000 0000 0000 0000 0000 0000 0000 0000 0e1e 0500 0000 0000
|
|
171
|
+ 0f0f 0f4f 2703 0200 ffe1 c080 030f 1e00 f0e0 00f9 f8c0 0000 3c70 e0c0 0000 0000
|
|
172
|
+ 0000 0000 0000 0000
|
|
173
|
+ ( 01 )
|
|
174
|
+ 0000 0000 0000 0000 0000 0000 0204 0800 0001 0f7c 101c 3fff 00e7 8307 0f3f ff0f
|
|
175
|
+ 0040 0cdc c083 8101 0000 0000 80a0 c0e4 0000 0000 0000 0000 0000 0003 0103 0307
|
|
176
|
+ 4183 07ef f3e0 e0c0 fefe fcf8 f070 181f 0101 0103 0303 0707 01c1 f9fe fefc fcfc
|
|
177
|
+ e2f3 f1f8 1804 0707 0000 0080 4060 b0c0 070f 3f1f 2721 0101 c080 8000 0000 e1fd
|
|
178
|
+ 3f3f 7f7f ffff ffff eff3 f0e0 e0c0 c0c0 fcfc 7c0c 0607 0707 0303 0303 03c3 fbfc
|
|
179
|
+ c0e0 e0e4 e0e0 f0f0 4141 4343 4343 433b fefe fcfc fcfc f8f8 7f0f 0100 0000 0001
|
|
180
|
+ 8080 80c0 fcff ffff 0f0f 0f1f 1f9f efc1 fcf8 f8f8 f8f8 f0f0 100c 0e0e 0e1e 1e1e
|
|
181
|
+ 3c3c 3c1c 3c1e 0e0e f818 0407 0707 0707 0101 0383 f3f9 f8f8 ffff ffff ffff 3f06
|
|
182
|
+ c0c0 8080 0000 0000 3008 1f1f 3f3f 7f7f 1c1c 1cfc c0c4 8000 0e08 0400 0000 0000
|
|
183
|
+ 0707 c7ff 7838 bc1c f8f8 f0f0 f010 1c1f 0103 0307 070f 0f9f 00e0 fefe fcf8 f0e0
|
|
184
|
+ 7ffe fe3c 0407 0f1e 0000 0000 4000 0000 0000 0000 0000 0000 0c1e 0400 0000 0000
|
|
185
|
+ 1f1f 1fdf 2607 0200 cfc1 8001 071f 1c00 e0c0 41fb f080 0000 38f0 e0c0 0000 0000
|
|
186
|
+ 0000 0000 0000 0000
|
|
187
|
+ ( 02 )
|
|
188
|
+ 0000 0000 0000 0000 0000 0000 0000 0001 0001 1ff8 003c fefe 00e7 030f 3f7f 7f0e
|
|
189
|
+ 0000 1cd8 8003 0303 0000 0000 80c0 c0c4 0000 0000 0000 0000 0000 0103 0307 070f
|
|
190
|
+ 0307 0fff e3c0 c080 fcf8 f0f0 e040 787f 0203 0707 0f0f 1f1f 03c3 fbf8 f8f8 f8f8
|
|
191
|
+ e6e3 e1f1 100c 0f0f 0000 0080 c060 e0c0 0f1f 3f3e 0403 0303 8000 0001 0103 e3fb
|
|
192
|
+ 7fff ffff ffff ffff ffc3 c080 8080 0000 f8f0 7000 0e1f 1f1f 0f0f 0707 07c7 fff0
|
|
193
|
+ c8c0 c0c4 e0e0 e0e2 0303 0707 0707 477f f8f8 f8f8 f0f0 f0f0 7f0e 0001 0303 0307
|
|
194
|
+ 0000 00c0 fcff ffff 1f3f 3f3f 7fff 8f01 f0f0 f0f0 e0e0 e0e0 001c 1e1e 1e1c 3c3c
|
|
195
|
+ 7838 3838 3c1c 1c1c f000 1c1f 1f1f 0f0f 0707 078f fff1 f0e0 ffff fefe fefc 3c00
|
|
196
|
+ 0000 0000 0000 0001 2038 3f7f 7fff fffe 3c3c 3cdc 8004 0800 0c00 0100 0000 0000
|
|
197
|
+ 0f0f cff7 7078 3818 e0e0 e0e0 e020 3c3f 0707 0f0f 1f1f 3fbf 01e1 fdf8 f0f0 e0c0
|
|
198
|
+ fefc fc38 000f 1e3c 1000 2000 4000 0000 0000 0000 0000 0000 1c1c 0400 0000 0000
|
|
199
|
+ 3f3f 3ffe 6407 0300 8f01 0103 0f3f 1800 8080 c3ff e008 0000 78f0 c080 0000 0000
|
|
200
|
+ 0000 0000 0000 0000
|
|
201
|
+ ( 03 )
|
|
202
|
+ 0000 0000 0000 0000 0000 0000 0000 0003 0001 1ef0 207d fcf8 00c7 071f 7ffe 7c0c
|
|
203
|
+ 0080 1c9a 0407 0707 0000 0000 80c0 80cc 0000 0000 0000 0000 0000 0103 0307 070f
|
|
204
|
+ 070f 1fdf c380 8001 f8f0 e0c0 8080 f8ff 060f 0f1f 1f3f 3f7f 07c7 f7f0 f0f0 e0e0
|
|
205
|
+ c6c2 e3e1 001c 1f1f 0000 0080 c0c0 e080 0f1e 3c3c 0007 0707 0101 0303 0707 eff3
|
|
206
|
+ ffff ffff fefe fcfc 9f03 0000 0000 0000 e0e0 6030 3e3f 7f7f 1f1f 1f1f 1fdf e7e0
|
|
207
|
+ 8888 80c4 c4c0 c0c2 0707 070f 0f0f 4f77 f0f0 e0e0 e0e0 e0c0 7c08 0607 070f 0f0f
|
|
208
|
+ 0000 00c0 fcfe fefe 7fff ffff ff7f 0f01 e0e0 c0c0 c0c0 8080 223c 3c3c 3c3c 7c7c
|
|
209
|
+ 7030 3838 3818 181c c020 3c3f 3f3f 3f3f 1f1f 1f9f cfc1 c0c0 fcfc fcf8 f8f0 3008
|
|
210
|
+ 0000 0000 0101 0303 4078 ffff fffe fefc 7c7c 7818 0404 0810 0c02 0101 0000 0000
|
|
211
|
+ 1f1f dfe7 e070 3038 c0c0 c080 8060 7c7f 1f1f 3f3f 3f7f 7f7f 07e7 f1f0 e0c0 8080
|
|
212
|
+ fcf8 f830 081f 3e7c 1020 2040 4080 0000 0000 0000 0000 0000 181c 0200 0000 0000
|
|
213
|
+ 7f7e 3efc 440f 0100 0f00 030f 1f3e 1800 0003 c7f7 c108 0000 f8e0 c080 0000 0000
|
|
214
|
+ 0000 0000 0000 0000
|
|
215
|
+ ( 04 )
|
|
216
|
+ 0000 0000 0000 0000 0000 0000 0000 0103 0001 1ce0 60ff f8f0 0087 0f3f fefc 7800
|
|
217
|
+ 0080 3c1a 0d0f 0f0f 0000 0000 8040 808c 0000 0000 0000 0000 0000 0103 0307 070e
|
|
218
|
+ 0f1f 3f9f 8301 0103 e0c0 8000 0080 f8fe 0e1f 3f3f 7f7f ffff 0fdf e7e0 c0c0 c0c0
|
|
219
|
+ 8686 c3c3 213c 3f3f 0000 0080 c0c0 6000 0e1c 3c38 000f 0f0f 0307 070f 0f1f ffe3
|
|
220
|
+ fefe fcfc f8f8 f8f0 1f03 0000 0000 0001 8080 0070 feff ffff 3f3f 3f3f 3fff c780
|
|
221
|
+ 0808 8884 8484 8482 0f0f 0f0f 1f1f 5f67 c0c0 c0c0 c080 8080 7000 1e1f 1f1f 3f3f
|
|
222
|
+ 0101 03c3 fff8 f8f8 ffff ffff ff7f 0f01 8080 8080 0000 0000 627e 7c7c 7cfc f8f8
|
|
223
|
+ 6030 3030 3018 1818 8060 7c7f 7f7f 7f7f 3f7f 7fff 8f81 8080 f0f0 f0e0 e0e0 0038
|
|
224
|
+ 0101 0303 0307 070f c0f8 fffe fefc fcf8 f8f8 f818 040c 1810 0802 0301 0000 0000
|
|
225
|
+ 3f3f ffc7 e060 7030 0000 0000 00e0 fdfe 3f7f 7fff ffff ff7e 0fff e1c0 8080 0001
|
|
226
|
+ f8f0 f020 387f fcf8 3020 6040 c080 0000 0000 0000 0000 0000 1818 0200 0000 0000
|
|
227
|
+ 7c7c 7cb8 400f 0100 0e02 0f1f 3f7c d000 0307 cfe7 0318 8000 f0e0 c000 0000 0000
|
|
228
|
+ 0000 0000 0000 0000
|
|
229
|
+ ( 05 )
|
|
230
|
+ 0000 0000 0000 0000 0000 0000 0001 0307 0001 18c0 e1fb f0e0 0087 1f7e fcf8 7010
|
|
231
|
+ 0080 7012 0d1f 1f1f 0000 0000 0040 100c 0000 0000 0000 0000 0000 0103 0306 060c
|
|
232
|
+ 0f3f 7f9e 0003 0707 c080 0000 0081 fbfc 3e7f 7fff ffff ffff 3fff c780 8080 0000
|
|
233
|
+ 0c86 8783 637d 7e7e 0000 0080 80c0 6010 0c18 3830 080f 0f1f 0f0f 1f1f 3f3f 9f83
|
|
234
|
+ f8f8 f8f0 f0e0 e0e0 1f02 0101 0303 0307 0000 80f0 feff ffff 7e7f 7f7f 7f3f 0700
|
|
235
|
+ 1808 080c 0c04 0406 1f1f 1f1f 1f1f 7f67 8080 8080 0000 0000 4030 3e7f 7f7f 7fff
|
|
236
|
+ 0707 0fcf f3f0 e0e0 fffe fefe fe7c 0c02 0000 0000 0101 0101 e6fe f8f8 f8f8 f8f8
|
|
237
|
+ 6020 2030 3010 1018 00e0 fcfe fefe fe7e ffff ff7f 0f01 0000 e0c0 c0c0 8080 40f8
|
|
238
|
+ 0707 070f 0f1f 1f1f c1f9 fcfc f8f8 f0f0 f8f0 f010 0c1c 1830 0806 0301 0100 0000
|
|
239
|
+ 7e7e bec6 c1e1 6130 0000 0101 01e3 fffc ffff ffff fffe fe7c 3fdf 8100 0000 0103
|
|
240
|
+ e0e0 c000 79fe fcf0 3060 60c0 c080 0000 0000 0000 0000 0000 3008 0200 0000 0000
|
|
241
|
+ f8f8 f8b0 480e 0100 080e 1f3f 7ef8 e100 070f df87 0318 8000 e0c0 8000 0000 0000
|
|
242
|
+ 0000 0000 0000 0000
|
|
243
|
+
|
|
244
|
+@bg
|
|
245
|
+ 0000 0000 0000 0000 0000 0000 0307 0f3f
|
|
246
|
+ 0001 1fff ffff ffff 00ff ffff ffff ffff
|
|
247
|
+ 00c0 fcfe ffff ffff 0000 0000 80e0 f8fc
|
|
248
|
+ 0000 0000 0000 0000 0000 0103 0307 070f
|
|
249
|
+ 7fff ffff ffff ffff ffff ffff ffff ffff
|
|
250
|
+ ffff ffff ffff ffff ffff ffff ffff ffff
|
|
251
|
+ feff ffff ffff ffff 0000 8080 c0e0 f0f0
|
|
252
|
+ 0f1f 3f3f 3f3f 7f7f ffff ffff ffff ffff
|
|
253
|
+ ffff ffff ffff ffff ffff ffff ffff ffff
|
|
254
|
+ ffff ffff ffff ffff ffff ffff ffff ffff
|
|
255
|
+ f8f8 f8fc fcfc fcfe 7f7f 7f7f 7f7f 7f7f
|
|
256
|
+ ffff ffff ffff ffff ffff ffff ffff ffff
|
|
257
|
+ ffff ffff ffff ffff ffff ffff ffff ffff
|
|
258
|
+ ffff ffff ffff ffff fefe fefe fefe fefe
|
|
259
|
+ 7f3f 3f3f 3f1f 1f1f ffff ffff ffff ffff
|
|
260
|
+ ffff ffff ffff ffff ffff ffff ffff ffff
|
|
261
|
+ ffff ffff ffff ffff ffff ffff ffff ffff
|
|
262
|
+ fefe fcfc fcfc f8f0 0f0f 0703 0101 0000
|
|
263
|
+ ffff ffff ffff ff7f ffff ffff ffff ffff
|
|
264
|
+ ffff ffff ffff ffff ffff ffff ffff ffff
|
|
265
|
+ ffff ffff ffff fffe f0e0 e0c0 c080 0000
|
|
266
|
+ 0000 0000 0000 0000 3f1f 0701 0000 0000
|
|
267
|
+ ffff ffff 7f3f 0300 ffff ffff ffff ff00
|
|
268
|
+ ffff ffff fff8 8000 fcf0 e0c0 0000 0000
|
|
269
|
+ 0000 0000 0000 0000
|
|
270
|
+
|
|
271
|
+@shadow $0188
|