Laaca

Czech republic, 05.09.2025, 05:34 |
SDL for DOS and Diablo for DOS (Developers) |
On Czech forum High-Voltage.cz was few days ago mentioned the starting support for DOS in Diablo source port
DevilutionX.
Webmaster says that it works for him in DosBox without problems.
I tried it on two physical DOS machines. On the first one it does not work at all (error during video mode initialization) and on the second machine plays the intro but after that it crashes with exception fault and with the register dump.
I have also third DOS machine and I plan to test it there too.
However, it is interresting that all ports of Diablo/DevilutionX are based on SDL library, including the DOS port.
I know that years ago the DOS support in SDL was discussed but was never seriously started. Now there are real patches which add some basic support for DOS. DevilutionX uses this branch and there is also "rebase branch".
In both cases it is SDL 2 port.
I have not looked into sources yet but I suspect a bug in the VESA VBE code causing the error in the video mode initialization on my primary DOS computer. I suspect that code asks VBE for the mode list and examines the returned modes. Problem is that some VBE implementations use only one buffer which leads to rewritting the buffer with modelist after 4F01h call. --- DOS-u-akbar! |
Zyzzle
01.02.2026, 09:38
@ Laaca
|
SDL for DOS and Diablo for DOS |
> On Czech forum High-Voltage.cz was few
> days ago mentioned the starting support for DOS in Diablo source port
> DevilutionX.
> Webmaster says that it works for him in DosBox without problems.
> I tried it on two physical DOS machines. On the first one it does not work
> at all (error during video mode initialization) and on the second machine
> plays the intro but after that it crashes with exception fault and with the
> register dump.
> I have also third DOS machine and I plan to test it there too.
I have looked and looked at Github and the high-voltage.cz site, but can find no DOS binary of DevilutionX. All I see is source, and it looks difficult to compile a working binary.
Is there a pre-compiled binary available anywhere? I'd like to try this out in bare metal DOS. |
tkchia

01.02.2026, 11:28
@ Laaca
|
SDL for DOS and Diablo for DOS |
Hello Laaca,
> I tried it on two physical DOS machines. On the first one it does not work
> at all (error during video mode initialization) and on the second machine
> plays the intro but after that it crashes with exception fault and with the
> register dump.
...
> I have not looked into sources yet but I suspect a bug in the VESA VBE code
> causing the error in the video mode initialization on my primary DOS
> computer.
If a crash comes with a register dump (or some other sort of crash report), perhaps you can make use of that?
Thank you! --- https://codeberg.org/tkchia · https://disroot.org/tkchia · 😴 "MOV AX,0D500H+CMOS_REG_D+NMI" |
Laaca

Czech republic, 01.02.2026, 16:50
@ Zyzzle
|
SDL for DOS and Diablo for DOS |
> Is there a pre-compiled binary available anywhere? I'd like to try this out
> in bare metal DOS.
Sure, here is it: LINK
On the download page click to "STAZENI ZDARMA" (free download) --- DOS-u-akbar! |
Laaca

Czech republic, 01.02.2026, 16:56
@ tkchia
|
SDL for DOS and Diablo for DOS |
> If a crash comes with a register dump (or some other sort of crash report),
> perhaps you can make use of that?
>
> Thank you!
I managed to get it to work some time ago on real DOS machine with GeForce4 card.
But I had to use the UniVBE which replaces to VBE BIOS to not to overwrite the modelist during other VESA calls.
(it is also a tricky thing because the GeForce4 is not supported by UniVBE so it was necesarry to use unofficial patcher for it...)
However, the colors were not correct - everything was too dark (maybe some problem with expected DAC width - 6 or 8 bits issue) and I also had a problem with some animation, maybe attact animation - when the animation started it never ended and stayed in infinite loop. --- DOS-u-akbar! |
tkchia

01.02.2026, 20:55
@ Laaca
|
SDL for DOS and Diablo for DOS |
Hello Laaca,
There is a register dump. It might be useful to read it.
Thank you! --- https://codeberg.org/tkchia · https://disroot.org/tkchia · 😴 "MOV AX,0D500H+CMOS_REG_D+NMI" |
Rugxulo

Usono, 01.02.2026, 21:34
@ Laaca
|
SDL for DOS and Diablo for DOS |
> However, it is interresting that all ports of Diablo/DevilutionX are based
> on SDL library, including the DOS port.
> I know that years ago the DOS support in SDL was discussed but was never
> seriously started. Now there are real patches which add some basic support
> for DOS. DevilutionX uses this
> branch and
> there is also
> "rebase
> branch".
> In both cases it is SDL 2 port.
Did you notice YapeSDL that I linked? It has SDL and GL support for DOS (via Watcom or DJGPP). |
Zyzzle
02.02.2026, 14:27
@ Laaca
|
SDL for DOS and Diablo for DOS |
> > Is there a pre-compiled binary available anywhere? I'd like to try this
> out
> > in bare metal DOS.
>
> Sure, here is it:
> LINK
>
> On the download page click to "STAZENI ZDARMA" (free download)
Thanks, but your link does not go to any files. It just goes to:
https://fastshare.cloud/
which is some sort of generic file service.
The real link which you provided (https://fastshare.cloud/31715435/diablo-devx-dos-02.zip) just re-directs to this paywall (?) site with no download or "Stazeni Zdarma" option.
I did a search for diablo-devx-dos-02.zip on Google and came up with:
https://sdilej.cz/Diablo/s/archive-2 which contains the 8 mb file diablo-devx-dos-02.zip but, again when I attempt to download it goes to a pay site and re-directs to: https://sdilej.cz/
Frustrating. May you please host the file locally or on your site or a temporary location instead? Very much appreciated! |
Laaca

Czech republic, 02.02.2026, 23:29
@ Zyzzle
|
SDL for DOS and Diablo for DOS |
> Frustrating. May you please host the file locally or on your site or a
> temporary location instead? Very much appreciated!
Strange... The download link works OK for me.
Anyway, I uploaded it to my site here
Do not forgot that you have to have the Diabdat.mpq file from the original game. --- DOS-u-akbar! |
Zyzzle
03.02.2026, 00:21
@ Laaca
|
SDL for DOS and Diablo for DOS |
> > Frustrating. May you please host the file locally or on your site or a
> > temporary location instead? Very much appreciated!
>
> Strange... The download link works OK for me.
> Anyway, I uploaded it to my site
> here
> Do not forgot that you have to have the Diabdat.mpq file from the original
> game.
Thanks very much. Got it, and yes, I have original Diabat.mpq from the 1996 game-- a 500+ MB file.
I'll test it and see how it goes in both bare metal and Emulation (DOSBOX or Q-EMU) |
Zyzzle
04.02.2026, 05:07 (edited by Zyzzle, 04.02.2026, 05:18)
@ Laaca
|
SDL for DOS and Diablo for DOS |
> I managed to get it to work some time ago on real DOS machine with GeForce4
> card.
> But I had to use the UniVBE which replaces to VBE BIOS to not to overwrite
> the modelist during other VESA calls.
> (it is also a tricky thing because the GeForce4 is not supported by UniVBE
> so it was necesarry to use unofficial patcher for it...)
>
> However, the colors were not correct - everything was too dark (maybe some
> problem with expected DAC width - 6 or 8 bits issue) and I also had a
> problem with some animation, maybe attact animation - when the animation
> started it never ended and stayed in infinite loop.
I got it partially working on bare dos on a "modern" system: i5-8250u with integrated Intel onboard GPU - but colors were dark. This is obviously a palette problem. I tried the utility 6bitdac.com to fake a 6-bit vs 8-bit DAC and this made no difference. All menus options worked, the intro animation was fine, but when I selected a new game character to start. It accepted all "new character", started to load the game, got almost to the end of the progression screen, but then crashed with a fault back to DOS. I was running the game from a 512mb RAMDRIVE in pure DOS 7.1. Perhaps I'm missing some files. The only files present, in the root directory are:
CWSDPMI.EXE
DEVX.EXE
DEVX.MPQ (5.414.788 bytes)
and DIABDAT.MPQ (517.501.242 bytes).
No other files or directories are present.
There were several resolutions listed in the "settings" menu. I had resolutions listed up to 1920x1080. But changing to any one other than 640x480 made the game freeze. No crash, just system freeze.
Strangely, when I try to EXIT using the game menu, the system freezes, no return to DOS prompt.
Interestingly, it failed on two other laptops (one with Intel i5-3420 CPU and onboard GPU, and another with Intel I7-5600 with Intel HD onboard GPU, with the error log reporting (SDL VBE mode error(1)-unable to initialize.
So close, but so far.... Are there any further suggestions to get it to load a start a new game character? |
Zyzzle
05.02.2026, 12:19
@ Zyzzle
|
SDL for DOS and Diablo for DOS |
I finally got it working very well on the same machine mentioned above (bare DOS 7.1 with only an XMS driver and Ramdrive loaded). I had forgotten to load a DOS mouse driver, so the game had crashed upon starting a new character. So, I loaded CTMOUSE before loading DEVX.EXE and the game worked perfectly.
To make the game brighter during play, press "G" to increase Gamma. When this is at maximum setting, the game is finally viewable and indeed completely playable.
It was very smooth and fluid. The framerate according to the game's fps counter remained steady at 60.3 fps throughout. Of course, the sound doesn't work. Saves and restores work and so do screenshots (F12) which capture in .png format. The automap, zoom, and all other keys work. The game saves and restores also work. The saved files are compressed .MPQ files as well. I wonder if there's an .MPQ reader / decompressor or decrypter. I'm not sure if the format has been completely reverse-engineered.
I found a way to "EXIT" the game properly without a crash. I had to use a different DOS extender. CWSDPMI caused always crash, but with the d3x DOS extender stubbed into the DEVX.EXE file, the game exited normally, but upon exiting to DOS the prompt was very dark.
There is a DOS RESET.EXE utility that when executed with the /R switch restores the normal brightness to the video card and refreshes the DOS prompt. So, the SDL layer in DEVX.EXE is definitely doing something wrong with either the gamma or the palette. Perhaps it sets default gamma to 1.0 when the normal value should be 2.2 for DOS.
In all, it's quite an amazing experience to be able to play Diablo in pure DOS 30 years after its release. I'll have to play through again, as I remember it was a very long game back in the day. |