This is the official documentation page for DREAMM.
The documentation on this page applies specifically to DREAMM 4.0; if you need it, I’ve archived the documentation for previous versions here: DREAMM 3.0 docs; DREAMM 2.1 docs; DREAMM 2.0 docs; DREAMM 1.0 docs.
There’s a lot to go over, so let’s break things up like this:
DREAMM is a specialized emulator for playing many of your original DOS, Windows, and FM-Towns LucasArts (and LucasArts-adjacent) games with full fidelity to the original. It is the creation of Aaron Giles.
DREAMM was originally a backronym for:
DOS
Retro-
Emulation
Arena for
Maniac
Mansion (and other LucasArts Games).
(Yes, DREAMM has outgrown its original acronym a bit, but I like the name, so I’m keeping it.)
The latest version of DREAMM can always be found at the main download page. If public beta releases are available, and you’re interested in seeing future DREAMMiness, check out the beta release page.
DREAMM is currently built for 64-bit Windows, MacOS, and Linux platforms, with native support for both Intel and ARM processors.
Windows systems require a minimum of Windows 7. I personally haven’t verified it actually runs on anything lower than Windows 10, but have heard reports that it runs well as far back as Windows 7 SP1.
MacOS systems require a minimum of MacOS X 10.15 (Catalina) or later. This is because DREAMM is written for C++17 and the libraries are not available on earlier systems.
Linux systems require that you have both libsdl2 and libcurl installed. If you play games on your Linux machine, you are probably already configured to go.
While DREAMM started out focused on the SCUMM games, it has since expanded its scope to include any Lucas-adjacent games that are interesting to me.
This includes of course all the original SCUMM games:
Plus the later GrimE engine adventure games:
A giant pile of 1990s-era Star Wars games and multimedia CDs:
Several Indiana Jones action games:
The full slate of late 80s/early 90s combat simulation games:
The full complement of Lucas Learning titles released in 1999/2000:
And the following miscellaneous games:
Almost all of these games come in a variety of different editions, languages, and versions. I have made a best effort to support as many of them as I have managed to get access to, including demo versions. (Or at least, all the ones that ran on DOS, Windows, or FM-Towns—I’m not a miracle worker!)
Note: DREAMM is focused fairly strictly on “official” releases of the games, so you will find that fan translations or hacks are generally not supported. They may work fine, assuming all the necessary files are present, but DREAMM will not identify them as legitimate at install time. The main exceptions to this are the two “Ultimate Talkie” versions of the Monkey Island games, which I bent the rules for because they are too awesome to ignore.
DREAMM 4.0 is a major release, with a ton of upgrades and improvements under the hood that would be ridiculous to try and enumerate. Instead, here’s a super high-level list of user-facing emulation improvements:
Plus some improvements to the frontend interface:
DREAMM makes use of a few outside packages to handle some of the tricky bits. These are all included with DREAMM itself, so you don’t need to install anything more, but I do wish to acknowledge them here.
DREAMM is built with the following libraries:
In addition, DREAMM ships with the following dynamic libraries, built unmodified:
The remaining code—including the core x86 emulation, remaining sound chip emulation, video card and other peripheral emulation, plus the DOS, Win32, and FM-Towns OS emulation—are all my own inventions and native to DREAMM.
You can always download the latest official version of DREAMM from https://dreamm.aarongiles.com.
Beta releases, if available, can be found at https://dreamm.aarongiles.com/beta.
DREAMM is released for Windows in two forms:
Windows EXE Installer. This is the simplest way to install DREAMM on your Windows machine. Just download the EXE file and double-click it to run the installer. It contains both the Intel- and ARM-native versions of DREAMM, and will automatically install the appropriate one for your system.
If you have never installed a previous version of DREAMM, the installer will ask if you want to install for All Users or for just the Current User. If you choose All Users, you will need to grant the installer administrator privileges to complete the installation.
Note: Versions of DREAMM prior to 3.0 always installed for All Users, and if the installer sees that previous installation, it will install the new version of DREAMM for All Users as well. If you want to switch to a Current User install, just uninstall the previous version of DREAMM prior to launching the latest DREAMM installer.
Windows ZIP Packages. As an alternative, the Windows release of DREAMM is also offered as two ZIP files, one for Intel-based machines, and one for ARM-based machines. Download the appropriate one for your system (most likely the Intel or x64 version), and extract the contents of the ZIP to a folder. From there, you can just double-click and run; no further installation needed.
On MacOS, there’s just one download option:
MacOS DMG File. For Mac users, DREAMM is offered as a compressed disk image, or DMG file. Simply download this and double-click it to mount it on your system. Once you do, you’ll see a window in Finder that looks something like the screen to the right.
At this point you have two options. You can either run DREAMM directly by double-clicking the DREAMM icon, or you can drag the DREAMM icon to your Applications folder to install it there. The MacOS DREAMM application is shipped as a universal binary containing both Intel and ARM native versions, so it should work on either system seamlessly.
Linux releases come as a simple gzipped tar archive (.tgz) file), with separate release files for each platform, x64 or ARM64. Once downloaded, just run tar -xzvf filename.tgz to extract the contents, then run the included dreamm file to start up DREAMM.
If you don’t have libsdl or libcurl installed, you’ll need to install those first using your distro’s supported tools. In addition, if you have the xdg-utils package installed, you will be able to click on links to web pages or local folders in the UI, which is quite useful.
DREAMM uses the SDL library to pick its preferred location for storing configuration data and installed games. Typically, this goes under your user directory:
On Windows, you’ll find it here:
C:\Users\<username>\AppData\Roaming\Aaron Giles\DREAMM
On MacOS, it should be here:
/Users/<username>/Library/Application Support/Aaron Giles/DREAMM
And on Linux systems, it defaults to:
/home/<username>/.local/share/Aaron Giles/DREAMM
At the root of that folder, DREAMM maintains a config.json file, containing information about configuration options, window positions, etc. If things get really messed up for some reason, you can try deleting this file.
DREAMM also creates several subfolders here:
If you would prefer for DREAMM to store all of its data and installed games next to the DREAMM executable, rather than in one of the locations above, you can make that happen by creating an empty config.json file next to the DREAMM executable.
When DREAMM is launched, it checks to see if there is a config.json next to the executable, and if there is, it treats the directory containing DREAMM as if it were the base of operations for data storage. This means DREAMM will write and update the local config.json file, and create the various subdirectories described above.
With Portable Mode, you can easily copy DREAMM to a USB stick or portable drive, and ensure that all installed games and settings are stored in the same location. Then you can take your portable install to any other computer and run it there without any further shuffling of files.
If you’re looking for a more streamlined interface, entirely free of the Game Manager frontend, you can set up DREAMM to run in Standalone Mode. There are two ways of accomplishing this:
You can use this feature to create shortcuts that launch your games directly, if that’s your preferred way of doing things.
You can also leverage this feature to avoid DREAMM’s behavior of copying the game files to the install directory. For example, if you already have a particular game installed, just pass DREAMM the path to that install and it will run it directly from your already-installed files (assuming that they are laid out the way DREAMM expects them to be).
When you launch DREAMM, you will be presented with DREAMM’s Game Manager, which is your main interface for adding, configuring, and running the games.
If this is your first time launching DREAMM on your system, or if you have not installed any games, you will be presented with a screen like the one here, inviting you to install games and pointing you to this documentation. Detailed instructions on installing new games are provided below.
From this initial screen you can also directly which may be of interest if you need to point to a volume with more space before you install games, or if you already have a previous set of DREAMM-installed games that you wish to reconnect with.
This interface for installing games can also be accessed even after you already have games installed, either by selecting Install Games… from the menu on the main Game Manager screen, or via the Alt+A⌘A shortcut.
Tip: After you’ve added some games, you don’t need to return to this screen to add new games. DREAMM’s Game Manager accepts dropped game folders and image files at any time, except while in the midst of another operation.
Once you have installed one or more games, you will see a screen like this, showing icons for each game installed.
This is the core interface screen for selecting which games to run within DREAMM, and is what you will typically see by default when you launch DREAMM, with your most-recently-selected game already pre-highlighted.
If you have more than about a dozen games installed, you will see arrows at the bottom left and right that allow you to scroll the list to see more games. You can also use your mouse wheel to rotate the “carousel” of available games.
To configure and run one of the games, you can either click on its icon directly, or navigate to it via the keyboard, using the ← and → keys to change the currently-highlighted icon. When using the keyboard to navigate, press the Enter key to proceed.
Note: Because so many game titles start with “Star Wars”, DREAMM ignores that part of the name when sorting the games.
From the game selection screen you can also use the to access DREAMM’s Options & Tools, which are described in detail a bit later, or you can click the button to exit DREAMM.
If you have many different games installed, DREAMM provides several ways to more quickly jump to the game you want.
The first option is just to begin typing part of the name of the game. As you type, DREAMM filters the list of games to only show those which include the text you have typed. For example you can start typing “Indiana” to show all your installed Indiana Jones games. Press the Esc key to clear your typing filter.
Another helpful filtering tool is tucked away under the button on the game selection screen. Clicking this will bring up a set of filters you can use to limit the games viewed. Games can be filtered:
Note that if you select multiple options within a group, DREAMM will include all games in all options. But if you select multiple options in different groups, DREAMM will only show games that match all groups.
For example, if you check Flight Simulators and Action Games, DREAMM will show all games that fit into either category, because they are in the same group. If you then check Network-Enabled it will only show games that are either flight simulators or action games, and which also have network play support.
To clear the filters, you can either select Clear All Filters from the menu, or press the Esc key. A small badge will appear in the top right corner of the to indicate how many items you have selected.
After selecting a game, you will be presented with the game’s pre-launch screen. Here you will see a large icon of the game, along with information about the specific version of the game and a set of configuration options.
By default, when you arrive at this screen, the button will be selected. To start the currently selected game, simply click this button, or click on the large icon, or press the Enter↩ key. More details on how DREAMM behaves while running a game are provided below.
To return to the main game selection screen, click the button at the top-right.
To access tools for managing game installation and data, click the button in the top-left corner. This will display the Game Tools menu with several operations for you to choose from.
You may also notice that some games display an additional icon in the top-left. This indicates that there are one or more warnings you should read about the game before launching. If this button is visible, it will have a small badge in the top-right indicating how many warnings are present.
If you have more than one version of the game installed, you will also see a pair of arrows to the left and right of the large icon. Click on these arrows to navigate between the different versions, or use the ← / → keys or mouse wheel.
If multiple versions are present, you’ll see just below the large game icon an indication of how many versions are present plus the index of the version currently selected. This is actually a link, and if you click it, you’ll be shown a menu of all installed versions, which you can use to directly select a specific version. This menu is also available via the Select Version from List… item in the Game Tools menu.
Many games offer configuration options, most often regarding which audio and video hardware the game should leverage. These options were typically specified on the command line, or in configuration files read by the game at startup, so it makes sense to set these options here, prior to launch.
You will always be able to see the available configuration options at the bottom of DREAMM's Game Pre-Launch screen, with a list of categories on the left, and a list of links to current settings on the right. Click the link of any setting to change it, or use the underlined keyboard shortcut.
The list of available options varies from game to game, and is often different even between different versions of the same game. For more details on the sorts of options available here and what they mean, refer to the Audio/Video Configuration, MIDI Configuration, and Advanced Configuration sections of this documentation.
To access tools for managing game installation and data, use the button in the top-left corner of the Game Pre-Launch screen. This will bring up the Game Tools menu.
If you have multiple versions of the current game installed, the first menu item will be Select Version From List…. Use this menu option to bring up a list of all installed versions of the current game, which you can click to directly select the version you want (instead of navigating them one at a time).
Use the Verify This Version… option to run a verification pass on the current game’s installed files. This can be useful to ensure that all required files are still present and unmodified. If the verification fails, you will be given the option to remove the install.
If you have multiple versions of the game installed, you will also find a Verify All Installed Version… option, which scans all installed versions in the same way.
Below these options, you’ll find several options to view game data on your system:
If you are currently looking at a Windows game, you'll find an option to Reset Windows Registry…. Selecting this will take you to a confirmation screen. Resetting the Windows registry will clear out settings and info stored in the registry; depending on what the game has decided to store in the registry, it may or may not have noticeable effects.
The next option, Reset to Initial State…, gives you the option of clearing all configuration and game-modified files, effectively returning the game to the state it was when it was first installed.
If you want to free up the space currently taken up by the selected game version, choose the Uninstall This Version… option. Here you will have the option to remove either just the installed game files, or the installed files plus all game configuration and modified files. Once you’ve confirmed your intentions, all of the relevant files will be permanently deleted.
When you select one of these, DREAMM will ask Windows ExplorerFinderyour distro’s file browser to open the relevant location for you to examine.
Accessible via the icon on the main Game Manager screen, DREAMM’s Options and Tools menu allows you to configure global options and make changes affecting DREAMM’s overall operation.
The top three items allow you to configure settings for the Game Manager as well as both global and default settings for games.
The next three items connect to tools that help with managing your games. You can Install Games, Install From Multiple Disks, or Reverify Installed Games.
Next are a couple of miscellaneous tools for Managing Sound Fonts & ROMs and to Test Controller Mapping.
Finally, you’ll find a link to DREAMM’s About Screen with important system information and links.
The settings on this screen allow you to control behaviors specific to the Game Manager itself.
WINDOW MODE — allows you to select whether the Game Manager itself runs in a Normal window, a Maximized window, or Full Screen. This can also be toggled at any time by pressing Alt+Enter⌘↩ while the Game Manager is running.
INSTALL PATH — allows you to specify the location where DREAMM installs new games. When you click on this, it will take you to another screen where you can drag a new directory or reset to the original default location.
TELEMETRY — allows you to enable or disable DREAMM’s telemetry. Although many folks dislike any telemetry at all, I hope that you’ll at least review the details of what DREAMM does before reflexively turning it off.
VERSION NOTIFY — allows you to control DREAMM’s version checking. If enabled, then once per day, DREAMM will check to see if a new version is available and notify you. You can control whether you are notified of beta releases or of official releases only.
These settings are related to in-game operations, but are shared by all games.
RENDERER — controls which rendering technology is used to draw to the screen. By default on Windows, DREAMM renders its video using Direct3D 11, which should offer the broadest compatibility and best performance. However, if you are using an older graphics card you may have better luck with the OpenGL or SDL Internal options. By default, DREAMM renders its video using OpenGL, which should offer the best performance. However, if you are using an older graphics card you may have better luck with the SDL Internal option. Note that some scaling effects are disabled when the SDL Internal renderer is selected.
Note: Changing the renderer requires DREAMM to perform an internal restart.
AUTOPAUSE — controls DREAMM’s auto-pausing behavior. When set to Never, DREAMM will continue running even when switched to the background. If set to When in Background, DREAMM will automatically pause the game when another program is brought to the fore.
PROTECTION — specifies how you want DREAMM to handle manual-based copy protection prompts. If set to Complete Automatically, then DREAMM will take over when it detects one of these prompts and automatically handle completing it for you. Set this to Display Answer to just display the expected answer; you will need to manually perform the required actions. And if you a truly an old-schooler and keep your original manuals/code wheels handy, you can leave this set to No Assistance and DREAMM will quietly look the other way when these prompts appear.
KEYBOARD — brings up a menu allowing you to control the keyboard mapping within DREAMM. This has the largest effect on Windows-based games, as DOS games tend to work at the scancode level, which is more related to each key’s physical location on the keyboard.
NETWORK HOST — allows you to specify the default hosting address for network play. This is particularly relevant for games that provide no option to configure the host address.
DELTAS PATH — allows you to specify the location where DREAMM stores any files that the game has modified. When you click on this, it will take you to another screen where you can drag a new directory or reset to the original default location.
The settings on this screen are all configurable independently for each game via the in-game menu, but you can set the default values here. Full details on the behavior of each setting can be found below.
WINDOW MODE — controls whether games by default run in a Normal window, a Maximized window, or Full Screen.
STRETCHING — controls the default stretching behavior for games: either Smart, Even Multiples Only, or Maximum.
ASPECT RATIO — controls the default aspect ratio correction for games: either Corrected (4:3) or Squashed (1:1).
SCALING EFFECT — controls the default scaling effect for games: either None, CRT Simulation, or epx Scaling.
VERTICAL SYNC — controls the default vertical sync behavior for games: either Enabled, Adaptive, or Disabled.
HERCULES COLOR — controls the default color of simulated Hercules monochrome displays: either Green on Black, Amber on Black, or White on Black.
MT-32 OUTPUT — controls the default output for Roland MT-32 sound playback.
GMIDI OUTPUT — controls the default output for General MIDI sound playback.
The Reverify Installed Games… command initiates a scan of all of your installed games, which will verify that all required files are still present and unmodified.
When you choose this option, you may be asked whether you want to perform a complete reverification of all games installed or just ones that have not previously been recognized. (If you only have recognized games installed, you won’t be asked.)
Reverification can take a while, and for each game can result in one of four outcomes:
If you want to cancel the verification, simply click the button at any time.
Several of the MIDI-based sound systems that DREAMM supports make use of data provided externally. You can either directly copy the data into DREAMM’s sounddata folder, or you can drag & drop files onto this screen.
There are two types of files that can be added here:
The center of this screen shows you how many sound fonts you have installed, and also whether a viable set of ROMs are available for Roland MT-32 emulation and Roland SoundCanvas (SC-55) emulation.
If you wish to directly view/modify the contents of this folder, use the button to open it in Windows ExplorerFinderyour distro’s file browser.
DREAMM supports the use of non-keyboard/mouse controllers via SDL’s Game Controller and Joystick systems. However, how your specific controllers show up within this system is not always clear, so you can use this screen to understand what is going on.
At the top you’ll find a count with the number of controllers detected, followed by a block of information for each one. While this screen is visible, you should be able to plug/unplug any controllers and see them show up in the list.
Note: In order to show up on this screen and be available for use in DREAMM, a controller must have at least 2 analog axes and 1 button. This means that old-style digital-only gamepads will not be shown here. If DREAMM detects an unsuitable controller, it will be shown at the bottom of the list.
Each information block begins with the name of the controller. Beneath that you’ll see a line labeled POVs & Buttons. For each POV (hat) on your controller there will be an X icon. As you move in different directions that icon should change to indicate the direction. Pressing any buttons should show the name of the button on this line as well.
Beneath that is a line showing all of the identified analog axes on the controller. As you move these around the numbers should range from –1.0 to +1.0.
Note: The “trigger” axis is a special axis that combines the two trigger buttons into one axis. This is in line with how Windows games map these axes by default. If your controller doesn't have analog buttons here, you'll find that pressing them maps to –1.0 or +1.0 without any in-between values.
Selecting the final item in DREAMM’s Options and Tools menu will bring up the about box. You can also access this by clicking the version link in the upper-right corner.
The top line reveals the current operating system, CPU architecture, and DREAMM version, while the next line shows the version of SDL currently being used and the active video renderer.
Next up are links to this documentation, and a link to an email address where you can send bug reports. Below that is a link to my ko-fi account — donations are always encouraging!
Finally, you can click the License Details link to view a list of libraries bundled with DREAMM.
The first time you run DREAMM on your system, you will be faced with a screen like this explaining how to install games. (Heck, you might have even arrived here by clicking the documentation link!)
You can also switch to this interface even once you have installed some games by choosing Install Games… from the Options and Tools Menu, or by using the Alt+A⌘A keyboard shortcut.
The important thing to understand is that in order to run any of the supported games within DREAMM, you must first let DREAMM install them for you. There are a number of ways to go about this, each explained below.
Tip: You do not have to be on this screen in order to add new games. The techniques below that involve dragging & dropping will work at any time from the Game Manager, except if you are already in the middle of another operation.
The first and easiest thing to do is to click the scan for installed games link. DREAMM will scan your system for games it recognizes by looking in the following locations:
Note: DREAMM attempts to support all officially released game versions offered by both GOG and Steam. For a complete view of what is supported, check out DREAMM’s compatibility list.
If you have the game you want already installed on your system, simply locate the folder where the game lives and drag it onto DREAMM’s window to add it. DREAMM will scan any folder you provide this way for games that it recognizes.
DREAMM will even aggressively scan subdirectories looking for something, so if you have a big LucasArts folder somewhere with all your games in it, you can just drop the whole thing on DREAMM and let it find everything contained therein.
DREAMM can also handle folders that have been compressed together into a ZIP or 7-zip archive. Dragging a .zip or .7z file onto DREAMM is the equivalent of dragging the unzipped contents as a folder.
Note: DREAMM requires the original executable file in order to run a game. If you have previously run your games using ScummVM—which doesn’t require the executable file—then you may find that this file is missing. For more information, see the Missing Executable Files section.
Another convenient way to install games is to use disk images. These are files containing a raw dump of a complete floppy disk or CD-ROM, and are one of the best ways to back up your precious old original media.
For floppy disk images, DREAMM supports any of the standard “raw” formats: IMG, IMA, VFD.
For CD-ROM images, DREAMM supports ISO, CUE/BIN, MDS/MDF, and CCD/IMG files. When working with the latter three types of images, just provide the CUE/MDS/CCD files to DREAMM, as the corresponding BIN/MDF/IMG files on their own are not useful for understanding what the image’s contents consist of (though if you do drop a BIN/MDF file, DREAMM will make an educated guess for how to find the corresponding CUE/MDS file).
To install from disk images, make sure you have all the necessary images together. For example, for a game that came on 5 floppy disks, you would want 5 image files. Then select all of the images together and drag them in a single operation onto DREAMM’s window.
You can also put all the disk images together in one folder and drag that folder onto DREAMM.
DREAMM will look at the collection of images as a whole, trying to find all the necessary files that make up a game. If it finds a complete set of files, it will proceed with the installation.
If you have original floppies or CD-ROMs of the games, DREAMM supports installing directly from those disks as well.
If your game resides on a single floppy or CD-ROM, you can simply insert that disk and then drag the drive icon onto DREAMM. It should successfully install directly from the media.
Important: If you are installing a CD-ROM based game that contains CD Audio tracks on it, and you are running on a Mac or on Linux, then you won’t be able to successfully install the full game directly from within DREAMM, because DREAMM cannot access the CD Audio on those platforms. Instead, you will need to use a 3rd party tool to make a CD image in either CUE/BIN, MDS/MDF, or CCD/IMG format, and then follow the directions above for installing from the resulting image file(s).
If your game comes on multiple floppies or CDs, then you have several options.
The first option is to use a 3rd party utility to create a disk image file of each disk, and then install them as disk images, described above. This also conveniently leaves you with an archive of your original media, which is not a bad idea to keep around in case one or more of your disks succumbs later to the ravages of time and bit-rot.
A second option is to create a folder for each disk, and then manually copy the contents of each disk into that folder. Then select all folders and drag them in a single group onto DREAMM to scan. This also leaves you with a backup, though it may not be complete if the game contains CD audio data.
Your third and final option is to use DREAMM’s multi-disk install helper, described next.
To make it easier to install from multiple disks (or folders), DREAMM has a built-in helper.
If you drag the first disk or disk image or folder onto the Game Manager screen, DREAMM will tell you that it found no games. At the bottom of this screen, you’ll see a button, which takes you to this multi-disk installation helper, and begins copying the contents of that item.
You can also access this helper directly by selecting Install From Multiple Disks… from DREAMM’s Options and Tools menu.
After copying the contents of the first item, you will see a completion screen encouraging you to drag the next item. At this time you can remove the first disk (if appropriate) and insert a new one. Once you’re ready, just drag the next image onto DREAMM to begin copying.
Continue dragging items onto the screen until all items have been copied, then click to tell DREAMM that all data is present. At this point, DREAMM will scan the complete set of files it copied and assemble from them the full game.
With luck, when you add your game to DREAMM using one of the mechanisms described above, DREAMM will find that it is an exact match for one of the many versions it knows about. In this case, you’ll see a message like the one to the right, with two options available.
Click to copy all the game’s files into your install directory.
Click if you’ve decided you don’t want to install this item.
Also notice that the “Found an exact match” text is underlined. In this case, you can click on that text to open up the directory containing the game files DREAMM found (or the directory containing the image files the game was found on) in Windows ExplorerFinderyour distro’s file browser. This is mostly useful if you have dropped a deep tree of directories onto DREAMM for analysis, and want to know which particular directory is being referenced.
Many of the later DOS/Windows games came with a specialized installer that copied and decompressed the files onto your hard disk. DREAMM knows how many of these installers work and will try to extract the files directly if it can. If that isn’t possible, DREAMM will copy the installer to a temporary location and run it for you within the DREAMM environment.
If you drag a folder or disk images containing an installer program that DREAMM recognizes, but which it cannot extract directly, DREAMM will show you a message like the one to the right, again giving you two options.
In this case, if you click , DREAMM will launch the game’s installer program directly within the Game Manager window.
Clicking instead will leave the game uninstalled.
For most games, DREAMM knows how to navigate the installer and will do so for you automatically, so you can just sit back and let the installer run without needing puzzle through it. However, if you do wish to tweak the install or see what’s going on, you can tell DREAMM to stand down by holding Shift while clicking the button. This will disable any automatic behaviors built into DREAMM for this install.
If you do opt to install manually, or if you find a game whose installer hasn’t been pre-scripted, the proper way to install is described here.
For most games, the installer will ask you to choose where to install the game, or will give you a menu like the one to the left. Ignore any configuration options at this time and focus on performing the install itself.
Select the C: drive as the target for files (the specific diretory doesn’t matter, as long as it’s somewhere on C:), and then let the installer do its job. When finished, exit manually if necessary.
Regardless of whether you installed manually or let DREAMM do the hard work, once the installer exits, DREAMM will examine the contents of the C: drive, identifying any games it knows about. Assuming it finds at least one valid game, it will move the installed data to its final home in your install directory.
If DREAMM detects that you are attempting to install a game that is already installed, it will give you the chance to either skip the install, or to perform a reinstall. In this situation, the default button will change to read , as seen in the screenshot to the right, and the default will switch to .
If you choose to reinstall the game, DREAMM will erase the old installation directory and replace it with a fresh copy of all the files.
Reinstalling does not delete any data that was written during gameplay by the original installation. This operation simply replaces the installed files, while leaving everything else alone.
When scanning a folder or image file for installation, if DREAMM finds all the necessary files, but doesn’t recognize the data in them, it will still allow you to proceed with the installation.
In this case, DREAMM will match what it found against the games it knows about, and will choose the closest match as the name. In addition, it will append an 8-digit code in brackets to the end of the name to identify it as an unknown version.
In many cases, unknown versions will work as expected, but it is also possible that you will encounter issues. In either case, it is best to contact me at dreamm@aarongiles.com to let me know about your alternate version (assuming it is a legitimate release) so it can be added to DREAMM’s internal database.
Tip: If you want to manually examine the directory or disk image where the game is stored, click the underlined text “Found an unfamiliar set of matching files”, and DREAMM will tell Windows ExplorerFinderyour distro’s file browser to open the game’s source folder.
Because DREAMM emulates games at the CPU level, it requires the original executable files in order to run. This is in contrast to other solutions, like ScummVM, which replace the original executable with their own logic. (For more details on the differences between DREAMM and ScummVM, see the FAQ.)
Unfortunately, this means that games which ship using ScummVM (e.g., many of the GOG and Steam releases) have no need for the original executable files, and frequently—though not always—ship without them.
It is also common to find ScummVM-compatible collections of games with the executable files stripped out.
Because this is a common occurance, DREAMM detects this condition and reports it, as seen in the screenshot above. Unfortunately, there’s no easy solution to this problem. It sure would be nice if GOG and Steam included the original executables across the board!
Tip: If you want to manually examine the directory or disk image where the game is stored, click the underlined text “Found a partial set of files”, and DREAMM will tell Windows ExplorerFinderyour distro’s file browser to open the game’s source folder.
Many games were upgraded during their lifetime, and some of the later games even had online patches released which could update older versions to newer, less buggy versions.
DREAMM recognizes quite a few of these upgrade patches. To install them, first navigate within DREAMM’s Game Manager to the exact game version you wish to upgrade. Then simply drag the upgrader’s folder or .EXE onto DREAMM’s Game Manager to run it.
Assuming the upgrader is compatible with the selected game, DREAMM will show a screen like the one shown here, giving you the option to apply the upgrade or skip it.
As with installing fresh games, DREAMM understands the format of some upgrade patches and can extract them directly, without running the game’s own upgrade program. If this is the case, the update is applied directly by DREAMM without running the installer.
For the remainder, DREAMM creates a temporary setup and executes the upgrader exactly as if you were running it on a machine with the original game installed. As with installers, DREAMM is scripted to run many updaters without any further assistance. However, you can override any scripts by holding the Shift key while clicking the button.
If you do opt to install the upgrade manually, just follow the directions in the upgrader, leaving everything at their default settings, and the upgrade should proceed successfully.
DREAMM is also aware of and can install add-on expansion packs. Installing an expansion pack is just like upgrading a game: first, you must navigate within DREAMM’s Game Manager to the exact game version you wish to upgrade. Then drag the add-on pack’s disk image or install files onto DREAMM.
If the add-on requires running an installer, DREAMM will run it much like an upgrade. If it is just a collection of files, DREAMM will copy the files to the proper location.
Once any add-ons have been installed, they will be listed after the game’s version description as depicted here. In this case, Secret Weapons of the Luftwaffe has had 4 separate add-ons installed.
Once you’ve launched a game, the window will be adjusted to reflect whatever state it was in the last time you ran the game, and the game will begin execution. This section deals with game interaction and configuration.
Keyboard controls in the game should work as expected. The main exception will be that any shortcut keys defined by DREAMM take precedence over the game’s normal keys. Perhaps the most obvious example is the Alt+X shortcut on non-MacOS machines, which overlaps with the exit shortcut Alt+X recognized by the SCUMM games. In this case, it’s ok because they have the same effect.
Mouse controls can vary game-to-game. For games that display a mouse cursor, DREAMM attempts to track your system mouse position and map it to the game’s position. This provides seamless transitions into and out of the window when not running full screen.
Other games, however, track the mouse’s movement at a lower level. In this case, DREAMM “captures” the mouse and hides the mouse pointer. To regain control of the mouse, invoke the user interface via the Alt+U⌘U or F12 shortcut.
Finally, for games that support joystick controls, DREAMM attempts to map any game controllers it finds in the most logical way to either the traditional gameport (for DOS games) or Windows DirectX (for Windows games).
If you want to map your joystick controls differently from DREAMM’s default, you can via the advanced configuration options, accessible from either the front-end or the in-game menu. You can get a glimpse at how DREAMM sees your connected joysticks via the Test Controller Mapping tool, accessible from DREAMM’s Options and Tools Menu.
At any time when running a game, you can bring up the in-game options menu via the Alt+U⌘U or F12 shortcut. The game will be paused while you navigate the menus, and will resume once they are dismissed. Bringing up the menus also serves to un-capture the mouse input, so if you need to regain control of the mouse from the game, you can invoke the menus to do that.
Note: An important exception to the pausing behavior above is if you are running a network-enabled game and actively using the network. In this case, DREAMM does not pause the game while you are navigating the in-game menu, in order to prevent your network connection from timing out.
The first menu item, Video Options…, will take you to another menu with video-related options, described in greater detail in a later section.
The Volume Controls… item is next. Selecting this item resumes the game, but pops up at the bottom of the screen one or more volume sliders that let you adjust the output volume of the game’s sound. See the Adjusting Volumes section for more specifics.
Below the first divider you will find game-specific configuration options, if any are available. These are the same options that were available on the Game Prelaunch screen.
Important: Because these configuration options (apart from the Advanced options) are generally passed on the command line to the game program, altering any of these from within the game will require a restart.
The last group of items starts with the About DREAMM… item, which shows the same about box as described above, but with additional information about the exact version of the game you are currently playing.
The Show Game-Modified Files item opens the game’s writable data folder in Windows ExplorerFinderyour distro’s file browser so you can examine the game’s files.
And finally, the Restart Game… and Exit… items behave as you’d expect, providing a mechanism to hard-restart or hard-quit the games (after asking for confirmation first, of course). The short cut combination Alt+X⌘X is bound to the exit command.
Important: Restarting or quitting via this menu or the Alt+X⌘X shortcut does not involve the game at all, so if you need to save your game first, do so within the game before invoking either of these options.
This menu provides common options that affect the game’s video display while running.
The settings in the top section all share similar behavior: they can be set independently for each game, and the value of each setting will be remembered the next time you launch the game within DREAMM.
The default values for settings in this first section are all configurable from within DREAMM’s Game Manager via the Default Game Configuration… option in the Options and Tools menu. If the option currently matches the default it is indicated with an asterisk *.
The Window Mode setting controls the overall state of the game window. It can be set to one of threetwo values:
The key combination Alt+Enter⌘↩ can be used to toggle between these options at any time without bringing up this menu.
The Stretching option controls how DREAMM stretches the game’s video to the window size. Again, there are three options:
The Aspect Ratio option specifies whether DREAMM should stretch the game’s pixels to the correct aspect ratio (4:3), or output them raw. Here you have two options:
The Scaling Effect item toggles between one of three different supported scaling modes:
These modes are described in more detail in a later section.
The Vertical Sync item controls how aggressively DREAMM synchronizes its updates with the refresh rate of your attached monitor:
If a Hercules video card is currently configured as your game’s output, you’ll see the Hercules Monitor Color… menu item next. Here you can toggle between three different settings:
Regardless of the Full Screen Mode setting, you can use the Grow Video One Step and Shrink Video One Step commands to alter the game’s visible size. The step size will generally be in half-increments of the game’s native vertical resolution, unless you have set your Stretching option to Even Multiple Only, in which case it will adjust in full increments.
For example, if the game is running at 320×200 resolution, and you have “Correct Aspect Ratio” enabled, the aspect ratio-corrected resolution is 266×200, and these commands will step the game’s active area larger or smaller in increments of 133×100 (or 266×200 if Stretching is set to Even Multiples Only).
Use the shortcuts Alt+Plus⌘+ and Alt+Minus⌘– to alter the size directly.
In windowed mode, the Grow/Shrink Video One Step options alter the size of the window itself, while in full screen mode they just serve to limit the maximum size of the video. In this case, the smaller video area will be displayed centered in the full screen area with black bars on all sides.
Tip: The Grow/Shrink commands work regardless of the Stretching option, so it’s a good way to snap the window size back to an even half-multiple of the game’s native resolution.
Note: DREAMM saves the window position independently for each game and for the Game Manager itself. For example you can configure the Game Manager to run in a window of a certain size, then configure one game to run full screen, and configure a second game to run in a differently-sized window. When DREAMM switches to each case it will adjust itself according to the last configuration for that specific case.
Finally, the Take Screenshot command, most practically invoked via the Alt+Backspace⌘⌫ shortcut, takes a PNG snapshot of the game’s native video and writes it to the game’s screenshot folder. You can locate the screenshot folder from the DREAMM Game Manager by selecting the game and using the menu to View Screenshots Folder….
In general, your modern system is running at a resolution significantly higher than these old games, and so DREAMM offers several different options for how to scale up those old pixels. You can toggle between these options via the Video Options menu anytime while a game is running to see which you like better.
Below is a description of each mode, along with a sample screenshot taken at 4x scale with aspect ratio correction enabled.

Basic Scaling offers the most straightforward means of stretching lower resolutions to higher resolutions. Each old pixel is treated as a rectangle and expanded to cover the appropriate number of pixels on your monitor. Any pixel boundaries that straddle two modern pixels are blended with the neighboring pixel.
The end result is very close to “nearest neighbor” scaling, but due to the filtering at pixel edges produces a more uniform result.

CRT Simulation is the newest and most complex scaling offered by DREAMM, and is intended to approximate the look of old CRTs. It uses a combination of scanline simulation, horizontal filtering, and a shadow mask overlay to produce an overall effect that serves especially the early EGA games well.
DREAMM’s CRT simulation is aware of which video card you are currently emulating, and alters its behavior to attempt to best match the characteristics of a typical monitor of that era. Thus, even games that look identical between EGA and VGA modes with Basic Scaling may have quite different effects with CRT simulation. In particular, low resolution modes (320×200) running on VGA hardware are “double scanned”, and this will be reflected with CRT simulation enabled, giving two visible scanlines per pixel.
In order to produce convincing effects without moire artifacts, you are strongly encouraged to set your scaling mode to either Smart or Even Multiples Only when using CRT simulation. Also, in order to produce satisfactory results, the output resolution needs to be at least 3× greater than the original resolution. For low resolution games this isn’t hard to achieve at standard HD 1920×1080 resolution, but for higher resolution games running at 640×480 and above, you’ll probably only want to enable this feature on 1440p or 4k displays.
If the output resolution drops below the 3× threshold (or 2× for VGA as a special case), DREAMM will automatically fall back to Basic Scaling.

epx Smoothing is DREAMM’s third and final scaling option. This algorithm takes the original source pixels and doubles the resolution, applying simple logic to attempt to smooth out the newly-added pixels. It works fairly well for simple line art, but tends to have little effect on more modern graphics.
The epx algorithm was actually developed by Eric Johnston of LucasArts for his Macintosh ports of the early SCUMM games. I later used the same algorithm for my Windows-based ports. Thus, I consider epx to be a fundamental part of LucasArts history, and support it as a nod for those who want to experience the smoothing effect that Mac and, later, Windows users got to enjoy.
If you select Volume Controls… from the in-game menu, or use the Alt+V⌘V shortcut, you will see a set of one or more sliders pop up at the bottom of the screen. You can navigate the sliders via the keyboard or mouse.
With the keyboard, use ↑ and ↓ to navigate between different volumes, and use ← and → to increase/descrease the volume. Normally, volumes snap in increments of 3dB, though you can override this by holding Shift while adjusting the values. Press Enter or Esc to dismiss.
With the mouse, click and drag the handle of the slider to adjust the volume. As with keyboard navigation, volume is typically snapped to 3dB increments, with the Shift key overriding this behavior. Click anywhere outside of the volume slider box to dismiss the controls and return mouse control to the game.
Generally, volumes should be set to no more than 0dB, which is considered the maximum. In certain rare circumstances, however, it may be useful to overdrive the sound, so DREAMM allows you to go into positive territory.
To mute sound, drag the slider fully left until it says “MUTED” in gray.
All games will offer at least a Master volume slider. Games that have MIDI outputs or CD Audio will show independent sliders for those items, allowing you to control the relative volume of those outputs compared to the rest of the game.
Note: While the Volume Controls menu is visible, the game will still be running live. This is important so that you can hear the effects of your changes live. However, it does mean you should be sure to place yourself in a non-dangerous situation before you invoke these controls!
For certain games that shipped on multiple CDs, you will be prompted at some point by the game itself to insert a different disc into your virtual CD-ROM drive. To accommodate this, DREAMM inserts additional options into the In-Game Menu which allow you to switch in a different virtual disc while the game is running.
For games that need this support, you will see additional menu items labelled “Insert Disc n”, where n ranges from 1 to the number of different discs you might need to insert. Next to each “Insert Disc” item is a radio button to indicate the currently selected disc number. When the time comes to swap discs, simply bring up the in-game menu and select which disc you wish to insert.
As a quicker alternative, DREAMM also binds shortcuts to the disc switching mechanism. Use Alt+1⌘1 to select the first disc, Alt+2⌘2 to select the 2nd, and so on. When you do, a message will appear at the top of the window to confirm your action.
Note: Not all games that originally shipped on multiple discs need to leverage this mechanism. If DREAMM can install all the files from all discs in such a way that the game doesn’t ever need a disc swap, these options will not be shown. Examples of games that fall into this category include: Star Wars: Rebel Assault II and Indiana Jones and the Infernal Machine, among others.
As of the 4.0 release, DREAMM supports multiplayer networking in Windows games.
Warning: DREAMM’s networking support has only seen minimal testing as of the 4.0 release, and at this point should be considered experimental. If you have any successes or failures in making it work, please let me know!
Networking in Windows games happens generally via two different mechanisms:
As of this writing, all network-enabled games supported by DREAMM have DirectPlay support, while only a couple have Windows Sockets support.
Note: when DREAMM has an active network connection, actions that normally would pause the game (like bringing up the menus) no longer do so. This is to help ensure that network connections don’t time out.
Games of this era were intended to only be played on local-area networks (LANs), and thus this is your best network configuration if possible. If you want to attempt playing against others out on the internet, you will almost certainly need to find some kind of proxy service that lets you simulate operating on a LAN. In general this means that all players must connect to the same proxy and then it will appear as if you are on a LAN together.
When setting up networking via DirectPlay, you may see options for TCP/IP or IPX. Within DREAMM, these two options are equivalent, so it doesn’t matter which one you choose.
Note: DREAMM’s DirectPlay implementation does not perfectly match Microsoft’s DirectPlay implementation in terms of actual data sent back and forth. This means that you will not be able to network between DREAMM and another system playing natively; both systems must be running the game in DREAMM in order to connect. Also note that this limitation does not apply if connecting via the lower-level Windows Sockets protocol.
If you are gaming using Windows Sockets, then your firewall settings will need to match whichever ports the game uses. Since this can vary game-to-game, check the information provided with the game to see which ports need to be opened or forwarded.
If you are gaming using DirectPlay, then DREAMM uses the standard port range for DirectPlay. Specifically, it uses port 47624 for enumeration, and then ports in the range 2300–2400 for connecting.
This section describes the various audio and video systems you may be able to choose when configuring a game. These apply only to DOS-based games; Windows and FM-Towns have standardized hardware instead.
Each DOS game only supports a certain subset of the video and audio options below. DREAMM knows what is supported and will limit your options to those that are viable for the particular game you are configuring. In addition, some games require extra “add-on” files in order to enable support for additional systems; DREAMM is also aware of these dependencies, and won’t show you options that are missing required files.
Hercules (2 colors) — Black and white (or green or amber) monochrome display using Hercules graphics at a crisp 720×350 resolution. Only a few of the earliest games support this at all, and it’s pretty ugly, but DREAMM supports it for completeness. If this video system is selected, you can configure the monitor color via in the In-Game Menu. Just select Hercules Monitor Color and choose between green, amber, or white as your output color.
CGA (4 colors) — This is the classic 4-color CGA mode, running at 320×200 resolution. It was supported for most of the early games, though by the early 90s better graphics cards were required and support was quickly dropped.
Tandy/PCjr (16 colors) — This is the famous “enhanced” CGA mode that the Tandy 1000 and IBM PCjr supported. Enabling this gets you full 320×200 16-color graphics in some games, though some games configure it to use a super chunky 160×200 video mode instead.
EGA (16 colors, planar) — This mode enables 320×200 16-color graphics like the Tandy option, but draws them using the complicated EGA/VGA “planar” modes. Some games leveraged clever tricks in this mode to improve drawing speed, which you probably won’t notice on a modern machine. Some of the later 256-color games supported running in a “Super EGA” (confusingly called SEGA) mode, which ran high resolution 640×200 16-color graphics using dither patterns to fake 256 colors.
MCGA (256 colors) — This video mode was first introduced with the IBM PS/2 Model 25, and is basically the same as CGA but with the addition of a nice 256-color 320×200 mode. All the SCUMM games support this mode, dating back to the original Maniac Mansion; however, if the game only has 16 color graphics, it will look the same as EGA or Tandy/PCjr in spite of having access to more colors.
VGA (16/256 colors) — This video card is the most flexible option, containing full EGA support, plus the MCGA 256 color video mode described above. In many early games that used only 16 colors, selecting VGA will be effectively the same as running with EGA, while later games will take advantage of the MCGA-compatible 256 color mode.
PC Speaker (1-bit DAC) — The option of last resort, the venerable PC speaker offers a single square wave output. Because it was guaranteed to always be present regardless of your PC’s configuration, many early games offered some speaker sound support, though due to its shrill output, it is largely relegated to sound effects and only very occasional music. Speaker emulation is provided by a simple internal emulator.
Tandy/PCjr (SN76496) — Both the Tandy 1000 and IBM PCjr offered an upgraded sound system based on the Texas Instruments SN76496 chip. This chip offered 3 channels of square waves, plus a fourth channel of noise. Like the PC Speaker, it was mostly used for sound effects and occasional music, but its music is definitely a big improvement. SN76496 emulation is provided by an internal emulator.
GameBlaster (2 × SAA1099) — The Creative GameBlaster was the first big step up in audio quality. It used two SAA1099 chips, each of which supported 6 channels of square waves, for a total of 12 voices. For the few games that supported it, you can definitely hear a much richer sound, and the audio was passable enough for music throughout the game. SA1099 emulation is provided by an internal emulator.
AdLib (OPL) — The AdLib sound card was a popular first-generation sound card that offered FM-based sound, using Yamaha’s YM3812 sound chip. This offered 9 channels of highly configurable sounds, and allowed multiple different “instruments” for the first time. YM3812 emulation is provided by my own YMFM library.
SoundBlaster 16 (OPL3 + PCM) — While the SoundBlaster was primarily known for its digital sound support, it also sported AdLib compatibility via the same Yamaha YM3812. Later versions of the SoundBlaster upgraded to the YMF262, which supported stereo output and 18 channels of sound. SoundBlaster is the only supported digital sound card in DREAMM, so if a game has any digital sounds, it will always be part of your audio configuration. YMF262 emulation is provided by my own YMFM library.
Roland MT-32 — The Roland MT-32 was an external box that acted as a MIDI receiver, and came with a full complement of sampled instruments. Music was sent to the MT-32 via standard MIDI commands, with some special extensions available to support new sounds or modify existing ones. In general, for the DOS-based games that support it, the MT-32 is the optimal way to hear the soundtracks. There are several options available for playback of MT-32 audio in DREAMM, but they are extensive enough to warrant their own section.
General MIDI — General MIDI is a standardized set of instruments that allowed multiple manufacturers the ability to produce compatible sound systems. Just before games entered the fully digital age, General MIDI was the state of the art for music. Like the Roland MT-32, there are several ways to hear General MIDI music in DREAMM. Check out the next section for details.
When you select either Roland MT-32 or General MIDI as part of your audio configuration, you will be offered additional options for how you want DREAMM to play it back.
These options require a fair bit of explanation, and very significantly between various platforms. There is a lot of flexibility and power offered here, so if you care about the quality of your MIDI playback, be sure to read the fine print!
Important: Several of the MIDI configuration options require you to provide one or more files for DREAMM to use in its emulation. DREAMM expects to find these files in its sounddata folder, as described here. Fortunately, DREAMM provides a simple mechanism for installing these files to the correct location via the Manage Sound Fonts & ROMs… tool in the Options and Tools menu. For more specifics, see documentation above.
DREAMM comes with and supports several options for outputting MIDI via emulation. Below are more detailed descriptions of these options.
For the Roland MT-32 only, you have the option of using the munt MT-32 emulator, which does an excellent job of reproducing the original MT-32 audio. DREAMM ships with a version of Munt already installed.
In order to activate the munt option in the menus, you will need to provide two or more ROM files from an original MT-32 system. To install the ROM files, simply go to the Manage Sound Fonts & ROMs screen and then drag & drop the ROMs onto DREAMM’s window as described there.
To verify whether you have all the necessary files, check the information provided on Manage Sound Fonts & ROMs screen. If everything is in place, it will say “Roland MT-32 Emulation Available”; otherwise, it will tell you which file(s) you are missing.
Note: there were many different revisions of the MT-32 released. DREAMM knows about most of these versions and will accept ROMs from any of them. In fact, you can install ROMs from multiple versions and each one will be independently selectable as an option.
DREAMM ships with a plug-in that contains the Nuked SC-55 SoundCanvas emulator. Much like the mt32emu option, in order to enable SoundCanvas emulation, you will need to provide one or more ROM files from the original SoundCanvas device.
To install these ROMs, once again use the Manage Sound Fonts & ROMs screen and then drag & drop the ROMs onto DREAMM’s window as described above.
If you have provided all the required files, check the information provided on Manage Sound Fonts & ROMs screen. If everything is in place, it will say “Roland SoundCanvas Emulation Available”.
If you are on MacOS only, you will see a MacOS Internal MIDI option in the emulation section. This represents the built-in MIDI synthesizer that comes with MacOS and can be a great default if you don’t have other options available.
Finally, at the bottom, you’ll find the OPL MIDI option, which leverages a built-in mapping of GMIDI commands to a set of emulated OPL chips. The result is roughly what you might have heard if you had loaded the SoundBlaster or Adlib drivers on your Windows 95 system and selected them as your MIDI device, though DREAMM uses multiple OPL chips to ensure there’s enough polyphony available to handle the more dynamic MIDI-based soundtracks.
Note: OPL MIDI is more of a fun experiment than a super-reliable MIDI player. It is also specifically a GMIDI device, so configuring it for your Roland MT-32 output will involve an additional translation step as the Roland instruments are converted into their approximate GMIDI equivalents.
The next option available to you is to use SoundFonts with DREAMM’s built-in SoundFont synthesizer. Sound fonts have a .sf2 extension, and can be installed from DREAMM’s Manage Sound Fonts & ROMs screen by dragging and dropping them onto DREAMM’s window before running the game. Once installed, DREAMM will detect and offer them as options for playback, both for Roland MT-32 and for General MIDI.
Note: SoundFonts come in all sorts of varieties, so not all SoundFonts are going to work well. Some are very demanding on the CPU, and some just plain don’t sound good in DREAMM. Experiment and share your favorites!
At the very least, you will want to find a good General MIDI SoundFont for use in games that use General MIDI.
DREAMM can also use General MIDI SoundFonts for Roland MT-32 playback by mapping the MT-32 instruments to General MIDI; this is imprecise however. You’ll almost certainly get better results by finding an MT-32 SoundFont, which will attempt to replicate the MT-32 instruments. DREAMM automatically detects whether you’ve configured a GMIDI or MT-32 SoundFont by examining the order of the instruments in the file.
While I can’t claim to have tested a huge variety of SoundFonts, I can at least recommend the fonts I’ve been using:
A more extensive list of fonts can be found in the DOSBox Staging documentation. If you have positive experiences or recommendations of other fonts, feel free to let me know, and I’ll add them to the list!
Your final option is to use a MIDI port, which allows DREAMM to send MIDI commands to virtual or external MIDI playback hardware. Windows users should always see at least one option here, even if you don’t have an external MIDI device, because the OS provides a built-in virtual MIDI synthesizer that does a respectable job of playing back General MIDI.
In addition to the built-in virtual synthesizer, you may also see options for other software and hardware synthesizers. For example, if you install the munt virtual MIDI driver in your system, it will show up as an entry in this menu; this is an alternative to setting up munt directly as described above, and works just as well. And if you have any real MIDI-capable hardware connected to your system, it should be listed as an option.
When configuring for General MIDI playback, you will just see a simple list of devices. But when configuring for Roland MT-32 playback, each device will appear twice: once with (GMIDI Mode) and once with (MT-32 Mode).
For most general purpose devices, you’ll want to select the (GMIDI Mode) variant, which instructs DREAMM to translate the Roland MT-32 commands into General MIDI. However, if you have a real MT-32-compatible device connected to that port, select the MT-32 Mode option instead to send the raw commands in full fidelity to your device. (Yes, this actually works!)
Both the Game Manager and in-game menus provide access to “Advanced Configuration” options. In general, you probably won’t need to tweak these, but they are available to play with in case you wish to alter a game’s CPU speed, frame rate, or reconfigure your joystick mapping.
When you opt to perform advanced configuration, you will be presented with a menu of options. The images here show two common scenarios, one for DOS-based games, and a second for Windows-based games.
Although the specific options presented may vary game to game, the first option in the menu will always be Approximate CPU Speed… and is described below in some detail.
For Windows-based games, there will be an extra option to Set Maximum Frame Rate…, which lets you set a maximum refresh rate for the virtual monitor. This can be useful in graphics-heavy games that have issues running at full frame rate, or as a way to limit your system’s CPU usage in graphically-demanding games.
Following that will be a section for joystick configuration. If you’re running a DOS-based game, then you will see a single Gameport Remapping… option. If you’re running a Windows-based game, there will be a configuration option for 2 joysticks, allowing you to configure axes, buttons, and POV hats for each of two emulated joysticks.
The section below on Joystick Remapping contains additional details.
This menu allows you select the approximate speed of the CPU that DREAMM emulates. The reason this is only approximate is that DREAMM does not model the memory speed or exact cycle counts of the PC; rather, it just counts the number of instructions executed.
So when you specify that you want to run, say, a 25MHz 486SX, it is using an approximation of the number of instructions per second that a CPU of that type could run using a typical motherboard and typical memory of that era. This is not an exact science!
It is also important to understand that DREAMM can run its virtual CPU in one of two different modes:
Fixed Mode execution sets a certain number of instructions that the CPU must execute each second. All emulated peripherals are timed against the CPU’s instruction count like a clock. If your host machine is not fast enough to execute this many instructions per second, then the emulated system runs more slowly in real time compared to its target.
Timed Mode execution sets a maximum number of instructions that the CPU can execute each second, which may actually be set to “Unlimited”. In this mode, all emulated peripherals are timed against the wall clock time. DREAMM will attempt to run at the maximum speed your host will allow, but will throttle back to stay under the specified maximum.
Both modes of execution have their place. Early DOS games generally prefer Fixed Mode, because they were never tested on future fast machines and sometimes have timing or other issues running on a faster machine. For later DOS games and Windows games, Timed Mode works better because you can run the emulation at the fastest speed that your modern system can manage.
DREAMM uses Fixed Mode when the emulated CPU speed is set to 60 MIPS or less (about the speed of a 100MHz Pentium). It switches to Timed Mode when running Maximum speed or if the speed is set above that.
Joystick support in DREAMM comes in two different forms.
For DOS games, DREAMM emulates the traditional gameport interface, which offers four analog axes and four buttons, usually distributed across two joysticks. If you’re configuring a DOS-based game, then you will just have a single Gameport Remapping… option available to you from the Advanced Configuration menu.
For Windows games, DREAMM emulates two joysticks, each with up to 6 axes, 10 buttons, and 2 POV hats. In this case you will find separate configuration options available on the Advanced Configuration menu for each joystick, where you can configure the mapping of each item.
To remap any of the axes or buttons, simply click on the entry or select it via the keyboard. Once selected, you will see a message like the one below, asking you to either wiggle the axis you want to assign, or press the button or key you want to assign.
In case of mapping an axis, you can press the – key prior to moving the axis in order to map it reversed from the normal orientation.
In addition to wiggling an axis or pressing a button or key, you can use one of the three buttons at the bottom for special cases:
If you run DREAMM from the command line, you can specify options that will configure how it runs, or execute certain commands entirely from the command line. To get a list of all possible commands and options, run:
dreamm -help
You can get more detailed help for each option by appending the name of the command or option to the help command:
dreamm -help <command-or-option-name>
Note that when specifying commands or options, you only need to provide enough characters to uniquely differentiate it from all other options.
If you run DREAMM like this:
dreamm -run <path-to-game>
then DREAMM will scan the provided <path-to-game> directory to see if all the necessary files are present to run one of its known games. If all required files are found, DREAMM will bypass the frontend entirely and immediately begin running the provided game.
As a shortcut, you can omit the -run command and just provide the path directly.
You can also specify override values for various options on the command line:
dreamm -option <name>=<value> […]
The various supported options you can specify for <name> match the values from DREAMM's config.json files. Here is a list of some of the more useful ones, along with the valid options for <value>:
| Option Name | Possible Values |
|---|---|
| window/fullmax | normal or maximized or fullscreen |
| window/aspect | correct or incorrect |
| window/stretch | smart or evenonly or maximum |
| window/effect | basic or crt or epx |
The -option command-line parameter can be used multiple times to specify multiple options. For example:
dreamm -option window/fullmax=fullscreen -option window/effect=crt
will force all games to run in fullscreen mode with the CRT scaling effect.
Note: Any options specified here apply to all games launched within that session. Thus, it makes the most sense to combine this feature with the direct game launching described above to apply to a single game.
You can install games from the command line by executing:
dreamm -install <path-to-image-file-or-folder> […]
This command will scan the provided <path-to-image-file-or-folder> for installable games, exactly as if you had dragged the given folder or file onto DREAMM’s game manager. If you are installing a multi-disk game, you can specify multiple paths one after the other.
You can also install upgrades or addons, via the -upgrade option:
dreamm -upgrade <path-to-game> <path-to-image-file-or-folder> […]
In this case, the path-to-game must be a valid, recognized game, same as if you were launching it via the -run command.
You can display the version of DREAMM by running:
dreamm -version
In addition to showing the current version information, this will also initiate a network check to see if newer versions are available. If so, this information will be displayed as well.
The following switches are available but not commonly used:
| -help | Lists all supported command line options. Use -help <option> to output details information about a specific options or command. |
| ‑list | Dumps out a list of all supported games and game variants. The list starts with the name of the game, followed by the list of all known game variants, followed by known demos, add-ons, installers, and upgraders, in that order. |
| -userpath? | Displays the path where DREAMM stores its config.json file and other data. DREAMM also attempts to open that location in Windows ExplorerFinderyour distro’s file browser. |
| ‑noconfig | Causes DREAMM to ignore the contents of its config.json file for this session. This might be useful if you want to ensure all settings are at their defaults prior to using -option to configure things. |
| -sdl | Tells DREAMM to skip using OpenGL for video rendering and instead use SDL, just like previous versions of DREAMM did. Doing this will disable some CRT scaling effects but otherwise DREAMM should operate basically the same. |
| -opengl | Tells DREAMM to use OpenGL for video rendering. This is most useful on Windows, where the default renderer is Direct3D. |
| ‑debug | Invokes DREAMM’s built-in debugger on the next game launch. The debugger is really for my personal use, and is officially unsupported, but you can play with it if you want. Type help for a list of commands. |
| ‑window | Forces DREAMM to run in a window. Equivalent to -option window/fullmax=normal. |
| ‑fullscreen | Forces DREAMM to run full screen. Equivalent to -option window/fullmax=fullscreen. |
Honestly? For fun. If you check out my programming history, you might get the impression that I’m rather into writing emulators.
I was inspired after doing an interview with mixnmojo.com about my past Windows ports of the LucasArts SCUMM games. I realized I was still salty after all these years about how they were handled, so I started thinking about how I could resurrect them, at least in spirit.
Out of this came DREAMM, which was my attempt at re-creating the experience of those Windows SCUMM ports, but using emulation under the hood instead of recompiling the source code. Since then, the project has obviously expanded well beyond my initial ideas!
DREAMM is what I like to call a curated emulator. It combines raw x86 CPU and peripheral emulation (think 86Box), with API-level emulation of DOS and Windows (think DOSBox and WINE), combined with an integrated frontend to make it all very approachable even to novice users.
The way it works is that the API-level OS emulation (either DOS or Windows) loads the executable code into memory, and feeds it to the x86 emulator to start running. If the code interacts directly with hardware (e.g., a DOS program talking to the VGA card or a SoundBlaster), then DREAMM works like a low-level PC emulator, simulating hardware behaviors. When the code attempts to talk to the OS (either DOS or Windows, or even the system BIOS), DREAMM intercepts those calls and performs the requested actions as if the real OS was present.
Both DREAMM and ScummVM allow older games to run on modern systems, but the similarities end there.
DREAMM is an emulator, meaning that it runs the original game code and attempts to simulate the hardware environment it originally ran in. This involves writing code to emulate the CPU and other components in the system, based on a mix of public documentation and reverse engineering efforts.
ScummVM, on the other hand, is a program that reimplements the original game’s behaviors from scratch. This involves reverse engineering how the original games worked, and replicating that behavior as closely as possible. Many games ran on top of a common engine, which for those games allows ScummVM to focus on implementing just the engine rather than all the detailed game logic.
In the end, for those interested purely in the SCUMM adventure games, the two programs are roughly equivalent. But if you’re interested in other LucasArts games, DREAMM might be closer to what you want. Try them both!
Both DREAMM and DOSBox are emulators that can run DOS programs in a simulated hardware environment.
The primary difference between the two is that DOSBox is a general-purpose emulator, whereas DREAMM provides a curated emulation environment. This means that DREAMM can handle all the installation and configuration of games for you, saving you from having to mess with the details of remembering how to set up old DOS programs.
Another key difference is that DREAMM can also emulate FM-Towns and Windows-based programs. Although it is possible to run Windows programs on DOSBox, it requires a full Windows installation to go along with the game. DREAMM, by contrast, emulates Windows at the API level (much like the WINE project), and thus provides a lighter weight environment for running Windows games.
Both DREAMM and WINE can emulate Windows programs on multiple platforms and architectures without the need for Windows itself.
As with the comparison to DOSBox, above, a significant difference between the two is that WINE is a general-purpose emulator, while DREAMM provides a curated emulation environment. Furthermore, DREAMM’s focus is strictly 20-30 years in the past, while WINE aims to provide much broader and more recent compatibility.
On top of this, DREAMM can also run DOS and FM-Towns based programs, which allows it to provide a uniform experience for the Lucas family of games as they transitioned from DOS into Windows.
The most obvious answer here is that, if you’re a macOS or Linux person, there’s no way to run these games natively. But DREAMM provides several advantages over running natively even on Windows systems.
To begin with, setting up these older games often involves patches and hacks to get them running on modern systems. DREAMM removes all the guesswork surrounding this and lets you just play the games with little effort.
DREAMM also manages video and sound using modern techniques, which provides greater compatibility with older games, and also smooths your modern experience. For example, many games only supported full screen, while DREAMM allows you to run all games in Windowed mode. Further, you can rest assured that DREAMM will never change your monitor resolution and mess up your desktop.
While I generally support making projects open source, the main reason I haven’t released the DREAMM source code is that being open source invites collaboration, and at this point I really just want DREAMM to be my own project.
I do plan to eventually open source at least some portions of the code (the CPU emulation seems like a prime candidate). And if I ever decide I’m completely finished with DREAMM, I hope to release the full sources before I wash my hands of it. But for now, I plan to keep the code internal so I can focus on taking the project in the directions I want without outside pressure.
Hell no! I’ll admit it: I’m an AI-hater, and will never intentionally use any AI-generated or written code in DREAMM.
To me, using AI to write code gives all the fun parts of programming (designing, architecting, coding) to a machine, while sticking the humans with all the worst parts of coding (reviewing, debugging). I have loved writing code since I was a little kid; why would I want a machine to do that for me?
I’m also a huge stickler for understanding almost all the code that goes into my projects. If an AI wrote big chunks of it, that would bug me to no end.
The Linux installation/packaging situation is annoyingly fragmented. There is no clear single preferred option, and if I’m going to make a Linux package, I’m only going to do it once.
On top of that, DREAMM’s requirements are quite minimal: SDL and libcurl, both of which are generally on any gaming-capable Linux machine already. So one of the main advantages of using a package manager—namely dependency management—isn’t really much of an advantage.
Yes and no. DREAMM uses your graphics hardware to copy the game graphics to your screen and to render the user interface. Your system’s GPU is also leveraged to apply any shader effects like epx or CRT simulation. For most GPUs, this is all pretty low-effort work.
On the other hand, games which render 3D graphics actually talk to DREAMM’s built-in software 3D renderer, which distributes the work of drawing graphics to your CPU, not your GPU. This helps ensure consistency in behavior across all systems, and saves me the effort of dealing with GPU compatibility issues.
For DOS games, DREAMM’s Super VGA emulation is based around the capabilities of the S3 Trio64 hardware, which is a super common 1995-era video card that only supports 2D graphics. For the era of games that DREAMM supports, this is sufficient and is also what the games expect.
For Windows games, DREAMM supports an abstract video card with the same resolutions offered by the Trio64, along with an abstract 3D interface for 3D games. While it is in theory possible to offer both higher resolutions and non-4:3 ratio resolutions, most games in the late 90s were still targeted toward standard-aspect resolutions and multisync monitors, which generally topped out at 1600×1200. So to maximize compatibility (and honestly aesthetics), DREAMM sticks to only these resolutions. Turning on the CRT effect might also help make you care less.
DREAMM uses my own homegrown SoundFont renderer, which I developed for another project. While FluidSynth has some capabilities mine doesn’t (specifically chorus and reverb), I’m happy enough with the way it sounds.
Also FluidSynth is LPGL-based, which means it would be one more plugin to juggle. With my own implementation, I can link it directly into DREAMM, and also offer it for licensing.
Maybe? As we enter the 2000’s era of gaming there are several limitations in DREAMM’s architecture that will be impediments to expanding too far into the decade.
So any game that only requires 1 CPU, under 250MHz or so, and doesn’t require shader support is still fair game. Anything with steeper requirements is off the table, at least as of now.
Well, you can try! From the command line you can run dreamm -help launch and find a description for how to run arbitrary programs. But we warned....
Caveat: while DREAMM is fundamentally a general-purpose emulator, it has been tested with a fairly limited set of games. Further, I only tend to implement stuff I’ve seen before, so if a game calls a BIOS function or Windows API that is new, you’ll likely crash out with an error. There is a spot to discuss running arbitrary games on our Discord Server if you really want to give it a go.
Not at this time. I have little interest in trying to make games that were designed for computer inputs (mouse, keyboard, joystick) work in a touchscreen environment. I’m also not interested in dealing with app stores and all the hoops necessary to make DREAMM available on such platforms.
Yes! DREAMM has already been used to power the DOS emulation in both Tetris Forever and Rayman 30th Anniversary. If you are interested in licensing, contact me.
(However, note the caveat above. It may take some—or perhaps even a lot of—work to get your particular game running, especially in the case of Windows games.)
This is just the business name of the holding company I use for DREAMM licensing.
DREAMM sends limited telemetry back to my personal server to help me understand situations that lead to crashes or graphical issues or unrecognized games. If you wish to opt out of this, you can do so from the DREAMM Options and Tools screen.
Since telemetry is a dirty word for some, I’m opting for full transparency. Here is a complete list of all the situations where telemetry is sent:
The specific information sent is:
The unique ID is generated whenever a new config.json file is created, and is based only on the current time and your system clock. No other identifiable information is used when creating it.
Even with telemetry disabled, DREAMM still creates a JSON-based record and saves it to the logs directory in your user path. Given this, you can see exactly what is being sent if you’d like to confirm. It also means you can collect these logs and email me if you are encountering issues but refuse to enable telemetry.
Although DREAMM is my personal project, it would never have gotten to where it is today without the help of many other folks behind the scenes who helped me out with testing, sourcing alternate versions, and providing feedback.
In particular, I want to call out:
In addition to the short list above, I also offer a big THANK YOU to all these folks who have also contributed bug reports, feature suggestions, and general feedback along the way: