VOGONS


Universal vesa driver for windows dos boxes

Topic actions

  • This topic is locked. You cannot reply or edit posts.

First post, by Sol_HSA

User metadata
Rank Member
Rank
Member

Now, there's about five different boards in vogons where I might post this, but I guess this is the least offensive place 😒..

Anyhow, I've started to hack together an universal VESA driver for windows DOS boxes. I've put an alpha online at:
http://iki.fi/sol/solvbe_alpha_030304.zip

Features:
- VGA 13h 320x200x256 mode support
- Most VESA 1.2 modes supported
- Some mouse support

Limitations:
- Windowed mode only
- Banked VESA support only (as in 1.2), no protected mode interfaces
- Mouse callback function doesn't work properly.

Notes:
- Will write log at c:\SolVBE.log

I've managed to run some noninteractive DOS demos with it successfully, and as long as you can get away with only keyboard use, it should work (just keep the console window focused).

To use, just unzip the contents to a directory and launch the exe from that directory. After that, run the program that needs VESA support.

There may be some conflicts with VDMSound, as both applications work the same way (ie, override VDM functionality).

I'm planning to release the project under the zlib/libpng license, but like most projects, I want it to work first =)

My primary goal is to get terra nova: strike force centauri to run under winxp. Unfortunately, it requires the abovementioned mouse far callback, which has been a major stumbling block for me for a while.

If there's someone who's a wizard in real-mode DOS / interrupt handler programming and who would like to give me a hand, please contact me through ICQ or email at jari dot komppa at kolumbus dot fi. (ddk + open watcom 1.2 + vc6 needed)

Oh, and please do say if I should post these on another forum.

http://iki.fi/sol - my schtuphh

Reply 1 of 15, by Sol_HSA

User metadata
Rank Member
Rank
Member

FYI - software I've tried.

Gateways by Trauma (assembly98 winner demo) - works perfectly in all modes (8bit, 15bit, 16bit, 24bit, 32bit)

Terra Nova: Strike Force Centauri - movies work, menus work, you can get to "your room", but from there on mouse is mandatory, so I haven't tried ingame yet. Ingame probably requires tweaked modes (modex, modey), but I can't try that before the mouse works.

Transport Tycoon Deluxe: If mouse support is enabled (like in the above alpha), it crashes on startup. If it's disabled, the game seems to work fine, but since it (also) requires mouse..

Death Rally: intro movie and menus work, ingame doesn't show anything. Ingame is most likely tweaked mode, so this is not too surprising. Intro movie has some palette issues, most likely since I'm not tracking vertical retraces at this point.

http://iki.fi/sol - my schtuphh

Reply 3 of 15, by Sol_HSA

User metadata
Rank Member
Rank
Member

Quick status report - I finally figured out the mouse problem. Partially my mistake, partially bad specs.. but it's solved now.

Good news is that the TN ingame, while in 320x200, worked straight away. 320x400 is a tweaked mode and doesn't work currently.

Bad news is that before I write keyboard support, I still can't actually play the game. And since keyboard use in most games is much more low-level than mouse support tends to be, that might take a while (hopefully less time than solving the mouse problem).

Also, the mouse isn't flawless yet.. Anyhow, I might post a new alpha once I get couple of small bugs squashed.

http://iki.fi/sol - my schtuphh

Reply 6 of 15, by Sol_HSA

User metadata
Rank Member
Rank
Member

qbix, I will. Although dosbox and vdm extension are somewhat different beasts, at least it can give me some kind of insight on what applications expect from the keyboard.

zorbid, I don't think there are any conflicts, as long as vdmsound leaves VESA alone =).
I started a new thread on the PC emulation board, posting a new alpha there.

http://iki.fi/sol - my schtuphh

Reply 7 of 15, by vladr

User metadata
Rank Oldbie
Rank
Oldbie

For keyboard you may be better off just forwarding keyboard events from the DirectX window to the original VDMS window and letting it habdle the stuff for now. Mouse is different because of the window size, of course.

V.

Reply 8 of 15, by Sol_HSA

User metadata
Rank Member
Rank
Member

Good point on the keyboard. That does, however, create another problem (don't they always) - how to figure out which vdm window is what we should be talking to.

Mouse is more than just window size problem, btw - client app can change the valid mouse region etc. However, mouse is now pretty much done.

http://iki.fi/sol - my schtuphh

Reply 9 of 15, by Sol_HSA

User metadata
Rank Member
Rank
Member

Ok, I didn't bother looking into the irq stuff too deeply because of your suggestion, and wrote a routine that finds the correct console with acceptable accuracy. And it works! I can play TN now 😁 😁 😁

A new alpha will pop up later on again..

http://iki.fi/sol - my schtuphh

Reply 10 of 15, by vladr

User metadata
Rank Oldbie
Rank
Oldbie

The way M$ recommends to identify the console window is by setting its title (via the console methods) and then scan all windows for that title and get its hwnd. Don't know if that's what you implemented. 😀
V.

Reply 11 of 15, by Sol_HSA

User metadata
Rank Member
Rank
Member

That's what I'd do if the program I'm running in the console was an nt console app. Unfortunately it's an 16-bit DOS application, and thus doesn't have much of an access to the win API =)

SolVBE thus accepts the console if it's either
1. the only console around
2. has 'solvbe' in the title (eg. rungame.bat solvbe command line or some such)

http://iki.fi/sol - my schtuphh

Reply 13 of 15, by vladr

User metadata
Rank Oldbie
Rank
Oldbie

Whoa, one moment, you mean you don't use a VDD? I think you do, and the VDD has full access to the console API, I can guarantee you that.

V.

Last edited by vladr on 2004-03-08, 03:36. Edited 1 time in total.