'________________________________________________
'
' M I D I T O O L S - S P 4 C E B A R
'________________________________________________
SANS=0
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
X = 48
Y = 16
SPRITE 0, X + 8, Y + 49, 128
SPRITE 1, X + 32, Y + 49, 131
SPRITE 2, X + 12, Y, 64
SPRITE 3, X, Y + 25, 134
SPRITE 4, X + 32, Y + 25, 138
SPRITE 0 SIZE 2
SPRITE 1 SIZE 2
SPRITE 2 SIZE 3
SPRITE 3 SIZE 3
SPRITE 4 SIZE 3
'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
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
K$="L"
F=5
O$="P"
END IF
'B A S I C F I L E I N F O A N D H E A D E R
S=SIZE(F)
COPY ROM(F),S TO $A000
ADDR_END=$A000+S
'R E A D H E A D E R
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
'I N D E X T H E F I L E
REPEAT
CALL RAM_PEEK4(I)
CALL DETERMINE_TYPE
WAIT 1
UNTIL I=ADDR_END
INDEX(TN)=ADDR_END
TRACKS=TN-1
'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
ADD I,4
CALL DETERMINE_SIZE
ELSE IF V2=114 AND V3=107 THEN
TYPE=2
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
CALL RAM_PEEK4(I)
CSIZE=2^24*V0+2^16*V1+2^8*V2+V3
ADD I,4
I=I+CSIZE
END SUB
'DISPLAY STORED INDEX VALUES
FOR I=0 TO 15
V=INDEX(I)
NEXT I
'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
SUB PLAY_(V,N,O)
A=$FF40+12*V
POKEW A,O+16*16.35*2^((N-1)/12)
POKE A+2,PEEK(A+2) OR %11000000
END SUB
'P L A Y M I D I M U L T I T R A C K
'MULTITRACKPLAYER:
T_ZERO=TIMER
FOR J=0 TO TRACKS
I=INDEX(J)+8
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
NEXT J
TIME=0
J=0
I=INDEX(J)+8
'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
DO
SANS = SANS +1
IF SANS < 60 THEN
SPRITE 2, X + 12, Y, 192
ELSE IF SANS < 120 THEN
SPRITE 2, X + 12, Y, 192+4
ELSE IF SANS < 180 THEN
SPRITE 2, X + 12, Y, 192+8
ELSE
SPRITE 2, X + 12, Y, 192+12
END IF
SOONEST=-1
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
'NEW TIME VALUE
SOONEST=T_ZERO+TRACKD(I,2)\DIV
J=I
END IF
NEXT I
IF SOONEST=-1 THEN EXIT
I=TRACKD(J,1)
'NEW TIME GENERATOR: IT'S SHARP AND ACCURATE
TI=TRACKD(J,2)\DIV+T_ZERO-TIMER
IF TI>0 THEN WAIT TI
BG FILL 0,5 TO 19,10 CHAR 0
BG TINT 0,12 TO 19,15 PAL 0
CALL STATUS(I,J,ROT)
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
STOP
'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
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 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)
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 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,
CALL PLAY_(VOI,PITCH,0)
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
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
CALL PLAY_(VOI,PITCH,0)
'CALL PLAYORCLIP
END SUB
SUB PLAYORCLIP
'PLAY OR CLIP
IF PITCH>0 AND PITCH<97 THEN
CALL PLAY_(VOI,PITCH,0)
ELSE IF PITCH<1 THEN
CALL PLAY_(VOI,PITCH AND 12,0)
'PRINT "PITCH TOO LOW"
ELSE
CALL PLAY_(VOI,84+PITCH AND 12,0)
'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
#1:MAIN PALETTES
003F0F3000383400003C0C00003F3C00
003F2A15003F2A15003F2A15003F2A15
#2:MAIN CHARACTERS
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000001070F1F3F0000000000000000
00003FFFFFFFFFFF0000000000000000
0000FCFFFFFFFFFF0000000000000000
00000080E0F0F8FC0000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
3F7F7F7C706060600000000000000000
FFFFFF0F070707070000000000000000
FFFFFFF0E0E0E0E00000000000000200
FCFEFE3E0E0606060000000000008000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
303C1F1F3D3C313D0000000000000000
0E0EDC3CFCFF3F400000000000000000
70703B3C3FFFFE010000000000000000
0C3CF8F8BC9C0C3C0000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
1E1F0F07010000000000000000000000
7636C6F0FF3F00000000000000000000
EDECE907FFFC00000000000000000000
78F8F0E0800000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000020404040000000000000000
000000006060C0C00000000000000000
00000000000008140000000000000000
0000000C0C0C0C0C0000000000000000
00000010100808080000000000000000
00000000000000000000000000000000
00000000000000010000000000000000
00387C7E8F0100000000000000000000
0000000080C0E0380000000000000000
00000000000082FE0000000000000000
000000000001070F0000000000000000
1C3E78F2E1C180080000000000000000
000000000080C0400000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
040409090909090F0000000000000000
C0C08080808080800000000000000000
14141232222222220000000000000000
0E0E0E0E060606070000000000000000
080404040404043C0000000000000000
00000000000000000000000000000000
02040808101030300000000000000000
08080808080D0E080000000000000000
1E1312121EF2090B0000000000000000
7C3D00787D7D7D7D0000000000000000
F0E0A0A0E0A127E80000000000000000
1010103070D010180000000000000000
203018080C0C04040000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
0000001E3F7F7F7F0000000000000000
7F000078B8D8C0EC0000000000000000
C1000000000000000000000000000000
FF00101F3F3F007E0000000000000000
C00000C79F7FFFFF0000000000000000
00000000C0E0E0C00000000000000000
30180C06030100000000000000000000
1010101090909C3E0000000000000000
0D090B05050507070000000000000000
7D7D7D7D7D01FFC00000000000000000
2828D0506040C0FF0000000000000000
0808080808183BF30000000000000000
04040C18306080000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
0F000000000000000000000000000000
F8000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
30000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000001070F1F3F0000000000000000
00003FFFFFFFFFFF0000000000000000
0000FCFFFFFFFFFF0000000000000000
00000080E0F0F8FC0000000000000000
00000001070F1F3F0000000000000000
00003FFFFFFFFFFF0000000000000000
0000FCFFFFFFFFFF0000000000000000
00000080E0F0F8FC0000000000000000
00000001070F1F3F0000000000000000
00003FFFFFFFFFFF0000000000000000
0000FCFFFFFFFFFF0000000000000000
00000080E0F0F8FC0000000000000000
00000001070F1F3F0000000000000000
00003FFFFFFFFFFF0000000000000000
0000FCFFFFFFFFFF0000000000000000
00000080E0F0F8FC0000000000000000
3F7F7F7C706060600000000000000000
FFFFFF0F0707C7C70000000000000000
FFFFFFF0E0E0E3E30000000000000000
FCFEFE3E0E0606060000000000000000
3F7F7F7C706063630000000000000000
FFFFFF0F070707070000000000000000
FFFFFFF0E0E0E6E60000000000000000
FCFEFE3E0E0606060000000000000000
3F7F7F7F7F7F7F6F0000000000000000
FFFFFFFFFFF7F7E70000000000000000
FFFFFFFFFFEFEFE70000000000000000
FCFEFEFEFEFEFEF60000000000000000
3F7F7F7C706060600000000000000000
FFFFFF0F070707070000000000000000
FFFFFFF0E0E0E0E00000000003070E07
FCFEFE3E0E0606060000000080C0E0C0
303C1F1F3D3C313D0000000000000000
0E0EDC3CFCFF3F400000000000000000
70703B3C3FFFFE010000000000000000
0C3CF8F8BC9C0C3C0000000000000000
203F1F1F3D3C313D0000000000000000
06EEDC3CFCFF3F400000000000000000
60773B3C3FFFFE010000000000000000
04FCF8F8BC9C0C3C0000000000000000
303C1F1F3D3C313D0000000000000000
0E0EDC3CFCFF3F400000000000000000
70703B3C3FFFFE010000000000000000
0C3CF8F8BC9C0C3C0000000000000000
303C1F1F3D3C313D0000000000000000
0E0EDC3CFCFF3F400000000000000000
70703B3C3FFFFE010300000000000000
0C3CF8F8BC9C0C3C8000000000000000
1E1F0F07010000000000000000000000
7636C6F0FF3F00000000000000000000
EDECE907FFFC00000000000000000000
78F8F0E0800000000000000000000000
1E1F0F07010000000000000000000000
7636C6F0FF3F00000000000000000000
EDECE907FFFC00000000000000000000
78F8F0E0800000000000000000000000
1E1F0F07010000000000000000000000
7636C6F0FF3F00000000000000000000
EDECE907FFFC00000000000000000000
78F8F0E0800000000000000000000000
1E1F0F07010000000000000000000000
7636C6F0FF3F00000000000000000000
EDECE907FFFC00000000000000000000
78F8F0E0800000000000000000000000
#5:MIDI FILE
4D546864000000060001000500604D54
726B0000002D00FF030B4D6567616C6F
76616E696100FF0208546F627920466F
7800FF58040402180800FF5902FF0100
FF2F004D54726B0000000B00FF510303
FB0600FF2F004D54726B000026B900B9
0A4000B9076900E9004000B9650000B9
640000B9060C00C90000B95B1300B940
00AD0099371F30893740309937303089
37403099374130893740309937523089
37403099395400992E31009924523089
244000892E4000893940309928520099
2E3130892E400089284030992E310099
24523089244000892E40309928510099
2E313089284000892E40009924513089
244000992E3130892E40009924513089
24400099285100992E3130892E400089
2840009924503089244000992E310099
24503089244000892E40309928500099
245000992E3130892E40008924400089
284030992E3100992452308924400089
2E403099285200992E3130892E400089
284030992E3100992452308924400089
2E4030992E310099285130892E400089
2840009924513089244000992E313089
2E40009924513089244000992E310099
28513089284000892E40009924503089
244000992E3100992450308924400089
2E4030992E3100992450009928503089
28400089244000892E4030992E310099
24523089244000892E4030992E310099
28523089284000892E4030992E310099
24523089244000892E4030992E310099
285130892E4000892840009924513089
244000992E3130892E40009924513089
244000992E3100992851308928400089
2E40009924503089244000992E310099
24503089244000892E4030992E310099
24500099285030892840008924400089
2E4030992E3100992452308924400089
2E4030992E3100992852308928400089
2E4030992E3100992452308924400089
2E40009928513089284000992E313089
2E400099245100992851308928400089
244000992E3130892E40009924513089
24400099285100992E3130892E400089
2840009924503089244000992E310099
2450009928513089284000892E400089
2440309928500099245000992E313089
2E400089244000892840309939520099
2E31009924523089244000892E400089
39403099285200992E3130892E400089
284030992E3100992452308924400089
2E403099285100992E31308928400089
2E40009924513089244000992E313089
2E400099245130892440009928510099
2E3130892E4000892840009924503089
244000992E3100992450308924400089
2E40309928500099245000992E313089
2E40008924400089284030992E310099
24523089244000892E40309928520099
2E3130892E400089284030992E310099
24523089244000892E4030992E310099
285130892E4000892840009924513089
244000992E3130892E40009924513089
244000992E3100992851308928400089
2E40009924503089244000992E310099
24503089244000892E4030992E310099
24500099285030892840008924400089
2E4030992E3100992452308924400089
2E403099285200992E3130892E400089
284030992E3100992452308924400089
2E403099285100992E31308928400089
2E40009924513089244000992E313089
2E400099245130892440009928510099
2E3130892E4000892840009924503089
244000992E3100992450308924400089
2E40309928500099245000992E313089
2E40008924400089284030992E310099
24523089244000892E40309928520099
2E3130892E400089284030992E310099
24523089244000892E40009928513089
284000992E3130892E40009924510099
2851308928400089244000992E313089
2E40009924513089244000992E310099
28513089284000892E40009924503089
244000992E3100992450009928513089
284000892E400089244030992E310099
24500099285030892840008924400089
2E4030992C3F00993952009924523089
24400089394000892C4000992C3F3089
2C40009928523089284000992C3F3089
2C4000992C3F00992452308924400089
2C4000992C3F30892C40009928513089
2840009924513089244000992C3F3089
2C400099245100992C3F30892C400089
2440009928513089284000992C3F0099
24503089244000892C4000992C3F0099
24503089244000892C4000992C3F3089
2C400099285000992450308924400089
28403099245200992C3F30892C400089
244000992C3F30892C40009928523089
284000992C3F30892C40009924520099
2C3F30892C400089244000992C3F3089
2C400099285130892840009924513089
244000992C3F30892C40009924510099
2C3F30892C4000892440009928513089
284000992C3F00992450308924400089
2C4000992C3F00992450308924400089
2C4000992C3F30892C40009924500099
2850308928400089244030992C3F0099
24523089244000892C4000992C3F3089
2C40009928523089284000992C3F3089
2C4000992C3F00992452308924400089
2C4000992C3F30892C40009928513089
2840009924513089244000992C3F3089
2C4000992C3F00992451308924400089
2C400099285130892840009924500099
2C3F30892C400089244000992C3F0099
24503089244000892C4000992C3F3089
2C400099285000992450308924400089
284030992C3F00992452308924400089
2C4000992C3F30892C40009928523089
284000992C3F30892C4000992C3F0099
24523089244000892C4000992C3F0099
28513089284000892C40309924510099
2851308928400089244000992C3F3089
2C400099395200992C3F009924513089
244000892C4000893940009928513089
28400099245000993153308931400089
244000992C3F00992851009924503089
24400089284000892C40009939520099
2C3F30892C4000992850009924500099
2C3F30892C4000893940008924400089
28403099395200992E31009924523089
244000892E400089394030992E310099
28523089284000892E4030992E310099
24523089244000892E4030992E310099
285130892E4000892840009924513089
244000992E3130892E40009924513089
244000992E3100992851308928400089
2E40009924503089244000992E310099
24503089244000892E4030992E310099
24500099285030892840008924400089
2E4030992E3100992452308924400089
2E4030992E3100992852308928400089
2E4030992E3100992452308924400089
2E403099285100992E31308928400089
2E40009924513089244000992E313089
2E400099245130892440009928510099
2E3130892E4000892840009924503089
244000992E3100992450308924400089
2E40309928500099245000992E313089
2E40008924400089284030992E310099
24523089244000892E4030992E310099
28523089284000892E4030992E310099
24523089244000892E4030992E310099
28513089284000892E40009924513089
244000992E3130892E40009924513089
244000992E3100992851308928400089
2E40009924503089244000992E310099
24503089244000892E4030992E310099
24500099285030892840008924400089
2E4030992E3100992452308924400089
2E4030992E3100992852308928400089
2E4030992E3100992452308924400089
2E40009928513089284000992E313089
2E400099245100992851308928400089
244000992E3130892E40009924510099
39523089394000892440009928510099
2E3130892E4000892840009931530099
2450308924400089314000992E310099
24500099285130892840008924400089
2E400099395230992850009924500099
2E313089394000892E40008924400089
28403099395200992E31009924520099
3952308939400089244000892E400089
394030992E3100992852308928400089
2E4030992E3100992452308924400089
2E4030992E310099285130892E400089
2840009924513089244000992E313089
2E40009924513089244000992E310099
28513089284000892E40009924503089
244000992E3100992450308924400089
2E4030992E3100992450009928503089
28400089244000892E4030992E310099
24523089244000892E4030992E310099
28523089284000892E4030992E310099
24523089244000892E40309928510099
2E313089284000892E40009924513089
244000992E3130892E40009924513089
24400099285100992E3130892E400089
2840009924503089244000992E310099
24503089244000892E40309928500099
245000992E3130892E40008924400089
284030992E3100992452308924400089
2E4030992E3100992852308928400089
2E4030992E3100992452308924400089
2E4030992E3100992851308928400089
2E40009924513089244000992E313089
2E40009924513089244000992E310099
28513089284000892E40009924503089
244000992E3100992450308924400089
2E4030992E3100992450009928503089
28400089244000892E4030992E310099
24523089244000892E4030992E310099
28523089284000892E4030992E310099
24523089244000892E40009928513089
284000992E3130892E40009924510099
2851308928400089244000992E313089
2E400099245100993952308939400089
24400099285100992E3130892E400089
28400099315300992450009928513089
2840008924400089314000992E310099
24503089244000892E40009928500099
39523089284000992850009924500099
2E313089394000892E40008924400089
2840309939520099395200992E310099
24520099395230893940008924400089
2E40008939400089394030992E310099
28523089284000892E40309924520099
2E3130892E4000892440309928510099
2E3130892E4000892840009924513089
244000992E3130892E40009924513089
24400099285100992E3130892E400089
28400099245030892440009924500099
2E3130892E400089244030992E310099
24500099285030892840008924400089
2E4030992E3100992452308924400089
2E4030992E3100992852308928400089
2E403099245200992E3130892E400089
244030992E310099285130892E400089
2840009924513089244000992E313089
2E40009924513089244000992E310099
28513089284000892E40009924503089
24400099245000992E3130892E400089
2440309928500099245000992E313089
2E40008924400089284030992E310099
24523089244000892E4030992E310099
28523089284000892E40309924520099
2E3130892E4000892440309928510099
2E313089284000892E40009924513089
244000992E3130892E40009924513089
24400099285100992E3130892E400089
28400099245030892440009924500099
2E3130892E4000892440309928500099
245000992E3130892E40008924400089
284030992E3100992452308924400089
2E4030992E3100992852308928400089
2E403099245200992E3130892E400089
2440009928513089284000992E313089
2E400099285100992451308924400089
284000992E3130892E40009939520099
2451308924400089394000992E310099
28513089284000892E40009928510099
24500099315330893140008924400089
28400099245000992E3130892E400089
24400099395200992850308928400099
28500099245000992E3130892E400089
39400089244000892840309939520099
2E310099245200993952009939523089
3940008939400089244000892E400089
394030992E3100992852308928400089
2E403099245200992E3130892E400089
24403099285100992E31308928400089
2E40009924513089244000992E313089
2E400099245130892440009928510099
2E3130892E4000892840009924503089
24400099245000992E3130892E400089
244030992E3100992450009928503089
28400089244000892E4030992E310099
24523089244000892E4030992E310099
28523089284000892E40309924520099
2E3130892E400089244030992E310099
285130892E4000892840009924513089
244000992E3130892E40009924513089
244000992E3100992851308928400089
2E400099245030892440009924500099
2E3130892E4000892440309928500099
245000992E3130892E40008924400089
284030992E3100992452308924400089
2E4030992E3100992852308928400089
2E403099245200992E3130892E400089
24403099285100992E3130892E400089
2840009924513089244000992E313089
2E400099245130892440009928510099
2E3130892E4000892840009924503089
24400099245000992E3130892E400089
2440309928500099245000992E313089
2E40008924400089284030992E310099
24523089244000892E4030992E310099
28523089284000892E40309924520099
2E3130892E4000892440009928513089
284000992E3130892E40009928510099
2451308924400089284000992E313089
2E400099395200992451308924400089
394000992E3100992851308928400089
2E400099285100992450009931533089
31400089244000892840009924500099
2E3130892E4000892440009939520099
28503089284000992850009924500099
2E3130892E4000893940008924400089
2840309939520099395200992E310099
24520099395230893940008924400089
2E400089394000893940309928520099
2E3130892E4000892840309924520099
2E3130892E400089244030992E310099
28513089284000892E40009924513089
244000992E3130892E40009924513089
244000992E3100992851308928400089
2E400099245030892440009924500099
2E3130892E4000892440309928500099
245000992E3130892E40008924400089
284030992E3100992452308924400089
2E403099285200992E3130892E400089
28403099245200992E3130892E400089
24403099285100992E31308928400089
2E40009924513089244000992E313089
2E400099245130892440009928510099
2E3130892E4000892840009924503089
24400099245000992E3130892E400089
244030992E3100992450009928503089
28400089244000892E4030992E310099
24523089244000892E40309928520099
2E3130892E4000892840309924520099
2E3130892E400089244030992E310099
285130892E4000892840009924513089
244000992E3130892E40009924513089
244000992E3100992851308928400089
2E400099245030892440009924500099
2E3130892E400089244030992E310099
24500099285030892840008924400089
2E4030992E3100992452308924400089
2E403099285200992E3130892E400089
28403099245200992E3130892E400089
2440009928513089284000992E313089
2E400099285100992451308924400089
284000992E3130892E40009939520099
24513089244000893940009928510099
2E3130892E4000892840009928510099
24500099315230893140008924400089
284000992E3100992450308924400089
2E400099395200992850308928400099
2E310099285000992450308924400089
39400089284000892E4030992C310099
24500099395230893940008924400089
2C4030992C3130892C4030992C310099
28503089284000892C4030992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C310099
24500099285030892840008924400089
2C4030992C3130892C40009928503089
284000992C3100992450308924400089
2C4030992C3130892C4030992C310099
28503089284000892C4030992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C310099
2450009928503089284000892C400089
244030992C3130892C40009928503089
284000992C3100992450308924400089
2C4030992C3130892C4030992C310099
28503089284000892C4030992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C310099
2450009928503089284000892C400089
244030992C3130892C40009928503089
284000992C3100992450308924400089
2C4030992C3130892C4030992C310099
28503089284000892C4030992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C310099
2450009928503089284000892C400089
244030992C3130892C40009928503089
284000992C3100992450308924400089
2C4030992C3130892C4030992C310099
28503089284000892C4030992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C310099
24500099285030892840008924400089
2C4030992C3130892C40009928503089
284000992C3100992450308924400089
2C4030992C3130892C4030992C310099
28503089284000892C4030992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C310099
2450009928503089284000892C400089
244030992C3130892C40009928503089
284000992C3100992450308924400089
2C4030992C3130892C40309928500099
2C3130892C400089284030992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C313089
2C400099245030892440009928500099
245000992C3130892C40008928400089
244030992C3130892C40009928503089
284000992C3100992450308924400089
2C4030992C3130892C40309928500099
2C3130892C400089284030992C313089
2C40009924503089244000992C313089
2C40009924503089244000992C313089
2C400099245030892440009928500099
245000992C3130892C40008928400089
244030992C3130892C40009928503089
28400099245000992C31009937523089
374000892C400089244030992C313089
2C403099285000992C3130892C400089
284030992C3130892C40009924503089
244000992C3130892C40009924503089
244000992C3130892C40009924503089
2440009928500099245000992C313089
2C40008928400089244030992C313089
2C400099285030892840009924500099
2C3130892C400089244030992C313089
2C403099285000992C3130892C400089
284030992C3130892C40009924503089
244000992C3130892C40009924503089
244000992C3130892C40009924503089
2440009928500099245000992C313089
2C40008928400089244030992C313089
2C40009928503089284000992C310099
24503089244000892C4030992C313089
2C4030992C3100992850308928400089
2C4030992C3130892C40009924503089
244000992C3130892C40009924503089
244000992C3130892C40009924503089
2440009928500099245000992C313089
2C40008928400089244030992C313089
2C400099285030892840009924500099
2C3130892C400089244030992C313089
2C403099285000992C3130892C400089
284030992C3130892C40009924503089
244000992C3130892C40009924503089
244000992C3130892C40009924503089
2440009928500099245000992C313089
2C40008928400089244030992C313089
2C400099285030892840009924500099
2C3130892C400089244030992C313089
2C403099285000992C3130892C400089
284030992C3130892C40009924503089
244000992C3130892C40009924503089
244000992C3130892C40009924503089
2440009928500099245000992C313089
2C40008928400089244030992C313089
2C400099285030892840009924500099
2C3130892C400089244030992C313089
2C403099285000992C3130892C400089
284030992C3130892C40009924503089
244000992C3130892C40009924503089
244000992C3130892C40009924503089
2440009928500099245000992C313089
2C40008928400089244030992C313089
2C400099285030892840893099395230
89394030993151308931403099395260
8939403099395200992E310099245230
89244000892E40008939403099285200
992E3130892E400089284030992E3100
9924523089244000892E403099285100
992E313089284000892E400099245130
89244000992E3130892E400099245130
8924400099285100992E3130892E4000
892840009924503089244000992E3100
9924503089244000892E403099285000
99245000992E3130892E400089244000
89284030992E31009924523089244000
892E403099285200992E3130892E4000
89284030992E31009924523089244000
892E4030992E310099285130892E4000
892840009924513089244000992E3130
892E40009924513089244000992E3100
9928513089284000892E400099245030
89244000992E31009924503089244000
892E4030992E31009924500099285030
8928400089244000892E4030992E3100
9924523089244000892E403099285200
992E3130892E400089284030992E3100
9924523089244000892E403099285100
992E313089284000892E400099245130
89244000992E3130892E400099245130
8924400099285100992E3130892E4000
892840009924503089244000992E3100
9924503089244000892E403099285000
99245000992E3130892E400089244000
89284030992E31009924523089244000
892E403099285200992E3130892E4000
89284030992E31009924523089244000
892E40009928513089284000992E3130
892E4000992451009928513089284000
89244000992E3130892E400099395200
992451308924400089394000992E3100
9928513089284000892E400099315100
992450308924400089314000992E3100
99245000992851308928400089244000
892E400099395230992E310099245000
99285030893940008928400089244000
892E403099395200992E310099245200
993952308939400089244000892E4000
8939403099285200992E3130892E4000
89284030992E31009924523089244000
892E403099285100992E313089284000
892E40009924513089244000992E3130
892E4000992451308924400099285100
992E3130892E40008928400099245030
89244000992E31009924503089244000
892E40309928500099245000992E3130
892E40008924400089284030992E3100
9924523089244000892E403099285200
992E3130892E400089284030992E3100
9924523089244000892E4030992E3100
99285130892E40008928400099245130
89244000992E3130892E400099245130
89244000992E31009928513089284000
892E40009924503089244000992E3100
9924503089244000892E4030992E3100
99245000992850308928400089244000
892E4030992E31009924523089244000
892E403099285200992E3130892E4000
89284030992E31009924523089244000
892E403099285100992E313089284000
892E40009924513089244000992E3130
892E4000992451308924400099285100
992E3130892E40008928400099245030
89244000992E31009924503089244000
892E40309928500099245000992E3130
892E40008924400089284030992E3100
9924523089244000892E403099285200
992E3130892E400089284030992E3100
9924523089244000892E400099285130
89284000992E3130892E400099245100
992851308928400089244000992E3130
892E4000993952009924513089244000
89394000992E31009928513089284000
892E4000993151009924500099285130
892840008924400089314000992E3100
9924503089244000892E400099395200
9928503089284000992E310099245000
99285030892840008939400089244000
892E403099395200992E310099245230
89244000892E400089394030992E3100
9928523089284000892E4030992E3100
9924523089244000892E4030992E3100
99285130892E40008928400099245130
89244000992E3130892E400099245130
89244000992E31009928513089284000
892E40009924503089244000992E3100
9924503089244000892E4030992E3100
99245000992850308928400089244000
892E4030992E31009924523089244000
892E4030992E31009928523089284000
892E4030992E31009924523089244000
892E403099285100992E313089284000
892E40009924513089244000992E3130
892E4000992451308924400099285100
992E3130892E40008928400099245030
89244000992E31009924503089244000
892E40309928500099245000992E3130
892E40008924400089284030992E3100
9924523089244000892E4030992E3100
9928523089284000892E4030992E3100
9924523089244000892E4030992E3100
99285130892E40008928400099245130
89244000992E3130892E400099245130
89244000992E31009928513089284000
892E40009924503089244000992E3100
9924503089244000892E4030992E3100
99245000992850308928400089244000
892E4030992E31009924523089244000
892E4030992E31009928523089284000
892E4030992E31009924523089244000
892E40009928513089284000992E3130
892E4000992451009928513089284000
89244000992E3130892E400099245100
99395230893940008924400099285100
992E3130892E40008928400099315100
992450308924400089314000992E3100
99245000992851308928400089244000
892E4000993952309928500099245000
992E313089394000892E400089244000
8928403099395200992E310099245200
993952308939400089244000892E4000
89394030992E31009928523089284000
892E4030992E31009924523089244000
892E4030992E310099285130892E4000
892840009924513089244000992E3130
892E40009924513089244000992E3100
9928513089284000892E400099245030
89244000992E31009924503089244000
892E4030992E31009924500099285030
8928400089244000892E4030992E3100
9924523089244000892E4030992E3100
9928523089284000892E4030992E3100
9924523089244000892E403099285100
992E313089284000892E400099245130
89244000992E3130892E400099245130
8924400099285100992E3130892E4000
892840009924503089244000992E3100
9924503089244000892E403099285000
99245000992E3130892E400089244000
89284030992E31009924523089244000
892E4030992E31009928523089284000
892E4030992E31009924523089244000
892E4030992E310099285130892E4000
892840009924513089244000992E3130
892E40009924513089244000992E3100
9928513089284000892E400099245030
89244000992E31009924503089244000
892E4030992E31009924500099285030
8928400089244000892E4030992E3100
9924523089244000892E4030992E3100
9928523089284000892E4030992E3100
9924523089244000892E400099285130
89284000992E3130892E400099245100
992851308928400089244000992E3130
892E4000992451009939523089394000
8924400099285100992E3130892E4000
89284000993151009924500099285130
892840008924400089314000992E3100
9924503089244000892E400099285000
99395230892840009928500099245000
992E313089394000892E400089244000
89284000FF2F004D54726B0000194500
B00A3300B0076400E0004000B0650000
B0640000B0060C00C00000B05B3000B0
400000903E5130803E0000903E523080
3E0000904A5260804A00009045528110
80450000904452608044000090435260
804300009041526080410000903E5230
803E0000904152308041000090435230
80430000903C5230803C0000903C5230
803C0000904A5260804A000090455281
10804500009044526080440000904352
60804300009041526080410000903E52
30803E00009041523080410000904352
3080430000903B5230803B0000903B52
30803B0000904A5260804A0000904552
81108045000090445260804400009043
5260804300009041526080410000903E
5230803E000090415230804100009043
523080430000903A5230803A0000903A
5230803A0000904A5260804A00009045
52811080450000904452608044000090
43526080430000904152608041000090
3E5230803E0000904152308041000090
43523080430000903E5230803E000090
3E5230803E0000904A5260804A000090
45528110804500009044526080440000
90435260804300009041526080410000
903E5230803E00009041523080410000
9043523080430000903C5230803C0000
903C5230803C0000904A5260804A0000
90455281108045000090445260804400
00904352608043000090415260804100
00903E5230803E000090415230804100
009043523080430000903B5230803B00
00903B5230803B0000904A5260804A00
00904552811080450000904452608044
00009043526080430000904152608041
0000903E5230803E0000904152308041
00009043523080430000903A5230803A
0000903A5230803A0000904A5260804A
00009045528110804500009044526080
44000090435260804300009041526080
410000903E5230803E00009041523080
4100009043523080430000904A5C3080
4A0000904A5C30804A000090565C6080
56000090515C81108051000090505C60
80500000904F5C60804F0000904D5C60
804D0000904A5C30804A0000904D5C30
804D0000904F5C30804F000090485C30
8048000090485C308048000090565C60
8056000090515C81108051000090505C
6080500000904F5C60804F0000904D5C
60804D0000904A5C30804A0000904D5C
30804D0000904F5C30804F000090475C
308047000090475C308047000090565C
608056000090515C8110805100009050
5C6080500000904F5C60804F0000904D
5C60804D0000904A5C30804A0000904D
5C30804D0000904F5C30804F00009046
5C308046000090465C30804600009056
5C608056000090515C81108051000090
505C6080500000904F5C60804F000090
4D5C60804D0000904A5C30804A000090
4D5C30804D0000904F5C30804F000090
4A5C30804A0000904A5C30804A000090
565C608056000090515C811080510000
90505C6080500000904F5C60804F0000
904D5C60804D0000904A5C30804A0000
904D5C30804D0000904F5C30804F0000
90485C308048000090485C3080480000
90565C608056000090515C8110805100
0090505C6080500000904F5C60804F00
00904D5C60804D0000904A5C30804A00
00904D5C30804D0000904F5C30804F00
0090475C308047000090475C30804700
0090565C608056000090515C81108051
000090505C6080500000904F5C60804F
0000904D5C60804D0000904A5C30804A
0000904D5C30804D0000904F5C30804F
000090465C308046000090465C308046
000090565C608056000090515C811080
51000090505C6080500000904F5C6080
4F0000904D5C60804D0000904A5C3080
4A0000904D5C30804D0000904F5C3080
4F0000904D5C30804D0030904D5C3080
4D0000904D5C60804D0000904D5C6080
4D0000904D5C60804D0000904A5C6080
4A0000904A5C8170804A0000904D5C60
804D0000904D5C30804D0000904D5C60
804D0000904F5C60804F000090505C60
80500000904F5C30804F0000904D5C30
804D0000904A5C30804A0000904D5C30
804D0000904F5C8110804F0000904D5C
30804D0030904D5C30804D0000904D5C
60804D0000904F5C60804F000090505C
608050000090515C608051000090545C
308054003090515C8110805100009056
5C608056000090565C60805600009056
5C308056000090515C30805100009056
5C308056000090545C83308054000090
4D5C0090515C30804D00008051003090
515C00904D5C3080510000804D000090
4D5C0090515C6080510000804D000090
4D5C0090515C6080510000804D000090
4D5C0090515C6080510000804D000090
4A5C00904F5C60804F0000804A000090
4A5C00904F5C8170804F0000804A0000
90515C00904D5C30804D000080510030
90515C00904D5C3080510000804D0000
904D5C0090515C6080510000804D0000
904D5C0090515C6080510000804D0000
904A5C00904F5C60804F0000804A0000
904D5C0090515C6080510000804D0000
90515C0090565C608056000080510000
904D5C0090515C3080510000804D0000
904F5C00904A5C60804F0000804A0000
90565C00904D5C60804D000080560000
90515C00904D5C60804D000080510000
904F5C00904A5C60804A0000804F0000
904D5C00904A5C60804A0000804D0000
904D5C0090545C6080540000804D0000
904D5C00904F5C60804D0000804F0000
904A5C00904D5C60804A0000804D0000
904A5C00904C5C60804C0000804A0000
90465C608046000090485C3080480000
904A5C30804A0030904D5C0090465C60
80460000804D000090485C00904C5C00
90545C833080540000804C0000804800
8300904D5C30804D0000904A5C30804A
0000904D5C30804D0000904F5C30804F
000090505C3080500000904F5C30804F
0000904D5C30804D0000904A5C30804A
000090505C1880500000904F5C18804F
0000904D5C18804D0000904A5C18804A
0000904D5C30804D0030904F5C009048
5C830080480000804F003090505C6080
50000090515C308051000090545C3080
54003090515C308051000090505C3080
500000904F5C30804F0000904D5C3080
4D0000904A5C30804A0000904C5C3080
4C0000904D5C60804D0000904F5C6080
4F000090515C608051000090545C6080
54000090555C0090495C608055000080
49000090505C608050000090505C3080
500000904F5C30804F0000904D5C3080
4D0000904F5C00904B5C8330804B0000
804F000090415C608041000090435C60
8043000090415C0090455C6080450000
80410000904D5C60804D000090485C00
904C5C8140804C00008048000090455C
00904A5C814080450000804A0000904C
5C0090435C814080430000804C000090
455C00904D5C8140804D000080450000
90485C00904F5C8140804F0000804800
0090455C00904C5C814080450000804C
000090515C00904A5C8300804A000080
51000090515C308051000090505C3080
500000904F5C30804F0000904E5C3080
4E0000904D5C30804D0000904C5C3080
4C0000904B5C30804B0000904A5C3080
4A000090495C0090445C825080490000
8044000090465C00904B5C8330804B00
008046008300904D5C30804D0000904A
5C30804A0000904D5C30804D0000904F
5C30804F000090505C3080500000904F
5C30804F0000904D5C30804D0000904A
5C30804A000090505C1880500000904F
5C18804F0000904D5C18804D0000904A
5C18804A0000904D5C30804D0030904F
5C0090485C8300804F00008048003090
505C608050000090515C308051000090
545C308054003090515C308051000090
505C3080500000904F5C30804F000090
4D5C30804D0000904A5C30804A000090
4C5C30804C0000904D5C60804D000090
4F5C60804F000090515C608051000090
545C608054000090555C0090495C6080
4900008055000090505C608050000090
505C3080500000904F5C30804F000090
4D5C30804D0000904F5C00904B5C8330
804B0000804F000090415C6080410000
90435C608043000090415C0090455C60
8045000080410000904D5C60804D0000
90485C00904C5C8140804C0000804800
0090455C00904A5C814080450000804A
0000904C5C0090435C81408043000080
4C000090455C00904D5C8140804D0000
8045000090485C00904F5C8140804F00
008048000090455C00904C5C81408045
0000804C000090515C00904A5C830080
4A00008051000090515C308051000090
505C3080500000904F5C30804F000090
4E5C30804E0000904D5C30804D000090
4C5C30804C0000904B5C30804B000090
4A5C30804A000090495C0090445C8250
804400008049000090465C00904B5C83
3080460000804B0000903A688440803A
00009041688140804100009040688300
80400000903E688300803E0000904168
86008041008600903A688440803A0000
90416881408041000090406883008040
0000903E688300803E0000903E688600
803E008600903E6830803E0000903E68
30803E0000904A6860804A0000904568
81108045000090446860804400009043
6860804300009041686080410000903E
6830803E000090416830804100009043
683080430000903C6830803C0000903C
6830803C0000904A6860804A00009045
68811080450000904468608044000090
43686080430000904168608041000090
3E6830803E0000904168308041000090
43683080430000903B6830803B000090
3B6830803B0000904A6860804A000090
45688110804500009044686080440000
90436860804300009041686080410000
903E6830803E00009041683080410000
9043683080430000903B6830803B0000
903B6830803B0000904A6860804A0000
90456881108045000090446860804400
00904368608043000090416860804100
00903E6830803E000090416830804100
009043683080430000903E6830803E00
00903E6830803E0000904A6860804A00
00904568811080450000904468608044
00009043686080430000904168608041
0000903E6830803E0000904168308041
00009043683080430000903C6830803C
0000903C6830803C0000904A6860804A
00009045688110804500009044686080
44000090436860804300009041686080
410000903E6830803E00009041683080
4100009043683080430060904A680090
4D6848804A0018804D00009045680090
4C6830804C0000804500609044680090
48686080440000804800009043680090
4C6830804C0000804300309041680090
4A686080410000804A0000903C680090
45683080450000803C00009040680090
4868308048000080400000904A680090
41683080410000804A0060904A680090
4D6848804A0018804D0000904C680090
45683080450000804C00609044680090
4868608044000080480000904C680090
43683080430000804C00309041680090
4A686080410000804A00009045680090
3C6830803C0000804500009040680090
48683080480000804000009041680090
4A6830804A0000804100009046550090
41556080460000804100009041570090
46576080460000804100009046570090
41573080410000804600009046570090
41576080410000804600009041570090
46576080460000804100009046570090
41576080410000804600009041570090
46576080460000804100009046570090
41573080410000804600009041570090
46576080410000804600009048570090
43576080430000804800009043570090
48576080480000804300009048570090
43573080430000804800009048570090
43576080430000804800009043570090
48576080480000804300009048570090
43576080430000804800009043570090
48576080480000804300009048570090
43573080430000804800009043570090
4857608043000080480000904A570090
45576080450000804A00009045570090
4A5760804A000080450000904A570090
45573080450000804A0000904A570090
45576080450000804A00009044570090
49576080490000804400009049570090
44576080440000804900009044570090
49576080490000804400009049570090
44573080440000804900009044570090
49576080440000804900009048570090
43576080430000804800009043570090
48576080480000804300009048570090
43573080430000804800009048570090
43576080430000804800009043570090
47576080470000804300009047570090
43576080430000804700009043570090
47576080470000804300009047570090
43573080430000804700009043570090
47576080430000804700009046570090
41576080410000804600009041570090
46576080460000804100009046570090
41573080410000804600009046570090
41576080410000804600009041570090
46576080460000804100009046570090
41576080410000804600009041570090
46576080460000804100009046570090
41573080410000804600009041570090
46576080410000804600009048570090
43576080430000804800009043570090
48576080480000804300009048570090
43573080430000804800009048570090
43576080430000804800009043570090
48576080480000804300009048570090
43576080430000804800009043570090
48576080480000804300009048570090
43573080430000804800009043570090
4857608043000080480000904A570090
45576080450000804A00009045570090
4A5760804A000080450000904A570090
45573080450000804A0000904A570090
45576080450000804A00009045570090
4A5760804A000080450000904A570090
45576080450000804A00009045570090
4A5760804A000080450000904A570090
45573080450000804A00009045570090
4A576080450000804A0000904A560090
45566080450000804A00009045560090
4A5660804A000080450000904A560090
45563080450000804A0000904A560090
45566080450000804A00009045560090
4A5660804A000080450000904A560090
45566080450000804A00009045560090
4A5660804A000080450000904A560090
45563080450000804A00009045560090
4A566080450000804A00009046560090
41566080460000804100009041560090
46566080460000804100009046560090
41563080410000804600009046560090
41566080410000804600009041560090
46566080460000804100009046560090
41566080410000804600009041560090
46566080460000804100009046560090
41563080410000804600009041560090
46566080410000804600009048560090
43566080430000804800009043560090
48566080480000804300009048560090
43563080430000804800009048560090
43566080430000804800009043560090
48566080480000804300009048560090
43566080430000804800009043560090
48566080480000804300009048560090
43563080430000804800009043560090
4856608043000080480000904A560090
45566080450000804A00009045560090
4A5660804A000080450000904A560090
45563080450000804A0000904A560090
45566080450000804A00009044560090
49566080490000804400009049560090
44566080440000804900009044560090
49566080490000804400009049560090
44563080440000804900009044560090
49566080440000804900009048560090
43566080430000804800009043560090
48566080480000804300009048560090
43563080430000804800009048560090
43566080430000804800009043560090
47566080470000804300009047560090
43566080430000804700009043560090
47566080470000804300009047560090
43563080430000804700009043560090
47566080430000804700009046560090
41566080410000804600009041560090
46566080460000804100009046560090
41563080410000804600009046560090
41566080410000804600009041560090
46566080460000804100009046560090
41566080410000804600009041560090
46566080460000804100009046560090
41563080410000804600009041560090
46566080410000804600009048560090
43566080430000804800009043560090
48566080480000804300009048560090
43563080430000804800009048560090
43566080430000804800009043560090
48566080480000804300009048560090
43566080430000804800009043560090
48566080480000804300009048570090
43573080430000804800009043570090
4857608043000080480000903E573080
3E0000903E5730803E0000904A576080
4A000090455781108045000090445760
80440000904357608043000090415760
80410000903E5730803E000090415730
804100009043573080430000903E5730
803E0000903E5730803E0000904A5760
804A0000904557811080450000904457
60804400009043576080430000904157
6080410000903E5730803E0000904157
30804100009043573080430000903A57
30803A0000903A5730803A0000904A57
60804A00009045578110804500009044
57608044000090435760804300009041
576080410000903E5730803E00009041
5730804100009043573080430000903C
5730803C0000903C5730803C0000904A
5760804A000090455781108045000090
44576080440000904357608043000090
41576080410000903E5730803E000090
41573080410000904357308043000090
3E5730803E0000903E5730803E000090
4A5760804A0000904557811080450000
90445760804400009043576080430000
9041576080410000903E5730803E0000
90415730804100009043573080430000
903E5730803E0000903E5730803E0000
904A5760804A00009045588110804500
00904458608044000090435860804300
009041586080410000903E5830803E00
00904158308041000090435830804300
00FF2F004D54726B000024DA00B10A33
00B1076400E1004000B1650000B16400
00B1060C00C10000B15B3000B1400098
00913245608132000091325060813200
0091324C308132000091324C60813200
0091324B608132000091324A60813200
0091324D608132000091324C30813200
0091324F608132000091304A60813000
0091304C608130000091304A30813000
0091304B608130000091304A60813000
00913049608130000091304A60813000
00913046308130000091304B60813000
00912F4B60812F0000912F4960812F00
00912F4D30812F0000912F4D60812F00
00912F4F60812F0000912F4C60812F00
00912F4C60812F0000912F4C30812F00
00912F4C60812F0000912E4960812E00
00912E4C60812E0000912E4A30812E00
00912E4860812E000091304B60813000
0091304E608130000091304A60813000
0091304B308130000091304B60813000
00912652009132526081320000812600
0091324C0091264C6081260000813200
0091324F0091264F3081320000812600
0091264F0091324F6081320000812600
00912649009132496081320000812600
0091324B0091264B6081260000813200
00912649009132496081320000812600
0091264E0091324E3081320000812600
0091264A0091324A6081320000812600
00913049009124496081240000813000
0091304A0091244A6081240000813000
00913050009124503081300000812400
00912450009130506081300000812400
0091304D0091244D6081240000813000
0091244E0091304E6081300000812400
0091304E0091244E6081240000813000
0091244D0091304D3081300000812400
0091304B0091244B6081240000813000
0091234D00912F4D60812F0000812300
0091234D00912F4D60812F0000812300
0091234A00912F4A3081230000812F00
0091234C00912F4C60812F0000812300
0091234900912F4960812F0000812300
0091234D00912F4D60812F0000812300
0091234B00912F4B60812F0000812300
0091234E00912F4E30812F0000812300
0091235000912F5060812F0000812300
0091224D00912E4D60812E0000812200
0091224C00912E4C60812E0000812200
0091224800912E483081220000812E00
0091224C00912E4C60812E0000812200
00912448009130486081240000813000
0091244A0091304A6081300000812400
0091244F0091304F6081300000812400
0091244F0091304F3081300000812400
0091244D0091304D6081300000812400
0091264A0091324A6081320000812600
00912649009132496081320000812600
00912653009132533081260000813200
0091264B0091324B6081320000812600
0091264C0091324C6081320000812600
0091264C0091324C6081320000812600
00912651009132516081320000812600
0091264D0091324D3081320000812600
00912649009132496081320000812600
00912449009130496081300000812400
0091244E0091304E6081300000812400
0091244E0091304E3081240000813000
0091244A0091304A6081300000812400
0091244E0091304E6081300000812400
0091244F0091304F6081300000812400
0091244B0091304B6081300000812400
0091244D0091304D3081300000812400
0091244B0091304B6081300000812400
0091234700912F4760812F0000812300
0091234F00912F4F60812F0000812300
0091234B00912F4B3081230000812F00
00912F4D0091234D6081230000812F00
0091234E00912F4E60812F0000812300
00912F4B0091234B6081230000812F00
0091234900912F4960812F0000812300
00912F4A0091234A3081230000812F00
0091234C00912F4C60812F0000812300
0091224F00912E4F60812E0000812200
0091224B00912E4B60812E0000812200
0091224B00912E4B3081220000812E00
00912E4D0091224D6081220000812E00
00912451009130516081240000813000
0091304B0091244B6081240000813000
0091244F0091304F6081300000812400
0091304F0091244F3081240000813000
00912450009130506081300000812400
00913953009132536081320000813900
0091324D0091394D6081390000813200
0091394A0091324A3081320000813900
00913250009139506081390000813200
00913251009139516081390000813200
0091394C0091324C6081390000813200