|
Post by Kneesnap on Jun 25, 2020 15:00:25 GMT -8
Frogger's Adventures: The Rescue does not run on Windows 10 normally.
It crashes on my machine (with the retail CDs) during game setup. Using a debugger, I've identified that there is a memory corruption bug involved. It seems like for some reason, memory is getting overwritten by ntdll.dll, from a Direct3DCreate8 call. I have no idea why this is happening currently, however investigation is currently ongoing looking into it.
The game doesn't even work on my Windows XP laptop from the era. The current guess is that there was a Windows update, sometime during Windows XP's lifespan which broke the game. If I were to guess, this update came out after 2007-2008, since I played this game on an up to date machine at the time.
|
|
|
Post by Kneesnap on Jul 13, 2020 14:40:46 GMT -8
Update:
This turned out to be much more complicated than expected. Grimdoomer has been the main leader of this effort, I've mostly just been tagging along.
We have a semi-working patch at the moment. The game boots on Windows 10, but does not run at the proper speed. Some things are too fast, some things are too slow, and we're fairly certain the issue is caused by our patch.
There were several issues fixed so far.
#1: Memory Corruption. The game (for some unknown/questionable reason) was allocating persistent memory directly on the stack. This data would then get corrupted later because they had just assumed it was safe to do this. While apparently that was something which was safe in Windows XP, it does not work after that.
#2: setjmp & longjmp abuse. The game implements a coroutine system using setjmp and longjmp. It seems like this functionality just doesn't work in modern versions of Windows. So, the solution was to replace the system with our own. Our system creates a thread for each task (only like 8 or so if I recall) and basically just only leaves one thread active at once, but switches between them when before it would use longjmp. This seemed like the best way to do it, ie a way which would not rely on undefined behavior.
Currently our issue is that the game's timer does not seem to work properly on modern systems. This seems to be the final step, since the game appears fully functional, it just doesn't seem to run things at the proper intervals.
|
|
|
Post by Kneesnap on Jul 19, 2020 13:24:00 GMT -8
The patch is fully working now.
There are four separate components to making it work properly. We're going to clean it up / turn it into a single .exe which just works, instead of needing to properly setup / configure each different part right now. Once this is done, a guide will be created to making it run on Windows 10. Source code will be released, as well as a write-up of how this works.
|
|
|
Post by Kneesnap on Aug 12, 2020 15:56:34 GMT -8
The official thread for the patch is now available here. This thread is no longer relevant.
|
|