otya128 / winevdm

16-bit Windows (Windows 1.x, 2.x, 3.0, 3.1, etc.) on 64-bit Windows

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Future Cop only runs in Windows 95.

Cerrseien opened this issue · comments

Try the latest version first.

otvdm.exe prints out the string "version: 2446" upon startup. 2449 may be the current version, but I don't think this issue has been fixed yet.

Describe the bug

I'm trying to install an early 3D game called "Future Cop - LAPD" that I've had numerous issues with on DOSBox-X (either because the renderer silently downgrades to software, Glide isn't recognized, or simply because sound turns into a skipfeast after upgrading to the latest DirectX 8.0a version) in Windows 95, but at least it was installing and launching and working to a certain degree, so I know this has nothing to do with corrupt game files.

When launching otvdm.exe "G:\setup\english\setup.exe" on my actual Windows 10 system (not the DBX or W95 garbage) as an administrator (important!) the InstallShield Wizard (ISW hence) starts up, but then immediately stops with a MessageBox:

Severe
Sorry, Future Cop only runs in Windows 95.

to_the_point

Now this is where it gets messy - if I set IAmNotNT=1 in otvdm.ini ISW doesn't even launch, instead giving me this error message:

Setup requires a different version of Windows. Check to make sure that you are running Setup on the Windows platform for which it is intended.
Error 102.

not_nt_though

Now, I was always weak in boolean logic, but I was under the impression that setting IAmNotNT to "true" would mean that otvdm is NOT reporting to be running under NT, but rather as the DOS-underbellied Windows versions. Setting IAmNotNT=0 (as in "reporting to be running under NT") at least gets the ISW loaded, but this is where WINVER comes into play - I can set whatever I damn well please there according to multiple sources:

https://www.gaijin.at/en/infos/windows-version-numbers
https://microsoft.fandom.com/wiki/Windows_9x

, whether it be 4.00 or 4.00.950C doesn't make a lick of difference - I still get the same "Future Cop only runs in Windows 95" message. I've also tried setting VDMDOSVER=7.1, considering that this is the version I've tested W95 in DBX (no dice). Then I just started feeing WINVER utter garbage like "AJHoi123", and otvdm swallowed it like something definitely not G-rated.

So I've looked at the WINVER parsing code at https://github.com/otya128/winevdm/blob/master/krnl386/kernel.c:

sscanf(version, "%d.%d", &v1, &v2);

, and it looks like a simple 4.0 should've done the trick.

In short my config looked like this:

[otvdm]
VDMDOSVER=7.1
WINVER=4.0
IAmNotNT=0

, and I don't even know what the program thinks it is running under.

A clear and concise description of what you expected to happen.

I wasn't expecting much to be quite honest. Windows 9x was notoriously messy, and 16-bit emulation is even messier.
Now if you mean to ask me what was SUPPOSED to happen - something along those lines:

future_cop

, which is a screenshot from the aforementioned DBX mess that still runs me the installer, still launches the game, and still runs at an acceptable framerate, which all are things I can't do with this package.

Environment (please complete the following information):

Windows 10 Enterprise 21H2 19044.1288

Additional context

I am running a ramdisk on R:\ that both $TMP and $TEMP have been set to, since I have more than enough memory and am running my OS on an SSD.
The CD drive is G:, and the path to the installer is G:\SETUP\ENGLISH\SETUP.EXE.
I've replaced my user name, which was appearing in the path logs, with .

It is very helpful to provide a trace file if possible.

trace.txt

The main part of the installer is a win32 program so changing the version reported by winevdm won't make a difference except for the win16 stub which gives an error when it thinks it's running on windows 3.1. Using the installshieldfix shim you can set the win32 installer's compatibility mode to windows 95, see #1259 (or since you are running it elevated already you can set otvdm's compatibility mode).

My apologies for not being clearer about this - my issue isn't with playing the game, I can do that quite well by simply running the installer in DBX and then copying the installed directory structure into my normal W10 file system again, then use dgVoodoo2 and its custom ddraw.dll to enable proper rendering. It works quite well:

hells_gate

My "issue", so to speak, is more that the available solutions are not intuitive for most people. Who is going to bother fiddling with shims or installing an old version of Windows in an emulator just so that they can run an installer, when WINVER is much more intuitive (specifically compared to the length of your linked issue). Heck, most people don't even know what a shim is. I would suggest an automatism for these kinds of incompatibilities.

Just a suggestion.