REM 4 GAMES AT THE SAME TIME REM REM PONG UP/DOWN +1/-1 REM BRICKOUT LEFT/RIGHT +1 PER BRICK -1 PER MISSED BALL REM FROGGER (A) +1 PER SAFE JUMP, -1 PER HIT REM PUTPUT (B) 5PNTS-STOKES REM TIMED... TOTAL SCORE=S1*S2*S3*S4 GAMEPAD 1 DIM ISCORE(3) RANDOMIZE TIMER REM WAS8BIT PADSPEED=4 BG 0 PAL 2 TEXT 10,7,"9" BG 1 BG COPY 0,0,20,16 TO 0,0 I=0 PAL 1 BG 0 REM PONG PAD1=0 PAD2=0 SPRITE 0,40,0,1 SPRITE 1,0,PAD1,2 SPRITE 2,72,PAD2,2 GOSUB RESET_PONG REM BRICK PAD=120 SPRITE 3,120,30,1 SPRITE 4,PAD,52,3 SPRITE 5,,,20 SPRITE 5 PAL 2 SPRITE 6,,,0 SPRITE 6 PAL 2 GOSUB RESET_BRICK REM FROG GOSUB RESET_FROG REM PUTT GOSUB RESET_PUTT SPRITE 7,,,1 SPRITE 8,,,9 DO REM GOTO SKIP '''''' PONG IF PONGDELAY>0 THEN DEC PONGDELAY ELSE WAIT0=(WAIT0+1) MOD 4 IF WAIT0=0 THEN REM BALL XPONG=XPONG+DPONG*0.5 YPONG=YPONG+MPONG IF YPONG<=0 THEN MPONG=ABS(MPONG) PLAY 0,46,1 SOUND 0 ELSE IF YPONG>=54 THEN MPONG=-ABS(MPONG) PLAY 0,44,1 SOUND 0 END IF IF XPONG<=0 THEN PLAY 0,30,3 SOUND 0 IF ISCORE(0)>0 THEN DEC ISCORE(0) GOSUB RESET_PONG ELSE IF XPONG>=73 THEN PLAY 0,60,1 SOUND 0 IF ISCORE(0)<99 THEN INC ISCORE(0) GOSUB RESET_PONG END IF REM COMP SPRITE 0,XPONG,YPONG, IF SPRITE HIT(0) THEN IF XPONG>40 THEN DPONG=-1 ELSE DPONG=1 XPONG=XPONG+DPONG PLAY 0,45,1 SOUND 0 END IF IF RND(3)>0 THEN IF PAD2YPONG THEN DEC PAD2 SPRITE 2,,PAD2, END IF REM PLAYER IF UP(0) OR DOWN(0) THEN FOR DD=1 TO PADSPEED IF DOWN(0) AND PAD1<50 THEN INC PAD1 ELSE IF UP(0) AND PAD1>0 THEN DEC PAD1 SPRITE 1,,PAD1, NEXT DD END IF END IF END IF '''''' BRICK IF BRICKDELAY>0 THEN DEC BRICKDELAY ELSE WAIT1=(WAIT1+1) MOD 5 IF WAIT1=0 THEN REM BALL XBRICK=XBRICK+DBRICK*0.5 YBRICK=YBRICK+MBRICK CX=XBRICK+3 IF MBRICK<0 THEN CY=YBRICK ELSE CY=YBRICK+7 REM CHECK WALL... BG 1 C=CELL.C(CX\8,CY\8) BG 0 SPRITE 5,CX,CY, IF C>=16 AND C<=19 THEN SPRITE 6,(CX\8)*8,(CY\8)*8,C IF SPRITE HIT(5,6) THEN PLAY 1,47,1 SOUND 1 INC C IF C=20 THEN C=0 BG 1 CELL CX\8,CY\8,C BG 0 MBRICK=-MBRICK INC ISCORE(2) GOSUB SHOW_SCORES END IF SPRITE 6,,,0 END IF IF YBRICK<=0 THEN MBRICK=ABS(MBRICK) PLAY 1,50,1 SOUND 1 ELSE IF YBRICK>=54 THEN PLAY 1,30,3 SOUND 1 IF ISCORE(2)>0 THEN DEC ISCORE(2) GOSUB RESET_BRICK END IF IF XBRICK<=84 THEN DBRICK=1 PLAY 1,46,1 SOUND 1 ELSE IF XBRICK>=152 THEN DBRICK=-1 PLAY 1,44,1 SOUND 1 END IF REM COMP SPRITE 3,XBRICK,YBRICK, IF SPRITE HIT(3,4) THEN MBRICK=-ABS(MBRICK) DEC YBRICK PLAY 1,45,1 SOUND 1 END IF REM PLAYER IF LEFT(0) OR RIGHT(0) THEN FOR DD=1 TO PADSPEED IF RIGHT(0) AND PAD<170 THEN INC PAD ELSE IF LEFT(0) AND PAD>85 THEN DEC PAD SPRITE 4,PAD,, NEXT DD END IF END IF END IF '''''' FROG IF FROGDELAY>0 THEN DEC FROGDELAY ELSE WAIT2=(WAIT2+1) MOD 6 IF WAIT2=0 THEN REM CARS PAL 0 BG 0 IF RND(30)=0 THEN CELL 9,9,7 IF RND(25)=0 THEN CELL 9,10,7 IF RND(30)=0 THEN CELL 9,11,7 IF RND(25)=0 THEN CELL 0,13,8 IF RND(30)=0 THEN CELL 0,14,8 FOR Y=9 TO 11 IF RND(3) THEN FOR X=0 TO 9 C0=CELL.C(X-1,Y) C1=CELL.C(X,Y) IF C0=6 THEN FHIT=1 ELSE FHIT=0 IF C1=7 THEN CELL X,Y,0 CELL X-1,Y,7 ELSE FHIT=0 END IF IF FHIT=1 THEN PLAY 2,40,5 SOUND 2 IF ISCORE(1)>0 THEN DEC ISCORE(1) GOSUB RESET_FROG END IF NEXT X END IF NEXT Y FOR Y=13 TO 14 IF RND(2) THEN FOR X=9 TO 0 STEP -1 C0=CELL.C(X+1,Y) C1=CELL.C(X,Y) IF C0=6 THEN FHIT=1 ELSE FHIT=0 IF C1=8 THEN CELL X,Y,0 IF X+1<10 THEN CELL X+1,Y,8 ELSE FHIT=0 END IF IF FHIT=1 THEN PLAY 2,40,5 SOUND 2 IF ISCORE(1)>0 THEN DEC ISCORE(1) GOSUB RESET_FROG END IF NEXT X END IF NEXT Y REM FROG IF JFROG>0 THEN DEC JFROG IF BUTTON(0,0) AND YFROG>8 AND JFROG=0 THEN BG 0 CELL XFROG,YFROG,0 DEC YFROG IF CELL.C(XFROG,YFROG)>0 THEN PLAY 2,40,5 SOUND 2 IF ISCORE(1)>0 THEN DEC ISCORE(1) GOSUB RESET_FROG END IF PLAY 2,50,1 SOUND 2 CELL XFROG,YFROG,6 JFROG=5 IF YFROG=8 THEN PLAY 2,60,1 SOUND 2 IF ISCORE(1)<99 THEN INC ISCORE(1) GOSUB RESET_FROG END IF END IF END IF END IF SKIP: '''''' PUTT IF PUTTDELAY>0 THEN DEC PUTTDELAY ELSE WAIT3=(WAIT3+1) MOD 3 IF WAIT3=0 THEN IF IPUTT=0 THEN R=R+DR/10 IF R>20 THEN DR=-1 IF R<12 THEN DR=1 A=A+DA PX=SPRITE.X(7)+R*COS(A) PY=SPRITE.Y(7)+R*SIN(A) SPRITE 8,PX,PY, END IF IF BUTTON(0,1) AND IPUTT=0 THEN IPUTT=1 RR=R*0.5 DX=(PX-XPUT)/RR DY=(PY-YPUT)/RR DPUT=R ELSE IF IPUTT=1 THEN XPUT=XPUT+DX YPUT=YPUT+DY DEC DPUT IF DPUT<=0 THEN IPUTT=0 SPRITE 7,XPUT,YPUT, END IF END IF END IF WAIT VBL LOOP RESET_PONG: GOSUB SHOW_SCORES XPONG=40 YPONG=0 DPONG=RND(1)*2-1 MPONG=1 SPRITE 0,XPONG,YPONG, PLAY 0,90,1 SOUND 0 PONGDELAY=100 MPUT=3 RETURN RESET_BRICK: GOSUB SHOW_SCORES XBRICK=120 YBRICK=30 DBRICK=RND(1)*2-1 MBRICK=1 SPRITE 3,120,30, PLAY 1,89,1 SOUND 1 BRICKDELAY=100 RETURN RESET_FROG: BG 0 PAL 0 JFROG=5 XFROG=RND(9) YFROG=15 FOR FY=8 TO 15 FOR FX=0 TO 9 CELL FX,FY,0 NEXT FX NEXT FY GOSUB SHOW_SCORES FROGDELAY=100 PAL 0 CELL XFROG,15,6 IF RND(10)=0 THEN CELL 9,9,7 IF RND(2)=0 THEN CELL 9,9,7 IF RND(2)=0 THEN CELL 9,10,7 IF RND(1)=0 THEN CELL 9,11,7 IF RND(2)=0 THEN CELL 0,13,8 IF RND(1)=0 THEN CELL 0,14,8 RETURN RESET_PUTT: IF ISCORE(3)<94 THEN ISCORE(3)=ISCORE(3)+5 GOSUB SHOW_SCORES PAL 0 FOR I=1 TO 25 CELL RND(8)+11,RND(6)+9,RND(3)+25 NEXT I CELL RND(8)+11,RND(6)+9,11 XPUT=(RND(8)+11)*8 YPUT=(RND(6)+9)*8 SPRITE 7,XPUT,YPUT, A=0 DA=1/10 DR=1 R=12+RND(8) PUTTDELAY=10 IPUTT=0 RETURN SHOW_SCORES: IS=0 PAL 1 FOR IX=3 TO 15 STEP 12 FOR IY=0 TO 8 STEP 8 NUMBER IX,IY,ISCORE(IS),2 INC IS NEXT IY NEXT IX RETURN #1:MAIN PALETTES 003F0C30003F3F000000003F00303C00 003F2A15003F2A15003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 00183C7E7E3C18000000000000000000 18181818181818180000000000000000 000000FFFF0000000000000000000000 AA000000000000550000000000000000 00000000000000000101000000008080 000000000000000000005A3C183C2400 0036FFFFFFFF36000036FFBFBFFF3600 006CFFFFFFFF6C00006CFFFDFDFF6C00 2070F870200000002020F82020000000 0000000000000000FFFFFFFFFFFFFFFF 3C4281818181423CC3BD7E7E7E7EBDC3 00000000000000000000000000000000 7EFFFFFFFFFFFF7E0000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 007E007E007E007E0000000000000000 007E007E007E00000000000000000000 007E007E000000000000000000000000 007E0000000000000000000000000000 C0000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000081422000000FFFFFFFFFFFFFFFF 0008102010080000FFFFFFFFFFFFFFFF 0000004428100000FFFFFFFFFFFFFFFF 0000100804081000FFFFFFFFFFFFFFFF #3:MAIN BG 00001410000000000000000000000000 00000000000000000200000000000000 00000000000000000000000000000000 00000000000000000000000000000000 02001000100010001000100010001000 10001000000000000000000000000000 00000000000000000200100010001000 10001000100010001000100000000000 00000000000000000000000000000000 02001200120012001200130012001200 12001200000000000000000000000000 00000000000000000200000000000000 00000000000000000000000000000000 00000000000000000000000000000000 02000000000000000000000000000000 00000000000000000000000000000000 00000000000000000200000000000000 00000000000000000000000003000300 03000300030003000300030003000300 0D000300030003000300030003000300 03000300050005000500050005000500 050005000500050002000A000A000A00 0A000A000A000A000A000A0004000400 04000400040004000400040004000400 02000A000A000A000A000A000A000A00 0A000A00040004000400040004000400 040004000400040002000A000A000A00 0A000A000A000A000A000A0004000400 04000400040004000400040004000400 02000A000A000A000A000A000A000A00 0A000A00050005000500050005000500 050005000500050002000A000A000A00 0A000A000A000A000A000A0004000400 04000400040004000400040004000400 02000A000A000A000A000A000A000A00 0A000A00040004000400040004000400 040004000400040002000A000A000A00 0A000A000A000A000A000A0005000500 05000500050005000500050005000500 02000A000A000A000A000A000A000A00 0A000A00 #15:MAIN SOUND 2800303A000000000800F06600000000 1800F16600FF00002800303019FE0000 38002020000000003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000