mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_02_75_src
Former-commit-id: d841b5cdff8c56dc62484b0bf26910cd70cce717
This commit is contained in:
parent
059c4c1bee
commit
8e93278b0c
@ -142,6 +142,7 @@
|
|||||||
#define HOTPATCH 0x04000000 // Use hot patching technique to handle obfuscated IAT
|
#define HOTPATCH 0x04000000 // Use hot patching technique to handle obfuscated IAT
|
||||||
#define ENABLEHOTKEYS 0x08000000 // Enables hot keys
|
#define ENABLEHOTKEYS 0x08000000 // Enables hot keys
|
||||||
#define HOTPATCHALWAYS 0x10000000 // Force hot patching to every call
|
#define HOTPATCHALWAYS 0x10000000 // Force hot patching to every call
|
||||||
|
#define NOD3DRESET 0x20000000 // Disables D3D8/9 D3DDevice::Reset method
|
||||||
|
|
||||||
// logging Tflags DWORD:
|
// logging Tflags DWORD:
|
||||||
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general
|
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:5b7f9b28cc1d19e29759f70cf2f5187a21319a31a0d8bd24d36c3314161d958c
|
oid sha256:0abd5d664eea54b2046da9cf7c3b556569a5bbd8c65eb87e1b088dff67641ef1
|
||||||
size 483328
|
size 483840
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:d705eb95e5834c95b4be2e8639c08df2c027df4edec2b0e3f2247e9f05da5d67
|
oid sha256:11f3d90b87b33ec400bd96219a0786300f2dbd21935e72a2b859317f887696e0
|
||||||
size 539136
|
size 540160
|
||||||
|
@ -3,9 +3,3 @@ timetoggle=0x72
|
|||||||
altf4=0x73
|
altf4=0x73
|
||||||
timeslow=0x74
|
timeslow=0x74
|
||||||
timefast=0x75
|
timefast=0x75
|
||||||
|
|
||||||
[window]
|
|
||||||
posx=50
|
|
||||||
posy=50
|
|
||||||
sizx=320
|
|
||||||
sizy=200
|
|
||||||
|
27
build/exports/Rollcage (3DFX).dxw
Normal file
27
build/exports/Rollcage (3DFX).dxw
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
[target]
|
||||||
|
title0=Rollcage (3DFX)
|
||||||
|
path0=D:\Games\Rollcage\Glide\ROLLCAGE.EXE
|
||||||
|
launchpath0=D:\Games\Rollcage\RollCage.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=150994976
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=136314884
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
27
build/exports/Rollcage (D3D).dxw
Normal file
27
build/exports/Rollcage (D3D).dxw
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
[target]
|
||||||
|
title0=Rollcage (D3D)
|
||||||
|
path0=D:\Games\Rollcage\Direct3D\Rollcage.exe
|
||||||
|
launchpath0=D:\Games\Rollcage\RollCage.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=150994976
|
||||||
|
flagg0=134217728
|
||||||
|
flagh0=20
|
||||||
|
flagi0=136314884
|
||||||
|
tflag0=6147
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
27
build/exports/Rollcage 2 (D3D).dxw
Normal file
27
build/exports/Rollcage 2 (D3D).dxw
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
[target]
|
||||||
|
title0=Rollcage 2 (D3D)
|
||||||
|
path0=D:\Games\Rollcage 2\BIN\Rollcage D3D.exe
|
||||||
|
launchpath0=D:\Games\Rollcage 2\Rollcage.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217760
|
||||||
|
flagg0=134217728
|
||||||
|
flagh0=20
|
||||||
|
flagi0=138412036
|
||||||
|
tflag0=6147
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
@ -493,3 +493,10 @@ fix: eliminated dialogs with timer warning messages (to be investigated...)
|
|||||||
fix: moved "no banner" flag to main tab again
|
fix: moved "no banner" flag to main tab again
|
||||||
fix: potential string violation, possible cause for flash crash?
|
fix: potential string violation, possible cause for flash crash?
|
||||||
|
|
||||||
|
v2.02.75
|
||||||
|
Hooked D3DDevice::ShowCursor method to apply force show/hide cursor (preliminary...)
|
||||||
|
fix: dynamic allocation for WndProc stack to eliminate predefined limit of 256 entries. Star Wars Rebellion uses more than 256.
|
||||||
|
added: "Suppress D3D8/9 Reset" flag
|
||||||
|
fix: improved show FPS and Time Stretch overlay so that the two overlays won't overlap each other
|
||||||
|
fix: bug in ddraw "Locked surface" mode preventing output on screen
|
||||||
|
fix: fixed bug in critical common portion of the code that was crashing even unhooked programs (namely, Flash Player, ...)
|
||||||
|
@ -1524,7 +1524,8 @@ HRESULT WINAPI extDirectDrawCreate(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, I
|
|||||||
//OutTrace("DirectDrawCreate: drivercaps=%x(%s) emulcaps=%x(%s)\n", DriverCaps.ddsCaps, "???", EmulCaps.ddsCaps, "???");
|
//OutTrace("DirectDrawCreate: drivercaps=%x(%s) emulcaps=%x(%s)\n", DriverCaps.ddsCaps, "???", EmulCaps.ddsCaps, "???");
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
lpPrimaryDD=*lplpdd;
|
||||||
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *lpguid,
|
HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *lpguid,
|
||||||
@ -1586,9 +1587,19 @@ HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *lpguid,
|
|||||||
OutTraceDDRAW("DirectDrawCreateEx: lpdd=%x guid=%s DDVersion=%d\n", *lplpdd, mode, dxw.dwDDVersion);
|
OutTraceDDRAW("DirectDrawCreateEx: lpdd=%x guid=%s DDVersion=%d\n", *lplpdd, mode, dxw.dwDDVersion);
|
||||||
|
|
||||||
HookDDSession(lplpdd, dxw.dwDDVersion);
|
HookDDSession(lplpdd, dxw.dwDDVersion);
|
||||||
lpPrimaryDD=*lplpdd;
|
|
||||||
|
|
||||||
return 0;
|
if(IsDebug && (dxw.dwTFlags & OUTPROXYTRACE)){
|
||||||
|
DDCAPS DriverCaps, EmulCaps;
|
||||||
|
memset(&DriverCaps, 0, sizeof(DriverCaps));
|
||||||
|
DriverCaps.dwSize=sizeof(DriverCaps);
|
||||||
|
memset(&EmulCaps, 0, sizeof(EmulCaps));
|
||||||
|
EmulCaps.dwSize=sizeof(EmulCaps);
|
||||||
|
(LPDIRECTDRAW)(*lplpdd)->GetCaps(&DriverCaps, &EmulCaps);
|
||||||
|
//OutTrace("DirectDrawCreate: drivercaps=%x(%s) emulcaps=%x(%s)\n", DriverCaps.ddsCaps, "???", EmulCaps.ddsCaps, "???");
|
||||||
|
}
|
||||||
|
|
||||||
|
lpPrimaryDD=*lplpdd;
|
||||||
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI extInitialize(LPDIRECTDRAW lpdd, GUID FAR *lpguid)
|
HRESULT WINAPI extInitialize(LPDIRECTDRAW lpdd, GUID FAR *lpguid)
|
||||||
@ -3766,9 +3777,10 @@ HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFAC
|
|||||||
}
|
}
|
||||||
|
|
||||||
res=(*pUnlock)(lpdds, lprect);
|
res=(*pUnlock)(lpdds, lprect);
|
||||||
|
if(res==DDERR_NOTLOCKED) res=DD_OK; // ignore not locked error
|
||||||
if (res) OutTraceE("Unlock ERROR res=%x(%s) at %d\n",res, ExplainDDError(res), __LINE__);
|
if (res) OutTraceE("Unlock ERROR res=%x(%s) at %d\n",res, ExplainDDError(res), __LINE__);
|
||||||
if (IsPrim && res==DD_OK) sBlt("Unlock", lpdds, NULL, lpdds, NULL, NULL, 0, FALSE);
|
if (IsPrim && res==DD_OK) sBlt("Unlock", lpdds, NULL, lpdds, NULL, NULL, 0, FALSE);
|
||||||
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=0;
|
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3807,23 +3819,24 @@ HRESULT WINAPI extUnlockDir(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSUR
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(dxw.dwFlags1 & LOCKEDSURFACE){
|
if(dxw.dwFlags1 & LOCKEDSURFACE){
|
||||||
(*pGetGDISurface)(lpPrimaryDD, &lpDDSPrim);
|
(*pGetGDISurface)(lpPrimaryDD, &lpDDSPrim);
|
||||||
if(lpdds==lpDDSPrim){
|
if(lpdds==lpDDSPrim && lpDDSBuffer){
|
||||||
RECT client;
|
RECT client;
|
||||||
POINT upleft={0,0};
|
POINT upleft={0,0};
|
||||||
(*pGetClientRect)(dxw.GethWnd(), &client);
|
(*pGetClientRect)(dxw.GethWnd(), &client);
|
||||||
(*pClientToScreen)(dxw.GethWnd(), &upleft);
|
(*pClientToScreen)(dxw.GethWnd(), &upleft);
|
||||||
if (!lprect) lprect=&client;
|
if (!lprect) lprect=&client;
|
||||||
OffsetRect(lprect, upleft.x, upleft.y);
|
OffsetRect(lprect, upleft.x, upleft.y);
|
||||||
res=(*pUnlock)((LPDIRECTDRAWSURFACE)lpDDSBuffer, lprect);
|
res=(*pUnlock)((LPDIRECTDRAWSURFACE)lpDDSBuffer, lprect);
|
||||||
(*pBlt)(lpdds, lprect, (LPDIRECTDRAWSURFACE)lpDDSBuffer, NULL, DDBLT_WAIT, 0);
|
(*pBlt)(lpdds, lprect, (LPDIRECTDRAWSURFACE)lpDDSBuffer, NULL, DDBLT_WAIT, 0);
|
||||||
if(lpDDSBuffer) (*pReleaseS)((LPDIRECTDRAWSURFACE)lpDDSBuffer);
|
(*pReleaseS)((LPDIRECTDRAWSURFACE)lpDDSBuffer);
|
||||||
lpDDSBuffer = NULL;
|
lpDDSBuffer = NULL;
|
||||||
}
|
}
|
||||||
(*pReleaseS)(lpDDSPrim); // to leave a correct refcount
|
(*pReleaseS)(lpDDSPrim); // to leave a correct refcount
|
||||||
}
|
}
|
||||||
|
|
||||||
res=(*pUnlock)(lpdds, lprect);
|
res=(*pUnlock)(lpdds, lprect);
|
||||||
|
if(res==DDERR_NOTLOCKED) res=DD_OK; // ignore not locked error
|
||||||
if (res) OutTraceE("Unlock ERROR res=%x(%s) at %d\n",res, ExplainDDError(res), __LINE__);
|
if (res) OutTraceE("Unlock ERROR res=%x(%s) at %d\n",res, ExplainDDError(res), __LINE__);
|
||||||
if (IsPrim && res==DD_OK) sBlt("Unlock", lpdds, NULL, lpdds, NULL, NULL, 0, FALSE);
|
if (IsPrim && res==DD_OK) sBlt("Unlock", lpdds, NULL, lpdds, NULL, NULL, 0, FALSE);
|
||||||
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
||||||
|
@ -29,6 +29,7 @@ static LARGE_INTEGER TimeShifter64Coarse(LARGE_INTEGER, int);
|
|||||||
dxwCore::dxwCore()
|
dxwCore::dxwCore()
|
||||||
{
|
{
|
||||||
// initialization stuff ....
|
// initialization stuff ....
|
||||||
|
extern void WhndStackInit();
|
||||||
FullScreen=FALSE;
|
FullScreen=FALSE;
|
||||||
SethWnd(NULL);
|
SethWnd(NULL);
|
||||||
SetScreenSize();
|
SetScreenSize();
|
||||||
@ -43,6 +44,7 @@ dxwCore::dxwCore()
|
|||||||
ResetEmulatedDC();
|
ResetEmulatedDC();
|
||||||
MustShowOverlay=FALSE;
|
MustShowOverlay=FALSE;
|
||||||
TimerEvent.dwTimerType = TIMER_TYPE_NONE;
|
TimerEvent.dwTimerType = TIMER_TYPE_NONE;
|
||||||
|
WhndStackInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
dxwCore::~dxwCore()
|
dxwCore::~dxwCore()
|
||||||
@ -1130,6 +1132,10 @@ void dxwCore::ShowOverlay(HDC hdc)
|
|||||||
// lpdds->ReleaseDC(hdc);
|
// lpdds->ReleaseDC(hdc);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
// nasty global to ensure that the corner is picked semi-random, but never overlapped
|
||||||
|
// between FPS and TimeStretch (and, as a side effect, never twice the same!)
|
||||||
|
static int LastCorner;
|
||||||
|
|
||||||
void dxwCore::ShowFPS(HDC xdc)
|
void dxwCore::ShowFPS(HDC xdc)
|
||||||
{
|
{
|
||||||
char sBuf[81];
|
char sBuf[81];
|
||||||
@ -1142,6 +1148,8 @@ void dxwCore::ShowFPS(HDC xdc)
|
|||||||
RECT rect;
|
RECT rect;
|
||||||
dwTimer = (*pGetTickCount)();
|
dwTimer = (*pGetTickCount)();
|
||||||
corner = dwTimer % 4;
|
corner = dwTimer % 4;
|
||||||
|
if(corner==LastCorner) corner = (corner+1) % 4;
|
||||||
|
LastCorner = corner;
|
||||||
color=0xFF0000; // blue
|
color=0xFF0000; // blue
|
||||||
(*pGetClientRect)(hWnd, &rect);
|
(*pGetClientRect)(hWnd, &rect);
|
||||||
switch (corner) {
|
switch (corner) {
|
||||||
@ -1194,6 +1202,8 @@ void dxwCore::ShowTimeStretching(HDC xdc)
|
|||||||
dwTimer = (*pGetTickCount)();
|
dwTimer = (*pGetTickCount)();
|
||||||
LastTimeShift=TimeShift;
|
LastTimeShift=TimeShift;
|
||||||
corner = dwTimer % 4;
|
corner = dwTimer % 4;
|
||||||
|
if(corner==LastCorner) corner = (corner+1) % 4;
|
||||||
|
LastCorner = corner;
|
||||||
color=0x0000FF; // red
|
color=0x0000FF; // red
|
||||||
(*pGetClientRect)(hWnd, &rect);
|
(*pGetClientRect)(hWnd, &rect);
|
||||||
switch (corner) {
|
switch (corner) {
|
||||||
@ -1651,58 +1661,37 @@ BOOL dxwCore::CheckScreenResolution(unsigned int w, unsigned int h)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef COMPATIBLEMODE
|
|
||||||
void dxwCore::MapKeysInit(){}
|
|
||||||
|
|
||||||
UINT dxwCore::MapKeysConfig(UINT message, LPARAM lparam, WPARAM wparam)
|
|
||||||
{
|
|
||||||
int vkey;
|
|
||||||
char *caption;
|
|
||||||
if(message!=WM_SYSKEYDOWN) return DXVK_NONE;
|
|
||||||
switch(wparam){
|
|
||||||
case VK_F12: vkey=DXVK_CLIPTOGGLE; caption="CLIPCURSORTOGGLE"; break;
|
|
||||||
case VK_F11: vkey=DXVK_REFRESH; caption="REFRESH"; break;
|
|
||||||
case VK_F10: vkey=DXVK_LOGTOGGLE; caption="LOGTOGGLE"; break;
|
|
||||||
case VK_F9: vkey=DXVK_PLOCKTOGGLE; caption="POSITIONLOCKTOGGLE"; break;
|
|
||||||
case VK_F7: vkey=DXVK_FPSTOGGLE; caption="FPSTOGGLE"; break;
|
|
||||||
case VK_F6: vkey=DXVK_TIMEFAST; caption="TIMESTRETCHFAST"; break;
|
|
||||||
case VK_F5: vkey=DXVK_TIMESLOW; caption="TIMESTRETCHSLOW"; break;
|
|
||||||
case VK_F4: vkey=DXVK_ALTF4; caption="ALTF4"; break;
|
|
||||||
default: vkey=DXVK_NONE; break;
|
|
||||||
}
|
|
||||||
if(vkey) OutTraceDW("MapKeysConfig: ret=%x(%s)\n", vkey);
|
|
||||||
return vkey;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
UINT VKeyConfig[DXVK_SIZE];
|
UINT VKeyConfig[DXVK_SIZE];
|
||||||
|
|
||||||
void dxwCore::MapKeysInit()
|
static char *VKeyLabels[DXVK_SIZE]={
|
||||||
|
"none",
|
||||||
|
"cliptoggle",
|
||||||
|
"refresh",
|
||||||
|
"logtoggle",
|
||||||
|
"plocktoggle",
|
||||||
|
"fpstoggle",
|
||||||
|
"timefast",
|
||||||
|
"timeslow",
|
||||||
|
"timetoggle",
|
||||||
|
"altf4"
|
||||||
|
};
|
||||||
|
|
||||||
|
void dxwCore::MapKeysInit()
|
||||||
{
|
{
|
||||||
char InitPath[MAX_PATH];
|
char InitPath[MAX_PATH];
|
||||||
char *p;
|
char *p;
|
||||||
DWORD dwAttrib;
|
DWORD dwAttrib;
|
||||||
|
int KeyIdx;
|
||||||
dwAttrib = GetFileAttributes("dxwnd.dll");
|
dwAttrib = GetFileAttributes("dxwnd.dll");
|
||||||
if (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)) return;
|
if (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)) return;
|
||||||
GetModuleFileName(GetModuleHandle("dxwnd"), InitPath, MAX_PATH);
|
GetModuleFileName(GetModuleHandle("dxwnd"), InitPath, MAX_PATH);
|
||||||
p=&InitPath[strlen(InitPath)-strlen("dxwnd.dll")];
|
p=&InitPath[strlen(InitPath)-strlen("dxwnd.dll")];
|
||||||
strcpy(p, "dxwnd.ini");
|
strcpy(p, "dxwnd.ini");
|
||||||
VKeyConfig[DXVK_NONE]=DXVK_NONE;
|
VKeyConfig[DXVK_NONE]=DXVK_NONE;
|
||||||
VKeyConfig[DXVK_CLIPTOGGLE]= GetPrivateProfileInt("keymapping", "cliptoggle", 0, InitPath);
|
for(KeyIdx=1; KeyIdx<DXVK_SIZE; KeyIdx++){
|
||||||
VKeyConfig[DXVK_REFRESH]= GetPrivateProfileInt("keymapping", "refresh", 0, InitPath);
|
VKeyConfig[KeyIdx]=GetPrivateProfileInt("keymapping", VKeyLabels[KeyIdx], KeyIdx==DXVK_ALTF4 ? 0x73 : 0x00, InitPath);
|
||||||
VKeyConfig[DXVK_LOGTOGGLE]= GetPrivateProfileInt("keymapping", "logtoggle", 0, InitPath);
|
OutTrace("keymapping[%d](%s)=%x\n", KeyIdx, VKeyLabels[KeyIdx], VKeyConfig[KeyIdx]);
|
||||||
VKeyConfig[DXVK_PLOCKTOGGLE]= GetPrivateProfileInt("keymapping", "plocktoggle", 0, InitPath);
|
}
|
||||||
VKeyConfig[DXVK_FPSTOGGLE]= GetPrivateProfileInt("keymapping", "fpstoggle", 0, InitPath);
|
|
||||||
VKeyConfig[DXVK_TIMEFAST]= GetPrivateProfileInt("keymapping", "timefast", 0, InitPath);
|
|
||||||
VKeyConfig[DXVK_TIMESLOW]= GetPrivateProfileInt("keymapping", "timeslow", 0, InitPath);
|
|
||||||
VKeyConfig[DXVK_TIMETOGGLE]= GetPrivateProfileInt("keymapping", "timetoggle", 0, InitPath);
|
|
||||||
VKeyConfig[DXVK_ALTF4]= GetPrivateProfileInt("keymapping", "altf4", 0x73, InitPath);
|
|
||||||
|
|
||||||
int idx;
|
|
||||||
for(idx=1; idx<DXVK_SIZE; idx++) OutTrace("keymapping %d=%x\n", idx, VKeyConfig[idx]);
|
|
||||||
OutTrace("\n");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT dxwCore::MapKeysConfig(UINT message, LPARAM lparam, WPARAM wparam)
|
UINT dxwCore::MapKeysConfig(UINT message, LPARAM lparam, WPARAM wparam)
|
||||||
@ -1715,4 +1704,3 @@ UINT dxwCore::MapKeysConfig(UINT message, LPARAM lparam, WPARAM wparam)
|
|||||||
}
|
}
|
||||||
return DXVK_NONE;
|
return DXVK_NONE;
|
||||||
}
|
}
|
||||||
#endif
|
|
@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "dxwnd.h"
|
#include "dxwnd.h"
|
||||||
#include "dxwcore.hpp"
|
#include "dxwcore.hpp"
|
||||||
|
|
||||||
#define VERSION "2.02.74"
|
#define VERSION "2.02.75"
|
||||||
|
|
||||||
#define DDTHREADLOCK 1
|
#define DDTHREADLOCK 1
|
||||||
|
|
||||||
@ -64,7 +64,11 @@ BOOL APIENTRY DllMain( HANDLE hmodule,
|
|||||||
DisableThreadLibraryCalls((HMODULE)hmodule);
|
DisableThreadLibraryCalls((HMODULE)hmodule);
|
||||||
hMapping = CreateFileMapping((HANDLE)0xffffffff, NULL, PAGE_READWRITE,
|
hMapping = CreateFileMapping((HANDLE)0xffffffff, NULL, PAGE_READWRITE,
|
||||||
0, sizeof(DxWndStatus)+sizeof(TARGETMAP)*MAXTARGETS, "UniWind_TargetList");
|
0, sizeof(DxWndStatus)+sizeof(TARGETMAP)*MAXTARGETS, "UniWind_TargetList");
|
||||||
|
if(!hMapping) return false;
|
||||||
|
// v2.0.2.75: beware: some tasks (namely, Flash player) get dxwnd.dll loaded, but can't create the file mapping
|
||||||
|
// this situation has to be intercepted, or it can cause the dll to cause faults that may crash the program.
|
||||||
pStatus = (DXWNDSTATUS *)MapViewOfFile(hMapping, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(DXWNDSTATUS)+sizeof(TARGETMAP)*MAXTARGETS);
|
pStatus = (DXWNDSTATUS *)MapViewOfFile(hMapping, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(DXWNDSTATUS)+sizeof(TARGETMAP)*MAXTARGETS);
|
||||||
|
if(!pStatus) return false;
|
||||||
pMapping = (TARGETMAP *)((char *)pStatus + sizeof(DXWNDSTATUS));
|
pMapping = (TARGETMAP *)((char *)pStatus + sizeof(DXWNDSTATUS));
|
||||||
hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "UniWind_Mutex");
|
hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "UniWind_Mutex");
|
||||||
if(!hMutex) hMutex = CreateMutex(0, FALSE, "UniWind_Mutex");
|
if(!hMutex) hMutex = CreateMutex(0, FALSE, "UniWind_Mutex");
|
||||||
|
Binary file not shown.
62
dll/hd3d.cpp
62
dll/hd3d.cpp
@ -41,6 +41,8 @@ typedef void (WINAPI *SetGammaRamp_Type)(void *, UINT, DWORD, D3DGAMMARAMP *);
|
|||||||
typedef void (WINAPI *GetGammaRamp_Type)(void *, UINT, D3DGAMMARAMP *);
|
typedef void (WINAPI *GetGammaRamp_Type)(void *, UINT, D3DGAMMARAMP *);
|
||||||
typedef void (WINAPI *SetCursorPosition9_Type)(void *, int, int, DWORD);
|
typedef void (WINAPI *SetCursorPosition9_Type)(void *, int, int, DWORD);
|
||||||
typedef void (WINAPI *SetCursorPosition8_Type)(void *, int, int, DWORD);
|
typedef void (WINAPI *SetCursorPosition8_Type)(void *, int, int, DWORD);
|
||||||
|
typedef BOOL (WINAPI *ShowCursor8_Type)(void *, BOOL);
|
||||||
|
typedef BOOL (WINAPI *ShowCursor9_Type)(void *, BOOL);
|
||||||
typedef HRESULT (WINAPI *SetTexture8_Type)(void *, DWORD, void *);
|
typedef HRESULT (WINAPI *SetTexture8_Type)(void *, DWORD, void *);
|
||||||
typedef HRESULT (WINAPI *SetTexture9_Type)(void *, DWORD, void *);
|
typedef HRESULT (WINAPI *SetTexture9_Type)(void *, DWORD, void *);
|
||||||
|
|
||||||
@ -95,6 +97,8 @@ void WINAPI extSetGammaRamp(void *, UINT, DWORD, D3DGAMMARAMP *);
|
|||||||
void WINAPI extGetGammaRamp(void *, UINT, D3DGAMMARAMP *);
|
void WINAPI extGetGammaRamp(void *, UINT, D3DGAMMARAMP *);
|
||||||
void WINAPI extSetCursorPosition9(void *, int, int, DWORD);
|
void WINAPI extSetCursorPosition9(void *, int, int, DWORD);
|
||||||
void WINAPI extSetCursorPosition8(void *, int, int, DWORD);
|
void WINAPI extSetCursorPosition8(void *, int, int, DWORD);
|
||||||
|
BOOL WINAPI extShowCursor8(void *, BOOL);
|
||||||
|
BOOL WINAPI extShowCursor9(void *, BOOL);
|
||||||
ULONG WINAPI extAddRef9(void *);
|
ULONG WINAPI extAddRef9(void *);
|
||||||
ULONG WINAPI extRelease9(void *);
|
ULONG WINAPI extRelease9(void *);
|
||||||
BOOL WINAPI voidDisableD3DSpy(void);
|
BOOL WINAPI voidDisableD3DSpy(void);
|
||||||
@ -154,6 +158,8 @@ SetGammaRamp_Type pSetGammaRamp = 0;
|
|||||||
GetGammaRamp_Type pGetGammaRamp = 0;
|
GetGammaRamp_Type pGetGammaRamp = 0;
|
||||||
SetCursorPosition9_Type pSetCursorPosition9 = 0;
|
SetCursorPosition9_Type pSetCursorPosition9 = 0;
|
||||||
SetCursorPosition8_Type pSetCursorPosition8 = 0;
|
SetCursorPosition8_Type pSetCursorPosition8 = 0;
|
||||||
|
ShowCursor8_Type pShowCursor8 = 0;
|
||||||
|
ShowCursor9_Type pShowCursor9 = 0;
|
||||||
|
|
||||||
CreateRenderTarget8_Type pCreateRenderTarget8 = 0;
|
CreateRenderTarget8_Type pCreateRenderTarget8 = 0;
|
||||||
BeginScene_Type pBeginScene8 = 0;
|
BeginScene_Type pBeginScene8 = 0;
|
||||||
@ -460,6 +466,7 @@ void HookD3DDevice8(void** ppD3Ddev8)
|
|||||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 24), extGetDirect3D8, (void **)&pGetDirect3D8, "GetDirect3D(D8)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 24), extGetDirect3D8, (void **)&pGetDirect3D8, "GetDirect3D(D8)");
|
||||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 32), extGetDisplayMode8, (void **)&pGetDisplayMode8, "GetDisplayMode(D8)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 32), extGetDisplayMode8, (void **)&pGetDisplayMode8, "GetDisplayMode(D8)");
|
||||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 44), extSetCursorPosition8, (void **)&pSetCursorPosition8, "SetCursorPosition(D8)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 44), extSetCursorPosition8, (void **)&pSetCursorPosition8, "SetCursorPosition(D8)");
|
||||||
|
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 48), extShowCursor8, (void **)&pShowCursor8, "ShowCursor(D8)");
|
||||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D8)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D8)");
|
||||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 56), extReset, (void **)&pReset, "Reset(D8)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 56), extReset, (void **)&pReset, "Reset(D8)");
|
||||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 60), extPresent, (void **)&pPresent, "Present(D8)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 60), extPresent, (void **)&pPresent, "Present(D8)");
|
||||||
@ -491,6 +498,7 @@ void HookD3DDevice9(void** ppD3Ddev9)
|
|||||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 24), extGetDirect3D9, (void **)&pGetDirect3D9, "GetDirect3D(D9)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 24), extGetDirect3D9, (void **)&pGetDirect3D9, "GetDirect3D(D9)");
|
||||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)");
|
||||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 44), extSetCursorPosition9, (void **)&pSetCursorPosition9, "SetCursorPosition(D9)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 44), extSetCursorPosition9, (void **)&pSetCursorPosition9, "SetCursorPosition(D9)");
|
||||||
|
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 48), extShowCursor9, (void **)&pShowCursor9, "ShowCursor(D9)");
|
||||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D9)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D9)");
|
||||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 64), extReset, (void **)&pReset, "Reset(D9)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 64), extReset, (void **)&pReset, "Reset(D9)");
|
||||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 68), extPresent, (void **)&pPresent, "Present(D9)");
|
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 68), extPresent, (void **)&pPresent, "Present(D9)");
|
||||||
@ -711,18 +719,22 @@ HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
res = (*pReset)(pd3dd, (D3DPRESENT_PARAMETERS *)param);
|
if(!(dxw.dwFlags4 & NOD3DRESET)){
|
||||||
if(res){
|
res = (*pReset)(pd3dd, (D3DPRESENT_PARAMETERS *)param);
|
||||||
OutTraceDW("FAILED! %x\n", res);
|
if(res == D3DERR_INVALIDCALL){
|
||||||
return res;
|
OutTraceDW("FAILED! D3DERR_INVALIDCALL\n", res);
|
||||||
|
return D3DERR_INVALIDCALL;
|
||||||
|
}
|
||||||
|
if(res){
|
||||||
|
OutTraceDW("FAILED! %x\n", res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
OutTraceDW("SUCCESS!\n");
|
||||||
|
(dwD3DVersion == 8) ? HookD3DDevice8(&pd3dd) : HookD3DDevice9(&pd3dd);
|
||||||
}
|
}
|
||||||
OutTraceDW("SUCCESS!\n");
|
else{
|
||||||
|
OutTraceDW("SKIPPED!\n");
|
||||||
if(dwD3DVersion == 8){
|
res=D3D_OK;
|
||||||
HookD3DDevice8(&pd3dd);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
HookD3DDevice9(&pd3dd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dxw.SetScreenSize(pPresParam->BackBufferWidth, pPresParam->BackBufferHeight);
|
dxw.SetScreenSize(pPresParam->BackBufferWidth, pPresParam->BackBufferHeight);
|
||||||
@ -1521,3 +1533,31 @@ ULONG WINAPI extSetTexture9(void *lpd3dd, DWORD Stage, void* pTexture)
|
|||||||
OutTraceD3D("Device::SetTexture(9): d3dd=%x stage=%x\n", lpd3dd, Stage);
|
OutTraceD3D("Device::SetTexture(9): d3dd=%x stage=%x\n", lpd3dd, Stage);
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI extShowCursor8(void *lpd3dd, BOOL bShow)
|
||||||
|
{
|
||||||
|
BOOL res, bNew;
|
||||||
|
bNew=bShow;
|
||||||
|
if(dxw.dwFlags2 & SHOWHWCURSOR) bNew=TRUE;
|
||||||
|
if(dxw.dwFlags1 & HIDEHWCURSOR) bNew=FALSE;
|
||||||
|
res=(*pShowCursor8)(lpd3dd, bNew);
|
||||||
|
if(bNew==bShow)
|
||||||
|
OutTraceD3D("Device::ShowCursor(8): d3dd=%x show=%x res=%x\n", lpd3dd, bNew, res);
|
||||||
|
else
|
||||||
|
OutTraceD3D("Device::ShowCursor(8): d3dd=%x show=%x->%x res=%x\n", lpd3dd, bShow, bNew, res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI extShowCursor9(void *lpd3dd, BOOL bShow)
|
||||||
|
{
|
||||||
|
BOOL res, bNew;
|
||||||
|
bNew=bShow;
|
||||||
|
if(dxw.dwFlags2 & SHOWHWCURSOR) bNew=TRUE;
|
||||||
|
if(dxw.dwFlags1 & HIDEHWCURSOR) bNew=FALSE;
|
||||||
|
res=(*pShowCursor9)(lpd3dd, bNew);
|
||||||
|
if(bNew==bShow)
|
||||||
|
OutTraceD3D("Device::ShowCursor(9): d3dd=%x show=%x res=%x\n", lpd3dd, bNew, res);
|
||||||
|
else
|
||||||
|
OutTraceD3D("Device::ShowCursor(9): d3dd=%x show=%x->%x res=%x\n", lpd3dd, bShow, bNew, res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
@ -806,7 +806,7 @@ HRESULT WINAPI extD3DGetCaps(void *d3dd, LPD3DDEVICEDESC lpd3dd ,LPD3DDEVICEDESC
|
|||||||
HRESULT WINAPI extSetRenderState(SetRenderState3_Type pSetRenderState, int version, void *d3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
HRESULT WINAPI extSetRenderState(SetRenderState3_Type pSetRenderState, int version, void *d3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||||
{
|
{
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
OutTraceD3D("SetRenderState(%d): d3dd=%x State=%x(%s) Value=%x\n", version, d3dd, State, ExplainD3DRenderState(State), Value);
|
OutTraceB("SetRenderState(%d): d3dd=%x State=%x(%s) Value=%x\n", version, d3dd, State, ExplainD3DRenderState(State), Value);
|
||||||
|
|
||||||
if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRENDERSTATE_ZFUNC)) {
|
if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRENDERSTATE_ZFUNC)) {
|
||||||
OutTraceD3D("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(Value));
|
OutTraceD3D("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(Value));
|
||||||
|
@ -35,14 +35,14 @@ static HookEntry_Type LimitHooks[]={
|
|||||||
};
|
};
|
||||||
|
|
||||||
static HookEntry_Type TimeHooks[]={
|
static HookEntry_Type TimeHooks[]={
|
||||||
{HOOK_IAT_CANDIDATE, "GetTickCount", (FARPROC)GetTickCount, (FARPROC *)&pGetTickCount, (FARPROC)extGetTickCount},
|
{HOOK_HOT_CANDIDATE, "GetTickCount", (FARPROC)GetTickCount, (FARPROC *)&pGetTickCount, (FARPROC)extGetTickCount},
|
||||||
{HOOK_IAT_CANDIDATE, "GetLocalTime", (FARPROC)GetLocalTime, (FARPROC *)&pGetLocalTime, (FARPROC)extGetLocalTime},
|
{HOOK_HOT_CANDIDATE, "GetLocalTime", (FARPROC)GetLocalTime, (FARPROC *)&pGetLocalTime, (FARPROC)extGetLocalTime},
|
||||||
{HOOK_IAT_CANDIDATE, "GetSystemTime", (FARPROC)GetSystemTime, (FARPROC *)&pGetSystemTime, (FARPROC)extGetSystemTime},
|
{HOOK_HOT_CANDIDATE, "GetSystemTime", (FARPROC)GetSystemTime, (FARPROC *)&pGetSystemTime, (FARPROC)extGetSystemTime},
|
||||||
{HOOK_IAT_CANDIDATE, "GetSystemTimeAsFileTime", (FARPROC)GetSystemTimeAsFileTime, (FARPROC *)&pGetSystemTimeAsFileTime, (FARPROC)extGetSystemTimeAsFileTime},
|
{HOOK_HOT_CANDIDATE, "GetSystemTimeAsFileTime", (FARPROC)GetSystemTimeAsFileTime, (FARPROC *)&pGetSystemTimeAsFileTime, (FARPROC)extGetSystemTimeAsFileTime},
|
||||||
{HOOK_IAT_CANDIDATE, "Sleep", (FARPROC)Sleep, (FARPROC *)&pSleep, (FARPROC)extSleep},
|
{HOOK_HOT_CANDIDATE, "Sleep", (FARPROC)Sleep, (FARPROC *)&pSleep, (FARPROC)extSleep},
|
||||||
{HOOK_IAT_CANDIDATE, "SleepEx", (FARPROC)SleepEx, (FARPROC *)&pSleepEx, (FARPROC)extSleepEx},
|
{HOOK_HOT_CANDIDATE, "SleepEx", (FARPROC)SleepEx, (FARPROC *)&pSleepEx, (FARPROC)extSleepEx},
|
||||||
{HOOK_IAT_CANDIDATE, "QueryPerformanceCounter", (FARPROC)QueryPerformanceCounter, (FARPROC *)&pQueryPerformanceCounter, (FARPROC)extQueryPerformanceCounter},
|
{HOOK_HOT_CANDIDATE, "QueryPerformanceCounter", (FARPROC)QueryPerformanceCounter, (FARPROC *)&pQueryPerformanceCounter, (FARPROC)extQueryPerformanceCounter},
|
||||||
{HOOK_IAT_CANDIDATE, "QueryPerformanceFrequency", (FARPROC)QueryPerformanceFrequency, (FARPROC *)&pQueryPerformanceFrequency, (FARPROC)extQueryPerformanceFrequency},
|
{HOOK_HOT_CANDIDATE, "QueryPerformanceFrequency", (FARPROC)QueryPerformanceFrequency, (FARPROC *)&pQueryPerformanceFrequency, (FARPROC)extQueryPerformanceFrequency},
|
||||||
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -15,9 +15,9 @@ static HookEntry_Type Hooks[]={
|
|||||||
};
|
};
|
||||||
|
|
||||||
static HookEntry_Type TimeHooks[]={
|
static HookEntry_Type TimeHooks[]={
|
||||||
{HOOK_IAT_CANDIDATE, "timeGetTime", NULL, (FARPROC *)&ptimeGetTime, (FARPROC)exttimeGetTime},
|
{HOOK_HOT_CANDIDATE, "timeGetTime", NULL, (FARPROC *)&ptimeGetTime, (FARPROC)exttimeGetTime},
|
||||||
{HOOK_IAT_CANDIDATE, "timeKillEvent", NULL, (FARPROC *)&ptimeKillEvent, (FARPROC)exttimeKillEvent},
|
{HOOK_HOT_CANDIDATE, "timeKillEvent", NULL, (FARPROC *)&ptimeKillEvent, (FARPROC)exttimeKillEvent},
|
||||||
{HOOK_IAT_CANDIDATE, "timeSetEvent", NULL, (FARPROC *)&ptimeSetEvent, (FARPROC)exttimeSetEvent},
|
{HOOK_HOT_CANDIDATE, "timeSetEvent", NULL, (FARPROC *)&ptimeSetEvent, (FARPROC)exttimeSetEvent},
|
||||||
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
{HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,16 +19,25 @@ typedef struct {
|
|||||||
|
|
||||||
#define MAXWNDHSTACK 256
|
#define MAXWNDHSTACK 256
|
||||||
|
|
||||||
wndstack_entry WhndStack[MAXWNDHSTACK];
|
wndstack_entry *WhndStack;
|
||||||
static int WhndTOS = 0;
|
static int WhndTOS = 0;
|
||||||
|
static int WhndSize = 0;
|
||||||
|
|
||||||
void WhndStackInit()
|
void WhndStackInit()
|
||||||
{
|
{
|
||||||
|
WhndSize = MAXWNDHSTACK;
|
||||||
|
WhndStack = (wndstack_entry *)malloc(WhndSize * sizeof(wndstack_entry));
|
||||||
}
|
}
|
||||||
|
|
||||||
void WhndStackPush(HWND hwnd, WNDPROC wndproc)
|
void WhndStackPush(HWND hwnd, WNDPROC wndproc)
|
||||||
{
|
{
|
||||||
int StackIdx;
|
int StackIdx;
|
||||||
|
|
||||||
|
if(WhndTOS == WhndSize){
|
||||||
|
WhndSize += MAXWNDHSTACK;
|
||||||
|
WhndStack = (wndstack_entry *)realloc(WhndStack, WhndSize * sizeof(wndstack_entry));
|
||||||
|
//OutTraceDW("DEBUG: WNDPROC STACK new size=%d\n", WhndSize);
|
||||||
|
}
|
||||||
// wndproc values of 0xFFFFxxxx type seems to be error codes rather than valid callback addresses ....
|
// wndproc values of 0xFFFFxxxx type seems to be error codes rather than valid callback addresses ....
|
||||||
// v2.02.36 using CallWindowProc you can pass WinProc handles, so you don't need to eliminate them!
|
// v2.02.36 using CallWindowProc you can pass WinProc handles, so you don't need to eliminate them!
|
||||||
//if (((DWORD)wndproc & 0xFFFF0000) == 0xFFFF0000) return;
|
//if (((DWORD)wndproc & 0xFFFF0000) == 0xFFFF0000) return;
|
||||||
@ -40,12 +49,6 @@ void WhndStackPush(HWND hwnd, WNDPROC wndproc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// push if not already there.
|
// push if not already there.
|
||||||
if(WhndTOS>=MAXWNDHSTACK) {
|
|
||||||
char sMsg[80];
|
|
||||||
sprintf(sMsg, "Table overflow: %d entries used", MAXWNDHSTACK);
|
|
||||||
MessageBox(0, sMsg, "WhndStackPush", MB_OK | MB_ICONEXCLAMATION);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
WhndStack[WhndTOS].hwnd=hwnd;
|
WhndStack[WhndTOS].hwnd=hwnd;
|
||||||
WhndStack[WhndTOS].wndproc=wndproc;
|
WhndStack[WhndTOS].wndproc=wndproc;
|
||||||
WhndTOS++;
|
WhndTOS++;
|
||||||
@ -54,7 +57,7 @@ void WhndStackPush(HWND hwnd, WNDPROC wndproc)
|
|||||||
WNDPROC WhndGetWindowProc(HWND hwnd)
|
WNDPROC WhndGetWindowProc(HWND hwnd)
|
||||||
{
|
{
|
||||||
int StackIdx;
|
int StackIdx;
|
||||||
for(StackIdx=0; StackIdx<MAXWNDHSTACK; StackIdx++) if (WhndStack[StackIdx].hwnd==hwnd) {
|
for(StackIdx=0; StackIdx<WhndTOS; StackIdx++) if (WhndStack[StackIdx].hwnd==hwnd) {
|
||||||
//OutTraceDW("DEBUG: WNDPROC STACK pop hwnd=%x, wndproc=%x\n", hwnd, WhndStack[StackIdx].wndproc);
|
//OutTraceDW("DEBUG: WNDPROC STACK pop hwnd=%x, wndproc=%x\n", hwnd, WhndStack[StackIdx].wndproc);
|
||||||
return WhndStack[StackIdx].wndproc;
|
return WhndStack[StackIdx].wndproc;
|
||||||
}
|
}
|
||||||
|
@ -217,6 +217,7 @@
|
|||||||
#define IDC_HOTPATCH 1179
|
#define IDC_HOTPATCH 1179
|
||||||
#define IDC_ENABLEHOTKEYS 1180
|
#define IDC_ENABLEHOTKEYS 1180
|
||||||
#define IDC_HOTPATCHALWAYS 1181
|
#define IDC_HOTPATCHALWAYS 1181
|
||||||
|
#define IDC_NOD3DRESET 1182
|
||||||
#define ID_MODIFY 32771
|
#define ID_MODIFY 32771
|
||||||
#define ID_DELETE 32772
|
#define ID_DELETE 32772
|
||||||
#define ID_ADD 32773
|
#define ID_ADD 32773
|
||||||
|
@ -44,6 +44,7 @@ void CTabDirectX::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Check(pDX, IDC_NOALPHACHANNEL, cTarget->m_NoAlphaChannel);
|
DDX_Check(pDX, IDC_NOALPHACHANNEL, cTarget->m_NoAlphaChannel);
|
||||||
DDX_Check(pDX, IDC_FIXREFCOUNTER, cTarget->m_FixRefCounter);
|
DDX_Check(pDX, IDC_FIXREFCOUNTER, cTarget->m_FixRefCounter);
|
||||||
DDX_Check(pDX, IDC_RETURNNULLREF, cTarget->m_ReturnNullRef);
|
DDX_Check(pDX, IDC_RETURNNULLREF, cTarget->m_ReturnNullRef);
|
||||||
|
DDX_Check(pDX, IDC_NOD3DRESET, cTarget->m_NoD3DReset);
|
||||||
DDX_Check(pDX, IDC_NOFLIPEMULATION, cTarget->m_NoFlipEmulation);
|
DDX_Check(pDX, IDC_NOFLIPEMULATION, cTarget->m_NoFlipEmulation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,6 +46,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_NoAlphaChannel = FALSE;
|
m_NoAlphaChannel = FALSE;
|
||||||
m_FixRefCounter = TRUE;
|
m_FixRefCounter = TRUE;
|
||||||
m_ReturnNullRef = FALSE;
|
m_ReturnNullRef = FALSE;
|
||||||
|
m_NoD3DReset = FALSE;
|
||||||
m_SuppressChild = FALSE;
|
m_SuppressChild = FALSE;
|
||||||
m_HideDesktop = FALSE;
|
m_HideDesktop = FALSE;
|
||||||
m_LockSysColors = FALSE;
|
m_LockSysColors = FALSE;
|
||||||
|
@ -146,6 +146,7 @@ public:
|
|||||||
BOOL m_NoAlphaChannel;
|
BOOL m_NoAlphaChannel;
|
||||||
BOOL m_FixRefCounter;
|
BOOL m_FixRefCounter;
|
||||||
BOOL m_ReturnNullRef;
|
BOOL m_ReturnNullRef;
|
||||||
|
BOOL m_NoD3DReset;
|
||||||
BOOL m_SuppressChild;
|
BOOL m_SuppressChild;
|
||||||
BOOL m_HideDesktop;
|
BOOL m_HideDesktop;
|
||||||
BOOL m_LockSysColors;
|
BOOL m_LockSysColors;
|
||||||
|
Binary file not shown.
@ -352,6 +352,7 @@ BEGIN
|
|||||||
CONTROL "Add proxy libs",IDC_ADDPROXYLIBS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,15,200,123,12
|
CONTROL "Add proxy libs",IDC_ADDPROXYLIBS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,15,200,123,12
|
||||||
CONTROL "Compensate Flip emulation",IDC_NOFLIPEMULATION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,76,119,10
|
CONTROL "Compensate Flip emulation",IDC_NOFLIPEMULATION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,76,119,10
|
||||||
CONTROL "Return 0 ref counter",IDC_RETURNNULLREF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,184,123,12
|
CONTROL "Return 0 ref counter",IDC_RETURNNULLREF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,184,123,12
|
||||||
|
CONTROL "Suppress D3D8/9 Reset",IDC_NOD3DRESET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,196,123,12
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_TAB_INPUT DIALOGEX 0, 0, 300, 240
|
IDD_TAB_INPUT DIALOGEX 0, 0, 300, 240
|
||||||
|
Binary file not shown.
@ -184,6 +184,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(dlg->m_NoAlphaChannel) t->flags4 |= NOALPHACHANNEL;
|
if(dlg->m_NoAlphaChannel) t->flags4 |= NOALPHACHANNEL;
|
||||||
if(dlg->m_FixRefCounter) t->flags4 |= FIXREFCOUNTER;
|
if(dlg->m_FixRefCounter) t->flags4 |= FIXREFCOUNTER;
|
||||||
if(dlg->m_ReturnNullRef) t->flags4 |= RETURNNULLREF;
|
if(dlg->m_ReturnNullRef) t->flags4 |= RETURNNULLREF;
|
||||||
|
if(dlg->m_NoD3DReset) t->flags4 |= NOD3DRESET;
|
||||||
if(dlg->m_SuppressChild) t->flags4 |= SUPPRESSCHILD;
|
if(dlg->m_SuppressChild) t->flags4 |= SUPPRESSCHILD;
|
||||||
if(dlg->m_HideDesktop) t->flags4 |= HIDEDESKTOP;
|
if(dlg->m_HideDesktop) t->flags4 |= HIDEDESKTOP;
|
||||||
if(dlg->m_LockSysColors) t->flags3 |= LOCKSYSCOLORS;
|
if(dlg->m_LockSysColors) t->flags3 |= LOCKSYSCOLORS;
|
||||||
@ -342,6 +343,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
dlg->m_NoAlphaChannel = t->flags4 & NOALPHACHANNEL ? 1 : 0;
|
dlg->m_NoAlphaChannel = t->flags4 & NOALPHACHANNEL ? 1 : 0;
|
||||||
dlg->m_FixRefCounter = t->flags4 & FIXREFCOUNTER ? 1 : 0;
|
dlg->m_FixRefCounter = t->flags4 & FIXREFCOUNTER ? 1 : 0;
|
||||||
dlg->m_ReturnNullRef = t->flags4 & RETURNNULLREF ? 1 : 0;
|
dlg->m_ReturnNullRef = t->flags4 & RETURNNULLREF ? 1 : 0;
|
||||||
|
dlg->m_NoD3DReset = t->flags4 & NOD3DRESET ? 1 : 0;
|
||||||
dlg->m_SuppressChild = t->flags4 & SUPPRESSCHILD ? 1 : 0;
|
dlg->m_SuppressChild = t->flags4 & SUPPRESSCHILD ? 1 : 0;
|
||||||
dlg->m_HideDesktop = t->flags4 & HIDEDESKTOP ? 1 : 0;
|
dlg->m_HideDesktop = t->flags4 & HIDEDESKTOP ? 1 : 0;
|
||||||
dlg->m_LockSysColors = t->flags3 & LOCKSYSCOLORS ? 1 : 0;
|
dlg->m_LockSysColors = t->flags3 & LOCKSYSCOLORS ? 1 : 0;
|
||||||
@ -823,6 +825,8 @@ void CDxwndhostView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
|
|||||||
*pResult = 0;
|
*pResult = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char ImportExportPath[4096] = {0};
|
||||||
|
|
||||||
void CDxwndhostView::OnExport()
|
void CDxwndhostView::OnExport()
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -851,21 +855,23 @@ void CDxwndhostView::OnImport()
|
|||||||
path[0]=0;
|
path[0]=0;
|
||||||
CListCtrl& listctrl = GetListCtrl();
|
CListCtrl& listctrl = GetListCtrl();
|
||||||
|
|
||||||
char buffer[4096] = {0};
|
//static char buffer[4096] = {0};
|
||||||
|
//static char dirbuffer[4096] = {0};
|
||||||
char folder[MAX_PATH+1];
|
char folder[MAX_PATH+1];
|
||||||
char pathname[MAX_PATH+1];
|
char pathname[MAX_PATH+1];
|
||||||
OPENFILENAME ofn = {0};
|
OPENFILENAME ofn = {0};
|
||||||
ofn.lStructSize = sizeof(ofn);
|
ofn.lStructSize = sizeof(ofn);
|
||||||
ofn.lpstrFile = (LPSTR)buffer;
|
ofn.lpstrFile = (LPSTR)ImportExportPath;
|
||||||
|
//ofn.lpstrInitialDir = (LPSTR)dirbuffer;
|
||||||
ofn.nMaxFile = 4096;
|
ofn.nMaxFile = 4096;
|
||||||
ofn.Flags = OFN_ALLOWMULTISELECT | OFN_EXPLORER;
|
ofn.Flags = OFN_ALLOWMULTISELECT | OFN_EXPLORER;
|
||||||
ofn.lpstrDefExt = "dxw";
|
ofn.lpstrDefExt = "dxw";
|
||||||
|
|
||||||
if(GetOpenFileName(&ofn)){
|
if(GetOpenFileName(&ofn)){
|
||||||
if(buffer[ofn.nFileOffset - 1] != '\0'){
|
if(ImportExportPath[ofn.nFileOffset - 1] != '\0'){
|
||||||
// Single-Select
|
// Single-Select
|
||||||
// "buffer" - name of file
|
// "buffer" - name of file
|
||||||
LoadConfigItem(&TargetMaps[i], &TitleMaps[i], 0, buffer);
|
LoadConfigItem(&TargetMaps[i], &TitleMaps[i], 0, ImportExportPath);
|
||||||
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||||
listitem.iItem = i;
|
listitem.iItem = i;
|
||||||
listitem.iSubItem = 0;
|
listitem.iSubItem = 0;
|
||||||
@ -875,7 +881,7 @@ void CDxwndhostView::OnImport()
|
|||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
// Multi-Select
|
// Multi-Select
|
||||||
char* p = buffer;
|
char* p = ImportExportPath;
|
||||||
strcpy(folder, p);
|
strcpy(folder, p);
|
||||||
strcat(folder, "\\");
|
strcat(folder, "\\");
|
||||||
p += lstrlen((LPSTR)p) + 1;
|
p += lstrlen((LPSTR)p) + 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user