mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_03_52_src
Former-commit-id: 0078cbd5b18cc119951e8d62151f2172f45dfcd8
This commit is contained in:
parent
c9137306ce
commit
dd3b8535bf
@ -14,7 +14,7 @@
|
||||
#define UNNOTIFY 0x00000001
|
||||
#define EMULATESURFACE 0x00000002
|
||||
#define CLIPCURSOR 0x00000004 // Force cursor clipping within window
|
||||
#define RESETPRIMARY 0x00000008 // reset emulated primary surface when reopening DDRaw object
|
||||
//#define RESETPRIMARY 0x00000008 // reset emulated primary surface when reopening DDRaw object
|
||||
#define HOOKDI 0x00000010
|
||||
#define MODIFYMOUSE 0x00000020
|
||||
#define HANDLEEXCEPTIONS 0x00000040 // Handles exceptions: Div by 0 ....
|
||||
@ -55,7 +55,7 @@
|
||||
#define INIT16BPP 0x00000080 // simulate a 16BPP initial desktop setting (in GetDeviceCaps API)
|
||||
#define KEEPCURSORFIXED 0x00000100 // inhibit SetCursorPos operation
|
||||
#define DISABLEGAMMARAMP 0x00000200 // let the application retrieve the desktop DC (for capability queries)
|
||||
#define DIFFERENTIALMOUSE 0x00000400 // emulates the 360-degrees-free-running mouse style....
|
||||
//#define DIFFERENTIALMOUSE 0x00000400 // emulates the 360-degrees-free-running mouse style....
|
||||
#define FIXNCHITTEST 0x00000800 // fixes WM_NCHITTEST message X,Y coordinates
|
||||
#define LIMITFPS 0x00001000 // delays primary blit operations to limit FPS
|
||||
#define SKIPFPS 0x00002000 // skips primary blit operations up to limit
|
||||
@ -97,8 +97,8 @@
|
||||
#define GDIEMULATEDC 0x00008000 // Map GDI/user32 calls to primary to a memory surface to be stretch-blitted to the primary
|
||||
#define FULLSCREENONLY 0x00010000 // assume that the program is always in fullscreen mode
|
||||
#define FONTBYPASS 0x00020000 // bypass font unsupported API
|
||||
#define YUV2RGB 0x00040000 // Simulate YUV to RGB color conversion
|
||||
#define RGB2YUV 0x00080000 // Simulate RGB to YUV color conversion
|
||||
//#define YUV2RGB 0x00040000 // Simulate YUV to RGB color conversion
|
||||
//#define RGB2YUV 0x00080000 // Simulate RGB to YUV color conversion
|
||||
#define BUFFEREDIOFIX 0x00100000 // fix buffered IO incompatibilities between pre-Win98 and post-WinNT
|
||||
#define FILTERMESSAGES 0x00200000 // ignore offending messages that are typical of a window and are hot handled by a fullscreeen app
|
||||
#define PEEKALLMESSAGES 0x00400000 // force Peek-ing all sort of messages to avoid Win7 message queue saturation that leads to program halt
|
||||
@ -215,6 +215,8 @@
|
||||
#define EMULATERELMOUSE 0x80000000 // Emulates the dinput detection of relative mouse position by keeping the mouse at the center of window and looking for movements
|
||||
|
||||
// seventh flags DWORD dxw.dwFlags7:
|
||||
#define LIMITDDRAW 0x00000001 // Limit the maximum available ddraw object version
|
||||
|
||||
// eighth flags DWORD dxw.dwFlags8:
|
||||
|
||||
// logging Tflags DWORD:
|
||||
@ -222,8 +224,8 @@
|
||||
#define OUTDDRAWTRACE 0x00000002 // traces DxWnd directdraw screen handling
|
||||
#define OUTWINMESSAGES 0x00000004 // traces windows messages
|
||||
#define OUTCURSORTRACE 0x00000008 // traces cursor positions & operations
|
||||
#define OUTPROXYTRACE 0x00000010 // enables all operations through proxy functions
|
||||
#define DXPROXED 0x00000020 // hook DX proxy methods to log each call in original behaviour
|
||||
//#define OUTPROXYTRACE 0x00000010 // enables all operations through proxy functions
|
||||
//#define DXPROXED 0x00000020 // hook DX proxy methods to log each call in original behaviour
|
||||
#define ASSERTDIALOG 0x00000040 // show assert messages in Dialog Box
|
||||
#define OUTIMPORTTABLE 0x00000080 // dump import table contents
|
||||
#define OUTDEBUG 0x00000100 // detailed debugging indormation
|
||||
@ -267,6 +269,7 @@ typedef struct TARGETMAP
|
||||
short FakeVersionId;
|
||||
short MaxScreenRes;
|
||||
short SwapEffect;
|
||||
short MaxDdrawInterface;
|
||||
}TARGETMAP;
|
||||
|
||||
typedef struct
|
||||
@ -314,7 +317,7 @@ LRESULT CALLBACK extDialogWindowProc(HWND, UINT, WPARAM, LPARAM);
|
||||
// defines below to condition debug message handling
|
||||
|
||||
#define OutTraceW if(dxw.dwTFlags & OUTWINMESSAGES) OutTrace
|
||||
#define OutTraceX if(dxw.dwTFlags & OUTPROXYTRACE) OutTrace
|
||||
//#define OutTraceX if(dxw.dwTFlags & OUTPROXYTRACE) OutTrace
|
||||
#define OutTraceDW if(dxw.dwTFlags & OUTDXWINTRACE) OutTrace
|
||||
#define OutTraceDDRAW if(dxw.dwTFlags & OUTDDRAWTRACE) OutTrace
|
||||
#define OutTraceD3D if(dxw.dwTFlags & OUTD3DTRACE) OutTrace
|
||||
@ -326,7 +329,7 @@ LRESULT CALLBACK extDialogWindowProc(HWND, UINT, WPARAM, LPARAM);
|
||||
#define OutTraceE OutTrace
|
||||
|
||||
#define IsTraceW (dxw.dwTFlags & OUTWINMESSAGES)
|
||||
#define IsTraceX (dxw.dwTFlags & OUTPROXYTRACE)
|
||||
//#define IsTraceX (dxw.dwTFlags & OUTPROXYTRACE)
|
||||
#define IsTraceDW (dxw.dwTFlags & OUTDXWINTRACE)
|
||||
#define IsTraceDDRAW (dxw.dwTFlags & OUTDDRAWTRACE)
|
||||
#define IsTraceD3D (dxw.dwTFlags & OUTD3DTRACE)
|
||||
@ -361,3 +364,14 @@ typedef enum {
|
||||
TIMER_TYPE_USER32,
|
||||
TIMER_TYPE_WINMM
|
||||
} Timer_Types;
|
||||
|
||||
typedef struct {
|
||||
int w;
|
||||
int h;
|
||||
} SupportedRes_Type;
|
||||
|
||||
extern SupportedRes_Type SupportedSVGARes[];
|
||||
extern SupportedRes_Type SupportedHDTVRes[];
|
||||
extern int SupportedDepths[];
|
||||
|
||||
#define SUPPORTED_DEPTHS_NUMBER 4
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fced667458c73b82bde02efd8d316628a878f1b006dc783b0e806309c0ff8d32
|
||||
size 626176
|
||||
oid sha256:935f85ba0560e2c0a319ea4a007c0f24de314cc7207710fdcd4d41e6a4fbb39a
|
||||
size 593920
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:45425fed1d12c6c8a93df12b38a6ec3a17b875c00b2851c1031963973e4a8c67
|
||||
oid sha256:82bd1f60071207b5033f2deade63c46438a048357e3cb0e4d5aa5b379da92186
|
||||
size 545792
|
||||
|
@ -5,11 +5,11 @@ module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=1753358370
|
||||
flag0=-394124766
|
||||
flagg0=134217728
|
||||
flagh0=20
|
||||
flagi0=0
|
||||
tflag0=3
|
||||
flagi0=4194304
|
||||
tflag0=0
|
||||
initx0=0
|
||||
inity0=0
|
||||
minx0=0
|
||||
@ -22,3 +22,14 @@ sizx0=800
|
||||
sizy0=600
|
||||
maxfps0=0
|
||||
initts0=0
|
||||
launchpath0=
|
||||
notes0=
|
||||
registry0=
|
||||
flagj0=0
|
||||
flagk0=0
|
||||
flagl0=0
|
||||
flagm0=0
|
||||
winver0=0
|
||||
maxres0=0
|
||||
swapeffect0=0
|
||||
maxddinterface0=7
|
||||
|
@ -6,7 +6,7 @@ module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=679477792
|
||||
flag0=679477794
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=205520900
|
||||
@ -26,3 +26,10 @@ initts0=0
|
||||
winver0=0
|
||||
maxres0=-1
|
||||
flagj0=128
|
||||
notes0=
|
||||
registry0=
|
||||
flagk0=65536
|
||||
flagl0=0
|
||||
flagm0=0
|
||||
swapeffect0=0
|
||||
maxddinterface0=7
|
||||
|
29
build/exports/Dark Colony (16 bit).dxw
Normal file
29
build/exports/Dark Colony (16 bit).dxw
Normal file
@ -0,0 +1,29 @@
|
||||
[target]
|
||||
title0=Dark Colony (16 bit)
|
||||
path0=D:\Games\DarkColony\DCOLONY\DC16.EXE
|
||||
launchpath0=
|
||||
module0=
|
||||
opengllib0=
|
||||
notes0=
|
||||
registry0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=134234166
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=4194308
|
||||
flagj0=67108992
|
||||
flagk0=0
|
||||
flagl0=0
|
||||
flagm0=0
|
||||
tflag0=0
|
||||
posx0=50
|
||||
posy0=50
|
||||
sizx0=800
|
||||
sizy0=600
|
||||
maxfps0=0
|
||||
initts0=0
|
||||
winver0=0
|
||||
maxres0=-1
|
||||
swapeffect0=0
|
||||
maxddinterface0=7
|
@ -5,7 +5,7 @@ module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=134218274
|
||||
flag0=134234166
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=4194308
|
||||
@ -30,3 +30,6 @@ notes0=
|
||||
registry0=
|
||||
flagk0=0
|
||||
swapeffect0=0
|
||||
flagl0=0
|
||||
flagm0=0
|
||||
maxddinterface0=7
|
||||
|
28
build/exports/Nox (GOG).dxw
Normal file
28
build/exports/Nox (GOG).dxw
Normal file
@ -0,0 +1,28 @@
|
||||
[target]
|
||||
title0=Nox (GOG)
|
||||
path0=D:\Games\Nox GOG\Game.exe
|
||||
launchpath0=
|
||||
module0=
|
||||
opengllib0=
|
||||
notes0=
|
||||
registry0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=681574434
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=134217732
|
||||
flagj0=4224
|
||||
flagk0=65536
|
||||
flagl0=0
|
||||
flagm0=0
|
||||
tflag0=0
|
||||
posx0=50
|
||||
posy0=50
|
||||
sizx0=800
|
||||
sizy0=600
|
||||
maxfps0=0
|
||||
initts0=0
|
||||
winver0=0
|
||||
maxres0=-1
|
||||
swapeffect0=0
|
28
build/exports/Nox (RIP).dxw
Normal file
28
build/exports/Nox (RIP).dxw
Normal file
@ -0,0 +1,28 @@
|
||||
[target]
|
||||
title0=Nox (RIP)
|
||||
path0=D:\Games\Nox RIP\GAME.EXE
|
||||
launchpath0=
|
||||
module0=
|
||||
opengllib0=
|
||||
notes0=
|
||||
registry0=
|
||||
ver0=0
|
||||
coord0=2
|
||||
flag0=681574434
|
||||
flagg0=1207959568
|
||||
flagh0=20
|
||||
flagi0=138412036
|
||||
flagj0=5248
|
||||
flagk0=65536
|
||||
flagl0=0
|
||||
flagm0=0
|
||||
tflag0=0
|
||||
posx0=50
|
||||
posy0=50
|
||||
sizx0=800
|
||||
sizy0=600
|
||||
maxfps0=0
|
||||
initts0=0
|
||||
winver0=0
|
||||
maxres0=-1
|
||||
swapeffect0=0
|
@ -1010,3 +1010,16 @@ add: DirectInput / "Emulate mouse relative movement". Eliminates the fake clippe
|
||||
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 doesn'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 startup error in "Storm Angel"
|
||||
fix: fixed GetWindowRect to replace real desktop with virtual one - fix startup error in "Storm Angel"
|
||||
fix: ddraw hookers keep different original pointers for each interface: fixes several ddraw UNKNOWN_ERROR
|
||||
fix: eliminated the ddraw full log functionality, because of the increased complexity
|
||||
add: added several supported fake screen resolutions - needed for "Last resort" SWAT3 mod
|
||||
fix: used fake resolutions also in USER32 EnumDisplaySettings
|
||||
fix: avoid hooking directinput dlls if not requested when loaded dynamically
|
||||
fix: added recovery of lost device in DirectInput GetDeviceData method
|
||||
fix: changed SetHook so that it can get function pointers without necessarily replacing them
|
||||
add: option "Limit ddraw interface" to exclude support for IDirectDrawInterface greater than limit (range 1-7)
|
2182
dll/ddproxy.cpp
2182
dll/ddproxy.cpp
File diff suppressed because it is too large
Load Diff
101
dll/ddproxy.h
101
dll/ddproxy.h
@ -1,101 +0,0 @@
|
||||
// DirectDraw Proxed APIs
|
||||
|
||||
extern HRESULT WINAPI extDirectDrawCreateProxy(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, IUnknown FAR *pu);
|
||||
extern HRESULT WINAPI extDirectDrawCreateExProxy(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, REFIID RefIid, IUnknown FAR *pu);
|
||||
extern HRESULT WINAPI extDirectDrawEnumerateProxy(LPDDENUMCALLBACK, LPVOID);
|
||||
extern HRESULT WINAPI extDirectDrawEnumerateExProxy(LPDDENUMCALLBACKEX, LPVOID, DWORD);
|
||||
|
||||
// DirectDraw Surface Proxed methods
|
||||
|
||||
extern HRESULT WINAPI extQueryInterfaceSProxy(void *, REFIID, LPVOID *);
|
||||
extern ULONG WINAPI extAddRefSProxy(LPDIRECTDRAWSURFACE);
|
||||
extern HRESULT WINAPI extReleaseSProxy(LPDIRECTDRAWSURFACE);
|
||||
extern HRESULT WINAPI extAddOverlayDirtyRectProxy(LPDIRECTDRAWSURFACE, LPRECT);
|
||||
extern HRESULT WINAPI extBltBatchProxy(LPDIRECTDRAWSURFACE, LPDDBLTBATCH, DWORD, DWORD);
|
||||
extern HRESULT WINAPI extEnumOverlayZOrdersProxy(LPDIRECTDRAWSURFACE, DWORD, LPVOID, LPDDENUMSURFACESCALLBACK);
|
||||
extern HRESULT WINAPI extFlipProxy(LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE, DWORD);
|
||||
extern HRESULT WINAPI extGetBltStatusProxy(LPDIRECTDRAWSURFACE , DWORD);
|
||||
extern HRESULT WINAPI extGetClipperProxy(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPER FAR*);
|
||||
extern HRESULT WINAPI extGetFlipStatusProxy(LPDIRECTDRAWSURFACE, DWORD);
|
||||
extern HRESULT WINAPI extGetOverlayPositionProxy(LPDIRECTDRAWSURFACE, LPLONG, LPLONG);
|
||||
extern HRESULT WINAPI extIsLostProxy(LPDIRECTDRAWSURFACE);
|
||||
extern HRESULT WINAPI extLockProxy(LPDIRECTDRAWSURFACE, LPRECT, LPDDSURFACEDESC, DWORD, HANDLE);
|
||||
extern HRESULT WINAPI extRestoreProxy(LPDIRECTDRAWSURFACE);
|
||||
extern HRESULT WINAPI extSetOverlayPositionProxy(LPDIRECTDRAWSURFACE, LONG, LONG);
|
||||
extern HRESULT WINAPI extUnlock1Proxy(LPDIRECTDRAWSURFACE, LPVOID);
|
||||
extern HRESULT WINAPI extUnlock4Proxy(LPDIRECTDRAWSURFACE, LPRECT);
|
||||
extern HRESULT WINAPI extUpdateOverlayProxy(LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, DWORD, LPDDOVERLAYFX);
|
||||
extern HRESULT WINAPI extUpdateOverlayDisplayProxy(LPDIRECTDRAWSURFACE, DWORD);
|
||||
extern HRESULT WINAPI extUpdateOverlayZOrderProxy(LPDIRECTDRAWSURFACE, DWORD, LPDIRECTDRAWSURFACE);
|
||||
extern HRESULT WINAPI extFlipProxy(LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE, DWORD);
|
||||
extern HRESULT WINAPI extBltBatchProxy(LPDIRECTDRAWSURFACE, LPDDBLTBATCH, DWORD, DWORD);
|
||||
extern HRESULT WINAPI extGetAttachedSurface1Proxy(LPDIRECTDRAWSURFACE, LPDDSCAPS, LPDIRECTDRAWSURFACE *);
|
||||
extern HRESULT WINAPI extGetAttachedSurface3Proxy(LPDIRECTDRAWSURFACE, LPDDSCAPS, LPDIRECTDRAWSURFACE *);
|
||||
extern HRESULT WINAPI extGetAttachedSurface4Proxy(LPDIRECTDRAWSURFACE, LPDDSCAPS, LPDIRECTDRAWSURFACE *);
|
||||
extern HRESULT WINAPI extGetAttachedSurface7Proxy(LPDIRECTDRAWSURFACE, LPDDSCAPS, LPDIRECTDRAWSURFACE *);
|
||||
extern HRESULT WINAPI extAddAttachedSurfaceProxy(LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE);
|
||||
extern HRESULT WINAPI extBltProxy(LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, DWORD, LPDDBLTFX);
|
||||
extern HRESULT WINAPI extBltFastProxy(LPDIRECTDRAWSURFACE, DWORD, DWORD, LPDIRECTDRAWSURFACE, LPRECT, DWORD);
|
||||
extern HRESULT WINAPI extDeleteAttachedSurfaceProxy(LPDIRECTDRAWSURFACE, DWORD, LPDIRECTDRAWSURFACE);
|
||||
extern HRESULT WINAPI extEnumAttachedSurfacesProxy(LPDIRECTDRAWSURFACE, LPVOID, LPDDENUMSURFACESCALLBACK);
|
||||
extern HRESULT WINAPI extGetCaps1SProxy(LPDIRECTDRAWSURFACE, LPDDSCAPS);
|
||||
extern HRESULT WINAPI extGetCaps2SProxy(LPDIRECTDRAWSURFACE, LPDDSCAPS);
|
||||
extern HRESULT WINAPI extGetCaps3SProxy(LPDIRECTDRAWSURFACE, LPDDSCAPS);
|
||||
extern HRESULT WINAPI extGetCaps4SProxy(LPDIRECTDRAWSURFACE, LPDDSCAPS2);
|
||||
extern HRESULT WINAPI extGetCaps7SProxy(LPDIRECTDRAWSURFACE, LPDDSCAPS2);
|
||||
extern HRESULT WINAPI extGetColorKeyProxy(LPDIRECTDRAWSURFACE, DWORD, LPDDCOLORKEY);
|
||||
extern HRESULT WINAPI extGetDCProxy(LPDIRECTDRAWSURFACE, HDC FAR *);
|
||||
extern HRESULT WINAPI extGetPaletteProxy(LPDIRECTDRAWSURFACE, LPDIRECTDRAWPALETTE *);
|
||||
extern HRESULT WINAPI extGetPixelFormatProxy(LPDIRECTDRAWSURFACE, LPDDPIXELFORMAT);
|
||||
extern HRESULT WINAPI extReleaseDCProxy(LPDIRECTDRAWSURFACE, HDC FAR);
|
||||
extern HRESULT WINAPI extSetClipperProxy(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPER);
|
||||
extern HRESULT WINAPI extSetColorKeyProxy(LPDIRECTDRAWSURFACE, DWORD, LPDDCOLORKEY);
|
||||
extern HRESULT WINAPI extSetPaletteProxy(LPDIRECTDRAWSURFACE, LPDIRECTDRAWPALETTE);
|
||||
|
||||
extern HRESULT WINAPI extGetSurfaceDesc1Proxy(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC);
|
||||
extern HRESULT WINAPI extGetSurfaceDesc4Proxy(LPDIRECTDRAWSURFACE2, LPDDSURFACEDESC2);
|
||||
|
||||
// DirectDraw Proxed methods
|
||||
|
||||
extern ULONG WINAPI extAddRefDProxy(LPDIRECTDRAW);
|
||||
extern ULONG WINAPI extCompactProxy(LPDIRECTDRAW);
|
||||
extern HRESULT WINAPI extEnumDisplayModesProxy(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK);
|
||||
extern HRESULT WINAPI extGetCaps1D(LPDIRECTDRAW, LPDDCAPS, LPDDCAPS);
|
||||
extern HRESULT WINAPI extGetCaps2D(LPDIRECTDRAW, LPDDCAPS, LPDDCAPS);
|
||||
extern HRESULT WINAPI extGetCaps4D(LPDIRECTDRAW, LPDDCAPS, LPDDCAPS);
|
||||
extern HRESULT WINAPI extGetCaps7D(LPDIRECTDRAW, LPDDCAPS, LPDDCAPS);
|
||||
extern HRESULT WINAPI extGetFourCCCodesProxy(LPDIRECTDRAW, LPDWORD, LPDWORD);
|
||||
extern HRESULT WINAPI extGetMonitorFrequencyProxy(LPDIRECTDRAW, LPDWORD);
|
||||
extern HRESULT WINAPI extGetScanLineProxy(LPDIRECTDRAW, LPDWORD);
|
||||
extern HRESULT WINAPI extGetVerticalBlankStatusProxy(LPDIRECTDRAW, LPBOOL);
|
||||
extern HRESULT WINAPI extRestoreDisplayModeProxy(LPDIRECTDRAW);
|
||||
extern HRESULT WINAPI extGetAvailableVidMemProxy(LPDIRECTDRAW, LPDDSCAPS, LPDWORD, LPDWORD);
|
||||
extern HRESULT WINAPI extGetSurfaceFromDCProxy(LPDIRECTDRAW, HDC, LPDIRECTDRAWSURFACE*);
|
||||
extern HRESULT WINAPI extRestoreAllSurfacesProxy(LPDIRECTDRAW);
|
||||
extern HRESULT WINAPI extGetDeviceIdentifierProxy(LPDIRECTDRAW, LPDDDEVICEIDENTIFIER, DWORD);
|
||||
extern HRESULT WINAPI extGetFourCCCodesProxy(LPDIRECTDRAW, LPDWORD, LPDWORD);
|
||||
extern HRESULT WINAPI extTestCooperativeLevelProxy(LPDIRECTDRAW);
|
||||
extern HRESULT WINAPI extEnumSurfacesProxy1(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMSURFACESCALLBACK);
|
||||
extern HRESULT WINAPI extEnumSurfacesProxy4(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMSURFACESCALLBACK2);
|
||||
extern HRESULT WINAPI extInitializeProxy(LPDIRECTDRAW, GUID FAR *);
|
||||
|
||||
// DirectDraw Clipper Proxed methods
|
||||
|
||||
extern HRESULT WINAPI extQueryInterfaceCProxy(void *, REFIID, LPVOID *);
|
||||
extern HRESULT WINAPI extAddRefCProxy(LPDIRECTDRAWCLIPPER);
|
||||
extern HRESULT WINAPI extReleaseCProxy(LPDIRECTDRAWCLIPPER);
|
||||
extern HRESULT WINAPI extGetClipListProxy(LPDIRECTDRAWCLIPPER, LPRECT, LPRGNDATA, LPDWORD);
|
||||
extern HRESULT WINAPI extGetHWndProxy(LPDIRECTDRAWCLIPPER, HWND FAR *);
|
||||
extern HRESULT WINAPI extInitializeCProxy(LPDIRECTDRAWCLIPPER, LPDIRECTDRAW, DWORD);
|
||||
extern HRESULT WINAPI extIsClipListChangedProxy(LPDIRECTDRAWCLIPPER, BOOL FAR *);
|
||||
extern HRESULT WINAPI extSetClipListProxy(LPDIRECTDRAWCLIPPER, LPRGNDATA, DWORD);
|
||||
extern HRESULT WINAPI extSetHWndProxy(LPDIRECTDRAWCLIPPER, DWORD, HWND);
|
||||
|
||||
// DirectDraw Palette Proxed methods
|
||||
|
||||
extern HRESULT WINAPI extQueryInterfacePProxy(void *, REFIID, LPVOID *);
|
||||
extern HRESULT WINAPI extAddRefPProxy(LPDIRECTDRAWPALETTE);
|
||||
extern HRESULT WINAPI extReleasePProxy(LPDIRECTDRAWPALETTE);
|
||||
extern HRESULT WINAPI extGetCapsPProxy(LPDIRECTDRAWPALETTE, LPDWORD);
|
||||
extern HRESULT WINAPI extGetEntriesProxy(LPDIRECTDRAWPALETTE, DWORD, DWORD, DWORD, LPPALETTEENTRY);
|
||||
extern HRESULT WINAPI extSetEntriesProxy(LPDIRECTDRAWPALETTE, DWORD, DWORD, DWORD, LPPALETTEENTRY);
|
278
dll/ddraw.cpp
278
dll/ddraw.cpp
@ -13,7 +13,6 @@
|
||||
#include "dxwcore.hpp"
|
||||
#include "stdio.h"
|
||||
#include "hddraw.h"
|
||||
#include "ddproxy.h"
|
||||
#include "dxhelper.h"
|
||||
#include "syslibs.h"
|
||||
|
||||
@ -35,13 +34,20 @@ HRESULT WINAPI extDirectDrawEnumerateEx(LPDDENUMCALLBACKEX, LPVOID, DWORD);
|
||||
HRESULT WINAPI extDirectDrawCreateClipper(DWORD, LPDIRECTDRAWCLIPPER *, IUnknown *);
|
||||
|
||||
// DirectDraw
|
||||
HRESULT WINAPI extQueryInterfaceD(void *, REFIID, LPVOID *);
|
||||
ULONG WINAPI extReleaseD(LPDIRECTDRAW);
|
||||
HRESULT WINAPI extQueryInterfaceD1(void *, REFIID, LPVOID *);
|
||||
HRESULT WINAPI extQueryInterfaceD2(void *, REFIID, LPVOID *);
|
||||
HRESULT WINAPI extQueryInterfaceD4(void *, REFIID, LPVOID *);
|
||||
HRESULT WINAPI extQueryInterfaceD7(void *, REFIID, LPVOID *);
|
||||
ULONG WINAPI extReleaseD1(LPDIRECTDRAW);
|
||||
ULONG WINAPI extReleaseD2(LPDIRECTDRAW);
|
||||
ULONG WINAPI extReleaseD4(LPDIRECTDRAW);
|
||||
ULONG WINAPI extReleaseD7(LPDIRECTDRAW);
|
||||
/*** IDirectDraw methods ***/
|
||||
HRESULT WINAPI extCreateClipper(LPDIRECTDRAW, DWORD, LPDIRECTDRAWCLIPPER FAR* , IUnknown FAR*);
|
||||
HRESULT WINAPI extCreatePalette(LPDIRECTDRAW, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown *);
|
||||
HRESULT WINAPI extCreateSurface1(LPDIRECTDRAW, DDSURFACEDESC *, LPDIRECTDRAWSURFACE *, void *);
|
||||
HRESULT WINAPI extCreateSurface2(LPDIRECTDRAW, DDSURFACEDESC *, LPDIRECTDRAWSURFACE *, void *);
|
||||
HRESULT WINAPI extCreateSurface3(LPDIRECTDRAW, DDSURFACEDESC *, LPDIRECTDRAWSURFACE *, void *);
|
||||
HRESULT WINAPI extCreateSurface4(LPDIRECTDRAW, DDSURFACEDESC2 *, LPDIRECTDRAWSURFACE *, void *);
|
||||
HRESULT WINAPI extCreateSurface7(LPDIRECTDRAW, DDSURFACEDESC2 *, LPDIRECTDRAWSURFACE *, void *);
|
||||
HRESULT WINAPI extDuplicateSurface(LPDIRECTDRAW, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE *);
|
||||
@ -120,6 +126,7 @@ HRESULT WINAPI extSetSurfaceDesc(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, DWORD);
|
||||
// DirectDrawClipper
|
||||
HRESULT WINAPI extReleaseC(LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI extGetClipList(LPDIRECTDRAWCLIPPER, LPRECT, LPRGNDATA, LPDWORD);
|
||||
HRESULT WINAPI extSetHWnd(LPDIRECTDRAWCLIPPER, DWORD, HWND);
|
||||
|
||||
// DirectDrawPalette
|
||||
HRESULT WINAPI extReleaseP(LPDIRECTDRAWPALETTE);
|
||||
@ -143,9 +150,15 @@ DirectDrawEnumerateEx_Type pDirectDrawEnumerateEx = NULL;
|
||||
DirectDrawCreateClipper_Type pDirectDrawCreateClipper = NULL;
|
||||
|
||||
/* DirectDraw hook pointers */
|
||||
QueryInterface_Type pQueryInterfaceD;
|
||||
QueryInterface_Type pQueryInterfaceD1;
|
||||
QueryInterface_Type pQueryInterfaceD2;
|
||||
QueryInterface_Type pQueryInterfaceD4;
|
||||
QueryInterface_Type pQueryInterfaceD7;
|
||||
AddRefD_Type pAddRefD;
|
||||
ReleaseD_Type pReleaseD;
|
||||
ReleaseD_Type pReleaseD1 = NULL;
|
||||
ReleaseD_Type pReleaseD2 = NULL;
|
||||
ReleaseD_Type pReleaseD4 = NULL;
|
||||
ReleaseD_Type pReleaseD7 = NULL;
|
||||
Compact_Type pCompact;
|
||||
CreateClipper_Type pCreateClipper=NULL;
|
||||
CreatePalette_Type pCreatePalette;
|
||||
@ -1016,26 +1029,33 @@ void HookDDSession(LPDIRECTDRAW *lplpdd, int dxversion)
|
||||
OutTraceDW("Hooking directdraw session dd=%x dxversion=%d thread_id=%x\n",
|
||||
*lplpdd, dxversion, GetCurrentThreadId());
|
||||
|
||||
// IDIrectDraw::QueryInterface
|
||||
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD, (void **)&pQueryInterfaceD, "QueryInterface(D)");
|
||||
// IDIrectDraw::Release
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD, (void **)&pReleaseD, "Release(D)");
|
||||
// IDIrectDraw::CreateClipper
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 16), extCreateClipper, (void **)&pCreateClipper, "CreateClipper(D)");
|
||||
// IDIrectDraw::CreatePalette
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 20), extCreatePalette, (void **)&pCreatePalette, "CreatePalette(D)");
|
||||
// IDIrectDraw::QueryInterface
|
||||
// IDIrectDraw::CreateSurface
|
||||
// IDIrectDraw::Release
|
||||
switch(dxversion) {
|
||||
default:
|
||||
case 1:
|
||||
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD1, (void **)&pQueryInterfaceD1, "QueryInterface(D1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD1, (void **)&pReleaseD1, "Release(D1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface1, (void **)&pCreateSurface1, "CreateSurface(S1)");
|
||||
break;
|
||||
case 2:
|
||||
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD2, (void **)&pQueryInterfaceD2, "QueryInterface(D2)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD2, (void **)&pReleaseD2, "Release(D2)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface2, (void **)&pCreateSurface2, "CreateSurface(S2)");
|
||||
break;
|
||||
case 4:
|
||||
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD4, (void **)&pQueryInterfaceD4, "QueryInterface(D4)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD4, (void **)&pReleaseD4, "Release(D4)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface4, (void **)&pCreateSurface4, "CreateSurface(S4)");
|
||||
break;
|
||||
case 7:
|
||||
SetHook((void *)(**(DWORD **)lplpdd), extQueryInterfaceD7, (void **)&pQueryInterfaceD7, "QueryInterface(D7)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 8), extReleaseD7, (void **)&pReleaseD7, "Release(D7)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 24), extCreateSurface7, (void **)&pCreateSurface7, "CreateSurface(S7)");
|
||||
break;
|
||||
}
|
||||
@ -1099,37 +1119,6 @@ void HookDDSession(LPDIRECTDRAW *lplpdd, int dxversion)
|
||||
// IDIrectDraw::TestCooperativeLevel
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 104), extTestCooperativeLevel, (void **)&pTestCooperativeLevel, "TestCooperativeLevel(D)");
|
||||
}
|
||||
|
||||
if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
// Just proxed ...
|
||||
|
||||
// IDIrectDraw::AddRef
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 4), extAddRefDProxy, (void **)&pAddRefD, "AddRef(D)");
|
||||
// IDIrectDraw::Compact
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 12), extCompactProxy, (void **)&pCompact, "Compact(D)");
|
||||
// IDIrectDraw::EnumSurfaces
|
||||
if (dxversion < 4)
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 36), extEnumSurfacesProxy1, (void **)&pEnumSurfaces1, "EnumSurfaces(D1)");
|
||||
else
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 36), extEnumSurfacesProxy4, (void **)&pEnumSurfaces4, "EnumSurfaces(D4)");
|
||||
// IDIrectDraw::GetFourCCCodes
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 52), extGetFourCCCodesProxy, (void **)&pGetFourCCCodes, "GetFourCCCodes(D)");
|
||||
// IDIrectDraw::GetMonitorFrequency
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 60), extGetMonitorFrequencyProxy, (void **)&pGetMonitorFrequency, "GetMonitorFrequency(D)");
|
||||
// IDIrectDraw::GetScanLine
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 64), extGetScanLineProxy, (void **)&pGetScanLine, "GetScanLine(D)");
|
||||
// IDIrectDraw::GetVerticalBlankStatus
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 68), extGetVerticalBlankStatusProxy, (void **)&pGetVerticalBlankStatus, "GetVerticalBlankStatus(D)");
|
||||
// IDIrectDraw::RestoreDisplayMode
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 76), extRestoreDisplayModeProxy, (void **)&pRestoreDisplayMode, "RestoreDisplayMode(D)");
|
||||
if (dxversion >= 4){
|
||||
// IDIrectDraw::GetSurfaceFromDC
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 96), extGetSurfaceFromDCProxy, (void **)&pGetSurfaceFromDC, "GetSurfaceFromDC(D)");
|
||||
// IDIrectDraw::RestoreAllSurfaces
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 100), extRestoreAllSurfacesProxy, (void **)&pRestoreAllSurfaces, "RestoreAllSurfaces(D)");
|
||||
// IDIrectDraw::GetDeviceIdentifier
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 108), extGetDeviceIdentifierProxy, (void **)&pGetDeviceIdentifier, "GetDeviceIdentifier(D)");
|
||||
}
|
||||
}
|
||||
|
||||
static void HookDDClipper(LPDIRECTDRAWCLIPPER FAR* lplpDDClipper)
|
||||
@ -1141,25 +1130,7 @@ static void HookDDClipper(LPDIRECTDRAWCLIPPER FAR* lplpDDClipper)
|
||||
// IDirectDrawClipper::GetClipList
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 12), extGetClipList, (void **)&pGetClipList, "GetClipList(C)");
|
||||
// IDirectDrawClipper::SetHWnd
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 32), extSetHWndProxy, (void **)&pSetHWnd, "SetHWnd(C)");
|
||||
|
||||
if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
// Just proxed ...
|
||||
|
||||
// IDirectDrawClipper::QueryInterface
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper), extQueryInterfaceCProxy, (void **)&pQueryInterfaceC, "QueryInterface(C)");
|
||||
// IDirectDrawClipper::AddRef
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 4), extAddRefCProxy, (void **)&pAddRefC, "AddRef(C)");
|
||||
// IDirectDrawClipper::GetHWnd
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 16), extGetHWndProxy, (void **)&pGetHWnd, "GetHWnd(C)");
|
||||
// IDirectDrawClipper::Initialize
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 20), extInitializeCProxy, (void **)&pInitializeC, "Initialize(C)");
|
||||
// IDirectDrawClipper::IsClipListChanged
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 24), extIsClipListChangedProxy, (void **)&pIsClipListChanged, "IsClipListChanged(C)");
|
||||
// IDirectDrawClipper::SetClipList
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 28), extSetClipListProxy, (void **)&pSetClipList, "SetClipList(C)");
|
||||
|
||||
return;
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 32), extSetHWnd, (void **)&pSetHWnd, "SetHWnd(C)");
|
||||
}
|
||||
|
||||
static void HookDDPalette(LPDIRECTDRAWPALETTE FAR* lplpDDPalette)
|
||||
@ -1171,19 +1142,6 @@ static void HookDDPalette(LPDIRECTDRAWPALETTE FAR* lplpDDPalette)
|
||||
SetHook((void *)(**(DWORD **)lplpDDPalette + 8), extReleaseP, (void **)&pReleaseP, "Release(P)");
|
||||
// IDirectDrawPalette::SetEntries
|
||||
SetHook((void *)(**(DWORD **)lplpDDPalette + 24), extSetEntries, (void **)&pSetEntries, "SetEntries(P)");
|
||||
|
||||
if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
|
||||
// IDirectDrawPalette::QueryInterface
|
||||
SetHook((void *)(**(DWORD **)lplpDDPalette), extQueryInterfacePProxy, (void **)&pQueryInterfaceP, "QueryInterface(P)");
|
||||
// IDirectDrawPalette::AddRef
|
||||
SetHook((void *)(**(DWORD **)lplpDDPalette + 4), extAddRefPProxy, (void **)&pAddRefP, "AddRef(P)");
|
||||
// IDirectDrawPalette::GetCaps
|
||||
SetHook((void *)(**(DWORD **)lplpDDPalette + 12), extGetCapsPProxy, (void **)&pGetCapsP, "GetCaps(P)");
|
||||
// IDirectDrawPalette::GetEntries
|
||||
SetHook((void *)(**(DWORD **)lplpDDPalette + 16), extGetEntriesProxy, (void **)&pGetEntries, "GetEntries(P)");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void HookDDSurfacePrim(LPDIRECTDRAWSURFACE *lplpdds, int dxversion)
|
||||
@ -1285,39 +1243,6 @@ static void HookDDSurfacePrim(LPDIRECTDRAWSURFACE *lplpdds, int dxversion)
|
||||
else
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 128), extUnlockDir4, (void **)&pUnlock4, "Unlock(S4)");
|
||||
}
|
||||
|
||||
if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
|
||||
// Just proxed ...
|
||||
|
||||
// IDirectDrawSurface::AddRef
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 4), extAddRefSProxy, (void **)&pAddRefS, "AddRef(S)");
|
||||
// IDirectDrawSurface::AddOverlayDirtyRect
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 16), extAddOverlayDirtyRectProxy, (void **)&pAddOverlayDirtyRect, "AddOverlayDirtyRect(S)");
|
||||
// IDirectDrawSurface::BltBatch
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 24), extBltBatchProxy, (void **)&pBltBatch, "BltBatch(S)");
|
||||
// IDirectDrawSurface::EnumOverlayZOrders
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 40), extEnumOverlayZOrdersProxy, (void **)&pEnumOverlayZOrders, "EnumOverlayZOrders(S)");
|
||||
// IDirectDrawSurface::GetBltStatus
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 52), extGetBltStatusProxy, (void **)&pGetBltStatus, "GetBltStatus(S)");
|
||||
// IDirectDrawSurface::GetClipper
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 60), extGetClipperProxy, (void **)&pGetClipper, "GetClipper(S)");
|
||||
// IDirectDrawSurface::GetFlipStatus
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 72), extGetFlipStatusProxy, (void **)&pGetFlipStatus, "GetFlipStatus(S)");
|
||||
// IDirectDrawSurface::GetOverlayPosition
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 76), extGetOverlayPositionProxy, (void **)&pGetOverlayPosition, "GetOverlayPosition(S)");
|
||||
// IDirectDrawSurface::IsLost
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 96), extIsLostProxy, (void **)&pIsLost, "IsLost(S)");
|
||||
// IDirectDrawSurface::Restore
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 108), extRestoreProxy, (void **)&pRestore, "Restore(S)");
|
||||
// IDirectDrawSurface::SetOverlayPosition
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 120), extSetOverlayPositionProxy, (void **)&pSetOverlayPosition, "SetOverlayPosition(S)");
|
||||
// IDirectDrawSurface::UpdateOverlay
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 132), extUpdateOverlayProxy, (void **)&pUpdateOverlay, "UpdateOverlay(S)");
|
||||
// IDirectDrawSurface::UpdateOverlayDisplay
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 136), extUpdateOverlayDisplayProxy, (void **)&pUpdateOverlayDisplay, "UpdateOverlayDisplay(S)");
|
||||
// IDirectDrawSurface::UpdateOverlayZOrder
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 140), extUpdateOverlayZOrderProxy, (void **)&pUpdateOverlayZOrder, "UpdateOverlayZOrder(S)");
|
||||
}
|
||||
|
||||
static void HookDDSurfaceGeneric(LPDIRECTDRAWSURFACE *lplpdds, int dxversion)
|
||||
@ -1403,48 +1328,6 @@ static void HookDDSurfaceGeneric(LPDIRECTDRAWSURFACE *lplpdds, int dxversion)
|
||||
else
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 128), extUnlockDir4, (void **)&pUnlock4, "Unlock(S4)");
|
||||
}
|
||||
|
||||
if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
|
||||
// just proxed ....
|
||||
|
||||
// IDirectDrawSurface::AddRef
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 4), extAddRefSProxy, (void **)&pAddRefS, "AddRef(S)");
|
||||
// IDirectDrawSurface::AddOverlayDirtyRect
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 16), extAddOverlayDirtyRectProxy, (void **)&pAddOverlayDirtyRect, "AddOverlayDirtyRect(S)");
|
||||
// IDirectDrawSurface::BltBatch
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 24), extBltBatchProxy, (void **)&pBltBatch, "BltBatch(S)");
|
||||
// IDirectDrawSurface::EnumAttachedSurfaces
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 36), extEnumAttachedSurfaces, (void **)&pEnumAttachedSurfaces, "EnumAttachedSurfaces(S)");
|
||||
// IDirectDrawSurface::EnumOverlayZOrders
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 40), extEnumOverlayZOrdersProxy, (void **)&pEnumOverlayZOrders, "EnumOverlayZOrders(S)");
|
||||
// IDirectDrawSurface::GetBltStatus
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 52), extGetBltStatusProxy, (void **)&pGetBltStatus, "GetBltStatus(S)");
|
||||
// IDirectDrawSurface::GetClipper
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 60), extGetClipperProxy, (void **)&pGetClipper, "GetClipper(S)");
|
||||
// IDirectDrawSurface::GetFlipStatus
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 72), extGetFlipStatusProxy, (void **)&pGetFlipStatus, "GetFlipStatus(S)");
|
||||
// IDirectDrawSurface::GetOverlayPosition
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 76), extGetOverlayPositionProxy, (void **)&pGetOverlayPosition, "GetOverlayPosition(S)");
|
||||
// IDirectDrawSurface::IsLost
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 96), extIsLostProxy, (void **)&pIsLost, "IsLost(S)");
|
||||
// IDirectDrawSurface::Lock
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 100), extLock, (void **)&pLock, "Lock(S)");
|
||||
// IDirectDrawSurface::Restore
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 108), extRestoreProxy, (void **)&pRestore, "Restore(S)");
|
||||
// IDirectDrawSurface::SetOverlayPosition
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 120), extSetOverlayPositionProxy, (void **)&pSetOverlayPosition, "SetOverlayPosition(S)");
|
||||
// IDirectDrawSurface::Unlock
|
||||
if (dxversion < 4)
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 128), extUnlock1, (void **)&pUnlock1, "Unlock(S1)");
|
||||
else
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 128), extUnlock4, (void **)&pUnlock4, "Unlock(S4)");
|
||||
// IDirectDrawSurface::UpdateOverlay
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 132), extUpdateOverlayProxy, (void **)&pUpdateOverlay, "UpdateOverlay(S)");
|
||||
// IDirectDrawSurface::UpdateOverlayDisplay
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 136), extUpdateOverlayDisplayProxy, (void **)&pUpdateOverlayDisplay, "UpdateOverlayDisplay(S)");
|
||||
// IDirectDrawSurface::UpdateOverlayZOrder
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 140), extUpdateOverlayZOrderProxy, (void **)&pUpdateOverlayZOrder, "UpdateOverlayZOrder(S)");
|
||||
if (dxversion == 7)
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 156), extSetSurfaceDesc, (void **)&pSetSurfaceDesc, "SetSurfaceDesc(S3)");
|
||||
|
||||
@ -1693,7 +1576,7 @@ HRESULT WINAPI extDirectDrawCreate(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, I
|
||||
|
||||
//if(dxw.dwDDVersion==1) (*lplpdd)->AddRef(); // seems to fix problems in "Warhammer 40K Rites Of War"
|
||||
|
||||
if(IsDebug && (dxw.dwTFlags & OUTPROXYTRACE)){
|
||||
if(IsDebug){
|
||||
DDCAPS DriverCaps, EmulCaps;
|
||||
memset(&DriverCaps, 0, sizeof(DriverCaps));
|
||||
DriverCaps.dwSize=sizeof(DriverCaps);
|
||||
@ -1766,7 +1649,7 @@ HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *lpguid,
|
||||
|
||||
HookDDSession(lplpdd, dxw.dwDDVersion);
|
||||
|
||||
if(IsDebug && (dxw.dwTFlags & OUTPROXYTRACE)){
|
||||
if(IsDebug){
|
||||
DDCAPS DriverCaps, EmulCaps;
|
||||
memset(&DriverCaps, 0, sizeof(DriverCaps));
|
||||
DriverCaps.dwSize=sizeof(DriverCaps);
|
||||
@ -1799,7 +1682,7 @@ HRESULT WINAPI extInitialize(LPDIRECTDRAW lpdd, GUID FAR *lpguid)
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extQueryInterfaceD(void *lpdd, REFIID riid, LPVOID *obp)
|
||||
HRESULT WINAPI extQueryInterfaceD(QueryInterface_Type pQueryInterfaceD, void *lpdd, REFIID riid, LPVOID *obp)
|
||||
{
|
||||
HRESULT res;
|
||||
unsigned int dwLocalDDVersion;
|
||||
@ -1880,6 +1763,18 @@ HRESULT WINAPI extQueryInterfaceD(void *lpdd, REFIID riid, LPVOID *obp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extQueryInterfaceD1(void *lpdd, REFIID riid, LPVOID *obp)
|
||||
{ return extQueryInterfaceD(pQueryInterfaceD1, lpdd, riid, obp); }
|
||||
|
||||
HRESULT WINAPI extQueryInterfaceD2(void *lpdd, REFIID riid, LPVOID *obp)
|
||||
{ return extQueryInterfaceD(pQueryInterfaceD2, lpdd, riid, obp); }
|
||||
|
||||
HRESULT WINAPI extQueryInterfaceD4(void *lpdd, REFIID riid, LPVOID *obp)
|
||||
{ return extQueryInterfaceD(pQueryInterfaceD4, lpdd, riid, obp); }
|
||||
|
||||
HRESULT WINAPI extQueryInterfaceD7(void *lpdd, REFIID riid, LPVOID *obp)
|
||||
{ return extQueryInterfaceD(pQueryInterfaceD7, lpdd, riid, obp); }
|
||||
|
||||
// some unhandled interfaces in emulation mode:
|
||||
// REFIID={84e63de0-46aa-11cf-816f-0000c020156e}: IID_IDirect3DHALDevice
|
||||
|
||||
@ -2438,7 +2333,7 @@ static void BuildRealSurfaces(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurfa
|
||||
OutTraceDW("CreateSurface: created new DDSEmu_Back=%x\n", lpDDSEmu_Back);
|
||||
if(IsDebug) DescribeSurface(lpDDSEmu_Back, dxversion, "DDSEmu_Back", __LINE__);
|
||||
dxwss.PopSurface(lpDDSEmu_Back);
|
||||
if (dxw.dwTFlags & OUTPROXYTRACE) HookDDSurfaceGeneric(&lpDDSEmu_Back, dxversion);
|
||||
//if (dxw.dwTFlags & OUTPROXYTRACE) HookDDSurfaceGeneric(&lpDDSEmu_Back, dxversion);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3175,24 +3070,19 @@ static HRESULT WINAPI extCreateSurface(int dxversion, CreateSurface_Type pCreate
|
||||
|
||||
|
||||
HRESULT WINAPI extCreateSurface1(LPDIRECTDRAW lpdd, DDSURFACEDESC *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
|
||||
{
|
||||
return extCreateSurface(1, (CreateSurface_Type)pCreateSurface1, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu);
|
||||
}
|
||||
{ return extCreateSurface(1, (CreateSurface_Type)pCreateSurface1, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
|
||||
|
||||
HRESULT WINAPI extCreateSurface2(LPDIRECTDRAW lpdd, DDSURFACEDESC *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
|
||||
{
|
||||
return extCreateSurface(2, (CreateSurface_Type)pCreateSurface2, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu);
|
||||
}
|
||||
{ return extCreateSurface(2, (CreateSurface_Type)pCreateSurface2, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
|
||||
|
||||
HRESULT WINAPI extCreateSurface3(LPDIRECTDRAW lpdd, DDSURFACEDESC *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
|
||||
{ return extCreateSurface(3, (CreateSurface_Type)pCreateSurface3, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
|
||||
|
||||
HRESULT WINAPI extCreateSurface4(LPDIRECTDRAW lpdd, DDSURFACEDESC2 *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
|
||||
{
|
||||
return extCreateSurface(4, (CreateSurface_Type)pCreateSurface4, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu);
|
||||
}
|
||||
{ return extCreateSurface(4, (CreateSurface_Type)pCreateSurface4, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
|
||||
|
||||
HRESULT WINAPI extCreateSurface7(LPDIRECTDRAW lpdd, DDSURFACEDESC2 *lpddsd, LPDIRECTDRAWSURFACE *lplpdds, void *pu)
|
||||
{
|
||||
return extCreateSurface(7, (CreateSurface_Type)pCreateSurface7, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu);
|
||||
}
|
||||
{ return extCreateSurface(7, (CreateSurface_Type)pCreateSurface7, lpdd, (DDSURFACEDESC2 *)lpddsd, lplpdds, pu); }
|
||||
|
||||
|
||||
HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGetAttachedSurface,
|
||||
@ -4465,38 +4355,6 @@ typedef struct {
|
||||
DWORD dwHeight;
|
||||
} NewContext_Type;
|
||||
|
||||
typedef struct {
|
||||
int w;
|
||||
int h;
|
||||
} SupportedRes_Type;
|
||||
|
||||
static SupportedRes_Type SupportedSVGARes[11]= {
|
||||
{320,200},
|
||||
{320,240},
|
||||
{512,384}, // needed by "Outcast" loading screen
|
||||
{640,400},
|
||||
{640,480},
|
||||
{720,480},
|
||||
{800,600},
|
||||
{1024,768}, // XGA
|
||||
{1280,800}, // WXGA
|
||||
{1600,1200}, // UXGA, needed by "LEGO Star Wars" in high res mode
|
||||
{0,0}
|
||||
};
|
||||
|
||||
static SupportedRes_Type SupportedHDTVRes[10]= {
|
||||
{640,360}, // nHD
|
||||
{720,480}, // DVD
|
||||
{720,576}, // DV-PAL
|
||||
{960,540}, // qHD
|
||||
{1176,1000},
|
||||
{1280,720}, // HD
|
||||
{1440,960},
|
||||
{1600,900}, // HD+
|
||||
{1920,1080}, // FHD
|
||||
{0,0}
|
||||
};
|
||||
|
||||
static BOOL CheckResolutionLimit(LPDDSURFACEDESC lpDDSurfaceDesc)
|
||||
{
|
||||
#define HUGE 100000
|
||||
@ -4986,14 +4844,13 @@ HRESULT WINAPI extGetCaps7S(LPDIRECTDRAWSURFACE lpdds, LPDDSCAPS2 caps)
|
||||
return extGetCapsS(7, (GetCapsS_Type)pGetCaps7S, lpdds, (LPDDSCAPS)caps);
|
||||
}
|
||||
|
||||
ULONG WINAPI extReleaseD(LPDIRECTDRAW lpdd)
|
||||
ULONG WINAPI extReleaseD(int dxversion, ReleaseD_Type pReleaseD, LPDIRECTDRAW lpdd)
|
||||
{
|
||||
ULONG ActualRef;
|
||||
LONG VirtualRef;
|
||||
int dxversion;
|
||||
|
||||
dxversion=lpddHookedVersion(lpdd); // must be called BEFORE releasing the session!!
|
||||
OutTraceDDRAW("Release(D): lpdd=%x dxversion=%d\n", lpdd, dxversion);
|
||||
OutTraceDDRAW("Release(D%d): lpdd=%x\n", dxversion, lpdd);
|
||||
if((ReleaseD_Type)extReleaseD == pReleaseD) return 0;
|
||||
|
||||
ActualRef=(*pReleaseD)(lpdd);
|
||||
VirtualRef=(LONG)ActualRef;
|
||||
@ -5032,6 +4889,18 @@ ULONG WINAPI extReleaseD(LPDIRECTDRAW lpdd)
|
||||
return (ULONG)VirtualRef;
|
||||
}
|
||||
|
||||
ULONG WINAPI extReleaseD1(LPDIRECTDRAW lpdd)
|
||||
{ return extReleaseD(1, pReleaseD1, lpdd); }
|
||||
|
||||
ULONG WINAPI extReleaseD2(LPDIRECTDRAW lpdd)
|
||||
{ return extReleaseD(2, pReleaseD2, lpdd); }
|
||||
|
||||
ULONG WINAPI extReleaseD4(LPDIRECTDRAW lpdd)
|
||||
{ return extReleaseD(4, pReleaseD4, lpdd); }
|
||||
|
||||
ULONG WINAPI extReleaseD7(LPDIRECTDRAW lpdd)
|
||||
{ return extReleaseD(7, pReleaseD7, lpdd); }
|
||||
|
||||
HRESULT WINAPI extCreateClipper(LPDIRECTDRAW lpdd, DWORD dwflags,
|
||||
LPDIRECTDRAWCLIPPER FAR* lplpDDClipper, IUnknown FAR* pUnkOuter)
|
||||
{
|
||||
@ -5109,6 +4978,15 @@ HRESULT WINAPI extGetClipList(LPDIRECTDRAWCLIPPER lpddClip, LPRECT lpRect, LPRGN
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extSetHWnd(LPDIRECTDRAWCLIPPER lpddClip, DWORD w, HWND hwnd)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceP("SetHWnd(C): lpddClip=%x w=%x hwnd=%x\n", lpddClip, w, hwnd);
|
||||
res=(*pSetHWnd)(lpddClip, w, hwnd);
|
||||
if(res) OutTraceP("SetHWnd(C): ERROR err=%x(%s)\n", res, ExplainDDError(res));
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetSurfaceDesc(GetSurfaceDesc_Type pGetSurfaceDesc, LPDIRECTDRAWSURFACE lpdds, LPDDSURFACEDESC lpddsd)
|
||||
{
|
||||
HRESULT res;
|
||||
@ -5453,4 +5331,4 @@ HRESULT WINAPI extDirectDrawCreateClipper(DWORD dwFlags, LPDIRECTDRAWCLIPPER *lp
|
||||
}
|
||||
HookDDClipper(lplpDDClipper);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
@ -147,14 +147,14 @@ void HookDirectInput8(HMODULE module)
|
||||
FARPROC Remap_DInput_ProcAddress(LPCSTR proc, HMODULE hModule)
|
||||
{
|
||||
FARPROC addr;
|
||||
if (addr=RemapLibrary(proc, hModule, diHooks)) return addr;
|
||||
if ((dxw.dwFlags1 & HOOKDI) && (addr=RemapLibrary(proc, hModule, diHooks))) return addr;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
FARPROC Remap_DInput8_ProcAddress(LPCSTR proc, HMODULE hModule)
|
||||
{
|
||||
FARPROC addr;
|
||||
if (addr=RemapLibrary(proc, hModule, di8Hooks)) return addr;
|
||||
if ((dxw.dwFlags1 & HOOKDI8) && (addr=RemapLibrary(proc, hModule, di8Hooks))) return addr;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -294,6 +294,7 @@ HRESULT WINAPI extDICreateDevice(LPDIRECTINPUT lpdi, REFGUID rguid, LPDIRECTINPU
|
||||
OutTraceE("CreateDevice(I): ERROR res=%x\n", res);
|
||||
return res;
|
||||
}
|
||||
|
||||
OutTraceDW("CreateDevice(I): did=%x\n", *lplpdid);
|
||||
SetHook((void *)(**(DWORD **)lplpdid + 28), extAcquire, (void **)&pAcquire, "Acquire(I)");
|
||||
SetHook((void *)(**(DWORD **)lplpdid + 32), extUnacquire, (void **)&pUnacquire, "Unacquire(I)");
|
||||
@ -370,6 +371,19 @@ HRESULT WINAPI extGetDeviceData(LPDIRECTINPUTDEVICE lpdid, DWORD cbdata, LPVOID
|
||||
lpdid, sDevice(lpdid), cbdata, rgdod, *pdwinout, dwflags);
|
||||
|
||||
res = (*pGetDeviceData)(lpdid, cbdata, rgdod, pdwinout, dwflags);
|
||||
|
||||
if (((res == DIERR_INPUTLOST) || (res == DIERR_NOTACQUIRED)) && RECOVERINPUTLOST){
|
||||
OutTraceE("GetDeviceState(I) recovering DIERR_INPUTLOST\n");
|
||||
if(lpdid == lpDIDSysMouse) {
|
||||
res = (*pDISetCooperativeLevel)(lpdid, dxw.GethWnd(), DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
|
||||
if(res) OutTraceE("GetDeviceState(I): SetCooperativeLevel ERROR: err=%x(%s)\n", res, ExplainDDError(res));
|
||||
if(dxw.dwFlags1 & CLIPCURSOR) dxw.SetClipCursor();
|
||||
}
|
||||
res = (*pAcquire)(lpdid);
|
||||
if(res) OutTraceE("GetDeviceState(I): Acquire ERROR: err=%x(%s)\n", res, ExplainDDError(res));
|
||||
res = (*pGetDeviceData)(lpdid, cbdata, rgdod, pdwinout, dwflags);
|
||||
}
|
||||
|
||||
switch(res){
|
||||
case DI_OK:
|
||||
break;
|
||||
@ -419,7 +433,7 @@ HRESULT WINAPI extGetDeviceData(LPDIRECTINPUTDEVICE lpdid, DWORD cbdata, LPVOID
|
||||
for(i = 0; i < *pdwinout; i ++){
|
||||
if(((LPDIDEVICEOBJECTDATA)tmp)->dwOfs == DIMOFS_X) OutTraceB("GetDeviceData(I): REL mousedata X=%d\n", ((LPDIDEVICEOBJECTDATA)tmp)->dwData);
|
||||
if(((LPDIDEVICEOBJECTDATA)tmp)->dwOfs == DIMOFS_Y) OutTraceB("GetDeviceData(I): REL mousedata Y=%d\n", ((LPDIDEVICEOBJECTDATA)tmp)->dwData);
|
||||
tmp += cbdata;
|
||||
tmp += cbdata;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -428,20 +442,22 @@ HRESULT WINAPI extGetDeviceData(LPDIRECTINPUTDEVICE lpdid, DWORD cbdata, LPVOID
|
||||
|
||||
HRESULT WINAPI extGetDeviceState(LPDIRECTINPUTDEVICE lpdid, DWORD cbdata, LPDIMOUSESTATE lpvdata)
|
||||
{
|
||||
HRESULT res;
|
||||
HRESULT res;
|
||||
POINT p = {0, 0};
|
||||
|
||||
OutTraceDW("GetDeviceState(I): did=%x(%s) cbData=%i,%i\n", lpdid, sDevice(lpdid), cbdata, dxw.bActive);
|
||||
|
||||
res = (*pGetDeviceState)(lpdid, cbdata, lpvdata);
|
||||
|
||||
if ((res == DIERR_INPUTLOST) && RECOVERINPUTLOST){
|
||||
if (((res == DIERR_INPUTLOST) || (res == DIERR_NOTACQUIRED)) && RECOVERINPUTLOST){
|
||||
OutTraceE("GetDeviceState(I) recovering DIERR_INPUTLOST\n");
|
||||
res = (*pDISetCooperativeLevel)(lpdid, dxw.GethWnd(), DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
|
||||
if(res) OutTraceE("GetDeviceState(I): SetCooperativeLevel ERROR: err=%x(%s)\n", res, ExplainDDError(res));
|
||||
if(lpdid == lpDIDSysMouse) {
|
||||
res = (*pDISetCooperativeLevel)(lpdid, dxw.GethWnd(), DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
|
||||
if(res) OutTraceE("GetDeviceState(I): SetCooperativeLevel ERROR: err=%x(%s)\n", res, ExplainDDError(res));
|
||||
if(dxw.dwFlags1 & CLIPCURSOR) dxw.SetClipCursor();
|
||||
}
|
||||
res = (*pAcquire)(lpdid);
|
||||
if(res) OutTraceE("GetDeviceState(I): Acquire ERROR: err=%x(%s)\n", res, ExplainDDError(res));
|
||||
if(dxw.dwFlags1 & CLIPCURSOR) dxw.SetClipCursor();
|
||||
res = (*pGetDeviceState)(lpdid, cbdata, lpvdata);
|
||||
}
|
||||
|
||||
@ -569,10 +585,9 @@ HRESULT WINAPI extDISetCooperativeLevel(LPDIRECTINPUTDEVICE lpdid, HWND hwnd, DW
|
||||
lpdid, sDevice(lpdid), hwnd, dwflags, ExplainDICooperativeFlags(dwflags));
|
||||
|
||||
if(dxw.IsRealDesktop(hwnd)) hwnd=dxw.GethWnd();
|
||||
//dwflags = DISCL_NONEXCLUSIVE | DISCL_BACKGROUND;
|
||||
|
||||
dwflags = DISCL_NONEXCLUSIVE | DISCL_FOREGROUND;
|
||||
hwnd=dxw.GethWnd();
|
||||
if(lpdid == lpDIDSysMouse) dwflags = (DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
|
||||
|
||||
res = (*pDISetCooperativeLevel)(lpdid, hwnd, dwflags);
|
||||
if(res != DD_OK){
|
||||
OutTraceE("SetCooperativeLevel(I) ERROR: err=%x(%s)\n", res, ExplainDDError(res));
|
||||
|
@ -53,7 +53,7 @@ extern HANDLE hTraceMutex;
|
||||
CRITICAL_SECTION TraceCS;
|
||||
|
||||
static char *FlagNames[32]={
|
||||
"UNNOTIFY", "EMULATESURFACE", "CLIPCURSOR", "RESETPRIMARY",
|
||||
"UNNOTIFY", "EMULATESURFACE", "CLIPCURSOR", "**",
|
||||
"HOOKDI", "MODIFYMOUSE", "HANDLEEXCEPTIONS", "SAVELOAD",
|
||||
"EMULATEBUFFER", "HOOKDI8", "BLITFROMBACKBUFFER", "SUPPRESSCLIPPING",
|
||||
"AUTOREFRESH", "FIXWINFRAME", "HIDEHWCURSOR", "SLOWDOWN",
|
||||
@ -66,7 +66,7 @@ static char *FlagNames[32]={
|
||||
static char *Flag2Names[32]={
|
||||
"RECOVERSCREENMODE", "REFRESHONRESIZE", "BACKBUFATTACH", "MODALSTYLE",
|
||||
"KEEPASPECTRATIO", "INIT8BPP", "FORCEWINRESIZE", "INIT16BPP",
|
||||
"KEEPCURSORFIXED", "DISABLEGAMMARAMP", "DIFFERENTIALMOUSE", "FIXNCHITTEST",
|
||||
"KEEPCURSORFIXED", "DISABLEGAMMARAMP", "**", "FIXNCHITTEST",
|
||||
"LIMITFPS", "SKIPFPS", "SHOWFPS", "HIDEMULTIMONITOR",
|
||||
"TIMESTRETCH", "HOOKOPENGL", "WALLPAPERMODE", "SHOWHWCURSOR",
|
||||
"GDISTRETCHED", "SHOWFPSOVERLAY", "FAKEVERSION", "FULLRECTBLT",
|
||||
@ -78,8 +78,8 @@ static char *Flag3Names[32]={
|
||||
"FORCEHOOKOPENGL", "MARKBLIT", "HOOKDLLS", "SUPPRESSD3DEXT",
|
||||
"HOOKENABLED", "FIXD3DFRAME", "FORCE16BPP", "BLACKWHITE",
|
||||
"MARKLOCK", "SINGLEPROCAFFINITY", "EMULATEREGISTRY", "CDROMDRIVETYPE",
|
||||
"NOWINDOWMOVE", "--DISABLEHAL--", "LOCKSYSCOLORS", "GDIEMULATEDC",
|
||||
"FULLSCREENONLY", "FONTBYPASS", "YUV2RGB", "RGB2YUV",
|
||||
"NOWINDOWMOVE", "**", "LOCKSYSCOLORS", "GDIEMULATEDC",
|
||||
"FULLSCREENONLY", "FONTBYPASS", "**", "**",
|
||||
"BUFFEREDIOFIX", "FILTERMESSAGES", "PEEKALLMESSAGES", "SURFACEWARN",
|
||||
"ANALYTICMODE", "FORCESHEL", "CAPMASK", "COLORFIX",
|
||||
"NODDRAWBLT", "NODDRAWFLIP", "NOGDIBLT", "NOPIXELFORMAT",
|
||||
@ -98,7 +98,7 @@ static char *Flag4Names[32]={
|
||||
|
||||
static char *Flag5Names[32]={
|
||||
"DIABLOTWEAK", "CLEARTARGET", "NOWINPOSCHANGES", "--NOSYSTEMMEMORY--",
|
||||
"NOBLT", "--NOSYSTEMEMULATED--", "DOFASTBLT", "AEROBOOST",
|
||||
"NOBLT", "**", "DOFASTBLT", "AEROBOOST",
|
||||
"QUARTERBLT", "NOIMAGEHLP", "BILINEARFILTER", "REPLACEPRIVOPS",
|
||||
"REMAPMCI", "TEXTUREHIGHLIGHT", "TEXTUREDUMP", "TEXTUREHACK",
|
||||
"TEXTURETRANSP", "NORMALIZEPERFCOUNT", "HYBRIDMODE", "GDICOLORCONV",
|
||||
@ -115,12 +115,34 @@ static char *Flag6Names[32]={
|
||||
"FLIPEMULATION", "SETZBUFFERBITDEPTHS", "SHAREDDC", "WOW32REGISTRY",
|
||||
"STRETCHMOVIES", "BYPASSMCI", "FIXPIXELZOOM", "REUSEEMULATEDDC",
|
||||
"CREATEDESKTOP", "NOWINDOWHOOKS", "SYNCPALETTE", "VIRTUALJOYSTICK",
|
||||
"UNACQUIRE", "HOOKGOGLIBS", "BYPASSGOGLIBS", "",
|
||||
"UNACQUIRE", "HOOKGOGLIBS", "BYPASSGOGLIBS", "EMULATERELMOUSE",
|
||||
};
|
||||
|
||||
static char *Flag7Names[32]={
|
||||
"LIMITDDRAW", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
};
|
||||
|
||||
static char *Flag8Names[32]={
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
};
|
||||
|
||||
static char *TFlagNames[32]={
|
||||
"OUTTRACE", "OUTDDRAWTRACE", "OUTWINMESSAGES", "OUTCURSORTRACE",
|
||||
"OUTPROXYTRACE", "DXPROXED", "ASSERTDIALOG", "OUTIMPORTTABLE",
|
||||
"**", "**", "ASSERTDIALOG", "OUTIMPORTTABLE",
|
||||
"OUTDEBUG", "OUTREGISTRY", "TRACEHOOKS", "OUTD3DTRACE",
|
||||
"OUTDXWINTRACE", "ADDTIMESTAMP", "OUTDEBUGSTRING", "ERASELOGFILE",
|
||||
"", "", "", "",
|
||||
@ -166,6 +188,8 @@ static void OutTraceHeader(FILE *fp)
|
||||
for(i=0, dword=dxw.dwFlags4; i<32; i++, dword>>=1) if(dword & 0x1) fprintf(fp, "%s ", Flag4Names[i]);
|
||||
for(i=0, dword=dxw.dwFlags5; i<32; i++, dword>>=1) if(dword & 0x1) fprintf(fp, "%s ", Flag5Names[i]);
|
||||
for(i=0, dword=dxw.dwFlags6; i<32; i++, dword>>=1) if(dword & 0x1) fprintf(fp, "%s ", Flag6Names[i]);
|
||||
for(i=0, dword=dxw.dwFlags7; i<32; i++, dword>>=1) if(dword & 0x1) fprintf(fp, "%s ", Flag6Names[i]);
|
||||
for(i=0, dword=dxw.dwFlags8; i<32; i++, dword>>=1) if(dword & 0x1) fprintf(fp, "%s ", Flag6Names[i]);
|
||||
for(i=0, dword=dxw.dwTFlags; i<32; i++, dword>>=1) if(dword & 0x1) fprintf(fp, "%s ", TFlagNames[i]);
|
||||
fprintf(fp, "***\n");
|
||||
}
|
||||
@ -456,6 +480,7 @@ void SetHook(void *target, void *hookproc, void **hookedproc, char *hookname)
|
||||
sprintf(msg,"SetHook: proc=%s oldhook=%x->%x newhook=%x\n", hookname, hookedproc, *(DWORD *)hookedproc, tmp);
|
||||
OutTraceDW(msg);
|
||||
if (IsAssertEnabled) MessageBox(0, msg, "SetHook", MB_OK | MB_ICONEXCLAMATION);
|
||||
tmp = *hookedproc;
|
||||
}
|
||||
*hookedproc = tmp;
|
||||
}
|
||||
@ -1235,6 +1260,7 @@ void HookInit(TARGETMAP *target, HWND hwnd)
|
||||
osinfo.dwMajorVersion, osinfo.dwMinorVersion, osinfo.dwPlatformId, osinfo.dwPlatformId, osinfo.szCSDVersion);
|
||||
}
|
||||
if (dxw.dwFlags4 & LIMITSCREENRES) OutTrace("HookInit: max resolution=%s\n", (dxw.MaxScreenRes<6)?Resolutions[dxw.MaxScreenRes]:"unknown");
|
||||
if (dxw.dwFlags7 & LIMITDDRAW) OutTrace("HookInit: max supported IDidrectDrawInterface=%d\n", dxw.MaxDdrawInterface);
|
||||
}
|
||||
|
||||
{
|
||||
@ -1304,11 +1330,6 @@ void HookInit(TARGETMAP *target, HWND hwnd)
|
||||
if (dxw.dwFlags4 & INTERCEPTRDTSC) ReplaceRDTSC();
|
||||
if (dxw.dwFlags5 & REPLACEPRIVOPS) ReplacePrivilegedOps();
|
||||
|
||||
if (dxw.dwTFlags & DXPROXED){
|
||||
HookDDProxy(base, dxw.dwTargetDDVersion);
|
||||
return;
|
||||
}
|
||||
|
||||
// make InitPosition used for both DInput and DDraw
|
||||
if(dxw.Windowize) dxw.InitWindowPos(target->posx, target->posy, target->sizx, target->sizy);
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
extern int HookDirectDraw(HMODULE, int);
|
||||
extern int HookDDProxy(HMODULE, int);
|
||||
extern int HookDirect3D(HMODULE, int);
|
||||
extern int HookDirect3D7(HMODULE, int);
|
||||
extern void HookOle32(HMODULE);
|
||||
|
@ -84,6 +84,8 @@ void dxwCore::InitTarget(TARGETMAP *target)
|
||||
dwFlags4 = target->flags4;
|
||||
dwFlags5 = target->flags5;
|
||||
dwFlags6 = target->flags6;
|
||||
dwFlags7 = target->flags7;
|
||||
dwFlags8 = target->flags8;
|
||||
dwTFlags = target->tflags;
|
||||
Windowize = (dwFlags2 & WINDOWIZE) ? TRUE : FALSE;
|
||||
if(dwFlags3 & FULLSCREENONLY) FullScreen=TRUE;
|
||||
@ -93,6 +95,7 @@ void dxwCore::InitTarget(TARGETMAP *target)
|
||||
if(!strlen(CustomOpenGLLib)) CustomOpenGLLib=NULL;
|
||||
// bounds control
|
||||
dwTargetDDVersion = target->dxversion;
|
||||
MaxDdrawInterface = target->MaxDdrawInterface;
|
||||
if(dwTargetDDVersion<0) dwTargetDDVersion=0;
|
||||
if(dwTargetDDVersion>12) dwTargetDDVersion=12;
|
||||
TimeShift = target->InitTS;
|
||||
|
@ -140,12 +140,15 @@ public: // simple data variables
|
||||
DWORD dwDDVersion;
|
||||
DWORD dwTargetDDVersion;
|
||||
DWORD dwMaxDDVersion;
|
||||
DWORD MaxDdrawInterface;
|
||||
DWORD dwFlags1;
|
||||
DWORD dwFlags2;
|
||||
DWORD dwFlags3;
|
||||
DWORD dwFlags4;
|
||||
DWORD dwFlags5;
|
||||
DWORD dwFlags6;
|
||||
DWORD dwFlags7;
|
||||
DWORD dwFlags8;
|
||||
DWORD dwTFlags;
|
||||
HWND hParentWnd;
|
||||
HWND hChildWnd;
|
||||
|
@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "TlHelp32.h"
|
||||
|
||||
#define VERSION "2.03.51"
|
||||
#define VERSION "2.03.52"
|
||||
|
||||
#define DDTHREADLOCK 1
|
||||
//#define LOCKTHREADS
|
||||
|
Binary file not shown.
@ -241,10 +241,6 @@
|
||||
RelativePath=".\ddblit.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ddproxy.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ddraw.cpp"
|
||||
>
|
||||
@ -465,6 +461,10 @@
|
||||
RelativePath=".\smack.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\supmodes.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\user32.cpp"
|
||||
>
|
||||
@ -486,10 +486,6 @@
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\ddproxy.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\dxhelper.h"
|
||||
>
|
||||
@ -518,6 +514,10 @@
|
||||
RelativePath=".\hd3d.doc.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\hddraw.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\msvfwhook.h"
|
||||
>
|
||||
|
@ -10,7 +10,6 @@
|
||||
#include "dxwcore.hpp"
|
||||
#include "stdio.h"
|
||||
#include "hddraw.h"
|
||||
#include "ddproxy.h"
|
||||
#include "dxhelper.h"
|
||||
#include "syslibs.h"
|
||||
|
||||
|
24
dll/hd3d.cpp
24
dll/hd3d.cpp
@ -557,9 +557,9 @@ void HookD3DDevice9(void** ppD3Ddev9)
|
||||
if((dxw.dwFlags5 & TEXTUREMASK) || (dxw.dwFlags4 & NOTEXTURES)){
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 260), extSetTexture9, (void **)&pSetTexture9, "SetTexture(D9)");
|
||||
}
|
||||
if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 4), extAddRef9, (void **)&pAddRef9, "AddRef(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 8), extRelease9, (void **)&pRelease9, "Release(D9)");
|
||||
//if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
//SetHook((void *)(**(DWORD **)ppD3Ddev9 + 4), extAddRef9, (void **)&pAddRef9, "AddRef(D9)");
|
||||
//SetHook((void *)(**(DWORD **)ppD3Ddev9 + 8), extRelease9, (void **)&pRelease9, "Release(D9)");
|
||||
}
|
||||
|
||||
// WIP
|
||||
@ -626,15 +626,15 @@ void HookDirect3D9(void *lpd3d, BOOL ex)
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 56), extD3DGetDeviceCaps9, (void **)&pD3DGetDeviceCaps, "GetDeviceCaps(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 64), extCreateDevice, (void **)&pCreateDevice9, "CreateDevice(D9)");
|
||||
if(ex) SetHook((void *)(*(DWORD *)lpd3d + 80), extCreateDeviceEx, (void **)&pCreateDeviceEx, "CreateDeviceEx(D9)");
|
||||
if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 12), extRegisterSoftwareDevice, (void **)&pRegisterSoftwareDevice, "RegisterSoftwareDevice(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 24), extGetAdapterModeCount, (void **)&pGetAdapterModeCount, "GetAdapterModeCount(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 36), extCheckDeviceType, (void **)&pCheckDeviceType, "CheckDeviceType(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 40), extCheckDeviceFormat, (void **)&pCheckDeviceFormat, "CheckDeviceFormat(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 44), extCheckDeviceMultiSampleType, (void **)&pCheckDeviceMultiSampleType, "CheckDeviceMultiSampleType(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 48), extCheckDepthStencilMatch, (void **)&pCheckDepthStencilMatch, "CheckDepthStencilMatch(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 52), extCheckDeviceFormatConversion, (void **)&pCheckDeviceFormatConversion, "CheckDeviceFormatConversion(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 60), extGetAdapterMonitor, (void **)&pGetAdapterMonitor, "GetAdapterMonitor(D9)");
|
||||
//if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 12), extRegisterSoftwareDevice, (void **)&pRegisterSoftwareDevice, "RegisterSoftwareDevice(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 24), extGetAdapterModeCount, (void **)&pGetAdapterModeCount, "GetAdapterModeCount(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 36), extCheckDeviceType, (void **)&pCheckDeviceType, "CheckDeviceType(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 40), extCheckDeviceFormat, (void **)&pCheckDeviceFormat, "CheckDeviceFormat(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 44), extCheckDeviceMultiSampleType, (void **)&pCheckDeviceMultiSampleType, "CheckDeviceMultiSampleType(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 48), extCheckDepthStencilMatch, (void **)&pCheckDepthStencilMatch, "CheckDepthStencilMatch(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 52), extCheckDeviceFormatConversion, (void **)&pCheckDeviceFormatConversion, "CheckDeviceFormatConversion(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 60), extGetAdapterMonitor, (void **)&pGetAdapterMonitor, "GetAdapterMonitor(D9)");
|
||||
}
|
||||
|
||||
void* WINAPI extDirect3DCreate9(UINT sdkversion)
|
||||
|
@ -4,7 +4,6 @@
|
||||
#include "dxhook.h"
|
||||
#include "dxhelper.h"
|
||||
#include "hddraw.h"
|
||||
#include "ddproxy.h"
|
||||
#include "stdio.h"
|
||||
|
||||
//#undef IsTraceDW
|
||||
@ -15,6 +14,9 @@ BOOL WINAPI extCheckRemoteDebuggerPresent(HANDLE, PBOOL);
|
||||
LPVOID WINAPI extVirtualAlloc(LPVOID, SIZE_T, DWORD, DWORD);
|
||||
UINT WINAPI extWinExec(LPCSTR, UINT);
|
||||
|
||||
extern HRESULT WINAPI extDirectDrawEnumerate(LPDDENUMCALLBACK, LPVOID);
|
||||
extern HRESULT WINAPI extDirectDrawEnumerateEx(LPDDENUMCALLBACKEX, LPVOID, DWORD);
|
||||
|
||||
typedef LPVOID (WINAPI *VirtualAlloc_Type)(LPVOID, SIZE_T, DWORD, DWORD);
|
||||
typedef BOOL (WINAPI *CreateProcessA_Type)(LPCTSTR, LPTSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES,
|
||||
BOOL, DWORD, LPVOID, LPCTSTR, LPSTARTUPINFO, LPPROCESS_INFORMATION);
|
||||
@ -676,12 +678,12 @@ FARPROC WINAPI extGetProcAddress(HMODULE hModule, LPCSTR proc)
|
||||
case 0x000B: // DirectDrawEnumerateA
|
||||
pDirectDrawEnumerate=(DirectDrawEnumerate_Type)(*pGetProcAddress)(hModule, proc);
|
||||
OutTraceP("GetProcAddress: hooking proc=%s at addr=%x\n", proc, pDirectDrawEnumerate);
|
||||
return (FARPROC)extDirectDrawEnumerateProxy;
|
||||
return (FARPROC)extDirectDrawEnumerate;
|
||||
break;
|
||||
case 0x000C: // DirectDrawEnumerateExA
|
||||
pDirectDrawEnumerateEx=(DirectDrawEnumerateEx_Type)(*pGetProcAddress)(hModule, proc);
|
||||
OutTraceP("GetProcAddress: hooking proc=%s at addr=%x\n", proc, pDirectDrawEnumerateEx);
|
||||
return (FARPROC)extDirectDrawEnumerateExProxy;
|
||||
return (FARPROC)extDirectDrawEnumerateEx;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
32
dll/supmodes.cpp
Normal file
32
dll/supmodes.cpp
Normal file
@ -0,0 +1,32 @@
|
||||
#include "dxwnd.h"
|
||||
|
||||
SupportedRes_Type SupportedSVGARes[12]= {
|
||||
{320,200},
|
||||
{320,240},
|
||||
{512,384}, // needed by "Outcast" loading screen
|
||||
{640,400},
|
||||
{640,480},
|
||||
{720,480},
|
||||
{800,600},
|
||||
{1024,768}, // XGA
|
||||
{1280,800}, // WXGA
|
||||
{1280,1024},
|
||||
{1600,1200}, // UXGA, needed by "LEGO Star Wars" in high res mode
|
||||
{0,0}
|
||||
};
|
||||
|
||||
SupportedRes_Type SupportedHDTVRes[11]= {
|
||||
{640,360}, // nHD
|
||||
{720,480}, // DVD
|
||||
{720,576}, // DV-PAL
|
||||
{960,540}, // qHD
|
||||
{1176,1000},
|
||||
{1280,720}, // HD
|
||||
{1440,900}, // Swat 3 hack
|
||||
{1440,960},
|
||||
{1600,900}, // HD+
|
||||
{1920,1080}, // FHD
|
||||
{0,0}
|
||||
};
|
||||
|
||||
int SupportedDepths[5]={8,16,24,32,0};
|
@ -90,7 +90,7 @@ static HookEntry_Type Hooks[]={
|
||||
{HOOK_IAT_CANDIDATE, "CreateDialogIndirectParamA", (FARPROC)CreateDialogIndirectParamA, (FARPROC *)&pCreateDialogIndirectParam, (FARPROC)extCreateDialogIndirectParam},
|
||||
{HOOK_IAT_CANDIDATE, "CreateDialogParamA", (FARPROC)CreateDialogParamA, (FARPROC *)&pCreateDialogParam, (FARPROC)extCreateDialogParam},
|
||||
{HOOK_IAT_CANDIDATE, "MoveWindow", (FARPROC)MoveWindow, (FARPROC *)&pMoveWindow, (FARPROC)extMoveWindow},
|
||||
{HOOK_IAT_CANDIDATE, "EnumDisplaySettingsA", (FARPROC)EnumDisplaySettingsA, (FARPROC *)&pEnumDisplaySettings, (FARPROC)extEnumDisplaySettings},
|
||||
{HOOK_HOT_CANDIDATE, "EnumDisplaySettingsA", (FARPROC)EnumDisplaySettingsA, (FARPROC *)&pEnumDisplaySettings, (FARPROC)extEnumDisplaySettings},
|
||||
{HOOK_IAT_CANDIDATE, "GetClipCursor", (FARPROC)GetClipCursor, (FARPROC*)&pGetClipCursor, (FARPROC)extGetClipCursor},
|
||||
{HOOK_IAT_CANDIDATE, "ClipCursor", (FARPROC)ClipCursor, (FARPROC *)&pClipCursor, (FARPROC)extClipCursor},
|
||||
{HOOK_IAT_CANDIDATE, "DefWindowProcA", (FARPROC)DefWindowProcA, (FARPROC *)&pDefWindowProcA, (FARPROC)extDefWindowProcA},
|
||||
@ -1116,6 +1116,9 @@ BOOL WINAPI extGetWindowRect(HWND hwnd, LPRECT lpRect)
|
||||
{
|
||||
BOOL ret;
|
||||
OutTraceB("GetWindowRect: hwnd=%x hWnd=%x FullScreen=%x\n", hwnd, dxw.GethWnd(), dxw.IsFullScreen());
|
||||
|
||||
if(dxw.IsRealDesktop(hwnd)) hwnd = dxw.GethWnd(); // v2.03.52: fix for "Storm Angel"
|
||||
|
||||
ret=(*pGetWindowRect)(hwnd, lpRect);
|
||||
if(!ret) {
|
||||
OutTraceE("GetWindowRect: GetWindowRect hwnd=%x error %d at %d\n", hwnd, GetLastError(), __LINE__);
|
||||
@ -1377,7 +1380,7 @@ static HWND WINAPI extCreateWindowCommon(
|
||||
// main win was 640x480 only!
|
||||
// v2.02.13: if it's a WS_CHILD window, don't reposition the x,y, placement for BIG win.
|
||||
// v2.02.30: fix (Fable - lost chapters) Fable creates a bigger win with negative x,y coordinates.
|
||||
if (
|
||||
if (
|
||||
(
|
||||
((x<=0)&&(y<=0))
|
||||
||
|
||||
@ -1629,7 +1632,7 @@ HWND WINAPI extCreateWindowExA(
|
||||
dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle),
|
||||
hWndParent, hWndParent==HWND_MESSAGE?"(HWND_MESSAGE)":"", hMenu);
|
||||
}
|
||||
OutTraceB("CreateWindowExW: DEBUG fullscreen=%x mainwin=%x screen=(%d,%d)\n",
|
||||
OutTraceB("CreateWindowExA: DEBUG fullscreen=%x mainwin=%x screen=(%d,%d)\n",
|
||||
dxw.IsFullScreen(), dxw.GethWnd(), dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
||||
|
||||
if((dxw.dwFlags6 & STRETCHMOVIES) && !strcmp(lpWindowName, "ActiveMovie Window")){
|
||||
@ -1839,8 +1842,56 @@ BOOL WINAPI extGetClipCursor(LPRECT lpRect)
|
||||
LONG WINAPI extEnumDisplaySettings(LPCTSTR lpszDeviceName, DWORD iModeNum, DEVMODE *lpDevMode)
|
||||
{
|
||||
LONG res;
|
||||
OutTraceDW("EnumDisplaySettings: Devicename=%s ModeNum=%x\n", lpszDeviceName, iModeNum);
|
||||
res=(*pEnumDisplaySettings)(lpszDeviceName, iModeNum, lpDevMode);
|
||||
OSVERSIONINFO osinfo;
|
||||
|
||||
osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
(*pGetVersionExA)(&osinfo);
|
||||
OutTraceDW("EnumDisplaySettings: Devicename=%s ModeNum=%x OS=%d.%d\n", lpszDeviceName, iModeNum, osinfo.dwMajorVersion, osinfo.dwMinorVersion);
|
||||
|
||||
if(dxw.dwFlags4 & NATIVERES){
|
||||
// lists video card native resolutions, though faking emulated color resolutions
|
||||
if((osinfo.dwMajorVersion >= 6) && (dxw.dwFlags1 & EMULATESURFACE)){
|
||||
switch(iModeNum){
|
||||
case ENUM_CURRENT_SETTINGS:
|
||||
case ENUM_REGISTRY_SETTINGS: // lie ...
|
||||
res=(*pEnumDisplaySettings)(lpszDeviceName, iModeNum, lpDevMode);
|
||||
if(dxw.dwFlags2 & INIT8BPP) lpDevMode->dmBitsPerPel = 8;
|
||||
if(dxw.dwFlags2 & INIT16BPP) lpDevMode->dmBitsPerPel = 16;
|
||||
if(dxw.dwFlags3 & FORCE16BPP) lpDevMode->dmBitsPerPel = 16;
|
||||
break;
|
||||
default:
|
||||
res=(*pEnumDisplaySettings)(lpszDeviceName, iModeNum / SUPPORTED_DEPTHS_NUMBER, lpDevMode);
|
||||
lpDevMode->dmBitsPerPel = (DWORD)SupportedDepths[iModeNum % SUPPORTED_DEPTHS_NUMBER];
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
res=(*pEnumDisplaySettings)(lpszDeviceName, iModeNum, lpDevMode);
|
||||
|
||||
}
|
||||
else { // simulated modes: VGA or HDTV
|
||||
//int SupportedDepths[5]={8,16,24,32,0};
|
||||
SupportedRes_Type *SupportedRes;
|
||||
SupportedRes = (dxw.dwFlags4 & SUPPORTHDTV) ? &SupportedHDTVRes[0] : &SupportedSVGARes[0];
|
||||
res=(*pEnumDisplaySettings)(lpszDeviceName, ENUM_CURRENT_SETTINGS, lpDevMode);
|
||||
switch(iModeNum){
|
||||
case ENUM_CURRENT_SETTINGS:
|
||||
case ENUM_REGISTRY_SETTINGS: // lie ...
|
||||
lpDevMode->dmPelsHeight = 600;
|
||||
lpDevMode->dmPelsWidth = 800;
|
||||
if(dxw.dwFlags2 & INIT8BPP) lpDevMode->dmBitsPerPel = 8;
|
||||
if(dxw.dwFlags2 & INIT16BPP) lpDevMode->dmBitsPerPel = 16;
|
||||
if(dxw.dwFlags3 & FORCE16BPP) lpDevMode->dmBitsPerPel = 16;
|
||||
break;
|
||||
default:
|
||||
lpDevMode->dmPelsHeight = SupportedRes[iModeNum / 4].h;
|
||||
lpDevMode->dmPelsWidth = SupportedRes[iModeNum / 4].w;
|
||||
lpDevMode->dmBitsPerPel = SupportedDepths[iModeNum % 4];
|
||||
if(lpDevMode->dmPelsHeight == 0) res = 0; // end of list
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(dxw.dwFlags4 & LIMITSCREENRES){
|
||||
#define HUGE 100000
|
||||
DWORD maxw, maxh;
|
||||
@ -1859,6 +1910,9 @@ LONG WINAPI extEnumDisplaySettings(LPCTSTR lpszDeviceName, DWORD iModeNum, DEVMO
|
||||
lpDevMode->dmPelsHeight = maxh;
|
||||
}
|
||||
}
|
||||
|
||||
OutTraceDW("EnumDisplaySettings: color=%dBPP size=(%dx%d) refresh=%dHz\n",
|
||||
lpDevMode->dmBitsPerPel, lpDevMode->dmPelsWidth, lpDevMode->dmPelsHeight, lpDevMode->dmDisplayFrequency);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -22,6 +22,7 @@ void gShowHideTaskBar(BOOL bHide /*=FALSE*/)
|
||||
CWnd *pWnd = CWnd::FindWindow("Shell_TrayWnd", "");
|
||||
//CWnd *pDesktopWnd = CWnd::GetDesktopWindow();
|
||||
CWnd *pStart;
|
||||
pStart = NULL;
|
||||
|
||||
if( bHide )
|
||||
{
|
||||
@ -44,8 +45,9 @@ void gShowHideTaskBar(BOOL bHide /*=FALSE*/)
|
||||
|
||||
//This will retrieve the Handle of Start Button using the above
|
||||
// handle and class name of start Button.
|
||||
// v2.03.52 fix: Win10 has no such a button!
|
||||
pStart = pWnd->FindWindow("Button", NULL);
|
||||
pStart->ShowWindow(SW_HIDE);
|
||||
if(pStart) pStart->ShowWindow(SW_HIDE);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -68,8 +70,9 @@ void gShowHideTaskBar(BOOL bHide /*=FALSE*/)
|
||||
|
||||
//This will retrieve the Handle of Start Button using the above
|
||||
// handle and class name of start Button.
|
||||
// v2.03.52 fix: Win10 has no such a button!
|
||||
pStart = pWnd->FindWindow("Button", NULL);
|
||||
pStart->ShowWindow(SW_SHOW);
|
||||
if(pStart) pStart->ShowWindow(SW_SHOW);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,9 +27,9 @@ void CTabDebug::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
|
||||
DDX_Check(pDX, IDC_RGB2YUV, cTarget->m_ForceRGBtoYUV);
|
||||
DDX_Check(pDX, IDC_YUV2RGB, cTarget->m_ForceYUVtoRGB);
|
||||
DDX_Check(pDX, IDC_DXPROXED, cTarget->m_DXProxed);
|
||||
//DDX_Check(pDX, IDC_RGB2YUV, cTarget->m_ForceRGBtoYUV);
|
||||
//DDX_Check(pDX, IDC_YUV2RGB, cTarget->m_ForceYUVtoRGB);
|
||||
//DDX_Check(pDX, IDC_DXPROXED, cTarget->m_DXProxed);
|
||||
DDX_Check(pDX, IDC_ASSERT, cTarget->m_AssertDialog);
|
||||
DDX_Check(pDX, IDC_MARKBLIT, cTarget->m_MarkBlit);
|
||||
DDX_Check(pDX, IDC_MARKLOCK, cTarget->m_MarkLock);
|
||||
|
@ -46,6 +46,8 @@ void CTabDirect3D::DoDataExchange(CDataExchange* pDX)
|
||||
DDX_Check(pDX, IDC_FULLRECTBLT, cTarget->m_FullRectBlt);
|
||||
DDX_Check(pDX, IDC_CENTERTOWIN, cTarget->m_CenterToWin);
|
||||
DDX_Check(pDX, IDC_DEINTERLACE, cTarget->m_Deinterlace);
|
||||
DDX_Check(pDX, IDC_LIMITDDRAW, cTarget->m_LimitDdraw);
|
||||
DDX_CBIndex(pDX, IDC_DDWAWLIMITCOMBO, cTarget->m_MaxDdrawInterface);
|
||||
|
||||
// Texture management
|
||||
DDX_Radio(pDX, IDC_TEXTURENONE, cTarget->m_TextureHandling);
|
||||
|
@ -36,7 +36,6 @@ void CTabLogs::DoDataExchange(CDataExchange* pDX)
|
||||
CDialog::DoDataExchange(pDX);
|
||||
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
|
||||
//extern BOOL gbDebug;
|
||||
DDX_Check(pDX, IDC_OUTPROXYTRACE, cTarget->m_OutProxyTrace);
|
||||
DDX_Check(pDX, IDC_OUTD3DTRACE, cTarget->m_OutD3DTrace);
|
||||
DDX_Check(pDX, IDC_OUTDDRAWTRACE, cTarget->m_OutDDRAWTrace);
|
||||
DDX_Check(pDX, IDC_OUTDEBUG, cTarget->m_OutDebug);
|
||||
|
@ -21,6 +21,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CTargetDlg)
|
||||
m_DXVersion = 0;
|
||||
m_MaxDdrawInterface = 6;
|
||||
m_Coordinates = 0;
|
||||
m_DxEmulationMode = 3; // default: emulated
|
||||
m_DxFilterMode = 0; // default: ddraw filtering
|
||||
@ -34,7 +35,6 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
||||
m_VirtualJoystick = FALSE;
|
||||
m_Unacquire = FALSE;
|
||||
m_LogEnabled = FALSE;
|
||||
m_OutProxyTrace = FALSE;
|
||||
m_OutDebug = FALSE;
|
||||
m_RegistryOp = FALSE;
|
||||
m_CursorTrace = FALSE;
|
||||
@ -48,7 +48,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
||||
m_AddRelativeTime = FALSE;
|
||||
m_ImportTable = FALSE;
|
||||
m_TraceHooks = FALSE;
|
||||
m_DXProxed = FALSE;
|
||||
//m_DXProxed = FALSE;
|
||||
//m_HandleDC = FALSE;
|
||||
m_HandleExceptions = FALSE;
|
||||
m_SuppressIME = FALSE;
|
||||
@ -77,8 +77,8 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
||||
m_NoDestroyWindow = FALSE;
|
||||
m_LockSysColors = FALSE;
|
||||
m_LockReservedPalette = FALSE;
|
||||
m_ForceYUVtoRGB = FALSE;
|
||||
m_ForceRGBtoYUV = FALSE;
|
||||
//m_ForceYUVtoRGB = FALSE;
|
||||
//m_ForceRGBtoYUV = FALSE;
|
||||
m_LimitScreenRes = FALSE;
|
||||
m_SingleProcAffinity = FALSE;
|
||||
m_LimitResources = FALSE;
|
||||
@ -198,6 +198,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
||||
m_FullRectBlt = FALSE;
|
||||
m_CenterToWin = FALSE;
|
||||
m_Deinterlace = FALSE;
|
||||
m_LimitDdraw = FALSE;
|
||||
m_SurfaceWarn = FALSE;
|
||||
m_CapMask = FALSE;
|
||||
m_NoWindowHooks = FALSE;
|
||||
|
@ -32,13 +32,13 @@ public:
|
||||
int m_MouseVisibility;
|
||||
int m_TextureHandling;
|
||||
int m_SonProcessMode;
|
||||
int m_MaxDdrawInterface;
|
||||
BOOL m_HookDI;
|
||||
BOOL m_HookDI8;
|
||||
BOOL m_EmulateRelMouse;
|
||||
BOOL m_ModifyMouse;
|
||||
BOOL m_VirtualJoystick;
|
||||
BOOL m_Unacquire;
|
||||
BOOL m_OutProxyTrace;
|
||||
BOOL m_OutDebug;
|
||||
BOOL m_CursorTrace;
|
||||
BOOL m_LogEnabled;
|
||||
@ -50,7 +50,7 @@ public:
|
||||
BOOL m_OutDWTrace;
|
||||
BOOL m_OutD3DTrace;
|
||||
BOOL m_OutDDRAWTrace;
|
||||
BOOL m_DXProxed;
|
||||
//BOOL m_DXProxed;
|
||||
BOOL m_AssertDialog;
|
||||
BOOL m_ImportTable;
|
||||
BOOL m_RegistryOp;
|
||||
@ -160,6 +160,7 @@ public:
|
||||
BOOL m_FullRectBlt;
|
||||
BOOL m_CenterToWin;
|
||||
BOOL m_Deinterlace;
|
||||
BOOL m_LimitDdraw;
|
||||
BOOL m_SurfaceWarn;
|
||||
BOOL m_CapMask;
|
||||
BOOL m_NoWindowHooks;
|
||||
@ -221,8 +222,8 @@ public:
|
||||
BOOL m_BlackWhite;
|
||||
BOOL m_SuppressD3DExt;
|
||||
BOOL m_Force16BPP;
|
||||
BOOL m_ForceYUVtoRGB;
|
||||
BOOL m_ForceRGBtoYUV;
|
||||
//BOOL m_ForceYUVtoRGB;
|
||||
//BOOL m_ForceRGBtoYUV;
|
||||
BOOL m_LimitScreenRes;
|
||||
int m_PosX;
|
||||
int m_PosY;
|
||||
|
@ -1,38 +0,0 @@
|
||||
[window]
|
||||
exportpath=D:\DxWnd\exports.wip\
|
||||
posx=880
|
||||
posy=437
|
||||
sizx=320
|
||||
sizy=200
|
||||
[target]
|
||||
title0=Star Trek Armada
|
||||
path0=D:\Games\armada_demo\Armada.exe
|
||||
launchpath0=
|
||||
module0=
|
||||
opengllib0=
|
||||
notes0=
|
||||
registry0=ciao\n
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=-2011168669
|
||||
flagg0=1543503872
|
||||
flagh0=98320
|
||||
flagi0=136314884
|
||||
flagj0=4224
|
||||
flagk0=327680
|
||||
tflag0=0
|
||||
initx0=0
|
||||
inity0=0
|
||||
minx0=0
|
||||
miny0=0
|
||||
maxx0=0
|
||||
maxy0=0
|
||||
posx0=100
|
||||
posy0=100
|
||||
sizx0=800
|
||||
sizy0=600
|
||||
maxfps0=0
|
||||
initts0=0
|
||||
winver0=0
|
||||
maxres0=-1
|
||||
swapeffect0=0
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -170,6 +170,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
||||
strcpy_s(t->OpenGLLib, sizeof(t->OpenGLLib), dlg->m_OpenGLLib);
|
||||
if(dlg->m_DXVersion > 1) dlg->m_DXVersion += 5;
|
||||
t->dxversion = dlg->m_DXVersion;
|
||||
t->MaxDdrawInterface = dlg->m_MaxDdrawInterface+1;
|
||||
t->coordinates = dlg->m_Coordinates;
|
||||
t->flags = 0;
|
||||
t->flags2 = 0;
|
||||
@ -255,7 +256,6 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
||||
if(dlg->m_ModifyMouse) t->flags |= MODIFYMOUSE;
|
||||
if(dlg->m_VirtualJoystick) t->flags6 |= VIRTUALJOYSTICK;
|
||||
if(dlg->m_Unacquire) t->flags6 |= UNACQUIRE;
|
||||
if(dlg->m_OutProxyTrace) t->tflags |= OUTPROXYTRACE;
|
||||
if(dlg->m_OutDebug) t->tflags |= OUTDEBUG;
|
||||
if(dlg->m_CursorTrace) t->tflags |= OUTCURSORTRACE;
|
||||
if(dlg->m_LogEnabled) t->tflags |= OUTTRACE;
|
||||
@ -267,7 +267,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
||||
if(dlg->m_OutDWTrace) t->tflags |= OUTDXWINTRACE;
|
||||
if(dlg->m_OutDDRAWTrace) t->tflags |= OUTDDRAWTRACE;
|
||||
if(dlg->m_OutD3DTrace) t->tflags |= OUTD3DTRACE;
|
||||
if(dlg->m_DXProxed) t->tflags |= DXPROXED;
|
||||
//if(dlg->m_DXProxed) t->tflags |= DXPROXED;
|
||||
if(dlg->m_AssertDialog) t->tflags |= ASSERTDIALOG;
|
||||
if(dlg->m_ImportTable) t->tflags |= OUTIMPORTTABLE;
|
||||
if(dlg->m_RegistryOp) t->tflags |= OUTREGISTRY;
|
||||
@ -317,8 +317,8 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
||||
if(dlg->m_NoDestroyWindow) t->flags6 |= NODESTROYWINDOW;
|
||||
if(dlg->m_LockSysColors) t->flags3 |= LOCKSYSCOLORS;
|
||||
if(dlg->m_LockReservedPalette) t->flags5 |= LOCKRESERVEDPALETTE;
|
||||
if(dlg->m_ForceYUVtoRGB) t->flags3 |= YUV2RGB;
|
||||
if(dlg->m_ForceRGBtoYUV) t->flags3 |= RGB2YUV;
|
||||
//if(dlg->m_ForceYUVtoRGB) t->flags3 |= YUV2RGB;
|
||||
//if(dlg->m_ForceRGBtoYUV) t->flags3 |= RGB2YUV;
|
||||
if(dlg->m_LimitScreenRes) t->flags4 |= LIMITSCREENRES;
|
||||
if(dlg->m_SingleProcAffinity) t->flags3 |= SINGLEPROCAFFINITY;
|
||||
if(dlg->m_SaveLoad) t->flags |= SAVELOAD;
|
||||
@ -402,6 +402,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
||||
if(dlg->m_FullRectBlt) t->flags2 |= FULLRECTBLT;
|
||||
if(dlg->m_CenterToWin) t->flags5 |= CENTERTOWIN;
|
||||
if(dlg->m_Deinterlace) t->flags5 |= DEINTERLACE;
|
||||
if(dlg->m_LimitDdraw) t->flags7 |= LIMITDDRAW;
|
||||
if(dlg->m_NoPaletteUpdate) t->flags2 |= NOPALETTEUPDATE;
|
||||
if(dlg->m_SurfaceWarn) t->flags3 |= SURFACEWARN;
|
||||
if(dlg->m_CapMask) t->flags3 |= CAPMASK;
|
||||
@ -431,6 +432,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
||||
static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
||||
{
|
||||
dlg->m_DXVersion = t->dxversion;
|
||||
dlg->m_MaxDdrawInterface = t->MaxDdrawInterface-1;
|
||||
if(dlg->m_DXVersion > 6) dlg->m_DXVersion -= 5;
|
||||
dlg->m_Coordinates = t->coordinates;
|
||||
dlg->m_FilePath = t->path;
|
||||
@ -497,7 +499,6 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
||||
dlg->m_ModifyMouse = t->flags & MODIFYMOUSE ? 1 : 0;
|
||||
dlg->m_VirtualJoystick = t->flags6 & VIRTUALJOYSTICK ? 1 : 0;
|
||||
dlg->m_Unacquire = t->flags6 & UNACQUIRE ? 1 : 0;
|
||||
dlg->m_OutProxyTrace = t->tflags & OUTPROXYTRACE ? 1 : 0;
|
||||
dlg->m_OutDebug = t->tflags & OUTDEBUG ? 1 : 0;
|
||||
dlg->m_CursorTrace = t->tflags & OUTCURSORTRACE ? 1 : 0;
|
||||
dlg->m_LogEnabled = t->tflags & OUTTRACE ? 1 : 0;
|
||||
@ -509,7 +510,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
||||
dlg->m_OutDWTrace = t->tflags & OUTDXWINTRACE ? 1 : 0;
|
||||
dlg->m_OutD3DTrace = t->tflags & OUTD3DTRACE ? 1 : 0;
|
||||
dlg->m_OutDDRAWTrace = t->tflags & OUTDDRAWTRACE ? 1 : 0;
|
||||
dlg->m_DXProxed = t->tflags & DXPROXED ? 1 : 0;
|
||||
//dlg->m_DXProxed = t->tflags & DXPROXED ? 1 : 0;
|
||||
dlg->m_AssertDialog = t->tflags & ASSERTDIALOG ? 1 : 0;
|
||||
dlg->m_ImportTable = t->tflags & OUTIMPORTTABLE ? 1 : 0;
|
||||
dlg->m_RegistryOp = t->tflags & OUTREGISTRY ? 1 : 0;
|
||||
@ -541,8 +542,8 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
||||
dlg->m_NoDestroyWindow = t->flags6 & NODESTROYWINDOW ? 1 : 0;
|
||||
dlg->m_LockSysColors = t->flags3 & LOCKSYSCOLORS ? 1 : 0;
|
||||
dlg->m_LockReservedPalette = t->flags5 & LOCKRESERVEDPALETTE ? 1 : 0;
|
||||
dlg->m_ForceRGBtoYUV = t->flags3 & RGB2YUV ? 1 : 0;
|
||||
dlg->m_ForceYUVtoRGB = t->flags3 & YUV2RGB ? 1 : 0;
|
||||
//dlg->m_ForceRGBtoYUV = t->flags3 & RGB2YUV ? 1 : 0;
|
||||
//dlg->m_ForceYUVtoRGB = t->flags3 & YUV2RGB ? 1 : 0;
|
||||
dlg->m_LimitScreenRes = t->flags4 & LIMITSCREENRES ? 1 : 0;
|
||||
dlg->m_SingleProcAffinity = t->flags3 & SINGLEPROCAFFINITY ? 1 : 0;
|
||||
dlg->m_LimitResources = t->flags2 & LIMITRESOURCES ? 1 : 0;
|
||||
@ -645,6 +646,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
||||
dlg->m_FullRectBlt = t->flags2 & FULLRECTBLT ? 1 : 0;
|
||||
dlg->m_CenterToWin = t->flags5 & CENTERTOWIN ? 1 : 0;
|
||||
dlg->m_Deinterlace = t->flags5 & DEINTERLACE ? 1 : 0;
|
||||
dlg->m_LimitDdraw = t->flags7 & LIMITDDRAW ? 1 : 0;
|
||||
dlg->m_NoPaletteUpdate = t->flags2 & NOPALETTEUPDATE ? 1 : 0;
|
||||
dlg->m_SurfaceWarn = t->flags3 & SURFACEWARN ? 1 : 0;
|
||||
dlg->m_CapMask = t->flags3 & CAPMASK ? 1 : 0;
|
||||
@ -754,6 +756,9 @@ static void SaveConfigItem(TARGETMAP *TargetMap, PRIVATEMAP *PrivateMap, int i,
|
||||
sprintf_s(key, sizeof(key), "swapeffect%i", i);
|
||||
sprintf_s(val, sizeof(val), "%i", TargetMap->SwapEffect);
|
||||
WritePrivateProfileString("target", key, val, InitPath);
|
||||
sprintf_s(key, sizeof(key), "maxddinterface%i", i);
|
||||
sprintf_s(val, sizeof(val), "%i", TargetMap->MaxDdrawInterface);
|
||||
WritePrivateProfileString("target", key, val, InitPath);
|
||||
|
||||
free(EscBuf);
|
||||
EscBuf = NULL;
|
||||
@ -823,6 +828,8 @@ static void ClearTarget(int i, char *InitPath)
|
||||
WritePrivateProfileString("target", key, 0, InitPath);
|
||||
sprintf_s(key, sizeof(key), "registry%i", i);
|
||||
WritePrivateProfileString("target", key, 0, InitPath);
|
||||
sprintf_s(key, sizeof(key), "maxddinterface%i", i);
|
||||
WritePrivateProfileString("target", key, 0, InitPath);
|
||||
}
|
||||
|
||||
static int LoadConfigItem(TARGETMAP *TargetMap, PRIVATEMAP *PrivateMap, int i, char *InitPath)
|
||||
@ -920,11 +927,14 @@ static int LoadConfigItem(TARGETMAP *TargetMap, PRIVATEMAP *PrivateMap, int i, c
|
||||
// -------
|
||||
sprintf_s(key, sizeof(key), "maxres%i", i);
|
||||
TargetMap->MaxScreenRes = GetPrivateProfileInt("target", key, 0, InitPath);
|
||||
// -------
|
||||
sprintf_s(key, sizeof(key), "maxddinterface%i", i);
|
||||
TargetMap->MaxDdrawInterface = GetPrivateProfileInt("target", key, 7, InitPath);
|
||||
|
||||
if (!gbDebug){
|
||||
// clear debug flags
|
||||
TargetMap->flags &= ~(0);
|
||||
TargetMap->flags3 &= ~(YUV2RGB|RGB2YUV|SURFACEWARN|ANALYTICMODE|NODDRAWBLT|NODDRAWFLIP|NOGDIBLT);
|
||||
TargetMap->flags3 &= ~(SURFACEWARN|ANALYTICMODE|NODDRAWBLT|NODDRAWFLIP|NOGDIBLT);
|
||||
}
|
||||
free(EscBuf);
|
||||
EscBuf = NULL;
|
||||
@ -1119,7 +1129,7 @@ void CDxwndhostView::OnExport()
|
||||
// XP fix:
|
||||
if(strlen(path)>4){
|
||||
char *p;
|
||||
p = &path[strlen(path-4)];
|
||||
p = &path[strlen(path)-4];
|
||||
if(strcasecmp(p, ".dxw")) strcat(path, ".dxw");
|
||||
}
|
||||
else
|
||||
|
BIN
host/resource
BIN
host/resource
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user