VOGONS


First post, by Kippesoep

User metadata
Rank Oldbie
Rank
Oldbie

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.

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.

One would either have to change device_CON::GetInformation in dev_con.h to defer the call to INT16/AH=1 (probably an extremely bad idea -- but it works as a quick hack) or change the in-memory INT21 handler to check for this and handle it, moving the handling of AH=0B to the simulated CPU.

I wrote a simple wrapper for OC that does the latter (See attachment -- for the assembly listing).

Attachments

  • Filename
    OMNICRON.TXT
    File size
    1.14 KiB
    Downloads
    444 downloads
    File license
    Fair use/fair dealing exception

Reply 1 of 3, by red_avatar

User metadata
Rank Oldbie
Rank
Oldbie

Digging this up again: I still have this problem up to this day. Despite the game database saying it works, I come across this problem too in DB 0.66. Will this ever be fixed or do I write it down as "not working"?

Reply 3 of 3, by Kippesoep

User metadata
Rank Oldbie
Rank
Oldbie
red_avatar wrote:

Digging this up again: I still have this problem up to this day. Despite the game database saying it works, I come across this problem too in DB 0.66. Will this ever be fixed or do I write it down as "not working"?

You can use my little wrapper. A compiled version is available from my website: http://www.shdon.com/patches