Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Microsoft 500 Nations closes on launch and while running as admin, the Win16 version hangs while the Win32 version runs fine #1276

Closed
CSmeds99 opened this issue Mar 6, 2023 · 8 comments

Comments

@CSmeds99
Copy link

CSmeds99 commented Mar 6, 2023

While launching Microsoft 500 Nations normally, the program closes upon launching. When running with otvdmw.exe as administrator, the Win16 version hangs with the Microsoft Home splash screen. while the Win32 version runs normally. The Win16 version has to be manually terminated to close, while the Win32 version can be closed normally. The Windows version is set to 3.95 in otvdm.ini.

The program needs to be run under admin under Windows 10 (x86) NTVDM but only the Win32 version runs normally, while the Win16 version is not launched.

500 Nations 2
500 Nations 1

Windows 11 Pro 22H2 OS build 22621.1265
WineVDM build 2413

Note: The trace file doesn't give any detailed information, and just the WineVDM build version.

trace.txt

@cracyc
Copy link
Contributor

cracyc commented Mar 8, 2023

If you run it directly with "Nations_Setup\App\Explor16.exe Nation16.dll /w Nations_Setup\App\WavOut16.dll nations.the" from the root of the cdrom drive does it work then?

@CSmeds99
Copy link
Author

CSmeds99 commented Mar 8, 2023

The Win16 version runs fine without the Microsoft Home logo in the beginning. When I switched "16" to "32" in the path, the Win32 version runs fine, without the Microsoft Home logo in the beginning. When I launch NATIONS.EXE without admin directly, the Win16 version and the Win32 version runs for half a second and then both of them shutdown.

@cracyc
Copy link
Contributor

cracyc commented Mar 9, 2023

#1281 gets the win16 version starting from nations.exe but WINVER=3.1 and IAmNotNT=1 in otvdm.ini. Otherwise it loads the win32 version but only if it can write a registry entry into HKEY_LOCAL_MACHINE which requires elevation (it uses registry functions in kernel32 so aren't easily redirectable).

@CSmeds99
Copy link
Author

CSmeds99 commented Mar 9, 2023

Is there a way to have the Win16 version to close as soon as the Win32 version is loaded with an elevated otvdmw.exe?

@cracyc
Copy link
Contributor

cracyc commented Mar 9, 2023

Do you mean the window with the mshome logo? That's not the win16 version, that's part of nations.exe (which is a 16bit program).

@CSmeds99
Copy link
Author

CSmeds99 commented Mar 9, 2023

Do you mean the window with the mshome logo? That's not the win16 version, that's part of nations.exe (which is a 16bit program).

@CSmeds99
Copy link
Author

Yes

@cracyc
Copy link
Contributor

cracyc commented Mar 11, 2023

It's not closing the mshome window because it uses findwindow with the window class to locate it. Since winevdm mangles window class names, the main program can't find it. This would be very difficult to fix so I think the best options are either to run the win16 version using the otvdm.ini settings or run the win32 version directly using the command line above (with 32 like you said).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants