Saints Row 2’s 2015 GOG Release: What was actually changed?
Same as Steam's patch 1.2, but with all languages pre-packaged, an extra forced framelimiter and LARGEADDRESSAWARE flag
If you’re just looking for a way to play the game, use Juiced Patch.
Background
Saints Row 2 has been called one of the worst PC ports of its era (although I personally disagree, there are worse), with issues such as cutscene objects becoming desynchronized, constant random crashing, and more than sub-par performance. All of these issues have been attributed to the company that ported the game to PC, CD Projekt Localisation Centre (CDPLC).
GOG, which was owned by CD Projekt at the time, came out of the blue in 2015 and re-released the game on its storefront. Despite no promises of enhancements being made, the release does have some edits applied to it.
So what was done?
Barring the obvious stuff, such as the removal of Steam DRM making the game DRM-free, they also seem to have shipped all languages with the game rather than having them locked behind an option to download like on Steam.
Saints Row 2 on PC picks your PC’s locale as the language. The game also supports the forcelang_la command-line argument, with la being your language of choice that the game supports.
Changes done to the executable
The game is still the same latest patch 1.2 release seen on Steam, even retaining the 49904C37 Unix timestamp in its PE header:
1
Mon Feb 09 15:31:03 2009
LARGEADDRESSAWARE enabled
GOG patched the executable’s PE header to enable the LARGEADDRESSAWARE flag, which allows 32-bit programs to use more than 2 GB of RAM (up to 4 GB on 64-bit versions of Windows, or 3 GB on supported 32-bit versions.
This change alone significantly improves the game’s stability, despite the game not actually using dynamic memory that much. During initialization, the game pre-allocates specific amounts of memory into what it internally calls mempools, and the game’s functions request memory from those pools, (specific mempools for chunks,models,city chunk and so on)
Memory outside those pools is used in CDPLC’s rendering implementation and even by their leftover debug metric system, which is always tracking in retail builds and was never stripped.
This does not fix every crashing issue, but it does fix one of the most common ones.
A sub-par frame-rate limiter
This one is rather peculiar. The game already comes with its own sub-par frame-rate limiter, but GOG implemented what is effectively going to be the third frame limiter.
CDPLC’s rendering implementation makes use of a command buffer to process DirectX 9 calls. The calls are made on the main game thread and then processed on a separate rendering thread after the main game thread has finished processing. GOG’s edits appear to be purely assembly edits made to the executable.
They injected this frame limiter into the code that processes a call to IDirect3DDevice9::Present.
1
2
3
4
5
6
7
fps_limit_loop_counter = 0x1000000;
do
{
--fps_limit_loop_counter;
}
while (fps_limit_loop_counter);
Their implementation pretty much consists of loading the value 16,777,216 (0x1000000) into the ECX register and using the assembly loop instruction to subtract one from it repeatedly, doing nothing until the value reaches zero.
Doing this averages the game’s frame rate to around 42 FPS on my machine, although it is somewhat dynamic and sometimes climbs up to 46 FPS.
What their intention was remains largely unknown. Was it supposed to be a 30 FPS lock? Was it meant to slow down the rendering thread?
What is extremely odd is that the game already has a frame-rate limiter directly below the functionality GOG added. On my machine, that one limits the game to around 67 FPS.
A third one for NVIDIA users
GOG also seems to ship an NVIDIA compatibility profile that limits the game’s frame rate to 30 FPS. I do not currently have an NVIDIA setup to confirm this.
Many other issues were left untouched
Many issues exclusive to the PC port were left untouched, such as the speed-up and slow-down problem. Despite what is commonly said, it is not caused by the game being hard-coded to the Xbox 360’s CPU clock speed.
I recommend reading Scanti’s forum post or watching his video, which explains the issue well and also provides technically it can be fixed and how it’s already fixed in a certain Windows 10 update
Other untouched issues include graphical differences from the Xbox 360 release, performance problems, no online functionality due to GameSpy’s shutdown in 2014, exclusively mono audio, tinny audio and much more.
Conclusion
The GOG release is mostly the same as the Steam version, but with Steam DRM removed, all languages included, LARGEADDRESSAWARE enabled, and a strange extra inaccurate frame limiter added, with not much else going for it. This probably goes without saying, but you should check out Juiced Patch, where we address many of these issues with much more and disable GOG’s frame-rate limiter if you’re playing the GOG version, and even patch the executable to enable the LARGEADDRESSAWARE flag if playing on non-GOG releases.

