Hey community,
Thanks for useful the post, the registry trick is definitely the cleanest solution; unfortunately it didn't work for me at first, because the ID of my Diablo.exe didn't match the one provided by Blizzard.
Here's how to generate the ID of any game:
1. Run Diablo (or whatever game has a palette problem) in Compatibility mode WinXP SP3 (other modes might work, but I tested only this one) and just leave it right away. This will force DirectDraw to generate the ID of your game in a registry key named MostRecentApplication.
2. Find this key by running regeditit and browse your registry to:
For 32bits Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\MostRecentApplication
For 64bits Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication
Note down the value of keys "Name" and "ID" (make sure the Name is your game executable name)
3. The ID needs a little tweaking; let's assume it is 0x12345678. This is a 4-bytes long value, each bytes consisting of 2 hexadecimal digits, so read it as: 12 34 56 78. Because x86/64 CPUs use little endian, you need to reverse the byte order, in this case: 78 56 34 12.
4. Now to force DirectDraw into compatibility mode you need to create/update the key in (replace the final key name "Diablo109" by any name you need, it doesn't really matter):
For 32bits Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\Diablo109
For 64bits Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\Diablo109
There must be 3 fields there:
- Flags (type: binary) = 00 08 00 00
- ID (type: binary) = the reversed value you obtained in step 3, in this example this would be 78 56 34 12
- Name (type: string) = the name you saw in step 2.
5. Test your game; if it works you should be able to remove any compatibility mode and play just fine!
Hope this helps, peace.
Z
EDIT1: Added reg path for win32bits
EDIT2: Added compat mode requirement to generate ID, and some more info about the registry keys
Thanks for useful the post, the registry trick is definitely the cleanest solution; unfortunately it didn't work for me at first, because the ID of my Diablo.exe didn't match the one provided by Blizzard.
Here's how to generate the ID of any game:
1. Run Diablo (or whatever game has a palette problem) in Compatibility mode WinXP SP3 (other modes might work, but I tested only this one) and just leave it right away. This will force DirectDraw to generate the ID of your game in a registry key named MostRecentApplication.
2. Find this key by running regeditit and browse your registry to:
For 32bits Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\MostRecentApplication
For 64bits Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication
Note down the value of keys "Name" and "ID" (make sure the Name is your game executable name)
3. The ID needs a little tweaking; let's assume it is 0x12345678. This is a 4-bytes long value, each bytes consisting of 2 hexadecimal digits, so read it as: 12 34 56 78. Because x86/64 CPUs use little endian, you need to reverse the byte order, in this case: 78 56 34 12.
4. Now to force DirectDraw into compatibility mode you need to create/update the key in (replace the final key name "Diablo109" by any name you need, it doesn't really matter):
For 32bits Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\Diablo109
For 64bits Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\Diablo109
There must be 3 fields there:
- Flags (type: binary) = 00 08 00 00
- ID (type: binary) = the reversed value you obtained in step 3, in this example this would be 78 56 34 12
- Name (type: string) = the name you saw in step 2.
5. Test your game; if it works you should be able to remove any compatibility mode and play just fine!
Hope this helps, peace.
Z
EDIT1: Added reg path for win32bits
EDIT2: Added compat mode requirement to generate ID, and some more info about the registry keys