Friday, March 25, 2011

Solving old games graphics problem on Windows 7 and Vista

18 comments
Introduction
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.

Recently, I wanted to play some old game and one of them are Virtual Orchestra Studio, the color messed but doesn't influence the game. I played normally without doing any trick or methods that solve the color issue. Suddenly, one day while playing Virtual Orchestra Studio, the color that supposed to be blue turned white and almost the entire screen turned bright including background!
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.


The Issue
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.

Idea Arrive
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]

Exit Explorer
1) The famous terminate explorer.exe:
  • 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.

18 comments :

  1. the monitor tab thing worked perfectly with cossacks on win 7 64 :/ awesome trouble solving ability there mate kudos :D

    ReplyDelete
  2. The monitor tab thing worked great. Obviously, this is some Very Well Designed Feature.

    ReplyDelete
  3. can i get some VOS song pack ? pleaseee.. i wonder if there anyone have the FF X sutekidane song for VOS. T.T

    ReplyDelete
  4. Thanks a lot!Awesome solution!!!

    ReplyDelete
  5. That's awesome. The monitor tab thingie did the job. Thanks a ton :)

    ReplyDelete
  6. i want t play another song on vos game...can someone teach me how too the song?....

    ReplyDelete
  7. Compatibility hack worked wery well thanks for the tips :)

    ReplyDelete
  8. solution number 2 awsome!! thanks :)

    ReplyDelete
  9. Realllly awesome
    thnxxxxxxxxxxxxxxxxxx

    ReplyDelete
  10. hi..Im student from Informatics engineering, this article is very informative, thanks for sharing :)

    ReplyDelete
  11. Thanks Mate. Solution 2 ie Screen resolution> Monitor worked for a game "Bonk Heads" without a flaw. Whoever discovered this needs a great pat on the back!!!

    ReplyDelete
  12. Awesome blog if need any type of problem of windows 7 so go through this site and fix your problem of any type of your problem
    windows 7 problems
    Thank you
    Aalia lyon

    ReplyDelete
  13. The monitor tab thing works on Emergency Fighters for life game from 1998. Strange fix but it does the trick!

    ReplyDelete
  14. Nice blog its so informative for you go through this link and get free from windows 7 problem.
    windows 7 problems
    Thank you
    Aalia lyon

    ReplyDelete
  15. The option 2 - PERFECT

    ReplyDelete