Browse code

(dvd.tal) Optimized

neauoire authored on 25/03/2022 16:49:51
Showing 1 changed files
... ...
@@ -1,7 +1,7 @@
1 1
 ( DVD Bounce )
2 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
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 5
 
6 6
 |0000
7 7
 
... ...
@@ -9,15 +9,19 @@
9 9
 
10 10
 |0100 ( -> )
11 11
 	
12
-	( theme ) 
13
-	#4cfd .System/r DEO2 
14
-	#4cf3 .System/g DEO2 
12
+	( theme )
13
+	#4cfd .System/r DEO2
14
+	#4cf3 .System/g DEO2
15 15
 	#dcf2 .System/b DEO2
16 16
 	( vectors )
17 17
 	;on-frame .Screen/vector DEO2
18 18
 	( starting position )
19 19
 	.Screen/width DEI2 #01 SFT2 .dvd/x STZ2
20 20
 	.Screen/height DEI2 #01 SFT2 .dvd/y STZ2
21
+	( set collisions )
22
+	.Screen/width DEI2 #0020 SUB2 ;on-frame/hit-hor STA2
23
+	.Screen/height DEI2 #0010 SUB2 ;on-frame/hit-ver STA2
24
+	( drawing mode )
21 25
 	#36 .Screen/auto DEO
22 26
 	#01 ,draw-dvd JSR
23 27
 	
... ...
@@ -26,21 +30,23 @@ BRK
26 30
 @on-frame ( -> )
27 31
 
28 32
 	#00 ,draw-dvd JSR
29
-	( case: hit-right ) .dvd/x LDZ2 .Screen/width DEI2 #0020 SUB2 EQU2
30
-	( case: hit-left ) .dvd/x LDZ2 #0000 EQU2 
31
-	#0000 EQU2 ,&no-flipx JCN 
32
-		.dvd/dx LDZk #00 EQU SWP STZ 
33
-		&no-flipx
34
-	( case: hit-bottom ) .dvd/y LDZ2 .Screen/height DEI2 #0010 SUB2 EQU2
35
-	( case: hit-top ) .dvd/y LDZ2 #0000 EQU2 
36
-	#0000 EQU2 ,&no-flipy JCN 
37
-		.dvd/dy LDZk #00 EQU SWP STZ 
38
-		&no-flipy
39
-	( incr ) .dvd/x LDZ2 #0001 #00 .dvd/dx LDZ #00 EQU DUP2 ADD2 SUB2 ADD2 .dvd/x STZ2
40
-	( incr ) .dvd/y LDZ2 #0001 #00 .dvd/dy LDZ #00 EQU DUP2 ADD2 SUB2 ADD2 .dvd/y STZ2
33
+	( x )
34
+	.dvd/x LDZ2
35
+		STH2k #0000 EQU2 ,&flip-x JCN
36
+		STH2kr [ LIT2 &hit-hor $2 ] EQU2 ,&flip-x JCN
37
+	&no-x
38
+	STH2r [ #00 .dvd/dx LDZ ] #10 SFT2 ADD2 #ffff ADD2 .dvd/x STZ2
39
+	( y )
40
+	.dvd/y LDZ2
41
+		STH2k #0000 EQU2 ,&flip-y JCN
42
+		STH2kr [ LIT2 &hit-ver $2 ] EQU2 ,&flip-y JCN
43
+	&no-y
44
+	STH2r [ #00 .dvd/dy LDZ ] #10 SFT2 ADD2 #ffff ADD2 .dvd/y STZ2
41 45
 	#01 ,draw-dvd JSR
42 46
 
43 47
 BRK
48
+	&flip-x .dvd/dx LDZk #00 EQU SWP STZ ,&no-x JMP
49
+	&flip-y .dvd/dy LDZk #00 EQU SWP STZ ,&no-y JMP
44 50
 
45 51
 @draw-dvd ( color -- )
46 52