Anonymous edits have been disabled on the wiki. If you want to contribute please login or create an account.


Warning for game developers: PCGamingWiki staff members will only ever reach out to you using the official press@pcgamingwiki.com mail address.
Be aware of scammers claiming to be representatives or affiliates of PCGamingWiki who promise a PCGW page for a game key.

Topic on Talk:Tomb Raider I-III Remastered

Solution for running game on Windows 7

3
Macgovern (talkcontribs)

After doing some research, the game NEVER uses DirectX 12 in any capacity - it's all OpenGL. What's actually going on is that the game is using a Windows kernel function called "GetOverlappedResultEx", which wasn't introduced until Windows 8. However, it would seem simply forcing the game to use "GetOverlappedResult", a function which DOES reside in the Windows 7 kernel, makes the game functional.

Can anyone confirm this? Here's the instructions for convenience (start from the fourth bullet point): https://steamcommunity.com/app/2478970/discussions/0/4362368844135521784/#c4362368844135983377

Aemony (talkcontribs)

While it's nice to see that this allows the game to boot on Windows 7, the solution is inherently flawed since all it's doing is invalidate the statically linked dependency on the GetOverlappedResultEx call. It otherwise does not change or affect _how_ that call is used in the game itself.

So what we have here is undefined behaviour as GetOverlappedResultEx() and GetOverlappedResult() differs in how many input parameters they accept and what those parameters control and mean. Even _if_ the game's call to GetOverlappedResultEx() would make its way to GetOverlappedResult() (which I am unsure about), the given stack would differ from the expectation.

Yeah, the game launches. But then what happens when these undefined GetOverlappedResultEx-that-isn't calls are made? Even if the game doesn't crash outright when it attempts to make that call, what are the long-term consequences of the invalid behavior? The crash of a thread? Growing unseen memory corruption?

So while it's a flawed workaround, it's not a perfect solution and a better one would have to be implemented as soon as possible.

Since GetOverlappedResultEx() and GetOverlappedResult() are mostly compatible with one another it's probably more than possible for someone with experience of binary modding a game to just change out the existing GetOverlappedResultEx() calls to a GetOverlappedResult() call, drop the last parameter and have the third parameter set to 0/false. That would be a much better fix than trying to mangle a GetOverlappedResultEx() call into a GetOverlappedResult() that were never designed to handle it.

Fusha (talkcontribs)

I've since watched someone play the first game on windows 7 after having followed the instructions, and he hasn't encountered any issues.