VOGONS


First post, by Rolling

User metadata
Rank Newbie
Rank
Newbie

I'm trying to get The Orion Conspiracy to run on original hardware. In DOSBox all versions of the game work just fine, but it crashes/hangs under MS-DOS 6.22 due to a problem with the SVGA VESA driver.

This is a known issue of the game and Domark released a SVGA patch back in 1995.

The problem is, i can't use the patch (it's not really a patch, but a replacement of the games EXE file) for international releases like french, italian or german versions. I have the following versions of the game:

  • ENGLISH.EXE - 114.608 Bytes => v3.777 - (probably an early realease, to be ignored)
  • ENGLISH.EXE - 114.736 Bytes => v3.778 - (most common english release)
  • GERMAN.EXE - 117.360 Bytes => v3.780 - (the only german version)
  • ENGLISH.EXE - 114.768 Bytes => v3.781 - (fixed SVGA EXE from patch for english version)

So, does anyone know, if there is a SVGA fix for the german / international versions of the game?

If not, do you think it's possible to adapt the changes from the SVGA patch of the english version to the german one?

I tried comparing the non-patched ENGLISH.EXE (v3.778) with the patched one (v3.781), to figure out, what the patch does. Looking at it with a hex editor there are a lot of different bytes, but comparing them with bindiff after disassembling them with IDA), there seem to be not many differences (no primary/secondary unmatched functions), etc.

The attachment Screenshot 2026-06-06 103041.png is no longer available

I just can't quite figure out what's going on. Attached you find the mentioned EXE files with IDA disassemblies.

Reply 1 of 1, by MagefromAntares

User metadata
Rank Member
Rank
Member

Hi,

I currently don't have the time to do a comparison for the disassemblies, but if there are lot of difference with a hex editor, but a dissassembler shows that the functions are mostly the same, it usually means that the actual code change in the original C/C++ code(or whatever high level language they have used) is most likely small. The difference in a high number of bytes most likely are addresses which has been pushed around when some new code is added to the program.

For the actual functional differences in this case I would look at the parts of the program calling int 10h with AH set to 4Fh as that is the VESA interrupt.(Actually to be more precise that is the Video Interrupt(10h) with VESA functions(4Fh))

"A process cannot be understood by stopping it. Understanding must move with the flow of the process, must join it and flow with it." - Dune