-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsprite.bas
94 lines (94 loc) · 4.52 KB
/
sprite.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
1 REM Sprites demo
2 PRINT "This program requires Graphics Controller"
100 REM WIDTH 255
105 FREQ=440
110 GOSUB 10000: REM Define functions
120 REM Cursor off
130 PRINT FNCURSOROFF$(0);
140 REM Number of sprites
150 PRINT FNSPRITECOUNT$(2);
155 GOSUB 1000
160 REM Sprite 0
170 PRINT FNSPRITEDEFRGB2$(0, 16, 14);
180 GOSUB 20010: REM Sprite 0 data
185 GOSUB 1000
190 REM Sprite 1
200 PRINT FNSPRITEDEFMONO$(1, 64, 64, 0, 255, 255);
210 GOSUB 20200: REM Sprite 1 data
215 GOSUB 1000
220 REM move sprites
230 X0 = 0: Y0 = 320
240 O0 = 1
260 FOR I = 0 TO 900
270 REM Move sprites
280 PRINT FNSPRITESET$(0, "V", 0, X0, Y0);
290 PRINT FNSPRITESET$(1, "V", 0, 320 + SIN(I / 25) * 100, 200 + COS(I / 25) * 100);
300 X0 = X0 + O0
310 IF X0 > 400 THEN O0 = -1
320 IF X0 < 200 THEN O0 = 1
350 REM Draw starts and scroll down
360 PRINT FNPEN$(255,255,255);
370 IF (I MOD 2) = 0 THEN PRINT FNPIXEL$(640*RND, 0);FNSCROLL$(0, 1);
375 GOSUB 1000
410 NEXT I
420 PRINT FNSPRITESET$(0, "H", 0, 0, 0);
430 PRINT FNSPRITESET$(1, "H", 0, 0, 0);
440 PRINT FNSPRITECOUNT$(0);
450 PRINT FNCURSORON$(0);
460 END
1000 REM Generate a sound (_S), sine waveform (0),
1005 RETURN
1010 REM frequency FREQ, duration 80ms, volume 100
1020 PRINT CHR$(27)+"_S0;"+STR$(FREQ)+";80;100$";
1030 REM delay 100ms
1040 PRINT CHR$(27)+"_Y100$";
1050 IF INKEY$ <> "$" THEN 1050
1060 RETURN
10000 REM
10010 REM ** DEFINE FUNCTIONS **
10020 DEF FNSPRITECOUNT$(COUNT%) = CHR$(27)+"_GSPRITECOUNT"+STR$(COUNT%)+"$"
10030 DEF FNSPRITEDEFMONO$(INDEX%, W%, H%, R%, G%, B%) = CHR$(27)+"_GSPRITEDEF"+STR$(INDEX%)+";"+STR$(W%)+";"+STR$(H%)+";M;"+STR$(R%)+";"+STR$(G%)+";"+STR$(B%)+";"
10040 DEF FNSPRITEDEFRGB2$(INDEX%, W%, H%) = CHR$(27)+"_GSPRITEDEF"+STR$(INDEX%)+";"+STR$(W%)+";"+STR$(H%)+";2;"
10050 DEF FNSPRITEDEFRGB8$(INDEX%, W%, H%) = CHR$(27)+"_GSPRITEDEF"+STR$(INDEX%)+";"+STR$(W%)+";"+STR$(H%)+";8;"
10060 DEF FNSPRITESET$(INDEX%, VISIBLE$, FRAME%, X%, Y%) = CHR$(27)+"_GSPRITESET"+STR$(INDEX%)+";"+VISIBLE$+";"+STR$(FRAME%)+";"+STR$(INT(X%))+";"+STR$(INT(Y%))+"$"
10070 DEF FNCURSORON$(D) = CHR$(27)+"_E1$"
10080 DEF FNCURSOROFF$(D) = CHR$(27)+"_E0$"
10090 DEF FNPEN$(R%, G%, B%) = CHR$(27)+"_GPEN"+STR$(R%)+";"+STR$(G%)+";"+STR$(B%)+"$"
10100 DEF FNPIXEL$(X%, Y%) = CHR$(27)+"_GPIXEL"+STR$(INT(X%))+";"+STR$(INT(Y%))+"$"
10110 DEF FNSCROLL$(X%, Y%) = CHR$(27)+"_GSCROLL"+STR$(X%)+";"+STR$(Y%)+"$"
11000 RETURN
20000 REM
20010 REM ** Define 16x14, RGB222 sprite **
20020 PRINT "00000000000000eaea00000000000000";
20030 PRINT "000000000000eaeaeaea000000000000";
20040 PRINT "000000000000eaeaeaea000000000000";
20050 PRINT "00e000000000eaeaeaea00000000e000";
20060 PRINT "00e000000000eaeaeaea00000000e000";
20070 PRINT "e0e000000000eaeaeaea00000000e0e0";
20080 PRINT "e0e00000e000eaeaeaea00e00000e0e0";
20090 PRINT "e0e00000e0eaeac2c2eaeae00000e0e0";
20100 PRINT "e0e000e0e0eac2eaeac2eae0e000e0e0";
20110 PRINT "e0e000eaeaeaeaeaeaeaeaeaea00e0e0";
20120 PRINT "e0e0eaeaeaeac20000c2eaeaeaeae0e0";
20130 PRINT "e0e0eaeaeac2c20000c2c2eaeaeae0e0";
20140 PRINT "e0e0ea00c2c2c20000c2c2c200eae0e0";
20150 PRINT "e00000000000c20000c20000000000e0$";
20160 RETURN
20200 REM ** Define 64x64, monochrome sprite **
20210 PRINT "0000001f00000000000001fff0000000000007fffc00000000000ffffe000000";
20220 PRINT "00003f001f80000000007c0007c000000000f80003e007c00001e00000f0fff8";
20230 PRINT "0003c000007bfffc00038000003ffefe00070000001f800e00070000001e0007";
20240 PRINT "000e0000000e0007000e0000000e0007001c0000000700030018000000030007";
20250 PRINT "003800000003800700380000000380070030000000038006007000000003000e";
20260 PRINT "007000000007000e006000000007001c00600000000e001c00e00000000e0038";
20270 PRINT "00e00000001c003800e00000003c007000c00000003800f000c00000007000e0";
20280 PRINT "00c0000000e001c000c0000001e003c000c0000003c0078000c0000007800700";
20290 PRINT "00c000000f000f0000e000001e001e0000e000003c003c0000e0000078007800";
20300 PRINT "00e00001f000f80000e00003e001f00000e0000fc003f00001f0001f0007f000";
20310 PRINT "03f0007e000fb00003b001f8001e7000073807f0003c70000e1f7fc000786000";
20320 PRINT "0e1fff0000f0e0001c0ff80001e0e0003c03c00007c0c000380000000f81c000";
20330 PRINT "300000001f01c000700000007c03800070000000f8078000e0000003f0070000";
20340 PRINT "e0000007c00e0000e000000f801e0000c000003f003c0000c00000fc00780000";
20350 PRINT "c00003f800f00000c0000fe003e00000e0003fc00fc00000f001ffffff800000";
20360 PRINT "7c3ff9fffe0000003fffe07ff80000001fff00078000000007f0000000000000$";
20370 RETURN