readme relnotes

Download Readme Relnotes

If you can't read please download the document

Upload: felipe-heros

Post on 29-Sep-2015

19 views

Category:

Documents


5 download

DESCRIPTION

MANUEL JUEGOS

TRANSCRIPT

v2.2.00/01major code rewriting - introduced dxwCore classpreliminary FPS handling: Limit, Skip & Count with configurable delayHide Multi Monitor configuration flag - used for "Dream Acquarium" on multimonitor PC.v2.2.02preliminary time stretching: so far applies to GetTickCount() only, and is controlled 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 hookingnew configuration flags: Hook GDI and Hook OpenGLOpenGL custom library fieldAPI hooking fix with module specificationTime stretching by keyboard control (Alt F5/F6) and/or Time Slider dialogv2.02.05:hooked winmm timeGetTime() API: makes time stretching work for Age of Empires serieschanged 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 possible valuesadded status and time stretching view panels to tray icon menuv2.02.06:preliminary FPS counter overlapped on game screen, Alt-F7 to toggle display on/off.fixed buf on time stretch logging (and possible game crash).revised GetDC handling with 8BPP paletized surfaces: avoided need to emulate reverse-blitting and got an impressive speed improvement for games such as Age of Empires 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 compatibility and less complicated source code.added Fake Version feature: now Dungeon Keeper II (original version, not GOG hack) can detect a fake Win2000 / WinXP environment on Win7 and newer. Tested and working 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 bugsFixed some proxy log messages (missing \n line terminator)Fixed Trace "DirectX" flag.improved GetDC handling in 8BPP palette mode: AddPalette called on demand, and on 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 surface 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)Fixed ClientToScreen and ScreenToClient hookers to properly handle scaled windows. This makes "Postal" working.Fixed global palette reference count (??) in DirectDraw::Release hookFixed Window messages handling for SWP_NOMOVE, SWP_NOSIZE modes.v2.02.11:Added debug messages for GetSystemMetrics() modes, MapWindowPoints() points, DirectDrawEnumerate/Ex() devices.ompiled with #define _WIN32_WINNT 0x0600 -> handles Vista modesAdded NOPALETTEUPDATE ("Palette update don't Blit" flag) to eliminate flickering when ddraw and GDI methods conflictHooked all LoadLibraryA/W and LoadLibraryExA/W callsHooked extDirectDrawEnumerate/Ex ddraw calls to handle Hide multi-monitor option.Detected directshow activation through CoCreateInstance and hooked quartz.dll segment: now Urban Assault movies don't require "Full RECT Blit" option to be set.Updated DDSurface::Release hook v2.02.12GUI: Tabbed setup panel. More space for more future options.DLL: (optional) splash screen probably, some regression bugs.... v2.02.13Added decoding of WINDOWPOS.flags field in trace logrevised whole hooking procedures to use HMODULE handle instead of module nameAdded WM_GETMINMAXINFO and WM_NCCALCSIZE handling in WinProcess hookAttempt to handle double buffering through surface attach to backbuffer (???)Fixed CHILD window positioning for BIG windows in CreateWindowExA hookAdded GlobalMemoryStatus hook to fix huge values when value exceeds DWORD range. Fixes Nocturne intro warning message.V2.02.14Started dll injection to handle startup codeFixed directx CreateSurface hook to fix "Wargames" error in emulated modeFixed directx SetClipper hook to properly handle backbuffer clipping and fix "Wargames" clipping problemsv2.02.15Fixed clipping handling of primary/backbuffer surfaces Added option to set AERO compatibility for Vista/Win7/Win8 platforms. Need to call a undocumented ddraw API. Thanks to Vovchik that discovered it. Use at your own risk!v2.02.16DLL injection finally working! Quake 2 is supported.Added Wireframe option for OpenGL gamesImproved fix for clipper handling of primary/backbuffer surfaces v2.02.18Improved LoadLibrary family hook and other improvements to let DxWnd better retrieve OpenGL libs: now Homeworld 2 is workingFixed a bug in backbuffer ZBUFFER attach emulation. Now Dungeon Keeper 2 crashes no more.Moved "Remap client rect" option from directx tab to main program tabAdded the "Force Hook" in the OpenGL tab. Useless for now.Preliminary work for d3d10/d3d11 wrapping. Unfinished and not working so far.Added LoadLibraryEx flags explaination in logAdded support for mouse X,Y coordinates display in status windowOpenGL hooking: fixed bug to prevent hooking same call twiceOpenGL hooking: added hook for wglMakeCurrent call to keep track of rendered windowOpenGL hooking: fixed glViewport and extglScissor hook coordinates handlingD3D hooking: Added Wireframe option for D3D gamesAdded hooking of CLSID_DxDiagProvider through CoCreateInstanceFixed (further simplified) clipping handling of primary/backbuffer surfaces ChangeDisplaySettings hook: fixed x,y coordinate inversion in log messagev2.02.19Saves GUI coordinatesFixed "Remap client rect" option for Diablo's windows and Premier Manager 98 mouse movementsAdded "Highlight blit to primary" option to draw a yellow bounding box around blits to primary surfaceFixed some exception conditions when closing the programsFixed CreateSurface handling to allow Premier Manager 98 start in emulated modeFixed ONEPIXELFIX handlingFixed BIG WIN handling for Diablo's windowsFixed FillRect hook to prevent filling outside virtual desktopDisabled hooking of system librariesFixed 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 virtual desktopv2.02.20Fixed an error in D3D10/11 preliminary code: AoE III working againAdded "Hook all DLLs" option to simplify congiguration: see new Diablo setupAdded screen coordinates to logSome code rearrangementv2.02.21it's a w.i.p. release, wait 'till finished....v2.02.22Major code rearrangement in API hooking. Expect some troubles...Added desktop workarea and centered coordinate settingsFixed imelib hookingAdded HOOKENABLED flagFixed ChangeDisplaySettings GUI: added ListView iconsGUI: added pause commandGUI: updated commands layoutv2.02.23/24Fixed "disable setting gamma ramp" flag to intercept both GDI and D3D callsFixed client workarea setting to occupy the whole client area even when preserving aspect ratio (it draws black rectangles to the left/right or top/bottom side)Added DisableThreadLibraryCalls optimizationAdded B&W screen simulation (for primary emulation only)Improved the primary emulation capacity to handle 3D gamesAdded the "preserve surface capabilities" flagFixed an hooking bug for user32.dllv2.02.25CORE:Added 'Single CPU Process Affinity' flag to let old games run on a single CPU core.Fixed bug causing possible crash using 'preserve surface caps' flagSwitched lpDDSBack reference when backbuffer is upgraded through QueryInterfaceEliminated lpDDSBack clearing when refcount is zero - why is this working better? Needs further investigationAdded DDSCAPS_3DDEVICE capability when in EMULATED modeGUI: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 visible bordersAdded single cpu process affinity checkbox in compatibility tabv2.02.26CORE:Fixed Black&White mode for 16BPP color depthRevised hooking code, now more compact and clear....Fixed DxWnd splash screen, for those who love itIncreased child win table - now 688 hunter killer works perfectly GUI:Added /debug flag to enable debugging optionsRevised hooking code, now more compact and clear....Restored Hook child win optionv2.02.27CORE:fixed GetDC/ReleaseDC ddraw implementation to refresh GDI operation on primary surface. Warlords 3 text is now visible.preliminary implementation of MapWindowPoints - to be testedGUI:Fixed log flags wrong initializationv2.02.28CORE:eliminated experimental ICSendMessage and ICOpen hooks, preventing some games (Alien Nations) to workadded mciSendCommand hook to fix video playbackfixed MoveWindow bug - still, it's unknown the reason why some programs (Emergency) tries to MoveWindow upon the hWnd=0 desktop!fixed MapWindowPoints hook (Alien Nations)fixed desktop detections in some places, now correctly using dxw.IsDesktop() methodNow "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.29CORE:hooked DirectDrawSurface::Lock method to center primary surface memory updates centered into the window (in no emulated mode)v2.02.30CORE:Some ddraw::GetDC log message fixesadded preliminary registry emulation - tested ok with "duckman"added separate flag for preliminary registry operation traceadded CDROM drive type emulation - tested ok with "Fighting Forces" RIPfixed FixCursorPos routine: cursor x,y compensation must always use pseudo-fullscreen window parameters - fixes Imperialism II mouse problemsfixed Desktop Workarea position mode for ddraw gamesadded CoCreateInstanceEx hook - "Final Fighter" seems to be using it, but who knows why...?added "Don't move D3D Rendering Window" window option to make "Fable Lost Chapters" working GUI:updated default values on new entry creation to map most-likely-to-work parametersv2.02.31CORE:disabled annoying compilation security warningsimproved advapi32.dll hooking and logginghandling of complex primary surfaces with backbuffer surface inherited from one directdraw session to the following and with different interfacesfixed SetCooperativeLevel handling in case of WINDOWED mode against desktop hwnd==NULLfixed GetGDISurface in EMULATED mode hooked gdi32 API set for Imperialism I & II and 688 Hunter Killer:GetClipBox, Polyline, PolyBezierTo, PolylineTo, PolyDraw, MoveToEx, ArcTo, LineTo, StretchDIBits, SetDIBitsToDevice, SetPixel, Ellipse, Polygon, Arc, CreateEllipticRgn, CreateEllipticRgnIndirect, CreateRectRgn, CreateRectRgnIndirect, CreatePolygonRgn, DrawTextA, DrawTextExA.fixed gdi32.dll hooking for TextOutA, TabbedTextOutA, Rectangle, BitBlt, PatBlt, StretchBlt, CreateFont, CreateFontIndirectimproved ddraw proxy loggingadded / fixed user32.dll API FrameRect, TabbedTextOutA, CloseWindow, DestroyWindow, SendMessageWopengl: fixed glCreateContext, wglMakeCurrent to make Descent III playable in opengl video mode.fixed DeferWindowPos hook to make Imperialism II workingfixed SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN propertiesfixed window class logging causing program crashGUI:added "GDI/Scale font parameters" & "DirectX/Disable HAL support" optionsv2.02.32CORE: added new GDI handling mode, "Emulated devce context". Currently tested successfully on "G-Nome" only.fixed "Prevent maximize" windows handling avoiding to disable topmost style for child windowsfixed 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 coordinatesfixed memory leakage in SetDIBitsToDevice hookerGUIadded radiobutton group to set the preferred GDI emulation modev2.02.33CORE:experimental attempt to emulate the ZBUFFER attach to the BACKBUFFER surfaceimproved log to detail all ddraw object propertiesexperimental emulation of RGB to YUV conversion to investigate "duckman" problems on Win7improved grayscale algorythmfixed missing DDPF_ALPHAPIXELS property causing several blit incompabilitiesfixed surface handling for "Submarine Titans"fixed mousewheel handlingfixed hooking bug causing several problems (i.e. Age of Empires III)Added FULLSCREENONLY option: fixes "Submarine Titans" intro moviesAdded "Bypass font unsupported api" compatibility flag: makes "Stratego" workingfixed several d3d8/9 hooking problemsGUIadded controls for new core featuresdefaulted ddraw emulation mode to surface emulationv2.02.34CORE:Much better surface description in logCompletely revised CreateSurface hook: emulated and direct code are merged as much as possible, and reference counter are kept accurate. Now most games can work both in emulated and direct mode.Fixed surface capabilities for "Vangers", "The Sims" (now working in emulated mode again)Updated "Fixed aspect ratio" option: now uses the x,y size declared in the configuration instead of the fixed 800 x 600 standard one.Added virtual fullscreen "Desktop" mode.Completely revised the Peek/GetMessage handling: now it uses the standard SetWindowHook API instead of the address redirection, making the handling more reliable and accurate: now "Age of Empires III" works at last!GUI:Added virtual fullscreen "Desktop" mode.Added "Fix buffered IO after Win98" flag: this is meant to fix an incompatibility in the ReadFile kernel32 API that must read from block boundaries, where a block was smaller up to Win98 and bigger after it.As a result, games like "Dylan Dog Horror Luna Park" show IO errors while reading data from the CD. Unfortunately, this is not the only problem of this game, so Dylan Dog fans will have to wait further.Maybe some other programs suffer of this problem, and I will strongly appreciate if anyone finds some.v2.02.35fixed BACKBUFFER surface attributes in direct (not emulated) mode: Rayman 2 playable againadded FILTERMESSAGES flag ("filter offending messages") to eliminate some problems to games not developed to work windowized (Rayman 2, Mirror's Edge ...)fixed bug crashing the program when "keep aspect ratio" is selected with window size set to 0v2.02.36hooked GetAttachedSurface to non-PRIMARY surface to track ZBUFFER attach to BACKBUFFER. Useless, so far...revised capability handling in CreateSurface hook trace is now activated from a separate log flag to reduce debug log sizeadded "Peek all messages in queue" to avoid queue saturation and automatic task kill in Win7 (thank to P K help)fixed message handling in the case messages are passed to a routine handlev2.02.37code reorganizationGUI:removed useless flags and moved debug options in a hidden tabv2.02.38-40Fixed coordinate calculation for blit operations when keeping aspect ratio.Fixed window coordinate placement in desktop / client area mode for programs with a visible menu bar.Changed "Lock win coordinates" flag: now it allows window movement / resizing when driven by mouse input.Fixed a bug in GDI "Map DC to primary surface"mode.Added palette display window to GUIv2.02.41Added "suppress child process creation"flag. This flag is introduced to manage games such as "Heart of Iron 2" that start intro movie by means of a separate process. HoI2 is starting the binkplay.exe program in the game's avi subfolder. This way you don't get a windowed movie, but completely suppress it.v2.02.42added hook to kernel32.dll QueryPerformanceCounter API to enable time stretching to Rayman 2handled GetAttachedSurface emulation for FLIP capability on primary surface - that makes the intro movies of Empire Earth visible.Some code cleaningCleared invisible debug flags ...v2.02.43Several changes for Empire Earth:fix: restore 16BPP color mode after directdraw session terminationfix: recovered window destructionfix: proper handling of MIPMAP and LOCALVIDMEM surfaces fix: color depth handling - now when the program terminates the desktop is brought to the original color depthv2.02.44Improved debug logging for all palette operationsfixed a bugged log causing the crash of Empire Earth in debug modeadded show time stretching flag - preliminary version. Some code cleaning as well.change in automatic screen refresh - should make the "palette update don't blit" flag obsolete.....added a static definition for the default system paletteadded 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.45A small fix for ddraw 7 games that makes Praetorians playable, though with some problems!v2.02.46Fixed handling of user32 CreateDialogIndirectParam call to avoid processing in non fullscreen mode - fix necessary to start "Crimson Skies".v2.02.47GUI:Configuration tabs reorganization: now some tabs have merged making it easier to reach all optionscore: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 cardsv2.02.48New options: "Disable fogging", "Textures not power of 2 fix"A few fix to prevent game crashesv2.02.49Separated ddraw, d3d and dxwnd log messagesHooked GetAvailableVidMem method to limit memory valuesHooked ChangeDisplaySettings call in both versions ANSI and WIDECHAR, to prevent messing up with the screenAdded HookWindowProc() subroutine, called at dxhook.c@1534Added "Add proxy libs" flag - so far to copy a d3d9.dll proxy lib to fix d3d9 gamesHooked d3d8/9 SetCursorPosition methodHooked d3d8/9 AddRef / release methods (for logging)Fixed D3DDevice8/9 hookingHooked QueryPerformanceFrequencyFixed a bug in d3d7 hookingGUI: added desktop color settingv2.02.50Added "Intercept RDTSC" option: so far, tested on Unreal Tournament only.To implement RDTSC detection, I owe a big thank you to Olly who shared the disasm lib used to browse the assembly code.v2.02.51/52Hooked window timers: now "Ed Hunter" can be time stretchedadded NOFILLRECT debug optionfixed WM_DISPLAYCHANGE handling (x,y swapped coordinates?)fixed int64 arithmetic for performance countersAdded (untested !!!) handling for RDTSCP opcode with "Intercept RDTSC" optionAdded "Limit screen resolution" option: seems necessary for "Sid Meyer's Civilization III" to workImproved initial window coordinate & style handlingfixed virtual screen size showing into status panelhooked SetPixelFormat, GetPixelFormat, ChoosePixelFormat and DescribePixelFormat to redirect desktop hwnd and make wglCreateContext work (needed for Civ III)fixed log message for TextOut parametershooked DisableD3DSpy (invoked by The Bard's Tale)fixed extglViewport coordinate remapping when invoked with CW_USEDEFAULT values (Civ III)fixed bug in DirectDarawCreate/Ex hooking with wrong module handlev2.02.53Handling of ddraw screen color depth 15BPP - in "Hesperian Wars"fixed IAT scanning: now function addresses for remapping are searched in possibly multiple instances of dll text segment - in "Aaron Hall's Dungeon Odissey"hooked SystemParametersInfo callfixed window size logic to check for window menu bar, considering also the WS_CHILD case.fixed window move/resize when message processing is enabled: coordinates outside the child area or within ENTER/EXITSIZEMOVE must NOT be altered.expanded timer processing to include user32 Set/KillTimer - in "Aaron Hall's Dungeon Odissey"fixed possible recursion while hooking child window procedure identical to parent's onefixed gdi emulation on top of ddraw surface, enough to play "Sid Meyer's Civilization III".v2.02.54fixed a bug in d3d GetAvailableVidMem that was causing too many troubles...fixed a bug in Suppress IME optionfixed a bug in handled library list, possibly affecting d3d/d3d7 gamesavoid fixing window style for non-desktop windows (fixed a Port Royale 2 bug)eliminated "Disable HAL support", no longer necessarysome incomplete work on gdi game handlingadded preliminary, incomplete (not working) glide handlingv2.02.55added "Hide desktop background" video optionv2.02.56hooked RegisterClassA API (useless so far...)fixed bug in SendMessageW hooking: caused truncated text in window titles and form captionsfixed several d3d1-7 hooks: prevented some d3d games to properly work, i.e. "Thief the Dark Project"fixed d3d GetDisplayMode to return virtual desktop size - fixed "Affari Tuoi", an italian game.fixed some log messagesv2.02.57fixed WS_NCCALCSIZE & WM_NCPAINT messages to ensure a proper window's border and size - fixed Black Thorn window problemsfixed "Hide desktop background" flag v2.02.58Added 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 necessary for Populous 3 D3D version.fixed BltFast operation with SRC color key (often used to draw cursor from texures) directly to primary surface: this makes the cursor visible in Populous 3.minor fixes on loggingv2.02.59fixed IDIrectDraw reference counter for ddraw release 1 session: fixes "Warhammer 40K Rites Of War" first screenfixed QueryPerformanceCounter handling: fixes "New York Racer" time stretching problemsv2.02.60fixed time stretching to handle Total Soccer 2000fixed ZBUFFER surface creation to handle GOG Incoming troubles on some cardsfixed handling of special effects (wireframe, no fogging, zbuffer always) to be valid on all d3d versionsv2.02.61added directx "Compensate Flip emulation" flag: used primarily to get rid of mouse artifacts due to emulated Flip rpocedure in windowed mode. Fixes Gruntz issues and some other games...v2.02.62fixed d3d7 CreateDevice hook and d3d7 rendering options (wireframe, disablefogging, zbufferalways)fixed doublebuffer emulation - avoid returning the backbuffer when zbuffer is requested. Fixes rendering problems of many games!v2.02.63fixed d3d hooking for Reset and GetDirect3D methods: now Jumpgate works at any available resolution, and the "Add proxy libs" option is no longer necessaryfixed "Compensate Flip emulation" option for non emulated surface mode: fixes mouse artifacts for "Rogue Spear Black Thorn" added preliminary handling for "Disable Textures" optionv2.02.64GUI: implemented multiple file importDLL:fixed a ddraw session reference count error that prevented "Jet Moto" to startfixed "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. Hopefully 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 reference counter problems!fixed DirectDrawCreateEx failing to register the main ddraw session handlefixed palette problem in emulated mode: palette must be applied to backbuffer surface as well. Now "Duckman" and "Total Soccer 2000" show perfect colors.v2.02.65added "Fine time adjust" flag to finely set timeslider by 10% steps ranging from about :2 to x2fixed a bug in DWORD timers introduced in v2.02.60: now "Warcraft 2" timing works againrevised logit to calculate delays to emulate VSync timing - now should be more accurate and depending on actual screen refresh ratev2.02.66fixed palette bug: "Virtua Fighter PC" now shows correct colors.v2.02.67fixed log for D3D CreateDevice method, missing in some D3D interface versionsadded 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 directly from the real ones. This make it possible to fake support for very low screen resolutions (e.g. 320x200) on modern screens that support them no longer. This make "Genocide" running on both supported resolutions 320x200 and 320x240.v2.02.68added 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 resolutions offered by your monitor / video card.v2.02.69improved exception catching to intercept memory violation exceptions and to neutralize offending code. Thank again to olly didasm lib, now the assembly instruction 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 consider that this makes playable the Win95 (patched) release of "Star Wars Tie Fighter".fixed FillRect user32 call - brings some improvements to Imperialism (still far from being acceptable).v2.02.70GUI:fixed saving wrong coordinates when dxwnd is terminated while minimizedadded check for adminstrative capabilities on startupDLL:fix: moved DrawText/Ex api hooks into right libraryfix: corrected child window procedure handling - fixes "Imperialism" child window closing fixed FillRect coordinate handling - fixes "Imperialism" menusfixed SetWindowPlacement handlingv2.02.71fix: Set/GetWindowLongA/W are always hooked.fix: added user32 GetDCEx hook for GDI Emulation & Directraw modefix: hooked "FrameRect", "TabbedTextOutA", "DrawTextA", "DrawTextExA", "FillRect" in scaled mode onlyfix: FIXNCHITTEST modefix: when main win is closed, blit area is made null to avoid messing with a wrong screen areaadded "Release mouse outside window" option. This option causes the get cursor position to detect a centered mouse position when the cursor is moved outside the window, allowing interaction with other windows without scrolling ot the windowed program. Mainly, this option is meant to help people with a physical disability to use other programs (e. g. the virtual keyboard) to play games.added "Launch" field (optional) to start the program with arguments or a separate taskv2.02.72fix: fixed Launch field used with "Use DLL injection" flagfix: somehow improved "Use DLL injection" to avoid blocked tasks and allow exception handlingv2.02.73Add: preliminary support for (unchecked) "Run in window" flag. Now if the flag is unchecked, DxWnd does NOT force the program to run in a window. Still, some rendering modes are not working perfectly.add: support for Unicode DefWindowProcW API callfixed some differences in D3D CreateDevice vs. CreateDeviceEx handlingadded "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/Indirect API calls. Makes "LEGO Stunt Rally" working.added support for Unicode SystemParametersInfoW API callv2.02.74Add: API hot patching, thank to aqrit precious support. Now Doom 3 is played in window.hooked GetCursorInfo callfix: recalculate vsync timers in case of time stretchingfix: log failure for CreateWindowExW wchar apiAdd: configurable keyboard commandsAdd: timestretch toggle commandAdd: "Enable hotkeys" flag to enable/disable hotkeysfix: eliminated dialogs with timer warning messages (to be investigated...)fix: moved "no banner" flag to main tab againfix: potential string violation, possible cause for flash crash?v2.02.75Hooked D3DDevice::ShowCursor method to apply force show/hide cursor (preliminary...)fix: dynamic allocation for WndProc stack to eliminate predefined limit of 256 entries. Star Wars Rebellion uses more than 256.added: "Suppress D3D8/9 Reset" flagfix: improved show FPS and Time Stretch overlay so that the two overlays won't overlap each otherfix: bug in ddraw "Locked surface" mode preventing output on screenfix: fixed bug in critical common portion of the code that was crashing even unhooked programs (namely, Flash Player, ...)v2.02.76fixed and enhanced several features about registry emulation: added flags "Emulate registry" (to add missing entries) and "Override registry" (to fake existing entries with different values). Fixed "Requiem Avenging Angel" DirectX bogus check bug.fixed bug in emulate surface palette handling affecting "Requiem Avenging Angel" colorsv2.02.77GUI: added program icon displayfix: some log messagesfix: 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 fix time stretching on obfuscated version of "Wind Fantasy SP"added logging in D3DDevice9::GetAdapterIdentifier v2.02.78fix: hooked D3D8/9Device::BeginStateBlockddraw API hot swappablelog: helper for ChangeDisplaySettings() flagsfix: hot patch handling of loaded moduleslog: fixed some messages with no line ending for GetObjectType()d3d begin of code reorganization and cleaningole32, user32 API hot patchedhandling of DWL_DLGPROC message v2.02.79fix: recovered capability to "pin" ddraw and d3d callsv2.02.80Preliminary multilanguage release, english and chinese, many thanks to gsky916 supportfixed Sleep bug for small delays and accelerated timeshift: fixes "Wind Fantasy SP" reported bugadded log for DirectInput::SetCooperativeLevel flagsfixed flip emulation mode when backbuffer is lost: fixes cursor problems in "HellCopter"fixed Pitch setting in DirectDraw::EnumDisplayModes when in SVGA emulation mode. Let "Outlive" use this settingv2.02.81fix: hooked GetMonitorInfoA/W that is a possible way to get the screen resolution. The hooker sets the virtual screen size updating both rcWork & rcMonitor rects in the MONITORINFO structure. This fixes the mouse control in "Tomb Raider Underworld" and likely in other games with a similar engine.v2.02.82fix: completed chinese translation and language selection through dxwnd.ini file.added very preliminary (and incomplete) italian translation for debugging.v2.02.83fix: small error in one coordinate scaling procedurefix: completed translation in italian (just for testing....)fix: added palette window activation in icon tray menufix: supppressed BackBuffer release within D3D7:CreateDevice: this makes "Tetris Worlds" fully playableadd: build-in check for compatibility modes set!v2.02.84fix: removed extra reference to ddraw session causing window movements on fullscreen game exit: fixes another "Wind Fantasy SP" reported bugv2.02.85fix: revised handling of d3d D3DFORMAT field: fixes "Call of Cthulhu DCotE" color problemsfix: added recovery for rounded child win coordinates: fixes blitting problems in Diablo when win size is not an exact multiple of native resolution.v2.02.86fix: thank to aqrit's research, hooked and hanlded user32.dll GetUpdateRgn API. This fixes refresh and crash problems in Diablo & Hellfire.added bilinear filtering to directdraw palettized 8BPP emulated mode (where it is mostly needed!). A must try is "Genocide" !v2.02.87attempt to fix Win8 missing support for earlier ddraw releases (Croc legend of the Gobbos, Project I.G.I., ...)fix: optimized bilinear filtering with no horizontal / vertical sawtooth artifactsadded support for 16BPP and 32BPP desktop bilinear filteringsuppressed compatibility checkingfix: doubled default window size when bilinear filtering is activeadded repositioning of control parent window when main win is moved added debug messages about hooked window class and namefix: ignore IME window when hooking main win, destroy it when requestedfix: ignore HWND_MESSAGE type windowsadded "Diablo tweak" compatibility flag for Diablo proper screen update handling. It is a temporary tweak waiting to understand better how to properly manage it.v2.02.88fix: DIABLOTWEAK flag defaulted to FALSEadd: CLEARTARGET flag - forces a Clear CLEAR_TARGET operation on D3D BeginPaint: useful in combination with wireframe mode.updated "Optimize CPU" behavior: now it emulates a VSync wait also on D3D8/D3D9. Fixes some "swimming" problem in "Soul Reaver 2", and saves CPU time by limiting the FPS to the refresh rate.fixed positioning of FPS and time stretching indication on screen overlaycleaned up GUI project: no more japanese and localized resources, no more unreferenced resources.GUI: added Desktop status windowGUI: added pixel format descriptor to DxWnd statusv2.02.89fix: added SVGA 512x384 video mode. Necessary for "Outcast" loading screen.fix: using WINNLSEnableIME call to suppress IME window. fix: improved some loggingv2.02.90added: "Filter winposchange messages" flag - needed for "RollerCoaster Tycoon / Deluxe / II" gamesfix: correct handling of texture surfaces for "Zoo Tycoon" in surface emulation mode.fix: handling of GDI32.dll calls in GetProcAddressfix: improved loggingfix: GetRgnBox hooking moved to normal window processing, to handle RollerCoaster Tycoon series.added: GetTempFileName fix to handle Win95 differences. This makes "Powerslide" playable.v2.02.91fix: bug in bilinear filtering mode causing possible game crashes when blitting partial rectangles (es. Age of Empires II cursor)added: AERO friendly mode - brings AERO compatibility and incredible performance boost for ddraw games in surface emulation modev2.02.92fix: "Keep aspect ratio" fixed for AERO environmentfix: improved "Oprtimized for AERO mode" compatibility, both when set / unset.fix: Skip / Limit FPS now acting on full scren blits only. For instance, they no longer slow cursor sprite.v2.02.93fix: handling of primary / backbuffer surfaces when DDSCAPS_3DDEVICE is set (es. Fifa 99 in Direct3D mode)v2.02.94fix: handling of "Keep aspect ratio" for aspect ratios different from 4:3fix: missing resolution 400x300 in "Limit resolution" handlingfix: surface handling switch in automatic mode. added two flags for DDSCAPS_SYSTEMMEMORY handling on different contexts. Added extra performances and compatibility with D3D in emulated mode.added "Updated bigger than 1/4 screen size" flag, to perform FPS counting or limitations upon substantial screen updated (heuristic: bigger than 1/4 of the total size...)added true bilinear filter. Previous one was renamed as fast 2x filter (BILINEAR2XFILTER).fix: when the window was minimized & the "do not notify on task switch" flag was on, the game crashed. Now the blitting operations to invalid rect coordinates are suppressed.fix: debug option "highlight blit to primary" was causing game crashes when the updated rect was too little. fix: trapped sporadic CloseHandle(hMenu) crashes in a try/catch clause.fix: attempt to fix FIXD3DFRAME optionfix: added SetStretchBltMode(hdc,HALFTONE) to SetDIBitsToDevice hooker to improve stretching: fixes "Celtic Kings Rage of War"v2.02.95fix: handling of limit resolution fieldfix: FPS handling to screen updated made by SetDIBitsToDevicefix: PeekMessage implementation with "Peek all message in queue": fixes "Shadow Watch"fix: missing hook to CreateProcess - needed for "Suppress child process creation".fix: exception for bilinear filtering applied to certain games (e.g. "Shadow Watch")v2.02.96fix: FPS inticator on window title was causing the program to become irresponsive (partial fix)fix: proper setting of ddraw surface capabilities will allow primary surface emulation for most D3D1-7 gamesfix: missing initialization of variables in screen size limit handlingfix: processing of mouse messages fix: GetSystemMetrics and LoadLibrary* calls hooked by hot patching to fix "Wind Fantasy SP" movie problemsfix: completed winmm multimedia api hooking to fix "Wind Fantasy SP" movie problems, and not only....fix: revised FPS control to assure more stable fps when a FPS limit delay is set v2.02.97fix: mouse black trails in "Deadlock II"fix: missing default value for filter modev2.02.98fix: better ddraw surface handling - now "Darkened Skye" runs in emulated surface mode with perfect colorsfix: fixed RDTSC opcode search loop - fixed time stretching for "Ubik"add: added "Peplace privileged opcodes" flag - makes unpatched "Ubik" runfix: revised ddsurface capabilities policy to allow D3D1-7 games to run in emulated mode and bilinear filteringv2.02.99fix: completed bilinear filtering for 16bpp desktop color depthfix: fixed surface handling, Suppress SYSTEMMEMORY options now moved to debug flags (maybe unnecessary)fix: AERO compatibility is now declared just oncefix: fast bilinear blitting in the 32 -> 32 BPP caseadd: texture hookingadd: texture managementadd: Direct3D dedicated configuration tabv2.03.01fix: fixed some bitmap handling while processing texturesadd: texture management dump to texture.out folder and hack from texture.in folderfix: 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 improvement.fix: reduced the maximum amount of visible video card with "Limit available resources" flag: now "Breath of Fire IV" works.v2.03.02fix: when creating an IID_IDirectDrawGammaControl object through lpdds->QueryInterface redirect fake primary surface to real one to make the object working. Fixes "Might & Magic 7"fix: fixed logging of ddraw Set/GetGammaRamp methods. Added SUPPRESSDXERRORS error suppressionadd: texture extraction parameters (min & max x,y size) in dxwnd.ini config fileadd: texture extraction / hack made in DxWnd install folder, to allow usage also for games running from unwritable (CDRom) directoryfix: in "prevent maximize" mode, set the main window in maximized state. Allow "Hoyle Casino Empire" to continue after the intro movie is terminatedadd: Process kill command now warns you about existence of taskfix: DxWnd window position save now works on multiscreen desktopv2.03.04fix: changed surface capability policy so that "Risk II" works with identical surface pitchesv2.03.05add: texture dump for d3d8 & d3d9. Note: highlight & hack yet to be implemented. d3d10 & d3d11 yet to be implemented. Texture types not complete.fix: handling of d3d10 (Assassin's Creed) v2.03.06fix: do not try to set vsync delays on ddraw surface when not created yet fix: catched several sporadic errors before they could crash the applicationfix: GetAttachedSurface() now retrieves a backbuffer from the list, instead of referencing the last one - this fixes "Tomb Raider III" GOG release in non emulated mode.add: "Normalize performance counter" flag to fix an improper use of QueryPerformanceCounter() made by "Cyber Gladiators"add: "GDI Color conversion" debug flagv2.03.07fix: key matching for virtual registry now made case insensitive (needed for "Die Hard Trilogy")fix: handling of null values passed to extRegQueryValueEx as lpType and lpData arguments (needed for "Die Hard Trilogy")fix: DirectDrawSurface::GetPalette returns the virtual palette when applied to virtual primary / backup surfaces (needed for "Die Hard Trilogy")fix: fixed dump for 8BPP palettized textures (needed for "Die Hard Trilogy")fix: handling (with no operation) of D3DFMT_Q8W8V8U8 texture type and other bumpmap formats (used by "Tiger Woods PGA Tour 08")fix: handling of LIMITRESOURCES flag for DirectDraw::GetCaps method when memory exceeds 0x70000000 bytesfix: handling of LIMITRESOURCES flag for Direct3DDevice::GetAvailableTextureMem method when memory exceeds 1GBfix: don't change screen resolution in SetDisplayMode when wrong (negative) values are passed. Fixes a problem in binkplayer.exefix: fixed OutTrace to avoid possible infinite recursion when loading C runtime libraries and logging LoadLibrary activityfix: eliminated critical races when using DLL injection, thank to Luigi Auriemma's suggestion (inject an endless loop in the main thread and remove it at the end of injection)fix: implemented DLL injection according to Luigi Auriemma's schema in CreateProcess hooking routine (needed for "Die Hard Trilogy")fix: using MinHook library to acquire compatibility with all APIsfix: hooked GetExitCodeProcess to handle "SUPPRESSCHILD" special casefix: using hot patching for SystemParametersInfo APIsfix: in SystemParametersInfo suppressed invalid operations in window mode: SPI_SETKEYBOARDDELAY SPI_SETKEYBOARDSPEEDadd: son process handling with 4 different cases: 2 old cases (default case and "SUPPRESSCHILD") plus "INJECTSON" and "ENABLESONHOOK" to hook the son process without/with DLL injectionadd: debug color conversion mode through GDI routinesadd: multi-hooking for multiple processes contemporarily, adding the line "multiprocesshook=1" in [window] section of dxwnd.ini. Use at your own risk!add: partial logging of Direct3DDevice::GetDeviceCaps output (to be completed)add: handling of notes in the DxWnd GUI (configuration notes tab)mod: when log is not possible on program's folder, it is no longer written in %TEMP% dir, is now written in DxWnd local dir.v2.03.08add: "GDI mode" ddraw surface handling modeadd: "center to window" optionadd: "message pump" input flag - fixes Arxel Tribe games (Faust, Legend of the prophet & assassin, ...)fix: "Viper Racing" crashfix: "limit resources" option for "Tiger Woods PGA World Tour 08"fix: "limit resources" option for "Jeff Gordon XS Racing demo"add: debug "stress resources" optionfix: added a couple of directinput diagnostic logsadd: debug option "freeze injected son"add: made check for admin rights configurable in dxwnd.iniadd: "portable" capability to configure relative pathnamesfix: small bug in game menu string width - now game titles should not be trunked any longer.v2.03.09code reorganization & reuseadd: "Set texture pixel format" flag, makes "Jeff Gordon XS Racing" working on emulated mode and 32BPP desktopadd: "GDI mode" emulation uses HALFTONE to activate GDI bilinear stretching when "Full Bilinear" filter is activated: slower, but better qualityadd: preliminary hooking for EnumZBufferFormats ddraw7 methodfix: eliminated some handle leakage when injecting launched processesv2.03.10add: real time logging through OutputDebugStringadd: menu command to launch DbgView.exeadd: support for timestamped logsadd: "Erase trace file" flagfix: handle leakage for primary hdc, causing rapid performance downgradefix: log message reorganizationadd: SetStretchBltMode HALFTONE in GDI mode to provide bilinear filtered GDI stretchingfix: some GDI mode optimization - should bring performances similar to D3DWindower, with similar configurationfix: GDI mode bug, crashing when blitting from NULL surface (to do a color fill operation)v2.03.11fix: added DDSCAPS_FLIP capability to emulated backbuffer surface. Fixes "Injection" missing flipsfix: added high order bit set to kernel32.dll GetVersion() wrapper in case of Win95/98 emulation. Fixes "Warhead" frontend programfix: coordinates returned by user32.dll GetClipCursor() must be scaled accordingly with virtual desktop size. Fixes "SubCulture" mouse control problemsv2.03.12fix: several issues in fake registry hooksadd: continue char '\' in fake registry configuration for hex valuesadd: GetClipList ddraw hooker: fixes "Full Pipe" blitting coordinatesfix: proper handling of palette reserved entriesfix: dinput GetDeviceDataadd: implemented "Release mouse outside window" functionality in dinput callsfix: now "Release mouse outside window" leaves the mouse close to where it left the windowfix: in GUI, keeps memory of last used pathsfix: several log messagesv2.03.13add: integrated printscreen facility with 8BPP paletized dump, activated by "printscreen" special key (default Alt-F12)fix: recovery for lost surfaces (i.e. after a Ctrl+Alt+Del command)fix: palette display form showing active entriesfix: EnumDisplayModes hook in emulate surface modefix: several log improvementsv2.03.14add: window commands Minimize, Restore & Closeadd: made palette behaviour configurable (until better understood...)add: "updatepaths" tag in dxwnd.ini