top of page

DOSBox Staging: Why do GOG menus look bad?


This is my quick explanation and DOSBox Staging team workaround for why GOG menus created for some retro classics look fine under vanilla DOSBox bundled with the game, but look bad under DOSBox Staging and what we can do to fix this.


As retro sim fans we've probably got one or more retro sim releases from GOG and some of these classic DOS games have a little DOS menu added by GOG. These menu may allow you to run an installer to set graphics and sound options, or play the game in a different language.


Before we start


As an example I've be using my GOG release of Subwar 2050 Complete. It has been installed using GOG Galaxy and the installation folder is found at D:\Program Files (x86)\GOG Galaxy\Games\Subwar 2050. Obviously your installation folder may be different.


GOG menu under vanilla DOSBox

If we run Subwar using the GOG added icon, vanilla DOSBox is started and we see the GOG menu.


Everything looks good and we can run our game with vanilla DOSBox.






DOSBox Staging


But we want our aspect correct, CRT like graphics, we want our MT-32 or fluidsynth midi, we want all those extras we don't get with vanilla DOSBox. So lets create a DOSBox Staging configuration file. I created mine in D:\games\dos\Subwar 2050\conf\Subwar2050-staging.conf.


GOG menu in text editor
GOG menu in text editor

So the menu is defined in the GOG DOSBox config file dosboxSUBWAR_single.conf in the Subwar installation folder. Lets take a look.


Well that menu doesn't right, what's happened? The text looks ok but the double border characters look all kinds of wrong. Well it's due to character encoding.


Character encoding


We deal with letters, words, sentences, computers deal in numbers. All character encoding is about, is converting letters into numbers, so your pc can deal with it. And there's more than one character encoding.


DOS and vanilla DOSBox uses a character encoding called codepage 437, this is the character encoding used to create the GOG menu, with the nice border, and set the yellow text and green background colours.


The text editor uses a different character encoding called UTF-8. Some of the characters are the same like the alphabetic and numeric characters, but the border, text and background colour setting characters aren't, but the text editor tries it's best and shows us those weird characters instead.


No problem then, we'll just copy the autoexec section from dosboxSUBWAR_single.conf into our DOSBox Staging config, change the mount commands to point to our Subwar installation folder and create a DOSBox Staging shortcut using our new Staging config, fire it up and it should all be good.


For a good cause


GOG menu run from DOSBox Staging config file
GOG menu run from DOSBox Staging config file

Well that kinda works, in fact it actually does work. You can choose a language option or set game settings and it works as intended, it just doesn't look as intended!


It turns out that while DOS and vanilla DOSBox use codepage 437 character encoding, DOSBox Staging has switched to using UTF-8 in their configuration files. But why you ask? Well UTF-8 has an extensive set of characters, not just English characters, but characters from a multitude of languages from around the world.


If a DOSBox Staging user wants to use his native language for folder names, DOSBox Staging is jolly well going to support them. Classic DOS gaming knows no international borders! Retro flight sim fans of the world UNITE!


Workaround


Well it turns out the DOSBox Staging team understand we want to have our free cake and eat it! So a workaround was implemented. The configuration file continues to use UTF-8 character encoding but a DOS batch file will use codepage 437 character encoding. They really are too good to us!


What this means is:


  • We can create a batch file in the Subwar installation folder, I let my imagination run wild and chose gogmenu.bat and copy the menu into this batch file.

  • Call the batch file from the DOSBox Staging config file.



gogmenu.bat batch file
gogmenu.bat batch file

So my DOSBox Staging config file now looks like this:

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount C "D:\Program Files (x86)\GOG Galaxy\Games\Subwar 2050"
mount C "D:\Program Files (x86)\GOG Galaxy\Games\Subwar 2050\cloud_saves" -t overlay
c:
call gogmenu.bat

We use the call command as we are calling a batch file from within the DOSBox Staging autoexec (batch file) section. Now when we run DOSBox Staging with this config file we get....



GOG menu running from gogmenu.bat
GOG menu running from gogmenu.bat


SUCCESS!!


References


Comentários


bottom of page