Random game
Random game
Random software
Bats Bats Bats Bats Bats Bats Bats
Listing 1
10 REM * BATS * * STAN OCKERS 3-82 * * from ANTIC DEC/JAN 83*
30 DIM ZZ$(32):​FOR I=1 TO 32:​READ A:​ZZ$(I)=CHR$(A):​NEXT I:​GOSUB 1250:​CLR
40 DATA 104,​104,​133,​204,​104,​133,​203,​104,​133,​206,​104,​133,​205,​162,​4,​160,​0
50 DATA 177,​203,​145,​205,​136,​208,​249,​230,​204,​230,​206,​202,​208,​240,​96
60 ? "PRESS ANY KEY TO START":​GOSUB 920
70 TRAP 70:​? "# PLAYERS ";:​POKE 764,​255:​INPUT NP
80 REM ** PM GRAPHICS **
90 DIM D$(1),​F$((INT(ADR(D$)/1024)+1)*1024-ADR(D$)-1),​PM$(384),​M$(128),​P$(128),​MM$(8)
100 RESTORE 110:​FOR I=1 TO 8:​READ A:​MM$(I)=CHR$(A):​NEXT I
110 DATA 3,​3,​12,​12,​48,​48,​192,​192
120 PM$=CHR$(0):​PM$(384)=CHR$(0):​PM$(2)=PM$:​M$=PM$:​P$=M$
130 REM ** MISSILE COLORS **
140 POKE 704,​14:​POKE 705,​39:​POKE 706,​54:​POKE 707,​70
150 REM ** VBI ROUT. TO MOVE MISSILES **
160 FOR I=1536 TO 1566:​READ A:​POKE I,​A:​NEXT I
170 DATA 104,​160,​14,​162,​6,​169,​7,​76,​92,​228,​90,​120,​150,​180,​162,​3,​222,​10,​6,​189,​10,​6,​157,​4,​208,​202,​16,​244,​76,​98,​228
180 REM ** BAT IMAGES **
190 DIM BATDN$(5):​BATDN$=P$:​FOR I=2 TO 4:​READ A:​BATDN$(I,​I)=CHR$(A):​NEXT I
200 DATA 24,​165,​66
210 DIM BATUP$(5):​BATUP$=P$:​FOR I=2 TO 4:​READ A:​BATUP$(I,​I)=CHR$(A):​NEXT I
220 DATA 66,​165,​24
230 POKE 54279,​ADR(PM$)/256:​POKE 559,​46:​POKE 53277,​3:​POKE 623,​4:​A=USR(1536)
240 REM ** STALACTITES AND STALAGMITES **
250 DIM C$(42),​U$(42):​C$="*****$%******&":​U$=")(*****'******":​FOR I=1 TO 14:​C$(I+14)=CHR$(ASC(C$(I))-32)
260 U$(I+14)=CHR$(ASC(U$(I))-32):​C$(I+28)=CHR$(ASC(C$(I))+128):​U$(I+28)=CHR$(ASC(U$(I))+128):​NEXT I
270 DIM P(NP),​SCORE(NP),​TOTAL(NP),​BN(NP),​BONUS(NP)
280 W=7:​P=0:​POKE 82,​0
290 FOR I=1 TO NP:​SCORE(I)=0:​TOTAL(I)=0:​BN(I)=3:​BONUS(I)=1000:​NEXT I:​NXTCV=300*NP
300 REM ** CHANGE WIDTH OF CAVERN **
310 IF W>3 THEN W=W-1
320 GOSUB 670
330 P=P+1:​IF P>NP THEN P=1
340 IF BN(P)=0 THEN 330
350 M$=PM$:​FOR I=0 TO 3:​M$(YST+5*W+W*(3-I))=MM$(2*I+1,​2*I+2):​NEXT I
360 REM ** MAIN LOOP **
370 POKE 656,​1:​POKE 657,​22:​? " Pull Joystick"
380 IF STICK(0)<>13 THEN 380
390 REM ** SCORECARD **
400 ? CHR$(125):​GOSUB 1090:​POKE 656,​0:​POKE 657,​26:​? "PLAYER #";P
410 POKE 656,​1:​POKE 657,​24:​? "Round Total";:​GOSUB 1110
420 POKE 53248,​30:​YPOS=YST+20:​POKE 53278,​0:​T=0:​DIS=12
430 FOR XPOS=47 TO 200:​POKE 53248,​XPOS:​IF STRIG(0)=0 THEN YPOS=YPOS-1:​P$(YPOS)=BATUP$
440 IF STRIG(0)=1 THEN YPOS=YPOS+1:​P$(YPOS)=BATDN$
450 IF PEEK(53256)>0 THEN POKE 1546,​0:​TOTAL(P)=TOTAL(P)-100:​GOTO 580
460 IF PEEK(53257)>0 THEN POKE 1547,​0:​GOSUB 1140
470 IF PEEK(53258)>0 THEN POKE 1548,​0:​GOSUB 1140
480 IF PEEK(53259)>0 THEN POKE 1549,​0:​GOSUB 1140
490 IF PEEK(53252)>0 THEN 580
500 NEXT XPOS:​P$=PM$
510 IF SCORE(P)<300 THEN 420
520 TOTAL(P)=TOTAL(P)+SCORE(P):​SCORE(P)=0:​GOSUB 1120
530 IF TOTAL(P)>BONUS(P) AND BN(P)<4 THEN BONUS(P)=BONUS(P)+1000:​BN(P)=BN(P)+1:​GOSUB 1090:​DIS=10:​T=30:​GOSUB 800
540 FOR I=1 TO 30:​GOSUB 1130:​FOR J=1 TO 30:​NEXT J:​GOSUB 1110:​NEXT I
550 IF P=NP THEN 310
560 GOTO 330
570 REM ** LOSE A BAT **
580 DIS=10:​T=9:​GOSUB 800
590 YPOS=YPOS+1:​P$(YPOS)=BATDN$:​POKE 53278,​0:​SOUND 1,​YPOS,​10,​10:​IF PEEK(53252)=0 THEN 590
600 GOSUB 810:​P$=PM$:​SCORE(P)=0:​BN(P)=BN(P)-1:​GOSUB 1090:​IF BN(P)=0 THEN POKE 656,​0:​POKE 657,​6:​? " ":​GOSUB 840
610 GOSUB 1100:​FOR I=1 TO NP:​IF BN(I)>0 THEN 540
620 NEXT I:​GOSUB 1160:​GRAPHICS 17:​POSITION 5,​2:​? #6;"GamE OveR":​FOR I=1 TO NP:​POSITION 3,​2+2*I:​? #6;"Player #";I;
630 ? #6;" = ";TOTAL(I):​NEXT I:​POSITION 3,​23:​? #6;"PRESS ANY KEY";
640 FOR I=1 TO 300:​NEXT I:​GOSUB 830:​IF FL=0 THEN 640
650 GOTO 280
660 REM ** DRAW CAVERN **
670 GOSUB 1160:​GRAPHICS 2:​GOSUB 1180:​POKE 77,​0
680 DL=INT(RND(0)*(8-W))+1:​YST=8*(DL+1)
690 FOR X=0 TO 19:​GOSUB 780:​Y=0:​FOR I=R+7-DL TO R+6:​POSITION X,​Y:​? #6;C$(I,​I):​Y=Y+1:​NEXT I
700 FOR I=1 TO W:​POSITION X,​Y:​? #6;" ":​Y=Y+1:​NEXT I
710 IF DL+W>=10 THEN Y=Y-1:​POSITION X,​Y:​? #6;"'":​GOTO 730
720 GOSUB 780:​FOR I=R TO R+9-DL-W:​POSITION X,​Y:​? #6;U$(I,​I):​Y=Y+1:​NEXT I
730 IF DL<=1 THEN DL=2:​GOTO 760
740 IF DL>=10-W THEN DL=9-W:​GOTO 760
750 DL=DL+INT(RND(0)*3)-1
760 NEXT X
770 RETURN
780 R=INT(RND(0)*6)*7+1:​RETURN
790 REM ** SOUND SUBR'S **
800 FOR I=15 TO 0 STEP -1:​SOUND 0,​I,​DIS,​I:​FOR J=1 TO T:​NEXT J:​NEXT I:​RETURN
810 FOR I=10 TO 2 STEP -2:​SOUND O,​RND(0)*255,​8,​I:​SOUND 1,​RND(0)*255,​8,​I:​FOR J=1 TO 30:​NEXT I
820 SOUND 0,​0,​0,​0:​SOUND 1,​0,​0,​0:​RETURN
830 RESTORE 1060:​LS=30:​LL=5:​GOSUB 850:​RETURN
840 RESTORE 1010:​LS=20:​LL=10
850 FL=0
860 READ I,​J:​IF I=3 THEN RETURN
870 IF I=0 THEN 900
880 IF PEEK(53775)<255 THEN FL=1:​RETURN
890 SOUND 0,​I,​10,​10:​SOUND 1,​I-2,​10,​6
900 FOR I=1 TO J:​FOR K=1 TO LS:​NEXT K:​NEXT I:​SOUND 0,​0,​0,​0:​SOUND 1,​0,​0,​0
910 FOR I=1 TO LL:​NEXT I:​GOTO 860
920 RESTORE 1020:​LS=12:​LL=12:​GOSUB 850
930 IF FL=1 THEN RETURN
940 RESTORE 1040:​GOSUB 850
950 IF FL=1 THEN RETURN
960 RESTORE 1020:​GOSUB 850
970 IF FL=1 THEN RETURN
980 RESTORE 1050:​GOSUB 850
990 IF FL=1 THEN RETURN
1000 FOR I=1 TO 300:​NEXT I:​GOTO 920
1010 DATA 243,​4,​243,​4,​243,​1,​243,​4,​204,​4,​217,​1,​217,​4,​243,​1,​243,​4,​255,​1,​243,​6,​3,​3
1020 DATA 243,​1,​217,​1,​204,​1,​182,​1,​162,​1,​204,​1,​162,​1,​0,​1,​173,​1,​217,​1,​173,​1,​0,​1,​182,​1,​230,​1,​182,​1,​0,​1
1030 DATA 243,​1,​217,​1,​204,​1,​182,​1,​162,​1,​204,​1,​162,​1,​121,​1,​3,​3
1040 DATA 136,​1,​162,​1,​204,​1,​162,​1,​136,​4,​3,​3
1050 DATA 162,​1,​204,​1,​162,​1,​121,​1,​243,​4,​3,​3
1060 DATA 81,​4,​85,​2,​102,​1,​108,​1,​121,​6,​108,​1,​102,​1,​81,​2,​81,​2,​85,​2,​102,​1,​108,​1,​121,​8
1070 DATA 108,​2,​91,​2,​102,​2,​108,​2,​121,​1,​128,​1,​121,​1,​108,​1,​102,​2,​121,​2,​81,​4,​102,​4,​121,​8,​3,​3
1080 REM ** SUBR. TO INDICATE BATS LEFT **
1090 POKE 656,​0:​POKE 657,​6:​? " ";:​POKE 657,​6:​FOR I=1 TO BN(P):​? "+ ";:​NEXT I:​RETURN
1100 POKE 656,​1:​POKE 657,​5:​? SCORE(P);" ":​RETURN
1110 POKE 656,​1:​POKE 657,​12:​? TOTAL(P);" ":​RETURN
1120 POKE 656,​1:​POKE 657,​5:​? " ":​RETURN
1130 POKE 656,​1:​POKE 657,​12:​? " ":​RETURN
1140 GOSUB 800:​POKE 53278,​0:​SCORE(P)=SCORE(P)+25:​GOTO 1100
1150 REM ** SUBR. TO REMOVE PM GR. **
1160 POKE 53277,​0:​POKE 54272,​0:​FOR I=53261 TO 53264:​POKE I,​0:​NEXT I:​RETURN
1170 REM ** SUBR. TO INSERT PM GR. **
1180 POKE 53277,​3:​POKE 559,​46:​START=(PEEK(106)+1):​POKE 756,​START
1190 REM ** ALTER DISPLAY LIST **
1200 A=PEEK(560)+256*PEEK(561)
1210 IF PEEK(A)<>66 THEN A=A+1:​GOTO 1210
1220 POKE A,​70:​POKE A+3,​6:​POKE A+4,​6:​POKE A+5,​6
1230 RETURN
1240 REM ** CHANGE CHARACTER SET **
1250 POKE 106,​PEEK(106)-5:​GRAPHICS 0:​START=(PEEK(106)+1)*256:​POKE 756,​START/256:​POKE 752,​1
1260 ? "INITIALIZING ......"
1270 A=USR(ADR(ZZ$),​57344,​START):​RESTORE 1300
1280 READ X:​IF X=-1 THEN RESTORE:​RETURN
1290 FOR Y=0 TO 7:​READ Z:​POKE X+Y+START,​Z:​NEXT Y:​GOTO 1280
1300 DATA 32,​255,​255,​127,​127,​126,​62,​62,​60
1310 DATA 40,​60,​28,​28,​24,​8,​8,​8,​8
1320 DATA 48,​255,​127,​126,​60,​56,​24,​8,​8
1330 DATA 56,​8,​24,​28,​124,​124,​254,​254,​255
1340 DATA 64,​60,​126,​126,​126,​126,​126,​127,​255
1350 DATA 72,​16,​16,​16,​16,​16,​24,​60,​60
1360 DATA 80,​255,​255,​255,​255,​255,​255,​255,​255
1370 DATA 88,​0,​24,​24,​165,​165,​66,​66,​0
1380 DATA -1	

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!