Steam – Valve’s digital distribution mechanism – is having a sale at the moment with some reasonable bargains, including a decent deal on Max Payne and Max Payne 2. Having enjoyed the original and never having played the sequel, I snapped it up.
There are problems, however: while the original works fine, Max Payne 2 suffers from major audio glitches in the video sequences. Sticking, juddering, popping every few seconds – it’s a mess. I tried setting processor affinity, turning Direct3D acceleration off, setting Windows 2000 compatibility mode – the works.
I finally figured out that it’s not actually Max Payne 2 that’s the problem, but rather the Bink video playback DLL that comes bundled. Having upgraded the RAD Video Tools to the latest version, I was able to recreate the problem outside the game engine simply by playing back the – admittedly fairly high-resolution – intro video within the Bink Player.
It turns out that some older software – Bink playback tools included – don’t like SMP systems, i.e. systems with two or more logical processors. The good news is that there’s a relatively simple fix.
By switching the timing mode Windows uses from a purely hardware one to an emulated system, the playback is smooth as a nut. While there’s a non-zero chance that I’ve reduced the performance of my system by some miniscule amount by doing so it’s more than worth it to get my older games running as nature intended.
To switch the timer mode, simply add the flag “/usepmtimer” to the end of your primary entry in boot.ini. Reboot, and et voila – Max Payne 2 working sweet as a nut. To give you an idea, this leaves my boot.ini file reading:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”Microsoft Windows XP Professional” /noexecute=optin /fastdetect /usepmtimer
Now if you’ll excuse me, the lovely Mona Sax is waiting.