Old popular games such as Age of Empires, Starcraft, Worms and Diablo that runs on windows 7 and vista is suffering palette problem which caused the game graphics color messed, color problem, palette stolen, etc.
|VOS - Color messed (rainbow) and it's not black actually.|
Because the game is about pressing the key at the right moment and since I cannot see the note fall because the note and the background looks the same. It make me think to write some tools to solve this issue because almost all people talk about the solution to this problems is to terminate explorer.exe and then start the game, but I don't like this method.
After googling around, I found interesting statement about what caused the problem here: http://forums.bf2s.com/viewtopic.php?pid=2898635#p2898635 which says:
"The game colours get all messed up
This happens when another application is stealing W:A's palette. W:A logs such occurrences to the file "palette.log" in your W:A folder. If you can, try closing the programs listed there.
Often it's a component of Windows itself that's stealing W:A's palette (usually csrss.exe)."
The problem is that windows application is stealing the palette.
My first idea is to write a tools that will find the application that steal the palette and suspend it. Suspending will cause some side effects such as when explorer.exe steal the palette, you will not be able to ALT+TAB to minimize the game. So instead of suspending it, I want to hook the process to change its behavior to not touching the palette when the game is running. Since I don't know much about graphics I begin googling and found existing tools, methods and solution to fix the problem on this site: http://blog.macuyiko.com/2009/07/solving-color-problem-red-grass-purple.html
Methods and Solution:
There are various methods and solution explained at macuyiko's blog. I will list some only, if you want to see the complete list, go [here]
- Killing explorer.exe isn't my option and it doesn't feel safe for me. But there is other way to close the explorer gently and start the game.
- First make sure you can start task manager by pressing CTRL+SHIFT+ESC (directly open the task manager) or CTRL+ALT+DEL (I don't like this combination since it will bring you to the lock screen).
- Then open start menu and press CTRL+SHIFT, then right-click to any empty area on your start menu and select Exit Explorer.
- Back to your task manager, select File and choose New Task. Browse your game executable and click OK.
- If you want to get the explorer back, type explorer.exe in New Task.
2) The strange screen resolution method:
- First, right-click at any empty desktop area to bring out the menu, select Screen Resolution and click advance settings.
- Another windows will be opened, now you need to click monitor tab and leave it open. Run the game.
- This is strange solution but works.
|3-Steps Screen Resolution method|
3) Jari Komppa's DirectDraw hack:
- This method will use Jari Komppa's DirectDraw hack, a direct draw dll that wraps direct draw calls and redirect them to OpenGL. I was never successfully try this method as I only have one old direct draw game on current laptop installed and the game crashes when using this method. My assumption is that not all direct draw call is implemented yet.
- First, download Jari Komppa's ddraw hack [here], select [ddhack10.zip]
- Extract and place them in your game executable folder and then run the game.
- If you don't know your executable game folder, right-click on game shortcut and choose Open File Location.
4) Compatibility hack:
- This is a tool created by Mudlord. It will add game exe into registry entry to enable compatibility mode.
- You can download the tool [here] or [here] (mirrored by [Seppe Vanden] as original source seems to be down).
- Extract and run the tools and then select patch.
- Select your game executable and wait for the patching process begin. The game will be start and terminate immediately as the application tried to grab the process identifier.
- Note: This tools will not patch your executables, but it will add some entry in registry. No file will be harmed and touched.
- Update: Unfortunately, this method works only for few minutes for me.
So far, I like to use solution number 2 and 4. If I'm not lazy enough, I will create a tool that will hook windows explorer. Why bother to create a tool when there is already enough tools available? Simply because, I will release the source code too and you can learn from it.