ScummVM

Background

ScummVM is an interpreter program which allows you to run certain classic graphical point-and-click adventure games, provided you already have their data files. The clever part about this: ScummVM just replaces the executables shipped with the games, allowing you to play them on systems for which they were never designed

The ScummVM core has been authored by

The ScummVM core is licensed under

A summary of the licenses behind RetroArch and its cores can be found here.

Extensions

Content that can be loaded by the ScummVM core have the following file extensions:

RetroArch database(s) that are associated with the ScummVM core:

Features

Frontend-level settings or features that the ScummVM core respects.

Feature Supported
Restart
Saves
States
Rewind
Netplay
Core Options
RetroAchievements
RetroArch Cheats
Native Cheats
Controls
Remapping
Multi-Mouse
Rumble
Sensors
Camera
Location
Subsystem
Softpatching
Disk Control
Username
Language
Crop Overscan
LEDs

Directories

The ScummVM core's library name is 'scummvm'

The ScummVM core saves/loads to/from these directories.

Frontend's Save directory

Frontend's System directory

File Description
scummvm.ini ScummVM Config File

Geometry and timing

Usage

Initial Configuration

Before attempting to run a game with the ScummVM core, certain preparations are required to ensure correct operation:

Enable Enhanced MIDI Emulation

Some games only contain music in the form of MIDI data. By default, ScummVM will emulate MIDI mode using AdLib. Higher quality audio may be achieved for MIDI-enabled games by using FluidSynth MIDI emulation with an appropriate soundfont. This is the recommended mode of operation under RetroArch.

Many games benefit greatly from FluidSynth MIDI emulation. Some particularly notable examples are:

Attention

FluidSynth MIDI emulation slightly increases the CPU requirements of the ScummVM core. On the vast majority of platforms this should not be an issue. If crackling sound is observed on very low power devices, FluidSynth MIDI emulation should be disabled by setting 'GM Device:' to the default "Don't use General MIDI music" option.

Enable MT-32 Emulation (Optional)

Some games which contain MIDI music data also have improved tracks designed for the MT-32 sound module. ScummVM can emulate this device, vastly increasing the audio quality of these games. Enabling MT-32 emulation is therefore highly recommended, but should be considered optional since it requires original MT-32 ROMs which must be provided by the user.

The names and checksums of the two required ROM files are:

Filename md5sum
MT32_PCM.ROM 89e42e386e82e0cacb4a2704a03706ca
MT32_CONTROL.ROM 5626206284b22c2734f3e9efefcd2675

These files must be placed inside the scummvm/extra/ folder within the RetroArch system directory. MT-32 emulation may then be enabled via the main ScummVM user interface as follows:

Some notable examples of games that sound exquisite with MT-32 emulation are:

Experiencing Monkey Island 2 without MT-32 emulation is like listening to Beethoven played on a kazoo.

Attention

MT-32 emulation substantially increases the CPU requirements of the ScummVM core, and this can vary on a per-game basis. On most desktop systems this should not be an issue, but some devices may struggle to maintain full speed with all games. For example, 'Monkey Island 2' and 'Indiana Jones and the Fate of Atlantis' will run on very low power Android chipsets, but 'Simon the Sorcerer' will overwhelm mid-to-high-end mobile CPUs. If crackling sound is observed, the user should either (a) disable MT-32 emulation by setting 'MT-32 Device:' to the default "Don't use Roland MT-32 music" or (b) force the use of the 'FluidSynth' audio device via an internal ScummVM game settings override (this is described in a following section).

This concludes 'Initial Configuration'. The core may be shut down either by pressing the 'Quit' button, or via 'Close Content' from the Quick Menu.

Game Management

Before a game can be run via the ScummVM core, it should first be added to the internal launcher. Failure to do so will prevent game-specific configuration options from being saved (e.g. volume levels, subtitle speed, internal game settings overrides).

Adding a Game to the ScummVM Launcher

The data files for each game must be copied to a uniquely-named directory on local storage (i.e. one directory per game). A list of the specific files required for any particular game may be found on the ScummVM Datafiles page.

A suggested directory layout for 'Flight of the Amazon Queen' is presented as the simplest possible example:

1
2
3
4
└── ROMs/
    └── ScummVM/
        └── Flight of the Amazon Queen (CD DOS)/
            └── queen.1

Once all files are in place, each game may be added as follows:

Attention

Once a game has been registered, it may be run by selecting it in the ScummVM Launcher game list and pressing the 'Start' button. However: Employing the ScummVM Launcher in this manner is not recommended, since it prevents the use of RetroArch per-game configuration overrides, input remaps and shader overrides. The ScummVM Launcher should only be used to add games and change settings.

Running a Game

Running a ScummVM game via the RetroArch frontend requires the addition of an appropriately configured .scummvm file to the game directory. For each game listed in the ScummVM Launcher, the following procedure should be followed:

Again, 'Flight of the Amazon Queen' is presented as a simple example:

1
2
3
4
5
└── ROMs/
    └── ScummVM/
        └── Flight of the Amazon Queen (CD DOS)/
            ├── Flight of the Amazon Queen.scummvm
            └── queen.1

...where Flight of the Amazon Queen.scummvm has the following content:

1
queen

Games can then be launched as follows:

For users who do not wish to create their own .scummvm files, a pre-prepared collection is available in the libretro-database-scummvm repository. Simply download the appropriate file for a particular game and copy it to the game directory.

Attention

When using third-party .scummvm files, it is important to verify that the file contents matches the specific game ID that was submitted when adding the game to the ScummVM Launcher. Do not assume that third-party .scummvm files are automagically 'correct'.

Playlist/Scanning Support

To launch games efficiently via the RetroArch frontend, it is recommended to add them to a playlist. Provided that a .scummvm file is present inside each game directory, RetroArch supports automated scanning/playlist generation for ScummVM content:

All recognised games will be added to a ScummVM.lpl file in the RetroArch playlist directory, and be made available via a new 'ScummVM' tab in the frontend menu.

(Alternatively, each game directory may be scanned in turn - useful if game directories are present in multiple locations)

An example playlist entry for 'Flight of the Amazon Queen' is as follows:

1
2
3
4
5
6
/storage/ROMs/ScummVM/Flight of the Amazon Queen (CD DOS)/Flight of the Amazon Queen.scummvm
Flight of the Amazon Queen
DETECT
DETECT
19C1B1B5|crc
ScummVM.lpl

Attention

Not all games/configurations are present in the current database. If a particular game is not detected, an entry in the ScummVM.lpl playlist file can be added by hand. It should have the format:

/path/to/game_directory/game_name.scummvm game_name DETECT DETECT 0|crc ScummVM.lpl

Additional Configuration Notes

Both ScummVM and RetroArch itself allow a vast number of options to be configured on a per-game basis. Here we present three additional configuration topics that will likely be of relevance for typical users:

Volume Levels

ScummVM games exhibit a spectacular variance in audio volume levels. For comfort, it is almost mandatory to adjust specific volumes on a per-game basis. Fortunately this is trivial:

Provided that the game has been correctly added to the ScummVM Launcher, the adjusted levels will be preserved between play sessions.

Attention

If the game has not been added to the ScummVM Launcher, or if the game ID in the .scummvm file does not match the ScummVM Launcher ID, all settings will be lost when the game is closed.

Manual Music Device Selection

By default, ScummVM will automatically select the most appropriate music playback option for each game (i.e. MT-32 emulation, FluidSynth MIDI emulation or AdLib emulation). In the majority of cases this will yield the best possible sound quality, and no user intervention is required. There are, however, circumstances and games where a manual override is beneficial. This is something that should be determined by the user on a per-game basis, but here are some practical examples:

A per-game music device override may be set as follows:

Aspect Ratio Correction

ScummVM's core provided aspect ratio is 4:3. For most games this is correct, particularly for newer games, and those that targeted the PC as their primary platform. It is widely known that DOS games typically ran at 320x200, with non-square pixels stretched to fill a 4:3 display.

It is not so widely known that a number of popular games targeted the European Amiga market, where (due to various PAL/NTSC considerations) 320x200 content was often shown in a letterboxed rectangle at a display resolution of 320x256. It is sometimes difficult to determine the original intent of the artists, but many of these games were actually made in a quasi-widescreen format. Some notable examples are:

(The full list of affected games should be determined at the user's discretion)

The actual 'correct' aspect ratio in these cases is somewhat fuzzy, but good results are achieved by using the pixel aspect ratio of 16:10.

To demonstrate the issue, here is an example screenshot from Beneath a Steel Sky at the default 4:3 ratio:

Note the distorted fan vents. Here is the same image at a 16:10 ratio:

The fan vents are the correct shape, and the character proportions are more natural.

To automate correct aspect ratio selection for games such as these, a RetroArch configuration override should be used. This can be set up as follows:

1
2
3
└── config/
    └── scummvm/
        └── Flight of the Amazon Queen.cfg
1
aspect_ratio_index = "2"

Now whenever the game is launched, it will be displayed at the 'correct' 16:10 ratio. This will not affect any other game.

Core options

The ScummVM core has the following option(s) that can be tweaked from the core options menu. The default setting is bolded.

Settings with (Restart) means that core has to be closed for the new setting to be applied on next launch.

Attention

The default value of '1.0' is optimised for games that have a native resolution of '320x200' or '320x240'. When running 'high definition' games with a native resolution of '640x400' or '640x480', it is recommended to set the Gamepad Cursor Speed to '2.0'.

Attention

The deadzone setting can have a significant effect on the 'feel' of analog cursor movement. The value should be set as low as possible for best results - i.e. reduce the value until cursor drift is evident, then increment to the next highest setting. Xbox gamepads typically require a deadzone of 15-20%. Many Android-compatible bluetooth gamepads have an internal 'hardware' deadzone, allowing the deadzone value here to be set to 0%.

Attention

This hack is considered 'safe' - games should run correctly when it is enabled, and most inaccuracies are imperceptible other than in a few edge cases. It remains a hack, though, and it is strongly recommended that users of desktop class machines keep it disabled.

However: For users of low power hardware (Android devices, single board computers), this hack is essentially mandatory for full speed operation of the core. For Android users in particular, the guides in the 'Usage' section of this document assume that the speed hack is enabled.

Joypad

RetroPad Inputs User 1 input descriptors ScummVM Inputs
Right Mouse Button Right Mouse Button
. . (period)
F1 F1
ScummVM GUI ScummVM GUI
Mouse Cursor Up Mouse Cursor Up
Mouse Cursor Down Mouse Cursor Down
Mouse Cursor Left Mouse Cursor Left
Mouse Cursor Right Mouse Cursor Right
Left Mouse Button Left Mouse Button
Esc Esc
Enter Enter
Numpad 5 Numpad 5
Backspace Backspace
Cursor Fine Control Cursor Fine Control
F10 F10
Numpad 0 Numpad 0
X Mouse Cursor Left/Right
Y Mouse Cursor Up/Down
Virtual Numpad

Additional Notes:

1
2
3
[7][8][9]
[4]   [6]
[1][2][3]

Additional 'ScummVM Input' Descriptions:

Mouse

RetroMouse Inputs ScummVM Inputs
Mouse Cursor Mouse Cursor
Mouse 1 Left Mouse Button
Mouse 2 Right Mouse Button

Attention

To ensure correct operation when using a RetroMouse, it is recommended that the RetroArch 'Grab Mouse' option be enabled while running content with the ScummVM core. By default, 'Grab Mouse' may be toggled on/off by pressing F11 on the keyboard.

The 'Grab Mouse' option is not required when using a RetroPad to move the cursor.

Pointer

RetroPointer Inputs ScummVM Inputs
or Pointer Position Mouse Cursor
or Pointer Pressed Left Mouse Button

Compatibility

Compatibility listings for the standalone version of ScummVM may be found on the official ScummVM Compatibility Page.

The Libretro ScummVM core currently has issues with a handful of games that function correctly when using the standalone version. An evolving RetroArch-specific compatibility list is being maintained in this Google Spreadsheet.