Dungeon Keeper Gold Edition in Linux using DOSBox on a multimonitor setup

As the writing of this post, GoG winter sale is on, and Dungeon Keeper Gold Edition costs just $1.50. I have very fond memories of this game (slapping your minions never gets old), I used to play it a lot when I was like 6 years old.

I was expecting the Windows version of the game (with OpenGL support), but instead, GoG sells the MS-DOS version. This means that the graphics options are very limited.

Even so, I was still excited for the game. Fortunately, DOSBox is available for Linux, and surprisingly, the version that is available in the Ubuntu repositories is quite recent.

First I extracted the files from the game installer using innoextract, but when I tried to launch the game, the executable complained about the CD-rom.

So I ran the game installer using wine and copied the game folder from the wine prefix.

Inside the game folder, GoG is kind enough to include a prefilled configuration file for DOSBox, dosboxDK.conf in this case. I ran the game executable using this configuration file through DOSBox.

dosbox -conf dosboxDK.conf KEEPER.EXE

… And disaster. The game launches in fullscreen mode and alters my displays settings, resolutions and also it looks split across my monitors.

At this point I have to mention that I have a multi monitor setup, a 4K monitor as primary display and a 1080p monitor in portrait to the right. As shown here:

DOSBox uses SDL to handle graphics and inputs. SDL does not like multi monitor setups (at least without some thinkering).

So, after some digging online, I managed to run the game in fullscreen, in my primary display, without screwing the resolution.

First I edited the dosboxDK.conf. Under the [sdl] section, is the fullresolution option. Its value should be the resolution of the monitor where the game will be displayed. In my case:

fullresolution=3840x2160

Next, I needed to “tell” SDL which monitor to use. I found that, fortunately, the SDL_VIDEO_FULLSCREEN_DISPLAY environment variable exists. This variable is an unbelievable easy solution. Its value is the index of the desired display starting from 0.

I made a simple script to launch the game:

export SDL_VIDEO_FULLSCREEN_DISPLAY=0
dosbox -conf dosboxDK.conf KEEPER.EXE
exit 0

Now the game works great without messing with my display settings.

If you are going to play this game, remember to toggle the “hi res” mode by pressing ALT+r in game.

I hope someone finds this post useful.

3 Likes