VOGONS

Common searches


First post, by UCyborg

User metadata
Rank Member
Rank
Member

Same story as with Max Payne games: Max Payne 1 & 2 Startup Hang Patch

Attachments

Last edited by UCyborg on 2017-01-23, 09:44. Edited 2 times in total.
Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 3 of 19, by UCyborg

User metadata
Rank Member
Rank
Member

Added the same patch for 3D Mark 99 Max.

Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 4 of 19, by Interl@ce

User metadata
Rank Newbie
Rank
Newbie

I've got a 4GB windows 98 DosBox-VM full of d3d and 3dfx nostalgia from that era, now I'm trying to get benchmarks going, pushing it to it's limits.. Final Reality and 3DMark99 work great, but 3DMark2000 fails to start with an MMX-requirement. Is it possible (for debugging/sh*ts'n'giggles) to remove that check or have it pass anyway? cpytype pentium_mmx is crippled in the dosbox-build I need and it seems if anyone can do it, it's you 😁

PS: For anyone interested in this little project LINK REMOVED download link in description. Only demos included, but a huge bunch of 'em 😀 if you wanna try 3dmark99 disable KernelEx in the shortcut's properties.

Reply 5 of 19, by teleguy

User metadata
Rank Member
Rank
Member
Interl@ce wrote:

I've got a 4GB windows 98 DosBox-VM full of d3d and 3dfx nostalgia from that era, now I'm trying to get benchmarks going, pushing it to it's limits.. Final Reality and 3DMark99 work great, but 3DMark2000 fails to start with an MMX-requirement. Is it possible (for debugging/sh*ts'n'giggles) to remove that check or have it pass anyway? cpytype pentium_mmx is crippled in the dosbox-build I need and it seems if anyone can do it, it's you 😁

PS: For anyone interested in this little project LINK REMOVED download link in description. Only demos included, but a huge bunch of 'em 😀 if you wanna try 3dmark99 disable KernelEx in the shortcut's properties.

Do you only want the check removed or is the goal to successfully run the benchmark? Because with just the check removed it will probably crash at a certain point (or right at the start). I don't think it's possible to make the benchmark compatible with non-MMX cpus without access to the sourcecode (or maybe using some kind of wrapper).

The attached file contains two exes, one that will always fail the check I used for testing since I don't have a cpu without mmx support, and one (untested) that should alway pass.

Attachments

Reply 6 of 19, by UCyborg

User metadata
Rank Member
Rank
Member

Looks like that MMX error is redundant, the benchmark is programmed to handle absence of MMX just fine. Excluding 3 DLLs in e2driver that utilize extra instructions depending on selection made in CPU Optimization drop-down list, there are just 2 small blocks of code in rlmfc.dll using MMX plus a check that jumps to code that uses FPU rather than MM registers if MMX is not available.

If that wasn't the case, I guess the only way to make it work would be studying MMX instructions and replace them with standard ones. Which might be PITA to implement unless you're ASM guru. Trying to execute MMX instructions will indeed crash it on old CPUs, which is one way to locate them with debugger, another option is searching the executable file for EMMS instruction.

Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 8 of 19, by UCyborg

User metadata
Rank Member
Rank
Member

1) You're using Windows 95/98 compatibility mode, which limits the number of reported resolutions by the system. Turn it off and install this instead. 1920x1080 will look stretched though as no one patched the benchmark for wide resolutions.

2) Try forcing VSync off in your graphics drivers.

Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 10 of 19, by n3r0

User metadata
Rank Newbie
Rank
Newbie

UCyborg, 1) that helped, fullhd is available now. Yes, it's stretched, but does it still render in fullhd and make more load on video card?
2) Forced vsync off in AMD settings app, but still capped at 60FPS 🙁

teleguy, yep, switching to single buffer uncaps, but image blinks so heavy that can cause epilepsy.

-------------------------------------------------------------------------------------------------------------------------

Okay, now encountered issue with 3DMark2001SE. It hangs on startup, even with a patch from this thread.

System: Win7x64, graphics card: r7 260x.

This was not the case when I had GTX750Ti card. I tried different compatibility modes with this patch.

Compatibility with Win98: app crashes.
Compatibility with Windows XP SP3: app hangs on start, no errors.
No compatibility: app throws 128MB memory error, then hangs.

Reply 11 of 19, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie
n3r0 wrote:
UCyborg, 1) that helped, fullhd is available now. Yes, it's stretched, but does it still render in fullhd and make more load on […]
Show full quote

UCyborg, 1) that helped, fullhd is available now. Yes, it's stretched, but does it still render in fullhd and make more load on video card?
2) Forced vsync off in AMD settings app, but still capped at 60FPS 🙁

teleguy, yep, switching to single buffer uncaps, but image blinks so heavy that can cause epilepsy.

-------------------------------------------------------------------------------------------------------------------------

Okay, now encountered issue with 3DMark2001SE. It hangs on startup, even with a patch from this thread.

System: Win7x64, graphics card: r7 260x.

This was not the case when I had GTX750Ti card. I tried different compatibility modes with this patch.

Compatibility with Win98: app crashes.
Compatibility with Windows XP SP3: app hangs on start, no errors.
No compatibility: app throws 128MB memory error, then hangs.

60 FPS limit is due to fake VSync on a Win 8/8.1 or 10 system
Try in windowed mode.

Reply 12 of 19, by teleguy

User metadata
Rank Member
Rank
Member
n3r0 wrote:
Okay, now encountered issue with 3DMark2001SE. It hangs on startup, even with a patch from this thread. […]
Show full quote

Okay, now encountered issue with 3DMark2001SE. It hangs on startup, even with a patch from this thread.

System: Win7x64, graphics card: r7 260x.

This was not the case when I had GTX750Ti card. I tried different compatibility modes with this patch.

Compatibility with Win98: app crashes.
Compatibility with Windows XP SP3: app hangs on start, no errors.
No compatibility: app throws 128MB memory error, then hangs.

Running 3dMark 2000 on modern hardware

Reply 13 of 19, by n3r0

User metadata
Rank Newbie
Rank
Newbie

teleguy, thanks, that one helped.

lowenz, but I am not using neither Win 8 nor Win 10. I use Win7, and still get FPS cap. Setting VSync OFF in AMD setting doesn't help.
Where can I set windowed mode in 3DMark99?

Reply 15 of 19, by UCyborg

User metadata
Rank Member
Rank
Member

I've been messing a bit with the old 3DMark versions recently, including 3D Mark 2000 plus the the other two: Final Reality and XL-R8R. If I don't get distracted by something else, I will post versions with some new patches here some time this weekend. There's something still left to do. It will be nice to have everything in one place. 😀

Anyway, 3DMark 99 runs at 60 FPS even in real fullscreen mode because DirectDraw (yes, everything DX7 and below uses some basic DirectDraw functions) defaults to VSYNC on and it must be disabled explicitly. And yeah, AMD drivers not giving a damn about some user choices has been my experience as well.

I've also checked 3DMark 2000, found out teleguy did some patches. I corrected plain JMP instructions for bypassing RAM/VRAM/texture memory check with the ones that treat the integers as unsigned. Because for example original JGE (Jump Greater than or Equal) won't work correctly, but JAE (Jump if Above or Equal) will. 😁 Also found and removed restriction with CPU Speed test only running if 16-bit color is selected. 3DMark 2001 will no longer show the thing about 128 MB memory requirement unless run on machine with actually less RAM. All versions that had issue with reporting memory amount will now report it (more) correctly, at least up to 4 GB.

Then, I modified some API calls for reading registry so they work when running as standard user and with disabled file/registry virtualization. This is just so the registration information can be read successfully in such scenario.

Small things like that basically.

Regarding Single option for Frame Buffer, I think glitches are expected due to the nature of single buffering. Need at least 2 buffers for this sort of thing.

I'm not sure about the hang of 3D Mark 2001 on certain configurations, we're probably looking at some separate issue. I've had GeForce GTX 750 Ti until recently, sadly, it was starting to make my system hang, so back to Radeon 4890. The only newer AMD GPU I have is the integrated Radeon R2 in a laptop, where things seem to work when allowing usage of all CPU cores. I think single-core workaround is better applied on case-to-case basis, you can get higher scores with all cores, particularly when combined with dgVoodoo 2. It can really make a noticeable difference in Max Payne games on low-end hardware, which use a version of the engine used in 3D Mark 2001.

A must thing that 3D Mark 2001 needs on newer operating systems from Windows XP compatibility mode is the RedirectMP3Codec shim, otherwise, an error occurs.

There's also something about 3D Mark 99, I suggested using the EmulateHeap shim with it (posted a compatibility database in some other thread), but I'm not sure whether it's actually needed or not. Still crashes sometimes on my end, usually after transition to new test. It seems more likely on my Windows 10 install than on 8.1, everything else being equal. Weird.

That thing in Windows 8/8.1/10, so called maximized windowed mode, it's a sort of hybrid between windowed mode and fullscreen mode. MS introduced it when they were overhauling their desktop composition engine and the original DIrectDraw without some wrappers can do some crazy things that don't go well with composition, hence why composition gets disabled on Vista/7, but in later systems, such operations won't disrupt it anymore. But there are consequences. It's been a while, but I checked some sample one time that drew something directly on the desktop and it didn't work too well on 8/8.1/10. From my observations in general, only 8/8.1 have an issue with extremely low frame-rate, a workaround if one insists on this mode is enabling NoGDIHwAcceleration shim with Compatibility Administrator.

Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.

Reply 16 of 19, by teleguy

User metadata
Rank Member
Rank
Member
UCyborg wrote:

Anyway, 3DMark 99 runs at 60 FPS even in real fullscreen mode because DirectDraw (yes, everything DX7 and below uses some basic DirectDraw functions) defaults to VSYNC on and it must be disabled explicitly. And yeah, AMD drivers not giving a damn about some user choices has been my experience as well.

From what I have heard it's because of this:
In DirectX vsync is supposed to be completely up to the game developer, so if there are no vsync controls included in a game's options menu the users shouldn't be able to make any adjustments. Since AMD "follows standards" most of the vsync settings in AMD's driver controlpanel only apply to Opengl. (Luckily for Nvidia users, Nvidia doesn't care.)

However some tools were created that can work around this "feature", namely D3DOverrider and Radeonpro. I just checked Radeonpro and while I didn't expect it would work for DirectDraw apparently it does.
3Dmark 99 runs with unolcked framerate and without flickering. 😀

Reply 17 of 19, by n3r0

User metadata
Rank Newbie
Rank
Newbie

Tried Radeonpro with these settings: http://prntscr.com/hzx3ad , doesn't help.
Tried D3DOverrider with these settings: http://prntscr.com/hzx3j5 , doesn't help as well.

Still capped at 60. Am I doing something wrong?

Reply 18 of 19, by UCyborg

User metadata
Rank Member
Rank
Member

Oh yeah, forgot to answer about whether higher resolution still puts more load on the card, despite it being stretched and the answer is yes. Although with a widescreen patch, if it existed, you could also have a little larger field of view, so that would also add a little to the load.

I haven't got around to finishing everything I wanted yet, but here's a modified grphmfc.dll for 3D Mark 99 that should disable VSync. But if there's something about the drivers behaving on their own regardless, there's not much that can be done AFAIK, except some wrapper like dgVoodoo2 for converting old DirectDraw/Direct3D calls to something newer.

Edit: Yeah, VSync controls do seem to work on my laptop's Radeon R2 for OpenGL stuff only, but they're ineffective on Radeon 4890. Unless maybe ATI Tray Tools doesn't set something right? Been a long time since I played with the old Catalyst Control Center and I don't have it installed ATM. Using some modded 12.11 drivers where CCC is bundled separately, to let you choose the version you like. And on NVIDIA, VSync is turned on in OpenGL by default unless explicitly disabled either through driver settings or by the game's code.

Collection of all old 3D Mark patches: https://drive.google.com/open?id=19FLXgBHK138 … OwGej7-uCwYITKn

One scene in Final Reality is frame-rate dependent, so it goes fast with uncapped frame rate. Only change in grphmfc.dll is disabled VSync.

Apparently there are some restrictions here so can't edit original post anymore.

Last edited by UCyborg on 2018-01-14, 17:12. Edited 1 time in total.
Arthur Schopenhauer wrote:

A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.