Found the issue. In every version of the EXE we've encountered so far, the call to DirectSoundCreate() looks like this:
8B 00 MOV EAX, DWORD PTR [EAX]
50 PUSH EAX
E8 xx xx xx xx CALL xxxxxxxx ;DirectSoundCreate(), exact address varies
In that EXE file you just posted, however, it looks like this:
8B 04 02 MOV EAX, DWORD PTR [EDX+EAX]
50 PUSH EAX
E8 xx xx xx xx CALL xxxxxxxx ;DirectSoundCreate()
The patcher looks for the following byte pattern to locate the call to DirectSoundCreate():
8B 00 50 E8 ** ** ** **. However, the code in your EXE doesn't start with
8B 00, but with
8B 04 02. At some point, Take 2 either changed the code that starts up DirectSound, or built it with a different compiler, and that's why the patcher is failing.
__________
I have modified the patcher program and have attached a v1.1 release candidate to this post. Note that
this is not a formal release, so don't point people to it just yet.
What it does differently is that if it can't find the first DirectSoundCreate() call, it will search for the second one. If it finds either, it writes the following instruction to the "MOV EAX" instruction:
31 C0 XOR EAX, EAX
This forces EAX to be equal to zero, effectively passing NULL as the device ID to DirectSoundCreate(), which in turn informs the subsystem to use the default audio device. This is how the game should have been doing it all along. |-:
In the event the patcher located the second form, which has an additional byte, it will overwrite that byte with this:
90 NOP
NOP literally has no function, so it allows the number of bytes to remain the same while honoring our reprogramming of it.
So hey, LemSteven, check the attachment and see if it works for you. Everyone else, check the attachment and make sure it works for you as well. I want to make sure I didn't break anything while implementing this fix. (-:
__________
As for the EXE, I did notice one change in particular: the language-selection option on the main menu is missing:
This was either an early US-only release, or a late US-only release. I can't decide which is more likely. (-: