'________________________________________________ ' ' M I D I T O O L S - S P 4 C E B A R '________________________________________________ AUTOMATIC_PLAYBACK=0 '"L" LOCAL, "E" EXTERNAL, "B" BOTH LOCATION$="L" 'ROM ENTRY FILE NUMBER (0-15) FILE_IN=4 '"P" PLAY, "C" CONVERT, "M" PLAY ONE TRACK AT A TIME, "R" READ COMMAND$="P" 'OUTPUT FILE (NX MUSIC EXTRACTED FROM MIDI) FILE_OUT=15 'NEW TO DO 'X FIX SCREEN FLICKERING IN FAST MIDI FILES, CPU ISN'T AT 100% MOST OF THE TIME ' X THAT IS PROBABLY THE PROBLEM, IT IS, THE METER DOEN'T UPDATE FAST ENOUGH '- LOAD THE MANY TRACKS INTO AN ARRAY (LIVE: NOTES AND VEL) '- DISPLAY THE ARRAY ON THE SCREEN '- ADD SOME ENVELOPE MAYBE '- READ THE SYNTH TYPE OF EACH TRACK FROM THE FILE 'MOST SIGNIFICANT BITS ARE FIRST: DON'T USE PEEKW OR PEEKL 'BUGS '- IN RUNNING STATUS FILES: KEY IS ALWAYS 2 WHILE CONVERTING: NO KEY UP COMMANDS '- MAYBE ALL KEY-UP COMMANDS ARE BLOCKED, BUT ONLY THE CONVERTER REALLY NEEDS IT '- CONVERSION VELOCITIES ARE 0 TOO OFTEN ' - DATA GOES SOMETHING LIKE THIS ' - HANDLE DT=0 BETTER ' ' 'MERGE THE MIDI FILE READER,PLAYER, AND CONVERTER IN ONE PROGRAM FOR EASY DEVELOPMENT 'AFTER ASKING WHAT FILE TO LOAD, ASK WHAT TO DO: '- READ MIDI '- PLAY MIDI '- CONVERT AND SAVE TO LOCATION (ASK LOCATION) ' 'TO DO: '- WRITE PALETTE DATA INTO THE PALETTE PART OF THE SIMULATED RAM (SEE MEMORY MAP) ' - PUT THE DATA AS DATA IN CODE, FOR LOOP TROUGH IT, DO SOMETHING LIKE: READ X, POKE(A,X) '- MORE PLAYBACK OPTIONS AFTER CONVERSION ' - JUST ADD THE TRACK COUNTER, SO THAT YOU CAN SEE IF IT LINES UP ' - ADD AN INDEX ARRAY FOR THE CONVERTOR OUTPUT ARRAY: AT WHAT TIMES DO TRACKS START ' - CHANGE SETTINGS BEFORE PLAYBACK: TRANSPOSE, START TIME ' - MAYBE DO THIS WHILE PLAYING WITH THE KEYBOARD ' - SET PLAYBACK TIME ' - HIT R TO REPLAY THE SONG ' - HIT L TO REWRITE MUSIC DATA ' - SKIP TRACKS OR GO BACK (WITH N AND P) ' - MUSIC FILE TRACK PLAYING OPTIONS: ONE AFTER ANOTHER OR AT THE SAME TIME '- MORE MIDI PLAYBACK OPTIONS ' - SKIP TRACKS OR GO BACK (WITH N AND P) '- USE MORE MIDI INFORMATION: ' - PLAYBACK SPEED ' - MIDI INSTRUMENT (LIKE DRUMS) '- PLAY TRACKS PARALLEL (MELODY, BASS, DRUMS, ALL INSTRUMENTS ALL AT ONCE) '[DONE] MAKE A FILE IMPORTER: ' - [DONE] IMPORT LOCAL OR EXTERNAL FILES, SPECIFY THE FILE NUMBER 'TEST THE ALGORITHM ON MORE MIDI FILES '- (SOME ARE POLYPHONIC, SOME ARE MORE COMPLEX, MANY TRACKS) '[DONE] A MESSAGE WHEN THE FILE IS TOO BIG 'ADD A SCANNING OPTION FOR WHEN THE PROGRAM GETS AN INVALID STATUS BYTE (AND GETS LOST) ' - FIRST ASSUME IT'S MIDI: SKIP 2 BYTES NOPE, IT CAN BE ONE BYTE, JUST SCAN ' - IT'LL SCAN FOR BYTES WITH BIT 7 (MSB) TURNED ON, THIS EITHER MEANS: ' - FIRST PART OF A LONG TIME VALUE ' - OR IT MEANS: NEW STATUS BYTE FOUND, ASSUME THIS, ERROR?: ASSUME THE OTHER OPTION 'MAKE IT WORK WITH BIG FILES: ' - IDEA: MAKE A FUNCTION WHICH LOADS VALUES FROM RAM AND SWAPS OUT THE RAM IF NECCESARY ' - LOAD THE FIRST 16KB IN RAM ' - WHEN IT HAS REACHED THE END: LOAD THE SECOND 16KB ' - IT CAN BE UP TO 32KB: THE CONVERSION OUTPUT WILL BE IN ANOTHER DISK ' - USE BOTH THE INTERNAL AND THE EXTERNAL DISK TO GET 2 X 32KB FILE INPUT 'REPLACE ADDRESS VARIABLE I WITH A, I IS TOO COMMON 'MARIO FILE NOT WORKING: '- [NOPE] MAYBE IT HAS DETECTED A TOO SMALL LENGTH OF A META EVENT (LENGTH HAS VAR LEN QUANTITY) '- [NOPE] CHECK HEX EDITOR ASCII '- THE FILE MAY HAVE BEEN CORRUPTED, CHECK WITH ANOTHER MIDI PLAYER TOUCHSCREEN DIM GLOBAL TRACKD(31,2) DIM GLOBAL INDEX(31) DIM GLOBAL TA(1,16383) DIM GLOBAL PLAYING(1,3) DIM GLOBAL VIRTUAL_VOICE(3,31) 'TA: TRACK ATTRIBUTES 'WRITE MAIN PALETTES DATA 0,12,8,4,0,56,36,16,0,15,11,7,0,44,40,20,0,63,42,21,0,63,42,21,0,63,42,21,0,63,42,21 FOR I=0 TO 31 READ V POKE $FF00+I,V NEXT I GLOBAL TYPE,S,V,V0,V1,V2,V3,F,F1,I,CSIZE,TN,TRACKS,TIME,STATUS,KEY,RECENT80,PITCH,VELOCITY,FILE_PART,ADDR_END,CHANNEL_MODE,K$,O$,OPERATION,DIV,TIME_UNIT,AUTOMATIC_PLAYBACK I=$A000 TYPE=0 CSIZE=0 TN=0 DT=0 TIME=0 KEY=0 STATUS=0 RECENT80=0 TIME_UNIT=10000 FILE_PART=0 CHANNEL_MODE=0 OPERATION=-1 ROT=0 'S E T U P : U S E R I N P U T IF AUTOMATIC_PLAYBACK THEN K$=LOCATION$ F=FILE_IN O$=COMMAND$ F1=FILE_OUT ELSE PRINT "DISK:" PRINT "LOCAL(L)/EXTERNAL(E)/BOTH(B)" KEYBOARD ON REPEAT K$=INKEY$ IF K$="L" OR K$="E" OR K$="B" THEN PRINT K$ WAIT 1 UNTIL K$="L" OR K$="E" OR K$="B" PRINT "" INPUT "FILE NUMBER (1-15) ";F PRINT "" PRINT "OPERATION:" PRINT "READ(R)/PLAY(P)" PRINT "/CONVERT(C)/PLAY" PRINT "TRACKS MONO(M)" DO O$=INKEY$ IF O$="R" OR O$="P" OR O$="C" OR O$="M" THEN PRINT O$ EXIT END IF WAIT 1 LOOP IF O$="C" THEN PRINT "" INPUT "OUTPUT FILE (1-15) ";F1 END IF KEYBOARD OFF CLW END IF 'B A S I C F I L E I N F O A N D H E A D E R PAL 3 PRINT "MIDI FILE LOADED" PRINT "DISK: "; IF K$="L" THEN PRINT "LOCAL "; S=SIZE(F) COPY ROM(F),S TO $A000 ELSE IF K$="E" THEN PRINT "EXTERNAL "; FILES S=FSIZE(F) 'REMOVE THIS SOON!!!!! - I FORGOT :( 'IF S>$4000 THEN S=$4000 LOAD F,$A000,$4000 ELSE IF K$="B" THEN PRINT "EXT+LOCAL "; FILES S=FSIZE(F) LOAD F,$A000,$4000 END IF PRINT F ADDR_END=$A000+S PRINT "SIZE:",S PRINT "" PAL 0 'PRINT HEX$(S) 'PRINT HEX$(ADDR_END) 'HEADER TYPE ASC CODES 4D546864 'PRINT $6468544D=PEEKL($A000)+63 'RETURNS TRUE -> SIX BITS GET LOST 'THESE FLOAT VARIABLES CAN'T STORE 32-BIT VALUES, THEY PROBABLY HAVE A 6-BIT EXPONENT 'DO 'WAIT 60 'LOOP 'R E A D H E A D E R PRINT "FORMAT:",256*PEEK($A008)+PEEK($A009) PRINT "TRACKS:",256*PEEK($A00A)+PEEK($A00B) D=256*PEEK($A00C)+PEEK($A00D) D1=D\2^15 D2=D MOD 2^15 IF D1=0 THEN PRINT "DIVISION:",D2 PRINT "TICKS/QUARTER NOTE" DIV=D2\24 ELSE IF D1=1 THEN PRINT "DIVISION:",D2\2^8,D2 MOD 2^8 PRINT "F/S AND TICKS/F" END IF PRINT "" CALL TAP_TO_CONTINUE 'I N D E X T H E F I L E REPEAT 'V=PEEK(I) 'V1=PEEK(I+1) 'V2=PEEK(I+2) 'V3=PEEK(I+3) CALL RAM_PEEK4(I) CALL DETERMINE_TYPE WAIT 1 UNTIL I=ADDR_END INDEX(TN)=ADDR_END TRACKS=TN-1 PRINT "" 'D E T E R M I N E B L O C K T Y P E SUB DETERMINE_TYPE IF V0=77 AND V1=84 THEN IF V2=104 AND V3=100 THEN TYPE=1 PRINT "HEADER: SIZE="; ADD I,4 CALL DETERMINE_SIZE ELSE IF V2=114 AND V3=107 THEN TYPE=2 PRINT "TRACK: SIZE="; INDEX(TN)=I INC TN ADD I,4 CALL DETERMINE_SIZE END IF ELSE I=ADDR_END END IF END SUB 'D E T E R M I N E B L O C K S I Z E SUB DETERMINE_SIZE 'THESE FLOAT VARIABLES CAN'T STORE 32-BIT VALUES 'BUT THE SIZE CAN'T BE 2^32-1, IT WON'T FIT IN NX, SO IT'S FINE 'MSB FIRST, SWAP THAT 'CSIZE=2^24*PEEK(I)+2^16*PEEK(I+1)+2^8*PEEK(I+2)+PEEK(I+3) CALL RAM_PEEK4(I) CSIZE=2^24*V0+2^16*V1+2^8*V2+V3 ADD I,4 PRINT CSIZE 'SKIP_CHUNK I=I+CSIZE END SUB CALL TAP_TO_CONTINUE 'DISPLAY STORED INDEX VALUES PRINT "INDEX:" FOR I=0 TO 15 V=INDEX(I) IF V<>0 THEN PRINT HEX$(V),""; NEXT I PRINT "" PRINT "" CALL TAP_TO_CONTINUE 'T A P T O C O N T I N U E SUB TAP_TO_CONTINUE IF AUTOMATIC_PLAYBACK THEN CLW EXIT SUB END IF PAL 2 PRINT "TAP TO CONTINUE" PAL 0 WHILE NOT TAP WAIT 1 WEND FOR J=0 TO 16 PRINT "" NEXT J CLW END SUB 'R E A D M I D I IF O$="R" THEN TIME=0 FOR J=0 TO TRACKS PAL 2 PRINT "===================" PRINT "===== TRACK",J,"=====" PRINT "===================" PRINT HEX$(INDEX(J)+8) PRINT "" PAL 0 'BUG MEMORIAL: FORGOT TO OFFSET THE INDEX VALUES FOR I=INDEX(J)+8 TO INDEX(J+1)-1 'TRACE " "+HEX$(I) 'DETERMINE DELTA TIME CALL VAR_LEN_QUANTITY DT=V 'DT2=DT/TIME_UNIT PRINT "DT=",V CALL STATUS(I,J,ROT) 'TRACE HEX$(I-$A000) PVELOCITY=VELOCITY PPITCH=PITCH WAIT 1 WHILE NOT TAP WAIT 1 WEND PRINT "" NEXT I NEXT J STOP PAL 2 PRINT "" PRINT "===================" PRINT "=== END OF SONG ===" PRINT "===================" PAL 0 'P L A Y M I D I S I N G L E T R A C K ELSE IF O$="M" THEN O$="P" TIME=0 FOR J=0 TO TRACKS 'TRACE "TRACK",HEX$(I-$A000) FOR I=INDEX(J)+8 TO INDEX(J+1)-1 'TRACE "START",HEX$(I-$A000) 'TRACE " "+HEX$(I) 'DETERMINE DELTA TIME CALL VAR_LEN_QUANTITY DT=V 'DT2=DT/TIME_UNIT DT3=DT\DIV PRINT "DT=",DT IF DT3>0 THEN WAIT DT3 CLW 'TRACE "TIME ",HEX$(I-$A000) CALL STATUS(I,J,ROT) 'TRACE HEX$(I-$A000) PVELOCITY=VELOCITY PPITCH=PITCH 'TRACE "END ",HEX$(I-$A000) NEXT I NEXT J STOP PAL 2 PRINT "" PRINT "===================" PRINT "=== END OF SONG ===" PRINT "===================" PAL 0 'P L A Y M I D I M U L T I T R A C K 'MULTITRACKPLAYER: ELSE IF O$="P" THEN 'O$="P" 'BUG MEMORIAL: FORGOT TO OFFSET THE INDEX VALUES (AGAIN): FIRST 8 BYTES AREN'T MIDI 'FILL ARRAY WITH FIRST DT AND ADDR OF EACH TRACK 'FIND LOWEST VALUE OF ARRAY, LOAD ITS PARAMETERS, AND ACT AS IF THERE WAS ONE TRACK 'AFTERWARDS, WRITE THE NEW VALUES TO THE ARRAY T_ZERO=TIMER FOR J=0 TO TRACKS I=INDEX(J)+8 CALL VAR_LEN_QUANTITY 'TRACE V,J,HEX$(I-$A000) DT=V DT3=DT\DIV 'DT3=0 ADD TRACKD(J,2),DT TRACKD(J,0)=TIMER-(DT3>=0)*DT3 TRACKD(J,1)=I 'TRACE J,HEX$(I-$A000),TIMER-(DT3>0)*DT3 NEXT J 'WAIT 60000 TIME=0 'FOR J=0 TO TRACKS J=0 'DO 'FOR I=INDEX(J)+8 TO INDEX(J+1)-1 I=INDEX(J)+8 'IF TRACKD(0,0)=-1 THEN TRACE TRACKD(0,0) 'DETERMINE DELTA TIME CALL VAR_LEN_QUANTITY DT=V DT3=DT\DIV ADD TRACKD(J,2),DT TRACKD(J,0)=TIMER-(DT3>0)*DT3 TRACKD(J,1)=I PRINT "DT=",V LOCATE 0,11 PRINT "V PI VE TRACK" LOCATE 0,0 'REPEAT DO 'TRACE " "+HEX$(I) 'TRACE "START",J,HEX$(I-$A000) SOONEST=-1 'IF TRACKD(0,0)<>-1 THEN TRACE "T0",TRACKD(0,0)-TIMER MIDI_TIMER=TIMER*DIV 'FIND THE LOWEST NUMBER, I COULD USE THE "MIN" FUNCTION FOR I=0 TO TRACKS IF (SOONEST<0 OR TRACKD(I,0)0 THEN 'IF (SOONEST<0 OR TRACKD(I,2)0 THEN 'NEW TIME VALUE SOONEST=T_ZERO+TRACKD(I,2)\DIV J=I 'TRACE TRACKD(I,0),T_ZERO+TRACKD(I,2)\DIV 'OLD TIME VALUE 'SOONEST=TRACKD(I,0) 'JUST PLAY'S TRACK 1 FOR SOME REASON 'SOONEST=TRACKD(I,2) END IF 'TRACE I,J,SOONEST-TIMER,TRACKD(I,0)-TIMER NEXT I IF SOONEST=-1 THEN EXIT 'IF J=0 THEN TRACE "J=0",TIMER,I,TRACKD(0,0) 'TRACE J,SOONEST-TIMER 'WAIT 60 'TRACE J I=TRACKD(J,1) 'OLD TIME GENERATOR: EVERYTHING HAS BEEN ROUNDED BADLY BEFORE 'TI=TRACKD(J,0)-TIMER 'NEW TIME GENERATOR: IT'S SHARP AND ACCURATE TI=TRACKD(J,2)\DIV+T_ZERO-TIMER 'TRACE TRACKD(J,0)-TIMER,TRACKD(J,2)\DIV+T_ZERO-TIMER IF TI>0 THEN WAIT TI 'CLW BG FILL 0,5 TO 19,10 CHAR 192 BG TINT 0,12 TO 19,15 PAL 0 LOCATE 0,0 PRINT "TRACK:",J," " 'TRACE "LOAD ",J,HEX$(I-$A000) CALL STATUS(I,J,ROT) 'TRACE "DONE ",J,HEX$(I-$A000) 'TRACE HEX$(I-$A000) PVELOCITY=VELOCITY PPITCH=PITCH INC I 'DETERMINE DELTA TIME CALL VAR_LEN_QUANTITY DT=V DT3=DT\DIV ADD TRACKD(J,2),DT TRACKD(J,0)=TIMER-(DT3>0)*DT3 TRACKD(J,1)=I PRINT "DT=",V," " IF I>=INDEX(J+1)-1 THEN TRACKD(J,0)=-1 'IF TRACKD(0,0)=-1 THEN TRACE TRACKD(0,0) 'TRACE "SAVE ",J,HEX$(I-$A000) LOOP 'UNTIL I>=INDEX(J+1)-1 'NEXT I 'LOOP 'NEXT J STOP PAL 2 PRINT "" PRINT "===================" PRINT "=== END OF SONG ===" PRINT "===================" PAL 0 'C O N V E R T M I D I ELSE IF O$="C" THEN PRINT "PLEASE WAIT" PRINT "FINDING SMALLEST DT" FOR OPERATION=0 TO 1 TIME=0 FOR J=0 TO TRACKS FOR I=INDEX(J)+8 TO INDEX(J+1)-1 'TRACE " "+HEX$(I) 'DETERMINE DELTA TIME CALL VAR_LEN_QUANTITY DT=V DT2=DT/TIME_UNIT IF OPERATION=0 AND V>0 THEN TIME_UNIT=MIN(TIME_UNIT,V) CALL STATUS(I,J,ROT) 'TRACE HEX$(I-$A000) 'IT NEEDS TO KEEP WRITING NOTES WHILE IT'S DOING CONTROLLER THINGS IF OPERATION=1 THEN IF STATUS>$7F AND STATUS<$A0 THEN FOR A=0 TO DT2-1 IF A+TIME<16384 THEN 'TRACE PPITCH,PVELOCITY 'WAIT VBL TA(0,A+TIME)=PPITCH TA(1,A+TIME)=PVELOCITY ELSE IF CURSOR.Y>3 THEN CLW LOCATE 0,0 PAL 1 PRINT TIME PRINT "CONVERTOR" PRINT "OUT OF MEMORY" PAL 0 END IF NEXT A END IF ADD TIME,DT2 END IF PVELOCITY=VELOCITY PPITCH=PITCH NEXT I NEXT J IF OPERATION=0 THEN PRINT "SMALLEST DT=",TIME_UNIT PRINT "CONVERTING..." PAL 2 INPUT "PRECISION 1,2,4,8...";PRECISION KEYBOARD OFF PAL 0 TIME_UNIT=TIME_UNIT*PRECISION END IF NEXT OPERATION 'E N C O D E T O N X STOP PRINT "ENCODING NX MUSIC..." 'WRITE TRACK DATA IN NX FORMAT 'TRACKS (6144 BYTES) FILL $A000,$4000 COPY ROM(14),SIZE(14) TO $A000 ADDR=$A180 FOR J=0 TO 63 FOR I=0 TO 31 K=I+32*J CALL SAVEDATA(ADDR,TA(0,K),0) INC ADDR CALL SAVEDATA(ADDR,TA(1,K),0) 'CALL SAVEDATA(ADDR,TSYNTH(J),4) INC ADDR 'CALL SAVEDATA(ADDR,TA(2,K),0) 'CALL SAVEDATA(ADDR,TA(3,K),4) INC ADDR NEXT I NEXT J SAVE 15,"MUSIC",$A000,ADDR-$A000 FILL $A000,$4000 PRINT "DONE" WAIT 1 'PLAY SONG FROM ARRAY CLW LOCATE 0,0 PRINT "TIME" LOCATE 5,0 PRINT "PIT" LOCATE 9,0 PRINT "VOL" 'PLAY FOR I=0 TO TIME LOCATE 0,1 PRINT " " LOCATE 0,1 IF I>2047 THEN PAL 1 PRINT I PAL 0 LOCATE 5,1 PRINT TA(0,I) LOCATE 9,1 PRINT TA(1,I) VOLUME 0,TA(1,I), PITCH=TA(0,I)-24 IF PITCH>0 AND PITCH<97 THEN 'OCT -2 PLAY 0,PITCH PRINT " " ELSE IF PITCH<1 THEN PLAY 0,PITCH MOD 12 PAL 1 PRINT "PITCH TOO LOW" PAL 0 ELSE PLAY 0,84+PITCH MOD 12 PAL 1 PRINT "PITCH TOO HIGH" PAL 0 END IF WAIT 4 '+PRECISION NEXT I CLW PAL 2 PRINT "===================" PRINT "=== END OF SONG ===" PRINT "===================" PAL 0 END IF 'S U B P R O G R A M S 'S T A T U S I N T E R P R E T E R SUB STATUS(I,TRACKN,ROT) 'INTERPRET THE STATUS BYTE: '- 00 TO 7F: NOT A STATUS CODE -> RUNNING STATUS (CONTINUE WITH PREVIOUS STATUS) '- 80 TO EF: MIDI STATUS CODE -> NEXT IS PITCH -> NEXT IS VELOCITY ' - 9N: KEY DOWN ' - 8N: KEY UP ' N=MIDI CHANNEL NUMBER (0 TO 15) '- F0=SYSEX 1 -> NEXT IS LENGTH: AMOUNT OF BYTES FOLLOWING '- F7=SYSEX 2 -> NEXT IS LENGTH: AMOUNT OF BYTES FOLLOWING '- FF=META -> NEXT IS META-CODE -> NEXT IS LENGTH: AMOUNT OF BYTES FOLLOWING CALL RAM_PEEK(I) 'TRACE "STATS",HEX$(I-$A000) 'WAIT 30 IF V\128=1 THEN STATUS=V INC I IF O$="P" THEN PRINT " " ELSE IF O$<>"C" THEN PRINT "RUNNING STATUS" END IF 'IF V>=$80 AND V<=$89 THEN TRACE "V1" 'IF STATUS>=$80 AND STATUS<=$89 THEN TRACE "K1" IF O$<>"C" THEN PAL 3 PRINT "STATUS:",HEX$(STATUS),""; END IF 'TRACE "SLOAD",HEX$(I-$A000) 'I N T E R P R E T O R IF STATUS>$7F AND STATUS<$F0 THEN 'TRACE "S",HEX$(I-$A000) 'MIDI TRACKM=STATUS AND 16 IF O$<>"C" THEN PRINT "MIDI " IF STATUS<$A0 THEN IF STATUS<$90 THEN IF O$<>"C" THEN PRINT "KEY UP " KEY=1 RECENT80=1 DT2=INT(DT2+0.5) ELSE IF STATUS<$A0 THEN IF O$<>"C" THEN PRINT "KEY DOWN " KEY=2 DT2=INT(DT2+0.49) END IF CALL RAM_PEEK(I) IF O$<>"C" THEN PAL 0 PRINT "PITCH=",V,""; END IF 'ROUTE NOT TAKEN AT PROBLEM 'TRACE 2,HEX$(I-$A000) 'MIDI PITCH STARTS AT 0, IT HAS TO BE TRANSPOSED +1 PITCH=V+1 INC I CALL RAM_PEEK(I) IF O$<>"C" THEN PRINT "VEL=",V,"" VELOCITY=V\8 IF O$="P" THEN 'VOLUME 0,VELOCITY, IF KEY=2 THEN CALL KEYDOWN(ROT,TRACKN,TRACKM,PITCH,VELOCITY) ELSE IF KEY=1 THEN CALL KEYUP(TRACKN,TRACKM,PITCH) END IF 'TRACE 3,HEX$(I-$A000) ELSE IF O$="C" AND OPERATION=1 THEN 'TRACE HEX$(I),TIME,VELOCITY,-(KEY=1 OR KEY=2 AND RECENT80=0) IF KEY=2 AND RECENT80=1 THEN RECENT80=0 END IF IF KEY=1 OR (KEY=2 AND RECENT80=0) THEN FOR A=0 TO DT2-1 IF A+TIME<16384 THEN TA(0,A+TIME)=PPITCH TA(1,A+TIME)=PVELOCITY ELSE IF CURSOR.Y>3 THEN CLW LOCATE 0,0 PAL 1 PRINT TIME PRINT "CONVERTOR" PRINT "OUT OF MEMORY" PAL 0 END IF 'TRACE A+TIME NEXT A END IF END IF ELSE IF STATUS<$B0 THEN 'TRACE "A",HEX$(I-$A000) 'A0-AF IF O$<>"C" THEN PRINT "AFTERTOUCH" PAL 0 CALL RAM_PEEK(I) PRINT "KEY=",V,""; LOCATE 0,12+VOI PAL 2 PRINT VOI,PITCH,VELOCITY," " LOCATE 0,5 PAL 0 END IF INC I CALL RAM_PEEK(I) IF O$<>"C" THEN PRINT "PRESS=",V ELSE IF STATUS<$C0 THEN 'TRACE "B",HEX$(I-$A000) 'B0-BF CALL RAM_PEEK(I) CTRL=V IF O$<>"C" THEN PAL 0 PRINT "CONTR=",HEX$(V),""; END IF INC I CALL RAM_PEEK(I) IF O$<>"C" THEN PRINT "VAL=",V IF CTRL=$7E THEN CHANNEL_MODE=0 STOP ELSE IF CTRL=$7F THEN CHANNEL_MODE=1 STOP END IF ELSE IF STATUS<$E0 THEN 'TRACE "CD",HEX$(I-$A000) 'C0-DF IF O$<>"C" THEN PAL 0 CALL RAM_PEEK(I) PRINT "VAL=",V END IF ELSE 'TRACE "E",HEX$(I-$A000) 'V0=PEEK(I) CALL RAM_PEEK(I) V0=V INC I CALL RAM_PEEK(I) V0=V0+256*V IF O$<>"C" THEN PAL 0 PRINT "VAL=",V END IF END IF ELSE IF STATUS>$EF THEN 'TRACE "F",HEX$(I-$A000) IF STATUS=$F0 THEN 'SYSEX 1 IF O$<>"C" THEN PRINT "SYSEX 1" PAL 0 END IF CALL VAR_LEN_QUANTITY IF O$<>"C" THEN PRINT "LENGTH= ",V LENGTH=V ADD I,V-1 ELSE IF STATUS=$F7 THEN 'TRACE "F7",HEX$(I-$A000) 'SYSEX 2 IF O$<>"C" THEN PRINT "SYSEX 2" PAL 0 END IF CALL VAR_LEN_QUANTITY IF O$<>"C" THEN PRINT "LENGTH= ",V LENGTH=V ADD I,V-1 ELSE IF STATUS=$FF THEN 'TRACE "FF",HEX$(I-$A000) 'META IF O$<>"C" THEN PRINT "META " PAL 0 END IF 'V=PEEK(I) CALL RAM_PEEK(I) IF O$<>"C" THEN PRINT "META CODE=",HEX$(V) IF V=$2F THEN PAL 1 PRINT "END OF TRACK " PAL 0 END IF END IF INC I CALL VAR_LEN_QUANTITY IF O$<>"C" THEN PRINT "LENGTH= ",V LENGTH=V 'TRACE V ADD I,V-1 'TRACE "F0",HEX$(I-$A000) END IF ELSE 'TRACE "R",HEX$(I-$A000) IF O$<>"C" THEN PAL 1 PRINT "RUNNING STATUS" PAL 0 END IF END IF 'TRACE 4,HEX$(I-$A000) CALL VOICESELECT(ROT,TRACKN,PITCH,VELOCITY) END SUB 'K E Y D O W N SUB KEYDOWN2(ROT,TRACKN,TRACKM,PITCH,VELOCITY) 'REUSE VIRTUAL VOICES FOR X=0 TO 31 VAR=VIRTUAL_VOICE(1,X) IF VAR=PITCH OR VAR=0 THEN T=X EXIT END IF NEXT X 'WRITE SOUND TO VIRTUAL VOICE VIRTUAL_VOICE(0,T)=TRACKN*16+TRACKM VIRTUAL_VOICE(1,T)=PITCH VIRTUAL_VOICE(2,T)=VELOCITY VIRTUAL_VOICE(3,T)=TIMER 'FIND OLDEST TRACK ON VOICE OLDEST=0 VOI=0 FOR X=0 TO 3 IF PLAYING(1,X)>OLDEST THEN OLDEST=PLAYING(1,X) VOI=X END IF NEXT X PLAYING(0,VOI)=VIRTUAL_VOICE(0,T) PLAYING(1,VOI)=VIRTUAL_VOICE(1,T) OFFSET=0 CALL PLAYSOUND(VOI,PITCH,VELOCITY,OFFSET) END SUB SUB PLAYSOUND(VOI,PITCH,VELOCITY,OFFSET) VOLUME VOI,VELOCITY, PLAY VOI,PITCH END SUB SUB VOICESELECT(ROT,TRACKN,PITCH,VELOCITY) END SUB SUB KEYDOWN(ROT,TRACKN,TRACKM,PITCH,VELOCITY) 'CALL KEYDOWN2(ROT,TRACKN,TRACKM,PITCH,VELOCITY) 'EXIT SUB VOI=ROT ADD ROT,1,0 TO 3 'VOI=-1 'FIND AVAILABLE VOICES FOR X=0 TO 3 IF PLAYING(0,X)=PITCH THEN VOI=X EXIT ELSE IF PLAYING(0,X)=0 THEN VOI=X EXIT END IF NEXT X 'IF VOI=-1 THEN EXIT SUB 'OVERWRITE VOICE IF THE SAME KEY IS ALREADY PRESSED (SAME PITCH) 'TRACE VOI,PITCH,PLAYING(0),PLAYING(1),PLAYING(2),PLAYING(3) PLAYING(0,VOI)=PITCH 'STOP SOUND IF VELOCITY=0 THEN 'TRACE "STOP",VOI PLAYING(0,VOI)=0 STOP VOI LOCATE 0,12+VOI PAL 1 'PRINT VOI,PITCH,0," " PRINT VOI," " LOCATE 0,5 PAL 0 ELSE LOCATE 0,12+VOI PAL 3 PRINT VOI,PITCH,VELOCITY," "; LOCATE 9,12+VOI PRINT TRACKN,TRACKM," " LOCATE 0,5 PAL 0 END IF 'VELOCITY VELOCITY=-VELOCITY*(VELOCITY>=0 AND VELOCITY<=15)-15*(VELOCITY>15) VOLUME VOI,VELOCITY, 'TWO OCTAVES DOWN ADD PITCH,-24 'OCT -2 'PLAY OR CLIP IF PITCH>0 AND PITCH<97 THEN PLAY VOI,PITCH ELSE IF PITCH<1 THEN PLAY VOI,PITCH AND 12 PRINT "PITCH TOO LOW" ELSE PLAY VOI,84+PITCH AND 12 PRINT "PITCH TOO HIGH" END IF END SUB SUB KEYUP(TRACKN,TRACKM,PITCH) FOR X=0 TO 3 IF PITCH=PLAYING(0,X) THEN STOP X PLAYING(0,X)=0 'TRACE "STOP",X LOCATE 0,12+X PAL 1 'PRINT X,PITCH,0," " PRINT X," " LOCATE 0,5 PAL 0 END IF NEXT X END SUB 'V A R I A B L E L E N G T H Q U A N T I T Y SUB VAR_LEN_QUANTITY V0=0 REPEAT V0=V0*128 CALL RAM_PEEK(I) 'PRINT " ",HEX$(V) ADD V0,V MOD 128 'PRINT " ",HEX$(V0) INC I UNTIL V\128=0 V=V0 END SUB SUB NEW_VAR_LEN_QUANTITY(I,V) V0=0 V=0 REPEAT V0=V0*128 CALL RAM_PEEK(I) 'PRINT " ",HEX$(V) ADD V0,V MOD 128 'PRINT " ",HEX$(V0) INC I UNTIL V\128=0 V=V0 END SUB 'THIS FUNCTION SIMULATES A 64KB RAM: 'IF THE ADDRESS IS OUT OF RANGE IT'LL CHANGE THE DATA BLOCK 'CALL RAM_PEEK(I) WILL BE USED INSTEAD OF PEEK(I) 'R A M P E E K SUB RAM_PEEK(A) 'TRACE HEX$(A-$A000) IF (A-$A000)\$4000 = FILE_PART THEN V=PEEK(A-FILE_PART*$4000) ELSE 'TRACE "SWITCH",FILE_PART FILE_PART=(A-$A000)\$4000 OFFSET=$4000*(FILE_PART MOD 2) IF K$<>"B" AND FILE_PART>1 THEN IF OPERATION<>-1 THEN PAL 1 PRINT "" PRINT "OUT OF DATA" PAL 0 END IF ELSE IF K$="L" OR K$="B" AND FILE_PART\2=1 THEN COPY ROM(F)+OFFSET,-(FILE_PART=1)*(S-$4000)-(FILE_PART=0)*$4000 TO $A000 ELSE IF K$="E" OR K$="B" AND FILE_PART\2=0 THEN LOAD F,$A000,$4000,OFFSET END IF V=PEEK(A-FILE_PART*$4000) 'TRACE "SWITCHED",FILE_PART END IF END IF END SUB 'R A M P E E K F O U R SUB RAM_PEEK4(A) CALL RAM_PEEK(A) V0=V CALL RAM_PEEK(A+1) V1=V CALL RAM_PEEK(A+2) V2=V CALL RAM_PEEK(A+3) V3=V END SUB 'S A V E SUB SAVEDATA(ADDR,V,OFFSET) 'BITSHIFT POKE ADDR,PEEK(ADDR)+INT(V*2^OFFSET)MOD 256 END SUB 'T R A S H SUB NOT_IN_USE WHILE 0 'V=PEEK(I) CALL RAM_PEEK(I) PRINT HEX$(V) WHILE NOT TAP WAIT 1 WEND INC I WAIT 1 WEND END SUB #4:ZELDA OVERWORLD 4D546864000000060001000E01804D54 726B0000001A00FF58040402600800FF 7F0300004100FF5103062F9D00FF2F00 4D54726B0000047000FF03064D656C6F 647900B0000000C04700B05B0000FF59 02FE000090463E860080463E82009046 3E5480463E2C90463E5480463E2C9046 3E5480463E2C90463E5480463E2C9046 3E7C80463E810490443E5480443E2C90 463E840080463E810090463E5480463E 2C90463E5480463E2C90463E5480463E 2C90463E5480463E2C90463E7C80463E 810490443E5480443E2C90463E843C80 463E4490463E5480463E2C90463E5480 463E2C90463E5480463E2C90463E5480 463E2C90463E810080463E4090413E40 80413E2090413E4080413E2090413E81 0080413E4090413E4080413E2090413E 4080413E2090413E810080413E409041 3E4080413E2090413E4080413E209041 3E810080413E4090413E810080413E40 90463E820080463E810090413E843C80 413E6490463E5C80463E0490463E5C80 463E0490483E5C80483E04904A3E5C80 4A3E04904B3E5C804B3E04904D3E857C 804D3E8144904D3E8100804D3E40904D 3E7C804D3E04904E3E7C804E3E049050 3E7C80503E0490523E867C80523E0490 523E7C80523E0490523E7C80523E0490 523E7C80523E0490503E7C80503E0490 4E3E7C804E3E0490503E7C80503E8104 904E3E7C804E3E04904D3E857C804D3E 04904D3E827C804D3E04904B3E813C80 4B3E04904B3E5C804B3E04904D3E5C80 4D3E04904E3E857C804E3E04904D3E81 3C804D3E04904B3E813C804B3E049049 3E813C80493E0490493E5C80493E0490 4B3E5C804B3E04904D3E857C804D3E04 904B3E813C804B3E0490493E813C8049 3E0490483E813C80483E0490483E5C80 483E04904A3E5C804A3E04904C3E857C 804C3E04904F3E827C804F3E04904D3E 8100804D3E4090413E4080413E209041 3E4080413E2090413E810080413E4090 413E4080413E2090413E4080413E2090 413E810080413E4090413E4080413E20 90413E4080413E2090413E810080413E 4090413E810080413E4090463E820080 463E810090413E843C80413E6490463E 5C80463E0490463E5C80463E0490483E 5C80483E04904A3E5C804A3E04904B3E 5C804B3E04904D3E857C804D3E814490 4D3E8100804D3E40904D3E7C804D3E04 904E3E7C804E3E0490503E7C80503E04 90523E887C80523E0490553E827C8055 3E0490543E814080543E814090513E85 0080513E8100904D3E827C804D3E0490 4E3E8640804E3E824090523E827C8052 3E0490513E814080513E8140904D3E85 00804D3E8100904D3E827C804D3E0490 4E3E857C804E3E830490523E827C8052 3E0490513E813C80513E8144904D3E85 7C804D3E04904A3E827C804A3E04904B 3E857C804B3E8304904E3E827C804E3E 04904D3E813C804D3E814490493E857C 80493E0490463E827C80463E0490483E 813C80483E0490483E5C80483E04904A 3E5C804A3E04904C3E857C804C3E0490 4F3E827C804F3E04904D3E8100804D3E 4090413E4080413E2090413E4080413E 2090413E810080413E4090413E408041 3E2090413E4080413E2090413E810080 413E4090413E4080413E2090413E4080 413E2090413E810080413E4090413E81 0080413E00FF2F004D54726B000005BC 00FF03074861726D6F6E7900B1000000 C14700B10A3F00B15B0000FF5902FE00 00913E3B8600813E3B8200913E3B5481 3E3B2C913E3B54813E3B2C913E3B5481 3E3B2C913E3B54813E3B2C913C3B7C81 3C3B8104913C3B54813C3B2C913C3B84 00813C3B8200913C3B54813C3B2C913C 3B54813C3B2C913C3B54813C3B2C913D 3B7C813D3B8104913D3B54813D3B2C91 3D3B843C813D3B44913D3B54813D3B2C 913D3B54813D3B2C913D3B54813D3B2C 913D3B54813D3B2C913D3B813C813D3B 0491393B4081393B2091393B4081393B 2091393B810081393B4091393B408139 3B2091393B4081393B2091393B810081 393B4091393B4081393B2091393B4081 393B2091393B810081393B4091393B81 0081393B40913E3B8200813E3B810091 3E3B7C813E3B04913E3B7C813E3B0491 3C3B7C813C3B04913E3B813C813E3B64 913E3B5C813E3B04913E3B5C813E3B04 913F3B5C813F3B0491413B5C81413B04 91433B5C81433B0491443B821C81443B 0491463B5C81463B0491463B5C81463B 0491483B5C81483B04914A3B5C814A3B 04914B3B5C814B3B04914D3B813C814D 3B04914D3B813C814D3B0491443B7C81 443B0491463B7C81463B0491483B7C81 483B0491493B821C81493B0491423B5C 81423B0491423B5C81423B0491443B5C 81443B0491463B5C81463B0491483B5C 81483B0491493B813C81493B0491493B 813C81493B0491493B7C81493B049148 3B7C81483B0491463B7C81463B049149 3B7C81493B810491443B7C81443B0491 443B7C81443B0491443B7C81443B0491 423B7C81423B0491443B7C81443B8104 91443B7C81443B0491443B7C81443B04 91423B7C81423B0491443B7C81443B04 91423B816C81423B1491423B3C81423B 0491413B3C81413B0491423B82009142 3B1C81423B2081423B0491443B3C8144 3B0491463B827C81463B0491443B813C 81443B0491423B813C81423B0491413B 820091413B1C81413B2081413B04913F 3B3C813F3B0491413B820091413B1C81 413B2081413B0491423B3C81423B0491 443B827C81443B0491423B813C81423B 0491413B813C81413B0491403B827C81 403B0491403B821C81403B0491413B5C 81413B0491433B820091433B1C81433B 2081433B0491453B3C81453B0491463B 813C81463B0491483B813C81483B0491 453B810081453B4091393B4081393B20 91393B4081393B2091393B810081393B 4091393B4081393B2091393B4081393B 2091393B810081393B4091393B408139 3B2091393B4081393B2091393B810081 393B4091393B810081393B40913E3B82 00813E3B8100913E3B7C813E3B04913E 3B7C813E3B04913C3B7C813C3B04913E 3B813C813E3B64913E3B5C813E3B0491 3E3B5C813E3B04913F3B5C813F3B0491 413B5C81413B0491433B5C81433B0491 443B821C81443B0491463B5C81463B04 91463B5C81463B0491483B5C81483B04 914A3B5C814A3B04914B3B5C814B3B04 914D3B813C814D3B04914D3B813C814D 3B0491443B7C81443B0491463B7C8146 3B0491483B7C81483B0491493B887C81 493B04914C3B827C814C3B04914B3B81 40814B3B814091483B850081483B8100 91453B827C81453B0491473B86408147 3B824091493B827C81493B0491483B81 3C81483B814491453B850081453B8100 91453B827C81453B0491473B857C8147 3B830491493B827C81493B0491483B81 3C81483B814491453B857C81453B0491 453B827C81453B0491423B857C81423B 830491473B827C81473B0491463B813C 81463B814491413B857C81413B04913D 3B827C813D3B0491403B827C81403B04 91403B821C81403B0491413B5C81413B 0491433B820091433B1C81433B208143 3B0491453B3C81453B0491463B813C81 463B0491483B813C81483B0491453B81 0081453B4091393B4081393B2091393B 4081393B2091393B810081393B409139 3B4081393B2091393B4081393B209139 3B810081393B4091393B4081393B2091 393B4081393B2091393B810081393B40 91393B810081393B00FF2F004D54726B 0000058E00FF030942617373204C696E 6500B2000000C25500FF5902FE000092 2E7F8200822E7F8100922E7F54822E7F 2C922E7F54822E7F2C922E7F54822E7F 2C922E7F8200822E7F8100922E7F5482 2E7F2C922E7F54822E7F2C922E7F5482 2E7F2C922C7F8200822C7F8100922C7F 54822C7F2C922C7F54822C7F2C922C7F 54822C7F2C922C7F8200822C7F810092 2C7F54822C7F2C922C7F54822C7F2C92 2C7F54822C7F2C922A7F8200822A7F81 00922A7F54822A7F2C922A7F54822A7F 2C922A7F54822A7F2C922A7F8200822A 7F8100922A7F54822A7F2C922A7F5482 2A7F2C922A7F54822A7F2C922A7F813C 822A7F814492297F810082297F820092 297F810082297F8200922B7F813C822B 7F04922D7F813C822D7F04922E7F8100 822E7F8200922E7F54822E7F2C922E7F 54822E7F2C922C7F54822C7F2C922E7F 8100822E7F8200922E7F8100822E7F82 00922C7F8100822C7F8200922C7F5482 2C7F2C922C7F54822C7F2C922A7F5482 2A7F2C922C7F8100822C7F8200922C7F 8100822C7F8200922A7F8100822A7F82 00922A7F54822A7F2C922A7F54822A7F 2C92287F5482287F2C922A7F8100822A 7F8200922A7F8100822A7F820092317F 813C82317F814492317F7C82317F0492 317F7C82317F04922F7F7C822F7F0492 317F813C82317F814492317F813C8231 7F8144922F7F813C822F7F8144922F7F 7C822F7F04922F7F7C822F7F04922E7F 7C822E7F04922F7F813C822F7F814492 2F7F7C822F7F04922F7F7C822F7F0492 2F7F7C822F7F04922E7F813C822E7F81 44922E7F7C822E7F04922E7F7C822E7F 04922C7F7C822C7F04922E7F813C822E 7F8144922E7F7C822E7F04922E7F7C82 2E7F04922E7F7C822E7F0492307F813C 82307F814492307F7C82307F0492307F 7C82307F04922E7F7C822E7F0492307F 813C82307F814492307F7C82307F0492 307F7C82307F0492307F7C82307F0492 297F810082297F820092297F81008229 7F820092297F810082297F8200922B7F 813C822B7F04922D7F813C822D7F0492 2E7F8100822E7F8200922E7F54822E7F 2C922E7F54822E7F2C922C7F54822C7F 2C922E7F8100822E7F8200922E7F8100 822E7F8200922C7F8100822C7F820092 2C7F54822C7F2C922C7F54822C7F2C92 2A7F54822A7F2C922C7F8100822C7F82 00922C7F8100822C7F8200922A7F8100 822A7F8200922A7F54822A7F2C922A7F 54822A7F2C92287F5482287F2C922A7F 8100822A7F8200922A7F8100822A7F82 0092297F810082297F820092297F5482 297F2C92297F5482297F2C92277F7C82 277F0492297F810082297F820092297F 810082297F820092287F5482287F2C92 2E7F54822E7F2C92317F5482317F2C92 347F5482347F2C923A7F54823A7F2C92 3D7F54823D7F2C92407F810082407F85 0092417F810082417F820092297F5482 297F2C92297F5482297F2C92297F5482 297F2C92297F810082297F850092287F 5482287F2C922E7F54822E7F2C92317F 5482317F2C92347F5482347F2C923A7F 54823A7F2C923D7F54823D7F2C92407F 810082407F850092417F810082417F82 0092297F5482297F2C92297F5482297F 2C92297F5482297F2C92297F81008229 7F8500922F7F8100822F7F8200922F7F 54822F7F2C922F7F54822F7F2C922E7F 54822E7F2C922F7F8100822F7F820092 2F7F54822F7F2C922F7F54822F7F2C92 2F7F54822F7F2C922E7F8100822E7F82 00922E7F54822E7F2C922E7F54822E7F 2C922C7F54822C7F2C922E7F8100822E 7F8200922E7F54822E7F2C922E7F5482 2E7F2C922E7F54822E7F2C92307F8100 82307F820092307F5482307F2C92307F 5482307F2C92307F5482307F2C92307F 810082307F820092307F5482307F2C92 307F5482307F2C92307F5482307F2C92 297F810082297F820092297F81008229 7F822092297F810082297F8160922B7F 813C822B7F04922D7F813C822D7F00FF 2F004D54726B000004E600FF030A5065 7263757373696F6E00B9000000C90000 99262B820089262B870099262B548926 2B2C99262B5489262B2C99262B548926 2B2C99262B820089262B870099262B54 89262B2C99262B5489262B2C99262B54 89262B2C99262B820089262B87009926 2B5489262B2C99262B5489262B2C9926 2B5489262B2C99262B810089262B8200 99262B810089262B820099262B810089 262B820099262B810089262B4099262B 810089262B4099262B810089262B8200 99262B5489262B2C99262B5489262B2C 99262B5489262B2C99262B810089262B 820099262B810089262B820099262B81 0089262B820099262B5489262B2C9926 2B5489262B2C99262B5489262B2C9926 2B810089262B820099262B810089262B 820099262B810089262B820099262B54 89262B2C99262B5489262B2C99262B54 89262B2C99262B810089262B82009926 2B810089262B820099262B810089262B 820099262B5489262B2C99262B548926 2B2C99262B5489262B2C99262B810089 262B820099262B810089262B82009926 2B810089262B820099262B5489262B2C 99262B5489262B2C99262B5489262B2C 99262B810089262B820099262B810089 262B820099262B810089262B82009926 2B5489262B2C99262B5489262B2C9926 2B5489262B2C99262B810089262B8200 99262B810089262B820099262B810089 262B820099262B5489262B2C99262B54 89262B2C99262B5489262B2C99262B81 0089262B820099262B810089262B8200 99262B810089262B820099262B548926 2B2C99262B5489262B2C99262B548926 2B2C99262B810089262B820099262B81 0089262B820099262B810089262B8200 99262B5489262B2C99262B5489262B2C 99262B5489262B2C99262B810089262B 820099262B810089262B820099262B81 0089262B820099262B5489262B2C9926 2B5489262B2C99262B5489262B2C9926 2B810089262B820099262B810089262B 820099262B810089262B820099262B54 89262B2C99262B5489262B2C99262B54 89262B2C99262B810089262B82009926 2B810089262B820099262B810089262B 820099262B5489262B2C99262B548926 2B2C99262B5489262B2C99262B810089 262B820099262B810089262B82009926 2B810089262B820099262B5489262B2C 99262B5489262B2C99262B5489262B2C 99262B810089262B820099262B810089 262B820099262B810089262B82009926 2B5489262B2C99262B5489262B2C9926 2B5489262B2C99262B810089262B8200 99262B810089262B820099262B810089 262B820099262B5489262B2C99262B54 89262B2C99262B5489262B2C99262B81 0089262B820099262B810089262B8200 99262B810089262B820099262B548926 2B2C99262B5489262B2C99262B548926 2B2C99262B810089262B820099262B81 0089262B820099262B810089262B8200 99262B5489262B2C99262B5489262B2C 99262B5489262B2C99262B810089262B 820099262B810089262B820099262B81 0089262B820099262B5489262B2C9926 2B5489262B2C99262B5489262B2C9926 2B810089262B820099262B810089262B 820099262B810089262B820099262B54 89262B2C99262B5489262B2C99262B54 89262B2C99262B810089262B82009926 2B810089262B820099262B810089262B 820099262B5489262B2C99262B548926 2B2C99262B5489262B2C99262B810089 262B820099262B810089262B00FF2F00 4D54726B0000001A00FF03124A656666 726579204D20436F6C6C6574746900FF 2F004D54726B0000002800FF03206A63 6F6C6C65747440617474696C612E7374 6576656E732D746563682E65647500FF 2F004D54726B0000000400FF2F004D54 726B0000000400FF2F004D54726B0000 000400FF2F004D54726B0000000400FF 2F004D54726B0000000400FF2F004D54 726B0000000400FF2F004D54726B0000 000400FF2F00 #5:MIDI FILE 4D546864000000060001000200604D54 726B0000001300FF5103068A1B00FF58 040402180800FF2F004D54726B000017 5200FF031A504C55434B202D20506C61 7920416E642057696E20537475203100 904E5F30804E500090505F1880505018 90495F1880495000904B5F30804B5000 90475F0C8047500C904A5F18804A5000 90495F188049500090475F1880475018 90475F188047501890495F3080495000 904A5F18804A5018904A5F0C804A500C 90495F0C8049500C90475F1880475000 90495F1880495000904B5F18804B5000 904E5F18804E500090506F1880505000 904B5F18804B5000904E6F18804E5000 90495F1880495000904A6F18804A5000 90475F188047500090496F1880495000 90475F1880475000904B5F30804B5000 904E5F18804E501890506F1880505000 904B5F18804B5000904E6F18804E5000 90495F1880495000904A6F18804A5000 90475F188047500090495F1880495000 904B5F18804B5000904A5F18804A5000 90495F188049500090475F1880475000 90495F1880495000904A5F18804A5018 90475F188047500090495F1880495000 904A5F18804A5000904E5F18804E5000 90495F1880495000904A5F18804A5000 90495F188049500090475F1880475000 90495F188049501890475F1880475018 90495F1880495018904E5F30804E5000 90505F188050501890495F1880495000 904B5F30804B500090475F0C8047500C 904A5F18804A500090495F1880495000 90475F188047501890475F1880475018 90495F3080495000904A5F18804A5018 904A5F0C804A500C90495F0C8049500C 90475F188047500090495F1880495000 904B5F18804B5000904E5F18804E5000 90506F1880505000904B5F18804B5000 904E6F18804E500090495F1880495000 904A6F18804A500090475F1880475000 90496F188049500090475F1880475000 904B5F30804B5000904E5F18804E5018 90506F1880505000904B5F18804B5000 904E6F18804E500090495F1880495000 904A6F18804A500090475F1880475000 90495F1880495000904B5F18804B5000 904A5F18804A500090495F1880495000 90475F188047500090495F1880495000 904A5F18804A501890475F1880475000 90495F1880495000904A5F18804A5000 904E5F18804E500090495F1880495000 904A5F18804A500090495F1880495000 90475F188047500090495F3080495000 90475F188047501890475F1880475018 90475F188047501890425F1880425000 90445F188044500090475F1880475018 90425F188042500090445F1880445000 90475F188047500090495F1880495000 904B5F18804B500090495F1880495000 904C5F18804C5000904B5F18804B5000 904C5F18804C5000904E5F18804E5000 90475F188047501890475F1880475018 90426F188042500090445F1880445000 90475F188047500090445F1880445000 904C5F18804C5000904B5F18804B5000 90495F188049500090474C1880475000 90425F1880425000903F5F18803F5000 90405F188040500090425F1880425000 90475F188047501890425F1880425000 90445F188044500090475F1880475018 90425F188042500090445F1880445000 90475F188047500090475F1880475000 90495F1880495000904B5F18804B5000 90475F188047500090425F1880425000 90445F188044500090425F1880425000 90475F308047500090475F1880475000 90465F188046500090475F1880475000 90425F188042500090445F1880445000 90475F1880475000904C4C18804C5000 904B5F18804B5000904C5F18804C5000 904E5F18804E500090475F1880475018 90465F188046501890475F1880475018 90425F188042500090445F1880445000 90475F188047501890425F1880425000 90445F188044500090475F1880475000 90495F1880495000904B5F18804B5000 90495F1880495000904C5F18804C5000 904B5F18804B5000904C5F18804C5000 904E5F18804E500090475F1880475018 90475F188047501890426F1880425000 90445F188044500090475F1880475000 90445F1880445000904C5F18804C5000 904B5F18804B500090495F1880495000 90474C188047500090425F1880425000 903F5F18803F500090405F1880405000 90425F188042500090475F1880475018 90425F188042500090445F1880445000 90475F188047501890425F1880425000 90445F188044500090475F1880475000 90475F188047500090495F1880495000 904B5F18804B500090475F1880475000 90425F188042500090445F1880445000 90425F188042500090475F3080475000 90475F188047500090465F1880465000 90475F188047500090425F1880425000 90445F188044500090475F1880475000 904C4C18804C5000904B5F18804B5000 904C5F18804C5000904E5F18804E5000 90475F308047500090495F3080495000 904E5F30804E500090505F1880505018 90495F1880495000904B5F30804B5000 90475F0C8047500C904A5F18804A5000 90495F188049500090475F1880475018 90475F188047501890495F3080495000 904A5F18804A5018904A5F0C804A500C 90495F0C8049500C90475F1880475000 90495F1880495000904B5F18804B5000 904E5F18804E500090506F1880505000 904B5F18804B5000904E6F18804E5000 90495F1880495000904A6F18804A5000 90475F188047500090496F1880495000 90475F1880475000904B5F30804B5000 904E5F18804E501890506F1880505000 904B5F18804B5000904E6F18804E5000 90495F1880495000904A6F18804A5000 90475F188047500090495F1880495000 904B5F18804B5000904A5F18804A5000 90495F188049500090475F1880475000 90495F1880495000904A5F18804A5018 90475F188047500090495F1880495000 904A5F18804A5000904E5F18804E5000 90495F1880495000904A5F18804A5000 90495F188049500090475F1880475000 90495F188049501890475F1880475018 90495F1880495018904E5F30804E5000 90505F188050501890495F1880495000 904B5F30804B500090475F0C8047500C 904A5F18804A500090495F1880495000 90475F188047501890475F1880475018 90495F3080495000904A5F18804A5018 904A5F0C804A500C90495F0C8049500C 90475F188047500090495F1880495000 904B5F18804B5000904E5F18804E5000 90506F1880505000904B5F18804B5000 904E6F18804E500090495F1880495000 904A6F18804A500090475F1880475000 90496F188049500090475F1880475000 904B5F30804B5000904E5F18804E5018 90506F1880505000904B5F18804B5000 904E6F18804E500090495F1880495000 904A6F18804A500090475F1880475000 90495F1880495000904B5F18804B5000 904A5F18804A500090495F1880495000 90475F188047500090495F1880495000 904A5F18804A501890475F1880475000 90495F1880495000904A5F18804A5000 904E5F18804E500090495F1880495000 904A5F18804A500090495F1880495000 90475F188047500090495F3080495000 90475F188047501890475F1880475018 90475F188047501890425F1880425000 90445F188044500090475F1880475018 90425F188042500090445F1880445000 90475F188047500090495F1880495000 904B5F18804B500090495F1880495000 904C5F18804C5000904B5F18804B5000 904C5F18804C5000904E5F18804E5000 90475F188047501890475F1880475018 90426F188042500090445F1880445000 90475F188047500090445F1880445000 904C5F18804C5000904B5F18804B5000 90495F188049500090474C1880475000 90425F1880425000903F5F18803F5000 90405F188040500090425F1880425000 90475F188047501890425F1880425000 90445F188044500090475F1880475018 90425F188042500090445F1880445000 90475F188047500090475F1880475000 90495F1880495000904B5F18804B5000 90475F188047500090425F1880425000 90445F188044500090425F1880425000 90475F308047500090475F1880475000 90465F188046500090475F1880475000 90425F188042500090445F1880445000 90475F1880475000904C4C18804C5000 904B5F18804B5000904C5F18804C5000 904E5F18804E500090475F1880475018 90465F188046501890475F1880475018 90425F188042500090445F1880445000 90475F188047501890425F1880425000 90445F188044500090475F1880475000 90495F1880495000904B5F18804B5000 90495F1880495000904C5F18804C5000 904B5F18804B5000904C5F18804C5000 904E5F18804E500090475F1880475018 90475F188047501890426F1880425000 90445F188044500090475F1880475000 90445F1880445000904C5F18804C5000 904B5F18804B500090495F1880495000 90474C188047500090425F1880425000 903F5F18803F500090405F1880405000 90425F188042500090475F1880475018 90425F188042500090445F1880445000 90475F188047501890425F1880425000 90445F188044500090475F1880475000 90475F188047500090495F1880495000 904B5F18804B500090475F1880475000 90425F188042500090445F1880445000 90425F188042500090475F3080475000 90475F188047500090465F1880465000 90475F188047500090425F1880425000 90445F188044500090475F1880475000 904C4C18804C5000904B5F18804B5000 904C5F18804C5000904E5F18804E5000 90475F308047500090495F3080495000 90346400903464308034400080344000 90406400904064308040400080404000 90366400903664308036400080364000 90426400904264308042400080424000 90336400903364308033400080334000 903F6400903F6430803F4000803F4000 90386400903864308038400080384000 90446400904464308044400080444000 90316400903164308031400080314000 903D6400903D6430803D4000803D4000 90366400903664308036400080364000 90426400904264308042400080424000 902F6400902F6430802F4000802F4000 903B6400903B6430803B4000803B4000 902F6400902F6430802F4000802F4000 903B6400903B6430803B4000803B4000 90347F308034400090407F3080404000 90367F308036400090427F3080424000 90337F3080334000903F7F30803F4000 90387F308038400090447F3080444000 90317F3080314000903D7F30803D4000 90367F308036400090427F3080424000 902F7F30802F4000903B7F30803B4000 902F7F30802F4000903B7F30803B4000 90347F308034400090407F3080404000 90367F308036400090427F3080424000 90337F3080334000903F7F30803F4000 90387F308038400090447F3080444000 90317F3080314000903D7F30803D4000 90365F0090365F308036400080364000 90425F0090425F308042400080424000 902F7F30802F4000903B7F30803B4000 902F7F30802F4000903B7F30803B4000 90347F308034400090407F3080404000 90367F308036400090427F3080424000 90337F3080334000903F7F30803F4000 90387F308038400090447F3080444000 90317F3080314000903D7F30803D4000 90367F308036400090427F3080424000 902F7F30802F4000903B7F30803B4000 902F7F30802F4000903B7F30803B4000 90347F308034400090387F3080384000 903B7F30803B400090407F3080404000 90337F308033400090367F3080364000 903B7F30803B4000903F7F30803F4000 90317F308031400090347F3080344000 90387F3080384000903B7F30803B4000 902F7F30802F400090337F3080334000 90367F3080364000903B7F30803B4000 90347F308034400090387F3080384000 903B7F30803B400090407F3080404000 90337F308033400090367F3080364000 903B7F30803B4000903F7F30803F4000 90317F308031400090347F3080344000 90387F3080384000903B7F30803B4000 902F7F30802F400090337F3080334000 90367F3080364000903B7F30803B4000 90347F308034400090387F3080384000 903B7F30803B400090407F3080404000 90337F308033400090367F3080364000 903B7F30803B4000903F7F30803F4000 90317F308031400090347F3080344000 90387F3080384000903B7F30803B4000 902F7F30802F400090337F3080334000 90367F3080364000903B7F30803B4000 90347F308034400090387F3080384000 903B7F30803B400090407F3080404000 90337F308033400090367F3080364000 903B7F30803B4000903F7F30803F4000 90317F308031400090347F3080344000 90387F3080384000903B7F30803B4000 902F7F30802F400090337F3080334000 90367F3080364000903B7F30803B4000 90346400903464308034400080344000 90406400904064308040400080404000 90366400903664308036400080364000 90426400904264308042400080424000 90336400903364308033400080334000 903F6400903F6430803F4000803F4000 90386400903864308038400080384000 90446400904464308044400080444000 90316400903164308031400080314000 903D6400903D6430803D4000803D4000 90366400903664308036400080364000 90426400904264308042400080424000 902F6400902F6430802F4000802F4000 903B6400903B6430803B4000803B4000 902F6400902F6430802F4000802F4000 903B6400903B6430803B4000803B4000 90347F308034400090407F3080404000 90367F308036400090427F3080424000 90337F3080334000903F7F30803F4000 90387F308038400090447F3080444000 90317F3080314000903D7F30803D4000 90367F308036400090427F3080424000 902F7F30802F4000903B7F30803B4000 902F7F30802F4000903B7F30803B4000 90347F308034400090407F3080404000 90367F308036400090427F3080424000 90337F3080334000903F7F30803F4000 90387F308038400090447F3080444000 90317F3080314000903D7F30803D4000 90366700903667308036400080364000 90426400904264308042400080424000 902F7F30802F4000903B7F30803B4000 902F7F30802F4000903B7F30803B4000 90347F308034400090407F3080404000 90367F308036400090427F3080424000 90337F3080334000903F7F30803F4000 90387F308038400090447F3080444000 90317F3080314000903D7F30803D4000 90367F308036400090427F3080424000 902F7F30802F4000903B7F30803B4000 902F7F30802F4000903B7F30803B4000 90347F308034400090387F3080384000 903B7F30803B400090407F3080404000 90337F308033400090367F3080364000 903B7F30803B4000903F7F30803F4000 90317F308031400090347F3080344000 90387F3080384000903B7F30803B4000 902F7F30802F400090337F3080334000 90367F3080364000903B7F30803B4000 90347F308034400090387F3080384000 903B7F30803B400090407F3080404000 90337F308033400090367F3080364000 903B7F30803B4000903F7F30803F4000 90317F308031400090347F3080344000 90387F3080384000903B7F30803B4000 902F7F30802F400090337F3080334000 90367F3080364000903B7F30803B4000 90347F308034400090387F3080384000 903B7F30803B400090407F3080404000 90337F308033400090367F3080364000 903B7F30803B4000903F7F30803F4000 90317F308031400090347F3080344000 90387F3080384000903B7F30803B4000 902F7F30802F400090337F3080334000 90367F3080364000903B7F30803B4000 90347F308034400090387F3080384000 903B7F30803B400090407F3080404000 90337F308033400090367F3080364000 903B7F30803B4000903F7F30803F4000 90317F308031400090347F3080344000 90387F3080384000903B7F30803B4000 902F7F30802F400090337F3080334000 90367F3080364000903B7F30803B4000 904B6418804B4000904C6418804C4000 904E6430804E40009053643080534000 904B6418804B4000904C6418804C4000 904E6418804E40009053641880534000 90556418805540009057641880574000 90556418805540009052641880524000 9053643080534000904E6430804E4000 904B6418804B4000904C6418804C4000 904E6430804E40009053641880534000 90556430805540009052641880524000 90536418805340009055641880554000 90586418805840009057641880574000 90586418805840009055641880554000 FF2F00 #14:MUSIC TEMPLATE 00007036000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00404040014040400240404003404040 04404040054040400640404007404040 08404040094040400A4040400B404040 0C4040400D4040400E4040400F404040 10404040114040401240404013404040 14404040154040401640404017404040 18404040194040401A4040401B404040 1C4040401D4040401E4040401F404040 20404040214040402240404023404040 24404040254040402640404027404040 28404040294040402A4040402B404040 2C4040402D4040402E4040402F404040 30404040314040403240404033404040 34404040354040403640404037404040 38404040394040403A4040403B404040 3C4040403D4040403E4040403F404040 #15:MUSIC 00007036000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00404040014040400240404003404040 04404040054040400640404007404040 08404040094040400A4040400B404040 0C4040400D4040400E4040400F404040 10404040114040401240404013404040 14404040154040401640404017404040 18404040194040401A4040401B404040 1C4040401D4040401E4040401F404040 20404040214040402240404023404040 24404040254040402640404027404040 28404040294040402A4040402B404040 2C4040402D4040402E4040402F404040 30404040314040403240404033404040 34404040354040403640404037404040 38404040394040403A4040403B404040 3C4040403D4040403E4040403F404040 47070047070047070047070047070047 07004707004707004707004707004707 00470700470700470700470700470700 47070047070047070047070047070047 07004707004707004707004707004707 00470700470700470700470700470700 47070047070047070000000047070047 07004707000000004707004707004707 00000000470700470700470700000000 47070047070047070047070047070047 07004707000000004507004507004507 00000000470700470700470700470700 47070047070047070047070047070047 07004707004707004707004707004707 00470700470700470700470700470700 47070047070047070000000047070047 07004707000000004707004707004707 00000000470700470700470700000000 47070047070047070047070047070047 07004707000000004507004507004507 00000000470700470700470700470700 47070047070047070047070047070047 07004707004707004707004707004707 00470700470700470700470700000000 47070047070047070000000047070047 07004707000000004707004707004707 00000000470700470700470700000000 47070047070047070047070047070047 07004207004207004207004207004207 00420700420700420700420700420700 42070042070042070042070042070042 07004207004207004207004207004207 00420700420700420700420700420700 42070042070042070042070042070042 07004207004207004207004207004207 00420700420700420700420700420700 47070047070047070047070047070047 07004707004707004707004707004707 00470700420700420700420700420700 42070042070042070042070042070042 07004207004207004207004207004207 00420700420700420700420700420700 00000047070047070000000047070047 07000000004907004907000000004B07 004B07000000004C07004C0700000000 4E07004E07004E07004E07004E07004E 07004E07004E07004E07004E07004E07 004E07004E07004E07004E07004E0700 4E07004E07004E07004E07004E07004E 07004E07004E07004E07004E07004E07 004E07004E07000000004E07004E0700 4E07004E07004E07004E07004E07004E 07004E07000000004F07004F07004F07 00000000510700510700510700000000 53070053070053070053070053070053 07005307005307005307005307005307 00530700530700530700530700530700 53070053070053070053070053070053 07005307005307005307005307005307 00000000530700530700530700000000 53070053070053070000000053070053 07005307000000005107005107005107 000000004F07004F07004F0700000000 51070051070051070051070051070051 07005107000000004F07004F07004F07 000000004E07004E07004E07004E0700 4E07004E07004E07004E07004E07004E 07004E07004E07004E07004E07004E07 004E07004E07004E07004E07004E0700 4E07004E07004E07000000004E07004E 07004E07004E07004E07004E07004E07 004E07004E07004E07004E0700000000 4C07004C07004C07004C07004C070000 00004C07004C07000000004E07004E07 000000004F07004F07004F07004F0700 4F07004F07004F07004F07004F07004F 07004F07004F07004F07004F07004F07 004F07004F07004F07004F07004F0700 4F07004F07004F07000000004E07004E 07004E07004E07004E07000000004C07 004C07004C07004C07004C0700000000 4A07004A07004A07004A07004A070000 00004A07004A07000000004C07004C07 000000004E07004E07004E07004E0700 4E07004E07004E07004E07004E07004E 07004E07004E07004E07004E07004E07 004E07004E07004E07004E07004E0700 4E07004E07004E07000000004C07004C 07004C07004C07004C07000000004A07 004A07004A07004A07004A0700000000 49070049070049070049070049070000 00004907004907000000004B07004B07 000000004D07004D07004D07004D0700 4D07004D07004D07004D07004D07004D 07004D07004D07004D07004D07004D07 004D07004D07004D07004D07004D0700 4D07004D07004D070000000050070050 07005007005007005007005007005007 00500700500700500700500700000000 4E07004E07004E07004E07004E07004E 07004207004207004207004207004207 00420700420700420700420700420700 42070042070042070042070042070042 07004207004207004207004207004207 00420700420700420700420700420700 42070042070042070042070042070042 07004207004207004207004207004207 00420700420700420700420700420700 47070047070047070047070047070047 07004707004707004707004707004707 00470700420700420700420700420700 42070042070042070042070042070042 07004207004207004207004207004207 00420700420700420700420700420700 00000047070047070000000047070047 07000000004907004907000000004B07 004B07000000004C07004C0700000000 4E07004E07004E07004E07004E07004E 07004E07004E07004E07004E07004E07 004E07004E07004E07004E07004E0700 4E07004E07004E07004E07004E07004E 07004E07004E07004E07004E07004E07 004E07004E07000000004E07004E0700 4E07004E07004E07004E07004E07004E 07004E07000000004F07004F07004F07 00000000510700510700510700000000 53070053070053070053070053070053 07005307005307005307005307005307 00530700530700530700530700530700 53070053070053070053070053070053 07005307005307005307005307005307 00530700530700530700530700530700 53070053070053070000000056070056 07005607005607005607005607005607 00560700560700560700560700000000 55070055070055070055070055070055 07005507005507005507005507005507 00550700520700520700520700520700 52070052070052070052070052070052 07005207005207005207005207005207 00520700520700520700520700520700 5207005207005207005207004E07004E 07004E07004E07004E07004E07004E07 004E07004E07004E07004E0700000000 4F07004F07004F07004F07004F07004F 07004F07004F07004F07004F07004F07 004F07004F07004F07004F07004F0700 4F07004F07004F07004F07004F07004F 07004F07004F07004F07004F07004F07 004F07004F07004F07004F07004F0700 4F07004F07004F07004F070053070053 07005307005307005307005307005307 00530700530700530700530700000000 52070052070052070052070052070052 07005207005207005207005207005207 005207004E07004E07004E07004E0700 4E07004E07004E07004E07004E07004E 07004E07004E07004E07004E07004E07 004E07004E07004E07004E07004E0700 4E07004E07004E07004E07004E07004E 07004E07004E07004E07004E07004E07 004E07004E07004E07004E0700000000 4F07004F07004F07004F07004F07004F 07004F07004F07004F07004F07004F07 004F07004F07004F07004F07004F0700 4F07004F07004F07004F07004F07004F 07004F07004F07004F07004F07004F07 004F07004F07004F07004F07004F0700 4F07004F07004F070000000053070053 07005307005307005307005307005307 00530700530700530700530700000000 52070052070052070052070052070052 07005207005207005207005207005207 000000004E07004E07004E07004E0700 4E07004E07004E07004E07004E07004E 07004E07004E07004E07004E07004E07 004E07004E07004E07004E07004E0700 4E07004E07004E07000000004B07004B 07004B07004B07004B07004B07004B07 004B07004B07004B07004B0700000000 4C07004C07004C07004C07004C07004C 07004C07004C07004C07004C07004C07 004C07004C07004C07004C07004C0700 4C07004C07004C07004C07004C07004C 07004C07004C07004C07004C07004C07 004C07004C07004C07004C07004C0700 4C07004C07004C07000000004F07004F 07004F07004F07004F07004F07004F07 004F07004F07004F07004F0700000000 4E07004E07004E07004E07004E07004E 07004E07004E07004E07004E07004E07 000000004A07004A07004A07004A0700 4A07004A07004A07004A07004A07004A 07004A07004A07004A07004A07004A07 004A07004A07004A07004A07004A0700 4A07004A07004A070000000047070047 07004707004707004707004707004707 00470700470700470700470700000000 49070049070049070049070049070000 00004907004907000000004B07004B07 000000004D07004D07004D07004D0700 4D07004D07004D07004D07004D07004D 07004D07004D07004D07004D07004D07 004D07004D07004D07004D07004D0700 4D07004D07004D070000000050070050 07005007005007005007005007005007 00500700500700500700500700000000 4E07004E07004E07004E07004E07004E 07004207004207004207004207004207 00420700420700420700420700420700 42070042070042070042070042070042 07004207004207004207004207004207 00420700420700420700420700420700 42070042070042070042070042070042 07004207004207004207004207004207 004207004207004207003F07003F0700 3F07003F07003F07003F07003F07003F 07003F07003F07003F07003F07003F07 003F07003F07003F07003F07003F0700 3F07003F07003F07003F07003F07003F 07003F07003F07003F07003F07003F07 003F07003F07003F07003F07003F0700 3F07000000003F07003F07003F070000 00003F07003F07003F07000000003F07 003F07003F07000000003D07003D0700 3D07003D07003D07003D07003D070000 00003D07003D07003D07000000003D07 003D07003D07003D07003D07003D0700 3D07003D07003D07003D07003D07003D 07003D07003D07003D07003D07003D07 003D07003D07003D07003D07003D0700 3D07003D07003D07003D07003D070000 00003D07003D07003D07000000003D07 003D07003D07000000003E07003E0700 3E07003E07003E07003E07003E070000 00003E07003E07003E07000000003E07 003E07003E07003E07003E07003E0700 3E07003E07003E07003E07003E07003E 07003E07003E07003E07003E07003E07 003E07003E07000000003E07003E0700 3E07000000003E07003E07003E070000 00003E07003E07003E07000000003E07 003E07003E07000000003E07003E0700 3E07003E07003E07000000003A07003A 07003A07003A07003A07003A07003A07 003A07003A07003A07003A07003A0700 3A07003A07003A07003A07003A07003A 07003A07003A07003A07003A07003A07 003A07003A07003A07003A07003A0700 3A07003A07003A07003A07003A07003A 07003A07003A07003A07003A07003A07 003A07003A07003A07003F07003F0700 3F07003F07003F07003F07003F07003F 07003F07003F07003F07003F07003F07 003F07003F07000000003F07003F0700 3F07000000003D07003D07003D070000 00003F07003F07003F07003F07003F07 003F07003F07003F07000000003F0700 3F07000000003F07003F070000000040 07004007000000004207004207000000 00440700440700000000450700450700 45070045070045070045070045070045 07000000004707004707000000004707 00470700000000490700490700000000 4B07004B07000000004C07004C070000 00004E07004E07004E07004E07004E07 000000004E07004E07004E07004E0700 4E070000000045070045070045070000 00004707004707004707000000004907 004907004907000000004A07004A0700 4A07004A07004A07004A07004A07004A 07000000004307004307000000004307 00430700000000450700450700000000 47070047070000000049070049070000 00004A07004A07004A07004A07004A07 000000004A07004A07004A07004A0700 4A07000000004A07004A07004A070000 00004907004907004907000000004707 004707004707000000004A07004A0700 4A07004A07004A07004A07004A070000 00004507004507004507000000004507 00450700450700000000450700450700 45070000000043070043070043070000 00004507004507004507004507004507 00450700450700000000450700450700 45070000000045070045070045070000 00004307004307004307000000004507 00450700450700000000430700430700 43070043070043070043070043070000 00004307000000004207000000004307 00430700430700430700430700430700 43070043070043070000000045070000 00004707004707004707004707004707 00470700470700470700470700470700 47070000000045070045070045070045 07004507000000004307004307004307 00430700430700000000420700420700 42070042070042070042070042070042 07004207000000004007000000004207 00420700420700420700420700420700 42070042070042070000000043070000 00004507004507004507004507004507 00450700450700450700450700450700 45070000000043070043070043070043 07004307000000004207004207004207 00420700420700000000410700410700 41070041070041070041070041070041 07004107004107004107000000004107 00410700410700410700410700410700 41070041070000000042070042070000 00004407004407004407004407004407 00440700440700440700440700000000 46070000000047070047070047070047 07004707000000004907004907004907 00490700490700000000460700460700 4607004607004607004607003A07003A 07003A07003A07003A07003A07003A07 003A07003A07003A07003A07003A0700 3A07003A07003A07003A07003A07003A 07003A07003A07003A07003A07003A07 003A07003A07003A07003A07003A0700 3A07003A07003A07003A07003A07003A 07003A07003A07003A07003A07003A07 003A07003A07003A07003F07003F0700 3F07003F07003F07003F07003F07003F 07003F07003F07003F07003F07003F07 003F07003F07000000003F07003F0700 3F07000000003D07003D07003D070000 00003F07003F07003F07003F07003F07 003F07003F07003F07000000003F0700 3F07000000003F07003F070000000040 07004007000000004207004207000000 00440700440700000000450700450700 45070045070045070045070045070045 07000000004707004707000000004707 00470700000000490700490700000000 4B07004B07000000004C07004C070000 00004E07004E07004E07004E07004E07 000000004E07004E07004E07004E0700 4E070000000045070045070045070000 00004707004707004707000000004907 004907004907000000004A07004A0700 4A07004A07004A07004A07004A07004A 07004A07004A07004A07004A07004A07 004A07004A07004A07004A07004A0700 4A07004A07004A07004A07004A07004A 07004A07004A07004A07004A07004A07 004A07004A07004A07004A07004A0700 4A07000000004D07004D07004D07004D 07004D07004D07004D07004D07004D07 004D07004D07000000004C07004C0700 4C07004C07004C07004C07004C07004C 07004C07004C07004C07004C07004907 00490700490700490700490700490700 49070049070049070049070049070049 07004907004907004907004907004907 00490700490700490700490700490700 49070049070046070046070046070046 07004607004607004607004607004607 00460700460700000000480700480700 48070048070048070048070048070048 07004807004807004807004807004807 00480700480700480700480700480700 48070048070048070048070048070048 07004807004807004807004807004807 00480700480700480700480700480700 4807004807004A07004A07004A07004A 07004A07004A07004A07004A07004A07 004A07004A0700000000490700490700 49070049070049070049070049070049 07004907004907004907000000004607 00460700460700460700460700460700 46070046070046070046070046070046 07004607004607004607004607004607 00460700460700460700460700460700 46070046070046070046070046070046 07004607004607004607004607004607 00460700460700000000480700480700 48070048070048070048070048070048 07004807004807004807004807004807 00480700480700480700480700480700 48070048070048070048070048070048 07004807004807004807004807004807 00480700480700480700480700480700