Professional Documents
Culture Documents
00/01
major code rewriting - introduced dxwCore class
preliminary FPS handling: Limit, Skip & Count with configurable delay
Hide Multi Monitor configuration flag - used for "Dream Acquarium" on multimonit
or PC.
v2.2.02
preliminary time stretching: so far applies to GetTickCount() only, and is contr
olled by Alt-F5 / F6 keys.
Fixed bug in GDI BitBlt call: stretching must be made on screen DC only, or it's
made twice.
v2.02.03/04:
code cleanup - see syslib calls hooking
new configuration flags: Hook GDI and Hook OpenGL
OpenGL custom library field
API hooking fix with module specification
Time stretching by keyboard control (Alt F5/F6) and/or Time Slider dialog
v2.02.05:
hooked winmm timeGetTime() API: makes time stretching work for Age of Empires se
ries
changed time stretching grain: now it's not the coarse grained 2x, 4x,... series
in 9 possible values but the fine grained series 1.5x, 2x, 3x,.... in 17 possib
le values
added status and time stretching view panels to tray icon menu
v2.02.06:
preliminary FPS counter overlapped on game screen, Alt-F7 to toggle display on/o
ff.
fixed buf on time stretch logging (and possible game crash).
revised GetDC handling with 8BPP paletized surfaces: avoided need to emulate rev
erse-blitting and got an impressive speed improvement for games such as Age of E
mpires I & II and Hyperblade.
v2.02.07:
many fixes on the FPS and time control features.
v2.02.08:
fixed some errors in the main directdraw palette descriptor. That gives better c
ompatibility and less complicated source code.
added Fake Version feature: now Dungeon Keeper II (original version, not GOG hac
k) can detect a fake Win2000 / WinXP environment on Win7 and newer. Tested and w
orking on Win7. Many thanks to Maxim for pushing me hard to win my lazyness and
implement this new feature.
v2.02.09:
Fixed some x,y window coordinates bugs
Fixed some proxy log messages (missing \n line terminator)
Fixed Trace "DirectX" flag.
improved GetDC handling in 8BPP palette mode: AddPalette called on demand, and o
n any surface (including backbuffers): makes Emergency work with no "Handle DC"
flag set. Beware: this may affect the "Map GDI HDC on Primary DC" flag causing s
urface locks.
Fixed limit FPS timing issues: now the max possible FPS is 1000/delay.
Fixed EndPaint bug causing HDC lock in "Map GDI HDC to Primary DC" mode.
v2.02.10:
Added "Full RECT Blit" mode: may be useful to handle problematic situations (e.g
. "Urban Assault" intro movies)
OpenGL hooking: added hook for wglMakeCurrent call to keep track of rendered win
dow
OpenGL hooking: fixed glViewport and extglScissor hook coordinates handling
D3D hooking: Added Wireframe option for D3D games
Added hooking of CLSID_DxDiagProvider through CoCreateInstance
Fixed (further simplified) clipping handling of primary/backbuffer surfaces
ChangeDisplaySettings hook: fixed x,y coordinate inversion in log message
v2.02.19
Saves GUI coordinates
Fixed "Remap client rect" option for Diablo's windows and Premier Manager 98 mou
se movements
Added "Highlight blit to primary" option to draw a yellow bounding box around bl
its to primary surface
Fixed some exception conditions when closing the programs
Fixed CreateSurface handling to allow Premier Manager 98 start in emulated mode
Fixed ONEPIXELFIX handling
Fixed BIG WIN handling for Diablo's windows
Fixed FillRect hook to prevent filling outside virtual desktop
Disabled hooking of system libraries
Fixed a nasty bug that caused your desktop to freeze until shutdown !!!
Fixed GetWindowRect handling for windows not created by the task: Diablo queries
the explorer window size! Now the retrieved RECT can't be larger than the virtu
al desktop
v2.02.20
Fixed an error in D3D10/11 preliminary code: AoE III working again
Added "Hook all DLLs" option to simplify congiguration: see new Diablo setup
Added screen coordinates to log
Some code rearrangement
v2.02.21
it's a w.i.p. release, wait 'till finished....
v2.02.22
Major code rearrangement in API hooking. Expect some troubles...
Added desktop workarea and centered coordinate settings
Fixed imelib hooking
Added HOOKENABLED flag
Fixed ChangeDisplaySettings
GUI: added ListView icons
GUI: added pause command
GUI: updated commands layout
v2.02.23/24
Fixed "disable setting gamma ramp" flag to intercept both GDI and D3D calls
Fixed client workarea setting to occupy the whole client area even when preservi
ng aspect ratio (it draws black rectangles to the left/right or top/bottom side)
Added DisableThreadLibraryCalls optimization
Added B&W screen simulation (for primary emulation only)
Improved the primary emulation capacity to handle 3D games
Added the "preserve surface capabilities" flag
Fixed an hooking bug for user32.dll
v2.02.25
CORE:
Added 'Single CPU Process Affinity' flag to let old games run on a single CPU co
re.
Fixed bug causing possible crash using 'preserve surface caps' flag
Switched lpDDSBack reference when backbuffer is upgraded through QueryInterface
Eliminated lpDDSBack clearing when refcount is zero - why is this working better
? Needs further investigation
Added DDSCAPS_3DDEVICE capability when in EMULATED mode
GUI:
Added Kill process by name functionality (right click menu on program's list)
Fixed GUI initial position: now checks for desktop size to fit GUI within visibl
e borders
Added single cpu process affinity checkbox in compatibility tab
v2.02.26
CORE:
Fixed Black&White mode for 16BPP color depth
Revised hooking code, now more compact and clear....
Fixed DxWnd splash screen, for those who love it
Increased child win table - now 688 hunter killer works perfectly
GUI:
Added /debug flag to enable debugging options
Revised hooking code, now more compact and clear....
Restored Hook child win option
v2.02.27
CORE:
fixed GetDC/ReleaseDC ddraw implementation to refresh GDI operation on primary s
urface. Warlords 3 text is now visible.
preliminary implementation of MapWindowPoints - to be tested
GUI:
Fixed log flags wrong initialization
v2.02.28
CORE:
eliminated experimental ICSendMessage and ICOpen hooks, preventing some games (A
lien Nations) to work
added mciSendCommand hook to fix video playback
fixed MoveWindow bug - still, it's unknown the reason why some programs (Emergen
cy) tries to MoveWindow upon the hWnd=0 desktop!
fixed MapWindowPoints hook (Alien Nations)
fixed desktop detections in some places, now correctly using dxw.IsDesktop() met
hod
Now "Alien Nations" and "Emergency" working (almost) perfectly.
fixed d3d8/9 hook to Get/SetGammaRamp. This should make a great number of recent
games playable again.
v2.02.29
CORE:
hooked DirectDrawSurface::Lock method to center primary surface memory updates c
entered into the window (in no emulated mode)
v2.02.30
CORE:
Some ddraw::GetDC log message fixes
added preliminary registry emulation - tested ok with "duckman"
added separate flag for preliminary registry operation trace
added CDROM drive type emulation - tested ok with "Fighting Forces" RIP
fixed FixCursorPos routine: cursor x,y compensation must always use pseudo-fulls
creen window parameters - fixes Imperialism II mouse problems
fixed Desktop Workarea position mode for ddraw games
added CoCreateInstanceEx hook - "Final Fighter" seems to be using it, but who kn
ows why...?
added "Don't move D3D Rendering Window" window option to make "Fable Lost Chapte
rs" working
GUI:
updated default values on new entry creation to map most-likely-to-work paramete
rs
v2.02.31
CORE:
disabled annoying compilation security warnings
improved advapi32.dll hooking and logging
handling of complex primary surfaces with backbuffer surface inherited from one
directdraw session to the following and with different interfaces
fixed SetCooperativeLevel handling in case of WINDOWED mode against desktop hwnd
==NULL
fixed GetGDISurface in EMULATED mode
hooked gdi32 API set for Imperialism I & II and 688 Hunter Killer:GetClipBox, Po
lyline, PolyBezierTo, PolylineTo, PolyDraw, MoveToEx, ArcTo, LineTo, StretchDIBi
ts, SetDIBitsToDevice, SetPixel, Ellipse, Polygon, Arc, CreateEllipticRgn, Creat
eEllipticRgnIndirect, CreateRectRgn, CreateRectRgnIndirect, CreatePolygonRgn, Dr
awTextA, DrawTextExA.
fixed gdi32.dll hooking for TextOutA, TabbedTextOutA, Rectangle, BitBlt, PatBlt,
StretchBlt, CreateFont, CreateFontIndirect
improved ddraw proxy logging
added / fixed user32.dll API FrameRect, TabbedTextOutA, CloseWindow, DestroyWind
ow, SendMessageW
opengl: fixed glCreateContext, wglMakeCurrent to make Descent III playable in op
engl video mode.
fixed DeferWindowPos hook to make Imperialism II working
fixed SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN properties
fixed window class logging causing program crash
GUI:
added "GDI/Scale font parameters" & "DirectX/Disable HAL support" options
v2.02.32
CORE:
added new GDI handling mode, "Emulated devce context". Currently tested successf
ully on "G-Nome" only.
fixed "Prevent maximize" windows handling avoiding to disable topmost style for
child windows
fixed handling of DDSCAPS_3DDEVICE surfaces in emulated mode: "Nightmare Ned" is
working ok, "The Sims" works better (still crashing..)
fixed banner handling in case of device context remmapped coordinates
fixed memory leakage in SetDIBitsToDevice hooker
GUI
added radiobutton group to set the preferred GDI emulation mode
v2.02.33
CORE:
experimental attempt to emulate the ZBUFFER attach to the BACKBUFFER surface
improved log to detail all ddraw object properties
experimental emulation of RGB to YUV conversion to investigate "duckman" problem
s on Win7
improved grayscale algorythm
fixed missing DDPF_ALPHAPIXELS property causing several blit incompabilities
fixed surface handling for "Submarine Titans"
fixed mousewheel handling
fixed hooking bug causing several problems (i.e. Age of Empires III)
Added FULLSCREENONLY option: fixes "Submarine Titans" intro movies
Added "Bypass font unsupported api" compatibility flag: makes "Stratego" working
fixed several d3d8/9 hooking problems
GUI
added controls for new core features
ames such as "Heart of Iron 2" that start intro movie by means of a separate pro
cess. HoI2 is starting the binkplay.exe program in the game's avi subfolder. Thi
s way you don't get a windowed movie, but completely suppress it.
v2.02.42
added hook to kernel32.dll QueryPerformanceCounter API to enable time stretching
to Rayman 2
handled GetAttachedSurface emulation for FLIP capability on primary surface - th
at makes the intro movies of Empire Earth visible.
Some code cleaning
Cleared invisible debug flags ...
v2.02.43
Several changes for Empire Earth:
fix: restore 16BPP color mode after directdraw session termination
fix: recovered window destruction
fix: proper handling of MIPMAP and LOCALVIDMEM surfaces
fix: color depth handling - now when the program terminates the desktop is broug
ht to the original color depth
v2.02.44
Improved debug logging for all palette operations
fixed a bugged log causing the crash of Empire Earth in debug mode
added show time stretching flag - preliminary version. Some code cleaning as wel
l.
change in automatic screen refresh - should make the "palette update don't blit"
flag obsolete.....
added a static definition for the default system palette
added interception for CoCreateInstance following cases:
case 0xe436ebb3: Module="quartz"; Class="CLSID_FilterGraph";
case 0x4fd2a832: Module="ddrawex"; Class="CLSID_DirectDrawEx";
case 0x49c47ce5: Module="amstream"; Class="CLSID_AMMultiMediaStream";
preliminary (proxed) interception for "GetActiveWindow" and "GetForegroundWindow
"
v2.02.45
A small fix for ddraw 7 games that makes Praetorians playable, though with some
problems!
v2.02.46
Fixed handling of user32 CreateDialogIndirectParam call to avoid processing in n
on fullscreen mode - fix necessary to start "Crimson Skies".
v2.02.47
GUI:
Configuration tabs reorganization: now some tabs have merged making it easier to
reach all options
core:
improved d3d wrapping and sdded ZBUFFER cleanup flags to fix some d3d games. In
particular:
Clean ZBUFFER @1.0 fix: to fix "Star Wars Episode I Racer"
Clean ZBUFFER @0.0 fix: to fix "Crimson Skies" black blocks bug on ATI cards
v2.02.48
New options: "Disable fogging", "Textures not power of 2 fix"
A few fix to prevent game crashes
v2.02.49
Separated ddraw, d3d and dxwnd log messages
Hooked GetAvailableVidMem method to limit memory values
v2.02.55
added "Hide desktop background" video option
v2.02.56
hooked RegisterClassA API (useless so far...)
fixed bug in SendMessageW hooking: caused truncated text in window titles and fo
rm captions
fixed several d3d1-7 hooks: prevented some d3d games to properly work, i.e. "Thi
ef the Dark Project"
fixed d3d GetDisplayMode to return virtual desktop size - fixed "Affari Tuoi", a
n italian game.
fixed some log messages
v2.02.57
fixed WS_NCCALCSIZE & WM_NCPAINT messages to ensure a proper window's border and
size - fixed Black Thorn window problems
fixed "Hide desktop background" flag
v2.02.58
Added Automatic DirectX mode: not workink always, but should make it much easier
to guess a proper surface setting.
Automatic mode allows dynamic mode change depending on the situation: it is nece
ssary for Populous 3 D3D version.
fixed BltFast operation with SRC color key (often used to draw cursor from texur
es) directly to primary surface: this makes the cursor visible in Populous 3.
minor fixes on logging
v2.02.59
fixed IDIrectDraw reference counter for ddraw release 1 session: fixes "Warhamme
r 40K Rites Of War" first screen
fixed QueryPerformanceCounter handling: fixes "New York Racer" time stretching p
roblems
v2.02.60
fixed time stretching to handle Total Soccer 2000
fixed ZBUFFER surface creation to handle GOG Incoming troubles on some cards
fixed handling of special effects (wireframe, no fogging, zbuffer always) to be
valid on all d3d versions
v2.02.61
added directx "Compensate Flip emulation" flag: used primarily to get rid of mou
se artifacts due to emulated Flip rpocedure in windowed mode. Fixes Gruntz issue
s and some other games...
v2.02.62
fixed d3d7 CreateDevice hook and d3d7 rendering options (wireframe, disablefoggi
ng, zbufferalways)
fixed doublebuffer emulation - avoid returning the backbuffer when zbuffer is re
quested. Fixes rendering problems of many games!
v2.02.63
fixed d3d hooking for Reset and GetDirect3D methods: now Jumpgate works at any a
vailable resolution, and the "Add proxy libs" option is no longer necessary
fixed "Compensate Flip emulation" option for non emulated surface mode: fixes mo
use artifacts for "Rogue Spear Black Thorn"
added preliminary handling for "Disable Textures" option
v2.02.64
GUI: implemented multiple file import
DLL:
fixed a ddraw session reference count error that prevented "Jet Moto" to start
fixed "Compensate Flip emulation" for ddraw7 games: now "Empire Earth" supports
this flag.
fixed CloseWindow hook: now games that minimize/restore the main window on task
switch can possibly recover (e.g. Hundred Swords)
fixed process hook: now it should be a little more robust and efficient. Hopeful
ly should fix some Macromedia Flash problems.
fixed IDDrawSurface::Lock() prototype. Not gameplay improvements, though...
added DirectX "Return 0 ref counter" option as quick & dirty solution to many re
ference counter problems!
fixed DirectDrawCreateEx failing to register the main ddraw session handle
fixed palette problem in emulated mode: palette must be applied to backbuffer su
rface as well. Now "Duckman" and "Total Soccer 2000" show perfect colors.
v2.02.65
added "Fine time adjust" flag to finely set timeslider by 10% steps ranging from
about :2 to x2
fixed a bug in DWORD timers introduced in v2.02.60: now "Warcraft 2" timing work
s again
revised logit to calculate delays to emulate VSync timing - now should be more a
ccurate and depending on actual screen refresh rate
v2.02.66
fixed palette bug: "Virtua Fighter PC" now shows correct colors.
v2.02.67
fixed log for D3D CreateDevice method, missing in some D3D interface versions
added wildcarded program path: now you needn't set the full pathname, but it is
sufficient to specify the rightmost part, e.g. the executable filename.
added emulated mode color conversion from 32BPP to 16BPP. Despite the fact that
the best way to run a 32BPP game is against a 32BPP desktop, now it is possible
to downgrade 32BPP colors to 16BPP. This fixed the fact that 32BPP games run on
a 16BPP desktop showed simply black screens (e.g. Baldur's Gate II)
fixed logic for EnumDisplayModes implementation: now screen resolutions and, for
emulated mode only, also color depth, are generated by DxWnd and not derived di
rectly from the real ones. This make it possible to fake support for very low sc
reen resolutions (e.g. 320x200) on modern screens that support them no longer. T
his make "Genocide" running on both supported resolutions 320x200 and 320x240.
v2.02.68
added screen resolution choice: either a set of SVGA resolutions (mostly for 3:4
monitors), HDTV resolutions (mostly for 16:9 monitors) or the native set of res
olutions offered by your monitor / video card.
v2.02.69
improved exception catching to intercept memory violation exceptions and to neut
ralize offending code. Thank again to olly didasm lib, now the assembly instruct
ion length is automatically determined so that the opcode can be replaced by the
correct number of NOP instructions. If this doesn't mean much for you, just con
sider that this makes playable the Win95 (patched) release of "Star Wars Tie Fig
hter".
fixed FillRect user32 call - brings some improvements to Imperialism (still far
from being acceptable).
v2.02.70
GUI:
fixed saving wrong coordinates when dxwnd is terminated while minimized
added check for adminstrative capabilities on startup
DLL:
fix: moved DrawText/Ex api hooks into right library
fix: corrected child window procedure handling - fixes "Imperialism" child windo
w closing
fixed FillRect coordinate handling - fixes "Imperialism" menus
fixed SetWindowPlacement handling
v2.02.71
fix: Set/GetWindowLongA/W are always hooked.
fix: added user32 GetDCEx hook for GDI Emulation & Directraw mode
fix: hooked "FrameRect", "TabbedTextOutA", "DrawTextA", "DrawTextExA", "FillRect
" in scaled mode only
fix: FIXNCHITTEST mode
fix: when main win is closed, blit area is made null to avoid messing with a wro
ng screen area
added "Release mouse outside window" option. This option causes the get cursor p
osition to detect a centered mouse position when the cursor is moved outside the
window, allowing interaction with other windows without scrolling ot the window
ed program. Mainly, this option is meant to help people with a physical disabili
ty to use other programs (e. g. the virtual keyboard) to play games.
added "Launch" field (optional) to start the program with arguments or a separat
e task
v2.02.72
fix: fixed Launch field used with "Use DLL injection" flag
fix: somehow improved "Use DLL injection" to avoid blocked tasks and allow excep
tion handling
v2.02.73
Add: preliminary support for (unchecked) "Run in window" flag. Now if the flag i
s unchecked, DxWnd does NOT force the program to run in a window. Still, some re
ndering modes are not working perfectly.
add: support for Unicode DefWindowProcW API call
fixed some differences in D3D CreateDevice vs. CreateDeviceEx handling
added "Window frame compensation" input flag to set the cursor position properly
in "Sub Commando"
fix: properly handled the case of NULL WindowProc routine in CreateDialog/Indire
ct API calls. Makes "LEGO Stunt Rally" working.
added support for Unicode SystemParametersInfoW API call
v2.02.74
Add: API hot patching, thank to aqrit precious support. Now Doom 3 is played in
window.
hooked GetCursorInfo call
fix: recalculate vsync timers in case of time stretching
fix: log failure for CreateWindowExW wchar api
Add: configurable keyboard commands
Add: timestretch toggle command
Add: "Enable hotkeys" flag to enable/disable hotkeys
fix: eliminated dialogs with timer warning messages (to be investigated...)
fix: moved "no banner" flag to main tab again
fix: potential string violation, possible cause for flash crash?
v2.02.75
Hooked D3DDevice::ShowCursor method to apply force show/hide cursor (preliminary
...)
fix: dynamic allocation for WndProc stack to eliminate predefined limit of 256 e
ntries. Star Wars Rebellion uses more than 256.
added: "Suppress D3D8/9 Reset" flag
fix: improved show FPS and Time Stretch overlay so that the two overlays won't o
verlap each other
fix: bug in ddraw "Locked surface" mode preventing output on screen
fix: fixed bug in critical common portion of the code that was crashing even unh
ooked programs (namely, Flash Player, ...)
v2.02.76
fixed and enhanced several features about registry emulation: added flags "Emula
te registry" (to add missing entries) and "Override registry" (to fake existing
entries with different values). Fixed "Requiem Avenging Angel" DirectX bogus che
ck bug.
fixed bug in emulate surface palette handling affecting "Requiem Avenging Angel"
colors
v2.02.77
GUI: added program icon display
fix: some log messages
fix: handling of GetProcAddress D3D9 api
fix: handling of EMULATEBUFFER option - fixes "Star Trek Birth of the Federation
"
fix: expanded hot patching scope - now can handle QueryPerformanceCounter and fi
x time stretching on obfuscated version of "Wind Fantasy SP"
added logging in D3DDevice9::GetAdapterIdentifier
v2.02.78
fix: hooked D3D8/9Device::BeginStateBlock
ddraw API hot swappable
log: helper for ChangeDisplaySettings() flags
fix: hot patch handling of loaded modules
log: fixed some messages with no line ending for GetObjectType()
d3d begin of code reorganization and cleaning
ole32, user32 API hot patched
handling of DWL_DLGPROC message
v2.02.79
fix: recovered capability to "pin" ddraw and d3d calls
v2.02.80
Preliminary multilanguage release, english and chinese, many thanks to gsky916 s
upport
fixed Sleep bug for small delays and accelerated timeshift: fixes "Wind Fantasy
SP" reported bug
added log for DirectInput::SetCooperativeLevel flags
fixed flip emulation mode when backbuffer is lost: fixes cursor problems in "Hel
lCopter"
fixed Pitch setting in DirectDraw::EnumDisplayModes when in SVGA emulation mode.
Let "Outlive" use this setting
v2.02.81
fix: hooked GetMonitorInfoA/W that is a possible way to get the screen resolutio
n. The hooker sets the virtual screen size updating both rcWork & rcMonitor rec
ts in the MONITORINFO structure. This fixes the mouse control in "Tomb Raider Un
derworld" and likely in other games with a similar engine.
v2.02.82
fix: completed chinese translation and language selection through dxwnd.ini file
.
added very preliminary (and incomplete) italian translation for debugging.
v2.02.83
fix: small error in one coordinate scaling procedure
fix: completed translation in italian (just for testing....)
fix: added palette window activation in icon tray menu
fix: GetSystemMetrics and LoadLibrary* calls hooked by hot patching to fix "Wind
Fantasy SP" movie problems
fix: completed winmm multimedia api hooking to fix "Wind Fantasy SP" movie probl
ems, and not only....
fix: revised FPS control to assure more stable fps when a FPS limit delay is set
v2.02.97
fix: mouse black trails in "Deadlock II"
fix: missing default value for filter mode
v2.02.98
fix: better ddraw surface handling - now "Darkened Skye" runs in emulated surfa
ce mode with perfect colors
fix: fixed RDTSC opcode search loop - fixed time stretching for "Ubik"
add: added "Peplace privileged opcodes" flag - makes unpatched "Ubik" run
fix: revised ddsurface capabilities policy to allow D3D1-7 games to run in emula
ted mode and bilinear filtering
v2.02.99
fix: completed bilinear filtering for 16bpp desktop color depth
fix: fixed surface handling, Suppress SYSTEMMEMORY options now moved to debug fl
ags (maybe unnecessary)
fix: AERO compatibility is now declared just once
fix: fast bilinear blitting in the 32 -> 32 BPP case
add: texture hooking
add: texture management
add: Direct3D dedicated configuration tab
v2.03.01
fix: fixed some bitmap handling while processing textures
add: texture management dump to texture.out folder and hack from texture.in fold
er
fix: AERO optimized mode with ddraw7 only surfaces: "Hoyle Casino Empire" works
at least in fullscreen mode.
fix: bilinear filters compiled with optimized and openmp flags - big speed impro
vement.
fix: reduced the maximum amount of visible video card with "Limit available reso
urces" flag: now "Breath of Fire IV" works.
v2.03.02
fix: when creating an IID_IDirectDrawGammaControl object through lpdds->QueryInt
erface redirect fake primary surface to real one to make the object working. Fix
es "Might & Magic 7"
fix: fixed logging of ddraw Set/GetGammaRamp methods. Added SUPPRESSDXERRORS err
or suppression
add: texture extraction parameters (min & max x,y size) in dxwnd.ini config file
add: texture extraction / hack made in DxWnd install folder, to allow usage also
for games running from unwritable (CDRom) directory
fix: in "prevent maximize" mode, set the main window in maximized state. Allow "
Hoyle Casino Empire" to continue after the intro movie is terminated
add: Process kill command now warns you about existence of task
fix: DxWnd window position save now works on multiscreen desktop
v2.03.04
fix: changed surface capability policy so that "Risk II" works with identical su
rface pitches
v2.03.05
add: texture dump for d3d8 & d3d9. Note: highlight & hack yet to be implemented.
add:
fix:
add:
add:
add:
fix:
any
v2.03.09
code reorganization & reuse
add: "Set texture pixel format" flag, makes "Jeff Gordon XS Racing" working on e
mulated mode and 32BPP desktop
add: "GDI mode" emulation uses HALFTONE to activate GDI bilinear stretching when
"Full Bilinear" filter is activated: slower, but better quality
add: preliminary hooking for EnumZBufferFormats ddraw7 method
fix: eliminated some handle leakage when injecting launched processes
v2.03.10
add: real time logging through OutputDebugString
add: menu command to launch DbgView.exe
add: support for timestamped logs
add: "Erase trace file" flag
fix: handle leakage for primary hdc, causing rapid performance downgrade
fix: log message reorganization
add: SetStretchBltMode HALFTONE in GDI mode to provide bilinear filtered GDI str
etching
fix: some GDI mode optimization - should bring performances similar to D3DWindow
er, with similar configuration
fix: GDI mode bug, crashing when blitting from NULL surface (to do a color fill
operation)
v2.03.11
fix: added DDSCAPS_FLIP capability to emulated backbuffer surface. Fixes "Inject
ion" missing flips
fix: added high order bit set to kernel32.dll GetVersion() wrapper in case of Wi
n95/98 emulation. Fixes "Warhead" frontend program
fix: coordinates returned by user32.dll GetClipCursor() must be scaled according
ly with virtual desktop size. Fixes "SubCulture" mouse control problems
v2.03.12
fix: several issues in fake registry hooks
add: continue char '\' in fake registry configuration for hex values
add: GetClipList ddraw hooker: fixes "Full Pipe" blitting coordinates
fix: proper handling of palette reserved entries
fix: dinput GetDeviceData
add: implemented "Release mouse outside window" functionality in dinput calls
fix: now "Release mouse outside window" leaves the mouse close to where it left
the window
fix: in GUI, keeps memory of last used paths
fix: several log messages
v2.03.13
add: integrated printscreen facility with 8BPP paletized dump, activated by "pri
ntscreen" special key (default Alt-F12)
fix: recovery for lost surfaces (i.e. after a Ctrl+Alt+Del command)
fix: palette display form showing active entries
fix: EnumDisplayModes hook in emulate surface mode
fix: several log improvements
v2.03.14
add: debug flag "Highlight Locked surfaces" to highlight service surfaces that a
re Lock-ed and Unlock-ed.
v2.03.29:
fix: wrong d3d7 hook, now "Echelon" works again.
add: "hide taskbar" option. A little experimental, so far. If the game crashes,
the taskbar may not be reactivated: use menu commands to recover.
v2.03.30:
fix: reset for flipped DC retrieved from ddraw interface after ddraw creation. F
ixes "Powerslide".
add: added "Send WM_ACTIVATEAPP message" flag: fixes "Championship Manager 03 04
" mouse and "Thorgal" lock
fix: FillRect hooker. Good for "Premier Manager 98" and "Premier Manager 97".
fix: revised the DDSCAPS_SYSTEMMEMORY suppression, now separated for primary & b
ackbuffer surfaces
v2.03.31:
fix: handling of "No SYSTEMMEMORY on BackBuffer" flag for no-emulation mode: nec
essary to run "Microsoft Motocross Madness 2" in this mode.
fix: allowing hot patching to GetCursorPos() user32.dll call. This allows correc
t mouse control with obfuscated exes, like the chinese RPG "Paladin 3".
v2.03.32:
add: flags "Ask confirmation on window close" and "Terminate on window close"
fix: implemented surface stack cleanup on overflow: this should allow "European
Air War" to run through several seasons.
debug: added a few diagnostic messages to trap possible errors in DLL injection
functions
fix: recovered the menu Edit->Add command that went disabled
v2.03.33:
add: new surface handling, more similar to D3DWindower. The previous mode can be
activated by setting the "Flip emulation" flag. The new mode can successfully m
anage "Microsoft Motocross Madness 2".
fix: Reelease operation for primary surface when used for GDI GetDC operation
fix: protections for GDI ReleaseDC operations against null window or DC
v2.03.34:
fix: handling of real primary/backbuffer surfaces in non-emulated modes and WinX
P: now uses system memory if possible, video memory otherwise.
fix: simulation of backbuffer attach in non emulated modes.
fix: mciSendString hooker, was losing a final command line argument
v2.03.35:
add: added "Set ZBufferBitDepths capability" flag to set a no longer supported f
ields in the capability structure. This makes ""Banzai Bug" bypass the capabilit
y checks.
fix: better handling of surface capabilities in flippable mode
fix: fixed bug in primary surface handling when already created ...
add: added ""Share ddraw and GDI DC" flag: sharing was introduced in release v2.
03.19, but proved to be incompatible in many situations. Now it is off by defaul
t and enabled when necessary.
fix: the flags for disabling DDSCAPS_SYSTEMMEMORY capability are now used also i
n non-emulated flipping emulation mode. Depending on the video card, it may help
getting compatibility.
fix: handling of NULL DC in non emulated modes: the NULL DC (corresponding to th
e whole desktop) is replaced by the window DC. This reduces problems like cleari
ng the whole desktop.
fix: EnumDisplayModes was returning wrong modes list in SVGA mode.
S_TEST flag
fix: merged user32 FillRect and FrameRect handling
fix: fixed bug that was leaving a copy of dxwnd.ini on last visited directory on
window close
v2.03.41
fix: filtering of mouse messages in "Message pump" option. Makes games more resp
onsive to mouse clicks. Improves "X-files".
fix: exclusion of DDSCL_SETDEVICEWINDOW, DDSCL_CREATEDEVICEWINDOW and DDSCL_SETF
OCUSWINDOW flags in ddraw SetCooperativeLevel windowed mode
fix: guess PRIMARY surface in ddraw1 when no flags (but BACKBUFFERCOUNT) are set
. Necessary for "Star Force Deluxe"
delete: suppressed frame compensation option FRAMECOMPENSATION (unused).
add: added debug flag NOWINDOWHOOKS to avoid WindowProc hook.
fix: GetPaletteEntries hook returns 256 value against hpal=NULL. Let "M.I.B." ru
n, though palette is still not ok.
fix: StretchDIBits hook no longer can return an unassigned value
fix: anti-recursion check in DialogBox WindowProc call
v2.03.42
add: option "Syncronize GDI and DDRAW palette" - fixes "Man in Black" palette pr
oblems
add: apply "Remap MCI coordinates" options also to movies rendered through MCIWn
dCreate: fixes "Man in Black" movie problems
fix: fixed InvalidateRect hooker logic - fixes "Imperialism" graphic.
v2.03.43
fix: eliminated SYSTEMMEMORY usage on DDSCAPS_3DDEVICE surfaces. Needed for "Arx
Fatalis"
fix: deleted emulation of ZBUFFER attach. Needed for "Arx Fatalis"
fix: added emulation of PixelFormat in getPixelFormat hooker. Needed for "Arx Fa
talis"
add: added virtual joystick feature. Required to play "Tie Fighter 95" with no r
eal joystick
v2.03.43.fix1
fix: recovered virtual joystick buttons
v2.03.44
fix: GetSystemPaletteUse error message
fix: transparent virtual joystick icons
fix: RealizePalette hooker crash in "Super Real Mahjong P7"
fix: complete recoding of GDI BitBlt, StretchBlt and PatBlt hookers: it fixes "R
eah" problems
fix: changes in USER32 BeginPaint hooker to support DC sharing with ddraw
fix: increased configuration panels heigth do avoid clipping when desktop font s
ize is set to 125%
v2.03.45
add: virtual joystick center-lock feature, helps using the mouse as mouse leavin
g the joystick locked.
fix: revised dinput hooking. dinput8 still to be completed.
add: option "Unacquire input devices on focus lost". Needed for Star wars "Tie F
ighter 95".
fix: set dinput SetCooperativeLevel flags to DISCL_NONEXCLUSIVE | DISCL_FOREGROU
ND
fix: fixed CreateIC hooker call method (WINAPI)
fix: emulated Unacquire on virtual joystick. Needed for Star wars "Tie Fighter 9
5".
v2.03.46
add: added compatibility options "Hook GOG libs" and "Byass GOG libs" to manage
GOG games
add: added "Enable Time Freeze" timing option and the virtual key "freezetime"
add: command line option /E to terminate exixting DxWnd session
fix: relocation of WS_POPUP windows. Fixes "Riven" menu window.
v2.03.47
add: added handling of DirectInput8 dinput8.dll
fix: completely revised directinput hooking to manage multiple devices acquire/u
nacquire
fix: added some dinput error codes to log messages
fix: increased time freeze toggle key hysteresis time to 1 sec to avoid multiple
activations
v2.03.48
fix: set proper surface capabilities for 3DDEVICE surfaces, according to VIDEOME
MORY capability.
add: "force clipper" flag to redirect clipper definition to main window and prim
ary surface
fix: better handling of surfaces on minimize / restore events, mainly on WinXP
fix: proper default values for"Share ddraw and GDI DC" and "Lock/Unlock Pitch Fi
x" flags
v2.03.49
fix: a few improvements in handling NULL lpDDSSource in Blit/Flip operations
add: option to print relative timing to log
fix: avoid handling textures at level greater than 0 since this seems to cause a
pplication crash
fix: restore cursor clipping through WM_SETFOCUS and DefWindowProc when focus is
gained
fix: "One Must Fall Battlegrounds" keyboard fix - can't SetWindowsHookEx with WH
_KEYBOARD and NULL thread
v2.03.50
fix: check for errors that could cause random GDI cursor clipping regions
fix: more accurate hooking of ddraw pointers - fixes several DD_GENERIC_ERROR in
Win8/10 platforms, makes "SWAT 3" working
fix: improvements (not finished) in dinput handling
add: the OS version info is traced in the log file
fix: added cursor clipping when requested on new main window creation
fix: handling of cursor clipping when the window gain/lose focus threough DefWin
dowProc message handling
v2.03.51
fix: WinXP select file dialog bug, not appearing if pointing to nonexistent dire
ctory
fix: export file bug - now forces the file to have a .dxw extension
fix: eliminated 6 useless fields in dinput handling, now their value is calculat
ed automatically and at runtime
add: DirectInput / "Emulate mouse relative movement". Eliminates the fake clippe
d regions inside the window (fix Geneforge series)
fix: directinput mouse mode (absolute vs. relative) now correctly checked using
the mouse device
fix: attempt to fix FIXMOVIESCOLOR flag for 32BPP target color depth, but it doe
sn't still work on Win10
fix: directinput RELEASEMOUSE flag applied to mouse device only
v2.03.52
add: added Win NT 4.0 to the list of detected OS
fix: DirectInput SetCooperativeLevel: should not change window handle - fix star