1
0
mirror of https://github.com/DxWnd/DxWnd.reloaded synced 2024-12-30 09:25:35 +01:00

v2_02_38_src

Former-commit-id: 6c8bf8b2fbaa063c52aa1cdf7dcc135ac12f4795
This commit is contained in:
gho tik 2013-10-21 12:38:23 -04:00 committed by Refael ACkermann
parent 15a98a4dff
commit 547623861d
111 changed files with 3358 additions and 9570 deletions

View File

@ -103,6 +103,7 @@
#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
#define SURFACEWARN 0x00800000 // warn when a unclassified surface capability is met (debug only!)
#define ANALYTICMODE 0x01000000 // activate analytic mode (debug only!)
// logging Tflags DWORD:
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,167 +0,0 @@
[window]
posx=1452
posy=365
sizx=320
sizy=514
[target]
title0=Rayman 2 Demo
path0=D:\Games\Rayman2Demo\Rayman2Demo.exe
module0=
opengllib0=
ver0=1
coord0=0
flag0=402653217
flagg0=1210056704
flagh0=2097172
flagi0=0
tflag0=64
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
title1=Mirror's Edge
path1=D:\Games\Mirror's Edge\Binaries\MirrorsEdge.exe
module1=
opengllib1=
ver1=0
coord1=0
flag1=-2013265882
flagg1=1207959552
flagh1=2097172
flagi1=0
tflag1=5
initx1=0
inity1=0
minx1=0
miny1=0
maxx1=0
maxy1=0
posx1=50
posy1=50
sizx1=800
sizy1=600
maxfps1=0
initts1=6
title2=LastHalfWin.exe
path2=D:\Games\Last Half Of Darkness\LastHalfWin.exe
module2=
opengllib2=
ver2=1
coord2=0
flag2=134217760
flagg2=1207959552
flagh2=4
flagi2=0
tflag2=512
initx2=0
inity2=0
minx2=0
miny2=0
maxx2=0
maxy2=0
posx2=50
posy2=50
sizx2=800
sizy2=600
maxfps2=0
initts2=0
title3=DOOM95.EXE
path3=D:\Games\Doom95i\DOOM95.EXE
module3=
opengllib3=
ver3=0
coord3=0
flag3=134217762
flagg3=1207959552
flagh3=20
flagi3=0
tflag3=512
initx3=0
inity3=0
minx3=0
miny3=0
maxx3=0
maxy3=0
posx3=50
posy3=50
sizx3=800
sizy3=600
maxfps3=0
initts3=0
title4=CNC3.exe
path4=D:\Games\Command & Conquer 3\CNC3.exe
module4=
opengllib4=
ver4=9
coord4=0
flag4=134217762
flagg4=1207959552
flagh4=20
flagi4=0
tflag4=512
initx4=0
inity4=0
minx4=0
miny4=0
maxx4=0
maxy4=0
posx4=50
posy4=50
sizx4=800
sizy4=600
maxfps4=0
initts4=0
title5=Div.exe
path5=D:\Games\Beyond Divinity\Div.exe
module5=
opengllib5=
ver5=0
coord5=0
flag5=134217762
flagg5=1207959552
flagh5=20
flagi5=0
tflag5=512
initx5=0
inity5=0
minx5=0
miny5=0
maxx5=0
maxy5=0
posx5=50
posy5=50
sizx5=800
sizy5=600
maxfps5=0
initts5=0
title6=martian gothic.exe
path6=D:\Games\Martian Gothic\martian gothic.exe
module6=
opengllib6=
ver6=7
coord6=0
flag6=201326626
flagg6=1208090624
flagh6=276
flagi6=0
tflag6=263
initx6=0
inity6=0
minx6=0
miny6=0
maxx6=0
maxy6=0
posx6=50
posy6=50
sizx6=800
sizy6=600
maxfps6=0
initts6=0

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0c14a21ce803c1f48696c754cbdb5368e40439fab6b64b9af7188331c159cba9
size 414720
oid sha256:d388e96ad41d9c1eafc912aecd8968fbd61f7f293a1f1a1cd69df02309c64344
size 419328

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:12cba4b1f36d3b9f0ed76b365035ee75fb22df7f464e0f05f05339a829c9586c
oid sha256:376135e3ce4f0be506edbfb44720a7c762f120258e1b24c11ccd6fe11cc6d375
size 526336

5
build/dxwnd.ini Normal file
View File

@ -0,0 +1,5 @@
[window]
posx=1127
posy=417
sizx=320
sizy=200

View File

@ -272,3 +272,13 @@ code reorganization
GUI:
removed useless flags and moved debug options in a hidden tab
v2.02.37
CORE:
fix: now saves ZBUFFER capabilities to restore them on queries. This eliminates one possible d3d error when attempting use surface emulated mode.
fixed surface caps for "Ancient Evil", "Star Wars Shadows of the Empire", "Star Force Deluxe".
fixed surface handling in "Star Force Deluxe" that rely on a implicit PRIMARY surface created with 0 flags & 0 capabilities.
fixed handling of Flip operations when BACKBUFFER surface no longer exists, but there's a QueryInterface clone.
attempt to fix GetSystemPaletteEntries in windowed mode by using CreateHalftonePalette
d3d8/9 GetDisplayMode method duplicated to take in account the different prototype!!
added tentative wrapper for GetDCEx() call
initial coding for timers wrapping for time stretching

2
dll/analytic.cpp Normal file
View File

@ -0,0 +1,2 @@

View File

@ -244,6 +244,7 @@ DDSURFACEDESC2 DDSD_Prim;
DDSURFACEDESC2 DDSD_Back;
DDSURFACEDESC2 DDSD_ZBuffer;
DWORD DDZBufferCaps;
DWORD PaletteEntries[256];
DWORD *Palette16BPP = NULL;
void *EmuScreenBuffer = NULL; // to implement pitch bug fix
@ -1658,6 +1659,15 @@ HRESULT WINAPI extQueryInterfaceS(void *lpdds, REFIID riid, LPVOID *obp)
return DDERR_GENERIC;
}
break;
case 0xA4665C60: // IID_IDirect3DRGBDevice
OutTraceD("QueryInterface: IID_IDirect3DRGBDevice\n");
break;
case 0xF2086B20: // IID_IDirect3DRampDevice
OutTraceD("QueryInterface: IID_IDirect3DRampDevice\n");
break;
case 0x881949a1: // IID_IDirect3DMMXDevice
OutTraceD("QueryInterface: IID_IDirect3DMMXDevice\n");
break;
case 0x4B9F0EE0:
OutTraceD("QueryInterface: IID_IDirectDrawColorControl\n");
break;
@ -1909,34 +1919,42 @@ HRESULT WINAPI extSetCooperativeLevel(void *lpdd, HWND hwnd, DWORD dwflags)
return res;
}
#define FIX_FLAGSMASK (DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PITCH|DDSD_PIXELFORMAT|DDSD_ZBUFFERBITDEPTH)
//#define FIXCAPS_ANALITICAL
#define FIX_FLAGSMASK (DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PITCH|DDSD_PIXELFORMAT|DDSD_ZBUFFERBITDEPTH|DDSD_TEXTURESTAGE)
static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
{
// To do: fix Dungeon Keeper II
// rules of thumb:
// 1) always get rid of DDSCAPS_VIDEOMEMORY caps
// 2) always add DDSCAPS_SYSTEMMEMORY caps
// 3) DDSCAPS_SYSTEMMEMORY is supported from dxversion 4
// 4) if DDSD_CAPS is not set, ignore caps
// 5) ignore DDSD_CKSRCBLT, ....
// 6) setting a different pixel format in memory requires DDSCAPS_OFFSCREENPLAIN capability
if(!(lpddsd->dwFlags & DDSD_CAPS)) lpddsd->ddsCaps.dwCaps = 0;
OutTraceD("FixSurfaceCaps: Flags=%x(%s) Caps=%x(%s)\n",
lpddsd->dwFlags, ExplainFlags(lpddsd->dwFlags), lpddsd->ddsCaps.dwCaps, ExplainDDSCaps(lpddsd->ddsCaps.dwCaps));
#ifdef FIXCAPS_ANALITICAL
void FixSurfaceCapsAnalytic(LPDDSURFACEDESC2 lpddsd, int dxversion)
{
switch (lpddsd->dwFlags & FIX_FLAGSMASK){
//case 0:
// switch (lpddsd->ddsCaps.dwCaps){
// case 0:
// // Star Force Deluxe
// lpddsd->dwFlags = DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PIXELFORMAT;
// lpddsd->ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY;
// lpddsd->dwHeight = dxw.GetScreenHeight();
// lpddsd->dwWidth = dxw.GetScreenWidth();
// SetPixFmt(lpddsd);
// return;
// break;
// }
// break;
case DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE:
// Ancient Evil:
// dwFlags: DDSD_CAPS+HEIGHT+WIDTH+PIXELFORMAT+TEXTURESTAGE
// dwCaps1: DDSCAPS_OFFSCREENPLAIN+SYSTEMMEMORY+TEXTURE
// dwCaps2: DDSCAPS2_TEXTUREMANAGE
SetPixFmt(lpddsd);
return;
break;
case DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_ZBUFFERBITDEPTH:
switch (lpddsd->ddsCaps.dwCaps){
case DDSCAPS_VIDEOMEMORY|DDSCAPS_ZBUFFER:
// Dungeon Keeper II
return;
break;
case DDSCAPS_SYSTEMMEMORY|DDSCAPS_ZBUFFER:
// "Star Wars Shadows of the Empire" through d3d
return;
break;
}
break;
case DDSD_CAPS|DDSD_WIDTH:
@ -1955,6 +1973,10 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
// Martian Gothic
return;
break;
case DDSCAPS_VIDEOMEMORY|DDSCAPS_WRITEONLY|DDSCAPS_RESERVED2:
// Empire Earth
return;
break;
}
break;
case DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH:
@ -2036,7 +2058,14 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
break;
case DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PIXELFORMAT:
switch (lpddsd->ddsCaps.dwCaps){
case DDSCAPS_OFFSCREENPLAIN:
case DDSCAPS_OFFSCREENPLAIN|DDSCAPS_3DDEVICE|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM:
// Empire Earth
// tbd
// try
lpddsd->ddsCaps.dwCaps = (DDSCAPS_OFFSCREENPLAIN|DDSCAPS_3DDEVICE|DDSCAPS_SYSTEMMEMORY);
// eotry
return;
break; case DDSCAPS_OFFSCREENPLAIN:
// Submarine titans (8BPP)
lpddsd->ddsCaps.dwCaps = (DDSCAPS_SYSTEMMEMORY|DDSCAPS_OFFSCREENPLAIN);
SetPixFmt(lpddsd);
@ -2054,6 +2083,10 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
// Wargames Direct3D hw acceleration
return;
break;
case DDSCAPS_TEXTURE:
// Empire Earth
return;
break;
case DDSCAPS_VIDEOMEMORY|DDSCAPS_ZBUFFER:
// Martian Gothic
lpddsd->ddsCaps.dwCaps = (DDSCAPS_SYSTEMMEMORY|DDSCAPS_ZBUFFER); // working ????
@ -2074,6 +2107,20 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
lpddsd->ddsCaps.dwCaps = DDSCAPS_OVERLAY|DDSCAPS_SYSTEMMEMORY;
return;
break;
case DDSCAPS_SYSTEMMEMORY:
// Star Force Deluxe
lpddsd->ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY;
// SetPixFmt(lpddsd);
return;
break;
case DDSCAPS_TEXTURE|DDSCAPS_VIDEOMEMORY|DDSCAPS_ALLOCONLOAD:
// Star Wars Shadows of the Empire
// seems to work both with/without SetPixFmt, but doesn't like DDSCAPS_SYSTEMMEMORY textures.
// Setting SetPixFmt makes bad alpha transparencies!
//lpddsd->ddsCaps.dwCaps = (DDSCAPS_TEXTURE|DDSCAPS_SYSTEMMEMORY|DDSCAPS_ALLOCONLOAD);
//SetPixFmt(lpddsd);
return;
break;
}
break;
case DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PITCH|DDSD_PIXELFORMAT:
@ -2100,9 +2147,35 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
sprintf(sMsg, "Flags=%x(%s) Caps=%x(%s)", lpddsd->dwFlags, ExplainFlags(lpddsd->dwFlags), lpddsd->ddsCaps.dwCaps, ExplainDDSCaps(lpddsd->ddsCaps.dwCaps));
MessageBox(0, sMsg, "FixSurfaceCaps unmanaged setting", MB_OK | MB_ICONEXCLAMATION);
}
#endif
}
if((lpddsd->dwFlags & (DDSD_WIDTH|DDSD_HEIGHT)) == DDSD_WIDTH) { // buffer surface - no changes
static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion)
{
// To do: fix Dungeon Keeper II
// rules of thumb:
// 1) always get rid of DDSCAPS_VIDEOMEMORY caps
// 2) always add DDSCAPS_SYSTEMMEMORY caps
// 3) DDSCAPS_SYSTEMMEMORY is supported from dxversion 4
// 4) if DDSD_CAPS is not set, ignore caps
// 5) ignore DDSD_CKSRCBLT, ....
// 6) setting a different pixel format in memory requires DDSCAPS_OFFSCREENPLAIN capability
// 7) DDSD_TEXTURESTAGE surfaces may need to adjust fixel format (....???)
if(!(lpddsd->dwFlags & DDSD_CAPS)) lpddsd->ddsCaps.dwCaps = 0;
OutTraceD("FixSurfaceCaps: Flags=%x(%s) Caps=%x(%s)\n",
lpddsd->dwFlags, ExplainFlags(lpddsd->dwFlags), lpddsd->ddsCaps.dwCaps, ExplainDDSCaps(lpddsd->ddsCaps.dwCaps));
if(dxw.dwFlags3 & ANALYTICMODE) return FixSurfaceCapsAnalytic(lpddsd, dxversion);
if((lpddsd->dwFlags & (DDSD_WIDTH|DDSD_HEIGHT)) == DDSD_WIDTH) {
// buffer surface - no changes
return;
}
if((lpddsd->dwFlags & (DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE)) == (DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE)){
// textures, set proper color depth and make no further changes
SetPixFmt(lpddsd);
return;
}
if((lpddsd->dwFlags & DDSD_CAPS) && (lpddsd->ddsCaps.dwCaps & DDSCAPS_ZBUFFER)) { // z-buffer surface - set to memory
@ -2394,8 +2467,6 @@ static HRESULT BuildGenericEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf
return res;
}
if(ddsd.ddsCaps.dwCaps & DDSCAPS_ZBUFFER) lpDDZBuffer=*lplpdds;
OutTraceD("CreateSurface: created Emu_Generic dds=%x\n", *lplpdds);
if(IsDebug) DescribeSurface(*lplpdds, dxversion, "DDSEmu_Generic", __LINE__);
// diagnostic hooks ....
@ -2409,6 +2480,7 @@ static HRESULT BuildGenericDir(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf
HRESULT res;
DumpSurfaceAttributes((LPDDSURFACEDESC)lpddsd, "[Dir Generic]" , __LINE__);
res = (*pCreateSurface)(lpdd, lpddsd, lplpdds, 0);
if(res){
if ((dxw.dwFlags1 & SWITCHVIDEOMEMORY) && (res==DDERR_OUTOFVIDEOMEMORY)){
@ -2483,6 +2555,14 @@ static HRESULT WINAPI extCreateSurface(int dxversion, CreateSurface_Type pCreate
memcpy(&ddsd, lpddsd, lpddsd->dwSize); // Copy
// v2.02.38: this is odd: in "Star Force Deluxe" there is no PRIMARY surface, but a surface with
// 0 flags and 0 capabilities serves for this purpose. Is it a side-effect of old ddraw releases?
if((dxversion == 1) && (ddsd.dwFlags == 0)){ // Star Force Deluxe
ddsd.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
if(dxw.VirtualPixelFormat.dwRGBBitCount == 8) ddsd.ddsCaps.dwCaps |= DDSCAPS_PALETTE;
}
// creation of the primary surface....
if(ddsd.dwFlags & DDSD_CAPS && ddsd.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE){
GetHookInfo()->Height=(short)dxw.GetScreenHeight();
@ -2497,7 +2577,7 @@ static HRESULT WINAPI extCreateSurface(int dxversion, CreateSurface_Type pCreate
if (lpDDC) while(lpDDC->Release());
if (lpDDSEmu_Back) while(lpDDSEmu_Back->Release());
if (lpDDSEmu_Prim) while(lpDDSEmu_Prim->Release());
if (ddsd.dwFlags & DDSD_BACKBUFFERCOUNT) {
if (ddsd.dwFlags & DDSD_BACKBUFFERCOUNT) { // Praetorians !!!!
if (lpDDSBack) while(lpDDSBack->Release());
lpBackBufferDD = NULL;
}
@ -2574,7 +2654,14 @@ static HRESULT WINAPI extCreateSurface(int dxversion, CreateSurface_Type pCreate
return res;
}
// if nothing else, it's a generic surface
// if nothing else, it's a generic/zbuffer surface
if(lpddsd->ddsCaps.dwCaps & DDSCAPS_ZBUFFER) {
lpDDZBuffer=*lplpdds;
DDZBufferCaps = lpddsd->ddsCaps.dwCaps;
OutTraceD("CreateSurface: lpDDZBuffer=%x save ZBUFFER caps=%x(%s)\n", lpDDZBuffer, DDZBufferCaps, ExplainDDSCaps(DDZBufferCaps));
}
res=BuildGeneric(lpdd, pCreateSurface, lpddsd, dxversion, lplpdds, pu);
if(!res) dxw.MarkRegularSurface(*lplpdds);
@ -2617,7 +2704,7 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet
dxversion, lpdds, (IsPrim?"(PRIM)":(IsBack ? "(BACK)":"")), lpddsc->dwCaps, ExplainDDSCaps(lpddsc->dwCaps));
#if 0
if(0 && (lpddsc->dwCaps & DDSCAPS_MIPMAP)){
if(lpddsc->dwCaps & DDSCAPS_MIPMAP){
OutTraceD("GetAttachedSurface: emulate MIPMAP capability\n");
lpddsc->dwCaps &= ~DDSCAPS_MIPMAP;
}
@ -2785,6 +2872,10 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect,
sprintf(sInfo, " ddbltfx.ROP=%x", lpddbltfx->dwROP);
strcat(sLog, sInfo);
}
if (dwflags & DDBLT_DEPTHFILL){
sprintf(sInfo, " ddbltfx.FillDepth=%x", lpddbltfx->dwFillDepth);
strcat(sLog, sInfo);
}
}
strcat(sLog,"\n");
OutTrace(sLog);
@ -3041,6 +3132,12 @@ HRESULT WINAPI extFlip(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWSURFACE lpddssrc,
res=sBlt("Flip", lpdds, NULL, lpddssrc, NULL, DDBLT_WAIT, 0, TRUE);
}
else{
//v2.02.38: look for a valid BackBuffer surface
if(!lpDDSBack) lpDDSBack=dxw.GetBackBufferSurface();
if(!lpDDSBack){
OutTraceE("Flip: no backbuffer\n");
return DDERR_INVALIDPARAMS;
}
if (dxw.dwFlags2 & BACKBUFATTACH){
RECT NullArea;
NullArea.left=NullArea.top=0;
@ -3139,6 +3236,8 @@ HRESULT WINAPI extBltFast(LPDIRECTDRAWSURFACE lpdds, DWORD dwx, DWORD dwy,
return ret;
}
#define DDPCAPS_INITIALIZE_LEGACY 0x00000008l
HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY lpddpa,
LPDIRECTDRAWPALETTE *lplpddp, IUnknown *pu)
{
@ -3157,6 +3256,8 @@ HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY
return res;
}
if (dwflags & ~(DDPCAPS_PRIMARYSURFACE|DDPCAPS_8BIT|DDPCAPS_ALLOW256|DDPCAPS_INITIALIZE_LEGACY)) STOPPER("Palette flags");
res = (*pCreatePalette)(lpdd, dwflags & ~DDPCAPS_PRIMARYSURFACE, lpddpa, lplpddp, pu);
if(res) {
if (res) OutTraceD("CreatePalette: res=%x(%s)\n", res, ExplainDDError(res));
@ -3165,7 +3266,8 @@ HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY
HookDDPalette(lplpddp);
if(dwflags & DDPCAPS_PRIMARYSURFACE){
//if(dwflags & DDPCAPS_PRIMARYSURFACE){
if(dwflags & DDPCAPS_8BIT){ // v2.02.38
mySetPalette(0, 256, lpddpa);
lpDDP = *lplpddp;
}
@ -3251,8 +3353,8 @@ HRESULT WINAPI extSetEntries(LPDIRECTDRAWPALETTE lpddp, DWORD dwflags, DWORD dws
HRESULT res;
dxw.IsGDIPalette=FALSE;
OutTraceD("SetEntries: dwFlags=%x, start=%d, count=%d\n", //GHO: added trace infos
dwflags, dwstart, dwcount);
OutTraceD("SetEntries: lpddp=%x dwFlags=%x, start=%d, count=%d entries=%x\n", //GHO: added trace infos
lpddp, dwflags, dwstart, dwcount, lpentries);
res = (*pSetEntries)(lpddp, dwflags, dwstart, dwcount, lpentries);
if(res) OutTraceE("SetEntries: ERROR res=%x(%s)\n", res, ExplainDDError(res));
@ -3831,6 +3933,10 @@ HRESULT WINAPI extReleaseS(LPDIRECTDRAWSURFACE lpdds)
dxw.ResetPrimarySurface();
}
}
if(lpdds==lpDDSBack) { // v2.02.38
OutTraceD("Release(S): Clearing lpDDSBack pointer\n");
lpDDSBack = NULL;
}
}
return res;
}
@ -4016,8 +4122,14 @@ HRESULT WINAPI extGetCapsS(int dxInterface, GetCapsS_Type pGetCapsS, LPDIRECTDRA
if ((caps->dwCaps & DDSCAPS_ZBUFFER) || (lpdds == lpDDZBuffer)){
OutTraceD("GetCaps(S%d): fixing ZBUFFER surface\n", dxInterface);
IsFixed=TRUE;
caps->dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM);
caps->dwCaps &= ~DDSCAPS_SYSTEMMEMORY; // zbuffer surfaces can't be this way (beware: it can be OFFSCREENPLAIN!)
if (DDZBufferCaps & DDSCAPS_SYSTEMMEMORY){
caps->dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_SYSTEMMEMORY);
caps->dwCaps &= ~(DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM);
}
else {
caps->dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM);
caps->dwCaps &= ~DDSCAPS_SYSTEMMEMORY;
}
}
if(IsFixed) OutTraceD("GetCaps(S%d): lpdds=%x FIXED caps=%x(%s)\n", dxInterface, lpdds, caps->dwCaps, ExplainDDSCaps(caps->dwCaps));
@ -4149,12 +4261,37 @@ HRESULT WINAPI extGetSurfaceDesc(GetSurfaceDesc_Type pGetSurfaceDesc, LPDIRECTDR
if (lpddsd->ddsCaps.dwCaps & DDSCAPS_ZBUFFER) {
OutTraceD("GetSurfaceDesc: fixing ZBUFFER surface\n");
IsFixed=TRUE;
lpddsd->ddsCaps.dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM);
//lpddsd->ddsCaps.dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_VIDEOMEMORY);
lpddsd->ddsCaps.dwCaps &= ~DDSCAPS_SYSTEMMEMORY; // zbuffer surfaces can't be this way
if (DDZBufferCaps & DDSCAPS_SYSTEMMEMORY){
lpddsd->ddsCaps.dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_SYSTEMMEMORY);
lpddsd->ddsCaps.dwCaps &= ~(DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM);
}
else {
lpddsd->ddsCaps.dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM);
lpddsd->ddsCaps.dwCaps &= ~DDSCAPS_SYSTEMMEMORY;
}
}
#ifdef EXPERIMENTAL_1
if(1) {
IsFixed=TRUE;
if(lpddsd->ddsCaps.dwCaps & DDSCAPS_BACKBUFFER){
lpddsd->dwSize = sizeof(DDSURFACEDESC2);
lpddsd->ddsCaps.dwCaps |= DDSCAPS_RESERVED2;
((LPDDSURFACEDESC2)lpddsd)->ddsCaps.dwCaps2 = DDSCAPS2_RESERVED2;
((LPDDSURFACEDESC2)lpddsd)->ddsCaps.dwCaps3 = 0;
}
else
if(lpddsd->ddsCaps.dwCaps & DDSCAPS_BACKBUFFER){
}
else {
lpddsd->ddsCaps.dwCaps |= DDSCAPS_RESERVED2;
((LPDDSURFACEDESC2)lpddsd)->ddsCaps.dwCaps2 |= DDSCAPS2_RESERVED2;
}
}
#endif
if(IsFixed) LogSurfaceAttributes(lpddsd, "GetSurfaceDesc [FIXED]", __LINE__);
return DD_OK;
}

View File

@ -401,17 +401,6 @@ char *ExplainFlipFlags(DWORD c)
return(eb);
}
char *ExplainFlipStatusFlags(DWORD c)
{
char *ep;
switch(c){
case DDGFS_CANFLIP: ep="DDGFS_CANFLIP"; break;
case DDGFS_ISFLIPDONE: ep="DDGFS_ISFLIPDONE"; break;
default: ep="unknown"; break;
}
return ep;
}
char *ExplainBltFlags(DWORD c)
{
static char eb[512];
@ -467,6 +456,8 @@ char *ExplainBltFastFlags(DWORD c)
return(eb);
}
#define DDPCAPS_INITIALIZE_LEGACY 0x00000008l
char *ExplainCreatePaletteFlags(DWORD c)
{
static char eb[256];
@ -475,7 +466,9 @@ char *ExplainCreatePaletteFlags(DWORD c)
if (c & DDPCAPS_4BIT) strcat(eb, "4BIT+");
if (c & DDPCAPS_8BITENTRIES) strcat(eb, "8BITENTRIES+");
if (c & DDPCAPS_8BIT) strcat(eb, "8BIT+");
if (c & DDPCAPS_INITIALIZE) strcat(eb, "INITIALIZE+");
//if (c & DDPCAPS_INITIALIZE) strcat(eb, "INITIALIZE+");
// DDPCAPS_INITIALIZE is obsolete and redefined to 0x0, but that is not the legacy value embedded in assembly!
if (c & DDPCAPS_INITIALIZE_LEGACY) strcat(eb, "INITIALIZE+");
if (c & DDPCAPS_PRIMARYSURFACE) strcat(eb, "PRIMARYSURFACE+");
if (c & DDPCAPS_PRIMARYSURFACELEFT) strcat(eb, "PRIMARYSURFACELEFT+");
if (c & DDPCAPS_ALLOW256) strcat(eb, "ALLOW256+");
@ -637,6 +630,18 @@ char *ExplainBltStatus(DWORD c)
return(eb);
}
char *ExplainFlipStatus(DWORD c)
{
static char *eb;
switch(c)
{
case DDGFS_CANFLIP: eb="DDGFS_CANFLIP"; break;
case DDGFS_ISFLIPDONE: eb="DDGFS_ISFLIPDONE"; break;
default: eb="invalid"; break;
}
return(eb);
}
char *ExplainDDError(DWORD c)
{
static char *eb;
@ -1492,4 +1497,32 @@ char *ExplainPeekRemoveMsg(DWORD c)
if(c & QS_SENDMESSAGE) strcat(eb, "+SENDMESSAGE");
if(c & QS_ALLPOSTMESSAGE) strcat(eb, "+ALLPOSTMESSAGE");
return(eb);
}
}
char *ExplainGetDCExFlags(DWORD c)
{
static char eb[128];
unsigned int l;
strcpy(eb,"DCX_");
if(c & DCX_WINDOW) strcat(eb, "WINDOW+");
if(c & DCX_CACHE) strcat(eb, "CACHE+");
if(c & DCX_PARENTCLIP) strcat(eb, "PARENTCLIP+");
if(c & DCX_CLIPSIBLINGS) strcat(eb, "CLIPSIBLINGS+");
if(c & DCX_CLIPCHILDREN) strcat(eb, "CLIPCHILDREN+");
if(c & DCX_NORESETATTRS) strcat(eb, "NORESETATTRS+");
if(c & DCX_EXCLUDERGN) strcat(eb, "EXCLUDERGN+");
if(c & DCX_EXCLUDEUPDATE) strcat(eb, "EXCLUDEUPDATE+");
if(c & DCX_INTERSECTRGN) strcat(eb, "INTERSECTRGN+");
if(c & DCX_INTERSECTUPDATE) strcat(eb, "INTERSECTUPDATE+");
if(c & DCX_VALIDATE) strcat(eb, "VALIDATE+");
l=strlen(eb);
if (l>strlen("DCX_")) eb[l-1]=0; // delete last '+' if any
else strcpy(eb,"NULL");
return(eb);
}

View File

@ -13,7 +13,6 @@ extern char *ExplainDDCKeyCaps(DWORD);
extern char *ExplainCoopFlags(DWORD);
extern char *ExplainPixelFormatFlags(DWORD);
extern char *ExplainFlipFlags(DWORD);
extern char *ExplainFlipStatusFlags(DWORD);
extern char *ExplainBltFlags(DWORD);
extern char *ExplainBltFastFlags(DWORD);
extern char *ExplainCreatePaletteFlags(DWORD);
@ -22,6 +21,7 @@ extern char *ExplainStyle(DWORD);
extern char *ExplainExStyle(DWORD);
extern char *ExplainShowCmd(int);
extern char *ExplainBltStatus(DWORD);
extern char *ExplainFlipStatus(DWORD);
extern char *ExplainDDError(DWORD);
extern char *ExplainWinMessage(DWORD);
extern char *ExplainResizing(DWORD);
@ -42,3 +42,4 @@ extern char *ExplainMCIFlags(DWORD, DWORD);
extern char *ExplainRegType(DWORD);
extern char *ExplainDCType(DWORD);
extern char *ExplainPeekRemoveMsg(DWORD);
extern char *ExplainGetDCExFlags(DWORD);

View File

@ -15,7 +15,6 @@ dxwCore::dxwCore()
{
// initialization stuff ....
FullScreen=FALSE;
if(dxw.dwFlags3 & FULLSCREENONLY) FullScreen=TRUE;
SethWnd(NULL);
SetScreenSize();
dwMaxDDVersion=7;
@ -60,6 +59,7 @@ void dxwCore::InitTarget(TARGETMAP *target)
dwFlags3 = target->flags3;
dwFlags4 = target->flags4;
dwTFlags = target->tflags;
if(dxw.dwFlags3 & FULLSCREENONLY) FullScreen=TRUE;
gsModules = target->module;
MaxFPS = target->MaxFPS;
CustomOpenGLLib = target->OpenGLLib;
@ -156,8 +156,8 @@ BOOL dxwCore::IsAPrimarySurface(LPDIRECTDRAWSURFACE ps)
// treat NULL surface ptr as a non primary
if(!ps) return FALSE;
for (i=0;i<DDSQLEN;i++) {
if (PrimSurfaces[i]==(DWORD)ps) return TRUE;
if (PrimSurfaces[i]==0) return FALSE;
if (PrimSurfaces[i]==(DWORD)ps) return TRUE;
}
return FALSE;
}
@ -168,8 +168,8 @@ BOOL dxwCore::IsABackBufferSurface(LPDIRECTDRAWSURFACE ps)
// treat NULL surface ptr as a non primary
if(!ps) return FALSE;
for (i=0;i<DDSQLEN;i++) {
if (BackSurfaces[i]==(DWORD)ps) return TRUE;
if (BackSurfaces[i]==0) return FALSE;
if (BackSurfaces[i]==(DWORD)ps) return TRUE;
}
return FALSE;
}

View File

@ -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.37"
#define VERSION "2.02.38"
#define DDTHREADLOCK 1
@ -160,7 +160,7 @@ LRESULT CALLBACK HookProc(int ncode, WPARAM wparam, LPARAM lparam)
GetModuleFileName(0, name, MAX_PATH);
for(i = 0; name[i]; i ++) name[i] = tolower(name[i]);
WaitForSingleObject(hMutex, INFINITE);
for(i = 0; pMapping[i].path[0]; i ++){
for(i = 0; pMapping[i].path[0] && (i<MAXTARGETS); i++){
if (!(pMapping[i].flags3 & HOOKENABLED)) continue;
if(!strncmp(name, pMapping[i].path, strlen(name)))
{

Binary file not shown.

View File

@ -220,6 +220,10 @@
RelativePath=".\advapi.cpp"
>
</File>
<File
RelativePath=".\analytic.cpp"
>
</File>
<File
RelativePath=".\ddraw.cpp"
>

View File

@ -530,8 +530,20 @@ UINT WINAPI extGetSystemPaletteEntries(HDC hdc, UINT iStartIndex, UINT nEntries,
ret=(*pGDIGetSystemPaletteEntries)(hdc, iStartIndex, nEntries, lppe);
OutTraceD("GetSystemPaletteEntries: ret=%d\n", ret);
if((ret == 0) && (dxw.dwFlags1 & EMULATESURFACE)) {
OutTraceD("GetSystemPaletteEntries: fixing ret=%d\n", nEntries);
//OutTraceD("GetSystemPaletteEntries: fixing ret=%d\n", nEntries);
//ret = nEntries;
// this seems to build a more reasonable system palette ....
HPALETTE hpal;
hpal=CreateHalftonePalette(NULL);
GetPaletteEntries(hpal, iStartIndex, nEntries, lppe);
ret = nEntries;
OutTraceD("GetSystemPaletteEntries: fixing ret=%d\n", ret);
if(IsDebug){
UINT idx;
OutTraceD("PaletteEntries[%x]= ", nEntries);
for(idx=0; idx<nEntries; idx++) OutTraceD("(%02x.%02x.%02x)", lppe[idx].peRed, lppe[idx].peGreen, lppe[idx].peBlue);
OutTraceD("\n");
}
}
return ret;
}

View File

@ -25,7 +25,8 @@ typedef HRESULT (WINAPI *CreateDeviceEx_Type)(void *, UINT, D3DDEVTYPE, HWND, DW
typedef HRESULT (WINAPI *EnumAdapterModes8_Type)(void *, UINT, UINT, D3DDISPLAYMODE *);
typedef HRESULT (WINAPI *EnumAdapterModes9_Type)(void *, UINT, D3DFORMAT ,UINT, D3DDISPLAYMODE *);
typedef HRESULT (WINAPI *GetAdapterDisplayMode_Type)(void *, UINT, D3DDISPLAYMODE *);
typedef HRESULT (WINAPI *GetDisplayMode_Type)(void *, D3DDISPLAYMODE *);
typedef HRESULT (WINAPI *GetDisplayMode8_Type)(void *, D3DDISPLAYMODE *);
typedef HRESULT (WINAPI *GetDisplayMode9_Type)(void *, UINT, D3DDISPLAYMODE *);
typedef HRESULT (WINAPI *Present_Type)(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *);
typedef HRESULT (WINAPI *SetRenderState_Type)(void *, D3DRENDERSTATETYPE, DWORD);
typedef HRESULT (WINAPI *GetRenderState_Type)(void *, D3DRENDERSTATETYPE, DWORD );
@ -65,7 +66,8 @@ HRESULT WINAPI extEnumAdapterModes8(void *, UINT, UINT , D3DDISPLAYMODE *);
HRESULT WINAPI extEnumAdapterModes9(void *, UINT, D3DFORMAT, UINT , D3DDISPLAYMODE *);
HRESULT WINAPI extGetAdapterDisplayMode8(void *, UINT, D3DDISPLAYMODE *);
HRESULT WINAPI extGetAdapterDisplayMode9(void *, UINT, D3DDISPLAYMODE *);
HRESULT WINAPI extGetDisplayMode(void *, D3DDISPLAYMODE *);
HRESULT WINAPI extGetDisplayMode8(void *, D3DDISPLAYMODE *);
HRESULT WINAPI extGetDisplayMode9(void *, UINT, D3DDISPLAYMODE *);
HRESULT WINAPI extPresent(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *);
HRESULT WINAPI extSetRenderState(void *, D3DRENDERSTATETYPE, DWORD);
HRESULT WINAPI extGetRenderState(void *, D3DRENDERSTATETYPE, DWORD);
@ -107,7 +109,8 @@ EnumAdapterModes8_Type pEnumAdapterModes8 = 0;
EnumAdapterModes9_Type pEnumAdapterModes9 = 0;
GetAdapterDisplayMode_Type pGetAdapterDisplayMode8 = 0;
GetAdapterDisplayMode_Type pGetAdapterDisplayMode9 = 0;
GetDisplayMode_Type pGetDisplayMode = 0;
GetDisplayMode8_Type pGetDisplayMode8 = 0;
GetDisplayMode9_Type pGetDisplayMode9 = 0;
Present_Type pPresent = 0;
SetRenderState_Type pSetRenderState = 0;
GetRenderState_Type pGetRenderState = 0;
@ -524,16 +527,30 @@ HRESULT WINAPI extPresent(void *pd3dd, CONST RECT *pSourceRect, CONST RECT *pDes
return res;
}
HRESULT WINAPI extGetDisplayMode(void *lpd3d, D3DDISPLAYMODE *pMode)
HRESULT WINAPI extGetDisplayMode8(void *lpd3d, D3DDISPLAYMODE *pMode)
{
HRESULT res;
res=(*pGetDisplayMode)(lpd3d, pMode);
OutTraceD("DEBUG: GetDisplayMode: size=(%dx%d) RefreshRate=%d Format=%d\n",
res=(*pGetDisplayMode8)(lpd3d, pMode);
OutTraceD("DEBUG: GetDisplayMode(8): size=(%dx%d) RefreshRate=%d Format=%d\n",
pMode->Width, pMode->Height, pMode->RefreshRate, pMode->Format);
if(dxw.dwFlags2 & KEEPASPECTRATIO){
pMode->Width=dxw.iSizX;
pMode->Height=dxw.iSizY;
OutTraceD("DEBUG: GetDisplayMode: fixed size=(%dx%d)\n", pMode->Width, pMode->Height);
OutTraceD("DEBUG: GetDisplayMode(8): fixed size=(%dx%d)\n", pMode->Width, pMode->Height);
}
return res;
}
HRESULT WINAPI extGetDisplayMode9(void *lpd3d, UINT iSwapChain, D3DDISPLAYMODE *pMode)
{
HRESULT res;
res=(*pGetDisplayMode9)(lpd3d, iSwapChain, pMode);
OutTraceD("DEBUG: GetDisplayMode(9): SwapChain=%d size=(%dx%d) RefreshRate=%d Format=%d\n",
iSwapChain, pMode->Width, pMode->Height, pMode->RefreshRate, pMode->Format);
if(dxw.dwFlags2 & KEEPASPECTRATIO){
pMode->Width=dxw.iSizX;
pMode->Height=dxw.iSizY;
OutTraceD("DEBUG: GetDisplayMode(9): fixed size=(%dx%d)\n", pMode->Width, pMode->Height);
}
return res;
}
@ -703,7 +720,7 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype,
pReset=NULL; // to avoid assert condition
SetHook((void *)(**(DWORD **)ppd3dd + 0), extQueryInterfaceDev8, (void **)&pQueryInterfaceDev8, "QueryInterface(D8)");
SetHook((void *)(**(DWORD **)ppd3dd + 24), extGetDirect3D, (void **)&pGetDirect3D, "GetDirect3D(D8)");
//SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode, (void **)&pGetDisplayMode, "GetDisplayMode(D8)");
SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode8, (void **)&pGetDisplayMode8, "GetDisplayMode(D8)");
SetHook((void *)(**(DWORD **)ppd3dd + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D8)");
SetHook((void *)(**(DWORD **)ppd3dd + 56), extReset, (void **)&pReset, "Reset(D8)");
SetHook((void *)(**(DWORD **)ppd3dd + 60), extPresent, (void **)&pPresent, "Present(D8)");
@ -722,7 +739,7 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype,
pReset=NULL; // to avoid assert condition
SetHook((void *)(**(DWORD **)ppd3dd + 0), extQueryInterfaceDev9, (void **)&pQueryInterfaceDev9, "QueryInterface(D9)");
SetHook((void *)(**(DWORD **)ppd3dd + 24), extGetDirect3D, (void **)&pGetDirect3D, "GetDirect3D(D9)");
//SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode, (void **)&pGetDisplayMode, "GetDisplayMode(D9)");
SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)");
SetHook((void *)(**(DWORD **)ppd3dd + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D9)");
SetHook((void *)(**(DWORD **)ppd3dd + 64), extReset, (void **)&pReset, "Reset(D9)");
SetHook((void *)(**(DWORD **)ppd3dd + 68), extPresent, (void **)&pPresent, "Present(D9)");
@ -810,7 +827,7 @@ HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetyp
void *pReset;
pReset=NULL; // to avoid assert condition
SetHook((void *)(**(DWORD **)ppd3dd + 0), extQueryInterfaceDev9, (void **)&pQueryInterfaceDev9, "QueryInterface(D9)");
SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode, (void **)&pGetDisplayMode, "GetDisplayMode(D9)");
SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)");
SetHook((void *)(**(DWORD **)ppd3dd + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D9)");
SetHook((void *)(**(DWORD **)ppd3dd + 64), extReset, (void **)&pReset, "Reset(D9)");
SetHook((void *)(**(DWORD **)ppd3dd + 68), extPresent, (void **)&pPresent, "Present(D9)");
@ -1117,7 +1134,7 @@ HRESULT WINAPI extQueryInterfaceDev9(void *obj, REFIID riid, void** ppvObj)
OutTraceD("Device hook for IID_IDirect3DDevice9 interface\n");
pReset=NULL; // to avoid assert condition
SetHook((void *)(**(DWORD **)ppvObj + 0), extQueryInterfaceDev9, (void **)&pQueryInterfaceDev9, "QueryInterface(D9)");
SetHook((void *)(**(DWORD **)ppvObj + 32), extGetDisplayMode, (void **)&pGetDisplayMode, "GetDisplayMode(D9)");
SetHook((void *)(**(DWORD **)ppvObj + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)");
SetHook((void *)(**(DWORD **)ppvObj + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D9)");
SetHook((void *)(**(DWORD **)ppvObj + 64), extReset, (void **)&pReset, "Reset(D9)");
SetHook((void *)(**(DWORD **)ppvObj + 68), extPresent, (void **)&pPresent, "Present(D9)");

View File

@ -37,6 +37,9 @@ typedef HRESULT (WINAPI *SetViewport_Type)(void *, LPD3DVIEWPORT);
typedef HRESULT (WINAPI *GetViewport_Type)(void *, LPD3DVIEWPORT);
typedef HRESULT (WINAPI *QueryInterfaceD3_Type)(void *, REFIID, LPVOID *);
typedef HRESULT (WINAPI *D3DInitialize_Type)(void *, LPDIRECT3D , LPGUID, LPD3DDEVICEDESC);
typedef HRESULT (WINAPI *D3DGetCaps_Type)(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDESC);
Initialize_Type pInitialize = NULL;
EnumDevices_Type pEnumDevices = NULL;
CreateLight_Type pCreateLight = NULL;
@ -51,6 +54,9 @@ SetViewport_Type pSetViewport = NULL;
GetViewport_Type pGetViewport = NULL;
QueryInterfaceD3_Type pQueryInterfaceD3 = NULL;
D3DInitialize_Type pD3DInitialize = NULL;
D3DGetCaps_Type pD3DGetCaps = NULL;
HRESULT WINAPI extInitialize(void *);
HRESULT WINAPI extEnumDevices(void *, LPD3DENUMDEVICESCALLBACK, LPVOID);
HRESULT WINAPI extCreateLight(void *, LPDIRECT3DLIGHT *, IUnknown *);
@ -65,6 +71,9 @@ HRESULT WINAPI extSetViewport(void *, LPD3DVIEWPORT);
HRESULT WINAPI extGetViewport(void *, LPD3DVIEWPORT);
HRESULT WINAPI extQueryInterfaceD3(void *, REFIID, LPVOID *);
HRESULT WINAPI extD3DInitialize(void *, LPDIRECT3D , LPGUID, LPD3DDEVICEDESC);
HRESULT WINAPI extD3DGetCaps(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDESC);
extern char *ExplainDDError(DWORD);
int HookDirect3D7(HMODULE module, int version){
@ -309,7 +318,6 @@ HRESULT WINAPI extDeviceProxy(GUID FAR *lpGuid, LPSTR lpDeviceDescription, LPSTR
OutTraceD("EnumDevices: CALLBACK GUID=%x(%s) DeviceDescription=\"%s\", DeviceName=\"%s\", arg=%x\n", lpGuid->Data1, ExplainGUID(lpGuid), lpDeviceDescription, lpDeviceName, ((CallbackArg *)arg)->arg);
DumpD3DDevideDesc(lpd3ddd1, "HWDEV");
DumpD3DDevideDesc(lpd3ddd2, "SWDEV");
HookDirect3DDevice((LPDIRECTDRAW *)lpGuid, 0);
res = (*(((CallbackArg *)arg)->cb))(lpGuid, lpDeviceDescription, lpDeviceName, lpd3ddd1, lpd3ddd2, ((CallbackArg *)arg)->arg);
OutTraceD("EnumDevices: CALLBACK ret=%x\n", res);
return res;
@ -426,8 +434,12 @@ HRESULT WINAPI extCreateDevice2(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE
OutTraceE("CreateDevice(D3D2) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
return res;
}
else
OutTraceD("CreateDevice(D3D2): lpd3dd=%x\n", lpd3d, *lplpd3dd);
// Hook device here ...!
SetHook((void *)(**(DWORD **)lplpd3dd + 12), extD3DInitialize, (void **)&pD3DInitialize, "Initialize(D3D)");
SetHook((void *)(**(DWORD **)lplpd3dd + 16), extD3DGetCaps, (void **)&pD3DGetCaps, "GetCaps(D3D)");
return res;
}
@ -466,16 +478,28 @@ HRESULT WINAPI extCreateDevice3(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE4
return res;
}
#if 0
HRESULT WINAPI extInitialize(void *d3dd, LPDIRECT3D lpd3d, LPGUID lpGuid, LPD3DDEVICEDESC lpd3ddd)
HRESULT WINAPI extD3DInitialize(void *d3dd, LPDIRECT3D lpd3d, LPGUID lpGuid, LPD3DDEVICEDESC lpd3dd)
{
HRESULT res;
OutTrace("Initialize: d3dd=%x lpd3d=%x GUID=%x lpd3ddd=%x\n", d3dd, lpd3d, lpGuid->Data1, lpd3ddd);
res=(*pInitialize)(d3dd, lpd3d, lpGuid, lpd3ddd);
OutTrace("Initialize: d3dd=%x lpd3d=%x GUID=%x lpd3ddd=%x\n", d3dd, lpd3d, lpGuid->Data1, lpd3dd);
res=(*pD3DInitialize)(d3dd, lpd3d, lpGuid, lpd3dd);
if(res) OutTraceE("Initialize ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
DumpD3DDevideDesc(lpd3dd, "INIT");
return res;
}
HRESULT WINAPI extGetCaps(void *d3dd, LPD3DDEVICEDESC,LPD3DDEVICEDESC)
HRESULT WINAPI extD3DGetCaps(void *d3dd, LPD3DDEVICEDESC lpd3dd ,LPD3DDEVICEDESC lpd3dd2)
{
HRESULT res;
OutTrace("GetCaps(D3D): d3dd=%x lpd3dd=%x lpd3dd2=%x \n", d3dd, lpd3dd, lpd3dd2);
res=(*pD3DGetCaps)(d3dd, lpd3dd, lpd3dd2);
if(res) OutTraceE("GetCaps(D3D) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__);
DumpD3DDevideDesc(lpd3dd, "HWDEV");
DumpD3DDevideDesc(lpd3dd2, "SWDEV");
return res;
}
#if 0
//HRESULT WINAPI extSwapTextureHandles(void *d3dd, LPDIRECT3DTEXTURE,LPDIRECT3DTEXTURE)
//HRESULT WINAPI extCreateExecuteBuffer(void *d3dd, LPD3DEXECUTEBUFFERDESC,LPDIRECT3DEXECUTEBUFFER*,IUnknown*)
//HRESULT WINAPI extGetStats(void *d3dd, LPD3DSTATS)

View File

@ -694,22 +694,22 @@ HRESULT WINAPI extCreatePaletteProxy(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTE
HRESULT WINAPI extGetCapsDProxy(LPDIRECTDRAW lpdd, LPDDCAPS c1, LPDDCAPS c2)
{
HRESULT res;
OutTraceP("GetCaps(D): PROXED lpdd=%x c1=%x c2=%x\n", lpdd, c1, c2);
res=(*pGetCapsD)(lpdd, c1, c2);
if(res)
OutTraceP("GetCaps(D): ERROR res=%x(%s)\n", res, ExplainDDError(res));
else {
// to do: a full Caps dump!
OutTraceP("GetCaps(D): ");
if (c1) OutTraceP("hwcaps size=%x ", c1->dwSize);
if (c2) OutTraceP("swcaps size=%x ", c2->dwSize);
OutTraceP("\n");
}
return res;
}
//HRESULT WINAPI extGetCapsDProxy(LPDIRECTDRAW lpdd, LPDDCAPS c1, LPDDCAPS c2)
//{
// HRESULT res;
// OutTraceP("GetCaps(D): PROXED lpdd=%x c1=%x c2=%x\n", lpdd, c1, c2);
// res=(*pGetCapsD)(lpdd, c1, c2);
// if(res)
// OutTraceP("GetCaps(D): ERROR res=%x(%s)\n", res, ExplainDDError(res));
// else {
// // to do: a full Caps dump!
// OutTraceP("GetCaps(D): ");
// if (c1) OutTraceP("hwcaps size=%x ", c1->dwSize);
// if (c2) OutTraceP("swcaps size=%x ", c2->dwSize);
// OutTraceP("\n");
// }
// return res;
//}
HRESULT WINAPI extGetSurfaceFromDCProxy(LPDIRECTDRAW lpdd, HDC hdc, LPDIRECTDRAWSURFACE* lpDDS)
{
@ -1186,26 +1186,13 @@ HRESULT WINAPI extGetClipperProxy(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER
HRESULT WINAPI extGetFlipStatusProxy(LPDIRECTDRAWSURFACE lpdds, DWORD flags)
{
#if 0
HRESULT res;
OutTraceP("GetFlipStatus(S): PROXED lpdds=%x flags=%x(%s)\n", lpdds, flags, ExplainFlipStatusFlags(flags));
OutTraceP("GetFlipStatus(S): PROXED lpdds=%x flags=%x(%s)\n", lpdds, flags, ExplainFlipStatus(flags));
res=(*pGetFlipStatus)(lpdds, flags);
if(res==DDERR_WASSTILLDRAWING) OutTraceP("GetFlipStatus(S): res=%x(%s)\n", res, ExplainDDError(res));
else
if(res) OutTraceP("GetFlipStatus(S): ERROR err=%x(%s)\n", res, ExplainDDError(res));
return res;
#else
HRESULT res;
static int DeMux=0;
OutTraceP("GetFlipStatus(S): DELAYED lpdds=%x flags=%x(%s)\n", lpdds, flags, ExplainFlipStatusFlags(flags));
DeMux = (DeMux + 1) % 10;
res=(*pGetFlipStatus)(lpdds, flags);
if(res==DDERR_WASSTILLDRAWING) OutTraceP("GetFlipStatus(S): res=%x(%s)\n", res, ExplainDDError(res));
else
if(res) OutTraceP("GetFlipStatus(S): ERROR err=%x(%s)\n", res, ExplainDDError(res));
if(DeMux) res=DDERR_WASSTILLDRAWING;
return res;
#endif
}
HRESULT WINAPI extGetOverlayPositionProxy(LPDIRECTDRAWSURFACE lpdds, LPLONG lpl1, LPLONG lpl2)
@ -1710,7 +1697,7 @@ static void HookDDSessionProxy(LPDIRECTDRAW *lplpdd, int dxVersion)
// IDIrectDraw::FlipToGDISurface
SetHook((void *)(**(DWORD **)lplpdd + 40), extFlipToGDISurfaceProxy, (void **)&pFlipToGDISurface, "FlipToGDISurface(D)");
// IDIrectDraw::GetCaps
SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCapsDProxy, (void **)&pGetCapsD, "GetCaps(D)");
SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCapsD, (void **)&pGetCapsD, "GetCaps(D)");
// IDIrectDraw::GetDisplayMode
SetHook((void *)(**(DWORD **)lplpdd + 48), extGetDisplayModeProxy, (void **)&pGetDisplayMode, "GetDisplayMode(D)");
// IDIrectDraw::GetFourCCCodes

View File

@ -60,7 +60,7 @@ extern HRESULT WINAPI extGetSurfaceDesc4Proxy(LPDIRECTDRAWSURFACE2, LPDDSURFACED
extern ULONG WINAPI extAddRefDProxy(LPDIRECTDRAW);
extern ULONG WINAPI extCompactProxy(LPDIRECTDRAW);
extern HRESULT WINAPI extEnumDisplayModesProxy(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK);
extern HRESULT WINAPI extGetCapsDProxy(LPDIRECTDRAW, LPDDCAPS, LPDDCAPS);
extern HRESULT WINAPI extGetCapsD(LPDIRECTDRAW, LPDDCAPS, LPDDCAPS);
extern HRESULT WINAPI extGetFourCCCodesProxy(LPDIRECTDRAW, LPDWORD, LPDWORD);
extern HRESULT WINAPI extGetMonitorFrequencyProxy(LPDIRECTDRAW, LPDWORD);
extern HRESULT WINAPI extGetScanLineProxy(LPDIRECTDRAW, LPDWORD);

View File

@ -175,6 +175,8 @@ typedef HWND (WINAPI *SetCapture_Type)(HWND);
// Winmm.dll:
typedef MCIERROR(WINAPI *mciSendCommand_Type)(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR);
typedef DWORD (WINAPI *timeGetTime_Type)(void);
typedef MMRESULT(WINAPI *timeKillEvent_Type)(UINT);
typedef MMRESULT(WINAPI *timeSetEvent_Type)(UINT, UINT, LPTIMECALLBACK, DWORD_PTR, UINT);
/* ===================================================================
hooked APIs real pointers
@ -352,6 +354,8 @@ DXWEXTERN SetCapture_Type pSetCapture DXWINITIALIZED;
// Winmm.dll:
DXWEXTERN mciSendCommand_Type pmciSendCommand DXWINITIALIZED;
DXWEXTERN timeGetTime_Type ptimeGetTime DXWINITIALIZED;
DXWEXTERN timeKillEvent_Type ptimeKillEvent DXWINITIALIZED;
DXWEXTERN timeSetEvent_Type ptimeSetEvent DXWINITIALIZED;
/* ===================================================================
hook procedures (possibly more tnan one per each API...)
@ -526,6 +530,8 @@ extern HWND WINAPI extSetCapture(HWND);
// Winmm.dll:
extern MCIERROR WINAPI extmciSendCommand(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR);
extern DWORD WINAPI exttimeGetTime(void);
extern MMRESULT WINAPI exttimeSetEvent(UINT, UINT, LPTIMECALLBACK, DWORD_PTR, UINT);
extern MMRESULT WINAPI exttimeKillEvent(UINT);
// extern function declaration

1888
dll/user32 - Copia.cpp Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,7 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include "dxwnd.h"
#include "dxwcore.hpp"
#include "syslibs.h"
@ -12,7 +13,8 @@
static HookEntry_Type Hooks[]={
{"UpdateWindow", (FARPROC)NULL, (FARPROC *)&pUpdateWindow, (FARPROC)extUpdateWindow},
{"GetWindowPlacement", (FARPROC)NULL, (FARPROC *)&pGetWindowPlacement, (FARPROC)extGetWindowPlacement},
//{"GetWindowPlacement", (FARPROC)NULL, (FARPROC *)&pGetWindowPlacement, (FARPROC)extGetWindowPlacement},
//{"SetWindowPlacement", (FARPROC)NULL, (FARPROC *)&pSetWindowPlacement, (FARPROC)extSetWindowPlacement},
{"ChangeDisplaySettingsA", (FARPROC)ChangeDisplaySettingsA, (FARPROC *)&pChangeDisplaySettings, (FARPROC)extChangeDisplaySettings},
{"ChangeDisplaySettingsExA", (FARPROC)ChangeDisplaySettingsA, (FARPROC *)&pChangeDisplaySettingsEx, (FARPROC)extChangeDisplaySettingsEx},
{"BeginPaint", (FARPROC)BeginPaint, (FARPROC *)&pBeginPaint, (FARPROC)extBeginPaint},
@ -971,9 +973,10 @@ ATOM WINAPI extRegisterClassExA(WNDCLASSEX *lpwcx)
static HWND WINAPI extCreateWindowCommon(
LPCTSTR ApiName,
BOOL WideChar,
DWORD dwExStyle,
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
void *lpClassName,
void *lpWindowName,
DWORD dwStyle,
int x,
int y,
@ -1078,8 +1081,10 @@ static HWND WINAPI extCreateWindowCommon(
}
if(!dxw.IsFullScreen()){ // v2.1.63: needed for "Monster Truck Madness"
wndh= (*pCreateWindowExA)(dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight,
hWndParent, hMenu, hInstance, lpParam);
if(WideChar)
wndh= (*pCreateWindowExW)(dwExStyle, (LPCWSTR)lpClassName, (LPCWSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
else
wndh= (*pCreateWindowExA)(dwExStyle, (LPCSTR)lpClassName, (LPCSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
OutTraceD("%s: windowed mode ret=%x\n", ApiName, wndh);
return wndh;
}
@ -1102,8 +1107,10 @@ static HWND WINAPI extCreateWindowCommon(
OutTraceB("%s: fixed pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n",
ApiName, x, y, nWidth, nHeight, dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle));
wndh= (*pCreateWindowExA)(dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight,
hWndParent, hMenu, hInstance, lpParam);
if(WideChar)
wndh= (*pCreateWindowExW)(dwExStyle, (LPCWSTR)lpClassName, (LPCWSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
else
wndh= (*pCreateWindowExA)(dwExStyle, (LPCSTR)lpClassName, (LPCSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
if (wndh==(HWND)NULL){
OutTraceE("%s: ERROR err=%d Style=%x(%s) ExStyle=%x\n",
ApiName, GetLastError(), dwStyle, ExplainStyle(dwStyle), dwExStyle);
@ -1163,17 +1170,12 @@ HWND WINAPI extCreateWindowExW(
HINSTANCE hInstance,
LPVOID lpParam)
{
char sClassName[256+1];
char sWindowName[256+1];
wcstombs_s(NULL, sClassName, lpClassName, 80);
wcstombs_s(NULL, sWindowName, lpWindowName, 80);
OutTraceD("CreateWindowExW: class=\"%ls\" wname=\"%ls\" pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n",
lpClassName, lpWindowName, x, y, nWidth, nHeight,
dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle));
if(IsDebug) OutTrace("CreateWindowExW: DEBUG screen=(%d,%d)\n", dxw.GetScreenWidth(), dxw.GetScreenHeight());
return extCreateWindowCommon("CreateWindowExW", dwExStyle, sClassName, sWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
return extCreateWindowCommon("CreateWindowExW", TRUE, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
}
// GHO: pro Diablo
@ -1196,7 +1198,7 @@ HWND WINAPI extCreateWindowExA(
dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle));
if(IsDebug) OutTrace("CreateWindowExA: DEBUG screen=(%d,%d)\n", dxw.GetScreenWidth(), dxw.GetScreenHeight());
return extCreateWindowCommon("CreateWindowExA", dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
return extCreateWindowCommon("CreateWindowExA", false, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
}
LRESULT WINAPI extCallWindowProc(WNDPROC lpPrevWndFunc, HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
@ -1427,8 +1429,39 @@ HDC WINAPI extGDIGetDC(HWND hwnd)
HDC WINAPI extGDIGetDCEx(HWND hwnd, HRGN hrgnClip, DWORD flags)
{
MessageBox(0, "GetDCEx", "to fix", MB_OK | MB_ICONEXCLAMATION);
return (HDC)NULL;
// used by Star Wars Shadow of the Empire
HDC ret;
HWND lochwnd;
OutTraceD("GDI.GetDCEx: hwnd=%x hrgnClip=%x flags=%x(%s)\n", hwnd, hrgnClip, flags, ExplainGetDCExFlags(flags));
lochwnd=hwnd;
if (dxw.IsRealDesktop(hwnd)) {
OutTraceD("GDI.GetDCEx: desktop remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd());
lochwnd=dxw.GethWnd();
}
if(dxw.dwFlags3 & EMULATEDC)
ret=dxw.AcquireEmulatedDC(lochwnd);
else
ret=(*pGDIGetDC)(lochwnd);
if(ret){
OutTraceD("GDI.GetDCEx: hwnd=%x ret=%x\n", lochwnd, ret);
}
else{
int err;
err=GetLastError();
OutTraceE("GDI.GetDCEx ERROR: hwnd=%x err=%d at %d\n", lochwnd, err, __LINE__);
if((err==ERROR_INVALID_WINDOW_HANDLE) && (lochwnd!=hwnd)){
ret=(*pGDIGetDCEx)(hwnd, hrgnClip, flags);
if(ret)
OutTraceD("GDI.GetDCEx: hwnd=%x ret=%x\n", hwnd, ret);
else
OutTraceE("GDI.GetDCEx ERROR: hwnd=%x err=%d at %d\n", hwnd, GetLastError(), __LINE__);
}
}
return ret;
}
HDC WINAPI extGDIGetWindowDC(HWND hwnd)
@ -1598,14 +1631,14 @@ BOOL WINAPI extMoveWindow(HWND hwnd, int X, int Y, int nWidth, int nHeight, BOOL
if(dxw.IsDesktop(hwnd)){
// v2.1.93: happens in "Emergency Fighters for Life" ...
// what is the meaning of this? is it related to video stretching?
OutTraceD("MoveWindow: prevent moving desktop win\n");
return TRUE;
}
OutTraceD("MoveWindow: prevent moving desktop win\n");
return TRUE;
}
if((hwnd==dxw.GethWnd()) || (hwnd==dxw.hParentWnd)){
OutTraceD("MoveWindow: prevent moving main win\n");
return TRUE;
}
OutTraceD("MoveWindow: prevent moving main win\n");
return TRUE;
}
if (dxw.IsFullScreen()){
POINT upleft={0,0};

View File

@ -6,6 +6,9 @@
#include "MMSystem.h"
#undef OutTraceD
#define OutTraceD OutTrace
static HookEntry_Type Hooks[]={
{"mciSendCommandA", NULL, (FARPROC *)&pmciSendCommand, (FARPROC)extmciSendCommand},
{0, NULL, 0, 0} // terminator
@ -13,6 +16,8 @@ static HookEntry_Type Hooks[]={
static HookEntry_Type TimeHooks[]={
{"timeGetTime", NULL, (FARPROC *)&ptimeGetTime, (FARPROC)exttimeGetTime},
{"timeKillEvent", NULL, (FARPROC *)&ptimeKillEvent, (FARPROC)exttimeKillEvent},
{"timeSetEvent", NULL, (FARPROC *)&ptimeSetEvent, (FARPROC)exttimeSetEvent},
{0, NULL, 0, 0} // terminator
};
@ -41,6 +46,25 @@ DWORD WINAPI exttimeGetTime(void)
return ret;
}
MMRESULT WINAPI exttimeSetEvent(UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent)
{
MMRESULT res;
uDelay = uDelay * 8;
OutTraceD("timeSetEvent: Delay=%d Resolution=%d Event=%x\n", uDelay, uResolution, fuEvent);
res=(*ptimeSetEvent)(uDelay, uResolution, lpTimeProc, dwUser, fuEvent);
OutTraceD("timeSetEvent: ret=%x\n", res);
return res;
}
MMRESULT WINAPI exttimeKillEvent(UINT uTimerID)
{
MMRESULT res;
OutTraceD("timeKillEvent: TimerID=%x\n", uTimerID);
res=(*ptimeKillEvent)(uTimerID);
OutTraceD("timeKillEvent: ret=%x\n", res);
return res;
}
/* MCI_DGV_PUT_FRAME
The rectangle defined for MCI_DGV_RECT applies to the frame rectangle.

24
exports/007 NightFire.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=007 NightFire
path0=D:\Games\007_NightFire\Bond.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134234146
flagg0=134217728
flagh0=65556
flagi0=0
tflag0=67
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=101 The Airborne Invasion of Normandy
path0=D:\Games\101air\101.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134234146
flagg0=134217728
flagh0=20
flagi0=0
tflag0=192
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Age of Empires III
path0=D:\Games\Age of Empires III\age3.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=-394125278
flagg0=134217728
flagh0=20
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

View File

@ -0,0 +1,24 @@
[target]
title0=Akuma Demon Spawn - Lamentation Sword
path0=D:\Games\Akuma Demon Spawn - Lamentation Sword (1999)\Akuma\Akuma.EXE
module0=
opengllib0=
ver0=0
coord0=0
flag0=134234146
flagg0=134217728
flagh0=20
flagi0=0
tflag0=64
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Ancient Evil demo
path0=D:\Games\AECSC\aecsc-demo.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=150994976
flagg0=1207959552
flagh0=25165844
flagi0=0
tflag0=259
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

24
exports/Army Men RTS.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Army Men RTS
path0=D:\Games\Army Men RTS\amrts.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=671088676
flagg0=1207959552
flagh0=20
flagi0=0
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

View File

@ -0,0 +1,24 @@
[target]
title0=Attack of the Saucerman
path0=D:\Games\Attack of the Saucerman\attack of the saucerman.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217730
flagg0=134217728
flagh0=20
flagi0=0
tflag0=192
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Beyond Divinity
path0=D:\Games\Beyond Divinity\Div.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134234144
flagg0=134217728
flagh0=61
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

24
exports/Daikatana.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Daikatana
path0=D:\Games\Daikatana\daikatana.exe
module0=
opengllib0=
ver0=12
coord0=0
flag0=269492738
flagg0=537002497
flagh0=20
flagi0=0
tflag0=2
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

24
exports/Devastation.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Devastation
path0=D:\Games\Devastation\System\Devastation.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217762
flagg0=1207959552
flagh0=16
flagi0=0
tflag0=67
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

24
exports/Diablo.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Diablo
path0=D:\Games\Diablo\Diablo.exe
module0=
opengllib0=
ver0=1
coord0=0
flag0=138428450
flagg0=1108344848
flagh0=20
flagi0=0
tflag0=0
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=640
sizy0=480
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Doom Shareware for Windows 95
path0=D:\Games\Doom Shareware for Windows 95\Doom95.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217762
flagg0=134217728
flagh0=20
flagi0=0
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

View File

@ -0,0 +1,24 @@
[target]
title0=Dungeon Keeper II
path0=D:\Games\Dungeon Keeper 2\DKII.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=16418
flagg0=574619648
flagh0=20
flagi0=0
tflag0=263
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=150
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Dungeon Lords MMXII
path0=D:\Games\Dungeon Lords MMXII\dlords2012.exe
module0=
opengllib0=
ver0=0
coord0=2
flag0=-2013265886
flagg0=1207959552
flagh0=20
flagi0=0
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

24
exports/GTA 3.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=GTA 3
path0=D:\Games\GTA3\gta3.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134234150
flagg0=1207975952
flagh0=176
flagi0=0
tflag0=2
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

Binary file not shown.

View File

@ -0,0 +1,24 @@
[target]
title0=Grand Prix World
path0=D:\Games\Grand Prix World\gpwxp2.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134283428
flagg0=134217728
flagh0=29
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

24
exports/Hamsterball.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Hamsterball
path0=D:\Games\Hamsterball\Hamsterball.exe
module0=
opengllib0=
ver0=8
coord0=0
flag0=134217762
flagg0=1207959552
flagh0=20
flagi0=0
tflag0=323
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Heroes of Might and Magic IV
path0=D:\Games\Heroes of Might and Magic IV\heroes4i.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134283298
flagg0=1211121728
flagh0=65556
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

24
exports/Homeworld 2.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Homeworld 2
path0=D:\Games\Homeworld2\Bin\Release\Homeworld2.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=671088642
flagg0=134217728
flagh0=477
flagi0=0
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

24
exports/JetMoto.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=JetMoto
path0=D:\Games\Jet_Moto\JETMOTO.EXE
module0=
opengllib0=
ver0=0
coord0=0
flag0=671088674
flagg0=1207959552
flagh0=20
flagi0=0
tflag0=64
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Kiss Psycho Circus
path0=D:\Games\Kiss\client.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217760
flagg0=1207959552
flagh0=20
flagi0=0
tflag0=67
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=L'Elefante a Strisce
path0=D:\Games\L'Elefante a Strisce\Pilots1I.EXE
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217762
flagg0=134217728
flagh0=20
flagi0=0
tflag0=64
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Land of the Dead
path0=D:\Games\Land of the Dead\System\LOTD.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217766
flagg0=1207959552
flagh0=20
flagi0=0
tflag0=64
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

24
exports/Last Bronx.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Last Bronx
path0=D:\Games\Last_Bronx\LB.EXE
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217762
flagg0=1207959552
flagh0=20
flagi0=0
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

24
exports/Mageslayer.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Mageslayer
path0=D:\Games\MAGE\MAGESLAY.EXE
module0=
opengllib0=
ver0=0
coord0=0
flag0=134234146
flagg0=134217760
flagh0=20
flagi0=0
tflag0=64
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Magic & Mayhem
path0=D:\Games\Magic_&_Mayhem\Chaos.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=138428450
flagg0=1275068416
flagh0=8388628
flagi0=0
tflag0=259
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

24
exports/Mirror's Edge.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Mirror's Edge
path0=D:\Games\Mirror's Edge\Binaries\MirrorsEdge.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=-2013265882
flagg0=1207959552
flagh0=2097172
flagi0=0
tflag0=15
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=6

24
exports/Praetorians.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Praetorians
path0=D:\Games\Praetorians\Praetorians.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217760
flagg0=1207959552
flagh0=20
flagi0=0
tflag0=259
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Premier Manager 98
path0=D:\Games\Premier Manager 98\MANAGER.EXE
module0=
opengllib0=
ver0=0
coord0=0
flag0=671088674
flagg0=1207959552
flagh0=16
flagi0=0
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

View File

@ -0,0 +1,24 @@
[target]
title0=Primitive Wars
path0=D:\Games\Primitive Wars\Pw.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=402653218
flagg0=1207959552
flagh0=20
flagi0=0
tflag0=64
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Railroad Tycoon II
path0=D:\Games\Railroad.Tycoon.II\RT2.EXE
module0=
opengllib0=
ver0=0
coord0=0
flag0=2082
flagg0=143654912
flagh0=16
flagi0=0
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

24
exports/Rayman 2 Demo.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Rayman2Demo.exe
path0=D:\Games\Rayman2Demo\Rayman2Demo.exe
module0=
opengllib0=
ver0=1
coord0=0
flag0=939524129
flagg0=1207959552
flagh0=20
flagi0=0
tflag0=323
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

24
exports/Space Rangers.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Space Rangers
path0=D:\Games\Space Rangers\Rangers.exe
module0=
opengllib0=
ver0=1
coord0=0
flag0=134234146
flagg0=1207959552
flagh0=20
flagi0=0
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

View File

@ -0,0 +1,24 @@
[target]
title0=Star Wars Shadow of the Empire (DEMO)
path0=D:\Games\shadowsdemo\shadows.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217762
flagg0=1208483844
flagh0=25165844
flagi0=0
tflag0=275
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=Star Wars Shadow of the Empire
path0=D:\Games\Star Wars Shadow of the Empire\game\SDATA\SHADOWS.EXE
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217762
flagg0=1476919296
flagh0=25166364
flagi0=0
tflag0=274
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

24
exports/StarCraft.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=StarCraft
path0=D:\Games\Starcraft\StarCraft.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217762
flagg0=136314880
flagh0=20
flagi0=0
tflag0=64
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

24
exports/Talis Gear.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Talis Gear
path0=D:\Games\TailsGear078\DT_MAIN.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134217760
flagg0=1207959552
flagh0=20
flagi0=0
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

24
exports/Theseus.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Theseus
path0=D:\Games\theseus\Theseus.exe
module0=
opengllib0=
ver0=8
coord0=0
flag0=134217730
flagg0=1207959552
flagh0=20
flagi0=0
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

View File

@ -0,0 +1,24 @@
[target]
title0=Total Annihilation Kingdoms
path0=D:\Games\Total Annihilation Kingdoms\Kingdoms.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=134234146
flagg0=1073741840
flagh0=16
flagi0=0
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

24
exports/Vangers.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Vangers
path0=D:\Games\Vangers\road.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=402653219
flagg0=671088640
flagh0=20
flagi0=0
tflag0=67
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0

24
exports/Wargames.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Wargames (demo)
path0=D:\Games\Wargames\wargames.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=268435618
flagg0=1207959552
flagh0=20
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

24
exports/Warlords 3.dxw Normal file
View File

@ -0,0 +1,24 @@
[target]
title0=Warlords 3
path0=D:\Games\WARLORDS3\Darklord.exe
module0=
opengllib0=
ver0=0
coord0=0
flag0=-2147483102
flagg0=269484064
flagh0=532
flagi0=0
tflag0=0
initx0=0
inity0=0
minx0=0
miny0=0
maxx0=0
maxy0=0
posx0=50
posy0=50
sizx0=0
sizy0=0
maxfps0=0
initts0=0

View File

@ -0,0 +1,24 @@
[target]
title0=deadrising2otr.exe
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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,10 +0,0 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1 +0,0 @@
Manifest resource last updated at 9:28:09,93 on 12/10/2013

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More