REM TEST DRIVE BY CCLX33 V0.61 DIM Y(50),XA(50),CU(1500),TREE(1500),CAR(1500) SOUND SOURCE ROM(4) GAMEPAD 1 RESET: CLS D=0 CURVE=0 T=0 HANDLE=0.03 SPEEDFADE=0.2 ACC=1 BRAKE=2 BGX=0 OUTSPEED=25 CENTRIFUGAL=0 MAXSPEED=175 OTHERSPEED=0.05 OTHERRUN=0 CARN=0 ROUND=0 TOTLEROUND=4 GOSUB PREROAD DATA "4565445665446676445654" DATA "4567876544432123445754" DATA "46864468643202357" DATA "4887654112344478744576434" SECS=0 GOSUB PICKCAR GOSUB DRAWBG SPEED=0 GOSUB GREENLIGHT RESTART: READ ROAD$ GOSUB PRECURVE ROUND=ROUND+1 PRINT "ROUND",ROUND MILE=0 MM=0 GOSUB DRAWROAD GOSUB DRAWCAR 'FOUL=0 'GOSUB GREENLIGHT WIN=0 'IF FOUL=1 THEN WAIT 30 DO 'CLS IF LEFT(0) AND SPEED>0 THEN CENTRIFUGAL=CENTRIFUGAL-HANDLE IF RIGHT(0) AND SPEED>0 THEN CENTRIFUGAL=CENTRIFUGAL+HANDLE IF BUTTON(0,1) THEN SPEED=SPEED+ACC IF BUTTON(0,0) THEN SPEED=SPEED-BRAKE SPEED=MAX(0,MIN(MAXSPEED,SPEED-SPEEDFADE)) IF SPEED>0 THEN PLAY 2,SPEED/5,2 IF SPEED=0 THEN TT=5000 ELSE TT=180-SPEED OTHERRUN=OTHERRUN+OTHERSPEED IF T>=TT THEN GOSUB DRAWROAD CENTRIFUGAL=MAX(-1.3,MIN(1.3,CENTRIFUGAL-CURVE/50)) IF MM-OTHERRUN>0 THEN IF CAR(MM-OTHERRUN)<>0 AND SGN(CENTRIFUGAL)=SGN(CAR(MM-OTHERRUN)) THEN SPEED=10 PLAY 1,20 SOUND 1 END IF END IF IF ABS(CENTRIFUGAL)>0.9 AND SPEED>OUTSPEED THEN SPEED=SPEED-20 PLAY 1,36,4 REM HIT TREE IF TREE(MM)>0 THEN SPEED=5 PLAY 1,20 SOUND 1 END IF END IF T=0 GOSUB DRAWCAR END IF T=T+4 GOSUB SHOWINFO IF WIN=1 THEN GOTO WIN WAIT 1 LOOP PREROAD: P=1.1 YY=123 YA=3.3 ROADWID=60 N=29 FOR I=0 TO N XA(I)=ROADWID ROADWID=ROADWID/P Y(I)=YY YY=YY-YA YA=YA/P NEXT I RETURN PRECURVE: K=0 FOR I=1 TO LEN(ROAD$) FOR J=4 TO 16 CAR(K+J)=0 NEXT J A=VAL(MID$(ROAD$,I,1))-4 IF MAXSPEED<170 AND RND>0.7 THEN CAR(K+INT(RND*4)+4)=INT(RND*2)-0.5 IF RND<8/(MAXSPEED-150) THEN CAR(K+INT(RND*4)+13)=INT(RND*2)-0.5 ' IF MAXSPEED<170 AND RND>0.4 THEN CAR(K+INT(RND*4)+13)=INT(RND*2)-0.5 FOR J=1 TO 20 IF RND>0.8 THEN TREE(K)=6 CU(K)=A K=K+1 NEXT J NEXT I RETURN GREENLIGHT: FOR I=1 TO 3 SPRITE.A I+1,(5,,,,0) SPRITE I+1,80+I*9,0,8 NEXT I FOR I=1 TO 3 PLAY 2,50,8 SPRITE.A I+1,(4,) SPRITE I+1,80+I*9,0,8 WAIT 10 IF BUTTON(0,1) THEN 'FOUL=1 PLAY 2,90,10 END IF NEXT I PLAY 2,70,10 STARTTIME=TIMER RETURN SHOWINFO: LOCATE 0,0 PRINT "SPEED=";INT(SPEED)," " PRINT "MILES=";INT(MILE*100)/100 SEC=(TIMER-STARTTIME) PRINT "TIME=";INT(SEC/0.6)/100 RETURN READCURVE: CURVE=CU(M)/1.2 TR=TREE(M) IF M-OTHERRUN>0 THEN OCARX=CAR(M-OTHERRUN) ELSE OCARX=0 END IF RETURN WIN: SECS=SECS+SEC 'WAIT 20 IF ROUND=LEN(ROAD$) THEN WIN=1 MM=MM+1 M=MM FOR I=D TO N STEP 2 M=M+1 GOSUB READCURVE CURVES=CURVES+CURVE IF TR>0 THEN IF I<2 THEN PIC=21 ELSE IF I<7 THEN PIC=22 ELSE IF I<11 THEN PIC=23 ELSE PIC=24 END IF ELSE PIC=1 END IF C=79+CURVES-XA(I)*CENTRIFUGAL SPRITE J,C-XA(I),Y(I)-TR,PIC SPRITE J+1,C+XA(I),Y(I)-TR,PIC SPRITE J+2,C,Y(I),1 J=J+3 IF OCARX<>0 THEN SPRITE.A CJ,(3,,,,0) IF I>24 THEN SPRITE CJ,C+XA(I)*OCARX,Y(I)-4,7 IF I<24 AND I>18 THEN SPRITE CJ,C+XA(I)*OCARX,Y(I)-4+D,6 IF I<18 AND I>12 THEN SPRITE CJ,C+XA(I)*OCARX,Y(I)-4+D,5 IF I<=12 AND I>7 THEN SPRITE CJ,C+XA(I)*OCARX,Y(I)-4+D,4 IF I<=7 THEN SPRITE.A CJ,(,,,,1) SPRITE CJ,C+XA(I)*OCARX,Y(I)-10+D,2 END IF CJ=CJ+1 END IF NEXT I SPRITE OFF CJ TO 63 'LANDSCAPE BGX=BGX+CURVES/10 SCROLL 1,BGX,0 RETURN DRAWCAR: Y1=113-D X=64 SPRITE.A 0,(1+CH*5,,,,1) SPRITE 0,X,Y1,10+CH*2 SPRITE.A 1,(1+CH*5,1,,,1) SPRITE 1,X+16,Y1,10+CH*2 RETURN PICKCAR: PRINT"TEST DRIVE" PRINT"A:BRAKES" PRINT"B:ACCEL." PRINT"CHOOSE CAR" CH=0 Y1=70 X=20 SPRITE.A 0,(1,,,,1) SPRITE 0,X,Y1,10 SPRITE.A 1,(1,1,,,1) SPRITE 1,X+16,Y1,10 X=90 SPRITE.A 2,(6,,,,1) SPRITE 2,X,Y1,12 SPRITE.A 3,(6,1,,,1) SPRITE 3,X+16,Y1,12 REPEAT IF LEFT(0) THEN CH=0 IF RIGHT(0) THEN CH=1 SPRITE 4,CH*70+30,Y1-10,9 WAIT 8 UNTIL BUTTON(0) LOCATE 0,3 PRINT " " GOSUB DRAWCAR IF CH=0 THEN MAXSPEED=160 BRAKE=1 HANDLE=0.02 ACC=0.7 END IF RETURN DRAWBG: BG 1 BG COPY 0,0,32,5 TO 0,40 ATTR(5,) BG FILL 0,11 TO 32,15 CHAR 9 ATTR(0,) RETURN 'BG ELEMENT '0902 SKY '2204 CLOUD (PIC=22, COLOR=4) '2503 RED BUILDING '2403 PURPLE TOWER '2002 2102 DOUBLE MT '2802 2902 LOWER MT '2602 260A MT '2602 2A0A 2A0A 2702 BIG MT BASE #1:MAIN PALETTES 053F081000383400002F0904002F2012 002F3F150014201500301500003F0810 #2:MAIN CHARACTERS 00000000000000000000000000000000 18180000000000000000000000000000 00000000070810100000000000070F0F 00000000C02010100000000000C0E0E0 003C42FF81FFC30000003C007EC3C300 000018247E42240000000018003C2400 0000001C3E22220000000000001C2200 00000000182424000000000000182400 003C7E7E7E7E3C003C4281818181423C FFFFFFFFFFFFFFFF0000000000000000 0000000000003E73000000000000000C 3F7F40C0C0FFFF8000000000003F007F 00000105077BABAB00000104067FFFFF 80FFC7FFDEFBFFFF007FC080E18480FF 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 7F808007DDDFC000007F7F3FC5C7C000 FC0202C076F6060000FCFCF846C60600 00000000000000000000000000000000 40C080800000003C3E1F7D6FBFFF7E3C 0000000000181818003C7E6E3C181818 0000000000001818000000183C3C1818 00000000000000100000000000103810 00000000000000000000000000000000 60F0FEFA7B7B78781F0F017978787878 FF1F15151FFF000000FFFFFFFF000000 AAAAAAEBAAFF7E00FFFFFFFFFFFF7E00 FCFFFFBFFFE00000FFFFFFFFFFFF0000 00000000000000000000000000000000 00000000000000000000000000000000 FFFFFCF8F0E0C080000003070F1F3F7F FFFFFF7F3F1F0F0700000098FCFEFFFF FFC38181C3FFFFFF003C7E7E7E3C0000 FFFFFFFFFFFFFFFF0000003649000000 FFFFFFFFFFFFFFFF00183C383C181818 EFE7E7E7E7E7C3C31018181818183C3C FEFCF8F0E0C080000103070F1F3F7FFF 7F3F1F0F0703010080C0E0F0F8FCFEFF FFFFFFFFF8F1830F00000001071F7FFF FFFFFFFFFFFFFFFF00000080E0F8FEFF 0000000000000000FFFFFFFFFFFFFFFF #3:MAIN BG 00002010090222040902090209020902 22040902090209020902220409020902 09020902090209020902090209020902 09022204090209020902090209020902 09020902090209020902220409020902 09020902090209020902090209020902 09020902090222040902090209020902 09020902090209020902230409022602 260A0902250309020902090209022403 09022002210209020902090209020902 09022802290209022002210209020902 24030902090209020902090226022A0A 2A0A2702 #4:SFX 40404040404040407805027F19FD0000