10 REM RATBOX Version 1.0
20 REM (C) 2010 AGsoftware
30 REM LAST UPDATE 27/8/10
40 REM
50 COLOR,0,0:SCREEN 1,2,1:COLOR 15,0,0:WIDTH32:KEYOFF
60 CLEAR200,&HCFFF:DEFINTA-Z:HI=854
70 DEFUSR1=&H41:DEFUSR2=&H44
80 DEFUSR3=&HD000:DEFUSR4=&HD008
90 RESTORE100:FORI=&HD000TO&HD00F:READA$
100 POKEI,VAL("&H"+A$):NEXTI
110 DATA 06,E3,0E,01,CD,47,00,C9
120 DATA 06,E2,0E,01,CD,47,00,C9
130 GOSUB1260:GOSUB2060
140 REM INTRO
150 CLS:A=USR3(0)
160 FOR A=1 TO 5:PUT SPRITE A,,,0:NEXTA
170 LOCATE 1,0:PRINT"1UP":LOCATE10,0:PRINT"HI-SCORE":LOCATE21,0:PRINT"ROUND";ST:LOCATE21,1:PRINT""
180 LOCATE0,1:PRINTSC*100:LOCATE9,1:PRINTHI*100
190 PUTSPRITE15,(70,60),4,15:PUTSPRITE16,(104,60),4,16:PUTSPRITE17,(138,60),4,17
200 LOCATE2,18:PRINT"1UP BONUS EVERY 40000 POINTS"
210 LOCATE 0,20:PRINT" @2010 AGSOFTWARE ENTERTAINMENT"
220 LOCATE 2,22:PRINT"PUSH SPACE OR FIRE TO START"
230 ON STRIG GOSUB 260,260,260:STRIG(0)ON:STRIG(1)ON:STRIG(2)ON
240 GOTO 230
250 REM SCORE,LIVES
260 FORS=0TO31:PUTSPRITES,,0,0:NEXTS:CLS:A=USR4(0)
270 LI=2:SC=0:BO=400:LV=1:ST=1
280 CLS:FORA=1TO5:PUTSPRITEA,,,0:NEXT:LOCATE 11,10:PRINT"ROUND";ST
290 LOCATE 12,12:PRINT"READY"
300 FORA=0TO3000:NEXTA
310 CLS
320 REM LOAD LEVELS
330 IF LV>5 THEN LV=1
340 A=USR1(0)
350 ON LV GOSUB 1830,2400,2630,2850,3070
360 A=USR2(0)
370 LOCATE 1,0:PRINT"1UP":LOCATE10,0:PRINT"HI-SCORE":LOCATE21,0:PRINT"ROUND";ST
380 LOCATE0,1:PRINTSC*100:LOCATE9,1:PRINTHI*100
390 LF=LI:IFLF>11THENLF=11
400 FORA=1TOLF:LOCATE21,1:PRINTSTRING$(LF,129);:NEXTA
410 X=40:Y=24:SP=1:Z=0
420 X2=8:Y2=24:SK=13:ZA=0:X3=8:Y3=168:SZ=13
440 INTERVALON
450 ONINTERVAL=70GOSUB680
460 ON STICK(0)ORSTICK(1)GOSUB560,560,570,570,580,580,590,590
470 X1=X:Y1=Y:XB=X3:YB=Y3:XA=X2:YA=Y2
480 PUTSPRITE1,(X,Y),13,SP+Z:PUTSPRITE2,(X,Y),14,SP+1+Z
490 IFSTICK(0)ORSTICK(1)>0THENZ=Z+2ANDZ<1:GOSUB1140
500 IFSC>HITHENHI=SC:LOCATE9,1:PRINTHI*100
510 IFSC=>BOTHENBO=BO+400:GOSUB1070
520 IF SS=4 THEN SS=0:ST=ST+1:LV=LV+1:INTERVALOFF:FORI=0TO2000:NEXT:GOSUB1170:GOSUB1110:GOTO280
530 IFX<X2+16ANDX>X2-16ANDY<Y2+16ANDY>Y2-8THENGOSUB730
540 IFX<X3+16ANDX>X3-16ANDY<Y3+16ANDY>Y3-8THENGOSUB730
550 GOTO460
560 SP=9:Y=Y-8:GOSUB600:RETURN
570 SP=1:X=X+8:GOSUB600:RETURN
580 SP=1:Y=Y+8:GOSUB600:RETURN
590 SP=5:X=X-8:GOSUB600:RETURN
600 Z1=6144+INT(INT((Y)/8)*32+((X)/8))
610 Z2=VPEEK(6144+INT(INT((Y)/8)*32+((X)/8)))
620 IF VPEEK(Z1)=128ORVPEEK(Z1+1)=128ORVPEEK(Z1+32)=128ORVPEEK(Z1+33)=128THEN X=X1:Y=Y1
630 IFZ2=136THENVPOKEZ1,160:VPOKEZ1+1,162:VPOKEZ1+32,161:VPOKEZ1+33,163:SS=SS+1:SC=SC+1:LOCATE0,1:PRINTSC*100:GOSUB1210
640 IFZ2=152THENVPOKEZ1,160:VPOKEZ1+1,162:VPOKEZ1+32,161:VPOKEZ1+33,163:SC=SC+2:LOCATE0,1:PRINTSC*100:GOSUB1190
650 IFZ2=144THENGOSUB730
660 RETURN
670 REM
680 GOSUB830:REM MOVE SKELETOR-1
690 GOSUB950:REM MOVE SKELETOR-2
700 RETURN
710 REM MORTE 1UP
720 REM DEATH 1UP
730 GOSUB1230:LI=LI-1:X=40:Y=24:SP=1:Z=0
740 LF=LI:LOCATE21+LF,1:PRINTCHR$(32):LF=LI
750 IFLI<0THENGOTO780
760 RETURN
770 REM GAME OVER
780 LOCATE 10,10:PRINT" GAME OVER ":GOSUB1240
790 FORI=1TO3000:NEXTI:INTERVALOFF
800 FORS=0TO31:PUTSPRITES,,0,0:NEXTS
810 GOTO 150
820 REM ROUTINE MOVE SKELETOR-1
830 IFG1=0THENG1=10:GOTO840ELSE850
840 RD=INT(RND(1)*4+1)
850 IFRD=1THENXA=X2:X2=X2+8:GOSUB910
860 IFRD=2THENXA=X2:X2=X2-8:GOSUB910
870 IFRD=3THENYA=Y2:Y2=Y2+8:GOSUB910
880 IFRD=4THENYA=Y2:Y2=Y2-8:GOSUB910
890 PUTSPRITE3,(X2,Y2),12,SK+ZA
900 ZA=ZA+1ANDZA<1:G1=G1-1:RETURN
910 J1=6144+INT(INT((Y2)/8)*32+((X2)/8))
920 IFVPEEK(J1)=128ORVPEEK(J1+1)=128ORVPEEK(J1+32)=128ORVPEEK(J1+33)=128THENX2=XA:Y2=YA:G1=0:RETURN830
930 RETURN
940 REM ROUTINE MOVE SKELETOR-2
950 IFG2=0THENG2=10:GOTO960ELSE970
960 RF=INT(RND(1)*4+1)
970 IFRF=1THENXB=X3:X3=X3+8:GOSUB1030
980 IFRF=2THENXB=X3:X3=X3-8:GOSUB1030
990 IFRF=3THENYB=Y3:Y3=Y3+8:GOSUB1030
1000 IFRF=4THENYB=Y3:Y3=Y3-8:GOSUB1030
1010 PUTSPRITE4,(X3,Y3),10,SZ+ZZ
1020 ZZ=ZZ+1ANDZZ<1:G2=G2-1:RETURN
1030 J2=6144+INT(INT((Y3)/8)*32+((X3)/8))
1040 IFVPEEK(J2)=128ORVPEEK(J2+1)=128ORVPEEK(J2+32)=128ORVPEEK(J2+33)=128THENX3=XB:Y3=YB:G2=0:RETURN950
1050 RETURN
1060 REM BONUS 1UP
1070 GOSUB1160
1080 LI=LI+1:LF=LI:IFLF>11THENLF=11
1090 LOCATE20+LF,1:PRINTCHR$(129)
1100 RETURN
1110 SOUND8,15:FORI=50TO165STEP8:SOUND0,I:SOUND1,178-I:FORE=1TORND(9)*100:NEXTE:NEXTI:SOUND8,0:RETURN
1120 SOUND1,2:FOR I=255 TO 50 STEP -8:SOUND8,13:SOUND0,I:NEXT:FOR O=10 TO 0 STEP -8:FOR I=50 TO 0 STEP -9:SOUND0,I:NEXT:SOUND8,O:NEXT:SOUND0,0:SOUND1,0
1130 RETURN
1140 FORQ=250TO50STEP1:FORW=QTOQ-50STEP-10:SOUND8,13:SOUND0,W:NEXTW:NEXTQ:SOUND0,0
1150 RETURN
1160 FORL=1TO10:FORQ=250TO1STEP1:FORW=QTOQ-250STEP-20:SOUND8,13:SOUND9,13:SOUND0,W:SOUND2,W:NEXTW:NEXTQ:SOUND0,0:NEXTL:SOUND9,0:RETURN
1170 FORPP=1TO3:FORI=0TO200STEP20:FORO=ITOI+20STEP2:SOUND8,13:SOUND0,O:SOUND1,O:NEXT:NEXT:NEXT:SOUND0,0:SOUND1,0
1180 RETURN
1190 FOR I=250 TO 50 STEP -80:FOR O=I TO I-80 STEP -20:SOUND8,13:SOUND0,O:NEXT:NEXT:SOUND0,0
1200 RETURN
1210 FOR I=250 TO 50 STEP -60:FOR O=I TO I-50 STEP -8:SOUND8,13:SOUND0,O:NEXT:NEXT:SOUND0,0
1220 RETURN
1230 FORLC=1TO3:FOR I=0 TO 250 STEP13:FOR O=I TO I+255STEP-1:SOUND8,13:SOUND0,O:NEXT:NEXT:SOUND0,0:NEXT:RETURN
1240 FOR I=0 TO 200 STEP 4:FOR O=I TO I+50STEP10:SOUND8,13:SOUND0,O:NEXT:NEXT:SOUND0,0:RETURN
1250 REM DEFINE SPRITES
1260 RESTORE1350:FOR S=1 TO 17:A$="":FOR F=1 TO 32:READ A:A$=A$+CHR$(A):NEXT:SPRITE$(S)=A$:NEXT
1270 RESTORE1720:FOR A=128*8 TO 129*8-1:READ B:VPOKEA,B:NEXTA
1280 RESTORE1730:FOR A=129*8 TO 130*8-1:READ B:VPOKEA,B:NEXTA
1290 RESTORE1740:FOR A=136*8 TO 140*8-1:READ B:VPOKEA,B:NEXTA
1300 RESTORE1760:FOR A=144*8 TO 148*8-1:READ B:VPOKEA,B:NEXTA
1310 RESTORE1780:FOR A=152*8 TO 156*8-1:READ B:VPOKEA,B:NEXTA
1320 RESTORE1800:FOR A=160*8 TO 164*8-1:READ B:VPOKEA,B:NEXTA
1330 VPOKE8208,16*6+14:VPOKE8209,16*15+4:VPOKE8210,16*6+4:VPOKE8211,16*10+4:VPOKE8212,16*4+14
1340 RETURN
1350 DATA 112,136,139,159,125,61,127,127,125,62,5,12,27,0,14,30
1360 DATA 28,34,162,242,188,184,252,124,252,120,176,12,192,24,224,192
1370 DATA 0,112,112,96,0,0,0,0,0,0,2,3,4,7,0,0
1380 DATA 0,28,28,12,0,0,0,0,0,0,64,192,32,224,24,48
1390 DATA 112,136,139,159,125,61,127,127,125,62,13,48,3,24,7,3
1400 DATA 28,34,162,242,188,184,252,124,252,120,160,48,216,0,112,120
1410 DATA 0,112,112,96,0,0,0,0,0,0,2,3,4,7,24,12
1420 DATA 0,28,28,12,0,0,0,0,0,0,64,192,32,224,0,0
1430 DATA 112,136,139,159,123,59,127,125,127,60,11,24,55,0,29,61
1440 DATA 28,34,162,242,124,120,252,252,124,248,96,24,128,48,192,128
1450 DATA 0,112,112,96,0,0,0,0,0,0,4,7,8,15,0,0
1460 DATA 0,28,28,12,0,0,0,0,0,0,128,128,64,192,48,96
1470 DATA 112,136,139,159,123,59,127,125,127,60,27,96,7,48,14,6
1480 DATA 28,34,162,242,124,120,252,252,124,248,64,96,176,0,224,240
1490 DATA 0,112,112,96,0,0,0,0,0,0,4,7,8,15,48,24
1500 DATA 0,28,28,12,0,0,0,0,0,0,128,128,64,192,0,0
1510 DATA 112,248,251,255,127,63,127,127,127,63,11,24,55,0,28,60
1520 DATA 28,62,190,254,252,248,252,252,252,248,96,24,128,48,224,0
1530 DATA 0,0,0,0,0,0,0,0,0,0,4,7,8,15,0,0
1540 DATA 0,0,0,0,0,0,0,0,0,0,128,128,64,200,16,224
1550 DATA 112,248,251,255,127,63,127,127,127,63,27,96,7,48,28,0
1560 DATA 28,62,190,254,252,248,252,252,252,248,64,96,176,0,224,240
1570 DATA 0,0,0,0,0,0,0,0,0,0,4,7,8,79,32,28
1580 DATA 0,0,0,0,0,0,0,0,0,0,128,128,64,192,0,0
1590 REM skeleton
1600 DATA 7,15,31,31,27,25,13,119,85,224,167,1,7,4,4,28
1610 DATA 192,229,247,242,178,62,104,192,64,0,228,4,252,0,0,0
1620 DATA 3,167,239,79,77,124,22,3,2,0,39,32,63,0,0,0
1630 DATA 224,240,248,248,216,152,176,238,170,7,229,128,224,32,32,56 
1640 REM TITLE RATBOX
1650 DATA 252,254,198,198,198,198,254,252,248,248,252,206,198,198,198,198
1660 DATA 60,126,255,231,195,195,195,195,255,255,255,195,195,195,195,195
1670 DATA 255,255,255,24,24,24,24,24,24,24,24,24,24,24,24,24
1680 DATA 124,126,99,99,99,99,99,126,126,99,99,99,99,99,126,124
1690 DATA 124,254,198,198,198,198,198,198,198,198,198,198,198,198,254,124
1700 DATA 195,195,102,102,102,60,60,24,24,60,60,102,102,102,195,195
1710 REM DATA CHARS
1720 DATA 251,251,251,0,127,127,127,0
1730 DATA 66,231,90,60,90,126,102,60
1740 DATA 3,12,19,45,88,85,181,184,189,181,85,88,45,19,12,3,192,48,200,180,26,170,189,29,173,173,170,26,180,200,48,192
1750 DATA 255,1,255,241,57,25,57,241,193,1,1,1,1,1,1,255
1760 DATA 0,64,224,112,39,15,31,31,27,25,13,7,37,112,224,64
1770 DATA 0,4,14,28,200,224,240,240,176,48,96,192,72,28,14,4
1780 DATA 0,0,0,0,0,0,0,1,96,48,28,16,48,120,220,188
1790 DATA 3,15,62,253,115,15,127,60,188,120,248,240,224,192,0,0
1800 DATA 0,63,127,127,127,127,127,127,127,127,127,127,127,127,127,127
1810 DATA 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254
1820 REM LEVEL-1
1830 LOCATE0,2:PRINT "";
1840 PRINT "";
1850 PRINT "";
1860 PRINT "";
1870 PRINT "";
1880 PRINT "";
1890 PRINT "";
1900 PRINT "";
1910 PRINT "";
1920 PRINT "";
1930 PRINT "";
1940 PRINT "";
1950 PRINT "";
1960 PRINT "";
1970 PRINT "";
1980 PRINT "";
1990 PRINT "";
2000 PRINT "";
2010 PRINT "";
2020 PRINT "";
2030 PRINT "";
2040 PRINT "";:VPOKE6911,128
2050 RETURN
2060 RESTORE2080:FOR I=256TO767:READA$
2070 VPOKEI,VAL("&H"+A$):NEXTI:RETURN
2080 DATA 00,00,00,00,00,00,00,00,18,3C,3C,3C,18,00,18,00
2090 DATA 6C,6C,48,00,00,00,00,00,6C,FE,6C,6C,6C,FE,6C,00
2100 DATA 18,3E,58,3C,1A,7C,18,00,00,C6,CC,18,30,66,C6,00
2110 DATA 70,C8,C8,70,9A,8C,76,00,18,18,10,00,00,00,00,00
2120 DATA 0C,18,30,30,30,18,0C,00,30,18,0C,0C,0C,18,30,00
2130 DATA 00,18,5A,3C,3C,5A,18,00,00,18,18,7E,18,18,00,00
2140 DATA 00,00,00,00,18,18,08,10,00,00,00,7C,00,00,00,00
2150 DATA 00,00,00,00,00,18,18,00,00,06,0C,18,30,60,C0,00
2160 DATA 38,4C,C6,C6,C6,64,38,00,18,38,18,18,18,18,7E,00
2170 DATA 7C,C6,0E,3C,78,E0,FE,00,7E,0C,18,3C,06,C6,7C,00
2180 DATA 1C,3C,6C,CC,FE,0C,0C,00,FC,C0,FC,06,06,C6,7C,00
2190 DATA 3C,60,C0,FC,C6,C6,7C,00,FE,C6,0C,18,30,30,30,00
2200 DATA 7C,C6,C6,7C,C6,C6,7C,00,7C,C6,C6,7E,06,0C,78,00
2210 DATA 00,18,18,00,18,18,00,00,00,18,18,00,18,18,08,10
2220 DATA 0C,18,30,60,30,18,0C,00,00,00,7C,00,7C,00,00,00
2230 DATA 60,30,18,0C,18,30,60,00,7C,C6,06,1C,30,00,30,00
2240 DATA 3C,42,99,A1,A1,99,42,3C,38,6C,C6,C6,FE,C6,C6,00
2250 DATA FC,C6,C6,FC,C6,C6,FC,00,3C,66,C0,C0,C0,66,3C,00
2260 DATA F8,CC,C6,C6,C6,CC,F8,00,FE,C0,C0,F8,C0,C0,FE,00
2270 DATA FE,C0,C0,F8,C0,C0,C0,00,3E,60,C0,CE,C6,66,3E,00
2280 DATA C6,C6,C6,FE,C6,C6,C6,00,7E,18,18,18,18,18,7E,00
2290 DATA 06,06,06,06,06,C6,7C,00,C6,CC,D8,F0,F8,DC,CE,00
2300 DATA C0,C0,C0,C0,C0,C0,FE,00,C6,EE,FE,FE,D6,C6,C6,00
2310 DATA C6,E6,F6,FE,DE,CE,C6,00,7C,C6,C6,C6,C6,C6,7C,00
2320 DATA FC,C6,C6,C6,FC,C0,C0,00,7C,C6,C6,C6,DE,CC,76,00
2330 DATA FC,C6,C6,CE,F8,DC,CE,00,78,CC,C0,7C,06,C6,7C,00
2340 DATA 7E,18,18,18,18,18,18,00,C6,C6,C6,C6,C6,C6,7C,00
2350 DATA C6,C6,C6,EE,7C,38,10,00,C6,C6,D6,FE,FE,6C,44,00
2360 DATA C6,EE,7C,38,7C,EE,C6,00,66,66,66,3C,18,18,18,00
2370 DATA FE,0E,1C,38,70,E0,FE,00,F8,C0,C0,C0,C0,C0,F8,00
2380 DATA 00,80,40,20,10,08,00,00,F8,18,18,18,18,18,F8,00
2390 DATA 00,00,20,50,88,00,00,00,00,00,00,00,00,00,00,F8
2400 LOCATE0,2:PRINT "";
2410 PRINT "";
2420 PRINT "";
2430 PRINT "";
2440 PRINT "";
2450 PRINT "";
2460 PRINT "";
2470 PRINT "";
2480 PRINT "";
2490 PRINT "";
2500 PRINT "";
2510 PRINT "";
2520 PRINT "";
2530 PRINT "";
2540 PRINT "";
2550 PRINT "";
2560 PRINT "";
2570 PRINT "";
2580 PRINT "";
2590 PRINT "";
2600 PRINT "";
2610 PRINT "";:VPOKE6911,128
2620 RETURN
2630 LOCATE0,2:PRINT "";
2640 PRINT "";
2650 PRINT "";
2660 PRINT "";
2670 PRINT "";
2680 PRINT "";
2690 PRINT "";
2700 PRINT "";
2710 PRINT "";
2720 PRINT "";
2730 PRINT "";
2740 PRINT "";
2750 PRINT "";
2760 PRINT "";
2770 PRINT "";
2780 PRINT "";
2790 PRINT "";
2800 PRINT "";
2810 PRINT "";
2820 PRINT "";
2830 PRINT "";
2840 PRINT "";:VPOKE6911,128:RETURN
2850 LOCATE0,2:PRINT "";
2860 PRINT "";
2870 PRINT "";
2880 PRINT "";
2890 PRINT "";
2900 PRINT "";
2910 PRINT "";
2920 PRINT "";
2930 PRINT "";
2940 PRINT "";
2950 PRINT "";
2960 PRINT "";
2970 PRINT "";
2980 PRINT "";
2990 PRINT "";
3000 PRINT "";
3010 PRINT "";
3020 PRINT "";
3030 PRINT "";
3040 PRINT "";
3050 PRINT "";
3060 PRINT "";:VPOKE6911,128:RETURN
3070 LOCATE0,2:PRINT "";
3080 PRINT "";
3090 PRINT "";
3100 PRINT "";
3110 PRINT "";
3120 PRINT "";
3130 PRINT "";
3140 PRINT "";
3150 PRINT "";
3160 PRINT "";
3170 PRINT "";
3180 PRINT "";
3190 PRINT "";
3200 PRINT "";
3210 PRINT "";
3220 PRINT "";
3230 PRINT "";
3240 PRINT "";
3250 PRINT "";
3260 PRINT "";
3270 PRINT "";
3280 PRINT "";:VPOKE6911,128:RETURN
