RA2/YR Black Screen Fix

Thumbnail

Rating: 0
Favourites: 0

Report File

RA2/YR Black Screen Fix


File Information



Files



More From This User



<center>Home of Aqrit's ddwrapper
ddwrapper.zip ( src included )
</center>updated: December 24, 2012
ddwrapper works by providing a proxy DLL, which the application connects to and treats like the real DDRAW.DLL. It intercepts ddraw calls and performs various actions before forwarding to the real DirectDraw interface.

*** Usage ***
Extract the included ddraw.dll and aqrit.cfg files to the same directory as your target executable.
Edit the config file as wanted. ( see below for possible options )

Warning: Do NOT overwrite your system ddraw.dll!
Warning: Windows likes to "virtualize" the config file if it resides within the "Program Files" directory.

You may also like
DxWnd or Microsoft Application Compatibility Toolkit (ACT)
<dl><dt>BltMirror</dt><dd>0 = off</dd><dd>1 = on</dd><dd>2 = auto select</dd></dl> DDBLTFX_MIRRORLEFTRIGHT and DDBLTFX_MIRRORUPDOWN flags are unsupported on Windows 2000 and later and are never passed to the driver. [Microsoft]

Use GDI32.StretchBlt() to mirror onto an intermediate surface which is then passed to Blt(). Not Need if using DirectDraw's Hardware Emulation Layer.

<dl><dt>BltNoTearing</dt><dd>0 = off</dd><dd>1 = on</dd></dl> DDBLTFX_NOTEARING flag is unsupported on Windows 2000 and later and is never passed to the driver. [Microsoft]

If DDBLTFX_NOTEARING then WaitForVerticalBlank() before the Blt(). (also see FakeVsync)

<dl><dt>ColorFix</dt><dd>0 = off</dd><dd>1 = on</dd></dl> 8-bit color palette entires are not shared properly on Windows Vista and later, which results in psychedelic colors.

Sets an undocumented hack by modifing an internal DirectDraw structure. ((DDRAWI_DIRECTDRAW_INT*)->lpLcl->dwAppHackFlags|=0x800)
It does NOT work for all games. Enabling this option may cause an error if ddraw's internal structures have changed. (like Wine)
<dl><dt>An alternative if this setting isn't helping:</dt><dd>Open TaskMgr.exe and end the explorer.exe process</dd><dd>Launch your executable from the task manager's run menu</dd><dd>After exiting the game you may restart explorer.exe from the task manager's run menu</dd></dl>
<dl><dt>DisableHighDpiScaling</dt><dd>0 = off</dd><dd>1 = on</dd></dl> Applications that do not handle the [new] high DPI case are likely to exhibit visual artifacts. [Microsoft]

SetProcessDPIAware() to prevent scaling.

<dl><dt>FakeVsync</dt><dd>0 = off</dd><dd>1 = on</dd><dd>2 = auto select</dd></dl> DirectDraw's Hardware Emulation Layer does not emulate vsync.

Sleep() awhile everytime the application asks for vsync to prevent the game from running too fast.

<dl><dt>FakeVsyncInterval</dt><dd>0 = default</dd><dd>[n] = ms</dd></dl> Milliseconds between vertical blanking intervals for FakeVsync.

FakeVsyncInterval = 18 would equate roughly to 55 fps. ( 1000 / 18 = 55 )

Milliseconds Frames-Per-Second
14 71
15 66
16 ( default ) 62
17 58
18 55
<dl><dt>ForceBltNoTearing</dt><dd>0 = off</dd><dd>1 = on</dd></dl> Attempt to impose vsync on an application. (to slow it down)

Add a DDBLTFX_NOTEARING flag to all of the primary surface's Blt operations. (also see FakeVsync, BltNoTearing)

<dl><dt>ForceDirectDrawEmulation</dt><dd>0 = off</dd><dd>1 = on</dd><dd>2 = on + error lie</dd></dl> Use DirectDraw's Hardware Emulation Layer for all features.

DDCREATE_EMULATIONONLY

  • Pitch vs Width Issues [Microsoft]
  • Circumvent driver specific issues
  • Doesn't allow surfaces in video memory

Setting "2" - CreateSurface() calls that fail with DDERR_NODIRECTDRAWHW will report DDERR_OUTOFVIDEOMEMORY instead.
<dl><dt>NoVideoMemory</dt><dd>0 = off</dd><dd>1 = on, threaded</dd><dd>2 = on, WM_TIMER</dd></dl> Try to create all the application's drawing surfaces in system memory ( Not video memory ). Fake the game's primary surface in system memory, Blt() to the real primary periodically.

<dl><dt>Solves the following issues:</dt><dd>Directly accessing a video memory surface after it has been Unlocked() may causes problems.</dd><dd>Lock() and Unlock() on a video memory surface may be slow.</dd><dd>The HEL doesn't Flip() the primary surface correctly. [Microsoft]</dd><dd>The HEL fails to Lock() the primary surface.</dd></dl>( Also see ForceDirectDrawEmulation )

<dl><dt>ShowFPS</dt><dd>0 = off</dd><dd>1 = Flip</dd><dd>2 = Blt</dd><dd>4 = BltFast</dd><dd>8 = Unlock</dd></dl> Display the roughly estimated rate of frames-per-second ( FPS ) in the top-left corner of the game window. Games can use several methods to display frames. Flip() is the only method that could not be called several times per frame. To track multiple methods add their identifiers together.

To track all methods set ShowFPS = 15 ( 1 + 2 + 4 + 8 = 15 )
<dl><dt>SingleProcAffinity</dt><dd>0 = off</dd><dd>1 = on</dd></dl> Force all threads in a process to run on a single processor/core.

SetProcessAffinityMask()/SetThreadAffinityMask() may fix timing issues, but may impede performance. Useful to have applied to games of the DirectDraw era, though there may be no threading issues with DiretDraw itself. It is best to not use NoVideoMemory=1 with this option.


<center style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium;">Windows and DirectDraw are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Bitpatch.com is not affiliated with anyone.</center>

Report File

Reason












Report Comment

Reason






Report Link

Reason





DMCA.com Protection Status

https://apg-clan.org tested by Norton Internet Security https://apg-clan.org tested by McAfee Internet Security

Flag Counter