Menu

ddrawex and Whiteout

gho
2016-05-30
2016-06-02
  • gho

    gho - 2016-05-30

    Browsing the net, it seems that ddrawex.dll is the most useless and unused component made by Microsoft.
    In effect, it seems a simple shortcut to some ddraw version 3 interface, quite rarely used and that need not ddrawex to be activated.
    Nevertheless, some game that uses that library exists (mind you: the library holds a couple of COM classes, so it may be referenced even without an explicit link or a dynamic LoadLibrary call: it is sufficient to call CoCreateInstance with one of the internal objects IID to have it loaded.
    Another sympthom of Micoroft repentance (?) is the disappearance of all documentation about that component, but a couple of man pages for the exposed methods in Japanese language only! Thank's Google it is more or less possible to understand. As a matter of fact, the best reference about ddrawex are the Wine attempts to emulate it.

    Another peculiar thing is how should DxWnd react to a reference to such a class: it seems that the best strategy is doing NOTHING with the component itself, but re-hook all ddraw stuff to recover some mess.

    Anyway, the only game that I encountered so far with ddrawex reference is "Whiteout", a nice snowmobile game that, by the way, is in coded in Direct3D8 and who knows why someone decided the inclusion of this ddrawex component. I can make DxWnd manage this game, but I feel uncomfortable because this is a single case, so I can't be sure I can generalize.

    So, the REQUEST FOR HELP: is anyone aware of other games that make reference to this component?
    keywords are ddrawex.dll, the API DllGetClassObject, the interfaces CLSID_DirectDrawFactory and IID_DirectDrawFactory and the COM methods CreateDirectDraw and DirectDrawEnumerate.
    I would expect some oriental game from Japan, China or close places, maybe. Links to demo versions and documentation would be appreciated.

    Thank's
    GHO

     
  • Anonymous

    Anonymous - 2016-05-31

    Yes, there are some great document about DirectDrawEx. Get it here:
    http://extras.springer.com/2000/978-1-893115-76-7/MSDN_VCB/SAMPLES/VC98/SDK/GRAPHICS/DIRECTANIMATION/help/ds/dssd0377.htm

    The document is from the book "C++ for VB Programmers" by Jonathan Morrison. You can download the book for FREE!
    http://extras.springer.com/2000/978-1-893115-76-7/MSDN_VCB

     
    • Anonymous

      Anonymous - 2016-05-31

      by the way, do you sure Whiteout use ddrawex library? I only found the string DllGetClassObject on the main executable file, and if I remove the file ddrawex.dll, the game still run. In addition the game show only blackscreen so we already come up with new work..

       
  • gho

    gho - 2016-05-31

    I'm absolutely sure Whiteout uses ddrawex. To better understand what the game is using, I wrapped the IID_DirectDrawFactory and the COM CreateDirectDraw method and I got logs that are the evident trace of the invocation.
    Please, consider that Whiteout worked almost fine with a previous version of DxWnd (I can't remember which one, but the "almost" was annoying: the endless movies were uninterruptable!) and now it is working again and better (with interruptable movies) in a DxWnd WIP version I'm working on, but I'm unsatisfied with the current implementation because....... I simply don't know why it is working again! After several attempts I got to the conclusion that ddrawex somehow impacts on the hooking made by DxWnd and to recover you have to re-hook the main segment again, but that's not that much of an explaination (it sounds like: quit and retry!).
    Also, the game uses just one of the two methods, so I don't know what would happen to a game that could use both. Since Whiteout seems an almost forgotten game, I decided to have no hurry to fix it and try to understand things a little better.
    Thank you for the documentation: it tells more that anything I got so far!

     
  • Anonymous

    Anonymous - 2016-05-31

    This game is developement by Driver-Inter, Ltd. I think you can send them a good message and hope for respond: http://www.d-inter.ru/games/whiteout/
    Email: contact@d-inter.ru

    They seem to make some sport racing games. There is a chance those will use the same engine as Whiteout.

    Nancy Drew: The White Wolf of Icicle Creek (2007)
    American Chopper 2: Full Throttle (2005)
    Spider-Man 2 (2005)
    Crash Nitro Kart (2003)
    Whiteout (2002)
    Kayak Extreme (2001) http://www.fileplanet.com/60243/download/Kayak-Extreme-Demo
    SuperChix 76 (2001) http://www.fileplanet.com/47812/download/SuperChix-76-Demo
    Jetboat Superchamps 2 (2001) http://www.fileplanet.com/63088/download/Jetboat-Superchamps-2
    Polaris SnoCross (2000) http://www.squakenet.com/download/snowcross/1942/
    Hot Chix 'n' Gear Stix (2000) http://download.cnet.com/Hot-Chix-n-Gear-Stix/3000-2117_4-10034302.html
    Jetboat Superchamps (1999)
    Speedboat Attack (1997)

     

    Last edit: Anonymous 2016-05-31
    • gho

      gho - 2016-05-31

      Wow! quite a lot to chose from. Let's hope in some luck.
      Thanks
      P.s. I saw your first spammed post, but it seemed superated from this one here above, so I spammed it again. If I haven't missed something, I'm going to delete it in a few days.

       
      • Anonymous

        Anonymous - 2016-05-31

        sometimes I make a post and it doesn't appear, cost me alot time to write again. So where actually it go for?

         
        • gho

          gho - 2016-05-31

          It goes to the "moderate" area where I can see it (but I have to see a small number in a corner of the forum page, so often I don't catch it immediately...) and "approve" or "delete" it.
          As a general rule of thumb, the more external links you put in there, the higher probability to be spammed like this. But the SF engine is not so straight-forward: I remember a time when whatever you posted, even a simple "Bye", was spammed. Maybe you got a bad reputation in your past life? Anyway, the proof of SF peculiarity is right here: after being spammed for a post with some links, you repeated the post with more than these, and this one didn't fail!
          My suggestion (frustration for a lost long post happened also to me...) is to post to notepad or at least to copy the text before pressing the post button: in the worst case you'll have the clipboard recovery!
          Useless to say, I can do nothing to prevent this to happen....

           
  • gho

    gho - 2016-05-31

    mmmm..... I tried most of these demos, but no one seems to link ddrawex. I've got to check better, but no luck, so far!

     
    • Anonymous

      Anonymous - 2016-05-31

      what about Polaris SnoCross, which is also a snowmobile racing game?
      http://www.squakenet.com/download/snowcross/1942/

       
      • gho

        gho - 2016-05-31

        It points to two dead links (at least to me, I forgot my registration password to HOTU and the password renewal service doesn't work, the other link is broken). But I should have the original CD somewhere....

         
  • gho

    gho - 2016-05-31

    Whoever may want to contribute to the hunt, here attached there is a customized version of last dxwnd.dll that intercepts the ddrawex classes and prompts a dialog box with the message in picture. Replacing the dll is surely the most convenient way to reliably find other programs that use ddrawex, provided that Whiteout is not the only one!

    P.s. I almost forgot to say that this version can play Whiteout without problems.

     

    Last edit: gho 2016-06-01
    • Anonymous

      Anonymous - 2016-06-01

      If i remove the movie files (vintro.mpg, vvlogo.mpg) then the game works fine, otherwise it crashes at the intro. I didn't see the dialog box with the message like you said too.

      Need to say the movie showed fine on fullscreen.

       

      Last edit: Anonymous 2016-06-01
      • gho

        gho - 2016-06-01

        This, I suppose, on XP. Unless I posted the wrong dll (but I tried to pay attention to that...) this is weird and interesting. Could you do me the favour of sending the logs? Please, don't check the logs / "Import table" and "Hook op." flags, because the log would become too verbose for no useful purpose. I also noticed that sometimes if you post twice the same file with a different content, the SF portal not always updates the upload. To avoid any possible confusion I rebuilt the dll within a new archive filename and inserted a new version string in the help->about panel.
        Please make the test after replacing the dll again. For the change you requested, I'll have to recompile the executable, so it will (dis) appear in next full release, but are you still sure of your request?

         

        Last edit: gho 2016-06-01
        • Anonymous

          Anonymous - 2016-06-01

          This patch is better, I can see the message tell that it hooking IID_DirectDrawFactory and the movie is showing, but it stuck in the top left corner of the screen until the movie end and switch back to desktop center (I choose that mode). The game works fine after that.

          I also test with D3DWindower and it did the job, though the movie screen is is stretched to 1024x768... Also enable the flag "Use Foreground Control" and "Fixed window position" prevent the game auto minimize when clicking outside the game window, while there is no flag of Dxwnd gonna do that!

          Log file attached.

           

          Last edit: Anonymous 2016-06-01
          • gho

            gho - 2016-06-01

            Ok, very good.
            Pay attention that some differences could be caused by a different configuration setting: I saw you flagged the DirectX8 interface, but that may interfere with the hooking of other lower interfaces (the suggested setting is "automatic") and also you seemed to have set the "Return refcount" that may inhibit a proper closure of ddraw handles. It is possible that using the suggested setting the movies could be correctly bound within the window, or maybe the game is not going to work at all, but in either cases it would be interesting to know.

             
            • Anonymous

              Anonymous - 2016-06-01

              I tried all three cases but the movie screen still stuck in top left screen. I guess those flag has no effect.
              + set version hook to Automatic
              + set Fix ddraw refcount
              + set both flag: Automatic and Fix ddraw refcount

              Off topic, if you look for the full translation of "Lunar: Sanposuru Gakuen", this patch cost team Aeon Genesis 12 years to make, not to mention they are one of the most well known team in translation community. The game is a Sega GameGear game, and the rom size is only 512KB!
              And for such a project like Dinosaur Resurrection, I doubt they would crying their eyes out in shocked horror. It may take.. hmm let's say 50 years to complete.

               

              Last edit: Anonymous 2016-06-01
              • gho

                gho - 2016-06-01

                1) movies: I wonder if this side effect may depend on XP or on usage of overlay capabilities. It may be worth one attempt with the Direct3D "Suppress overlay capability" or "Set minimal caps" set. P.s. these two flags have nothing to do with Direct3D, but the space in the DirectX tab was over.....

                2) 50 years to complete? That may explain something. Too bad that I almost completed the hacking part: the game is based on a resource catalogue that contains commands and strings and I partially decoded the syntax, so the translation can be automated and there's hopefully very little to hack yet, but all the japanese text (quite a lot!). So it's not me that should spend the 50 years, and very likely noone would do. Probabluy it would take less time to learn japanese language directly.... after all, these games can't be for graduated people only, a japanese boy should be able to understand most of it, isn't it?

                 
                • Anonymous

                  Anonymous - 2016-06-01

                  Just test and I see those flag has nothing to do with the movie screen problem. There's a chance the problem relate to my graphics driver, so I really need your test on your XP machine to confirm this a global probs or only happen on my side.

                   
                  • gho

                    gho - 2016-06-01

                    My deepest apologies: when I got home I tried the new release (v2.03.71, just uploaded) that doesn't differ much from what you have, and I got the suprise to see the shifted movies and other problems too.
                    Checking the differences with the sources gave no result, so I checked the configurations, and I admit I put you on a false track: Whiteout works fine if the DirectDraw version is set to 7, neither default nor 8 are ok.
                    The new release should have a fixed exported file for Whiteout. If you want to continue the hunt for ddrawex games (but I don't suggest you to do that: it could be vain) the dialog box is not available by default, but can be requested by setting the Debug / "Assert Dialog" flag. I take you already know how to set debug mode...

                     
                    • Anonymous

                      Anonymous - 2016-06-02

                      Interesting, the movie now scaling correctly when set version hook to DirectX7 and works fine after that. But if I remove the movie files, then the game bypass Dxwnd and run on fullscreen mode, to cure this just set version hook to DirectX8..

                      Any chance to prevent the window auto minimize when clicking outside the window game?

                       
                      • gho

                        gho - 2016-06-02

                        It seems that "Do not notify on task switch" + Input / "Add message pu,p" does the trick.
                        But the game is rendered always on top: likely it makes use of screen overlays.

                         
                        • Anonymous

                          Anonymous - 2016-06-02

                          oh my, how can i forget those flag. thank you.

                           
  • gho

    gho - 2016-05-31

    I got a couple of links that talk about DirectDrawEx (a better search keyword than ddrawex!) telling that this interface can help building a simple movie player, as used by Whiteout that uses D3D8 for the game engine instead.

    http://www.codeproject.com/Articles/284/Multimedia-Streaming-Synchronization-Mechanisms-Un

    http://www.gamedev.net/topic/19521-movies-in-games/

    Despite these few references, I start to doubt there is another game in the universe that is using this weird thing.

     

    Last edit: gho 2016-06-01

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.