Browse code

(dvd.tal) Optimized

neauoire authored on 29/09/2023 18:01:13
Showing 1 changed files
... ...
@@ -5,59 +5,51 @@
5 5
 
6 6
 |0000
7 7
 
8
-	@dvd &x $2 &y $2 &dx $1 &dy $1
8
+	@dvd &x $2 &y $2
9 9
 
10
-|0100 ( -> )
10
+|0100
11 11
 
12
-	( theme )
12
+@on-reset ( -> )
13
+	( | theme )
13 14
 	#4cfd .System/r DEO2
14 15
 	#4cf3 .System/g DEO2
15 16
 	#dcf2 .System/b DEO2
16
-	( vectors )
17
+	( | vectors )
17 18
 	;on-frame .Screen/vector DEO2
18
-	( starting position )
19
+	( | starting position )
19 20
 	.Screen/width DEI2 #01 SFT2 .dvd/x STZ2
20 21
 	.Screen/height DEI2 #01 SFT2 .dvd/y STZ2
21
-	( set collisions )
22
+	( | set collisions )
22 23
 	.Screen/width DEI2 #0020 SUB2 ;on-frame/hit-hor STA2
23 24
 	.Screen/height DEI2 #0010 SUB2 ;on-frame/hit-ver STA2
24
-	( drawing mode )
25
+	( | drawing mode )
25 26
 	[ LIT2 36 -Screen/auto ] DEO
26
-	#01 draw-dvd
27
-
28
-BRK
27
+	#01 draw-dvd BRK
29 28
 
30 29
 @on-frame ( -> )
31
-
32 30
 	#00 draw-dvd
33
-	( x )
31
+	( | x )
34 32
 	.dvd/x LDZ2
35
-		DUP2 #0000 EQU2 ?&flip-x
36
-		DUP2 [ LIT2 &hit-hor $2 ] EQU2 ?&flip-x
37
-	&no-x
38
-	[ LIT2 00 -dvd/dx ] LDZ DUP2 ADD2 ADD2 #ffff ADD2 .dvd/x STZ2
39
-	( y )
33
+	( left ) DUP2 #0000 NEQ2 ?{ #0001 ,&x STR2 }
34
+	( right ) DUP2 [ LIT2 &hit-hor $2 ] NEQ2 ?{ #ffff ,&x STR2 }
35
+	[ LIT2 &x 0001 ] ADD2 .dvd/x STZ2
36
+	( | y )
40 37
 	.dvd/y LDZ2
41
-		DUP2 #0000 EQU2 ?&flip-y
42
-		DUP2 [ LIT2 &hit-ver $2 ] EQU2 ?&flip-y
43
-	&no-y
44
-	[ LIT2 00 -dvd/dy ] LDZ DUP2 ADD2 ADD2 #ffff ADD2 .dvd/y STZ2
45
-	#01 draw-dvd
46
-
47
-BRK
48
-	&flip-x .dvd/dx LDZk #00 EQU SWP STZ !&no-x
49
-	&flip-y .dvd/dy LDZk #00 EQU SWP STZ !&no-y
38
+	( top ) DUP2 #0000 NEQ2 ?{ #0001 ,&y STR2 }
39
+	( bottom ) DUP2 [ LIT2 &hit-ver $2 ] NEQ2 ?{ #ffff ,&y STR2 }
40
+	[ LIT2 &y 0001 ] ADD2 .dvd/y STZ2
41
+	#01 draw-dvd BRK
50 42
 
51 43
 @draw-dvd ( color -- )
52
-
53
-	;dvd_icn .Screen/addr DEO2
44
+	;dvd-icn .Screen/addr DEO2
54 45
 	.dvd/x LDZ2 .Screen/x DEO2
55 46
 	.dvd/y LDZ2 .Screen/y DEO2
56
-	.Screen/sprite DEOk DEO
57
-
58
-JMP2r
47
+	.Screen/sprite DEOk
48
+	DEO
49
+	JMP2r
59 50
 
60
-@dvd_icn ( 4 x 2 ) [
51
+@dvd-icn ( 4 x 2 )
52
+	[
61 53
 	001f 3f38 3838 787f 00fe fe7e 7777 e3c3
62 54
 	000f 1f3b 7b77 e7c7 00fc fe8f 8707 0efc
63 55
 	7f00 000f ff7f 0700 0301 00ff f0f8 ff00