How I fixed corrupt color palette on some old games on Windows 7

Page 1 of 3 123 LastLast

  1. Posts : 12
    Windows 7 Ultimate X86
       #1

    How I fixed corrupt color palette on some old games on Windows 7


    Remember: Backup your registory prior to making any changes to it - Safety First

    Step 1: Download / install and run Procmon.exe

    Step 2: Run game with all default compatability settings ( eg: none except maybe "run as admin"

    Step 3: Alt Tab out of game to Procmon window

    Step 4: setup a filter on Procmon -> Path : to "DirectDraw\MostRecentApplication" set as include

    Step 5: all going well it should show some entries relating to your game

    Step 6: Look at the ID (it'll show up as a DWORD.) you'll need to convert this to a hex value

    Step 7: open up regedit.exe and go to section "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\"

    Step 8: Make a new Key in there naming it to something that resembles the game your running

    Step 9: make a new Binary value and name it "Flags"

    Step 10: double click on that newly created field and type in the Hex values " 00 08 00 00"(it will add in the spaces for you) then press enter

    EDITED Step 11: make a new DWORD value and name it "ID"

    EDITED Step 12: double click on that newly created field and type in the values you've converted DWORD value as DECIMAL then press enter

    Step 13: make a new string value entry named "Name"

    Step 14: double click on that newly created field and type in the text from Procmon as displayed for the Name of the program

    Step 15: export the entries that you've just made as a backup for future use (eg: on a rebuild of your computer or something)

    Below are samples of games that had corrupted palletes that are now showing correct on my computer, eg:Age Of Empires, Age Of Empires Expansion, Age of Empires 2, Age of empires 2:Conquerers, StarCraft.


    EDITED CODE BELOW TO ADD SOME MORE ENTRIES AS I'VE FOUND THAT THE AUTOMATED METHOD STILL DIDN'T WORK AFTER HAVING TO REBUILD MY SYSTEM. i'VE REVERTED BACK TO MY OLD MANUAL METHOD

    Code:
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\AGE2_X1.ICD]
    "Name"="AGE2_X1.ICD"
    "Flags"=hex:00,08,00,00
    "ID"=dword:3b7433ec
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\EMPIRES2.ICD]
    "Flags"=hex:00,08,00,00
    "ID"=hex:df,d1,81,39
    "Name"="EMPIRES2.ICD"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\aoe2_x1]
    "Flags"=hex:00,08,00,00
    "ID"=hex:ec,33,74,3b
    "Name"="age2_x1.exe"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\StarCraft116]
    "Flags"=hex:00,08,00,00
    "ID"=hex:ca,89,65,49
    "Name"="Starcraft.exe"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\EMPIRES.EXE]
    "Name"="EMPIRES.EXE"
    "Flags"=hex:00,08,00,00
    "ID"=dword:353f8679
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\EMPIRESX.EXE]
    "Name"="EMPIRESX.EXE"
    "Flags"=hex:00,08,00,00
    "ID"=dword:35ec85c2
    AFTER ORIGINALLY POSTING THE MESSAGE I'VE FOUND OUT THAT IT WORKS EVEN IF YOU ENTER THE ENTRY IN STEP 12 AS A DECIMAL dword AS OPPOSED TO A HEX VALUE .. THUS MAKING IT EASIER TO FOLLOW AND DO (NOTE i HAVN'T CHANGED THE OLD HEX VALIES IN THE CODE AS THEY TOO WORK ..

    enjoy
    Last edited by Blue Steel; 15 Nov 2010 at 05:54. Reason: edited steps 11 and 12 & added MORE .REG ENTRIES
      My Computer


  2. Posts : 1,299
    Windows 7 Home Premium (64-bit) *** Windows XP SP3 (32-bit), OSX 10.6
       #2

    Awesome fix, thanks for contributing Blue Steel!

    Walker
    Windows Outreach Team
      My Computer


  3. Posts : 25
    Windows 7 Ultimate x64
       #3

    Automated solution:

    http://mudlord.hcs64.com/code/w7ddpatcher.zip

    1) Run the patcher on the game you want to fix.
    2) Enjoy.

    Note: Source included for people who want to see how it works. Works on both x86 and x64 OSes.
    Last edited by mudlord; 28 Jul 2010 at 22:51.
      My Computer


  4. Posts : 12
    Windows 7 Ultimate X86
    Thread Starter
       #4

    Wow that was quick thanks mudlord

    I know you said its for x64 only but i'd appreciate it if you could change it see what OS (ie: x86 or 64bit) is being used and then have it apply according to the OS your running this great patcher.

    I know a little C Code and can see what its doing but i don't know enough to add in a feature like this..

    OR

    If you could just have 2 buttons patch x86 and patch 64Bit.

    either way would work.. i know that the first way IS possible just don't know how to do it. and I'd prefer it done that way if possible
      My Computer


  5. Posts : 25
    Windows 7 Ultimate x64
       #5

    Try now, it should distinguish between x64 and x86 Windows 7/Vista OSes and patch accordingly.
      My Computer


  6. Posts : 12
    Windows 7 Ultimate X86
    Thread Starter
       #6

    sorry your patch program is coming up with incorrect info..

    i just ran it on starcraft.exe ( starcraft 1 no expansion installed)

    here is your generated code
    Code:
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\StarCraftDemo]
    "Name"="Starcraft.EXE"
    "ID"=hex:6b,56,91,35
    "Flags"=hex:00,08,00,00
    here is the correct code
    Code:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\StarCraft116]
    "Flags"=hex:00,08,00,00
    "ID"=hex:ca,89,65,49
    "Name"="Starcraft.exe"
    as you can see your patcher is getting the wrong flags for this game

    BTW thank you for trying to get this working
    it'll certianly make things easier than all the steps i'be posted

    edit: added

    I just ran it again on the same executable and got a totaly different result yet again
    Code:
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\SWarClass]
    "Name"="StarCraft.exe"
    "ID"=hex:71,a2,eb,4a
    "Flags"=hex:00,08,00,00
    Last edited by Blue Steel; 29 Jul 2010 at 17:09. Reason: added more info
      My Computer


  7. Posts : 25
    Windows 7 Ultimate x64
       #7

    Its fine, delete the old entries, and leave SWarClass.

    As you see in the source, I use the window class ID to generate the registry entry name. The key is actually not worrying about precise subkey names. I just used the window class ID as thats a easy identifier. I could make it the process ID, if people want though for consistancy.
      My Computer


  8. Posts : 12
    Windows 7 Ultimate X86
    Thread Starter
       #8

    I'd prefer seeing it and having it generate the same values for the same game every time.. to me its very disconcerting and seems dirty having the patcher come up with different entries for the same game. getting it to use consistant keys and names etc.. would also make it easier to check for and get rid of duplicates. (you could even get your patcher to check then too .. then have it prompt wither to replace / update / delete (delete is for in case the patcher doesn't fix the problem) etc...

    PS: sorry to be so picky
      My Computer


  9. Posts : 25
    Windows 7 Ultimate x64
       #9

    You certainly don't ask for much, do you?

    It can't get the keys already there, thats not happening. Application class IDs don't change when updates are made, so its best to just reapply on updates.
      My Computer


  10. Posts : 173
    Windows 7 Ultimate x64
       #10

    Nice work guys!
    Great stuff!
      My Computer


 
Page 1 of 3 123 LastLast

  Related Discussions
Our Sites
Site Links
About Us
Windows 7 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 7" and related materials are trademarks of Microsoft Corp.

Designer Media Ltd
All times are GMT -5. The time now is 10:43.
Find Us