Rainbow color problems in older games

From PCGamingWiki, the wiki about fixing PC games
(Redirected from Color Fixes For Older Games)
This page may require cleanup to meet basic quality standards. You can help by modifying the article. The discussion page may contain useful suggestions.

Key points

Windows XP, Vista and 7 have compatibility issues with DirectDraw games using 256 color depth resulting in incorrect colors.
This color issue does not occur on Windows 8 and later; the steps below only apply to earlier versions.

Cause[edit]

This issue appears to be caused by Explorer.exe resetting the system palette, essentially overwriting the palette defined by the game (hence the rainbow colors). This is evidenced by how taking a screenshot of an affected game will show just the discoloration with black where the other game assets would be rendered and by the fix itself.

A more technical explanation: These games rely on DirectDraw, an API in DirectX which was used to render graphics which is now deprecated. More specifically, they used an exclusive palette, where they set the system palette (the colors the system can use, back when there were only 256 colors) to the palette the game wants to use. However, some applications try to set their own exclusive palette, causing conflicting colors since the game's exclusive palette is no longer actually exclusive and is set to the wrong colors. In newer versions of Windows, CSRSS and the desktop window (explorer.exe) set their own palette, which causes the odd colors.[1]

Fixes[edit]

w7ddpatcher[edit]

w7ddpatcher is the simplest and best method.[citation needed]

PalettestealerSuspender[edit]

PalettestealerSuspender prevents palette issues using a different method.[2]

DxWnd DirectDraw emulation[edit]

DxWnd was originally created to enable old DirectX games to run in a window. Nowadays it provides far more features: It can fix the odd rainbow color issue, enable time stretching, and you can decide between running the game in a window or in full screen.

Registry hack[edit]

Windows 7 actually has a builtin, hidden fix for this issue but requires editing the registry.

Reg-hack
  1. Run your game at least once and exit out of it.
  2. Go to your registry and navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\MostRecentApplication (if you're using 64 bit, go to HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication)
  3. Take a note of the name, game.exe, and the ID, which looks similar to this: 0x02e41c67
  4. Remove the '0x' part of the ID and separate the values into pairs, like this: 02 e4 1c 67
  5. Take the pairs and reverse their order, like this: 67 1c e4 02
  6. Open notepad and add the following. Change NameOfGame to whatever you want, leave Flags alone, enter your own ID keeping commas intact, and change game.exe to whatever it is.

32 bit only

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\<NameOfGame>]
"Flags"=hex:00,08,00,00
"ID"=hex:00,00,00,00
"Name"="game.exe"

or
64 bit only

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\<NameOfGame>]
"Flags"=hex:00,08,00,00
"ID"=hex:00,00,00,00
"Name"="game.exe"

7. Save it as fix.reg and run it to import it to the registry.

Not the best method for new users as editing the registry incorrectly can damage your OS.

[3]

Kill Explorer with batch script[edit]

Paste the following into a text editor and save as a batch script. Run it from the game's folder:

TASKKILL /F /IM "explorer.exe" 
start /w [insert executable name here].exe 
start explorer.exe
If script fails/crashes before it restores the Explorer, you will be left with a blank desktop screen and will have to force restart you machine via the power button. Still this method remains a useful last resort if above utilities fail.
Interestingly, using a batch script is actually often the first method everyone tries.

See also[edit]

References

  1. gdi - "Exclusive" DirectDraw palette isn't actually exclusive - Stack Overflow
  2. Bed Against The Wall: Solving Color Problem (Red Grass, Purple Water) In Age Of Empires 2: Age Of Kings (The Conquerors And Others Too) On Vista And Windows 7
  3. https://www.neowin.net/forum/topic/927140-win7-fixing-old-256-color-games-with-distorted-palettes/