SCI/GM Mapping

From ScummVM :: Wiki
< SCI
Revision as of 15:52, 9 November 2010 by Md5 (talk | contribs) (Added SCI1 games with and without GM support)
Jump to navigation Jump to search

MT-32 to GM mapping in SCI0-SCI1 games

SCI0 - SCI1 games didn't support GM music (it wasn't a standard back then), apart from some late SCI1 games, for which Sierra released aftermarket GM patches. Sierra's after market GM patches add GM support to the following SCI1 games:

  • Leisure Suit Larry 1
  • Leisure Suit Larry 5
  • Hoyle 3
  • Space Quest 1 (VGA)
  • Space Quest 4
  • Eco Quest 1
  • Conquests of the Longbow (Robin Hood)
  • Mixed-Up Fairy Tales

The patch can be downloaded from the Quest studios utilities page

There is no GM support in the following SCI1 games:

  • Castle of Dr. Brain
  • King's Quest V
  • Police Quest III

There are some standard MT-32 instruments, which have been mapped to GM ones. All of the SCI games had custom instruments in their MT-32 music score.

There is a mapping of MT-32 to GM instruments, including custom instruments per game in the SCI engine, taken from FreeSCI. This has been mostly worked on for SCI0-SCI01 in FreeSCI, but it still needs work.

If you want to work on this, here's what to do:

  • Start ScummVM like this:
 scummvm -d0 --debugflags=Sound,OnStartup

this will make ScummVM display the missing MIDI instruments when you start a game, and it will also make it show the console when the game starts

If we take the theme song from PQ3, for example, we can see that instruments (patches) 68, 70, 72 and 82 are all missing, and that percussion 52 is also missing

 * 68 = "B I G Bass"
 * 70 = "Big Orch  "
 * 72 = "Lefty 2   "
 * 82 = "Lead SqrJH"
 * 52 percussion = "IceBreakMS"

The command to use is "map_instrument". It takes 3 parameters: the MT-32 instrument name (with the spaces substituted by underscores, always 10 characters), the GM instrument and the GM percussion (255 = "unmapped")

So, for example, you can set "Lefty 2 " to GM instrument 6 (Harpsichord) with this command:

 map_instrument Lefty_2__ 6 255

Or you can set "IceBreakMS" to GM "Crash Cymbal 1" with this:

 map_instrument IceBreakMS 255 49

The finalized instruments can then be put inside sci/sound/drivers/map-mt32-to-gm.h

If you want the GM instrument/percussion names, they're in sci/sound/drivers/gm_names.h