BG 1 BG COPY 0,0,20,16 TO 0,0 DIM P(16),DP(16),S(16),N(16) FOR I=0 TO 16 READ N(I) NEXT I DATA 0,1,3,5,6,8,10,12,13,0,0,1,5,8,12,15,18 FOR I=0 TO 16 READ A SPRITE.A I,(3,,,,0) NEXT I DATA 0,0,0,0,1,1,1,2,2,3,3,5,5,5,6,6,6 ITEMPO=2 IWAIT=30 GOSUB ADJTEMPO DIM SWAVE(3),SPULSE(3) DIM EATTACK(3),EDECAY(3),ERELEASE(3) DIM LRATE(3),LPITCH(3),LVOLUME(3),LWIDTH(3) DIM AWAVE(3),AREVERT(3),AMODE(3),ATRIGGER(3) RANDOMIZE TIMER REDO: SCALE1=INT(RND*2)+4 SCALE2=INT(RND*2)+4 FOR I=0 TO 1 SWAVE(I)=INT(RND*4) SPULSE(I)=INT(RND*16) EATTACK(I)=INT(RND*4) EDECAY(I)=15 ERELEASE(I)=INT(RND*16) LRATE(I)=INT(RND*16) LPITCH(I)=INT(RND*10)+6 LVOLUME(I)=INT(RND*1)+15 LWIDTH(I)=INT(RND*10)+6 AWAVE(I)=INT(RND*4) AREVERT(I)=INT(RND*2) AMODE(I)=INT(RND*2) ATRIGGER(I)=INT(RND*2) NEXT I WAIT 60 FOR II=0 TO 3 IF II<=1 THEN I=0 ELSE I=1 SOUND II,SWAVE(I),SPULSE(I), VOLUME II,15,3 ENVELOPE II,EATTACK(I),EDECAY(I),15,ERELEASE(I) LFO II,LRATE(I),LPITCH(I),15,LWIDTH(I) LFO.A II,(AWAVE(I),AREVERT(I),AMODE(I),ATRIGGER(I)) NEXT II BG 0 TEXT 2,0,"NEW INSTRUMENTS" WAIT 60 CLS 0 ANTITOUCH=1 DO IF TOUCH THEN IF ANTITOUCH=1 THEN ANTITOUCH=0 WAIT VBL BG 1 C=(TOUCH.X\16)+(TOUCH.Y\16)*10 C2=(TOUCH.X\16)*10+(TOUCH.Y\16) IF C=70 THEN GOSUB ADJTEMPO IF C=79 THEN GOSUB REDO IF (C>=1 AND C<=8) OR (C>=71 AND C<=78) THEN CC=C IF C>8 THEN C=C-70 IF S(C)>0 THEN S(C)=0 SPRITE C,-10,-10, ELSE IF CC<10 THEN SPRITE C,C*16+4,16,32 P(C)=16 DP(C)=1 S(C)=1 ELSE SPRITE C,C*16+4,108,32 P(C)=108 DP(C)=-1 S(C)=1 END IF END IF END IF C=C2+10 IF (C>=11 AND C<=16) OR (C>=101 AND C<=106) THEN CC=C IF C>20 THEN C=C-90 IF S(C)>0 THEN S(C)=0 SPRITE C,-10,-10, ELSE IF CC<20 THEN SPRITE C,16,(C-11)*16+20,32 P(C)=16 DP(C)=1 S(C)=1 ELSE SPRITE C,108,(C-11)*16+20,32 P(C)=140 DP(C)=-1 S(C)=1 END IF END IF END IF END IF ELSE ANTITOUCH=1 END IF FOR I=1 TO 10 IF S(I)>0 THEN P(I)=P(I)+DP(I) IF P(I)>=108 THEN DP(I)=-ABS(DP(I)) S(I)=2 PLAY 0,N(I)*SCALE1,10 END IF IF P(I)<=14 THEN DP(I)=ABS(DP(I)) S(I)=2 PLAY 1,N(I)*SCALE1,10 END IF SPRITE I,,P(I),31+S(I) IF S(I)>1 THEN S(I)=S(I)+1 IF S(I)=7 THEN S(I)=1 END IF NEXT I FOR I=11 TO 16 IF S(I)>0 THEN P(I)=P(I)+DP(I) IF P(I)>=140 THEN DP(I)=-ABS(DP(I)) S(I)=2 PLAY 2,N(I)*SCALE2,10 END IF IF P(I)<=14 THEN DP(I)=ABS(DP(I)) S(I)=2 PLAY 3,N(I)*SCALE2,10 END IF SPRITE I,P(I),,31+S(I) IF S(I)>1 THEN S(I)=S(I)+1 IF S(I)=7 THEN S(I)=1 END IF NEXT I IW=(IW+1) MOD IWAIT IF IW=0 THEN WAIT VBL LOOP ADJTEMPO: ITEMPO=ITEMPO+1 IF ITEMPO>6 THEN ITEMPO=1 IWAIT=ITEMPO BG 0 TEXT 2,15,"TEMPO = 1/"+STR$(ITEMPO) WAIT 60 CLS 0 RETURN #1:MAIN PALETTES 0030383C000C0F0B00032333003F2A15 003B3621002D1906003F2A15003F2A15 #2:MAIN CHARACTERS 00000000000000000000000000000000 00000000000000000000000000000000 071F3F7F7FFFFFFF0000000000000000 E0F8FCFEFEFFFFFF0000000000000000 0000000000000000071F3F7F7FFFFFFF 0000000000000000E0F8FCFEFEFFFFFF 071F3F7F7FFFFFFF071F3F7F7FFFFFFF E0F8FCFEFEFFFFFFE0F8FCFEFEFFFFFF A150A8542A150A8561B0D86C361B0D86 50A8542A150A8542B0D86C361B0D86C3 0A152A54A850A1420D1B366CD8B061C3 850A152A54A850A1860D1B366CD8B061 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 FFFFFF7F7F3F1F070000000000000000 FFFFFFFEFEFCF8E00000000000000000 0000000000000000FFFFFF7F7F3F1F07 0000000000000000FFFFFFFEFEFCF8E0 FFFFFF7F7F3F1F07FFFFFF7F7F3F1F07 FFFFFFFEFEFCF8E0FFFFFFFEFEFCF8E0 42A150A8542A150AC361B0D86C361B0D A150A8542A150A8561B0D86C361B0D86 850A152A54A850A1860D1B366CD8B061 42850A152A54A850C3860D1B366CD8B0 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0018245A5A24180000183C66663C1800 18245ABDBD5A2418183C66C3C3663C18 245ABD7E7EBD5A243C66C38181C3663C 5ABD7EFFFF7EBD5A66C381000081C366 245ABD7E7EBD5A243C66C38181C3663C 18245ABDBD5A2418183C66C3C3663C18 0018245A5A24180000183C66663C1800 #3:MAIN BG 00001410080309030200030004000500 06000700020103010601070102020302 04020502060207020A030B0318031903 12001300140015001600170012011301 16011701120213021402150216021702 1A031B03020403040000000000000000 00000000000000000000000000010001 00000000000000000204030412041304 00000000000000000000000000000000 00000000000000000000000000000000 12041304040405040000000000000000 00000000000000000000000000000000 00000000000000000404050414041504 00000000000000000000000000000000 00000000000000000000000000000000 14041504060407040000000000000000 00000000000000000000000000000000 00000000000000000604070416041704 00000000000000000000000000000000 00000000000000000000000000000000 16041704020503050000000000000000 00000000000000000000000000000000 00000000000000000205030512051305 00000000000000000000000000000000 00000000000000000000000000000000 12051305040505050000000000000000 00000000000000000000000000000000 00000000000000000405050514051505 00000000000000000000000000000000 00000000000000000000000000000000 14051505060507050000000000000000 00000000000000000000000000000000 00000000000000000605070516051705 00000000000000000000000000000000 00000000000000000000000000000000 160517050A030B030200030004000500 06000700020103010601070102020302 0402050206020702080309031A031B03 12001300140015001600170012011301 16011701120213021402150216021702 18031903