'________________________________________________
'
' 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