Jump to content

Is there any way to start Call of Duty 2 in Windows 98?


173a

Recommended Posts

Hi,

I want to try Call of Duty 2 with A3D 2.0 on my Win98 pc, but it seems that the game doesn't support this OS. Is there any way of forcing programs to run under win98 or fooling them into thinking that they are being launched under XP?

Link to comment
Share on other sites


You must install KernelEx 4.5.2019.24 Updates first 

and directx 9c (2006) http://www.oldversion.com/windows/directx-9-0c-jun-2006

Link of KernelEx 4.5.2019.24 https://icedrive.net/0/efIbMU55r5  And try to run the game on mode Windows 2000 or XP compatibility

For more informations on how to operate with compatibility mode  i found this video that might help you

 

Link to comment
Share on other sites

On 11/17/2020 at 12:54 PM, windows2 said:

DirectX 9.0c December 2006 is the last version that officially supports Windows 98 (FE and SE).

Unofficially, DirectX 9.0c August 2007 works on vanilla Windows 98 SE.

Links:
DirectX 9.0c December 2006
Unofficial DirectX 9.0c August 2007

Edited by Ximonite
Fixed dead link
Link to comment
Share on other sites

I think I already had DX Oct 2006 installed. Anyways, it keeps throwing up some DirectDraw and Unrecoverable DirectX errors. Perhaps some dll swapping may do the trick. Thanks for all the suggestions, may give it another try at some later point.

PS

I have a Radeon 9600XT with a Catalyst 5.7 installed. May give it another go with a Geforce at some later point.

Edited by 173a
Link to comment
Share on other sites

I tested on a VMware virtual machine. Windows 98 was patched with AutoPatcher. I got in the menus right away after copying SwiftShader 2.01's d3d9.dll in the game folder since there's no 3D support in the virtual machine on Windows 98.

I was unable to load any map at this point, it crashed, the error message mentioned stack fault. To be even able to see the error message, I had to force the game to run in windowed mode, I could do it by setting appropriate option SwiftShader.ini, otherwise, the game appeared to have just closed.

I ended up modifying the executable file by changing the value of SizeOfStackCommit in IMAGE_OPTIONAL_HEADER32 structure from 4096 to 65536. It's pretty easy with OllyDbg, open the executable, press Alt+M, at the top, there should be an entry that says "PE header" under Contains column and "CoD2SP_s" under Owner column, double-click it then in the window that opens, find SizeOfStackCommit, double-click it, type 65536 in (Un)signed field, confirm, right-click on SizeOfStackCommit->Edit->Copy to executable, OK the message prompt, right-click anywhere in the window that opens and click Save file... and save it under the different name.

NoCD patched executable is probably needed for this as copy protected executables are harder to tamper with. Multiplayer executable (CoD2MP_s.exe) doesn't have any copy protection out-of-the-box.

So CoD2 doesn't seem to have any mandatory reliance on any special APIs, so the OP's issue must be related to DirectX/drivers, given the error message. And my experience hints that Windows 98 may not actually be able to grow program's stack on its own when the need arises.

It's possible to enable log file by adding +set logfile 1 at the end of the Target field on the Shortcut tab in the game shortcut's properties. The file console.log will appear in the main subfolder, though it's possible that it may not actually log anything if it's forced to bail out too early.

Edited by UCyborg
Fixed typo in SizeOfStackCommit size
Link to comment
Share on other sites

The default values of SizeOfStackReserve and SizeOfStackCommit when compiling executables are 1048576 and 4096 bytes, at least with MS tools. Devs changed the first one to 65536. Game seems to work fine when restoring the default values. When I had both at 65536, it crashed when a handful of extra map files were present.

Having both at the same value just avoids overhead of committing reserved memory pages, also noticeable when the map is loaded for the first time. Though it's one-time thing. In other unrelated cases of memory management committing everything right may needlessly consume memory. In this case, we're talking about 1 MB range.

23 hours ago, UCyborg said:

And my experience hints that Windows 98 may not actually be able to grow program's stack on its own when the need arises.

That sounds silly when you think about it, I guess just more stack space is needed when running on Win9x compared to WinNT.

23 hours ago, UCyborg said:

It's possible to enable log file by adding +set logfile 1 at the end of the Target field on the Shortcut tab in the game shortcut's properties. The file console.log will appear in the main subfolder, though it's possible that it may not actually log anything if it's forced to bail out too early.

It's possible to make the otherwise hidden console window visible and see the console output there, so full console output can be seen in case when it isn't dumped to log file. Might write the how-to at the later point. It would be really easy if Process Hacker could be used.

Edited by UCyborg
Link to comment
Share on other sites

Missed some things:

  • Installer has an OS version check, it runs only on Win2000+, easiest to bypass with KernelEx.
  • Cinematics just crash the game. I tried the game on WinME, they start there, but don't play to the end, they play for several seconds, then they're skipped.
Link to comment
Share on other sites

  • 2 months later...

Hi,

Thanks for your investigative efforts UCyborg, I think it is a driver issue of some sort in my case. The ollydbg hack doesn't change anything with either Radeon or Geforce. The Ati card gives a generic Windows error box message something about DirectDraw and with the Geforce 6800Gt I get the following:

M2350002.thumb.jpg.bf4abb8e604845e16049e55d86fae9af.jpg

This Create2DTexture 8876086c seems to be a common error with Call of duty series games, including COD4, there's many threads that come up with this same problem some as late as 2018 for Call of Duty: WWII. I think it was Detonator 82.69, that I tried running it with, may have to give earlier versions a try too.

Edited by 173a
Link to comment
Share on other sites

+set r_rendererPreference dx7 may be added to the shortcut's Target field to select D3D7 mode. This particular setting is stored in user's config.cfg file, so it doesn't have to remain in the shortcut for it to be effective on subsequent launches, assuming it launched successfully and had the chance to create the said file.

Link to comment
Share on other sites

I've only tried it with the Radeon system for now, but that launch argument seems to make no difference. This is what I get, same as before:

M2360001.thumb.jpg.c016150c84a4d8313923b73633ecb90b.jpg

It will also occasionally come up with the "unrecoverable directx error". The game attempts to start, shows the logo, the screen goes black, the display resolution changes to 800x600, but then it shows this message. Will report back once I've put the 6800GT system back together and try that with an earlier driver.

PS.

I've now tried the GT6800 again with the dx7 launch argument and it now shows the above error, same as the Radeon.

Edited by 173a
Link to comment
Share on other sites

On 11/26/2020 at 4:40 AM, UCyborg said:

Cinematics just crash the game. I tried the game on WinME, they start there, but don't play to the end, they play for several seconds, then they're skipped.

Can be related to hardware, CPU and or RAM speed. Settlers 6 lead-in video did not make it to the end on old motherboards. The 939 board works it and other Settlers 6 cinematics easily.

 

On 11/26/2020 at 4:40 AM, UCyborg said:

Installer has an OS version check, it runs only on Win2000+, easiest to bypass with KernelEx.

KernelEx can be set disabled on COD2demo.exe downloaded from UpToDown.com. Also runs after install with KEX disabled but has the same error, are we using the same program? ( *\D3D*.DLL = DCFG1 reg settings, some other settings may play a role too, just test to see ). Is WinME on a VM and using SwiftShader 2.01 as this probably makes a difference?

 

18 hours ago, 173a said:

launch argument seems to make no difference

Yes the arguments on the executable do not make the Gfx_d3d_x86_s.dll switch to Direct Draw. Also a BAT file with the arguments and DW with arguments did not switch the render. The first exception occurs after loading Shell32 in DW. Both DW and OllyDbg says the error occurs in Kernel32 from Gfx_d3d_x86_s.

00:00:02.602: DllMain(0x7FBD0000, DLL_PROCESS_ATTACH, 0x00000001) in "c:\me\system\SHELL32.DLL" called by thread 1.
00:00:02.602: DllMain(0x7FBD0000, DLL_PROCESS_ATTACH, 0x00000001) in "c:\me\system\SHELL32.DLL" returned 1 (0x1) by thread 1.
00:00:03.715: First chance exception 0xC0000005 (Access Violation) occurred in "c:\me\system\KERNEL32.DLL" at address 0xBFF66EAD by thread 1.
00:00:08.945: Loaded "d:\c\call of duty\2\GFX_D3D_X86_S.DLL" at address 0x03200000 by thread 1.  Successfully hooked module.
00:00:08.990: DllMain(0x03200000, DLL_PROCESS_ATTACH, 0x00000000) in "d:\c\call of duty\2\GFX_D3D_X86_S.DLL" called by thread 1.
00:00:08.992: DllMain(0x03200000, DLL_PROCESS_ATTACH, 0x00000000) in "d:\c\call of duty\2\GFX_D3D_X86_S.DLL" returned 1 (0x1) by thread 1.
00:00:09.019: First chance exception 0xC0000005 (Access Violation) occurred in "c:\me\system\KERNEL32.DLL" at address 0xBFF66EAD by thread 1.

The bottom of the COD2 Console says

Creating Direct3D device...
Com_TouchMemory: 0 msec. Using sum: 0
Initializing render targets...
Requested frame buffer to be 24-bit color with 8-bit alpha
DirectX returned a frame buffer that is 24-bit color with 8-bit alpha
Error during initialization:
Create2DTexture( $floatz, 1024, 768, 0, 114 ) failed: 8876086c = Invalid call

On 1/27/2021 at 11:33 PM, 173a said:

The ollydbg hack doesn't change anything

Yes because we used DirectX D3D9,dll. If we use SwiftShader 2.01's d3d9.dll downloadable from GoogleDrive and increase the Exe stack reserve size. Then the game gets to the start menu but the mouse is not moving and so nothing can be selected. The console with the DX D3D9 had mouse not on the same layer but Alt+Tab and then placing mouse estimating under the menu selections then Alt+Tab back to the game did not select the items.

An improvement and thanks for the OllyDbg tips and SwiftShader D3D9.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...