VOGONS


First post, by Silanda

User metadata
Rank Member
Rank
Member

Just leaving this here as a record of my observations about getting this game running perfectly in DOSBox in case it's of use to anyone, especially if they want to install from disc rather than using the patched version. I hope no-one minds, but there are a couple of things about the Windows version too.

The game runs at a very odd framerate, and this is true of both the DOS and Windows versions. I haven't been able nail the precise refresh rate, but it's somewhere around 62.46Hz (I'm running at 62.461). Whether running the DOS version in DOSBox, or the Windows version, it's probably best to create a custom resolution at this rate. I wonder whether there was a typo in the game's code, as that value is very odd...

Joystick support appears completely broken. The best solution is to either map the pad to keys using DOSBox's mapper, or use something like JoyToKey. A limitation I've found with JoyToKey is that it doesn't seem to like too many keypresses at the same time, making unlocking Chameleon pretty much impossible, and making Sub Zero's ground slide tricky (you kind of have to hit the buttons rapidly in sequence, one after the other, rather than all at the same time).

A noticeable problem with the game is that Univbe is bound to the executable. While Univbe is able to create a driver for DOSBox's emulated graphics hardware, for some reason loading this driver seems to cut the frame rate in half. There are a few options to remedy this:
1) From the game's directory run "uvconfig.exe -e120". This option is meant to set the framerate for low res modes at 120fps, while the default value seems to be 60. Half of 120 is of course 60, and the effect in DOSBox is indeed to cause the game to run at 60fps. It will still be a little choppy because 60 is less than 62.46, but it's more acceptable. Trying to set the rate above 120 don't work.
2) Use the modified UniVBE driver produced by Rob Muller many years ago (attached, see included readme).
3) (My personal favourite) Stop UniVBE from ever running and loading its driver. You'll need a hex editor for this. Got one? Good, here goes. Open the MKtril.exe file in your hex editor of choice. At offset C90D2 there should be a five byte sequence that is as follows: E8 A6 03 00 00. Replace it with 90 90 90 90 90. UniVBE is history.

If you want the game to be more or less completely smooth, you'll need to running at a resolution using that odd refresh rate I mentioned earlier or they'll likely be some juddering still. This might not be much of a problem on 120Hz monitors. Also, if you use OpenGL you'll need a version of Dosbox that fixes support for more than 256 colours or you'll likely run into issues. A fix was suggested here and it's easy to compile your own version: https://sourceforge.net/p/dosbox/bugs/385/

With regards to the Windows version, the game crashes on Windows XP and later. While it's possible to fix the executable to remove the offending instructions that crash the game, it's simpler to create an application fix with Compatibility Administrator and apply the IgnoreException fix. Also needed is the DXPrimaryEmulation with the -DisableMaxWindowedMode commandline parameter in order to get rid of the frame in fullscreen mode on Windows 8 and 10. Either that or I recommend using DGVoodoo. An advantage to using DGVoodoo is that if you created a custom resolution with the 62.461 HZ refresh rate, and switch the desktop to it before starting the game, the game will stay at that refresh rate in fullscreen mode. Without DGVoodoo it always seems to switch to 60Hz.

Attachments

  • Filename
    modified.zip
    File size
    3.06 KiB
    Downloads
    304 downloads
    File license
    Fair use/fair dealing exception

Reply 1 of 21, by Norton Commander

User metadata
Rank Member
Rank
Member

Thanks for the write-up - I always wondered why I could never get the joystick to work in the DOS version and always hated the fact that it needed UNIVBE - I just applied the hex edit to the DOS version and it does indeed now run without UNIVBE. Kudos!!!

There is still someone writing patches for the Windows version however so no need for Compatibility Administrator fixes.

http://cubanraul.altervista.org/mkt/index.htm

I applied his patch (2.3) a few years ago to get it to work under XP, worked great! He now has a patch (3.0) for Windows 10 compatibility but I haven't tried that one because it only supports one joystick.

I am currently running his 2.5 patch under Windows 7. Highly recommended. One caveat - if you want CD music the disc or image file has to be the first optical drive letter. Example: I have a DVD burner drive letter G:. If I mount the image drive letter H: I get no music. I have to set my virtual CD image to letter F: (before my real DVD drive letter) for game music to work in Windows XP/7. Haven't tried Windows 8.1/10 yet...

Reply 2 of 21, by dr_st

User metadata
Rank l33t
Rank
l33t

In the DOS version to change to Chameleon you only need to hold HP + LP.

Tried the no-UniVBE hex hack. Works like a charm.

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys

Reply 3 of 21, by Silanda

User metadata
Rank Member
Rank
Member
dr_st wrote:

In the DOS version to change to Chameleon you only need to hold HP + LP.

Cool! By the way, does Chameleon not appear in the first round of the DOS version, or is it just a problem I'm having? In Windows, Chameleon appears if I hold the buttons at the tower screen before the fight starts, but in the DOS version I can only get it to work by holding the buttons after the end of the first round.

Oh, and on the refresh rate front, I'm pretty sure it's near as damn it 62.489 Hz. Surely that was a mistake. I wish I could fix it, but it's beyond my meagre hacking skills.

Reply 4 of 21, by dr_st

User metadata
Rank l33t
Rank
l33t
Silanda wrote:

Cool! By the way, does Chameleon not appear in the first round of the DOS version, or is it just a problem I'm having?

I think the DOS version just has different timing. You must start holding the buttons right before the start of the fight (just like you would right before the start of the second round). If you start holding them as early as the top of the tower - it won't register. This has been my experience as well.

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys

Reply 5 of 21, by Thr1ller

User metadata
Rank Newbie
Rank
Newbie

How to make adequate pixel smoothing (to the likeness bilinear.fx shader)? Was it in version Windows? If so, how can i activate it? Thank you for the answers!

For example, two screenshots:

Attachments

  • 2.png
    Filename
    2.png
    File size
    106.55 KiB
    Views
    5601 views
    File license
    Fair use/fair dealing exception
  • 1.png
    Filename
    1.png
    File size
    545.45 KiB
    Views
    5601 views
    File license
    Fair use/fair dealing exception

Reply 8 of 21, by Thr1ller

User metadata
Rank Newbie
Rank
Newbie
Silanda wrote:

My advice would be to use dgVoodoo 2 for the Windows version. The game should then run at 320x240 and is scaled up, filtering the image. That only works in fullscreen mode though.

Thanks man). Its work!

Reply 9 of 21, by Thr1ller

User metadata
Rank Newbie
Rank
Newbie
Silanda wrote:
Just leaving this here as a record of my observations about getting this game running perfectly in DOSBox in case it's of use to […]
Show full quote

Just leaving this here as a record of my observations about getting this game running perfectly in DOSBox in case it's of use to anyone, especially if they want to install from disc rather than using the patched version. I hope no-one minds, but there are a couple of things about the Windows version too.

The game runs at a very odd framerate, and this is true of both the DOS and Windows versions. I haven't been able nail the precise refresh rate, but it's somewhere around 62.46Hz (I'm running at 62.461). Whether running the DOS version in DOSBox, or the Windows version, it's probably best to create a custom resolution at this rate. I wonder whether there was a typo in the game's code, as that value is very odd...

A noticeable problem with the game is that Univbe is bound to the executable. While Univbe is able to create a driver for DOSBox's emulated graphics hardware, for some reason loading this driver seems to cut the frame rate in half. There are a few options to remedy this:
1) From the game's directory run "uvconfig.exe -e120". This option is meant to set the framerate for low res modes at 120fps, while the default value seems to be 60. Half of 120 is of course 60, and the effect in DOSBox is indeed to cause the game to run at 60fps. It will still be a little choppy because 60 is less than 62.46, but it's more acceptable. Trying to set the rate above 120 don't work.
2) Use the modified UniVBE driver produced by Rob Muller many years ago (attached, see included readme).
3) (My personal favourite) Stop UniVBE from ever running and loading its driver. You'll need a hex editor for this. Got one? Good, here goes. Open the MKtril.exe file in your hex editor of choice. At offset C90D2 there should be a five byte sequence that is as follows: E8 A6 03 00 00. Replace it with 90 90 90 90 90. UniVBE is history.

Hello. Where to write for DOS version 62.489? vsyncrate = 62,489? And if so, then vsyncmode = on or force?

Reply 11 of 21, by dr_st

User metadata
Rank l33t
Rank
l33t

Did you do #3 above (modifying the executable with a HEX editor)? That eliminates all UniVBE dependencies.

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys

Reply 12 of 21, by Thr1ller

User metadata
Rank Newbie
Rank
Newbie
dr_st wrote:

Did you do #3 above (modifying the executable with a HEX editor)? That eliminates all UniVBE dependencies.

Yes, of course! First thing.
Here is my config (DOSBox SVN Daum):

[sdl] fullscreen=true fulldouble=false fullresolution=original windowresolution=original output=direct3d autolock=true waitonerr […]
Show full quote

[sdl]
fullscreen=true
fulldouble=false
fullresolution=original
windowresolution=original
output=direct3d
autolock=true
waitonerror=false
priority=highest,highest
pixelshader=bilinear.fx
usescancodes=false
overscan=0

[dosbox]
machine=svga_s3
vmemsize=16
memsize=32
memsizekb=0
memalias=0
cgasnow=true
captures=SCREENSHOTS

[render]
frameskip=0
aspect=true
linewise=false
char9=false
doublescan=false
multiscan=false
scaler=hardware4x
autofit=false

[vsync]
vsyncmode=on
vsyncrate=62,489

[cpu]
core=dynamic
cputype=auto
cycles=max 105%
cycleup=10
cycledown=20
isapnpbios=false

[keyboard]
aux=false
auxdevice=intellimouse

[pci]
voodoo=false

[mixer]
nosound=false
swapstereo=false
rate=44100
blocksize=1024
prebuffer=20

[midi]
mpu401=none
mididevice=none
midiconfig=
mt32.reverse.stereo=off
mt32.verbose=off
mt32.thread=off
mt32.dac=auto
mt32.reverb.mode=auto
mt32.reverb.time=5
mt32.reverb.level=3
mt32.partials=32

[sblaster]
sbtype=sb16
sbbase=220
irq=7
dma=1
hdma=5
sbmixer=true
oplmode=auto
oplemu=default
oplrate=44100
hardwarebase=220
goldplay=false

[gus]
gus=false
gusrate=44100
gusbase=240
gusirq=5
gusdma=3
ultradir=C:\ULTRASND

[innova]
innova=false
samplerate=44100
sidbase=280
quality=0

[speaker]
pcspeaker=false
pcrate=44100
tandy=auto
tandyrate=44100
disney=false
ps1audio=off
ps1audiorate=44100

[joystick]
joysticktype=none
timed=false
autofire=false
swap34=false
buttonwrap=false

[serial]
serial1=disabled
serial2=disabled
serial3=disabled
serial4=disabled

[printer]
printer=false
dpi=360
width=85
height=110
printoutput=png
multipage=false
docpath=.
timeout=0

[parallel]
parallel1=disabled
parallel2=disabled
parallel3=disabled
dongle=false

[glide]
glide=false
lfb=none
splash=false

[dos]
xms=true
ems=true
umb=true
automount=true
int33=true
biosps2=true
keyboardlayout=auto
files=127

[ipx]
ipx=false

[ne2000]
ne2000=false
nicbase=300
nicirq=3
macaddr=AC:DE:48:88:99:AA
realnic=list

[autoexec]
@echo off
cls
mount c GAME
imgmount e GAME\MUSIC\CD.CUE -t cdrom
cls
c:
MKTRIL
exit

Small drawdowns (in comparison with the Win version) are present, in jumps are noticeable, when the AGRESSOR scale is filled.
Before that I had this:
[vsync]
vsyncmode = host
vsyncrate = 60
Everything is absolutely smooth and without lags. But the window can not be minimized with a bilinear shader, the process breaks down, play becomes impossible when unfolding in fullscreen ((..
What can I fix in the config?

Reply 13 of 21, by dr_st

User metadata
Rank l33t
Rank
l33t

1. Don't use SVN Daum. It's broken, unsupported, and no one here has the will to debug various bizarre issues that may or may not be related to Daum itself.

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys

Reply 14 of 21, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++

Or rather, use Daum with the understanding that you're probably on your own if you run into issues. YMMV, etc.

All hail the Great Capacitor Brand Finder

Reply 16 of 21, by dr_st

User metadata
Rank l33t
Rank
l33t

You misunderstood. You don't need to enter 62489 anywhere. Remove it and it may resolve your problem.

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys

Reply 17 of 21, by Thr1ller

User metadata
Rank Newbie
Rank
Newbie
dr_st wrote:

You misunderstood. You don't need to enter 62489 anywhere. Remove it and it may resolve your problem.

Precisely, I was mistaken?

it's probably best to create a custom resolution at this rate. I wonder whether there was a typo in the game's code, as that value is very odd...

You yourself play it, in that). I'll wait better the topic author's answer. No, so no..

Reply 19 of 21, by Silanda

User metadata
Rank Member
Rank
Member

Sorry for the slow reply. If you're not running Nvidia hardware, I don't know how to do this but I assume the AMD or Intel control panels can do similar things. If you're not running Windows, I really don't know how to do this.

In order to set the refresh rate, I create a custom resolution with that refresh rate in the Nvidia control panel (Change Resolution - Create Custom Resolution). If Dosbox is running at your desktop resolution (this is easiest), create a mode at your desktop resolution but with the display mode refresh rate to 62, set the timing to manual, and set the refresh in the timing box to 62.46. If you have a 60Hz monitor, this will be slightly overclocking it, but there's a good chance it will work. It's not guaranteed though.

I've settled on 62.46 Hz as the refresh rate now. I don't think it's exactly right, but it's close enough, and I don't have any way of measuring the exact frame rate that precisely.

When you want to play, right click on the desktop, select display settings, advanced display settings, then display adapter properties, and set the refresh rate to 62Hz. You can then run Dosbox. Once you've finished, set the refresh rate back to its normal setting.

If you're not running the latest version of Windows 10, display adapter properties isn't in exactly the same place but you'll still find it through display settings.

Also, I'm using a custom Dosbox build with a VSync patch applied. On a normal build, I think forcing VSync through the Nvidia (or maybe AMD) control panel should work for this game, but turn if off again if you play anything else or you'll get slow down.