Jump to content
LaunchBox Community Forums

MS-DOS games "best practices" and avoiding vendor lock-in


dominikabra
 Share

Recommended Posts

Disclaimer:

This thread aims at providing some useful hints for those who aim at creating/curating their own MS-DOS game collection. It contains MY opinion and suggestions, but as everything in this universe, there's bound to be room for improvement. 

Regarding the "avoiding vendor lock-in": I own a lifetime license for LaunchBox and plan on using it for a VERY long time. However, only God knows what will happen, so better safe than sorry.

Preface:

I though I could make a little tutorial with some of the knowledge I've gathered about making your own collection of MS-DOS games to run with DOSBOX and Launchbox (at least, for now). Needless to say, eXoDOS is an unbelievable effort/project that will make your life easier than cutting hot butter if its contents suit you: basically, being an English speaker and accepting the so-called "best version" of a game as the one you would definitely play. If so, you've hit the greatest jackpot. (Almost) all MS-DOS games ready to play and integrated in Launchbox. OK, some of them have missing art, but that's something minor considering the effort eXo and the team have put into the collection and YOU will have to put into it (basically zero). Huge thanks to eXo and the team (absolute madmen)!

Introduction:

Now for the content itself. I used to use D-FEND Reloaded as my front-end for DOS games back in the day. While it made things easy and convenient, it was abandoned and I was stuck with some proprietary way of configuring and executing games and their corresponding configurations. Porting to Launchbox (or any other front-end) was not trivial and would require some (a lot of) tinkering. Another Launchbox user mentioned they were using a .BAT to launch every game and it turned out to be a great solution, triggering my current collection "architecture".

Like in the certificate realm, "you have to trust somebody in the end". So I will be trusting DOSBOX and its multiple forks will be around for quite a long time. If somehow all of them get discontinued, you can always create a Virtual Machine with whichever O.S. you're using (I'm a Windows guy) and fit all your stuff in there. That being said, let's get to business.

Best Practices and avoiding vendor lock-in:

As I said, using D-FEND (or any other front-end) was convenient but not future proof at all. Using a simple .BAT will allow to launch any game using a simple menu. You will be wondering, "eXoDOS already does that so why bother?" Well, I'm a spaniard and I've grown with spanish versions of many games. Even though I'm quite able at english, I'd rather play the games the way I played them I-don't-want-to-remember-how-many-years ago. This is why I gather the english (usually the original version) and spanish version of the games (if available). Same would apply to any non native English speaker. It's a matter of preference.

Also, I want to have both the floppy and CD versions of games (if existed), with and without expansions that changed gameplay, with and without speech packs, etc. to compare and enjoy both. On collections like eXoDOS (major Kudos again) that's not possible since there's usually only one "best" version of each game.

1 - Naming conventions:

Launchbox will ignore anything in the game's folder name that's between parenthesis, so I chose to put the year, language, media and graphics version in there. Games such as Sierra and LucasFilm/LucasArts had AGI/SCI or EGA/VGA versions, so that would allow me to tell between them. An example:

The Secret of Monkey Island (1991) (Spanish) (Floppy) (EGA)

This allows telling at a glance the year (if multiple games with the same or very similar name were created), language (mainly english or spanish, although there may be some MULTI3 or MULTI5 games), media (floppy or CD version) and graphics (CGA, EGA, VGA, SVGA, AGI, SCI, etc.). This also allows to drag and drop your games inside LaunchBox so it can recognize and scrape them for automatic media download.

Inside each game's folder there's a "C" folder (mounted as "C:") containing the installed game, a "Disk" folder (mounted as "D:") containing ISO images, floppy images, patches, etc. in their original form and an "Extras" folder containing manuals, guides, copy protection wheels, etc. This is the only part I will use LaunchBox's native feature to open the manual by providing the path.

2 - .BAT structure for avoiding "vendor lock-in":

This is aimed at providing a solution that's agnostic to the front-end you will be using. I can simply navigate to the corresponding folder and double click on the game's .BAT to launch it from within Windows Explorer. But, like many, I like things pretty and my OCD FORCES me to use LaunchBox and its beautiful cover layout, so I tell it to use that .BAT instead of the game's own executable. Of course, you will have to disable the option that makes LaunchBox use DOSBOX for the game since you will be already launching it through the .BAT/.CONF files.

Such .BAT is calling a .CONF file that will load the desired DOSBOX version (vanilla, ECE, Staging, Pure, etc.) depending on the best results along with a default .CONF file (that holds the main and common parameters for every DOSBOX game) and a secondary .CONF file that allows overriding some of those parameters. I like games with original aspect ratio and use "openglnb" renderer for (near) pixel perfect results. Also, ECE integrates Munt emulator and 3Dfx support so there's nothing else required (apart from an initial system wide Munt-32 installation pointing at the ROM files). In case you want to use Sound Canvas, a Fluidsynth soundfont will also have to be installed in your system.

@ECHO OFF
..\..\..\DOSBOX\ECE\DOSBox.exe -conf ..\..\..\DOSBOX\ECE\common.conf -conf "Monkey Island.conf"

As you can probably tell, I'm making this portable and path relative to the current location. You will only have to be consistent about the DOSBOX and GAMES folders locations. In my case, the folder structure looks like:

image.png.63a7ae1b785f14f12ed235c2a4051255.png

The .BAT is located inside each game folder (in this case, inside "The Secret of Monkey Island (1991) (Spanish) (Floppy) (EGA)" ) so it goes up 3 folders and then enters the DOSBOX\ECE folder to use the "Enhanced Community Edition" executable using the "common.conf" file located in the same folder. The last .CONF file ("Monkey Island.conf") contains the overrides and specific mounts for the game (in case you need to mount a CD image, for example). In case you ever wanted to switch from ECE to any other fork, some "find and replace" using Notepad++ makes it easy to change the configuration in all .CONF files with a single click.

The contents of the second .CONF are:

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.

@echo off
mount c .\C
imgmount d .\Disk\Secret.cue -t iso
c:
Launch.bat

In this specific game, we need the C drive, the ISO image mounted and calling for the game launcher "Launch.bat". This is named the same in every game to avoid unnecesary overhead. The contents of the "Launch.bat" that allows to launch the game with some options and also launch the setup. This "Launch.bat" will vary and can become really time consuming if you want all the bells and whistles MS-DOS had but DOSBOX doesn't. For instance, "CHOICE" menus are limited and require some (a lot) extra steps to work like you would want them to.

Now again, why bother doing that? Well, in my case I want to be able to configure the game in every possible way using any graphics configuration and sound card type. The reasoning behind that is making the procedure as modular and layered as possible, so having to change one of the "layers" (if ever required) is as hassle free as possible. That's why there's a "Monkey Island.bat" that launches the desired DOSBOX version, and loads two .CONF files (one overriding some parameters of the other) which launches another "Launch.bat" which will prompt with a launch menu and in the end, will launch the game (or setup).

@echo off
d:

:menu
cls
echo.
echo      **************************************************
echo      *        The Secret of Monkey Island (CD)        *
echo      **************************************************
echo      *                                                *
echo      *    [1] Play game (Spanish)                     *
echo      *    [2] Play game (English)                     *
echo      *    [3] Play game (German)                      *
echo      *    [4] Play game (Italian)                     *
echo      *    [5] Play game (French)                      *
echo      *                                                *
echo      *    [9] Exit                                    *
echo      *                                                *
echo      **************************************************
echo.
choice /c:123456789 /N
if errorlevel 9 goto end
if errorlevel 8 goto menu
if errorlevel 7 goto menu
if errorlevel 6 goto menu
if errorlevel 5 goto italian
if errorlevel 4 goto german
if errorlevel 3 goto french
if errorlevel 2 goto english
if errorlevel 1 goto spanish

:spanish
cd SPANISH
MONKEY.EXE
goto end

:english
cd ENGLISH
MONKEY.EXE
goto end

:german
cd GERMAN
MONKEY.EXE
goto end

:italian
cd ITALIAN
MONKEY.EXE
goto end

:french
cd FRENCH
MONKEY.EXE
goto end

:end
exit

This launcher allows selecting the language to be used for the game by changing into the corresponding folder inside the CD and launching the game for such language. Easy peasy. This could do (almost) anything you can think of it you used a little DOS scripting back in the day. It looks like:

image.png.b3dfc1bba9497f1d9d1f9ebd7d115fd1.png

Thus, by pressing the corresponding number you can launch the desired game version. That would allow to launch the "setup" executable (if any) and configure graphics, controls, sound, etc.

3 - Combining multiple games:

In case you have multiple versions of the same game, you definitely should use the "Combine" feature built into LaunchBox. That will allow you to select a default version to launch when double clicking and also the other versions with a simple right click. In my case, for instance, I have 5 different versions of "The Secret of Monkey Island":

image.png.6e2b8d497efeb81f80f067c0f5dba7f3.png

So I can choose from them by right clicking on the game:

image.thumb.png.8d4e8fa03905e8882e936bb735519e7c.png

Such configuration can be also performed using the "additional apps" menu inside each game. Note the "make default" (self explanatory) button at the bottom right:

image.thumb.png.52e891e1dc39988fb9b2223a49903960.png

That being said, it's everything I wanted to cover. 

Hope this helps somebody!

 

Edited by dominikabra
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...