2005-06-19: Patch for Omnicron Conspiracy

Posted at 2005-06-19 10:13:51 by SHD

I've been trying to figure out how to get DOSBox to run "Omnicron Conspiracy". The game hangs at the title screen playing the title music saying "press ENTER key to continue". It remaps INT9 (keyboard IRQ) and has its own keyboard buffer at a different location from the standard position at 0040:001E.

Omnicron Conspiracy screenshot

It checks for the "enter" keypress by calling INT21/AH=0B (get standard input status). The problem lies in the fact that DOSBox implements this by checking the head and tail of the keyboard buffer. It doesn't know the keyboard buffer has been moved. The way real DOS does this is by calling INT16/AH=1 (Check for keystroke). Omicron Conspiracy remaps INT16 so this call works as it should there, but not in DOSBox.

Since DOSBox won't be updated for speed reasons, I wrote a simple wrapper for Omnicron Conspiracy that emulates the DOS behaviour by hooking interrupt 21 and rerouting function 0B to the interrupt 16 handler. The wrapper and the source code for it are available from the patches page.

Comments

No comments, yet...

Post a comment

Note: HTML is not permitted, URLs will be linked automatically. Spam comments will result in a permanent ban.
Type these 4 symbols into the edit field