Skip to content

Commit 3f9bff0

Browse files
Updated for VDP 1.04
1 parent 51a77f5 commit 3f9bff0

15 files changed

+151
-86
lines changed

tests/circle_2.bas

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
30 CLS
44
40 GCOL 0,16+RND(64)
55
50 MOVE RND(1280),RND(1024)
6-
60 PLOT &94,RND(1280),RND(1024)
6+
60 PLOT 149,RND(1280),RND(1024)
77
70 GOTO 40

tests/cube.bas

+72-67
Original file line numberDiff line numberDiff line change
@@ -4,70 +4,75 @@
44
40 MODE 1
55
50 PRINT "3D Cube Demo"
66
60 PRINT
7-
70 INPUT "SOLID (S) OR WIREFRAME (W)";F$: FILLED%=F$="S"
8-
80 INPUT "MODE (0 TO 2)";M%
9-
110 MODE M%
10-
115 VDU 29,640;512;:OD=128
11-
120 :
12-
130 REM Initialise the data
13-
140 READ CN%
14-
150 DIM X%(CN%),Y%(CN%),Z%(CN%),A%(CN%),B%(CN%)
15-
160 FOR I%=1 TO CN%: READ X%(I%),Y%(I%),Z%(I%):NEXT
16-
170 READ TS%
17-
180 DIM S%(TS%,5)
18-
190 FOR I%=1 TO TS%: READ S%(I%,1),S%(I%,2),S%(I%,3),S%(I%,4),S%(I%,5):NEXT
19-
200 REM Variables
20-
210 THETA=0:PSI=0:PHI=0
21-
220 XD=0:YD=0
22-
230 SD=1024
23-
240 REM Transform
24-
250 FOR I%=1 TO CN%
25-
260 REM Rotate
26-
270 XX=X%(I%):YY=Y%(I%):ZZ=Z%(I%)
27-
280 Y=YY*COS(PHI/180*PI)-ZZ*SIN(PHI/180*PI)
28-
290 ZZ=YY*SIN(PHI/180*PI)+ZZ*COS(PHI/180*PI)
29-
300 X=XX*COS(THETA/180*PI)-ZZ*SIN(THETA/180*PI)
30-
310 ZZ=XX*SIN(THETA/180*PI)+ZZ*COS(THETA/180*PI)
31-
320 XX=X*COS(PSI/180*PI)-Y*SIN(PSI/180*PI)
32-
330 YY=X*SIN(PSI/180*PI)+Y*COS(PSI/180*PI)
33-
340 REM Transform
34-
350 XX=XX+XD:YY=YY+YD
35-
360 REM Perspective
36-
370 A%(I%)=XX*SD/(OD-ZZ)
37-
380 B%(I%)=YY*SD/(OD-ZZ)
38-
390 NEXT
39-
400 REM Draw
40-
410 CLS
41-
415 I%=RND(-55)
42-
420 FOR I%=1 TO TS%
43-
425 GCOL 0,S%(I%,5)
44-
430 C1%=S%(I%,1):C2%=S%(I%,2):C3%=S%(I%,3):C4%=S%(I%,4)
45-
440 X1=A%(C1%):X2=A%(C2%):X3=A%(C3%):X4=A%(C4%)
46-
450 Y1=B%(C1%):Y2=B%(C2%):Y3=B%(C3%):Y4=B%(C4%)
47-
460 IF X1*(Y2-Y3)+X2*(Y3-Y1)+X3*(Y1-Y2) > 0 THEN GOTO 530
48-
480 IF FILLED%=0 THEN GOTO 520
49-
490 MOVE X1,Y1:MOVE X2,Y2:PLOT 85,X3,Y3
50-
500 MOVE X3,Y3:MOVE X4,Y4:PLOT 85,X1,Y1
51-
510 GOTO 530
52-
520 MOVE X1,Y1:PLOT 5,X2,Y2:PLOT 5,X3,Y3:PLOT 5,X4,Y4:PLOT 5,X1,Y1
53-
530 NEXT
54-
540 PHI=PHI+4
55-
550 THETA=THETA-1
56-
560 GOTO 250
57-
570 REM DATA
58-
580 DATA 8
59-
590 DATA -20,20,20
60-
600 DATA 20,20,20
61-
610 DATA -20,-20,20
62-
620 DATA 20,-20,20
63-
630 DATA -20,20,-20
64-
640 DATA 20,20,-20
65-
650 DATA -20,-20,-20
66-
660 DATA 20,-20,-20
67-
670 DATA 6
68-
680 DATA 1,2,4,3,9
69-
690 DATA 7,8,6,5,10
70-
700 DATA 2,6,8,4,11
71-
710 DATA 3,7,5,1,12
72-
720 DATA 3,4,8,7,13
73-
730 DATA 1,5,6,2,14
7+
70 PRINT "Valid video modes:"
8+
80 PRINT "0-6, 8-18, 129, 130, 132-134, 136-143"
9+
90 PRINT "Modes greater than 128 are double-buffered"
10+
100 PRINT
11+
110 INPUT "SOLID (S) OR WIREFRAME (W)";F$: FILLED%=F$="S"
12+
120 INPUT "MODE";M%
13+
130 MODE M%
14+
140 VDU 29,640;512;:OD=128
15+
150 :
16+
160 REM Initialise the data
17+
170 READ CN%
18+
180 DIM X%(CN%),Y%(CN%),Z%(CN%),A%(CN%),B%(CN%)
19+
190 FOR I%=1 TO CN%: READ X%(I%),Y%(I%),Z%(I%):NEXT
20+
200 READ TS%
21+
210 DIM S%(TS%,5)
22+
220 FOR I%=1 TO TS%: READ S%(I%,1),S%(I%,2),S%(I%,3),S%(I%,4),S%(I%,5):NEXT
23+
230 REM Variables
24+
240 THETA=0:PSI=0:PHI=0
25+
250 XD=0:YD=0
26+
260 SD=1024
27+
270 REM Transform
28+
280 FOR I%=1 TO CN%
29+
290 REM Rotate
30+
300 XX=X%(I%):YY=Y%(I%):ZZ=Z%(I%)
31+
310 Y=YY*COS(PHI/180*PI)-ZZ*SIN(PHI/180*PI)
32+
320 ZZ=YY*SIN(PHI/180*PI)+ZZ*COS(PHI/180*PI)
33+
330 X=XX*COS(THETA/180*PI)-ZZ*SIN(THETA/180*PI)
34+
340 ZZ=XX*SIN(THETA/180*PI)+ZZ*COS(THETA/180*PI)
35+
350 XX=X*COS(PSI/180*PI)-Y*SIN(PSI/180*PI)
36+
360 YY=X*SIN(PSI/180*PI)+Y*COS(PSI/180*PI)
37+
370 REM Transform
38+
380 XX=XX+XD:YY=YY+YD
39+
390 REM Perspective
40+
400 A%(I%)=XX*SD/(OD-ZZ)
41+
410 B%(I%)=YY*SD/(OD-ZZ)
42+
420 NEXT
43+
430 REM Draw
44+
440 CLS
45+
450 I%=RND(-55)
46+
460 FOR I%=1 TO TS%
47+
470 GCOL 0,S%(I%,5)
48+
480 C1%=S%(I%,1):C2%=S%(I%,2):C3%=S%(I%,3):C4%=S%(I%,4)
49+
490 X1=A%(C1%):X2=A%(C2%):X3=A%(C3%):X4=A%(C4%)
50+
500 Y1=B%(C1%):Y2=B%(C2%):Y3=B%(C3%):Y4=B%(C4%)
51+
510 IF X1*(Y2-Y3)+X2*(Y3-Y1)+X3*(Y1-Y2) > 0 THEN GOTO 570
52+
520 IF FILLED%=0 THEN GOTO 560
53+
530 MOVE X1,Y1:MOVE X2,Y2:PLOT 85,X3,Y3
54+
540 MOVE X3,Y3:MOVE X4,Y4:PLOT 85,X1,Y1
55+
550 GOTO 570
56+
560 MOVE X1,Y1:PLOT 5,X2,Y2:PLOT 5,X3,Y3:PLOT 5,X4,Y4:PLOT 5,X1,Y1
57+
570 NEXT
58+
580 PHI=PHI+4
59+
590 THETA=THETA-1
60+
600 VDU 23,0,&C3
61+
610 GOTO 280
62+
620 REM DATA
63+
630 DATA 8
64+
640 DATA -20,20,20
65+
650 DATA 20,20,20
66+
660 DATA -20,-20,20
67+
670 DATA 20,-20,20
68+
680 DATA -20,20,-20
69+
690 DATA 20,20,-20
70+
700 DATA -20,-20,-20
71+
710 DATA 20,-20,-20
72+
720 DATA 6
73+
730 DATA 1,2,4,3,9
74+
740 DATA 7,8,6,5,10
75+
750 DATA 2,6,8,4,11
76+
760 DATA 3,7,5,1,12
77+
770 DATA 3,4,8,7,13
78+
780 DATA 1,5,6,2,14

tests/fireworks.bas

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
10 REM Palette Animation Example
22
20 :
3-
30 MODE 1
3+
30 MODE 0
44
40 C=1:Y=-1
55
50 FOR I=0 TO 2000
66
60 IF Y<0 X=640:Y=10:VX=COS(RND(1)*PI)*9:VY=20+RND(1)*30:MOVE X,Y

tests/keyboard_3.bas

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
10 CLS
2+
20 PRINT TAB(0,0);
3+
30 PRINT "UP ";INKEY(-58);" "
4+
40 PRINT "DOWN ";INKEY(-42);" "
5+
50 PRINT "LEFT ";INKEY(-26);" "
6+
60 PRINT "RIGHT ";INKEY(-122);" "
7+
70 GOTO 20

tests/life.bas

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
10 REM Conway's Game of Life
2+
20 :
3+
30 ON ERROR GOTO 510
4+
40 W%=38
5+
50 H%=26
6+
60 DIM L%(W%,H%), N%(W%,H%)
7+
70 MODE 8
8+
80 VDU 23,1,0
9+
90 FOR I%=1 TO W%
10+
100 FOR J%=1 TO H%
11+
110 IF RND(1)>=.7 N%(I%,J%)=1 ELSE N%(I%,J%)=0
12+
120 NEXT
13+
130 NEXT
14+
140 :
15+
150 COLOUR 13
16+
160 FOR I%=0 TO W%+1
17+
170 PRINT TAB(I%,0);"+"
18+
180 PRINT TAB(I%,H%+1);"+"
19+
190 NEXT
20+
200 FOR I%=0 TO H%+1
21+
210 PRINT TAB(0,I%);"+"
22+
220 PRINT TAB(W%+1,I%);"+"
23+
230 NEXT
24+
240 G%=0
25+
250 COLOUR 14
26+
260 PRINT TAB(0,H%+3);"Generation: ";G%;
27+
270 COLOUR 15
28+
280 FOR J%=1 TO H%
29+
290 PRINT TAB(1,J%);
30+
300 FOR I%=1 TO W%
31+
310 C%=N%(I%,J%): L%(I%,J%)=C%
32+
320 IF C% VDU 42 ELSE VDU 32
33+
330 NEXT
34+
340 NEXT
35+
350 FOR I%=1 TO W%
36+
360 FOR J%=1 TO H%
37+
370 C%=0
38+
380 FOR K%=I%-1 TO I%+1
39+
390 IF K%=0 OR K%>W% THEN 440
40+
400 FOR M%=J%-1 TO J%+1
41+
410 IF M%=0 OR M%>H% OR (K%=I% AND M%=J%) GOTO 430
42+
420 C%=C%+L%(K%,M%)
43+
430 NEXT
44+
440 NEXT
45+
450 IF C%=2 THEN N%(I%,J%)=L%(I%,J%) ELSE N%(I%,J%)=-(C%=3)
46+
460 NEXT
47+
470 NEXT
48+
480 G%=G%+1
49+
490 GOTO 250
50+
500 :
51+
510 ON ERROR OFF
52+
520 VDU 23,1,1
53+
530 PRINT TAB(0,0);

tests/mandlebrot_1.bas

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
10 REM PROGRAM TO DRAW MANDLEBROT SET
22
20 REM P.MAINWARING, MARCH 19TH 1990
33
30 :
4-
40 MODE 2
4+
40 MODE 8
55
50 ITERS=32
66
60 SCALE=1
77
70 XRANGE=-2.5
@@ -15,7 +15,7 @@
1515
150 DATA 0,0,1,1,0,1,1,0
1616
160 :
1717
170 XSTP=1280/320
18-
180 YSTP=1024/200
18+
180 YSTP=1024/240
1919
190 COLS=64
2020
200 MAXX=1280
2121
210 MAXY=1024
@@ -37,7 +37,7 @@
3737
370 IT=IT+1
3838
380 UNTIL IT=ITERS OR ZM>=4
3939
390 C%=COLS-1-INT(IT/(ITERS/(COLS-1)))
40-
430 GCOL 0,C%+16
40+
430 GCOL 0,C%
4141
440 PLOT 69,K%,J%
4242
450 NEXT
4343
460 NEXT

tests/palette_1.bas

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
10 REM Palette Test
22
20 :
3-
30 MODE 2
3+
30 MODE 8
44
40 FOR A%=128 TO 143
55
50 COLOUR A%
66
60 PRINT " ";

tests/scroll_1.bas

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
10 REM Scrolling Stars Demo
22
15 :
3-
20 MODE 2
3+
20 MODE 8
44
30 VDU 23,1,0
55
40 *FX 19
66
50 GCOL 0,RND(16)
7-
60 PLOT &40,1279,RND(1024)
7+
60 PLOT 69,1279,RND(1024)
88
70 VDU 23,7,0,1,1
99
80 GOTO 40

tests/scroll_2.bas

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
10 REM Scramble
22
20 :
3-
30 MODE 2
3+
30 MODE 8
44
40 VDU 23,1,0
55
50 LET Y%=512
66
60 *FX 19
77
70 GCOL 0,5
88
80 DRAW 1279,0,1279,Y%
99
90 GCOL 0,15
10-
100 PLOT &40,1279,Y%
10+
100 PLOT 69,1279,Y%
1111
110 VDU 23,7,0,1,1
1212
120 Y%=Y%+4*(RND(3)-2)
1313
130 GOTO 60

tests/shadows.bas

0 Bytes
Binary file not shown.

tests/sprites_1.bas

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
10 REM Sprite Demo
22
20 :
3-
30 MODE 2
3+
30 MODE 8
44
40 SW%=320
55
50 SH%=200
66
60 C%=16

tests/sprites_2.bas

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
10 REM Sprite Demo
22
20 :
3-
30 MODE 2
3+
30 MODE 8
44
40 SW%=320
55
50 SH%=200
66
60 C%=16
@@ -12,7 +12,7 @@
1212
120 VDU 23,27,1,W%;H%;
1313
130 FOR I%=1 TO W%*H%
1414
140 READ B%
15-
150 VDU B%,B%,B%,B%
15+
150 VDU 255,B%,B%,B%
1616
160 NEXT
1717
170 :
1818
180 REM Set up some sprites

tests/sprites_3.bas

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
10 REM Sprite Demo
22
20 :
3-
30 MODE 1
3+
30 MODE 0
44
40 SW%=320
55
50 SH%=200
66
60 C%=64
@@ -81,7 +81,7 @@
8181
810 ]
8282
820 NEXT
8383
830 :
84-
840 MODE 2
84+
840 MODE 8
8585
850 :
8686
860 REM Create a simple bitmap
8787
870 :

tests/sprites_4.bas

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
10 REM Sprite Demo
22
20 :
3-
30 MODE 1
3+
30 MODE 0
44
40 SW%=320
55
50 SH%=200
66
60 C%=32
@@ -93,7 +93,7 @@
9393
930 PROCloadSprite("../resources/pacman1.rgb",0,16,16)
9494
940 PROCloadSprite("../resources/pacman2.rgb",1,16,16)
9595
950 :
96-
960 MODE 2
96+
960 MODE 8
9797
970 :
9898
980 REM Set up some sprites
9999
990 :

tests/sprites_5.bas

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
10 REM Sprite Demo
22
20 :
3-
30 MODE 1
3+
30 MODE 0
44
40 SW%=320
55
50 SH%=200
66
60 C%=32
@@ -93,7 +93,7 @@
9393
930 PROCloadSprite("../resources/pacman1.rgb",0,16,16)
9494
940 PROCloadSprite("../resources/pacman2.rgb",1,16,16)
9595
950 :
96-
960 MODE 2
96+
960 MODE 8
9797
970 :
9898
980 REM Set up some sprites
9999
990 :

0 commit comments

Comments
 (0)