VOGONS


First post, by llm

User metadata
Rank Member
Rank
Member

attached is the Version 0.1 of my NoUniVBE DOS TSR (first DOS asm project in 30years, my first DOS-TSR ever)

the tool should (in the End) prevent in-game integrated UniVBE to load - because the Dosbox VESA Implementation is superior

i've heard that Mortal Kombat Trilogy is one of the games that forces UniVBE loading (with old buggy UniVBE code) - but i can't find the DOS Version on ebay

anyone around:
-who knows a game that works better when UniVBE (for example: versions 5.3a) is loaded before the game?
-who is interested in testing some versions of my tool?

currently the tool justs overloads the VESA OEM-String that gets returned by the VESA-Info BIOS function with 'Universal VESA VBE 5.3a'
its not clear if that is already enough - due to absend of good test games

my next idea is to fake the UniVBE memory layout and detection feature of several UniVBE versions with my tool to hoax the in-game UniVBE installation checks
or UniVBE.exe loads in game provided batch files

im just looking for test-games /testers to make progress with my tool

Attachments

  • Filename
    NonUniVBE.zip
    File size
    2.65 KiB
    Downloads
    67 downloads
    File comment
    Assembler-Source and COM-Executable
    File license
    Public domain

Reply 1 of 14, by flynnsbit

User metadata
Rank Newbie
Rank
Newbie

GTA was always a pain in the butt with VBE, though I am not sure if that exactly fits your use case.
These are the DOS games that come to mind that all have some kind of VBE interactions:
Ascendancy
Star Wars Tie CD
One of the Warcrafts (I think Warcraft II)
Torin's Passage
Mortal Kombat Tril (like you said)
DiscWorld 2
Nascar 2
Constructor
GTA
Silent Hunter
Torin

Reply 2 of 14, by Stiletto

User metadata
Rank l33t++
Rank
l33t++

This reminds me of Rob Muller's modified univbe.drv files: Re: VESA Fix Utility Listing (for old video cards)

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 3 of 14, by llm

User metadata
Rank Member
Rank
Member
Stiletto wrote on 2021-11-20, 05:49:

This reminds me of Rob Muller's modified univbe.drv files: Re: VESA Fix Utility Listing (for old video cards)

yes - prevention of detouring original VESA BIOS/dosbox code with old UniVBE code

my ultimate goal is to add this tiny hoax code to dosbox to always prevent the UniVBE loading

do you know a game that benfits directly from using Rob Muller's tool in dosbox?

Reply 4 of 14, by Gmlb256

User metadata
Rank l33t
Rank
l33t
llm wrote on 2021-11-20, 08:03:

yes - prevention of detouring original VESA BIOS/dosbox code with old UniVBE code

my ultimate goal is to add this tiny hoax code to dosbox to always prevent the UniVBE loading

do you know a game that benfits directly from using Rob Muller's tool in dosbox?

These modified files are "drivers" that uses the VESA VBE BIOS that is currently implemented on the video card which in your case it would be using the VESA implementation that is on DOSBox.

Games that comes with UVCONFIG.EXE and requires UNIVBE.DRV prior running them are the ones that would benefit from this in DOSBox.

VIA C3 Nehemiah 1.2A @ 1.46 GHz | ASUS P2-99 | 256 MB PC133 SDRAM | GeForce3 Ti 200 64 MB | Voodoo2 12 MB | SBLive! | AWE64 | SBPro2 | GUS

Reply 5 of 14, by llm

User metadata
Rank Member
Rank
Member
Gmlb256 wrote on 2021-11-22, 05:30:
llm wrote on 2021-11-20, 08:03:

yes - prevention of detouring original VESA BIOS/dosbox code with old UniVBE code

my ultimate goal is to add this tiny hoax code to dosbox to always prevent the UniVBE loading

do you know a game that benfits directly from using Rob Muller's tool in dosbox?

These modified files are "drivers" that uses the VESA VBE BIOS that is currently implemented on the video card which in your case it would be using the VESA implementation that is on DOSBox.

Games that comes with UVCONFIG.EXE and requires UNIVBE.DRV prior running them are the ones that would benefit from this in DOSBox.

i know how the modified driver from Rob Muller work - im just missing games that directly benefit (can then run, better speed, better resolution) using them in DOSBOX as a comparison for my own tool behavior
- so at best games that really suffering from the internal loaded UniVBE driver

it try to come up with a solution for dosbox that do not involve chaging files or something - the TSR is just a testbed for the ideas that i want to integrate directly into dosbox in the end

Reply 6 of 14, by llm

User metadata
Rank Member
Rank
Member

small Update

what i've got so far:

NoUniVBE 0.3 TSR - currently behavior-near enough to the original UniVBE 5.3a so that the original UniVBE TSR think its already installed, even Options-On/Off setting works
first run installes the TSR, second run de-installes it

UVBCHECK - a tool that checks for VESA information and if UniVBE 5.3a is installed (checking the same Interrupts/Memory values as UniVBE 5.3a do)
just run under dos/dosbox with/without pre-loaded UniVBE (with > if you want to get the output in an editor...)

UVBCHECK.EXE > out.txt

TODO:
NoUniVBE is missing the Int 2Fh detouring and some License Data to get accepted as a pre-loaded UniVBE in games that directly linking the UniVBE library (like Tilt!, Street Racer, Mortal Kombat Trilogy, ...)

Findings: using UniVBE 5.3a still bringst higher refersh rate for some games - even with the superior VESA implementation of dosbox - hope i can solve this mystery with my little fun project

both tools come with full source and built executeables

output of UVBCHECK.EXE

Init signature: VBE2
int 10h/ax=4F00h
ax_reg: 0x004F
bx_reg: 0x1234
cx_reg: 0x4321
dx_reg: 0x0000
Signature: VESA
VbeVersion: 0x0200
OemStringPtr: Universal VESA VBE 5.3a
Capabilities: 0x00000000
VideoModePtr: 0x000000A1
TotalMemory: 4096 KB
---VBE2---
OemSoftwareRev: 0x0503
OemVendorNamePtr: SciTech Software
OemProductNamePtr: UniVBE(tm)
OemProductRevPtr: 5.3
Found UniVBE #1
int 10h/ax=4F0Fh
ax_reg: 0x004F
bx_reg: 0x0155
cx_reg: 0x4321
dx_reg: 0x01A5
Found UniVBE #2
Found UniVBE #3
UniVBE is installed at 0x01A5:0x0155
Info from installed TSR (298 bytes)
------------------------------
Video Card: S3 SuperVGA (Trio64) with 4 Mb
RAM DAC: S3 Trio Internal 24 bit DAC
Clock Chip: S3 Trio Internal Clock
unknown1???
CA D5 8F D3 A9 99 82 86 FF 9E B3 BA BB A2 A8 AD | ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 CF CB | ................
C7 C3 DF C6 DF D2 E9 9E 96 97 FC FB EA F1 8F 8B | ................
85 83 00 35 33 4A 61 6E 20 32 34 20 31 39 39 37 | ...53Jan 24 1997
00 00 00 00 | ....

version/license type: 0x0005
unknown2: 0x3B6A ???
enabled: 0x0000 (ON)
vbe2_support: 0x0000 (ON)
native_mode_centering: 0x0000 (ON)
lfb_support: 0x0000 (ON)
vbe2_palette_functions: 0x0000 (ON)
vbe2_32bit_interface: 0x0000 (ON)
directx2_compatiblity_mode: 0x0000 (ON)
int 10h vector: es:bx = 0x01A5:0x1276
Found UniVBE #4: Signature found!
int 2Fh vector: es:bx = 0x01A5:0x1338
Found UniVBE #5: Is uninstallable

i still try to understand some data comming from the original UniVBE TSR (marked as unknown1??? in the above UVBCHECK output)

searching.png
Filename
searching.png
File size
30.99 KiB
Views
1785 views
File comment
unknown data (meaning and size)
File license
Public domain

i think the two missing blocks of data are someway related to the license id or something (because they are also in the IO.IDX file that gets generated by the REGISTER.EXE) - or a crypted text - any idea?

Attachments

  • Filename
    nounivbe.zip
    File size
    13.08 KiB
    Downloads
    47 downloads
    File comment
    NoUNIVBE src+executable, UniVBE detector src+exe
    File license
    Public domain

Reply 7 of 14, by MrFlibble

User metadata
Rank Oldbie
Rank
Oldbie

I don't think I ever played a game that would absolutely require UNIVBE/SDD to operate. Some recommend using it, but will work fine without it in DOSBox, like Duke Nukem 3D. There isn't any performance increase to be expected from using NoUniVBE in such cases, right? I've just tried Duke3D with VESA 2.0 320x200 mode with and without NoUniVBE and using DNRATE to show frame rate ticker, and the pre-recorded demos showed identical values in either case.

DOS Games Archive | Free open source games | RGB Classic Games

Reply 8 of 14, by llm

User metadata
Rank Member
Rank
Member
MrFlibble wrote on 2021-12-02, 11:49:

I don't think I ever played a game that would absolutely require UNIVBE/SDD to operate. Some recommend using it, but will work fine without it in DOSBox, like Duke Nukem 3D. There isn't any performance increase to be expected from using NoUniVBE in such cases, right? I've just tried Duke3D with VESA 2.0 320x200 mode with and without NoUniVBE and using DNRATE to show frame rate ticker, and the pre-recorded demos showed identical values in either case.

my NoUniVBE is currently (im working on that) not able to inhibit in-game linked UniVBE loading, so it won't do anything if Duke comes with a internal UniVBE (i don't know)

UniVBE overloads the VESA feature of dosbox with its own - that "can" be a problem for performance or gaming quality - that is part of my ongoing investigation
my hope is to find a trivial concept to easily prevent all UniVBE interaction and have only pure dosbox VESA code active - maybe directly integrated in dosbox, so
that there is no need to do anything to get the best possible experience (but that is in the far future)

for example "Street Racer" comes with an internal linked UniVBE and pre-loading UniVBE 5.3a gives a doubled refresh rate - i want to understand the reason for such difference

its currently more or less a Pure Fun/Legacy TSR Coding/Reverse Engineering project that im touching time by time - not clear what the outcome will be 😀

Reply 10 of 14, by llm

User metadata
Rank Member
Rank
Member
i still try to understand some data comming from the original UniVBE TSR (marked as unknown1??? in the above UVBCHECK output)

i've found it: the unknown bytes are the ciphered registered user and serial no

but the algorithm wasn't that hard to find/reverse 😀

for (int i = strlen(text) - 1; i >= 0; --i)
{
text_[i] ^= 0xff - (i << 2);
}
CA D5 8F D3 A9 99 82 86 FF 9E B3 BA BB A2 A8 AD

becomes "5.x Free Edition"

CF CB C7 C3 DF C6 DF D2 E9 9E 96 97 FC FB EA F1 8F 8B 85 83 00

becomes "00000-816EAD30-20020"

Reply 11 of 14, by llm

User metadata
Rank Member
Rank
Member

NoUniVBE Update 0.4:

History:

0.1 fake UniVBE oem string, does not hose UNIVE.exe detection
0.2 fake special int 10h/4F0Fh function, now UNIVBE.exe think its already installed
0.3 fake version - UNIVBE.exe ON|OFF VBE2|LFB|... option setting work (i think they don't needed for anything)
0.4 replicate the TSR layout 100%, added int 2fh handler, exe instead of com executable

Street Racer accepts NoUniVBE as a valuable replacement and stops loading its linked UniVBE code 😀
(https://www.mobygames.com/game/street-racer)

visible difference:

  • no UniVBE message while the game starts
  • the game seems to run with a higher framerate (like with a pre-loaded UniVBE 5.3a)

Street Racer started normally (with linked UniVBE):

VGA:h total 0.06355 (15.73kHz) blank(0.05084/0.06228) retrace(0.05402/0.06165)
VGA:v total 28.53613 (35.04Hz) blank(25.86682/28.09124) retrace(26.18460/26.31171)
VGA:Width 640, Height 400, fps 35.043296

Street Racer started with NoUniVBE:

VGA:h total 0.03178 (31.47kHz) blank(0.02542/0.03114) retrace(0.02701/0.03082)
VGA:v total 14.26806 (70.09Hz) blank(12.93341/14.04562) retrace(13.09230/13.15585)
VGA:Width 640, Height 400, fps 70.086592

Attachments

  • Filename
    NoUniVBE-0.4.zip
    File size
    14.36 KiB
    Downloads
    55 downloads
    File comment
    NoUniVBE src+exe, UVBCHECK src+exe
    File license
    Public domain

Reply 14 of 14, by llm

User metadata
Rank Member
Rank
Member
Azarien wrote on 2022-01-16, 16:44:
llm wrote on 2021-12-02, 06:46:

first run installes the TSR, second run de-installes it

Most TSRs used /u command line parameter for uninstallation.

Most TSR got more features so there is a need for some command line parameter

but you can add it if you can't live without 😀