http://bugs.winehq.org/show_bug.cgi?id=9030
--- Comment #30 from Boran Car boran.car@gmail.com 2010-07-12 07:50:03 --- (In reply to comment #28)
Created an attachment (id=29544)
--> (http://bugs.winehq.org/attachment.cgi?id=29544) [details]
Armymen menu - with faked palette
I had created a simple faked palette just in CreatePalette, so I recieved some usable pictures. I had stepped through army men initialization process and i had discovered that this program gives a pretty odd palette to CreatePalette call - 256-times R:0 G:0 B:0. Maybe Armymen relies on a default palette, maybe not. Once more interesting article i found is that army men does all the rendering through GetDC and ReleaseDC, so the palette is not probably needed. Then the problem is in X11DRV_DIB_MapColor, because the search for acceptable color fails and the function returns zero index - allways black color. This is probably more general problem with translating colors between palette and DC.
Yes, you are completely right. I had abandoned this for a while, promising to return to it later. I remember using hw breakpoints to see if anything gets copied to the surface memory, and indeed, zeros were copied all the time so I dismissed it as no copying. This might prove the fact that all rendering is done through GetDC and ReleaseDC which in fact call Lock and Unlock and do the translation themselves, hence, we get 24-bit RGB (0,0,0) = 0. Maybe this palette gets input as a result of another function call and game logic. I was planning to make a proxy ddraw.dll on windows and trace the calls to ddraw to get more insight. Can you please provide me with that article? It's possible to obtain the correct default palette from windows and use it in wine. One more thing that might prove this is an odd result while playing Air Tactics on Windows XP. Sometimes, the screen turns into a color noise (probably as a result of a palette change). If we can fix this on Wine, we might provide a ddraw.dll that will make the game (and similar games to it) runnable once more on Windows.