We're inside the load game screen, game spams ddrraw.dll with
FlipToGDISurface calls..
[ +0ms] (03110e58) myIDDraw1::FlipToGDISurface
[ +0ms] (03110e58) myIDDraw1::FlipToGDISurface
[ +0ms] (03110e58) myIDDraw1::FlipToGDISurface
at this point I click "restart game", which starts with a video:
[ +780ms] (03110e58) myIDDraw1::SetCooperativeLevel(000f1fbe, 8) return 0
[ +0ms] (03110e8c) myIDDrawSurface1::Release
[ +0ms] (03110e8c) Object Release.
[ +0ms] (03110e8c) myIDDrawSurface1 Destructor
The old directdraw has been shut down completely at this point. The
following either comes from the game's video handling routines or
from the mci->directmedia hack; no idea which.
In any case the following is FAR more advanced than anything that
wc4w does.
[ +718ms] (00000000) Exported function DirectDrawEnumerateExA
[ +0ms] (00000000) DirectDrawCreateEx(00000000,05C7E8F0,(guid),00000000)
[ +15ms] (03110f1c) myIDDraw7 Constructor
[ +0ms] (00000000) IDDRAW7 creation result: 0 ptr 05c7e8f0
[ +0ms] (03110f1c) myIDDraw7::GetCaps
[ +0ms] (03110f1c) myIDDraw7::GetDisplayMode
[ +0ms] (03110f1c) myIDDraw7::QueryInterface(?,05c7e8ec)
[ +47ms] (00000000) Exported function AcquireDDThreadLock
[ +0ms] (00000000) Exported function ReleaseDDThreadLock
[ +0ms] (00000000) Exported function AcquireDDThreadLock
[ +0ms] (00000000) Exported function AcquireDDThreadLock
[ +0ms] (00000000) Exported function ReleaseDDThreadLock
[ +0ms] (00000000) Exported function ReleaseDDThreadLock
There's lots more threads going on than with wc4w.
[ +0ms] (03110f1c) myIDDraw7::Compact
[ +0ms] (03110f1c) myIDDraw7::Release
[ +0ms] (03110f1c) Object Release.
[ +0ms] (03110f1c) myIDDraw7::Release
[ +0ms] (00000000) Exported function AcquireDDThreadLock
[ +0ms] (00000000) Exported function ReleaseDDThreadLock
[ +0ms] (03110f1c) Object Release.
[ +0ms] (03110f1c) myIDDraw7 Destructor
Directdraw7 gets shut down again, no idea why. Possibly something
failed and a fallback is tried.
[ +16ms] (00000000) Exported function DirectDrawEnumerateExW
[ +0ms] (00000000) Exported function DirectDrawEnumerateExA
Why call both wide and ansi versions of same function?
[ +0ms] (00000000) DirectDrawCreateEx(00000000,00736F58,(guid),00000000)
[ +0ms] (03110f1c) myIDDraw7 Constructor
[ +0ms] (00000000) IDDRAW7 creation result: 0 ptr 00736f58
[ +0ms] (03110f1c) myIDDraw7::SetCooperativeLevel(00000000, 4104) return 0
[ +0ms] (03110f1c) myIDDraw7::CreateSurface([124,0x1,0,0,0,0,512], 00000000, 00000000) return 0
[ +0ms] (03110f1c) myIDDraw7::GetCaps
[ +0ms] (03110f1c) myIDDraw7::CreateClipper
wc4w (or older games) never bothered with clippers.
Not that it matters. Here dd7 is created again, even though it
was just created and not cleaned up. Strange:
[ +0ms] (00000000) DirectDrawCreateEx(00736F6C,007377A0,(guid),00000000)
[ +0ms] (03110f50) myIDDraw7 Constructor
[ +0ms] (00000000) IDDRAW7 creation result: 0 ptr 007377a0
[ +0ms] (03110f50) myIDDraw7::SetCooperativeLevel(00000000, 4104) return 0
[ +0ms] (03110f50) myIDDraw7::CreateSurface([124,0x1,0,0,0,0,512], 00000000, 00000000) return 0
[ +0ms] (03110f50) myIDDraw7::GetCaps
[ +0ms] (03110f50) myIDDraw7::CreateClipper
And again:
[ +0ms] (00000000) DirectDrawCreateEx(007377B4,00737FE8,(guid),00000000)
[ +15ms] (03110f84) myIDDraw7 Constructor
[ +0ms] (00000000) IDDRAW7 creation result: 0 ptr 00737fe8
[ +0ms] (03110f84) myIDDraw7::SetCooperativeLevel(00000000, 4104) return 0
[ +16ms] (03110f84) myIDDraw7::CreateSurface([124,0x1,0,0,0,0,512], 00000000, 00000000) return 0
[ +0ms] (03110f84) myIDDraw7::GetCaps
[ +0ms] (03110f84) myIDDraw7::CreateClipper
[ +0ms] (03110f1c) myIDDraw7::GetCaps
[ +0ms] (03110f1c) myIDDraw7::GetDisplayMode
[ +0ms] (03110f1c) myIDDraw7::GetCaps
[ +0ms] (03110f1c) myIDDraw7::QueryInterface(?,05c7ee30)
[ +0ms] (00000000) Exported function AcquireDDThreadLock
[ +0ms] (00000000) Exported function ReleaseDDThreadLock
[ +0ms] (00000000) Exported function AcquireDDThreadLock
[ +0ms] (00000000) Exported function AcquireDDThreadLock
[ +0ms] (00000000) Exported function ReleaseDDThreadLock
[ +0ms] (00000000) Exported function ReleaseDDThreadLock
[ +0ms] (03110f1c) myIDDraw7::Compact
[ +0ms] (03110f1c) myIDDraw7::Release
[ +0ms] (03110f1c) Object Release.
At this point the application crashes.