From 6966a0370e04cb9c8e31c8db7ec9a9e843e8b292 Mon Sep 17 00:00:00 2001 From: gho tik Date: Sun, 15 Feb 2015 11:40:23 -0500 Subject: [PATCH] v2_03_11_src Former-commit-id: 046b09ea806d564a4c8daeec4f40438b6ece3e90 --- build/dxwnd.0.ini | 1 - build/dxwnd.dll | 4 +- build/dxwnd.exe | 4 +- build/exports/Carmageddon (gore).dxw | 29 +++++++++++ build/exports/Carmageddon (no gore).dxw | 29 +++++++++++ build/exports/Hercules.dxw | 29 +++++++++++ build/exports/I-War.dxw | 29 +++++++++++ build/exports/Mephisto Chess.dxw | 29 +++++++++++ build/exports/Open Ice 2 on 2 Challenge.dxw | 29 +++++++++++ build/exports/Resident Evil (sw mode).dxw | 29 +++++++++++ build/exports/Starfleet Academy (d3d).dxw | 29 +++++++++++ build/exports/Starfleet Academy (sw).dxw | 29 +++++++++++ build/exports/Street Fighters Zero.dxw | 29 +++++++++++ build/exports/SubCulture (3DFX).dxw | 29 +++++++++++ build/exports/SubCulture (D3D).dxw | 29 +++++++++++ build/exports/SubCulture (sw).dxw | 29 +++++++++++ build/exports/Virtua Fighter 2.dxw | 29 +++++++++++ build/readme-relnotes.txt | 7 ++- build/redist/d3drm.dll | 3 ++ build/registry/dxwnd.Hercules.REG | 14 ++++++ build/registry/dxwnd.Street Fighters Zero.REG | 7 +++ dll/ddraw.cpp | 29 ++++++----- dll/dxwcore.cpp | 1 + dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 66560 -> 93696 bytes dll/kernel32.cpp | 46 +++++++++++++----- dll/user32.cpp | 27 ++++------ host/Resource.h | Bin 33160 -> 248 bytes host/dxwndhost.vs2008.suo | Bin 204984 -> 197632 bytes host/dxwndhost.vs2008.vcproj | 4 -- 30 files changed, 503 insertions(+), 52 deletions(-) create mode 100644 build/exports/Carmageddon (gore).dxw create mode 100644 build/exports/Carmageddon (no gore).dxw create mode 100644 build/exports/Hercules.dxw create mode 100644 build/exports/I-War.dxw create mode 100644 build/exports/Mephisto Chess.dxw create mode 100644 build/exports/Open Ice 2 on 2 Challenge.dxw create mode 100644 build/exports/Resident Evil (sw mode).dxw create mode 100644 build/exports/Starfleet Academy (d3d).dxw create mode 100644 build/exports/Starfleet Academy (sw).dxw create mode 100644 build/exports/Street Fighters Zero.dxw create mode 100644 build/exports/SubCulture (3DFX).dxw create mode 100644 build/exports/SubCulture (D3D).dxw create mode 100644 build/exports/SubCulture (sw).dxw create mode 100644 build/exports/Virtua Fighter 2.dxw create mode 100644 build/redist/d3drm.dll create mode 100644 build/registry/dxwnd.Hercules.REG create mode 100644 build/registry/dxwnd.Street Fighters Zero.REG diff --git a/build/dxwnd.0.ini b/build/dxwnd.0.ini index 2fe96ca..bb365c8 100644 --- a/build/dxwnd.0.ini +++ b/build/dxwnd.0.ini @@ -7,7 +7,6 @@ lang=automatic ;debug=1 ;multiprocesshook=0 ;checkadmin=0 -;debugview=.\DbgView.exe [texture] MinTexX=16 MaxTexX=0 diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 463aeeb..7fa61f2 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f4a7d264c0d0399abc66b1b547cb25224cb2e3138ae59c1ac06234bae23948c -size 567808 +oid sha256:d53bda86269a959549e061c5b2c23e70b492dcb1b1e2b944063b193b49179d87 +size 567296 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index 61dbd43..fcfb1b7 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1dcfaa8abb3449b38509567fc3220db7d161443ceebdb0e398458888c4e490f -size 537088 +oid sha256:be381f4fba85d8c7dcb13682c470713728dd133b38e6d4d1ed65fc6ceb74e771 +size 536064 diff --git a/build/exports/Carmageddon (gore).dxw b/build/exports/Carmageddon (gore).dxw new file mode 100644 index 0000000..bdb2cf6 --- /dev/null +++ b/build/exports/Carmageddon (gore).dxw @@ -0,0 +1,29 @@ +[target] +title0=Carmageddon (gore) +path0=D:\Games\carsplat\CARMA95.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +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/Carmageddon (no gore).dxw b/build/exports/Carmageddon (no gore).dxw new file mode 100644 index 0000000..6993126 --- /dev/null +++ b/build/exports/Carmageddon (no gore).dxw @@ -0,0 +1,29 @@ +[target] +title0=Carmageddon (no gore) +path0=D:\Games\carsplat\CARM95G.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +tflag0=512 +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/Hercules.dxw b/build/exports/Hercules.dxw new file mode 100644 index 0000000..a818522 --- /dev/null +++ b/build/exports/Hercules.dxw @@ -0,0 +1,29 @@ +[target] +title0=Hercules +path0=D:\Games\HERC\HERCULES.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1744830464 +flagh0=1044 +flagi0=1212153862 +flagj0=4224 +tflag0=6659 +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/I-War.dxw b/build/exports/I-War.dxw new file mode 100644 index 0000000..334d795 --- /dev/null +++ b/build/exports/I-War.dxw @@ -0,0 +1,29 @@ +[target] +title0=I-War +path0=D:\Games\iwar\IWar.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1476395008 +flagh0=20 +flagi0=138412036 +flagj0=4224 +tflag0=512 +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/Mephisto Chess.dxw b/build/exports/Mephisto Chess.dxw new file mode 100644 index 0000000..4b3a91a --- /dev/null +++ b/build/exports/Mephisto Chess.dxw @@ -0,0 +1,29 @@ +[target] +title0=Mephisto Chess +path0=D:\Games\mephisto\mephisto.exe +launchpath0= +module0= +opengllib0= +notes0=Run in window, but needs "Limit available resources" flag to run +ver0=0 +coord0=0 +flag0=536870946 +flagg0=1476395008 +flagh0=20 +flagi0=138412038 +flagj0=4224 +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/Open Ice 2 on 2 Challenge.dxw b/build/exports/Open Ice 2 on 2 Challenge.dxw new file mode 100644 index 0000000..eabee5d --- /dev/null +++ b/build/exports/Open Ice 2 on 2 Challenge.dxw @@ -0,0 +1,29 @@ +[target] +title0=Open Ice 2 on 2 Challenge +path0=D:\Games\OPENICE\OPENICE.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +tflag0=512 +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/Resident Evil (sw mode).dxw b/build/exports/Resident Evil (sw mode).dxw new file mode 100644 index 0000000..b1a61be --- /dev/null +++ b/build/exports/Resident Evil (sw mode).dxw @@ -0,0 +1,29 @@ +[target] +title0=Resident Evil (sw mode) +path0=D:\Games\resevil\residentevil.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=134217826 +flagg0=1744830592 +flagh0=20 +flagi0=138412036 +flagj0=4224 +tflag0=6403 +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/Starfleet Academy (d3d).dxw b/build/exports/Starfleet Academy (d3d).dxw new file mode 100644 index 0000000..d16a845 --- /dev/null +++ b/build/exports/Starfleet Academy (d3d).dxw @@ -0,0 +1,29 @@ +[target] +title0=Starfleet Academy (d3d) +path0=D:\Games\SFA\SFAD3D.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1207959552 +flagh0=20 +flagi0=138412038 +flagj0=4224 +tflag0=536870912 +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/Starfleet Academy (sw).dxw b/build/exports/Starfleet Academy (sw).dxw new file mode 100644 index 0000000..2d81b48 --- /dev/null +++ b/build/exports/Starfleet Academy (sw).dxw @@ -0,0 +1,29 @@ +[target] +title0=Starfleet Academy (sw) +path0=D:\Games\SFA\SFA.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1207959552 +flagh0=20 +flagi0=134217734 +flagj0=4224 +tflag0=536870912 +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/Street Fighters Zero.dxw b/build/exports/Street Fighters Zero.dxw new file mode 100644 index 0000000..680b014 --- /dev/null +++ b/build/exports/Street Fighters Zero.dxw @@ -0,0 +1,29 @@ +[target] +title0=Street Fighters Zero +path0=D:\Games\sfzero\relbin\ZERO_A95.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=134217760 +flagg0=1744830464 +flagh0=1044 +flagi0=1212153860 +flagj0=8392832 +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/SubCulture (3DFX).dxw b/build/exports/SubCulture (3DFX).dxw new file mode 100644 index 0000000..0b592bd --- /dev/null +++ b/build/exports/SubCulture (3DFX).dxw @@ -0,0 +1,29 @@ +[target] +title0=SubCulture (3DFX) +path0=D:\Games\subcult\SC3DFX.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=671088674 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +tflag0=512 +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/SubCulture (D3D).dxw b/build/exports/SubCulture (D3D).dxw new file mode 100644 index 0000000..a361565 --- /dev/null +++ b/build/exports/SubCulture (D3D).dxw @@ -0,0 +1,29 @@ +[target] +title0=SubCulture (D3D) +path0=D:\Games\subcult\SCD3D.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=671088690 +flagg0=1207959552 +flagh0=20 +flagi0=138416132 +flagj0=4224 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=800 +maxy0=600 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=4 diff --git a/build/exports/SubCulture (sw).dxw b/build/exports/SubCulture (sw).dxw new file mode 100644 index 0000000..8074906 --- /dev/null +++ b/build/exports/SubCulture (sw).dxw @@ -0,0 +1,29 @@ +[target] +title0=SubCulture (sw) +path0=D:\Games\subcult\SC.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=671088674 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +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/Virtua Fighter 2.dxw b/build/exports/Virtua Fighter 2.dxw new file mode 100644 index 0000000..704ec69 --- /dev/null +++ b/build/exports/Virtua Fighter 2.dxw @@ -0,0 +1,29 @@ +[target] +title0=Virtua Fighter 2 +path0=D:\Games\VF2\VF2.EXE +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=671088674 +flagg0=1744830592 +flagh0=20 +flagi0=138412038 +flagj0=4224 +tflag0=536870912 +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/readme-relnotes.txt b/build/readme-relnotes.txt index bcbc42b..c440d13 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -735,4 +735,9 @@ fix: handle leakage for primary hdc, causing rapid performance downgrade fix: log message reorganization add: SetStretchBltMode HALFTONE in GDI mode to provide bilinear filtered GDI stretching fix: some GDI mode optimization - should bring performances similar to D3DWindower, with similar configuration -fix: GDI mode bug, crashing when blitting from NULL surface (to do a color fill operation) \ No newline at end of file +fix: GDI mode bug, crashing when blitting from NULL surface (to do a color fill operation) + +v2.03.11 +fix: added DDSCAPS_FLIP capability to emulated backbuffer surface. Fixes "Injection" missing flips +fix: added high order bit set to kernel32.dll GetVersion() wrapper in case of Win95/98 emulation. Fixes "Warhead" frontend program +fix: coordinates returned by user32.dll GetClipCursor() must be scaled accordingly with virtual desktop size. Fixes "SubCulture" mouse control problems \ No newline at end of file diff --git a/build/redist/d3drm.dll b/build/redist/d3drm.dll new file mode 100644 index 0000000..623c3cb --- /dev/null +++ b/build/redist/d3drm.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd80f3839a035b6b52362735b22eb8d2523d3434bf18afb3e0f1b5ace84357b0 +size 437008 diff --git a/build/registry/dxwnd.Hercules.REG b/build/registry/dxwnd.Hercules.REG new file mode 100644 index 0000000..0bcb9f8 --- /dev/null +++ b/build/registry/dxwnd.Hercules.REG @@ -0,0 +1,14 @@ + +[HKEY_LOCAL_MACHINE\SOFTWARE] +[HKEY_LOCAL_MACHINE\SOFTWARE\Disney Interactive] +[HKEY_LOCAL_MACHINE\SOFTWARE\Disney Interactive\Hercules] +[HKEY_LOCAL_MACHINE\SOFTWARE\Disney Interactive\Hercules\1.00] +"DATA"="DATA\\" +"User Path"=".\\" +"BitVersion"="32 Bit" +"PATH"=".\\" +"EntryPoint"=".\\Hercules.exe" +"Help"=".\\hercules.hlp" +"Uninstall"="C:\\WINDOWS\\uninst.exe -fC:\\Hercules\\DeIsL1.isu" +"Config"=hex:05,ca,ab,07,01,01,01,00,03,01,01,00,01,01,01,00,ff,3f,00,00,01,00,ff,ff,03,00,00,00,26,00,28,00,25,00,27,00,58,00,5a,00,43,00,44,00,53,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 + diff --git a/build/registry/dxwnd.Street Fighters Zero.REG b/build/registry/dxwnd.Street Fighters Zero.REG new file mode 100644 index 0000000..f6fbd85 --- /dev/null +++ b/build/registry/dxwnd.Street Fighters Zero.REG @@ -0,0 +1,7 @@ + +[HKEY_LOCAL_MACHINE\SOFTWARE\CAPCOM] +[HKEY_LOCAL_MACHINE\SOFTWARE\CAPCOM\STREETFIGHTERZERO] +""="..\\bin" + +[HKEY_LOCAL_MACHINE\SOFTWARE\CAPCOM\STREETFIGHTERZERO\1.0] + diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index c10bf79..bf5309b 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -2850,7 +2850,7 @@ void BlitError(HRESULT res, LPRECT lps, LPRECT lpd, int line) void BlitTrace(char *label, LPRECT lps, LPRECT lpd, int line) { char sInfo[512]; - sprintf(sInfo, "Blt: %s", label); + sprintf(sInfo, "[%s]", label); if (lps) sprintf(sInfo, "%s src=(%d,%d)-(%d,%d)", sInfo, lps->left, lps->top, lps->right, lps->bottom); else @@ -3644,8 +3644,10 @@ HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFAC HRESULT res; //RECT screen, rect; BOOL IsPrim; + BOOL IsBack; IsPrim=dxw.IsAPrimarySurface(lpdds); + IsBack=dxw.IsABackBufferSurface(lpdds); if ((dxversion == 4) && lprect) CleanRect(&lprect,__LINE__); @@ -3657,7 +3659,7 @@ HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFAC } else sprintf_s(sRect, 80, "lpvoid=%x", lprect); - OutTrace("Unlock(%d): lpdds=%x%s %s\n", dxversion, lpdds, (IsPrim ? "(PRIM)":""), sRect); + OutTrace("Unlock(%d): lpdds=%x%s %s\n", dxversion, lpdds, (IsPrim ? "(PRIM)": (IsBack ? "(BACK)" : "")), sRect); } res=(*pUnlock)(lpdds, lprect); @@ -3666,11 +3668,11 @@ HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFAC if (IsPrim && res==DD_OK) { if(dxversion == 1){ res=sBlt("Unlock", lpdds, NULL, lpdds, NULL, NULL, 0, FALSE); - if(IsPrim) (*pInvalidateRect)(dxw.GethWnd(), NULL, FALSE); // to fix "Deadlock II" mouse trails.... + (*pInvalidateRect)(dxw.GethWnd(), NULL, FALSE); // to fix "Deadlock II" mouse trails.... } else { res=sBlt("Unlock", lpdds, lprect, lpdds, lprect, NULL, 0, FALSE); - if(IsPrim) (*pInvalidateRect)(dxw.GethWnd(), lprect, FALSE); + (*pInvalidateRect)(dxw.GethWnd(), lprect, FALSE); } } @@ -4325,31 +4327,34 @@ HRESULT WINAPI extGetCapsS(int dxInterface, GetCapsS_Type pGetCapsS, LPDIRECTDRA IsPrim=dxw.IsAPrimarySurface(lpdds); IsBack=dxw.IsABackBufferSurface(lpdds); IsFixed=FALSE; - OutTraceDDRAW("GetCaps(S%d): lpdds=%x%s, lpcaps=%x\n", dxInterface, lpdds, IsPrim?"(PRIM)":"", caps); + char *sLabel; + + sLabel = IsPrim?"(PRIM)":(IsBack ? "(BACK)" : ""); res=(*pGetCapsS)(lpdds, caps); if(res) - OutTraceE("GetCaps(S%d): ERROR %x(%s)\n", dxInterface, res, ExplainDDError(res)); + OutTraceE("GetCaps(S%d): ERROR lpdds=%x%s err=%x(%s)\n", dxInterface, lpdds, sLabel, res, ExplainDDError(res)); else - OutTraceDDRAW("GetCaps(S%d): lpdds=%x caps=%x(%s)\n", dxInterface, lpdds, caps->dwCaps, ExplainDDSCaps(caps->dwCaps)); + OutTraceDDRAW("GetCaps(S%d): lpdds=%x%s caps=%x(%s)\n", dxInterface, lpdds, sLabel, caps->dwCaps, ExplainDDSCaps(caps->dwCaps)); if (IsPrim) { - OutTraceDW("GetCaps(S%d): fixing PRIMARY surface\n", dxInterface); IsFixed=TRUE; + sLabel="PRIMARYSURFACE"; caps->dwCaps |= DDSD_Prim.ddsCaps.dwCaps; caps->dwCaps |= DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_FRONTBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_VISIBLE; // primary surfaces must be this way caps->dwCaps &= ~(DDSCAPS_SYSTEMMEMORY|DDSCAPS_OFFSCREENPLAIN); // primary surfaces can't be this way } if (IsBack) { - OutTraceDW("GetCaps(S%d): fixing BACKBUFFER surface\n", dxInterface); IsFixed=TRUE; - caps->dwCaps |= (DDSCAPS_BACKBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); // you never know.... + sLabel="BACKBUFFER"; + // v2.03.11: added DDSCAPS_FLIP capability to backbuffer surface: "Ignition" checks for it before Flip-ping to primary + caps->dwCaps |= (DDSCAPS_BACKBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_FLIP|DDSCAPS_LOCALVIDMEM); // you never know.... caps->dwCaps &= ~(DDSCAPS_SYSTEMMEMORY|DDSCAPS_OFFSCREENPLAIN); // backbuffer surfaces can't be this way } if ((caps->dwCaps & DDSCAPS_ZBUFFER) || (lpdds == lpDDZBuffer)){ - OutTraceDW("GetCaps(S%d): fixing ZBUFFER surface\n", dxInterface); IsFixed=TRUE; + sLabel="ZBUFFER"; if (DDZBufferCaps & DDSCAPS_SYSTEMMEMORY){ caps->dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_SYSTEMMEMORY); caps->dwCaps &= ~(DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); @@ -4360,7 +4365,7 @@ HRESULT WINAPI extGetCapsS(int dxInterface, GetCapsS_Type pGetCapsS, LPDIRECTDRA } } - if(IsFixed) OutTraceDW("GetCaps(S%d): lpdds=%x FIXED caps=%x(%s)\n", dxInterface, lpdds, caps->dwCaps, ExplainDDSCaps(caps->dwCaps)); + if(IsFixed) OutTraceDW("GetCaps(S%d): lpdds=%x FIXED %s caps=%x(%s)\n", dxInterface, lpdds, sLabel, caps->dwCaps, ExplainDDSCaps(caps->dwCaps)); return res; } diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp index 2836fd6..f938518 100644 --- a/dll/dxwcore.cpp +++ b/dll/dxwcore.cpp @@ -1062,6 +1062,7 @@ void dxwCore::SetVSyncDelays(UINT RefreshRate) int Reminder; char sInfo[256]; + if(!(dxw.dwFlags1 & SAVELOAD)) return; if((RefreshRate < 10) || (RefreshRate > 100)) return; gdwRefreshRate = RefreshRate; diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index a547dd9..2f4d241 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -27,7 +27,7 @@ along with this program. If not, see . #include "TlHelp32.h" -#define VERSION "2.03.10" +#define VERSION "2.03.11" #define DDTHREADLOCK 1 //#define LOCKTHREADS diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 442910e345932411a5e9ad94ef2773f7d77cdfc9..46899f7edb7ea9a41c76bec77617e006610a82f3 100644 GIT binary patch literal 93696 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
_#PUJa@kQf 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, lpVersionInfo->dwMinorVersion, lpVersionInfo->dwBuildNumber); if(dxw.dwFlags2 & FAKEVERSION) { @@ -249,7 +272,7 @@ BOOL WINAPI extGetVersionExA(LPOSVERSIONINFOA lpVersionInfo) lpVersionInfo->dwMajorVersion = WinVersions[dxw.FakeVersionId].bMajor; lpVersionInfo->dwMinorVersion = WinVersions[dxw.FakeVersionId].bMinor; lpVersionInfo->dwBuildNumber = 0; - OutTraceDW("GetVersionEx: FIXED version=%d.%d build=(%d) os=\"%s\"\n", + OutTraceDW("GetVersionExA: FIXED version=%d.%d build=(%d) os=\"%s\"\n", lpVersionInfo->dwMajorVersion, lpVersionInfo->dwMinorVersion, lpVersionInfo->dwBuildNumber, WinVersions[dxw.FakeVersionId].sName); } @@ -262,11 +285,11 @@ BOOL WINAPI extGetVersionExW(LPOSVERSIONINFOW lpVersionInfo) ret=(*pGetVersionExW)(lpVersionInfo); if(!ret) { - OutTraceE("GetVersionEx: ERROR err=%d\n", GetLastError()); + OutTraceE("GetVersionExW: ERROR err=%d\n", GetLastError()); return ret; } - OutTraceDW("GetVersionEx: version=%d.%d build=(%d)\n", + OutTraceDW("GetVersionExW: version=%d.%d build=(%d)\n", lpVersionInfo->dwMajorVersion, lpVersionInfo->dwMinorVersion, lpVersionInfo->dwBuildNumber); if(dxw.dwFlags2 & FAKEVERSION) { @@ -274,7 +297,7 @@ BOOL WINAPI extGetVersionExW(LPOSVERSIONINFOW lpVersionInfo) lpVersionInfo->dwMajorVersion = WinVersions[dxw.FakeVersionId].bMajor; lpVersionInfo->dwMinorVersion = WinVersions[dxw.FakeVersionId].bMinor; lpVersionInfo->dwBuildNumber = 0; - OutTraceDW("GetVersionEx: FIXED version=%d.%d build=(%d) os=\"%ls\"\n", + OutTraceDW("GetVersionExW: FIXED version=%d.%d build=(%d) os=\"%ls\"\n", lpVersionInfo->dwMajorVersion, lpVersionInfo->dwMinorVersion, lpVersionInfo->dwBuildNumber, WinVersions[dxw.FakeVersionId].sName); } @@ -307,8 +330,9 @@ DWORD WINAPI extGetVersion(void) dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion))); dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion))); dwBuild = (DWORD)(HIWORD(dwVersion)); - OutTraceDW("GetVersion: FIXED version=%d.%d build=(%d) os=\"%s\"\n", - dwMajorVersion, dwMinorVersion, dwBuild, WinVersions[dxw.FakeVersionId].sName); + if(WinVersions[dxw.FakeVersionId].bMajor == 4) dwVersion |= 0x80000000; // v2.03.11: fixes "Warhead" + OutTraceDW("GetVersion: FIXED version=%x: Win%d.%d build=(%d) os=\"%s\"\n", + dwVersion, dwMajorVersion, dwMinorVersion, dwBuild, WinVersions[dxw.FakeVersionId].sName); } return dwVersion; diff --git a/dll/user32.cpp b/dll/user32.cpp index 834e23f..f1721e1 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -403,9 +403,7 @@ void dxwFixWindowPos(char *ApiName, HWND hwnd, LPARAM lParam) LONG dwStyle, dwExStyle; HMENU hMenu; int minx, miny; - wrect.top = wrect.left = 0; - wrect.right = dxw.GetScreenWidth(); - wrect.bottom = dxw.GetScreenHeight(); + wrect = dxw.GetScreenRect(); dwStyle=(*pGetWindowLongA)(hwnd, GWL_STYLE); dwExStyle=(*pGetWindowLongA)(hwnd, GWL_EXSTYLE); hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd); @@ -1659,12 +1657,14 @@ BOOL WINAPI extGetClipCursor(LPRECT lpRect) // proxy.... if (!(dxw.dwFlags1 & ENABLECLIPPING)) { ret=(*pGetClipCursor)(lpRect); + // v2.03.11: fix for "SubCulture" mouse movement + if(lpRect && dxw.Windowize) *lpRect = dxw.GetScreenRect(); if(IsTraceDDRAW){ if (lpRect) - OutTrace("GetClipCursor: PROXED rect=(%d,%d)-(%d,%d) ret=%d\n", + OutTrace("GetClipCursor: rect=(%d,%d)-(%d,%d) ret=%d\n", lpRect->left,lpRect->top,lpRect->right,lpRect->bottom, ret); else - OutTrace("GetClipCursor: PROXED rect=(NULL) ret=%d\n", ret); + OutTrace("GetClipCursor: rect=(NULL) ret=%d\n", ret); } return ret; } @@ -1672,11 +1672,8 @@ BOOL WINAPI extGetClipCursor(LPRECT lpRect) if(lpRect){ if(lpClipRegion) *lpRect=ClipRegion; - else{ - lpRect->top = lpRect->left = 0; - lpRect->right = dxw.GetScreenWidth(); - lpRect->bottom = dxw.GetScreenHeight(); - } + else + *lpRect=dxw.GetScreenRect(); OutTraceDW("GetClipCursor: rect=(%d,%d)-(%d,%d) ret=%d\n", lpRect->left,lpRect->top,lpRect->right,lpRect->bottom, TRUE); } @@ -2617,10 +2614,7 @@ BOOL WINAPI extSystemParametersInfoA(UINT uiAction, UINT uiParam, PVOID pvParam, ret=(*pSystemParametersInfoA)(uiAction, uiParam, pvParam, fWinIni); if(uiAction==SPI_GETWORKAREA){ LPRECT cli = (LPRECT)pvParam; - cli->top = 0; - cli->left = 0; - cli->bottom = dxw.GetScreenHeight(); - cli->right = dxw.GetScreenWidth(); + *cli = dxw.GetScreenRect(); OutTraceDW("SystemParametersInfoA: resized client workarea rect=(%d,%d)-(%d,%d)\n", cli->left, cli->top, cli->right, cli->bottom); } return ret; @@ -2640,10 +2634,7 @@ BOOL WINAPI extSystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, ret=(*pSystemParametersInfoW)(uiAction, uiParam, pvParam, fWinIni); if(uiAction==SPI_GETWORKAREA){ LPRECT cli = (LPRECT)pvParam; - cli->top = 0; - cli->left = 0; - cli->bottom = dxw.GetScreenHeight(); - cli->right = dxw.GetScreenWidth(); + *cli = dxw.GetScreenRect(); OutTraceDW("SystemParametersInfoW: resized client workarea rect=(%d,%d)-(%d,%d)\n", cli->left, cli->top, cli->right, cli->bottom); } return ret; diff --git a/host/Resource.h b/host/Resource.h index d179af7027991c8af5d281c77b2d5d1bc917348e..362dc331cbdac84906b06410aac95616d1ddde10 100644 GIT binary patch delta 52 zcmeBZX8OT6;fxM10~dobLncEWLo!1SLn%WFLn?y;gAzj#kS=D(2Z|H{Wl|aRfMNhf CVhX1K literal 33160 zcmbWATW=i45ryZ~0rDRR}_;&be_+j{d_%Z%{GyD{81X>kjC&#ZY5d#|N5gS^wl~A=`1n5F>HFCqK8>Fm@^v7;3hax} z)!A?zN3TLty~qc{lLqqH@IEAdHvWG%u1OE}{%|lnts-Fldi_p35X&sgM}kp3!G@+yw5x@1S@gHGg|;V$g_c3jE3COXIutH>82 z>1nLoyU{+@>-n&WjBUT%LCW zx)OJ9K<2t_Ovw8?A$!}9%xiTanIBo(5c0#FWd5uJ`O!|uk2{b*+X>k-McR106LOs? zcu_pXQT%%oM@ugFXINd!KVOWI-U4vZb;9Ta@K)((x6T5nH1CZ++oFkJN5UYCq zKge|sqK%s|<9In*hWu%tMnJA}a4s|P`&InA46WxXxkr%e9GoL71MAlZ$ex2R5Uo55 ziLXM-?WnC!0&<;$V#v`LU2g-mH>U%8KeSxW80Xqx^^h7L;`E#Ef!xPI za-D;7nej!(Vb6V*A#HdL^7+YPcF}X4gC}7VM} z*VfiOd>+;E9vjV4XSP27=KI3-+>9`)jVG%yRbdKQzvWBA#Bg^ zc@C{EN}snGW_6mq>mVKkfQL*mcH(P3C_R{^?oxkUoheIoSMjoL|b_k1lM_ z%ght#3VS!X4;s0!u+JhQ_vQ}MS{^jA;f!hL!A{jlb4#lqV79M|!KCD#3buzgGuDp}!W=t15^ovzR0wVKqj?}v?glDy$|wC*}i=^e@K zZICW7_FejW_Zrx4CWEg^F3#=5Vdi_n_BNQY_|~jj;>{n0?QKwUYbCK2R z^T1;Ejjy6NbsJv1XXYVnZ-bd5%Y!q?tlRXqPJC<-+HU#DqefRl*t^B~N2afV4N{?f zzGHs!sF7C*dsn$VFNr#@qu!zBCd)tl7?27U5@CB@ z!WVkaSs$N_-WD#YqNw>oVSDa?J>@*q-SXtDa19q73EOk$IJ7~1sj8J)jqZQD;~{L% zoug6PM4G-{e6FjoeO{G*@JUFHkIKJoJqp|BRf$ape+{~@eO^_{A(XRF;n$@Xw&%{$ z57Gs?8~tq^Rquf9<|}YVGBQ`d_K5ZJwtd*1JID*g=yK+2h=-P!uGt} z%r!F?YSkse_S}&tC41<%ZB|s+o;%4)d=}kmrq)z~()eT-n@3Lseb}hyH}%b#Tuey$CAa4eov+)FbDF3!`&94EO@)Q+xg&p~-a495N46a& zgzdRA>3dzDL)e}>%!)3;Le?S61`iwgVAkBbVf&bteF$~Hv1-_)o}ueUNGG0`Lc_9U z;n+-XZ|2bK7$ELsJ~;0!r474B(qWVPx zZ+oc!`~m?=Wd>&5O3NTf9UoWP|H=^q}vj(b;r41e(Y? zaNUl0ustvFP*lb0B%j9-omf5zNA=oDa(iB$g}#;Rs9xx+TxH)+8}V|&URS9}ZqLgJ zJ3V<{1QNFA<#NvnnLYJX+Zu)Kd5Moj(jTV(f$58(VB=gV+gL@w}Y!6QaDYv*({f*q)bZ9dtISOXh#?j)m=cnb>P9 zV_|zx6h3)NI*f-(3wez^IgC`qo?T1*};Ax!0 z%bV{ach7!^tFURfqdlNljIy7WeYf^Qq~}8`Fb6-5?q4?RH01W&AwMB&I3D?;PJ4cC z_b8os?%YKzej5^K8tu@Q?+M#;N0wHe?v~SN#aL9Jlftb&zd_Ez$Jug2G3z_yK(v2m)*Y_&qrvbaQ*FxD8Sp&HbeaC6K z<|G%kk7-k{KBJpMOsS=BcWtU>qw}4gbb+orG?Lh!m*^IK;7!=|$g!UQN_OeQ^D?pT zK4SOaf-Y>&OC-G-{T?08NuRAFVYhghH6R_%{%(P=JujyS*~7-^(+J!15^v3w?$p8W zx+{{@x98;&`)stBdZoRTyS4uWY(=!*DoXh1MEJ8{Jky=tdLDgyUV_Tiuy`o0 z)Xy6Etie&q?RmM34QL);$ZounCZ^Yf?RmMx{xtN`7kPx;<|T92ccGi>$WwZmFYGoi zH49k3maY9K+Ks5{?|tZbigA-}OGn7*UEz3+J8cqL>Y4KgrLXC)WlbV!fwYj<=|8QF+aC^6t?G1&Rv&1F^8)6gzdSr zoVR9Ytglz_xG@tT7H3v6ufJRKK*{a712${P4s9YEbwgVtvhT-@nE*DYy%zJTyL}GH z?RlB=`PB4M|MgEGY|l&VkFJcc)hnzcPVWfY^D=WEay1z9HnKz4<4tt1TYFoU*w2HL zXg?9^kHT*8Qu}W-i|(}&*~ww#1ul=pPICSFtWTdsa(iAb=g?Dy(mIc@eN3bCFwN@7 zzt7{RZ7;(1yo4pn(%AV!b=i0Io3MSZnN>U;aCKzswlRN4*q)bDuLoT-v82<6mS7Wo zvN_^(ENst9zMhDustucE+aC~2kX6mov=MGu@hzAy3zsuP|a9#IA*sZ-S8FS=K`pC${G$ zYpIzFmhn6yL{BFyu{|&U5;07Ba*%(mzCABDZE&6^yINNI_Poq}w&aA!pEfyPx6-k& zJ$I&_rm7y*RotOOKf>^_3(rsAkDf92GR?pJB&>;fp5IBrUth&K)8*4Voarx}#hc%d zgyS>B`4x6~g|NDjM2?h6NZ!7e^$085HzO6cw{Kw+ea=Vg)?=GN!uIwp?9;Gvw^M7| zQiSd8JLT4%h;5A8E5i2njfT}ZCLd&v-*(rngfDC#chviy@@|eUJEo1o_S|_M@#Q!q zCx`8wzwkMP?Ky=`(7B6^HJz{v%GEoXS>A>mC4~BG$c;a6*l2^;zE*x=dtP$2gzlM) z2c-Yq=1uCG38s@<*jd3Um+jHL zb%xJIM$XTG{ph?7yN8!+Sfg`EZqLj4E=u-sDDN!GI)7Ezo|l=kG2NDxP#L$c-~qd} zw`JLv<}QwXeq7j|m-64)V_P$;LvGK@^U%eM@P(Sxy@*&l*J|ll5_?8&cD|+gp6&+n zdPb7}k=N7XplhPsr@aqKa(hOq^F8ki`km9MA7R%S$vtdzx4t#^!xB2XAP(cFZX>!Y zJslq`C1vV+O!T^yaL*Pp%|5*4ZzX!&TDa>LlOyepTPJ;@*XAOF}d=J!O*&z|URRnr@C=LpRSG?mS}S?jLZrMh3}uJ1A3T~hZ( zQAJBfk{^6=J?lzzr}s(rwfR<}J5P|9d2ez$WpnM;j}yHfJErR!g-!)r$6LOW=q`Fl zyZ2H1$TF7*?pdNcn@RNb{s46RK)q(c6D0mx=@Z?1f<#{{eWLeSWU|)jdj4LbyU3TA z@|Jxw8l5B2okdP;IuCA=OKWe#-B{(-rzwg}tg827WMOyV#gs{d&(T~5<>QpyMZUC@ zna)WKWbm!lD(5ck7@2iyP zj!ix2;MCC_n|jd8_nVUJ?s|!NKErvqD&xE}FH7_?o8)^H@#w@dU%ihiL{~MmdnfF? z<7W*zsC_f&L@#r-EIXYV-J7z`BfXR8Wv-Ud(M(_DPV{p0D5Fy$!OhnFj`qeKkLbPZ z3Cify#=5JquGgsRCuJ{tf--t)CSz6`z3d6f=>7R#%3k&aW%S(7)xPUTqL)2E8J(`d z8k?zQdS&!!4~A-zmfmagm@<0S^QoaW`Wmh>^C1SR3UQVrz1LR+m1}*Kl>7@70m#vajJPvS;SnhrWiZeaLg!*Kie!VeeaB2hR$WJ3y)THC)C2 zGFc`@v6HNxZ414Y1D7q5-346x#BOw=ZGBps=xgFCnE{p=7 z*C3ZQlU)MlwDc$2=xex|I|2LA*Kjp!?_M8yP}zlE)(p`juUc^XQPYbtw<*Kd*p)9XjCW!PoSXcsdb8+y2|%Op1OElK@)*E#h~nB2jm ze%Jj(_guw`^BsA37|`mPUcQs)J_k;8dMS9Bp8cboC(%7u6CJtxzlm@{_gqbM_P(=< zz27LAvirC?q38E><-W1}d(X!F`?XhYB)Vr~qAN2jN6Do<=vktBHcse$S8C;%gkHN2 zIoX)#@SE-w(Kr#@W1@RDCi+xOJIv|5ME7i*?>wLr*88o{iSF6BL}wCA@1o~><-Zxeh;NwxZhZdFIOhB2Kg74n^L_K*$9Ko? zjo%XgOFVu*d^!9*-uo(km-i<`dD(B{FNC-kw!z*{`t`cEhPsdJ3FVrI(~o|czu>#- zk)rfBcn4}^rWD*|g|5h5=#^c|+?}iB-PxzWx$k4PPX8KfRsN;FnJlMuRJPX%pIFK@ zZ#nyzb`jAvCntLozp;6i`nRfifBC6EN;vW-=YIT@g~8d=nJ z8$}dMpcBd2Kv6NL4V+^&)&U0wk z{@9a_{qBADoqNvrefN83exDmTkUO^0gyZoCO<#t^e_9)vZH_;oUxhw9H#Zj#TCNB= z5^}_wvY$aVvNTQO={XrJE0_Lby1bPWl&|Ymp?y#-3z`{$c^!%InlJx7j@f)^D zQ6e;er};8-6mY!x%ZB{F&t9MVd|r!R%i9e32j_$FhOfar}C?HnLg)> zPdT21`Jeo%X(73#n1?AXzSG&luj;jyhk2~6i{DZ zd#5+)ASt54|+sx*U5hh;PZaf|azZ3i)#8WC2apqdaO8 zjK**`23~N*T_b5T-dFHp4g>p(;zg&YD``Z*OJmDmq2On5P@oE@X@3RWsFfY(tMM*< zG>8%kZxjsMaagIT8r|bpT7657a&gBv202b}40E(mhk(KbwbX>a7Ez!ag);A?mu9L_ zAnmIM)Ic4I5G}^7>~*@P1vq92CAinzoVoRs;GRVWl}4=RsgN<<-?5lBmEb`CmLfG; zkC2ev!#OIa88<=Q?;xKxEfsmn-HH@s_}hNvk6;P|C%npg5WR@iK&Q?MxYWf%NJEYc zyXA0CW88Ww2J*&HOk;{0@2*6l3N6RzBG|~&YV`a!_{n|_)_Bh4pF>6(UCOn_$T0es z5QV+SRk?1A+7RLa_EU; z&`p$h18%xhff^cXLjg5qi2_wVh@To1siG5@HqUbu^zhRR1=o*r&q=TFWq4EmVeH18 z^dm@{L~X77!oJ#Q3~N;+hE2MOnNc5}h9^sg_LLa{vD5VPD9R`#qZidUjwca&8Ggb3Yc4bds2+?+MDQ7SZIdRfSlMEH56t4@kauzPksTy9vP9)Ak&!KJiiabjG z76F+GvZ`9(Q~p01CHAzSSoWQAP`J;)`gI0LroYIo{0RYaKPHMZ?J3_I*bln&71S6! z6Z33W%@=XTMxz%HBDW6~ITd!DtQe7i_Aa83T$R- zQ}4hnd;GnscLrX>uEUyXBh@IJ^ufm{j{XZ>s_P~KjN&aL-7Ta{RQyeZRoF?MP4GX4O7ilw%e#Yh5E4a799C4JBnFS}y6)77{48lbh zZK8q3er4?76n&;U&x=GVOLqREkj7qtk3Oh^70anMf>P!7iawUt8eU%}Ue2QDuE8U# z_Ss@J!YY&PMU?W)!#}SJC6Ptn4L*NQ_I_~^}F?t{j?psU+OuL?XQk~)o4GOn3(!@K0u z&;z0~@ih^KVI9TvNjV&b^H6)UI4(QS`{*}a;t@wz)+tktVafl!Pb=+h6CPgVqSe)g z?a)U7cH>AVcfCfW7{!MewS$EsR|Q(d&p?-}S@=~kWYeG9#Ig!)2^VQt>pdJs^@eFX zIr6ptZGk3#BI;#miJxkBiNkcbP-IifZV>_~xm|cy{YZO4`<}K{tI;0iw@GUXf(5QIJr;I@c;INZH82`FxC;!K=Dr-n= zM08U03f2#cv;psv;l?WY4G}QQ;=K*3p%RG2-|#Z^<3fq_wk9(EqN2Dvz#|Ox>a;h z=fh%1rb3Spp9sr~;cdc{c$_n;>-EUbIInRcr&Ztw;((4D3m+?Ws)kORFd$=8C* zca53YnA>Tfj4@%Y6w%OQqLV`R3HIq7!jFM%O!Q6zwystrY1}LL)H)3>7-nJFpBCff zZ^M*f?8L_YDov#MC=Ko5By|zv(`A_Vg4AjJDF)kKid@Q#h>c3$D^|gRPnfm)7fLlh z%2-{I|K3_^s?+@BnM8^CCa+k0cf~4Rv5{9SBllTsFgNkATdudRRp<5z|7uH+$44}E R`@G0mslF;qXVKps_z!Vf%Xt6* delta 10290 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 u4j>)BdvOs~!HS`Ihbs}|S}1~M#ie4rP - -