'-------------- ' INITIALIZE '-------------- REM 16,384^12 COMBINATIONS DIM GLOBAL CCELL(12),PIECE(12,8),XPIECE(8),YPIECE(8) FOR I=1 TO 12 READ CCELL(I) NEXT I REM WAS8BIT DATA 64,68,72,76,128,132,136,140,192,196,200,204 FOR I=1 TO 8 READ XPIECE(I),YPIECE(I) NEXT I DATA 1,0,2,0, 3,1,3,2, 2,3,1,3, 0,2,0,1 TOUCHSCREEN COPY $8000,$1000 TO $A000 RANDOMIZE TIMER '-------------- NEW_GAME: '-------------- CLS SPRITE OFF COPY $A000,$1000 TO $8000 ISPIDER=0 ISPIN=0 IMIX=0 BG COPY 0,0,20,16 TO 0,0 DO IF TAP THEN XTAP=TOUCH.X\16 YTAP=TOUCH.Y\16 TAPPIT=XTAP*10+YTAP REM 5=PLAY REM 7=SPIDER REM 65=MIX REM 67=SPIN IF TAPPIT=5 THEN CALL DOPOP(XTAP,YTAP,1) WAIT 60 BG 1 BG FILL 0,0 TO 31,31 CHAR 3 BG 0 BG FILL 0,0 TO 31,31 CHAR 3 GOTO BUILD_PIECES END IF IF TAPPIT=7 THEN ADD ISPIDER,1,0 TO 1 CALL DOPOP(XTAP,YTAP,ISPIDER) END IF IF TAPPIT=65 THEN ADD IMIX,1,0 TO 1 CALL DOPOP(XTAP,YTAP,IMIX) END IF IF TAPPIT=67 THEN ADD ISPIN,1,0 TO 1 CALL DOPOP(XTAP,YTAP,ISPIN) END IF END IF WAIT VBL LOOP '-------------- BUILD_PIECES: '-------------- FOR ISPR=1 TO 12 SPRITE ISPR,,,CCELL(ISPR) SPRITE ISPR SIZE 3 FOR IY=0 TO 3 FOR IX=0 TO 3 COPY $8000+(12+IX+IY*16)*16,16 TO $8000+(CCELL(ISPR)+IX+IY*16)*16 NEXT IX NEXT IY NEXT ISPR ' SPRITE 0,,,1 ISPR=1 FOR IY=0 TO 2 FOR IX=0 TO 3 SPRITE ISPR,40*IX,40*IY+8,CCELL(ISPR) SPRITE ISPR PAL RND(7) INC ISPR NEXT IX NEXT IY ' FOR I=1 TO 9 STEP 4 CALL MIX(I,3) CALL MIX(I+3,1) NEXT I FOR I=1 TO 4 CALL MIX(I,0) CALL MIX(I+8,2) NEXT I FOR I=1 TO 3 CALL VMATCH(I) CALL VMATCH(I+4) CALL VMATCH(I+8) NEXT I ' FOR I=1 TO 4 CALL HMATCH(I) CALL HMATCH(I+4) NEXT I ' IF ISPIN=1 THEN PLAY 0,36,90 SOUND 0 PLAY 1,40,90 SOUND 1 WAIT 90 FOR I=1 TO 12 IISTOP=2+RND(7) FOR II=1 TO IISTOP CALL SPIN(I) WAIT 2 NEXT II NEXT I END IF ' IF IMIX=1 THEN PLAY 0,50,1 SOUND 5 WAIT 90 FOR IM=1 TO 100 S1=RND(11)+1 S2=RND(11)+1 XTEMP=SPRITE.X(S1) YTEMP=SPRITE.Y(S1) SPRITE S1,SPRITE.X(S2),SPRITE.Y(S2), SPRITE S2,XTEMP,YTEMP, PLAY 0,10,1 SOUND 4 WAIT VBL NEXT IM END IF '-------------- ' PLAY_GAME '-------------- TTOUCH=0 ITOUCH=0 IRESET=0 CRESET=0 XS1=0 YS1=0 XS2=0 YS2=0 XD1=RND-RND YD1=RND-RND XD2=RND-RND YD2=RND-RND IGHOST=0 DO IF ISPIDER=1 THEN IF IGHOST=0 THEN IF RND(333)=0 THEN IGHOST=RND(11)+1 SPRITE IGHOST,,,12 IF SPRITE HIT(IGHOST) THEN SPRITE IGHOST,,,CCELL(IGHOST) IGHOST=0 ELSE PLAY 2,45,1 SOUND 6 END IF END IF ELSE IF IGHOST>0 THEN IF RND(666)=0 THEN PLAY 2,55,1 SOUND 7 SPRITE IGHOST,,,CCELL(IGHOST) IGHOST=0 END IF END IF END IF ' IF ITOUCH=0 THEN IF TOUCH THEN SPRITE 0,TOUCH.X,TOUCH.Y, IF SPRITE HIT(0) THEN TTOUCH=1 OX=SPRITE.X(HIT) OY=SPRITE.Y(HIT) DX=OX-TOUCH.X DY=OY-TOUCH.Y ITOUCH=HIT ELSE INC IRESET IF IRESET MOD 50 = 0 THEN PLAY 2,50,1 SOUND 2 INC CRESET IF CRESET=1 THEN COPY $8000+51*16,16 TO $8000+3*16 IF CRESET=2 THEN COPY $8000+50*16,16 TO $8000+3*16 IF CRESET=3 THEN COPY $8000+49*16,16 TO $8000+3*16 IF CRESET=4 THEN COPY $8000+48*16,16 TO $8000+3*16 IF CRESET=5 THEN COPY $8000,16 TO $8000+3*16 GOTO NEW_GAME END IF END IF END IF SPRITE OFF 0 ELSE IF TTOUCH>0 THEN IF TTOUCH<10 THEN IF ISPIN=1 THEN CALL SPIN(HIT) END IF TTOUCH=0 END IF IF IRESET>0 THEN IRESET=0 CRESET=0 COPY $8000,16 TO $8000+3*16 END IF END IF ELSE IF TOUCH THEN SPRITE HIT,((TOUCH.X+DX)\8)*8,((TOUCH.Y+DY)\8)*8, PLAY 3,30,1 SOUND 3 INC TTOUCH ELSE IF SPRITE HIT (ITOUCH) THEN SPRITE ITOUCH,OX,OY, ELSE END IF ITOUCH=0 END IF END IF IF CRESET=0 THEN XS1=XS1+XD1 YS1=YS1+YD1 XS2=XS2+XD2 YS2=YS2+YD2 SCROLL 1,XS1,YS1 SCROLL 0,XS2,YS2 END IF WAIT VBL LOOP '-------------- ' SUBROUTINES '-------------- SUB DOPOP(X,Y,I) IF I=0 THEN C=18 ELSE C=16 FOR IY=0 TO 1 FOR IX=0 TO 1 CELL X*2+IX,Y*2+IY,C+IX+IY*16 NEXT IX NEXT IY PLAY 2,50+10*I,1 SOUND 2 END SUB ' SUB SPIN(IKEY) PLAY 0,46,2 SOUND 0 PLAY 1,50,2 SOUND 1 FOR II=0 TO 1 FOR I=1 TO 8 PIECE(IKEY,I-1)=PIECE(IKEY,I) NEXT I PIECE(IKEY,8)=PIECE(IKEY,0) NEXT II FOR I=1 TO 8 P=PIECE(IKEY,I) IF P>=10 THEN T=1 ELSE T=0 H=P-10*T CALL POP(IKEY,I,H,T) NEXT I END SUB ' SUB MIX(IKEY,ISIDE) S=ISIDE*2+1 CALL POP(IKEY,S,RND(3),RND(1)) CALL POP(IKEY,S+1,RND(3),RND(1)) END SUB ' SUB VMATCH(IKEY) H1=RND(3) H2=RND(3) T1=RND(1) T2=RND(1) CALL POP(IKEY,3,H1,T1) CALL POP(IKEY,4,H2,T2) ADD T1,1,0 TO 1 ADD T2,1,0 TO 1 CALL POP(IKEY+1,8,H1,T1) CALL POP(IKEY+1,7,H2,T2) END SUB ' SUB HMATCH(IKEY) H1=RND(3) H2=RND(3) T1=RND(1) T2=RND(1) CALL POP(IKEY,5,H1,T1) CALL POP(IKEY,6,H2,T2) ADD T1,1,0 TO 1 ADD T2,1,0 TO 1 CALL POP(IKEY+4,2,H1,T1) CALL POP(IKEY+4,1,H2,T2) END SUB ' SUB POP(IKEY,IPOS,IHOOK,ITYPE) REM ITYPE=0: HOLE, =1: PEG REM IHOOK 0-3 REM IPOS=1-8: 1=TOP/LEFT IF ITYPE=1 THEN C=8 ELSE C=4 C=C+IHOOK ISIDE=(IPOS-1)\2 CSTART=C CSTOP=C+48 ADD C,(ISIDE)*16,CSTART TO CSTOP IX=XPIECE(IPOS) IY=YPIECE(IPOS) COPY $8000+C*16,16 TO $8000+(CCELL(IKEY)+IX+IY*16)*16 PIECE(IKEY,IPOS)=ITYPE*10+IHOOK END SUB '-------------- ' DATA DISK '-------------- #1:MAIN PALETTES 003B261500302020003C2828000C0800 003F2A15000F0A150023121500382415 #2:MAIN CHARACTERS 00000010000000000000001000000000 FFFFFFFFFFFFFFFF0000000000000000 18245ABDBD5A2418183C66C3C3663C18 00000810000000000000081000000000 C3C3818181C3FFFF24244242423C0000 008181C3E7FFFFFF8142422418000000 C3C3C3C3C3E7FFFF2424242424180000 8181818181DBFFFF5A5A5A5A5A240000 0000003C3C3C18180000000000000000 00000000183C3C7E0000000000000000 00000018181818180000000000000000 00000024242424240000000000000000 0000000000060600000000000F09090F FFFFFFFFFFFFFFFF0000000000000000 FFFFFFFFFFFFFFFF0000000000000000 000000000060600000000000F09090F0 00070813264C59530000070F1F3F3E3C 00E010C864329ACA0000E0F0F8FC7C3C 00000003070F1F1F00070F1F3F7F7F7F 000000C0E0F0F8F800E0F0F8FCFEFEFE FFE3C0C0C0C0E3FF001C232020231C00 FEF8F0E0E0F0F8FE0106081010080601 FFFFE0C0C0E0FFFF00001F20201F0000 FFE0C0E0E0C0E0FF001F201F1F201F00 000038F8F83800000000000000000000 0080E0F0F0E080000000000000000000 000000F8F80000000000000000000000 0000F80000F800000000000000000000 FFFFFFFFFFFFFFFF0000000000000000 F8E2C197861C5830071F3F6F76FCF8F0 1F4783E961381A0CE0F8FCF66E3F1F0F FFFFFFFFFFFFFFFF0000000000000000 53594C26130807003C3E3F1F0F070000 CA9A3264C810E0003C7CFCF8F0E00000 1F1F0F07030000007F7F7F3F1F0F0700 F8F8F0E0C0000000FEFEFEFCF8F0E000 FFFFC3818181C3C300003C4242422424 FFFFFFE7C38181000000001824424281 FFFFE7C3C3C3C3C30000182424242424 FFFFDB81818181810000245A5A5A5A5A 18183C3C3C0000000000000000000000 7E3C3C18000000000000000000000000 18181818180000000000000000000000 24242424240000000000000000000000 FFFFFFFFFFFFFFFF0000000000000000 30581C8697C1E2F8F0F8FC766F3F1F07 0C1A3075E183471F0F1F377AFEFCF8E0 FFFFFFFFFFFFFFFF0000000000000000 00102828281000000000000000000000 00301010103800000000000000000000 00300810203800000000000000000000 00300810083000000000000000000000 FFC703030303C7FF0038C40404C43800 7F1F0F07070F1F7F8060100808106080 FFFF07030307FFFF0000F80404F80000 FF070307070307FF00F804F8F804F800 00001C1F1F1C00000000000000000000 0001070F0F0701000000000000000000 0000001F1F0000000000000000000000 00001F00001F00000000000000000000 00060600000000000F09090F00000000 FFFFFFFFFFFFFFFF0000000000000000 FFFFFFFFFFFFFFFF0000000000000000 0060600000000000F09090F000000000 00000000000000000000000000000000 00181818180018000000000000000000 006C6C24000000000000000000000000 00247E24247E24000000000000000000 00083E380E3E08000000000000000000 00626408102646000000000000000000 001C34386E643A000000000000000000 00181830000000000000000000000000 000C183030180C000000000000000000 0030180C0C1830000000000000000000 000024187E1824000000000000000000 000018187E1818000000000000000000 00000000181830000000000000000000 000000007E0000000000000000000000 00000000001818000000000000000000 00060C18306040000000000000000000 003C666E76663C000000000000000000 0018381818187E000000000000000000 003C660C18307E000000000000000000 003C660C06663C000000000000000000 0066667E060606000000000000000000 007E607C06067C000000000000000000 001C307C66663C000000000000000000 007E060C183030000000000000000000 003C663C66663C000000000000000000 003C663E06663C000000000000000000 00000018001800000000000000000000 00000018001830000000000000000000 00000C1830180C000000000000000000 0000007E007E00000000000000000000 000030180C1830000000000000000000 003C660C180018000000000000000000 003C666E6E603C000000000000000000 00183C667E6666000000000000000000 007C667C66667C000000000000000000 003C666060663C000000000000000000 00786C66666C78000000000000000000 007E607860607E000000000000000000 007E6078606060000000000000000000 003C606E66663C000000000000000000 0066667E666666000000000000000000 003C181818183C000000000000000000 001E060606663C000000000000000000 00666C78786C66000000000000000000 0060606060607E000000000000000000 0042667E7E6666000000000000000000 0066767E6E6666000000000000000000 003C666666663C000000000000000000 007C667C606060000000000000000000 003C66666A6C3E000000000000000000 007C667C786C66000000000000000000 003E603C06067C000000000000000000 007E1818181818000000000000000000 0066666666663C000000000000000000 00666666663C18000000000000000000 0066667E7E6642000000000000000000 00663C183C6666000000000000000000 0066663C181818000000000000000000 007E0C1830607E000000000000000000 003C303030303C000000000000000000 006030180C0602000000000000000000 003C0C0C0C0C3C000000000000000000 00183C66000000000000000000000000 0000000000007E000000000000000000 #3:MAIN BG 00001410000002000200020002000200 02000200020002000200020002000200 02000200020002000200000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000200000000000000 00000000000000000000000000000200 00000000000000000200000000000200 00000200000000000000000000000000 00000000000000000200000000000200 00000000000002000000000000000000 02000000000000000200000000000000 00000200020000000000000000000200 00000000000002000000020000000200 00000200000000000000020002000000 00000000000002000000020000000200 00000200000002000000020000000000 02000000000002000000000000000000 02000000000000000200000000000200 00000200000002000000000000000000 02000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000200 02000200020002000200020002000200 02000200020002000200020002000200 02000000120013000000000000000000 00000000000000000000000012001300 00000000000000000000000022002300 000070006C0061007900000000000000 000000002200230000006D0069007800 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000120013000000670068006F00 73007400000000000000000012001300 00007300700069006E00000022002300 00000000000000000000000000000000 00000000220023000000000000000000 00000000 #15:MAIN SOUND 0800316600DC00000800316604DC0000 08001000000000002800FF1101FE0000 3800202000000000380050AA00000000 210000FF00B3E000210000BB00BEE000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000