Jump to content

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


173a

Recommended Posts

4 hours ago, Goodmaneuver said:

Can be related to hardware, CPU and or RAM speed.

This was on VMware virtual machine, I don't have Win9x compatible hardware. I could give it a spin on a VirtualBox since it differs in practical execution speed, it's faster.

4 hours ago, Goodmaneuver said:

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?

Nope, we aren't, I ran setup.exe from original DVD.

4 hours ago, Goodmaneuver said:

Yes the arguments on the executable do not make the Gfx_d3d_x86_s.dll switch to Direct Draw.

Linkage to DirectDraw would have to be investigated, even CoD1, which renders using OpenGL, has it for some reason, maybe it just checks some aspect of the environment it runs in.

4 hours ago, Goodmaneuver said:

Then the game gets to the start menu but the mouse is not moving and so nothing can be selected.

If I remember correctly, forcing the game to run in windowed mode via SwiftShader helped a bit with the mouse problem, forgot to mention that.

Link to comment
Share on other sites


When going back to DX D3D9 for the Apilog, the game does the same as the SwiftShader D3D9. The game first run after going back to DX says there is a hardware change or something like that. What you do is do not select safe mode when prompted and do not select to change settings when prompted. I did not change the COD2 executable, it still has the 1000000 hex setting on the reserve stack size. If I go back to the original COD2 exe then the program terminates before the lead-in adverts. I downloaded the full SwiftShader and tried to install but it needed KernelEx XP settings and then errored. The file swift_798247639.exe (3,080,192 bytes) had a Trojan:Win32/Wacatac.D5!ml according to Win10 security. The settings I can not alter unless there is another SwiftShader download that is compatible. Where is the Config.cfg file I can not find it. I do not know where the settings are kept on my systems and looked in registry also. I repeated the install technique on another build and had the same result. After Alt+Tab then right clicking the application in the application bar the mouse cursor goes right to the RHS edge of the screen. MageKnight Apocalypse had to have the same screen resolution as the desktop otherwise the mouse cursor position was out by a factor of the resolution differences. Once the desktop matched the game resolution the mouse worked in the correct position. The game only has 4x3 modes +1360x768 with nVidia but this can be changed in the Default_GameOption.ini to a size and ratio of your choice. At 1920x1080 though I had to Alt+Tab then Alt+Tab back to the menu for the mouse cursor to be in the correct position. Gameoption.bcf has to be deleted before new settings take place. With AMD video the Default_GameOption.ini has to be set to 640x480 otherwise the game will not start. If COD2 installer is set KernelEx NT40 then the install complains of not being compatible with the OS. If I use ApiMonitor (not KEX one) on a working to menu COD2 then the game fails and with the log I have given the APImonitor all of the categories to be monitored possible. With original CoD2SP_s.exe I have given the ApiLog. 3260MT is in use on the test log build but the other test build had Crtdll for _getdrives. I have tried to slow the Apilog by using DW to load COD2 on a working exe (no filtering though) but machine had some some strange sounds still running after force exit of the game. Xls = ApiMonitor. Txt = ApiLog.

EDIT I can not upload the 157kB zip file. Unknown server error, code 200. What does this mean? Cannot upload a 16kB Rar file either same error.

Edited by Goodmaneuver
Strikethrough- new edit + next sentence.
Link to comment
Share on other sites

No attachment needed, just the text of the last few lines before any final error handling.

Also for the case when it terminates before the lead-in adverts.

 

Edited by jumper
Link to comment
Share on other sites

I think this is what you want but let me know otherwise.

2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd18a:<KERNEL32.DLL>LCMapStringW|100
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd239:<KERNEL32.DLL>LCMapStringW(bfa4c708)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd239:<KERNEL32.DLL>LCMapStringW|100
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd25c:<KERNEL32.DLL>WideCharToMultiByte(bfa52fda)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd25c:<KERNEL32.DLL>WideCharToMultiByte|100
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd0ef:<KERNEL32.DLL>MultiByteToWideChar(bfa53025)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd0ef:<KERNEL32.DLL>MultiByteToWideChar|100
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd170:<KERNEL32.DLL>MultiByteToWideChar(bfa53025)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd170:<KERNEL32.DLL>MultiByteToWideChar|100
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd18a:<KERNEL32.DLL>LCMapStringW(bfa4c708)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd18a:<KERNEL32.DLL>LCMapStringW|100
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd239:<KERNEL32.DLL>LCMapStringW(bfa4c708)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd239:<KERNEL32.DLL>LCMapStringW|100
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd25c:<KERNEL32.DLL>WideCharToMultiByte(bfa52fda)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafd25c:<KERNEL32.DLL>WideCharToMultiByte|100
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "IsProcessorFeaturePresent", bfa4c10d)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafe760:<KERNEL32.DLL>IsProcessorFeaturePresent(bfa4c10d)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafe760:<KERNEL32.DLL>IsProcessorFeaturePresent|0
1|ffe57aaf| [COD2SP_S.EXE]0044e989:<KERNEL32.DLL>LoadLibraryA|fa00000
1|ffe57aaf| [COD2SP_S.EXE]00451e72:<USER32.DLL>SendMessageA(bfa56d51)

The next logging sent message after <USER32.DLL>SendMessageA is

0|ffe57aaf|new log_stub("D3D9BASE.DLL", "KERNEL32.DLL", "IsDebuggerPresent", bfa4b37f)

The last of log.

2|ffe57aaf|  [MSSMP3.ASI]26f0aef0:<KERNEL32.DLL>HeapDestroy(7d00375c)
2|ffe57aaf|  [MSSMP3.ASI]26f0aef0:<KERNEL32.DLL>HeapDestroy|1
2|ffe57aaf|  [IMAGEHLP.DLL]7669376e:<KERNEL32.DLL>TlsFree(7d00df2a)
2|ffe57aaf|  [IMAGEHLP.DLL]7669376e:<KERNEL32.DLL>TlsFree|1
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafafd5:<KERNEL32.DLL>TlsFree(7d00df2a)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafafd5:<KERNEL32.DLL>TlsFree|1
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafdf16:<KERNEL32.DLL>HeapDestroy(7d00375c)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafdf16:<KERNEL32.DLL>HeapDestroy|1
2|ffe57aaf|  [D3D9BASE.DLL]01e52053:<KERNEL32.DLL>HeapDestroy(7d00375c)
2|ffe57aaf|  [D3D9BASE.DLL]01e52053:<KERNEL32.DLL>HeapDestroy|1
2|ffe57aaf|  [MSS32.DLL]21132e88:<KERNEL32.DLL>HeapDestroy(7d00375c)
2|ffe57aaf|  [MSS32.DLL]21132e88:<KERNEL32.DLL>HeapDestroy|1
2|ffe57aaf|  [TAPI32.DLL]77022693:<KERNEL32.DLL>TlsFree(7d00df2a)
2|ffe57aaf|  [TAPI32.DLL]77022693:<KERNEL32.DLL>TlsFree|1
2|ffe57aaf|  [3260MT.DLL]3267edcb:<KERNEL32.DLL>TlsFree(7d00df2a)
2|ffe57aaf|  [3260MT.DLL]3267edcb:<KERNEL32.DLL>TlsFree|1
2|ffe57aaf|  [OLEAUT32.DLL]77a102f1:<KERNEL32.DLL>TlsFree(7d00df2a)
2|ffe57aaf|  [OLEAUT32.DLL]77a102f1:<KERNEL32.DLL>TlsFree|1
2|ffe57aaf|  [OLEAUT32.DLL]77a26e36:<KERNEL32.DLL>TlsFree(7d00df2a)
2|ffe57aaf|  [OLEAUT32.DLL]77a26e36:<KERNEL32.DLL>TlsFree|1
2|ffe57aaf|  [OLEAUT32.DLL]77a27a84:<KERNEL32.DLL>HeapDestroy(7d00375c)
2|ffe57aaf|  [OLEAUT32.DLL]77a27a84:<KERNEL32.DLL>HeapDestroy|1
0|ffe57aaf|End of API Log for D:\C\CALL OF DUTY\2\COD2SP_S.EXE

Edited by Goodmaneuver
Link to comment
Share on other sites

I thought this may be significant also. Server would not allow any more editing to last post. This was before the previous post part with some logging taken out in between.

1|ffe57aaf| [COD2SP_S.EXE]00451eae:<USER32.DLL>SendMessageA|1
1|ffe57aaf| [COD2SP_S.EXE]0044e989:<KERNEL32.DLL>LoadLibraryA(bfa4c3ed)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "WideCharToMultiByte", bfa52fda)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "LoadLibraryA", bfa4c3ed)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "FindResourceW", bfa4fdad)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "MapViewOfFile", bfa4dc69)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "OutputDebugStringA", bfa4b25c)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "DebugBreak", bfa4b336)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "OutputDebugStringW", bfa4b25c)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "GetLocaleInfoW", bfa5049a)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "VirtualProtect", bfa52e05)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "GetVersionExA", bfa51f2f)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "CompareStringW", bfa4c4bc)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "CreateFileW", bfa4f333)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "TlsAlloc", 7d00de8e)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "TlsFree", 7d00df2a)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "MultiByteToWideChar", bfa53025)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "LCMapStringW", bfa4c708)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "ExitProcess", bfa4df49)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "FreeEnvironmentStringsW", bfa4fdc4)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "GetEnvironmentStringsW", bfa500f3)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "HeapDestroy", 7d00375c)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "HeapCreate", 7d00371c)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "GetStringTypeW", bfa4c589)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "GDI32.DLL", "DeleteObject", bfa471e1)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0faf74d6:<KERNEL32.DLL>GetVersionExA(bfa51f2f)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0faf74d6:<KERNEL32.DLL>GetVersionExA|1
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafde5e:<KERNEL32.DLL>HeapCreate(7d00371c)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafde5e:<KERNEL32.DLL>HeapCreate|4e4d454a
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "FlsGetValue", bfa4ad84)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "FlsSetValue", bfa4ad92)
0|ffe57aaf|new log_stub("GFX_D3D_X86_S.DLL", "KERNEL32.DLL", "FlsFree", bfa4ad76)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafafc1:<KERNEL32.DLL>TlsAlloc(7d00de8e)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafafc1:<KERNEL32.DLL>TlsAlloc|10
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafdca1:<KERNEL32.DLL>GetEnvironmentStringsW(bfa500f3)
2|ffe57aaf|  [GFX_D3D_X86_S.DLL]0fafdca1:<KERNEL32.DLL>GetEnvironmentStringsW|1cf8d54

Added info. DW when logging COD2 original with SwiftShader 2.01 D3D9 said that the stack size was not big enough.

00:00:29.622: First chance exception 0xC00000FD (Stack Overflow) occurred in "d:\c\call of duty\2\COD2SP_S.EXE" at address 0x0056C475 by thread 1.
00:00:29.623: Second chance exception 0xC00000FD (Stack Overflow) occurred in "d:\c\call of duty\2\COD2SP_S.EXE" at address 0x0056C475 by thread 1.

Edited by Goodmaneuver
Added Info
Link to comment
Share on other sites

On 2/3/2021 at 4:17 PM, Goodmaneuver said:

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.

I am not sure if it's of any help, but if I place SwiftShader's d3d9.dll in the game's folder, then I get the same error as with the gpu renderer:

8HUKdFB.jpg

If I rename the gfx_d3d_x86_s.dll, then I get these two prompts:

9N3LfCO.jpg

SrPsPWT.jpg

PS.

With SwiftShader and Ollydbg exe mod, the game starts, runs, loads levels, but unfortunately performance is in the single digits on a Core 2 Duo 6400 and pretty much lowest settings at 640x480. A3D is also not menu selectable.

PS2.

A3D can be enabled through the console and seems to work pretty well. I'd just wish there was a way to run the game with Direct3D.

Edited by 173a
Link to comment
Share on other sites

New development. I'll recount all my steps here in exact succession, in case this thread is of any use to anyone trying the same thing or writing guides/mods to make it all more tractable in the future.

I just tried running the game again with the SwiftShader's d3d9.dll renamed and ollydbg modded cod2sp_s.exe and gfx_d3d_x86_s set to KernelEx XP SP2 compatibility (I for some reason haven't tried doing this before, but it appears not to be the issue afterall). The game offered me to "set optimal settings" since "the system config has changed", to which I clicked "no", the game then launched very quickly, when compared to the SwiftShader powered launch, where even the intro videos play choppy. The game now ran in D3d with much improved performance. I exited the game and went back to disable the KernelEx for the game exe and gfx_d3d_x86_s.dll, the game started fine again, so KernelEx does in fact seem to aid with install only. If I go back to enable/disable SwiftShader again, start the game and choose to "set optimal settings", then the Create2DTexture failed error comes up again. So it does appear that SwiftShader creates some prerequisites for d3d use in software for subsequent launches with Nvidia driver, which is Forceware 71.84 this time if it's of any importance.

Issue resolved. Thank you everyone for your interest and participation, especially UCyborg, your expertise has been most helpful. I'll soon make a video of the game running with A3D and post it here if anyone's interest is already piqued.

PS.

Interestingly, I cannot get the above solution to work for my Radeon system, I keep getting this pesky Ddhelp error, even though the exe is now modified.

My two Windows 98 systems are as follows:

Core 2 Duo 6400 - Via P4M800Pro Mobo - 1GB DDR400 (no Mempatch installed) - Geforce 6800GT

Core 2 Duo 6420 - i865G Mobo - 2GB DDR400 (Mempatch installed) - Radeon 9600XT

Edited by 173a
Link to comment
Share on other sites

Must be one of the game's graphics settings that NVIDIA driver doesn't like. You could try playing with various graphics settings to find out which setting at which value causes it. You can backup your current config file to be able to easily revert to working configuration, its path relative to installation folder is main\players\<your profile name>\config.cfg.

Link to comment
Share on other sites

1 hour ago, UCyborg said:

Must be one of the game's graphics settings that NVIDIA driver doesn't like. You could try playing with various graphics settings to find out which setting at which value causes it. You can backup your current config file to be able to easily revert to working configuration, its path relative to installation folder is main\players\<your profile name>\config.cfg.

Nvidia system works fine though, it's the Radeon one that can't launch the game. These are two separate computers, with separate HDDs, PSUs and cases, the software setups are identical though. I noticed that I need to first launch the game for the profile folder to appear in the "main" game folder. I'll try copying my nvidia system cod2 config, see how it goes, even though the Radeon doesn't support SM3.0. Also, if I rename gfx_d3d_x86_s on the Radeon system and the game fails to start with the errors as in my prior post, the game seems to recognise that SwiftShader is the renderer now, so it can't be gpu driver related, can it?

PS.

Copying the profiles and save games hasn't done it, but copying all the main folder contents save for the "main" folder did the trick.

Edited by 173a
Link to comment
Share on other sites

I mixed up NVIDIA and ATI systems. If I got this right, you practically copied whole main folder content from one system to another and then it started working? It's like as if some file initially got corrupted on ATI system.

Link to comment
Share on other sites

On 2/6/2021 at 3:29 PM, UCyborg said:

I mixed up NVIDIA and ATI systems. If I got this right, you practically copied whole main folder content from one system to another and then it started working? It's like as if some file initially got corrupted on ATI system.

I copied the main folder + all the exe and dll files from the main game folder, then it worked. I don't know why it wouldn't work otherwise, I even reinstalled the game and tried doing the exe mod a few times. But it's working now on both systems which is great.

Youtube video

Edited by 173a
Link to comment
Share on other sites

  • 8 months later...

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...