From 4faa505efd64f7acd9ba8510b315fbf900f7009a Mon Sep 17 00:00:00 2001 From: gho tik Date: Fri, 3 Jan 2014 11:38:52 -0500 Subject: [PATCH] v2_02_60_src Former-commit-id: a5e2c09b2a0ff1572739cab6d0a5875912e4962c --- build/dxwnd.dll | 4 +- build/dxwnd.exe | 2 +- build/dxwnd.ini | 161 +++++++++++++++--- build/exports/Armored Fist 3.dxw | 26 +++ build/exports/Dune 2000 (not emulated).dxw | 26 +++ build/exports/Earthworm Jim 3D.dxw | 26 +++ build/exports/Echelon.dxw | 26 +++ build/exports/Geneforge.dxw | 26 +++ build/exports/Total Soccer 2000 (3DFX).dxw | 26 +++ build/exports/Total Soccer 2000 (DirectX).dxw | 26 +++ build/readme-relnotes.txt | 7 +- dll/ddraw.cpp | 55 ++++-- dll/dxwcore.cpp | 14 +- dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 122880 -> 152992 bytes dll/hd3d.cpp | 96 ++++++++++- dll/hd3d7.cpp | 6 + dll/kernel32.cpp | 4 +- host/dxwndhost.vs2008.suo | Bin 102912 -> 102912 bytes 19 files changed, 481 insertions(+), 52 deletions(-) create mode 100644 build/exports/Armored Fist 3.dxw create mode 100644 build/exports/Dune 2000 (not emulated).dxw create mode 100644 build/exports/Earthworm Jim 3D.dxw create mode 100644 build/exports/Echelon.dxw create mode 100644 build/exports/Geneforge.dxw create mode 100644 build/exports/Total Soccer 2000 (3DFX).dxw create mode 100644 build/exports/Total Soccer 2000 (DirectX).dxw diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 8850703..e037b01 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f096da2bcb539a443b930cc06ca3814a98394da357dcc2817a7ffa431bb5faa -size 459776 +oid sha256:f6f6dffdd6c64dfb4fca9318b394132c66ec7a1070122c384b78e0a8a52c45e2 +size 461824 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index 56379f4..9b2e702 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ccfe97f2a4ee32296cfaae398fe767a22f26d620ba7065c0cbc7a078eb2d459 +oid sha256:84004748b9ed3c04e7d2d8101220a505a229bc299211e587a74ffd89cc85e154 size 535552 diff --git a/build/dxwnd.ini b/build/dxwnd.ini index 9af460b..0ee1d17 100644 --- a/build/dxwnd.ini +++ b/build/dxwnd.ini @@ -1181,9 +1181,9 @@ opengllib47= ver47=0 coord47=0 flag47=134234148 -flagg47=-939523840 +flagg47=1207959808 flagh47=20 -flagi47=16 +flagi47=384 tflag47=2 initx47=0 inity47=0 @@ -3459,7 +3459,7 @@ flag138=679493664 flagg138=1208025088 flagh138=65556 flagi138=4 -tflag138=6147 +tflag138=6403 initx138=0 inity138=0 minx138=0 @@ -3481,9 +3481,9 @@ opengllib139= ver139=8 coord139=0 flag139=687867937 -flagg139=1208025104 +flagg139=134283280 flagh139=65556 -flagi139=12 +flagi139=204 tflag139=4097 initx139=0 inity139=0 @@ -3504,12 +3504,12 @@ path140=D:\Games\Incoming and Incoming Forces\Incoming\incoming.exe module140= opengllib140= ver140=7 -coord140=2 +coord140=0 flag140=150994976 -flagg140=1207959568 -flagh140=20 -flagi140=4 -tflag140=1024 +flagg140=1208025104 +flagh140=-2147483628 +flagi140=67820 +tflag140=6163 initx140=0 inity140=0 minx140=0 @@ -3549,17 +3549,17 @@ maxfps141=0 initts141=0 winver141=0 maxres141=-1 -title142=CIsland.exe -path142=D:\Games\ChaosIsland\CIsland.exe +title142=Armored Fist 3 +path142=D:\Games\Armored Fist 3\Af3.exe module142= opengllib142= ver142=0 coord142=0 -flag142=134218272 -flagg142=1207959552 -flagh142=20 -flagi142=4 -tflag142=6147 +flag142=134217763 +flagg142=1208025088 +flagh142=6291476 +flagi142=14 +tflag142=64 initx142=0 inity142=0 minx142=0 @@ -3574,14 +3574,133 @@ maxfps142=0 initts142=0 winver142=0 maxres142=-1 -title143=Incoming (GOG) +title143=Earthworm Jim 3D module143= opengllib143= -title144=Incoming Forces (GOG) +title144=Echelon module144= opengllib144= +path143=D:\Games\Earthworm Jim 3D\EarthwormJim3D.exe +ver143=0 +coord143=0 +flag143=134217760 +flagg143=1212219392 +flagh143=65556 +flagi143=12 +tflag143=6211 +initx143=0 +inity143=0 +minx143=0 +miny143=0 +maxx143=0 +maxy143=0 +posx143=50 +posy143=50 +sizx143=800 +sizy143=600 +maxfps143=0 +initts143=2 +winver143=1 +maxres143=-1 +path144=D:\Games\echelon\Game.exe +ver144=0 +coord144=0 +flag144=151011328 +flagg144=-2013265920 +flagh144=20 +flagi144=132 +tflag144=0 +initx144=0 +inity144=0 +minx144=0 +miny144=0 +maxx144=0 +maxy144=0 +posx144=50 +posy144=50 +sizx144=800 +sizy144=600 +maxfps144=0 +initts144=0 +winver144=0 +maxres144=-1 +title145=Total Soccer 2000 (DirectX) +path145=D:\Games\Total Soccer 2000\SOCCERDX.EXE +module145= +opengllib145= +ver145=1 +coord145=0 +flag145=134234146 +flagg145=134283520 +flagh145=20 +flagi145=12 +tflag145=5249 +initx145=0 +inity145=0 +minx145=0 +miny145=0 +maxx145=0 +maxy145=0 +posx145=50 +posy145=50 +sizx145=800 +sizy145=600 +maxfps145=0 +initts145=2 +winver145=0 +maxres145=-1 +title146=Total Soccer 2000 (3DFX) +path146=D:\Games\Total Soccer 2000\soccer3dfx.exe +module146= +opengllib146= +ver146=9 +coord146=0 +flag146=134234657 +flagg146=1208025344 +flagh146=20 +flagi146=12 +tflag146=5121 +initx146=0 +inity146=0 +minx146=0 +miny146=0 +maxx146=0 +maxy146=0 +posx146=50 +posy146=50 +sizx146=800 +sizy146=600 +maxfps146=0 +initts146=2 +winver146=0 +maxres146=-1 +title147=Gruntz +path147=D:\Games\gruntz\GRUNTZ.EXE +module147= +opengllib147= +ver147=0 +coord147=0 +flag147=134235680 +flagg147=1207959560 +flagh147=67108884 +flagi147=4 +tflag147=6419 +initx147=0 +inity147=0 +minx147=0 +miny147=0 +maxx147=0 +maxy147=0 +posx147=0 +posy147=0 +sizx147=800 +sizy147=600 +maxfps147=0 +initts147=0 +winver147=0 +maxres147=-1 [window] -posx=1161 -posy=364 +posx=1010 +posy=145 sizx=638 sizy=618 diff --git a/build/exports/Armored Fist 3.dxw b/build/exports/Armored Fist 3.dxw new file mode 100644 index 0000000..b2238c9 --- /dev/null +++ b/build/exports/Armored Fist 3.dxw @@ -0,0 +1,26 @@ +[target] +title0=Armored Fist 3 +path0=D:\Games\Armored Fist 3\Af3.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134218272 +flagg0=1207959552 +flagh0=20 +flagi0=6 +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 +winver0=0 +maxres0=-1 diff --git a/build/exports/Dune 2000 (not emulated).dxw b/build/exports/Dune 2000 (not emulated).dxw new file mode 100644 index 0000000..0435be3 --- /dev/null +++ b/build/exports/Dune 2000 (not emulated).dxw @@ -0,0 +1,26 @@ +[target] +title0=Dune 2000 +path0=D:\Games\Dune 2000\DUNE2000.DAT +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671105312 +flagg0=1207959568 +flagh0=20 +flagi0=4 +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 +winver0=0 +maxres0=-1 diff --git a/build/exports/Earthworm Jim 3D.dxw b/build/exports/Earthworm Jim 3D.dxw new file mode 100644 index 0000000..06a6bfc --- /dev/null +++ b/build/exports/Earthworm Jim 3D.dxw @@ -0,0 +1,26 @@ +[target] +title0=Earthworm Jim 3D +path0=D:\Games\Earthworm Jim 3D\EarthwormJim3D.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217760 +flagg0=1212153856 +flagh0=65556 +flagi0=4 +tflag0=6211 +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=1 +maxres0=-1 diff --git a/build/exports/Echelon.dxw b/build/exports/Echelon.dxw new file mode 100644 index 0000000..956cf80 --- /dev/null +++ b/build/exports/Echelon.dxw @@ -0,0 +1,26 @@ +[target] +title0=Echelon +path0=D:\Games\echelon\Game.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=151011328 +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 diff --git a/build/exports/Geneforge.dxw b/build/exports/Geneforge.dxw new file mode 100644 index 0000000..7953689 --- /dev/null +++ b/build/exports/Geneforge.dxw @@ -0,0 +1,26 @@ +[target] +title0=Geneforge +path0=d:\games\Geneforge\Geneforge.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234628 +flagg0=1207959808 +flagh0=20 +flagi0=4 +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 +winver0=0 +maxres0=-1 diff --git a/build/exports/Total Soccer 2000 (3DFX).dxw b/build/exports/Total Soccer 2000 (3DFX).dxw new file mode 100644 index 0000000..a16ee5d --- /dev/null +++ b/build/exports/Total Soccer 2000 (3DFX).dxw @@ -0,0 +1,26 @@ +[target] +title0=Total Soccer 2000 (3DFX) +path0=D:\Games\Total Soccer 2000\soccer3dfx.exe +module0= +opengllib0= +ver0=9 +coord0=0 +flag0=134234657 +flagg0=1208025344 +flagh0=20 +flagi0=67596 +tflag0=5121 +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 diff --git a/build/exports/Total Soccer 2000 (DirectX).dxw b/build/exports/Total Soccer 2000 (DirectX).dxw new file mode 100644 index 0000000..454c0eb --- /dev/null +++ b/build/exports/Total Soccer 2000 (DirectX).dxw @@ -0,0 +1,26 @@ +[target] +title0=Total Soccer 2000 (DirectX) +path0=D:\Games\Total Soccer 2000\SOCCERDX.EXE +module0= +opengllib0= +ver0=1 +coord0=0 +flag0=134234656 +flagg0=1208025344 +flagh0=20 +flagi0=12 +tflag0=5249 +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 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 34966fe..4c8e459 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -398,7 +398,10 @@ minor fixes on logging v2.02.59 fixed IDIrectDraw reference counter for ddraw release 1 session: fixes "Warhammer 40K Rites Of War" first screen -fixed QueryPerformanceCounter handling: fixes "New Yourk Racer" time stretching problems - +fixed QueryPerformanceCounter handling: fixes "New York Racer" time stretching problems +v2.02.60 +fixed time stretching to handle Total Soccer 2000 +fixed ZBUFFER surface creation to handle GOG Incoming troubles on some cards +fixed handling of special effects (wireframe, no fogging, zbuffer always) to be valid on all d3d versions diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 05180b0..18fdd56 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -1320,19 +1320,36 @@ static void MaskCapsD(LPDDCAPS c1, LPDDCAPS c2) OutTraceDW("MaskCaps\n"); capfile=fopen("dxwnd.cap", "r"); if(!capfile) return; - while(TRUE){ - if(fscanf(capfile, "%s=%x", token, &val)!=2) break; - if(!strcmp(token, "dwCaps")) c1->dwCaps &= val; - if(!strcmp(token, "dwCaps2")) c1->dwCaps2 &= val; - if(!strcmp(token, "dwCKeyCaps")) c1->dwCKeyCaps &= val; - if(!strcmp(token, "dwFXCaps")) c1->dwFXCaps &= val; + if(c1) { + while(TRUE){ + if(fscanf(capfile, "%s=%x", token, &val)!=2) break; + if(!strcmp(token, "dwCaps")) c1->dwCaps &= val; + if(!strcmp(token, "dwCaps2")) c1->dwCaps2 &= val; + if(!strcmp(token, "dwCKeyCaps")) c1->dwCKeyCaps &= val; + if(!strcmp(token, "dwFXCaps")) c1->dwFXCaps &= val; + } + OutTraceDW("MaskCaps(D-HW): caps=%x(%s) caps2=%x(%s) fxcaps=%x(%s) fxalphacaps=%x(%s) keycaps=%x(%s)\n", + c1->dwCaps, ExplainDDDCaps(c1->dwCaps), + c1->dwCaps2, ExplainDDDCaps2(c1->dwCaps2), + c1->dwFXCaps, ExplainDDFXCaps(c1->dwFXCaps), + c1->dwFXAlphaCaps, ExplainDDFXALPHACaps(c1->dwFXAlphaCaps), + c1->dwCKeyCaps, ExplainDDCKeyCaps(c1->dwCKeyCaps)); } - OutTraceDW("MaskCaps(D-HW): caps=%x(%s) caps2=%x(%s) fxcaps=%x(%s) fxalphacaps=%x(%s) keycaps=%x(%s)\n", - c1->dwCaps, ExplainDDDCaps(c1->dwCaps), - c1->dwCaps2, ExplainDDDCaps2(c1->dwCaps2), - c1->dwFXCaps, ExplainDDFXCaps(c1->dwFXCaps), - c1->dwFXAlphaCaps, ExplainDDFXALPHACaps(c1->dwFXAlphaCaps), - c1->dwCKeyCaps, ExplainDDCKeyCaps(c1->dwCKeyCaps)); + if(c2) { + while(TRUE){ + if(fscanf(capfile, "%s=%x", token, &val)!=2) break; + if(!strcmp(token, "dwCaps")) c2->dwCaps &= val; + if(!strcmp(token, "dwCaps2")) c2->dwCaps2 &= val; + if(!strcmp(token, "dwCKeyCaps")) c2->dwCKeyCaps &= val; + if(!strcmp(token, "dwFXCaps")) c2->dwFXCaps &= val; + } + OutTraceDW("MaskCaps(D-HW): caps=%x(%s) caps2=%x(%s) fxcaps=%x(%s) fxalphacaps=%x(%s) keycaps=%x(%s)\n", + c2->dwCaps, ExplainDDDCaps(c2->dwCaps), + c2->dwCaps2, ExplainDDDCaps2(c2->dwCaps2), + c2->dwFXCaps, ExplainDDFXCaps(c2->dwFXCaps), + c2->dwFXAlphaCaps, ExplainDDFXALPHACaps(c2->dwFXAlphaCaps), + c2->dwCKeyCaps, ExplainDDCKeyCaps(c2->dwCKeyCaps)); + } fclose(capfile); } @@ -1380,7 +1397,7 @@ HRESULT WINAPI extGetCapsD(LPDIRECTDRAW lpdd, LPDDCAPS c1, LPDDCAPS c2) //c1->dwFXAlphaCaps=AlphaCaps; } - if((dxw.dwFlags3 & CAPMASK) && c1 && c2) MaskCapsD(c1, c2); + if(dxw.dwFlags3 & CAPMASK) MaskCapsD(c1, c2); return res; } @@ -2551,7 +2568,8 @@ static HRESULT BuildGenericDir(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf res = (*pCreateSurface)(lpdd, lpddsd, lplpdds, 0); if(res){ - if ((dxw.dwFlags1 & SWITCHVIDEOMEMORY) && (res==DDERR_OUTOFVIDEOMEMORY)){ + // v2.02.60: Ref. game Incoming GOG release, post by Marek, error DDERR_UNSUPPORTED while trying to create ZBUFFER surface + if ((dxw.dwFlags1 & SWITCHVIDEOMEMORY) && ((res==DDERR_OUTOFVIDEOMEMORY)||(res==DDERR_UNSUPPORTED))){ OutTraceDW("CreateSurface ERROR: res=%x(%s) at %d, retry\n", res, ExplainDDError(res), __LINE__); lpddsd->ddsCaps.dwCaps &= ~DDSCAPS_VIDEOMEMORY; lpddsd->ddsCaps.dwCaps |= DDSCAPS_SYSTEMMEMORY; @@ -4564,9 +4582,17 @@ HRESULT WINAPI extDDGetGammaRamp(LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags, LPDDG HRESULT WINAPI extGetAvailableVidMem(LPDIRECTDRAW lpdd, LPDDSCAPS lpDDSCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree, GetAvailableVidMem_Type pGetAvailableVidMem) { HRESULT res; + const DWORD dwMaxMem = 0x7FFFF000; OutTraceDDRAW("GetAvailableVidMem(D): lpdd=%x\n", lpdd); res=(*pGetAvailableVidMem)(lpdd, lpDDSCaps, lpdwTotal, lpdwFree); if(res){ + if((dxw.dwFlags3 & FORCESHEL) && (res==DDERR_NODIRECTDRAWHW)){ + // fake some video memory.... + OutTraceDW("GetAvailableVidMem(D): FORCESHEL mode Total=Free=%x\n", dwMaxMem); + *lpdwTotal = dwMaxMem; + *lpdwFree = dwMaxMem; + return DD_OK; + } OutTraceE("GetAvailableVidMem(D): ERROR res=%x(%s)\n", res, ExplainDDError(res)); } else { @@ -4574,7 +4600,6 @@ HRESULT WINAPI extDDGetGammaRamp(LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags, LPDDG *lpDDSCaps, ExplainDDSCaps(lpDDSCaps->dwCaps), lpdwTotal?*lpdwTotal:0, lpdwFree?*lpdwFree:0); if(dxw.dwFlags2 & LIMITRESOURCES){ // check for memory value overflow - see "Mageslayer" and "Take no Prisoners" DWORD dwLocalTotal; - const DWORD dwMaxMem = 0x7FFFF000; if(lpdwTotal == NULL) { lpdwTotal = &dwLocalTotal; // point to usable memory.... res=(*pGetAvailableVidMem)(lpdd, lpDDSCaps, lpdwTotal, lpdwFree); // do it again to get total memory diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp index 9a1946c..f1742f3 100644 --- a/dll/dxwcore.cpp +++ b/dll/dxwcore.cpp @@ -884,7 +884,13 @@ DWORD dxwCore::GetTickCount(void) static DWORD dwLastRealTick=0; static DWORD dwLastFakeTick=0; DWORD dwNextRealTick; + BOOL FirstTime = TRUE; + if(FirstTime){ + dwLastRealTick=(*pGetTickCount)(); + dwLastFakeTick=dwLastRealTick; + FirstTime=FALSE; + } dwNextRealTick=(*pGetTickCount)(); dwTick=(dwNextRealTick-dwLastRealTick); TimeShift=GetHookInfo()->TimeShift; @@ -910,9 +916,13 @@ DWORD dxwCore::StretchCounter(DWORD dwTimer) LARGE_INTEGER dxwCore::StretchCounter(LARGE_INTEGER dwTimer) { + static int Reminder = 0; + LARGE_INTEGER ret; TimeShift=GetHookInfo()->TimeShift; - dwTimer = TimeShifter64(dwTimer, TimeShift); - return dwTimer; + dwTimer.QuadPart += Reminder; + ret = TimeShifter64(dwTimer, TimeShift); + Reminder = (ret.QuadPart==0) ? dwTimer.LowPart : 0; + return ret; } void dxwCore::GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime) diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index f043e94..8f2c2ca 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -24,7 +24,7 @@ along with this program. If not, see . #include "dxwnd.h" #include "dxwcore.hpp" -#define VERSION "2.02.59" +#define VERSION "2.02.60" #define DDTHREADLOCK 1 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 68bd8e79dafc0ca594adfa8b20c72f8e300bfee0..7cf425819a1a5f913c731daf51d2c81c75c2a579 100644 GIT binary patch delta 26434 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 S-+<5gf8lII&3~!sdH(~B*n6Y^ delta 2809 zcma)8eNa@_6@TaQ-nuTE=Zd&2WL+MFRYStMAfF?`g2WPI2r!II_^LM1qO}QCnl?x> z%g9VJtqlto_e4Rv7zdMLthy66`iF&)KN_Qf*d$G7THQFYnQ1%L5vCJc13mXWSeeW; zlgIqvew}mA=kF34UhE%T6!3xhOxYu{>Mv*+elKeR;v`A(-{kG`B_)A|d3@=%WoSDC z4(>P0{1?g>Y_r6hP33SiJZO51VWl^|i+UPxN* zpwX4#+=PG4+?o~JPMVj8zh3%f9EL7J3fEG#u*=?J=5JKD@K8-csrMTK$s{!YEmZUZ zE$$~QCoEVGm!_VR6{`@!!Nc%mcvD6`@Y)(*c+|Z=&LpX{vE;t5Cu!Q18g73$!J>AO z&%T{25ar4{;8XluK)O?r-g?~ycVqqI}nP2;^BYEq$!cRp8yS}vH*)=sao zD3lBjL1Ne%fbzJXNo{=0wj7(gARUi-!GyhoG^*|fJ5FXm0>9Lrk9Q711>W8Q0p5B| z#i}lFo$VN}Q$#i`G2g?}lNoMVI2?BVyV49-`1YBn-~xYlW`q2Dx{%+S$$j+KG?*ZW zW0P}#1N8S4;ZwpVgufHSK5v|Dgqfag-#ZRYyxj*S*m?{S@y0=L;nssth+S?-4|anU zZ>2#(Z@CI}IF<*c+_qGv0IPK3qX8%i_JE8R1|R{luyX+1SkgmUnh!w=%1%feae*(6 z``Tq3x(=CG{{?7x={n?K&Ybp$(9ZDc6l9<#)GX&;|LRpb)#)Z>dZ40CP=lX?8GZe9 z*YU$ph1G}2nmqwX=OJ6V(k8tmwc@M`QX{UFaAR>iWk>QzE#&D&EbE7-gemEG`gO7_ zKt@4Er3UHa)6YMH$lF>g}yAHem>?-9?AiRHxAL&lr58R z#)=`@)k77t)lT(OHV8G?b_BHGF=(V9I;eBZ80`czJY#rfYXX<3(~*1_H!0i6)E~!k zjnl>OG3<`bBh%}_YL37wKutM|z5>>Ozi}}0LtiTAm_?FiXG2VyZ@j{nZ&Jk@pVn~` zFF4uoeDmrinDD=OtQPwV*aIowF6SB91eE|gV}@Yc6L0`;7qFKxbduaWlFS}FF}fKn z+*Y+4Kf4aA`Cs;B@ENxme^?K`$msXM$KYAsZO=lj6I{LfEsCI+YCg7W1D33S1RT!; z4?nd{qZRiSPm8GT{p0L&5}MlJF7XD&dcWj|ra; zJ|+B#@EJk$t3agXClHN;9kGN&+I|WLAZTX}*Z)r?l>@`}Bz8hC1N0vRO9a|r15<1i zO}0SUi*O(gPZzQxJW{~ozpXlUJt(TG3q1Ib6jrxN5c_v2#ut-V)ldhppchv6R=q+! zt+)B}je3q97|e#1B7qKmzEf3F$h;WArs%1nUP?sDlwGuRz8J~aIzZL3%E-0OKCQWP zrJ>W;sXd@UgU($z>L!L+Cyo}O_b#a#%_9Z6D#3oRM9_s!JNhjqv=y=@jJ^X}Z@Cqh z<*+T^*;RXr(RZ2ncmb<@I6G%;ZeG5B(fK&NVX2N_FS+-PPwS|}96QU5_`ATr7;Ec^ zDd&PS$FfbLD~bfc+TqDq^sMM@fXhfy)$jwOZ$umLk^Oc^#<3=%?P9kITX207yc+8o zui!loe%MHKTi0MPprv<>E8^;f8xZf2o|RhZN0Oc}E+Um)*vvb3WO0wCfr>Q^`U7CX ztpQMp@x%i_G4~jaNS&L{U)xauD@4GT4F!okSwGQ+>IGF1?Cim`0Eta@Lmj=OpylBs zPUfKhkdp9)05pi#HOpATmKw_Gm)%a*1oI>nU&}bes%w=+5BK=TMK6 zUV3<4cc9rwgD3DCMP_ALWAYS\n", ExplainRenderstateValue(Value)); + Value = D3DCMP_ALWAYS; + } + if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRS_FILLMODE)) Value=D3DFILL_WIREFRAME; + if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRS_FOGENABLE)) Value=FALSE; + //if(1 && (State == D3DRS_SPECULARENABLE)) Value=TRUE; return (*pSetRenderState)(pd3dd, State, Value); } @@ -1295,3 +1334,48 @@ ULONG WINAPI extRelease9(void *lpdd3dd) return res; } +//ULONG WINAPI extCreateRenderTarget8(void *lpdd3dd, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, BOOL Lockable, IDirect3DSurface8** ppSurface) +ULONG WINAPI extCreateRenderTarget8(void *lpdd3dd, UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, BOOL Lockable, void** ppSurface) +{ + ULONG res; + + OutTraceD3D("Device::CreateRenderTarget(8): dd3dd=%x dim=(%dx%d) Format=%x Lockable=%x\n", + lpdd3dd, Width, Height, Format, Lockable); + res=(*pCreateRenderTarget8)(lpdd3dd, Width, Height, Format, MultiSample, Lockable, ppSurface); + OutTraceD3D("Device::CreateRenderTarget(8): res=%x\n", res); + return res; +} + +ULONG WINAPI extBeginScene8(void *lpdd3dd) +{ + ULONG res; + OutTraceD3D("Device::BeginScene(8): d3dd=%x\n", lpdd3dd); + res=(*pBeginScene8)(lpdd3dd); + if (res) OutTraceE("Device::BeginScene(8) ERROR: err=%x\n", res); + return res; +} + +ULONG WINAPI extBeginScene9(void *lpdd3dd) +{ + ULONG res; + OutTraceD3D("Device::BeginScene(9): d3dd=%x\n", lpdd3dd); + res=(*pBeginScene9)(lpdd3dd); + if (res) OutTraceE("Device::BeginScene(9) ERROR: err=%x\n", res); + return res; +} + +ULONG WINAPI extEndScene8(void *lpdd3dd) +{ + ULONG res; + res=(*pEndScene8)(lpdd3dd); + if (res) OutTraceE("Device::EndScene(8) ERROR: err=%x\n", res); + return res; +} + +ULONG WINAPI extEndScene9(void *lpdd3dd) +{ + ULONG res; + res=(*pEndScene9)(lpdd3dd); + if (res) OutTraceE("Device::EndScene(9) ERROR: err=%x\n", res); + return res; +} diff --git a/dll/hd3d7.cpp b/dll/hd3d7.cpp index 47be8e2..4223947 100644 --- a/dll/hd3d7.cpp +++ b/dll/hd3d7.cpp @@ -301,6 +301,7 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion) if(pSetRenderState2){ if(dxw.dwFlags2 & WIREFRAME)(*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_FOGENABLE, FALSE); + if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_ALWAYS); } break; case 3: @@ -315,6 +316,7 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion) if(pSetRenderState3){ if(dxw.dwFlags2 & WIREFRAME)(*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_FOGENABLE, FALSE); + if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_ALWAYS); } break; case 7: @@ -801,6 +803,10 @@ HRESULT WINAPI extSetRenderState2(void *d3dd, D3DRENDERSTATETYPE State, DWORD Va if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRENDERSTATE_FILLMODE)){ Value = D3DFILL_WIREFRAME; OutTraceD3D("SetRenderState: FIXED State=FILLMODE Value=D3DFILL_WIREFRAME\n"); +} + if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRENDERSTATE_FOGENABLE)){ + OutTraceD3D("SetRenderState: FIXED State=FOGENABLE Value=FALSE\n"); + Value = FALSE; } res=(*pSetRenderState2)(d3dd, State, Value); if(res) OutTraceE("SetRenderState(2): res=%x(%s)\n", res, ExplainDDError(res)); diff --git a/dll/kernel32.cpp b/dll/kernel32.cpp index 8e37c87..ed30e24 100644 --- a/dll/kernel32.cpp +++ b/dll/kernel32.cpp @@ -41,8 +41,8 @@ static HookEntry_Type TimeHooks[]={ {"GetSystemTimeAsFileTime", (FARPROC)GetSystemTimeAsFileTime, (FARPROC *)&pGetSystemTimeAsFileTime, (FARPROC)extGetSystemTimeAsFileTime}, {"Sleep", (FARPROC)Sleep, (FARPROC *)&pSleep, (FARPROC)extSleep}, {"SleepEx", (FARPROC)SleepEx, (FARPROC *)&pSleepEx, (FARPROC)extSleepEx}, - {"QueryPerformanceCounter", (FARPROC)NULL, (FARPROC *)&pQueryPerformanceCounter, (FARPROC)extQueryPerformanceCounter}, - {"QueryPerformanceFrequency", (FARPROC)NULL, (FARPROC *)&pQueryPerformanceFrequency, (FARPROC)extQueryPerformanceFrequency}, + {"QueryPerformanceCounter", (FARPROC)QueryPerformanceCounter, (FARPROC *)&pQueryPerformanceCounter, (FARPROC)extQueryPerformanceCounter}, + {"QueryPerformanceFrequency", (FARPROC)QueryPerformanceFrequency, (FARPROC *)&pQueryPerformanceFrequency, (FARPROC)extQueryPerformanceFrequency}, {0, NULL, 0, 0} // terminator }; diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index cc73e27ffd9263b7629d09011b2a7fa3642d1e3b..f21bee9e2bba6d735a7ef4fa1c51595f60ef3f28 100644 GIT binary patch delta 1330 zcmY*ZZA@EL7{1T#y?1=Cj224Apk;g(#tIt*8IW6OkO1Lph-|_FicC-^S*nch^1}>& zuwh@<^TT9eu#hY~?55izhE8cs z_84&S#!kLAarhHa!9lK({2z_XHma|x*~k)O4nhdK9O8sad|S2T{PPgcgC+`QkU@_N zK9dtUo*z}#b_?C6h@V1gJ+{5)kw!`qVAaM-WGP{Z({J$o9^W)yR$z|h_WurrLbo}P z!DY=T6XVMxiT-Tjm|zutlHV8O1R)gqUKBVZvMOJ#l%9x!%YlYm7Ki5US9kuAS)fmNUEoA1NMs6f7J5%eSQg+XNn9`5e zPWQ9G0!pZ^)uB7QaEJ*)uQ14)JtkZb2HDIs&WI;YvVkK=*Nq0K5;GRy(LK%B5-~=< zZx*rk190FmExh;^TTg*PMz*A1Y30~zJ50eVxD?wh)N`u?LIZhXvQWWx%5a>SGZBMH zDm{}6H+fo}d!v%L`RO%FIK^-Y1WK+*3rEbBy3il+sBAe0+2nrRMgFsrzW5AA75d>( z0sE#6E>g#nm@&aC`Y;cf5khq@E`s@cz;iptbEAz8JDv3mF{2*_J=%29{W&{Hb=AS= zd1dOpJEV2it${kbD%qj}iT%=tR4RKRC-A@(Zl&Hmh#ssCfgAd2M7O?owUMu* zC3uzB$>=bGi>MEOD)DRFUL`lp7Yj|piKoaZAC-Ig{oKCu63*z3kT|ObS*DYMo19gr RWjB8qVP7tyncZDP^*@{Iii`jN delta 1200 zcmZWpT}&KR6rM9XGaZ-Rb=Yo~fwnNkEu~Ak0a^%AN~XJjo26N{(}Gp0X*X1BRYICg zNpZmq*whz;^fcTTV>YxQZ68+RO&EQ_5qYT5nCgpf1}YCcn1&c)?ThQZOI(|HlRI9J4)`3vX~XYzzMMln&>_8Hoze~Ak`_OUV87#BX~tRg)w&vHcJxyOX|}U zp;{1xSMY#uH}TDYPBVL2MQFndY85V5T~`EPu(u3jMn3~p|Eb%0KYlBGl8B)jm*@skRi zWfph&7;+s`MS8942EZhRXi>IvW8eTfedf)0Nap2>csTyDR1z}r&e>s|K8Sa~d{Ugf z5TJpRzXPd^K>+i&b&@*>e%h5<*@fDwMm2K_a4qGbp0n*&aU)TW+DH%=Pw%6fKk7#@ zbq zc$?T1RA%C95+VA5o$G*{%eFe903<6hdXe9bJ$H%0Puc#&E*=MvF?}(N_oG2##=yj% z*9~HHL(QBDKBCrwCJqA{Jq@^W!mt@&i0GdV;p%%tt2an+O!`Z&j(545QG;};KH;Tp@onD3}U$5+-2Rt3k|WeYp0v8y{{4X?HRU#JmQMZH}TVAM`SiZz?MW+ ziPpd0mMEiiinZ)xFc{~79J^K~uJq|Uy?8vJ;FQ;opC&`k5(a{^?;V6TQk;Qq{$G&` ZEcYP(WE{mcLno`V(8+`l+s6Nue*g`gh57&h