mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_02_64_src
Former-commit-id: 132040391504367d2f12b030314ecc9603c5e917
This commit is contained in:
parent
330f3e8013
commit
d47c4cfab1
@ -132,6 +132,7 @@
|
||||
#define STRETCHTIMERS 0x00010000 // Enables timers stretching when TIMESTRETCH is on
|
||||
#define NOFLIPEMULATION 0x00020000 // Compensate the effect of Flip-ping through Blt operations
|
||||
#define NOTEXTURES 0x00040000 // Disabled (whitened) textures
|
||||
#define RETURNNULLREF 0x00080000 // IDirectDraw::Release and IDDrawSurface::Release will always return 0 ref. counter
|
||||
|
||||
// logging Tflags DWORD:
|
||||
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general
|
||||
@ -154,7 +155,7 @@
|
||||
// DxWnd host app data to be passed to the hook callback
|
||||
typedef struct TARGETMAP
|
||||
{
|
||||
char path[MAX_PATH];
|
||||
char path[MAX_PATH+1];
|
||||
char module[60+1];
|
||||
char OpenGLLib[20+1];
|
||||
int dxversion;
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:61f2f3aab11ece5bb74593c0728de708356a37ad7b7bc1e45b03ae361c87419c
|
||||
oid sha256:f848ba14637f8a11e413b5263df2c0eb3de7c1bba21f2db3602e9971c0f85804
|
||||
size 464896
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7fb261f28e57f5293398249aa0f1f27910f581d0cd30c6fb2108160f5da36f01
|
||||
oid sha256:ad2a6e8e0b8119551bfb5352ba7c18e3c892b6dbae0a1e6d1be32b2d5bc9c094
|
||||
size 535552
|
||||
|
26
build/exports/25 to Life.dxw
Normal file
26
build/exports/25 to Life.dxw
Normal file
@ -0,0 +1,26 @@
|
||||
[target]
|
||||
title0=25 to Life
|
||||
path0=D:\Games\25 to life\game\25 TO LIFE.exe
|
||||
module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=134234624
|
||||
flagg0=2013265920
|
||||
flagh0=20
|
||||
flagi0=4
|
||||
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
|
26
build/exports/Abomination.dxw
Normal file
26
build/exports/Abomination.dxw
Normal file
@ -0,0 +1,26 @@
|
||||
[target]
|
||||
title0=Abomination
|
||||
path0=D:\Games\Abomination\Abomb.exe
|
||||
module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=134218272
|
||||
flagg0=134217728
|
||||
flagh0=20
|
||||
flagi0=4
|
||||
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
|
@ -4,7 +4,7 @@ path0=D:\Games\Black & White\runblack.exe
|
||||
module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=1
|
||||
coord0=0
|
||||
flag0=679477280
|
||||
flagg0=1207959568
|
||||
flagh0=20
|
||||
@ -22,3 +22,5 @@ sizx0=800
|
||||
sizy0=600
|
||||
maxfps0=0
|
||||
initts0=0
|
||||
winver0=0
|
||||
maxres0=0
|
||||
|
26
build/exports/Darius Gaiden.dxw
Normal file
26
build/exports/Darius Gaiden.dxw
Normal file
@ -0,0 +1,26 @@
|
||||
[target]
|
||||
title0=Darius Gaiden
|
||||
path0=D:\Games\Darius_gaiden\DARIUS.EXE
|
||||
module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=671089184
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=4
|
||||
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=2
|
||||
winver0=0
|
||||
maxres0=-1
|
26
build/exports/Dark Colony.dxw
Normal file
26
build/exports/Dark Colony.dxw
Normal file
@ -0,0 +1,26 @@
|
||||
[target]
|
||||
title0=Dark Colony
|
||||
path0=D:\Games\DarkColony\DCOLONY\DC.EXE
|
||||
module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=136315424
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=4
|
||||
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
|
26
build/exports/Dark Planet Battle for Natrolis.dxw
Normal file
26
build/exports/Dark Planet Battle for Natrolis.dxw
Normal file
@ -0,0 +1,26 @@
|
||||
[target]
|
||||
title0=Dark Planet: Battle for Natrolis
|
||||
path0=D:\Games\DarkPlanet\Dark.exe
|
||||
module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=671088673
|
||||
flagg0=1208025088
|
||||
flagh0=20
|
||||
flagi0=12
|
||||
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
|
26
build/exports/Dead Rising 2 Off The Record.dxw
Normal file
26
build/exports/Dead Rising 2 Off The Record.dxw
Normal file
@ -0,0 +1,26 @@
|
||||
[target]
|
||||
title0=Dead Rising 2 Off The Record
|
||||
path0=C:\Program Files (x86)\Capcom\Dead Rising 2 Off The Record\deadrising2otr.exe
|
||||
module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=0
|
||||
flagg0=134217728
|
||||
flagh0=16
|
||||
flagi0=0
|
||||
tflag0=3
|
||||
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=0
|
@ -1,15 +1,15 @@
|
||||
[target]
|
||||
title0=JetMoto
|
||||
path0=D:\Games\Jet_Moto\JETMOTO.EXE
|
||||
title0=Duckman
|
||||
path0=D:\Games\Duckman\DUCKMAN.EXE
|
||||
module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=671088674
|
||||
flag0=134218272
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=0
|
||||
tflag0=64
|
||||
flagi0=4
|
||||
tflag0=0
|
||||
initx0=0
|
||||
inity0=0
|
||||
minx0=0
|
||||
@ -22,3 +22,5 @@ sizx0=800
|
||||
sizy0=600
|
||||
maxfps0=0
|
||||
initts0=0
|
||||
winver0=0
|
||||
maxres0=-1
|
26
build/exports/Empire Earth.dxw
Normal file
26
build/exports/Empire Earth.dxw
Normal file
@ -0,0 +1,26 @@
|
||||
[target]
|
||||
title0=Empire Earth
|
||||
path0=D:\Games\Empire Earth\Empire Earth.exe
|
||||
module0=
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=671088673
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=131076
|
||||
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
|
Binary file not shown.
26
build/exports/Nascar Racing 3 (3DFX).dxw
Normal file
26
build/exports/Nascar Racing 3 (3DFX).dxw
Normal file
@ -0,0 +1,26 @@
|
||||
[target]
|
||||
title0=Nascar Racing 3 (3DFX)
|
||||
path0=D:\Games\Nascar Racing 3\NASCAR Racing 3.exe
|
||||
module0=
|
||||
opengllib0=
|
||||
ver0=9
|
||||
coord0=0
|
||||
flag0=671105056
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=4
|
||||
tflag0=6162
|
||||
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=0
|
26
build/exports/Panzer General 3D Assault.dxw
Normal file
26
build/exports/Panzer General 3D Assault.dxw
Normal file
@ -0,0 +1,26 @@
|
||||
[target]
|
||||
title0=Panzer General 3D Assault
|
||||
path0=D:\Games\Panzer General 3D\PG3.icd
|
||||
module0=PG3Draw
|
||||
opengllib0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=696254496
|
||||
flagg0=1207959568
|
||||
flagh0=65556
|
||||
flagi0=4
|
||||
tflag0=6210
|
||||
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
|
5
build/exports/dxwnd.ini
Normal file
5
build/exports/dxwnd.ini
Normal file
@ -0,0 +1,5 @@
|
||||
[window]
|
||||
posx=1007
|
||||
posy=65
|
||||
sizx=769
|
||||
sizy=832
|
@ -417,4 +417,19 @@ fixed d3d hooking for Reset and GetDirect3D methods: now Jumpgate works at any a
|
||||
fixed "Compensate Flip emulation" option for non emulated surface mode: fixes mouse artifacts for "Rogue Spear Black Thorn"
|
||||
added preliminary handling for "Disable Textures" option
|
||||
|
||||
v2.02.64
|
||||
GUI: implemented multiple file import
|
||||
DLL:
|
||||
fixed a ddraw session reference count error that prevented "Jet Moto" to start
|
||||
fixed "Compensate Flip emulation" for ddraw7 games: now "Empire Earth" supports this flag.
|
||||
fixed CloseWindow hook: now games that minimize/restore the main window on task switch can possibly recover (e.g. Hundred Swords)
|
||||
fixed process hook: now it should be a little more robust and efficient. Hopefully should fix some Macromedia Flash problems.
|
||||
fixed IDDrawSurface::Lock() prototype. Not gameplay improvements, though...
|
||||
added DirectX "Return 0 ref counter" option as quick & dirty solution to many reference counter problems!
|
||||
fixed DirectDrawCreateEx failing to register the main ddraw session handle
|
||||
fixed palette problem in emulated mode: palette must be applied to backbuffer surface as well. Now "Duckman" and "Total Soccer 2000" show perfect colors.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1512,7 +1512,7 @@ HRESULT WINAPI extSetPaletteProxy(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extLockProxy(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDIRECTDRAWSURFACE lpdds2, DWORD flags, HANDLE hEvent)
|
||||
HRESULT WINAPI extLockProxy(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpdds2, DWORD flags, HANDLE hEvent)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceP("Lock(S): PROXED lpdds=%x flags=%x(%s) lpdds2=%x", lpdds, flags, ExplainLockFlags(flags), lpdds2);
|
||||
|
@ -19,7 +19,7 @@ extern HRESULT WINAPI extGetClipperProxy(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPE
|
||||
extern HRESULT WINAPI extGetFlipStatusProxy(LPDIRECTDRAWSURFACE, DWORD);
|
||||
extern HRESULT WINAPI extGetOverlayPositionProxy(LPDIRECTDRAWSURFACE, LPLONG, LPLONG);
|
||||
extern HRESULT WINAPI extIsLostProxy(LPDIRECTDRAWSURFACE);
|
||||
extern HRESULT WINAPI extLockProxy(LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, DWORD, HANDLE);
|
||||
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);
|
||||
|
@ -81,8 +81,8 @@ HRESULT WINAPI extGetSurfaceDesc1(LPDIRECTDRAWSURFACE lpdds, LPDDSURFACEDESC lpd
|
||||
HRESULT WINAPI extGetSurfaceDesc2(LPDIRECTDRAWSURFACE2 lpdds, LPDDSURFACEDESC2 lpddsd);
|
||||
HRESULT WINAPI extGetSurfaceDesc7(LPDIRECTDRAWSURFACE2 lpdds, LPDDSURFACEDESC2 lpddsd);
|
||||
// STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
|
||||
HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, DWORD, HANDLE);
|
||||
HRESULT WINAPI extLockDir(LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, DWORD, HANDLE);
|
||||
HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE, LPRECT, LPDDSURFACEDESC, DWORD, HANDLE);
|
||||
HRESULT WINAPI extLockDir(LPDIRECTDRAWSURFACE, LPRECT, LPDDSURFACEDESC, DWORD, HANDLE);
|
||||
HRESULT WINAPI extReleaseDC(LPDIRECTDRAWSURFACE, HDC);
|
||||
HRESULT WINAPI extSetClipper(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI extSetColorKey(LPDIRECTDRAWSURFACE, DWORD, LPDDCOLORKEY);
|
||||
@ -731,9 +731,9 @@ CreateSurface2_Type pCreateSurfaceMethod(LPDIRECTDRAWSURFACE lpdds)
|
||||
void * extUnlock;
|
||||
extUnlock=(void *)*(DWORD *)(*(DWORD *)lpdds + 128);
|
||||
if(extUnlock==(void *)extUnlock1) return (CreateSurface2_Type)pCreateSurface1;
|
||||
if(extUnlock==(void *)extUnlock4) return (CreateSurface2_Type)pCreateSurface4;
|
||||
if(extUnlock==(void *)extUnlock4) return pCreateSurface7 ? (CreateSurface2_Type)pCreateSurface7 : (CreateSurface2_Type)pCreateSurface4;
|
||||
if(extUnlock==(void *)extUnlockDir1) return (CreateSurface2_Type)pCreateSurface1;
|
||||
if(extUnlock==(void *)extUnlockDir4) return (CreateSurface2_Type)pCreateSurface4;
|
||||
if(extUnlock==(void *)extUnlockDir4) return pCreateSurface7 ? (CreateSurface2_Type)pCreateSurface7 : (CreateSurface2_Type)pCreateSurface4;
|
||||
sprintf_s(sMsg, 80, "pCreateSurfaceMethod: pUnlock(%x) can't match %x\n", lpdds, extUnlock);
|
||||
OutTraceDW(sMsg);
|
||||
if (IsAssertEnabled) MessageBox(0, sMsg, "pCreateSurfaceMethod", MB_OK | MB_ICONEXCLAMATION);
|
||||
@ -1481,7 +1481,10 @@ HRESULT WINAPI extDirectDrawCreate(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, I
|
||||
// did not destroy the object.... but why? when (I mean, in which situations? Maybe not always...)
|
||||
// and for which releases? The fix here assumes that this fact is true and holds always for ddraw 1
|
||||
// sessions.
|
||||
if(dxw.dwDDVersion==1) (*lplpdd)->AddRef(); // seems to fix problems in "Warhammer 40K Rites Of War"
|
||||
// update: this is no good for "Jet Moto" that created a ddraw session and expects to Release it
|
||||
// with a refcount zero.
|
||||
|
||||
//if(dxw.dwDDVersion==1) (*lplpdd)->AddRef(); // seems to fix problems in "Warhammer 40K Rites Of War"
|
||||
|
||||
if(IsDebug && (dxw.dwTFlags & OUTPROXYTRACE)){
|
||||
DDCAPS DriverCaps, EmulCaps;
|
||||
@ -1555,6 +1558,7 @@ HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *lpguid,
|
||||
OutTraceDDRAW("DirectDrawCreateEx: lpdd=%x guid=%s DDVersion=%d\n", *lplpdd, mode, dxw.dwDDVersion);
|
||||
|
||||
HookDDSession(lplpdd, dxw.dwDDVersion);
|
||||
lpPrimaryDD=*lplpdd;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -2733,6 +2737,11 @@ static HRESULT WINAPI extCreateSurface(int dxversion, CreateSurface_Type pCreate
|
||||
|
||||
// rebuild the clipper area
|
||||
if(dxw.dwFlags1 & CLIPCURSOR) dxw.SetClipCursor();
|
||||
|
||||
// v2.2.64: added extra ref needed to preserve ddraw session for later use. Is it a ddraw1 legacy?
|
||||
// seems to fix problems in "Warhammer 40K Rites Of War" that uses a ddraw session after reaching 0 refcount.
|
||||
if(dxw.dwDDVersion==1) lpdd->AddRef();
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
@ -3474,6 +3483,13 @@ HRESULT WINAPI extSetPalette(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpdd
|
||||
if(res2) OutTraceE("SetPalette: GetEntries ERROR res=%x(%s)\n", res2, ExplainDDError(res2));
|
||||
//mySetPalette(0, 256, lpentries);
|
||||
}
|
||||
// Apply palette to backbuffer surface. This is necessary on some games: "Duckman private dick", "Total Soccer 2000", ...
|
||||
if (lpDDSBack) {
|
||||
res=(*pSetPalette)(lpDDSBack, lpddp);
|
||||
if(res) OutTraceE("SetPalette: ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
}
|
||||
// add a reference to simulate what would happen in reality....
|
||||
lpdds->AddRef();
|
||||
res=0;
|
||||
}
|
||||
|
||||
@ -3540,7 +3556,7 @@ HRESULT WINAPI extSetClipper(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpdd
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDIRECTDRAWSURFACE lpdds2, DWORD flags, HANDLE hEvent)
|
||||
HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL IsPrim;
|
||||
@ -3549,22 +3565,22 @@ HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDIRECTDRAWSUR
|
||||
CleanRect(&lprect, __LINE__);
|
||||
|
||||
if(IsTraceDDRAW){
|
||||
OutTrace("Lock: lpdds=%x%s flags=%x(%s) lpdds2=%x",
|
||||
lpdds, (IsPrim ? "(PRIM)":""), flags, ExplainLockFlags(flags), lpdds2);
|
||||
OutTrace("Lock: lpdds=%x%s flags=%x(%s) lpDDSurfaceDesc=%x",
|
||||
lpdds, (IsPrim ? "(PRIM)":""), flags, ExplainLockFlags(flags), lpDDSurfaceDesc);
|
||||
if (lprect)
|
||||
OutTrace(" rect=(%d,%d)-(%d,%d)\n", lprect->left, lprect->top, lprect->right, lprect->bottom);
|
||||
else
|
||||
OutTrace(" rect=(NULL)\n");
|
||||
}
|
||||
|
||||
res=(*pLock)(lpdds, lprect, lpdds2, flags, hEvent);
|
||||
res=(*pLock)(lpdds, lprect, lpDDSurfaceDesc, flags, hEvent);
|
||||
if(res==DDERR_SURFACEBUSY){ // v70: fix for "Ancient Evil"
|
||||
(*pUnlockMethod(lpdds))(lpdds, NULL);
|
||||
res = (*pLock)(lpdds, lprect, lpdds2, flags, hEvent);
|
||||
res = (*pLock)(lpdds, lprect, lpDDSurfaceDesc, flags, hEvent);
|
||||
OutTraceDW("Lock RETRY: ret=%x(%s)\n", res, ExplainDDError(res));
|
||||
}
|
||||
if(res) OutTraceE("Lock ERROR: ret=%x(%s)\n", res, ExplainDDError(res));
|
||||
DumpSurfaceAttributes((LPDDSURFACEDESC)lpdds2, "[Locked]" , __LINE__);
|
||||
DumpSurfaceAttributes(lpDDSurfaceDesc, "[Locked]" , __LINE__);
|
||||
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
||||
|
||||
// shouldn't happen.... if hooked to non primary surface, just call regular method.
|
||||
@ -3574,7 +3590,7 @@ HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDIRECTDRAWSUR
|
||||
|
||||
LPDIRECTDRAWSURFACE2 lpDDSBuffer = NULL;
|
||||
|
||||
HRESULT WINAPI extLockDir(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDIRECTDRAWSURFACE lpdds2, DWORD flags, HANDLE hEvent)
|
||||
HRESULT WINAPI extLockDir(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
{
|
||||
HRESULT res, res2;
|
||||
static RECT client;
|
||||
@ -3586,8 +3602,8 @@ HRESULT WINAPI extLockDir(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDIRECTDRAW
|
||||
// to find out whether it is the primary or not, using lpdds==lpPrimaryDD->GetGDISurface(&lpDDSPrim);
|
||||
|
||||
if(IsTraceDDRAW){
|
||||
OutTrace("Lock: lpdds=%x flags=%x(%s) lpdds2=%x",
|
||||
lpdds, flags, ExplainLockFlags(flags), lpdds2);
|
||||
OutTrace("Lock: lpdds=%x flags=%x(%s) lpDDSurfaceDesc=%x",
|
||||
lpdds, flags, ExplainLockFlags(flags), lpDDSurfaceDesc);
|
||||
if (lprect)
|
||||
OutTrace(" rect=(%d,%d)-(%d,%d)\n", lprect->left, lprect->top, lprect->right, lprect->bottom);
|
||||
else
|
||||
@ -3643,10 +3659,10 @@ HRESULT WINAPI extLockDir(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDIRECTDRAW
|
||||
}
|
||||
}
|
||||
|
||||
res=(*pLock)(lpdds, lprect, lpdds2, flags, hEvent);
|
||||
res=(*pLock)(lpdds, lprect, lpDDSurfaceDesc, flags, hEvent);
|
||||
|
||||
if(res) OutTraceE("Lock ERROR: ret=%x(%s)\n", res, ExplainDDError(res));
|
||||
DumpSurfaceAttributes((LPDDSURFACEDESC)lpdds2, "[Locked]" , __LINE__);
|
||||
DumpSurfaceAttributes((LPDDSURFACEDESC)lpDDSurfaceDesc, "[Locked]" , __LINE__);
|
||||
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
||||
|
||||
return res;
|
||||
@ -4109,6 +4125,8 @@ HRESULT WINAPI extReleaseS(LPDIRECTDRAWSURFACE lpdds)
|
||||
lpDDSBack = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if(dxw.dwFlags4 & RETURNNULLREF) return 0;
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -4373,6 +4391,8 @@ ULONG WINAPI extReleaseD(LPDIRECTDRAW lpdd)
|
||||
//if((ActualRef==0) && (dxw.dwFlags3 & FORCE16BPP)) SwitchTo16BPP();
|
||||
|
||||
OutTraceDDRAW("Release(D): lpdd=%x ref=%x\n", lpdd, VirtualRef);
|
||||
|
||||
if(dxw.dwFlags4 & RETURNNULLREF) return 0;
|
||||
return (ULONG)VirtualRef;
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include "dxwcore.hpp"
|
||||
#include "hddraw.h"
|
||||
|
||||
typedef HRESULT (WINAPI *Lock_Type)(LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, DWORD, HANDLE);
|
||||
typedef HRESULT (WINAPI *Lock_Type)(LPDIRECTDRAWSURFACE, LPRECT, LPDDSURFACEDESC, DWORD, HANDLE);
|
||||
typedef HRESULT (WINAPI *Unlock4_Type)(LPDIRECTDRAWSURFACE, LPRECT);
|
||||
typedef HRESULT (WINAPI *Unlock1_Type)(LPDIRECTDRAWSURFACE, LPVOID);
|
||||
|
||||
@ -79,7 +79,7 @@ static HRESULT WINAPI EmuBlt_8_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest
|
||||
memset(&ddsd_dst,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_dst.dwSize = Set_dwSize_From_Surface(lpddsdst);
|
||||
ddsd_dst.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDIRECTDRAWSURFACE)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDDSURFACEDESC)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("EmuBlt8_32: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -96,7 +96,7 @@ static HRESULT WINAPI EmuBlt_8_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDIRECTDRAWSURFACE)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY, 0)) {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDDSURFACEDESC)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY, 0)) {
|
||||
(*pUnlockMethod(lpddsdst))(lpddsdst,0);
|
||||
OutTraceE("EmuBlt8_32: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return 0;
|
||||
@ -175,7 +175,7 @@ static HRESULT WINAPI EmuBlt_16_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes
|
||||
memset(&ddsd_dst,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_dst.dwSize = Set_dwSize_From_Surface(lpddsdst);
|
||||
ddsd_dst.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDIRECTDRAWSURFACE)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDDSURFACEDESC)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("EmuBlt16_32: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -192,7 +192,7 @@ static HRESULT WINAPI EmuBlt_16_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDIRECTDRAWSURFACE)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY|DDLOCK_WAIT, 0)) {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDDSURFACEDESC)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY|DDLOCK_WAIT, 0)) {
|
||||
(*pUnlockMethod(lpddsdst))(lpddsdst,0);
|
||||
OutTraceE("EmuBlt16_32: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
@ -283,7 +283,7 @@ static HRESULT WINAPI EmuBlt_24_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes
|
||||
memset(&ddsd_dst,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_dst.dwSize = Set_dwSize_From_Surface(lpddsdst);
|
||||
ddsd_dst.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDIRECTDRAWSURFACE)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDDSURFACEDESC)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("EmuBlt24_32: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -300,7 +300,7 @@ static HRESULT WINAPI EmuBlt_24_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDIRECTDRAWSURFACE)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY, 0)) {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDDSURFACEDESC)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY, 0)) {
|
||||
(*pUnlockMethod(lpddsdst))(lpddsdst,0);
|
||||
OutTraceE("EmuBlt24_32: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
@ -361,7 +361,7 @@ static HRESULT WINAPI EmuBlt_32_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes
|
||||
memset(&ddsd_dst,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_dst.dwSize = Set_dwSize_From_Surface(lpddsdst);
|
||||
ddsd_dst.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDIRECTDRAWSURFACE)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDDSURFACEDESC)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("EmuBlt32_32: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -378,7 +378,7 @@ static HRESULT WINAPI EmuBlt_32_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDIRECTDRAWSURFACE)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY, 0)) {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDDSURFACEDESC)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY, 0)) {
|
||||
(*pUnlockMethod(lpddsdst))(lpddsdst,0);
|
||||
OutTraceE("EmuBlt32_32: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
@ -433,7 +433,7 @@ static HRESULT WINAPI EmuBlt_8_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest
|
||||
memset(&ddsd_dst,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_dst.dwSize = Set_dwSize_From_Surface(lpddsdst);
|
||||
ddsd_dst.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDIRECTDRAWSURFACE)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDDSURFACEDESC)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("EmuBlt8_16: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -450,7 +450,7 @@ static HRESULT WINAPI EmuBlt_8_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDIRECTDRAWSURFACE)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY, 0)) {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDDSURFACEDESC)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY, 0)) {
|
||||
(*pUnlockMethod(lpddsdst))(lpddsdst,0);
|
||||
OutTraceE("EmuBlt8_16: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return 0;
|
||||
@ -516,7 +516,7 @@ static HRESULT WINAPI EmuBlt_24_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes
|
||||
memset(&ddsd_dst,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_dst.dwSize = Set_dwSize_From_Surface(lpddsdst);
|
||||
ddsd_dst.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDIRECTDRAWSURFACE)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDDSURFACEDESC)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("EmuBlt24_16: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -533,7 +533,7 @@ static HRESULT WINAPI EmuBlt_24_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDIRECTDRAWSURFACE)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY, 0)) {
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDDSURFACEDESC)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_READONLY, 0)) {
|
||||
(*pUnlockMethod(lpddsdst))(lpddsdst,0);
|
||||
OutTraceE("EmuBlt24_16: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return 0;
|
||||
@ -710,7 +710,7 @@ static HRESULT WINAPI RevBlt_32_to_8(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest
|
||||
memset(&ddsd_dst,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_dst.dwSize = Set_dwSize_From_Surface(lpddsdst);
|
||||
ddsd_dst.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDIRECTDRAWSURFACE)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDDSURFACEDESC)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("RevBlt32_8: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -718,7 +718,7 @@ static HRESULT WINAPI RevBlt_32_to_8(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest
|
||||
memset(&ddsd_src,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_src.dwSize = Set_dwSize_From_Surface(lpddssrc);
|
||||
ddsd_src.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDIRECTDRAWSURFACE)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDDSURFACEDESC)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("RevBlt32_8: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -788,7 +788,7 @@ static HRESULT WINAPI RevBlt_32_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes
|
||||
memset(&ddsd_dst,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_dst.dwSize = Set_dwSize_From_Surface(lpddsdst);
|
||||
ddsd_dst.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDIRECTDRAWSURFACE)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDDSURFACEDESC)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("RevBlt32_16: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -796,7 +796,7 @@ static HRESULT WINAPI RevBlt_32_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes
|
||||
memset(&ddsd_src,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_src.dwSize = Set_dwSize_From_Surface(lpddssrc);
|
||||
ddsd_src.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDIRECTDRAWSURFACE)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDDSURFACEDESC)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("RevBlt32_16: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -848,7 +848,7 @@ static HRESULT WINAPI RevBlt_16_to_8(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest
|
||||
memset(&ddsd_dst,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_dst.dwSize = Set_dwSize_From_Surface(lpddsdst);
|
||||
ddsd_dst.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDIRECTDRAWSURFACE)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddsdst, 0, (LPDDSURFACEDESC)&ddsd_dst, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("RevBlt16_8: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
@ -856,7 +856,7 @@ static HRESULT WINAPI RevBlt_16_to_8(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest
|
||||
memset(&ddsd_src,0,sizeof(DDSURFACEDESC2));
|
||||
ddsd_src.dwSize = Set_dwSize_From_Surface(lpddssrc);
|
||||
ddsd_src.dwFlags = DDSD_LPSURFACE | DDSD_PITCH;
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDIRECTDRAWSURFACE)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
if(res=(*pLock)(lpddssrc, 0, (LPDDSURFACEDESC)&ddsd_src, DDLOCK_SURFACEMEMORYPTR|DDLOCK_WRITEONLY|DDLOCK_WAIT, 0)){
|
||||
OutTraceE("RevBlt16_8: Lock ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
|
||||
return res;
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include "dxwnd.h"
|
||||
#include "dxwcore.hpp"
|
||||
|
||||
#define VERSION "2.02.63"
|
||||
#define VERSION "2.02.64"
|
||||
|
||||
#define DDTHREADLOCK 1
|
||||
|
||||
@ -146,17 +146,21 @@ void SetFPS(int fps)
|
||||
|
||||
LRESULT CALLBACK HookProc(int ncode, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
char name[MAX_PATH];
|
||||
char name[MAX_PATH+1];
|
||||
HWND hwnd;
|
||||
int i;
|
||||
static int DoOnce = FALSE;
|
||||
|
||||
// don't do more than once per process
|
||||
if(DoOnce) return CallNextHookEx(hHook, ncode, wparam, lparam);
|
||||
|
||||
// take care here: if anything stops or delays the execution logic, the whole
|
||||
// operating system hangs, since it can't activate new windows!
|
||||
|
||||
// could use WM_NCCREATE instead of WM_CREATE. Are there differences?
|
||||
hwnd = ((CWPSTRUCT *)lparam)->hwnd;
|
||||
if(((CWPSTRUCT *)lparam)->message == WM_CREATE){
|
||||
name[MAX_PATH]=0; // string terminator
|
||||
GetModuleFileName(0, name, MAX_PATH);
|
||||
for(i = 0; name[i]; i ++) name[i] = tolower(name[i]);
|
||||
WaitForSingleObject(hMutex, INFINITE);
|
||||
@ -168,7 +172,6 @@ LRESULT CALLBACK HookProc(int ncode, WPARAM wparam, LPARAM lparam)
|
||||
// check for locking thread (and hook) just once per process.
|
||||
// This callback is invoked per each process' thread.
|
||||
|
||||
if(DoOnce) break;
|
||||
DoOnce = TRUE;
|
||||
|
||||
// V.68: concurrency check. One game at a time, or exiting.
|
||||
|
Binary file not shown.
@ -83,7 +83,7 @@ typedef HRESULT (WINAPI *GetSurfaceDesc_Type)(LPDIRECTDRAWSURFACE, LPDDSURFACEDE
|
||||
typedef HRESULT (WINAPI *GetSurfaceDesc2_Type)(LPDIRECTDRAWSURFACE2, LPDDSURFACEDESC2);
|
||||
typedef HRESULT (WINAPI *InitializeC_Type)(LPDIRECTDRAWCLIPPER, LPDIRECTDRAW, DWORD);
|
||||
typedef HRESULT (WINAPI *IsLost_Type)(LPDIRECTDRAWSURFACE);
|
||||
typedef HRESULT (WINAPI *Lock_Type)(LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, DWORD, HANDLE);
|
||||
typedef HRESULT (WINAPI *Lock_Type)(LPDIRECTDRAWSURFACE, LPRECT, LPDDSURFACEDESC, DWORD, HANDLE);
|
||||
typedef HRESULT (WINAPI *ReleaseDC_Type)(LPDIRECTDRAWSURFACE, HDC);
|
||||
typedef HRESULT (WINAPI *Restore_Type)(LPDIRECTDRAWSURFACE);
|
||||
typedef HRESULT (WINAPI *SetClipper_Type)(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPER);
|
||||
|
@ -2092,11 +2092,12 @@ BOOL WINAPI extDestroyWindow(HWND hWnd)
|
||||
|
||||
BOOL WINAPI extCloseWindow(HWND hWnd)
|
||||
{
|
||||
// from MSDN: Minimizes (but does not destroy) the specified window.
|
||||
BOOL res;
|
||||
OutTraceB("CloseWindow: hwnd=%x\n", hWnd);
|
||||
if (hWnd == dxw.GethWnd()) {
|
||||
OutTraceDW("CloseWindow: close main hwnd=%x\n", hWnd);
|
||||
dxw.SethWnd(NULL);
|
||||
// do not delete the reference to main hWnd.
|
||||
}
|
||||
res=(*pCloseWindow)(hWnd);
|
||||
if(!res)OutTraceE("CloseWindow: ERROR err=%d\n", GetLastError());
|
||||
|
@ -185,8 +185,7 @@
|
||||
#define IDC_NOALPHACHANNEL 1143
|
||||
#define IDC_SUPPRESSCHILD 1144
|
||||
#define IDC_FIXREFCOUNTER 1145
|
||||
#define IDC_LIMITSCREENRES 1145
|
||||
#define IDC_SHOWTIMESTRETCH 1146
|
||||
#define IDC_RETURNNULLREF 1146
|
||||
#define IDC_ZBUFFERALWAYS 1147
|
||||
#define IDC_ZBUFFER0CLEAN 1148
|
||||
#define IDC_NOPOWER2FIX 1149
|
||||
@ -206,6 +205,9 @@
|
||||
#define IDC_STRETCHTIMERS 1164
|
||||
#define IDC_NOFLIPEMULATION 1165
|
||||
#define IDC_NOTEXTURES 1166
|
||||
#define IDC_LIMITSCREENRES 1167
|
||||
#define IDC_SHOWTIMESTRETCH 1168
|
||||
|
||||
#define ID_MODIFY 32771
|
||||
#define ID_DELETE 32772
|
||||
#define ID_ADD 32773
|
||||
|
@ -43,6 +43,7 @@ void CTabDirectX::DoDataExchange(CDataExchange* pDX)
|
||||
DDX_Check(pDX, IDC_NOPIXELFORMAT, cTarget->m_NoPixelFormat);
|
||||
DDX_Check(pDX, IDC_NOALPHACHANNEL, cTarget->m_NoAlphaChannel);
|
||||
DDX_Check(pDX, IDC_FIXREFCOUNTER, cTarget->m_FixRefCounter);
|
||||
DDX_Check(pDX, IDC_RETURNNULLREF, cTarget->m_ReturnNullRef);
|
||||
DDX_Check(pDX, IDC_NOFLIPEMULATION, cTarget->m_NoFlipEmulation);
|
||||
}
|
||||
|
||||
|
@ -45,6 +45,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
||||
m_NoPixelFormat = FALSE;
|
||||
m_NoAlphaChannel = FALSE;
|
||||
m_FixRefCounter = TRUE;
|
||||
m_ReturnNullRef = FALSE;
|
||||
m_SuppressChild = FALSE;
|
||||
m_HideDesktop = FALSE;
|
||||
m_LockSysColors = FALSE;
|
||||
|
@ -137,6 +137,7 @@ public:
|
||||
BOOL m_NoPixelFormat;
|
||||
BOOL m_NoAlphaChannel;
|
||||
BOOL m_FixRefCounter;
|
||||
BOOL m_ReturnNullRef;
|
||||
BOOL m_SuppressChild;
|
||||
BOOL m_HideDesktop;
|
||||
BOOL m_LockSysColors;
|
||||
|
Binary file not shown.
@ -349,6 +349,7 @@ BEGIN
|
||||
CONTROL "Fix ddraw ref counter",IDC_FIXREFCOUNTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,172,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 "Return 0 ref counter",IDC_RETURNNULLREF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,184,123,12
|
||||
END
|
||||
|
||||
IDD_TAB_INPUT DIALOGEX 0, 0, 300, 240
|
||||
|
Binary file not shown.
@ -176,6 +176,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
||||
if(dlg->m_NoPixelFormat) t->flags3 |= NOPIXELFORMAT;
|
||||
if(dlg->m_NoAlphaChannel) t->flags4 |= NOALPHACHANNEL;
|
||||
if(dlg->m_FixRefCounter) t->flags4 |= FIXREFCOUNTER;
|
||||
if(dlg->m_ReturnNullRef) t->flags4 |= RETURNNULLREF;
|
||||
if(dlg->m_SuppressChild) t->flags4 |= SUPPRESSCHILD;
|
||||
if(dlg->m_HideDesktop) t->flags4 |= HIDEDESKTOP;
|
||||
if(dlg->m_LockSysColors) t->flags3 |= LOCKSYSCOLORS;
|
||||
@ -323,6 +324,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
||||
dlg->m_NoPixelFormat = t->flags3 & NOPIXELFORMAT ? 1 : 0;
|
||||
dlg->m_NoAlphaChannel = t->flags4 & NOALPHACHANNEL ? 1 : 0;
|
||||
dlg->m_FixRefCounter = t->flags4 & FIXREFCOUNTER ? 1 : 0;
|
||||
dlg->m_ReturnNullRef = t->flags4 & RETURNNULLREF ? 1 : 0;
|
||||
dlg->m_SuppressChild = t->flags4 & SUPPRESSCHILD ? 1 : 0;
|
||||
dlg->m_HideDesktop = t->flags4 & HIDEDESKTOP ? 1 : 0;
|
||||
dlg->m_LockSysColors = t->flags3 & LOCKSYSCOLORS ? 1 : 0;
|
||||
@ -812,35 +814,59 @@ void CDxwndhostView::OnExport()
|
||||
|
||||
void CDxwndhostView::OnImport()
|
||||
{
|
||||
LV_ITEM listitem;
|
||||
int i;
|
||||
char path[MAX_PATH];
|
||||
for (i=0; strlen(TargetMaps[i].path) && i<MAXTARGETS; i++)
|
||||
;
|
||||
if (i==MAXTARGETS) return;
|
||||
path[0]=0;
|
||||
CFileDialog dlg( TRUE, "*.dxw", path, OFN_FILEMUSTEXIST,
|
||||
"dxwnd task config (*.dxw)|*.dxw|All Files (*.*)|*.*||", this);
|
||||
if( dlg.DoModal() == IDOK){
|
||||
LV_ITEM listitem;
|
||||
CListCtrl& listctrl = GetListCtrl();
|
||||
|
||||
LoadConfigItem(&TargetMaps[i], TitleMaps[i].title, 0, dlg.GetPathName().GetBuffer());
|
||||
CListCtrl& listctrl = GetListCtrl();
|
||||
|
||||
char buffer[4096] = {0};
|
||||
char folder[MAX_PATH+1];
|
||||
char pathname[MAX_PATH+1];
|
||||
OPENFILENAME ofn = {0};
|
||||
ofn.lStructSize = sizeof(ofn);
|
||||
ofn.lpstrFile = (LPSTR)buffer;
|
||||
ofn.nMaxFile = 4096;
|
||||
ofn.Flags = OFN_ALLOWMULTISELECT | OFN_EXPLORER;
|
||||
ofn.lpstrDefExt = "dxw";
|
||||
|
||||
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||
listitem.iItem = i;
|
||||
listitem.iSubItem = 0;
|
||||
listitem.iImage = SetTargetIcon(TargetMaps[i]);
|
||||
if (strlen(TitleMaps[i].title)==0){
|
||||
int len;
|
||||
CString FilePath;
|
||||
FilePath=TargetMaps[i].path;
|
||||
len=FilePath.ReverseFind('\\');
|
||||
FilePath=FilePath.Right(FilePath.GetLength()-len-1);
|
||||
strncpy_s(TitleMaps[i].title, sizeof(TitleMaps[i].title), FilePath.GetString(), sizeof(TitleMaps[i].title)-1);
|
||||
if(GetOpenFileName(&ofn)){
|
||||
if(buffer[ofn.nFileOffset - 1] != '\0'){
|
||||
// Single-Select
|
||||
// "buffer" - name of file
|
||||
LoadConfigItem(&TargetMaps[i], TitleMaps[i].title, 0, buffer);
|
||||
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||
listitem.iItem = i;
|
||||
listitem.iSubItem = 0;
|
||||
listitem.iImage = SetTargetIcon(TargetMaps[i]);
|
||||
listitem.pszText = TitleMaps[i].title;
|
||||
listctrl.InsertItem(&listitem);
|
||||
}
|
||||
else{
|
||||
// Multi-Select
|
||||
char* p = buffer;
|
||||
strcpy(folder, p);
|
||||
strcat(folder, "\\");
|
||||
p += lstrlen((LPSTR)p) + 1;
|
||||
while(*p){
|
||||
// "p" - name of each files, NULL to terminate
|
||||
if(!*p)break;
|
||||
strcpy(pathname, folder);
|
||||
strcat(pathname, p);
|
||||
LoadConfigItem(&TargetMaps[i], TitleMaps[i].title, 0, pathname);
|
||||
listitem.mask = LVIF_TEXT | LVIF_IMAGE;
|
||||
listitem.iItem = i;
|
||||
listitem.iSubItem = 0;
|
||||
listitem.iImage = SetTargetIcon(TargetMaps[i]);
|
||||
listitem.pszText = TitleMaps[i].title;
|
||||
listctrl.InsertItem(&listitem);
|
||||
i++;
|
||||
p += lstrlen((LPSTR)p) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
listitem.pszText = TitleMaps[i].title;
|
||||
listctrl.InsertItem(&listitem);
|
||||
Resize();
|
||||
SetTarget(TargetMaps);
|
||||
this->isUpdated=TRUE;
|
||||
|
Loading…
x
Reference in New Issue
Block a user