The Tale of the Tiny Showstopper
So a friend of mine gave me a copy of American Girls Dress Designer for the PC, and while it seems fine and dandy for the most part, it has this one major flaw, something which accounts for why it fails to run properly on Windows systems post-98/ME:
As you can see, using anything that invokes a pop-up window, such as Print, Quit or Select Dress, leads to this error. At first I thought it had something to do with DirectDraw as what some of the lads over at Vogons suggested, but none of the hacks at hand were of any use. Neither does Wine despite my expectations with it being able to run older games with ease. :/
So what I did next was I fired up OllyDbg and got an INVALID_WINDOW_HANDLE error upon reproducing the bug. To further clarify things I used this API debugger and ended up with this:
As you can see, the debugger says the application is calling an invalid menu handle - the CreateWindowEx API call allows programmers to define a menu to a window. But since there aren't any drop-down or pop-up menus to begin with, what's the point of defining a (nonexistent) handle? That's like trying to order a hamburger at a Japanese restaurant! Here's a call I got from the game, the parameters of which I got after debugging it with OllyDbg:
CreateWindowExA(WS_EX_CLIENTEDGE, "AfxFrameOrView42s", "SelDrsLd", WS_CLIPCHILDREN, 463, 233, 514, 433, 0x000000000022095C, 0x1, 0x0000000000400000, NULL)
Changing 0x1 to 0 or NULL works based on my experiments, which can be found here. Special thanks to K^2 for helping me test my theory. :D
So what does this mean to an average user? It means that those who bought the game and gave one-star reviews on Amazon might reconsider and try that game again without having to pull out their old 90s era PC or a Windows 98 virtual machine.
Comments