Dreamcast:ScummVM

ScummVM, the emulator for classic PC adventure games like The Secret of Monkey Island, King’s Quest, and Beneath a Steel Sky, has a port for the Sega Dreamcast. This is an option for people with a Dreamcast who would like to enjoy these games on a CRT or just play with a controller on an already existing setup. This guide is intended for use with an Optical Disk Emulator (This was tested with a TerraOnion MODE), but burning your own CDs is technically supported as well.

Requirements

 * 1) ScummVM (Tested using 2.5.1) You’ll need to navigate to https://www.scummvm.org/downloads/ and look for “Dreamcast Plain Files”. This won’t be linked directly because such a link may become obsolete once a new version of these files is generated.
 * 2) Games One or more games that you can run in ScummVM. Compatibility with the Dreamcast will be quite complex. Your mileage may vary. In general, it makes sense that the more modern games supported by ScummVM will not work, but please let me know if you find any that do. Some of these games are available on GOG, and some of the original versions are on archival sites around the web. However, no matter where you get them, the games are likely to have a bunch of additional stuff with them you don’t need. Fortunately, the ScummVM Wiki will tell you exactly which files you require. Navigate to this link: https://wiki.scummvm.org/index.php?title=Category:Supported_Games  From here, you should be able to find the title you’re looking for. Click on it and look for the “Required Data Files” section. There you should find a list of the files that you actually need to run the game. You’ll have to extract these files from the copy you’ve downloaded and stick them in a folder (It's probably fine to leave in additional stuff, but it takes up more space). Sometimes there will be additional instructions in this section, so be mindful of those. Also, sometimes entries in the required files list will have one or more asterisks (*). This is a “wildcard”. It means that you want all the files whose names contain the characters before the asterisk if it’s at the end, or after the asterisk if it’s at the beginning. This goes for the names and the file extensions, so you may need to turn on visible file extensions in Windows Explorer.
 * 3) A Dreamcast Memory Card ScummVM uses the Dreamcast’s VMU or memory card to save your game. Only necessary if you want to save.
 * 4) BootDreams (Tested using 1.0.6c) The Dreamcast likes images in the .CDI format, and this is one method of creating them. There may be another method, and it would be beneficial to find one. One reason for this is that this guide links to a .EXE file, and your browser or Windows will most likely refuse to download it on the grounds of its being a virus. This is in no way an endorsement of the safety of this executable. In testing it has worked and not caused any problems. Additionally, this is from the location linked to, by way of its creator, dcemulation.com, in ScummVM’s official documentation. This application was created by the Dreamcast community a long time ago, likely before these antivirus protections were even created.  To get around the antivirus block follow these steps on Windows 10:
 * Click the Windows “Start” button
 * Click on the “Settings” cog
 * Click on “Updates & Security”
 * Click on “Windows Security” in the side panel
 * Click on “Open Windows Security”
 * Click on “Virus & Threat Protection”
 * Click on “Manage Settings”
 * Turn off “Real-time Protection” and “Cloud-delivered Protection”

Now you can download the file here, if you accept the risk: https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/bootdreams/bootdreams_106c.exe Remember to turn the antivirus settings back on after downloading!  To alleviate the necessity of these steps, if someone knowledgeable about creating .CDI’s for the Dreamcast could suggest some alternative software to try out. Additionally, the source code for BootDreams is available so we could see if it’s doing anything particularly special, or wrap it an an .MSI: https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/bootdreams/bootdreams_106c_src.zip

Procedure

 * 1) Extract the ScummVM Plain Files to its own directory The contents should look something like this: ScummVM-Plain-Files.png
 * 2) Create a CDI subfolder We will now create the folder that we will shortly be turning into a .CDI file. Anything in that folder will be written to the .CDI file, and we don’t need most of these files. For the sake of simplicity, let’s create a subfolder here and call it “CDI”.
 * 3) Copy the ScummVM files you need to the CDI folder The main files we need are “IP.BIN” and “SCUMMVM.BIN”. Copy and paste those to the CDI folder. All of the .PLG files are actually plugins for ScummVM. Games for different engines (by different developers: Lucasarts, Sierra, Activision, etc)  require different plugins. For our purposes, we’ll focus on LucasArts games since they’re simple to get working. Here is a list of engines matched to games, which should help correlate them to .PLG files (“AGI.PLG” and/or “SCI.PLG” for Sierra, “BLADERUNNER.PLG” for BladeRunner), but there isn’t much documentation on this specific to Dreamcast: https://wiki.scummvm.org/index.php/Engines  We’ll need “SCUMM.PLG” for LucasArts, so let’s copy that to “CDI” as well.  Lastly, you’ll want “DETECTION.PLG”. This plugin detects the games that you’ve included on the disk. Originally this application was intended to simply boot other disks that you’d burned games onto. It can still function that way. However, with this plugin you can select from a list of multiple games that you’ve burned to a single disk instead which eliminates the need for disk swapping, and in the case of ODE’s, disks altogether. For our purposes this is far more useful and so this guide won't go into much detail about how to burn games to their own disks. Go ahead and copy “DETECTION.PLG” to the “CDI” folder.
 * 4) Put the plugins in their own subfolder Create a subfolder inside of “CDI” called “PLUGINS”. Put all your .PLG files (“DETECTION.PLG” and “SCUMM.PLG”) inside it. This step was added in ScummVM version 2.5.0.
 * 5) Put your game files in their own subfolders Each game should have its own folder inside the “CDI” folder. Inside, you will place the required files we looked up earlier. Your “CDI” folder should now look like this, but can contain multiple game folders: Cdi-Folder.png  And your “PLUGINS” folder should look like this: Plugins-Folder.png
 * 6) Create the CDI with BootDreams Install BootDreams through the executable you downloaded earlier and Launch it. You’ll see three inputs: Click on “Browse” next to the “Selfboot folder” input and navigate to your “CDI” folder. The “CD label” input shouldn’t really be important, but here it's labeled “ScummVMDC”. Keep “Disc format” as “Audio\Data” Boot-Dreams.png  Click “Process” BootDreams will ask if you’re sure, click yes.  Sometimes BootDreams has asked me to specify the “main” BIN file or something similar. In testing selecting “SCUMMVM.BIN” worked fine. This shouldn’t be an issue.  You’ll now have to specify where you want to save the resulting .CDI on your filesystem.  After a loading bar, which can be long depending on the size of your games, you should now have a CDI file.
 * 7) Load it onto your ODE or burn it to a CDR This was tested using a MODE with an SD card so a folder was created called ScummVMDC on the SD card’s “Dreamcast” folder then put this .CDI file into it just like with any other games. For other ODE’s you’ll have to refer to their documentation, but it should be the same as loading any other game.  As for CDR’s this guide will have to refer back to ScummVM’s documentation which suggests the use of DiscJuggler, Nero, or Alcohol120%.  It’s worth noting that some people have reported benefits to using “Dummy Files”. These are files filled with junk data meant to take up space in the .CDI file so that it’s about as large as a CDR’s capacity, 700MB or so. This may be beneficial to CDR users, but testing hasn't shown any issues without it on the MODE. BootDreams will create one for you if you navigate to Extras > Dummy File then select the size of your CDR.
 * 8) Boot ScummVMDC on your Dreamcast If everything’s working, you should see a short loading bar after the regular Dreamcast splash screens during which the detection plugin is detecting your games. If no games are detected then you’ll see a screen that prompts you to insert a game disc. If you have a game disc compatible with ScummVM you can supposedly swap it in then. If your games were detected successfully then you should see a list of them. Navigate with the joystick and select one with A to begin. You can find a list of controls here: https://docs.scummvm.org/en/latest/other_platforms/sega_dreamcast.html#controls  You’ll have to navigate to ScummVM’s menu with the start button to save to the VMU. Left trigger pulls up the on-screen keyboard.

.CDI Size
If you’re burning a disc, then you’ll want to keep the total file size of your .CDI under the file size of your CDR. However, it would be interesting to know about how large you can go using an ODE. Perhaps the Dreamcast’s RAM will limit the file size of the .CDI it runs, but someone more informed will have to answer this. It would be nice to fit several entire libraries into one .CDI on an ODE, but that just seems too good to be true. Also, the loading times seem to be longer depending on the size of the .CDI file. Because of this it may be useful to create a LucasArts.CDI, Sierra.CDI, and different ones for other developers.

Also, in testing Lighthouse: The Dark Being on a .CDI by itself, after a few long load times the game booted. It even played the entire intro cutscene flawlessly, but it crashed before loading into gameplay. This may also just be a compatibility issue, and it seems like a promising result.

Linux
There is a documented process for creating a working CDR on Linux. It would be helpful if anyone could divorce this guide from the CD related parts to just create a .CDI instead, because it would likely eliminate the need to use BootDreams.

The relevant information is here: http://mc.pp.se/dc/cdr.html

Sources and Thanks

 * Marcus Comstedt
 * kremiso on the ScummVM forums
 * digitall on the ScummVM forums
 * The ScummVM Discord
 * Dreamcast.nu
 * Northern Lights Retro Gaming
 * Dcemulation.org