First Rate Music Hall file format
This page was last modified 21:31, 1 June 2018 by Mars2000you.
       Ext.name:   *.PCK (User file!)
       Length:	   16kRam
       Type:	   Data
       Contains:   Music settings, instruments, 2/3/4 songs

       > Case: Memory offsets
       Offset	   Length  Description
       -----------+-------+------------------------------------------------
       $0000	   $0E00   Song 1 ($0200 bytes per channel, 7 channels)
       $0E00	   $0E00   Song 2
       $1C00	   $0E00   Song 3
       $2A00	   $0E00   Song 4
       $3800	   $0400   Instr (OPLL name(8) + OPLL data(8), 64 instr.)
       $3C00	   $000F   Song 1 name
       $3C10	   $000F   Song 2 name
       $3C20	   $000F   Song 3 name
       $3C30	   $000F   Song 4 name
       $3C40	   $0030   Drum data (OPLL (6), 8 patterns)
       $3C70	    --	   Work Area (Frequency tables etc.)

       > Case: Music channel codes
       bit description
       ---+---------------------------------------------------------------
       0-2 Note    (0=A, 1=B, 2=C etc., 7=OFF)
       3   halfnote (C# etc., 1=Yes)
       4   Note length (point) (1=length x 1.5)
       5   Offnote ID (0= note cut, 1= note not cut)
       6   Note folowed by length (1=Yes)
       7   Special event (1=yes)
	   $80	   Volume (LSB is volume)
	   $90	   Instrument change (LSB=0, then next byte is Original-
				   instrument else LSB is FM instrument)
	   $A0	   Octave (LSB is octave 0-7, 8= 1up, 9= 1down)
	   $B0	   Loop START (LSB is total loops-1)
	   $C0	   Note Length (next byte is length)
	   $D0	   Continue loop START
	   $E0	   Loop NEXT (see $B0)
	   $F0		LSB=0	Continue loop NEXT
			LSB=1	Volume 1 up
			LSB=2	Volume 2 down
			LSB=3	Sustain ON
			LSB=4	Sustain OFF
			LSB=5	Music END
			LSB=6	Tempo (next byte is value)
			LSB=7	Wait ON (W)
			LSB=8	Wait OFF (w)
			LSB=15	Empty (space)

       > Case: Rhythm channel codes
       bit description
       ---+---------------------------------------------------------------
       0   HiHat   (1=ON)
       1   Cymbal  (1=ON)
       2   Tom	   (1=ON)
       3   Snare   (1=ON)
       4   Bass    (1=ON)
       0-4 OFF	   (if b0-b4= 0 !)
       5   <not used>
       6   Drum followed by length (1=Yes, next byte is value)
       7   Special event (1=yes)
	   $80	   Volume (LSB is volume)
	   $90	   Instrument change (LSB= pattern nr)
	   $B0	   Loop START (LSB is total loops-1)
	   $C0	   Note Length (next byte is length)
	   $D0	   Continue loop START
	   $E0	   Loop NEXT (see $B0)
	   $F0		LSB=0	Continue loop NEXT
			LSB=1	Volume 1 up
			LSB=2	Volume 2 down
			LSB=5	Music END
			LSB=6	Tempo (next byte is value)
			LSB=7	Wait ON (W)
			LSB=8	Wait OFF (w)
			LSB=15	Empty (space)