diff options
Diffstat (limited to 'engines/sci/sfx/doc/patch001.txt')
-rw-r--r-- | engines/sci/sfx/doc/patch001.txt | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/engines/sci/sfx/doc/patch001.txt b/engines/sci/sfx/doc/patch001.txt new file mode 100644 index 0000000000..0037eea9b4 --- /dev/null +++ b/engines/sci/sfx/doc/patch001.txt @@ -0,0 +1,118 @@ +SCI patch.001 Resource Format Revision 0.1 +Rickard Lind 1999-12-16 + +The patch.001 file for Roland MT-32, MT-100, LAPC-1, CM-32L and CM-64. + +This specification will sometimes look very incomprehensible without some +knowledge concerning the MT-32 MIDI implementation. +Have a look at http://members.xoom.com/_XMCM/TomLewandowski/docs.html + + +1. The header (494 bytes) which is always present. + +Offset Size Type Description +---------------------------------------------------------------------------- + 0x000 2 89 00 First Two Bytes + 0x002 20 ASCII String for MT-32 Display ("*It's Only A Model* ") + 0x016 20 ASCII String for MT-32 Display (" CAMELOT, CAMELOT! ") + 0x02a 20 ASCII String for MT-32 Display ("Ham & Jam & SpamAlot") + 0x03e 2 word MT-32 Master Volume + 0x040 1 Index in Predefined reverb settings at 0x04c (0-10) + 0x041 11 MT-32 SysEx block setting reverb + (last 3 bytes are dummies) + 0x04c 3 Predefined reverb setting #1 (Mode, Time, Level) + : : : + 0x06a 3 Predefined reverb setting #11 + 0x06d 8 MT-32 Patch Memory #1 (see Patch Memory description below) + : : : + 0x1e5 8 MT-32 Patch Memory #48 + 0x1ed 1 n = Number of Timbre Memory (0-64 userdefined instruments) +---------------------------------------------------------------------------- + + + Patch Memory description + + Offset Description + -------------------------------------------------------------------- + 0x00 Timbre Group (0 = Bank A, 1 = Bank B, 2 = Memory, 3 = Rythm) + 0x01 Timbre Number (0 - 63) + 0x02 Key Shift (0-48) [-24 - +24] + 0x03 Fine Tune (0-100) [-50 - +50] + 0x04 Bender Range (0-24) + 0x05 Assign Mode (0 = Poly 1, 1 = Poly 2, 2 = Poly 3, 3 = Poly 4) + 0x06 Reverb Switch (0 = OFF, 1 = ON) + 0x07 Dummy + -------------------------------------------------------------------- + + Mapping MT-32 to GM instruments is done with Timbre Group and + Timbre Number. + + Instrument 0-63: Bank A, 0-63 + Instrument 64-127: Bank B, 0-63 + + +2. The Timbre Memory block (if n > 0), offset relative to 0x1ee + +Offset Size Type Description +------------------------------------------------------------------------------ + 0x000 246 MT-32 Timbre Memory #1 (see Timbre Memory description below) + : : : + 0x??? 246 MT-32 Timbre Memory #n +------------------------------------------------------------------------------ + + + Timbre Memory description + + Offset Size Description + ----------------------------------------------------------------------- + 0x00 10 Timbre Name (ASCII String) + 0x0a See http://members.xoom.com/_XMCM/TomLewandowski/lapc1.txt + ----------------------------------------------------------------------- + + +3. Second MT-32 Patch Memory Block, offset realtive to 0x1ee + n * 246 + +Offset Size Description +--------------------------------------------------- + 0x000 2 0xab 0xcd (if this this is not present + there is no second block) + 0x002 8 MT-32 Patch Memory #49 + : : : + 0x17a 8 MT-32 Patch Memory #96 +--------------------------------------------------- + + +4. Block for setting up Patch Temporary Area (rythm part) and + System Area - Partial Reserve, offset relative to 0x370 + n * 246 + +Offset Size Description +--------------------------------------------------- + 0x000 2 0xdc 0xba (if this this is not present + this block is non existent) + 0x002 4 Rythm Setup for Key #24 (see below) + : : : + 0x0fe 4 Rythm Setup for Key #87 + 0x102 9 System Area - Partial Reserve +--------------------------------------------------- + + Rythm Setup description + See http://members.xoom.com/_XMCM/TomLewandowski/lapc1.txt + + +TODO: + + * Clearly describe which parts are interesting for a quick and dirty + GeneralMidi/patch.001/FreeSCI implementation + + * Describe how the Sierra MT-32 driver uses patch.001 + + * Make this readable to someone who has not been reading reference + manuals since early childhood + + * SGML + + +Revision history + + Revision 0.1 - 1999-12-16 + - First pre-release of the specification |