From ad7dcb62d754f259e9d719571bf81b7c0a40f1ca Mon Sep 17 00:00:00 2001 From: gho tik Date: Sun, 12 Jun 2016 12:48:33 -0400 Subject: [PATCH] v2_03_99_srcb3 Former-commit-id: d636adca44c0d58a02cbd89845da28e2b8b616a8 --- Include/dxwnd.h | 5 +- build/dxwnd.dll | 4 +- build/dxwnd.exe | 4 +- build/dxwnd.ini | 184 ++++++++++++++++++++++++++++++++++++++ build/readme-relnotes.txt | 5 +- dll/ddraw.cpp | 32 +------ dll/dxhook.cpp | 21 +---- dll/dxwcore.cpp | 2 +- dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 306688 -> 305664 bytes dll/hd3d7.cpp | 48 ++++------ dll/user32.cpp | 7 +- dll/winproc.cpp | 12 +-- host/TabDirectX2.cpp | 1 - host/TabInput.cpp | 7 +- host/TargetDlg.cpp | 5 +- host/TargetDlg.h | 6 +- host/dxwndhost.aps | Bin 254504 -> 254000 bytes host/dxwndhost.rc | Bin 140352 -> 139708 bytes host/dxwndhost.vs2008.suo | Bin 105472 -> 103424 bytes host/dxwndhostView.cpp | 22 +---- host/host.aps | Bin 47504 -> 47508 bytes host/resource | Bin 51802 -> 51346 bytes 23 files changed, 238 insertions(+), 129 deletions(-) create mode 100644 build/dxwnd.ini diff --git a/Include/dxwnd.h b/Include/dxwnd.h index 26d76bd..b80d75b 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -27,7 +27,7 @@ #define FIXWINFRAME 0x00002000 #define HIDEHWCURSOR 0x00004000 #define SLOWDOWN 0x00008000 -#define DISABLECLIPPING 0x00010000 +#define ENABLECLIPPING 0x00010000 #define LOCKWINSTYLE 0x00020000 #define MAPGDITOPRIMARY 0x00040000 #define FIXTEXTOUT 0x00080000 @@ -255,8 +255,6 @@ #define FORCENOVSYNC 0x00000008 // Forces NO hardware VSync #define VSYNCSCANLINE 0x00000010 // Activates WaitForVerticalBlank algorythm based on reaching a given scan line #define TRIMTEXTUREFORMATS 0x00000020 // Emulates "DirectXTrimTextureFormats" shim to fix textures in Heavy Gear II -#define NOHALDEVICE 0x00000040 // Simulates a situation of lack of 3D hardware support, like in presence of remote desktop -#define CLIPLOCKED 0x00000080 // never destroy cursor clipper on window move events .... // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general @@ -357,7 +355,6 @@ void OutTraceHex(BYTE *, int); void *HookAPI(HMODULE, char *, void *, const char *, void *); void AdjustWindowFrame(HWND, DWORD, DWORD); char *hexdump(unsigned char *, int); -void HexTrace(unsigned char *, int); LRESULT CALLBACK extWindowProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK extChildWindowProc(HWND, UINT, WPARAM, LPARAM); diff --git a/build/dxwnd.dll b/build/dxwnd.dll index a4b7974..a439b38 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb1649c75e814ca6706d0e6951fb34ade18b013d75a1c8d2afce83c6c8143042 -size 709632 +oid sha256:d026c47f6a552131246762e9b1f03400fa5031ea484d5d72ffb555a8df94f99a +size 709120 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index a06d146..1a768db 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef6bb4b84f380a5e3e519d08ce9fca17bb67783b32655728f48197f403477976 -size 668160 +oid sha256:7f6b72cb6b9aacee5a608ebf28b57d92c9f814cb8b8e300ab867338c5abed17d +size 667648 diff --git a/build/dxwnd.ini b/build/dxwnd.ini new file mode 100644 index 0000000..1efa4e6 --- /dev/null +++ b/build/dxwnd.ini @@ -0,0 +1,184 @@ +[window] +exportpath=D:\DxWnd\exports.ok\ +posx=-1195 +posy=557 +sizx=320 +sizy=200 +debug=0 +autohide=0 +checkadmin=0 +namefromfolder=1 +multiprocesshook=0 +warnonexit=0 +updatepaths=1 +defaultcoord=0 +defaultposx=50 +defaultposy=50 +defaultsizx=800 +defaultsizy=600 +exepath=D:\Games\Heavy Gear 2\ +[target] +title0=Star Trek Armada +path0=D:\Games\Star Trek Armada\Armada.exe +startfolder0= +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +monitorid0=0 +coord0=0 +flag0=-1474297757 +flagg0=1544552448 +flagh0=73744 +flagi0=136314884 +flagj0=4224 +flagk0=69632 +flagl0=0 +flagm0=0 +tflag0=-2147477245 +dflag0=0 +posx0=100 +posy0=100 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 +maxddinterface0=7 +slowratio0=1 +scanline0=1 +initresw0=0 +initresh0=0 +title1=Jazz Jackrabbit 2 +path1=D:\Games\Jazz Jackrabbit 2\Jazz2.exe +startfolder1= +launchpath1= +module1= +opengllib1= +notes1= +registry1= +ver1=0 +monitorid1=-1 +coord1=0 +flag1=673185826 +flagg1=1207959552 +flagh1=8212 +flagi1=138412036 +flagj1=5248 +flagk1=65536 +flagl1=0 +flagm1=0 +tflag1=-2147477245 +dflag1=0 +posx1=50 +posy1=50 +sizx1=800 +sizy1=600 +maxfps1=0 +initts1=0 +winver1=0 +maxres1=-1 +swapeffect1=0 +maxddinterface1=7 +slowratio1=2 +scanline1=0 +initresw1=800 +initresh1=600 +title2=Armor Command +path2=D:\Games\Armor Command\armrcmd.exe +startfolder2= +launchpath2= +module2= +opengllib2= +notes2=Needs a copy of S3DTKW.dll in game folder.\n +registry2= +ver2=0 +monitorid2=-1 +coord2=0 +flag2=673185826 +flagg2=1207959552 +flagh2=8212 +flagi2=138412036 +flagj2=4224 +flagk2=65536 +flagl2=268435456 +flagm2=0 +tflag2=0 +dflag2=0 +posx2=50 +posy2=50 +sizx2=800 +sizy2=600 +maxfps2=0 +initts2=0 +winver2=0 +maxres2=-1 +swapeffect2=0 +maxddinterface2=7 +slowratio2=2 +scanline2=0 +initresw2=800 +initresh2=600 +title3=Heavy Gear 2 +path3=D:\Games\Heavy Gear 2\Heavy Gear 2.exe +startfolder3= +launchpath3= +module3= +opengllib3= +notes3= +registry3= +ver3=0 +monitorid3=-1 +coord3=0 +flag3=673185826 +flagg3=1208221696 +flagh3=8212 +flagi3=-2009071612 +flagj3=4224 +flagk3=98304 +flagl3=0 +flagm3=0 +tflag3=0 +dflag3=0 +posx3=50 +posy3=50 +sizx3=800 +sizy3=600 +maxfps3=0 +initts3=0 +winver3=0 +maxres3=-1 +swapeffect3=0 +maxddinterface3=7 +slowratio3=2 +scanline3=0 +initresw3=800 +initresh3=600 +[texture] +MinTexX=0 +MinTexY=0 +MaxTexX=0 +MaxTexY=0 +[keymapping] +timetoggle= +timefast= +timeslow= +altf4= +cliptoggle= +refresh= +logtoggle= +plogtoggle= +fpstoggle= +printscreen= +corner= +freezetime= +fullscreen= +workarea= +desktop= +minimize= +restore= +kill= diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 8c5109f..9f459c3 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -1375,7 +1375,6 @@ fix: fixed the policy for redrecting the WindowProc routine. Fixes "Ultimate Spi v2.03.99 fix: unwanted hook to directsound when passing by CoCreateInstance() fix: transient mode, now checks for both the target and the launcher to be dead before terminating -add: Direct3D TRIMTEXTUREFORMAT flag, to mimic MS "DirectXTrimTextureFormat" shim. Fixes problems in "Heavy Gear 2" and "Star Wars: Rogue Squardon 3D". +add: Direct3D TRIMTEXTUREFORMAT flag, to mimic MS "DirectXTrimTextureFormat" shim. Fixes problems in .... add: D3DDevice GetCaps hooking and full dump of D3DDevice capabilities -add: "No HAL Device" flag, making it unavailable the IID_Direct3DHALDevice device. Fixes "Grand Prix World" when the 3D car models are invisible. -add: reorganization of mouse clipper fields, with the addition of LOCK mode (useful for Tribal Rage) + diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 7b3749f..0e02daf 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -1555,7 +1555,6 @@ static void HandleCapsD(char *sLabel, LPDDCAPS c) sLabel, c->dwVidMemTotal, c->dwVidMemFree, c->dwZBufferBitDepths, ExplainZBufferBitDepths(c->dwZBufferBitDepths)); OutTraceDDRAW("GetCaps(%s): MaxVisibleOverlays=%x CurrVisibleOverlays=%x\n", sLabel, c->dwMaxVisibleOverlays, c->dwCurrVisibleOverlays); - if(IsDebug) HexTrace((unsigned char *)c, c->dwSize); if(dxw.bHintActive){ if(c->dwVidMemTotal > dwMaxMem) ShowHint(HINT_LIMITMEM); @@ -1592,14 +1591,13 @@ static HRESULT WINAPI extGetCapsD(int dxversion, GetCapsD_Type pGetCapsD, LPDIRE HRESULT res; OutTraceDDRAW("GetCaps(D%d): lpdd=%x %s %s\n", dxversion, lpdd, c1?"c1":"NULL", c2?"c2":"NULL"); res=(*pGetCapsD)(lpdd, c1, c2); - if(res) { + if(res) OutTraceE("GetCaps(D): ERROR res=%x(%s)\n", res, ExplainDDError(res)); - return res; + else { + if (c1) HandleCapsD("D-HW", c1); + if (c2) HandleCapsD("D-SW", c2); } - if (c1) HandleCapsD("D-HW", c1); - if (c2) HandleCapsD("D-SW", c2); - if((dxw.dwFlags3 & FORCESHEL) && c1) { DDCAPS_DX7 swcaps; // DDCAPS_DX7 because it is the bigger in size int size; @@ -1621,20 +1619,6 @@ static HRESULT WINAPI extGetCapsD(int dxversion, GetCapsD_Type pGetCapsD, LPDIRE if (c2) HandleCapsD("D-SW(fixed)", c2); } - if((dxw.dwFlags8 & NOHALDEVICE) && c1) { - OutTraceDW("GetCaps(D): NOHALDEVICE\n"); - c1->ddsCaps.dwCaps = DDCAPS_NOHARDWARE; - c1->ddsCaps.dwCaps2 = DDCAPS2_CANRENDERWINDOWED; - c1->dwPalCaps = 0; - c1->dwFXCaps = 0; - c1->dwFXAlphaCaps = 0; - c1->dwCKeyCaps = 0; - c1->dwVidMemTotal = c1->dwVidMemFree = 0; - c1->dwZBufferBitDepths = 0; - c1->dwMaxVisibleOverlays = c1->dwCurrVisibleOverlays = 0; - HandleCapsD("D-HW(NoHAL)", c1); - } - if((dxw.dwFlags3 & MINIMALCAPS)) SetMinimalCaps(c1, c2); if(dxw.dwFlags3 & CAPMASK) MaskCapsD(c1, c2); @@ -2618,13 +2602,6 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet return DDERR_NOTFOUND; } } - - if((dxw.dwFlags8 & NOHALDEVICE) && (lpddsc->dwCaps & DDSCAPS_ZBUFFER)){ - // tested with "Grand Prix World": if a ZBUFFER is returned, CreateDevice fails! - *lplpddas = NULL; - OutTraceDW("GetAttachedSurface(%d): NOHALDEVICE no attached ZBUFFER\n", dxversion); - return DDERR_NOTFOUND; - } } else { // Virtual primary surfaces are created with no DDSCAPS_3DDEVICE caps, so don't look for it .... @@ -4820,7 +4797,6 @@ static HRESULT WINAPI extGetCapsS(int dxInterface, GetCapsS_Type pGetCapsS, LPDI 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_3DDEVICE) caps->dwCaps |= DDSCAPS_LOCALVIDMEM; - //if(caps->dwCaps & DDSCAPS_3DDEVICE) caps->dwCaps |= (DDSCAPS_LOCALVIDMEM | DDSCAPS_COMPLEX); } // v2.03.82: fixed logic for ZBUFFER capabilities: "The Creed" may have two, in SYSTEMMEMORY or in VIDEOMEMORY ... diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index 4343855..26d649f 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -67,7 +67,7 @@ static char *FlagNames[32]={ "HOOKDI", "MODIFYMOUSE", "HANDLEEXCEPTIONS", "SAVELOAD", "EMULATEBUFFER", "HOOKDI8", "BLITFROMBACKBUFFER", "SUPPRESSCLIPPING", "AUTOREFRESH", "FIXWINFRAME", "HIDEHWCURSOR", "SLOWDOWN", - "DISABLECLIPPING", "LOCKWINSTYLE", "MAPGDITOPRIMARY", "FIXTEXTOUT", + "ENABLECLIPPING", "LOCKWINSTYLE", "MAPGDITOPRIMARY", "FIXTEXTOUT", "KEEPCURSORWITHIN", "USERGB565", "SUPPRESSDXERRORS", "PREVENTMAXIMIZE", "LOCKEDSURFACE", "FIXPARENTWIN", "SWITCHVIDEOMEMORY", "CLIENTREMAPPING", "HANDLEALTF4", "LOCKWINPOS", "HOOKCHILDWIN", "MESSAGEPROC" @@ -141,7 +141,7 @@ static char *Flag7Names[32]={ static char *Flag8Names[32]={ "FORCEWAIT", "FORCENOWAIT", "FORCEVSYNC", "FORCENOVSYNC", - "VSYNCSCANLINES", "TRIMTEXTUREFORMATS", "NOHALDEVICE", "CLIPLOCK", + "VSYNCSCANLINES", "TRIMTEXTUREFORMATS", "", "", "", "", "", "", "", "", "", "", "", "", "", "", @@ -277,23 +277,6 @@ void OutTrace(const char *format, ...) dxw.dwTFlags = tFlags; // restore settings } -void HexTrace(unsigned char *buf, int len) -{ - char line[3*32 + 40]; - char hex[6]; - int count=0; - while(len){ - sprintf(line,"%04X: ", count); - for(int i=32; i && len; i--, len--, buf++){ - sprintf(hex, "%02X.", *buf); - strcat(line, hex); - } - strcat(line, "\n"); - OutTrace(line); - count += 32; - } -} - // from MSDN: // GetVersionEx may be altered or unavailable for releases after Windows 8.1. Instead, use the Version Helper functions // diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp index 24f3577..ba33cf4 100644 --- a/dll/dxwcore.cpp +++ b/dll/dxwcore.cpp @@ -363,7 +363,7 @@ POINT dxwCore::FixCursorPos(POINT prev) if (h) curr.y = (curr.y * dxw.GetScreenHeight()) / h; } - if((dxw.dwFlags1 & DISABLECLIPPING) && lpClipRegion){ + if((dxw.dwFlags1 & ENABLECLIPPING) && lpClipRegion){ // v2.1.93: // in clipping mode, avoid the cursor position to lay outside the valid rect // note 1: the rect follow the convention and valid coord lay between left to righ-1, diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index c04fd2d..e2e3ae5 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.99" +#define VERSION "2.03.99.b3" #define DDTHREADLOCK 1 //#define LOCKTHREADS diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 836f07ca872972e1c6369b3b6d55a1a06c15f202..e11832c047fb2bd567db022bc214352d263546ea 100644 GIT binary patch delta 9864 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

T5t!>1wFvEpuK59uTF#YvUt$Z44Y9cHC5&45dYm zpc1~&rpBtyfp1RnL9OUmXf3pr{9=e`k^bgNwJG!ePaXfarw$*2cPmaE0l&W!hXLPh zoCfa1VZdk5388hTfje;+up@}ks?z`m{@XeX_&A_-fffGI)4-iL4EX4T(8|+*aR;Km zZU0t=|G;*3d(j{5QwV8Y_`d_upT^(n@Q-J2H~RZ%^sNp5c+|Mf=x;}GIuf)Z{NI7- z5Bs-1{I@>((}~~!od{_D-{2#`Y{-ZCnD7xZL~Y|^W}h*mSD+Kj{={q$*q@nQVKxBl zZ_Hxb+RnNi%mtZJca(wo&&Ndu!=bE5`@%40#UX4Ovqzap=&giIN5@sn${|;>-qXzJ zSo#bziy1aOpRtwU3k+$*zhwCUmz7|RtaprA71;aCzGgV2;lxLXHNA{Df_eW;K z!M+PH{7dwFlags & D3DDD_MAXBUFFERSIZE) OutTrace("MaxBufferSize=%d ", d3->dwMaxBufferSize); if(d3->dwFlags & D3DDD_MAXVERTEXCOUNT) OutTrace("MaxVertexCount=%d ", d3->dwMaxVertexCount); OutTrace("Texture min=(%dx%d) max=(%dx%d)\n", d3->dwMinTextureWidth, d3->dwMinTextureHeight, d3->dwMaxTextureWidth, d3->dwMaxTextureHeight); - HexTrace((unsigned char *)d3, d3->dwSize); + HexDump((unsigned char *)d3, d3->dwSize); } else OutTrace("EnumDevices: CALLBACK dev=%s ddesc=NULL\n", label); @@ -844,7 +861,7 @@ static void DumpD3DDeviceDesc7(LPD3DDEVICEDESC7 d3, char *label) OutTrace("Texture min=(%dx%d) max=(%dx%d)\n", d3->dwMinTextureWidth, d3->dwMinTextureHeight, d3->dwMaxTextureWidth, d3->dwMaxTextureHeight); // to be completed .... //OutTrace("\n"); - HexTrace((unsigned char *)d3, sizeof(D3DDEVICEDESC7)); + HexDump((unsigned char *)d3, sizeof(D3DDEVICEDESC7)); } else OutTrace("EnumDevices: CALLBACK dev=%s ddesc=NULL\n", label); @@ -857,14 +874,6 @@ HRESULT WINAPI extDeviceProxy(GUID FAR *lpGuid, LPSTR lpDeviceDescription, LPSTR OutTraceD3D("EnumDevices: CALLBACK GUID=%x(%s) DeviceDescription=\"%s\", DeviceName=\"%s\", arg=%x\n", lpGuid->Data1, ExplainGUID(lpGuid), lpDeviceDescription, lpDeviceName, ((CallbackArg *)arg)->arg); DumpD3DDeviceDesc(lpd3ddd1, "HWDEV"); DumpD3DDeviceDesc(lpd3ddd2, "SWDEV"); - - // IID_IDirect3DHALDevice = 0x84e63de0.... - if((dxw.dwFlags8 & NOHALDEVICE) && (lpGuid->Data1 == 0x84e63de0)) - { - OutTraceDW("EnumDevices: D3DHALDEVICE SKIP\n"); - return TRUE; - } - if(dxw.dwFlags4 & NOPOWER2FIX){ D3DDEVICEDESC lpd3ddd1fix, lpd3ddd2fix; if(lpd3ddd1) memcpy(&lpd3ddd1fix, lpd3ddd1, sizeof(D3DDEVICEDESC)); @@ -887,9 +896,6 @@ HRESULT WINAPI extDeviceProxy7(LPSTR lpDeviceDescription, LPSTR lpDeviceName, LP HRESULT res; OutTraceD3D("EnumDevices(D3D7): CALLBACK DeviceDescription=\"%s\", DeviceName=\"%s\", arg=%x\n", lpDeviceDescription, lpDeviceName, ((CallbackArg *)arg)->arg); DumpD3DDeviceDesc((LPD3DDEVICEDESC)lpd3ddd, "DEV"); - - // to do: NOHALDEVICE handling, we have no GUID here! - if(dxw.dwFlags4 & NOPOWER2FIX){ D3DDEVICEDESC7 lpd3dddfix; if(lpd3ddd) memcpy(&lpd3dddfix, lpd3ddd, sizeof(D3DDEVICEDESC7)); @@ -1124,12 +1130,6 @@ HRESULT WINAPI extInitializeVP(void *lpvp, LPDIRECT3D lpd3d) return res; } -#ifndef D3DERR_NOTAVAILABLE -#define _FACD3D 0x876 -#define D3DERR_NOTAVAILABLE MAKE_HRESULT(1, _FACD3D, 2154) -#endif - - HRESULT WINAPI extCreateDevice2(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE lpdds, LPDIRECT3DDEVICE2 *lplpd3dd) { HRESULT res; @@ -1137,11 +1137,6 @@ HRESULT WINAPI extCreateDevice2(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE OutTraceD3D("CreateDevice(D3D2): d3d=%x GUID=%x(%s) lpdds=%x%s\n", lpd3d, Guid.Data1, ExplainGUID((GUID *)&Guid), lpdds, dxwss.ExplainSurfaceRole((LPDIRECTDRAWSURFACE)lpdds)); - if((dxw.dwFlags8 & NOHALDEVICE) && (Guid.Data1 == 0x84e63de0)) { - OutTraceDW("CreateDevice(D3D2): D3DHALDEVICE SKIP\n"); - return D3DERR_NOTAVAILABLE; - } - res=(*pCreateDevice2)(lpd3d, Guid, lpdds, lplpd3dd); if(res!=DD_OK) { OutTraceE("CreateDevice(D3D2) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); @@ -1161,11 +1156,6 @@ HRESULT WINAPI extCreateDevice3(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE4 OutTraceD3D("CreateDevice(D3D3): d3d=%x GUID=%x(%s) lpdds=%x%s\n", lpd3d, Guid.Data1, ExplainGUID((GUID *)&Guid), lpdds, dxwss.ExplainSurfaceRole((LPDIRECTDRAWSURFACE)lpdds)); - if((dxw.dwFlags8 & NOHALDEVICE) && (Guid.Data1 == 0x84e63de0)) { - OutTraceDW("CreateDevice(D3D3): D3DHALDEVICE SKIP\n"); - return D3DERR_NOTAVAILABLE; - } - res=(*pCreateDevice3)(lpd3d, Guid, lpdds, lplpd3dd, unk); if(res!=DD_OK) { OutTraceE("CreateDevice(D3D3) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); diff --git a/dll/user32.cpp b/dll/user32.cpp index 7e2184a..31b505a 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -2121,8 +2121,7 @@ BOOL WINAPI extClipCursor(RECT *lpRectArg) OutTrace("ClipCursor: rect=(NULL)\n"); } - if (!(dxw.dwFlags1 & DISABLECLIPPING)) return TRUE; - if ((dxw.dwFlags8 & CLIPLOCKED) && (lpRectArg == NULL)) return TRUE; + if (!(dxw.dwFlags1 & ENABLECLIPPING)) return 1; if(lpRectArg){ Rect=*lpRectArg; @@ -2151,12 +2150,12 @@ BOOL WINAPI extClipCursor(RECT *lpRectArg) BOOL WINAPI extGetClipCursor(LPRECT lpRect) { - // v2.1.93: if DISABLECLIPPING, return the saved clip rect coordinates + // v2.1.93: if ENABLECLIPPING, return the saved clip rect coordinates BOOL ret; // proxy.... - if (!(dxw.dwFlags1 & DISABLECLIPPING)) { + if (!(dxw.dwFlags1 & ENABLECLIPPING)) { ret=(*pGetClipCursor)(lpRect); // v2.03.11: fix for "SubCulture" mouse movement if(lpRect && dxw.Windowize) *lpRect = dxw.GetScreenRect(); diff --git a/dll/winproc.cpp b/dll/winproc.cpp index 5d8b08f..7a76d33 100644 --- a/dll/winproc.cpp +++ b/dll/winproc.cpp @@ -384,8 +384,8 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp dxw.dwFlags1 &= ~LOCKWINPOS; } while((*pShowCursor)(1) < 0); - if((dxw.dwFlags1 & CLIPCURSOR) && !(dxw.dwFlags8 & CLIPLOCKED)) dxw.EraseClipCursor(); - if(dxw.dwFlags1 & DISABLECLIPPING) dxw.EraseClipCursor(); + if(dxw.dwFlags1 & CLIPCURSOR) dxw.EraseClipCursor(); + if(dxw.dwFlags1 & ENABLECLIPPING) (*pClipCursor)(NULL); break; case WM_EXITSIZEMOVE: if(IsToBeLocked){ @@ -394,7 +394,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp } if((dxw.dwFlags1 & HIDEHWCURSOR) && dxw.IsFullScreen()) while((*pShowCursor)(0) >= 0); if(dxw.dwFlags2 & SHOWHWCURSOR) while((*pShowCursor)(1) < 0); - if(dxw.dwFlags1 & DISABLECLIPPING) extClipCursor(lpClipRegion); + if(dxw.dwFlags1 & ENABLECLIPPING) extClipCursor(lpClipRegion); if(dxw.dwFlags2 & REFRESHONRESIZE) dxw.ScreenRefresh(); if(dxw.dwFlags4 & HIDEDESKTOP) dxw.HideDesktop(dxw.GethWnd()); if(dxw.dwFlags5 & CENTERTOWIN) { @@ -489,12 +489,12 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp case WM_SETFOCUS: OutTraceDW("WindowProc: hwnd=%x GOT FOCUS\n", hwnd); if(dxw.dwFlags1 & CLIPCURSOR) dxw.SetClipCursor(); - if (dxw.dwFlags1 & DISABLECLIPPING) extClipCursor(lpClipRegion); + if (dxw.dwFlags1 & ENABLECLIPPING) extClipCursor(lpClipRegion); break; case WM_KILLFOCUS: OutTraceDW("WindowProc: hwnd=%x LOST FOCUS\n", hwnd); - if((dxw.dwFlags1 & CLIPCURSOR) && !(dxw.dwFlags8 & CLIPLOCKED)) dxw.EraseClipCursor(); - if (dxw.dwFlags1 & DISABLECLIPPING) dxw.EraseClipCursor(); + if (dxw.dwFlags1 & CLIPCURSOR) dxw.EraseClipCursor(); + if (dxw.dwFlags1 & ENABLECLIPPING) (*pClipCursor)(NULL); break; case WM_SYSCOMMAND: // v2.03.56.fix1 by FunkyFr3sh: ensure that "C&C Red Alert 2" receives the WM_SYSCOMMAND / SC_CLOSE message diff --git a/host/TabDirectX2.cpp b/host/TabDirectX2.cpp index b25ce6e..2e38076 100644 --- a/host/TabDirectX2.cpp +++ b/host/TabDirectX2.cpp @@ -35,7 +35,6 @@ void CTabDirectX2::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_FIXREFCOUNTER, cTarget->m_FixRefCounter); DDX_Check(pDX, IDC_RETURNNULLREF, cTarget->m_ReturnNullRef); DDX_Check(pDX, IDC_FORCESHEL, cTarget->m_ForcesHEL); - DDX_Check(pDX, IDC_NOHALDEVICE, cTarget->m_NoHALDevice); DDX_Check(pDX, IDC_MINIMALCAPS, cTarget->m_MinimalCaps); DDX_Check(pDX, IDC_SETZBUFFERBITDEPTHS, cTarget->m_SetZBufferBitDepths); DDX_Check(pDX, IDC_DEINTERLACE, cTarget->m_Deinterlace); diff --git a/host/TabInput.cpp b/host/TabInput.cpp index 9bc5602..13fbac0 100644 --- a/host/TabInput.cpp +++ b/host/TabInput.cpp @@ -31,8 +31,8 @@ void CTabInput::DoDataExchange(CDataExchange* pDX) DDX_Radio(pDX, IDC_CURSORAUTOMATIC, cTarget->m_MouseVisibility); // Cursor Handling DDX_Check(pDX, IDC_MODIFYMOUSE, cTarget->m_ModifyMouse); - //DDX_Check(pDX, IDC_DISABLECLIPPING, cTarget->m_EnableClipping); - //DDX_Check(pDX, IDC_CLIPCURSOR, cTarget->m_CursorClipping); + DDX_Check(pDX, IDC_ENABLECLIPPING, cTarget->m_EnableClipping); + DDX_Check(pDX, IDC_CLIPCURSOR, cTarget->m_CursorClipping); DDX_Check(pDX, IDC_KEEPCURSORWITHIN, cTarget->m_KeepCursorWithin); DDX_Check(pDX, IDC_KEEPCURSORFIXED, cTarget->m_KeepCursorFixed); DDX_Check(pDX, IDC_MESSAGEPROC, cTarget->m_MessageProc); @@ -41,8 +41,7 @@ void CTabInput::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_SLOW, cTarget->m_SlowDown); DDX_Check(pDX, IDC_RELEASEMOUSE, cTarget->m_ReleaseMouse); DDX_Check(pDX, IDC_VIRTUALJOYSTICK, cTarget->m_VirtualJoystick); - // Cursor Clipper - DDX_Radio(pDX, IDC_CLIPPERAUTO, cTarget->m_MouseClipper); + //DDX_Check(pDX, IDC_FRAMECOMPENSATION, cTarget->m_FrameCompensation); // DirectInput DDX_Check(pDX, IDC_HOOKDI, cTarget->m_HookDI); DDX_Check(pDX, IDC_HOOKDI8, cTarget->m_HookDI8); diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index ff06fff..4754ad0 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -31,7 +31,6 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_DxFilterMode = 0; // default: ddraw filtering m_DCEmulationMode = 0; // default: no emulation m_MouseVisibility = 0; - m_MouseClipper = 0; m_OffendingMessages = 0; m_TextureHandling = 0; m_HookDI = FALSE; @@ -150,8 +149,8 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_IndependentRefresh = FALSE; m_TextureFormat = FALSE; m_FixWinFrame = FALSE; - //m_EnableClipping = FALSE; - //m_CursorClipping = FALSE; + m_EnableClipping = FALSE; + m_CursorClipping = FALSE; m_VideoToSystemMem = FALSE; m_FixTextOut = FALSE; m_SharedDC = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 036c5b1..f0f3be3 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -33,7 +33,6 @@ public: int m_DxFilterMode; int m_DCEmulationMode; int m_MouseVisibility; - int m_MouseClipper; int m_OffendingMessages; int m_TextureHandling; int m_SonProcessMode; @@ -111,8 +110,8 @@ public: BOOL m_IndependentRefresh; BOOL m_TextureFormat; BOOL m_FixWinFrame; - //BOOL m_EnableClipping; - //BOOL m_CursorClipping; + BOOL m_EnableClipping; + BOOL m_CursorClipping; BOOL m_VideoToSystemMem; BOOL m_FixTextOut; BOOL m_SharedDC; @@ -235,7 +234,6 @@ public: BOOL m_DisableDisableAltTab; BOOL m_NoImagehlp; BOOL m_ForcesHEL; - BOOL m_NoHALDevice; BOOL m_MinimalCaps; BOOL m_SetZBufferBitDepths; BOOL m_ForcesSwapEffect; diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index aebc35a24ccefd42e1149103f49e4d32b6b7d2ab..4f6b7494554d23c5222236c2675fb01acfccb352 100644 GIT binary patch delta 4900 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 LenfpgmvjCL@eJmc delta 5747 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 BX*mD@ diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index ad32bd7a4e5271d3e6ea43121a0d3c5cc5ddfc0b..2da3b69c14f3168f53fd4da68668661e8841a3a7 100644 GIT binary patch delta 454 zcmY*VOGq1G5T4n@WnChu5h`h^+FnFL$tG(|t$~6CQEaQ8Jc*A|u#I+60-i*#y+|GC zh>hz55mDGCUCSy}Q4|rSmmmm5N`yi|a?aU*)r$wZO@q|`0mPdmqUH*(y?^Z=s z3%r6>sD@@p!U&AQC*j>H0fS(GL47GdS)0C+W@s049l~1S4Rs!NQo38G;D*X$l^CVZ zb|qOqQXU;b^xBS-@z3{Q;2!0`eaaJseBYn(ginC0-^tWv|DiTprDLbUz0*!?jQjaw z3Lo2zr~OBi>-Mrak22O%W~jl*eZhn*mWBE441RPIXJ-Z@=+0q?et)=qHa(?q(=1*U zM<8?~kLIFjVyT?RzTrYqP^cB*niQVX@QC_#4zr%9&}M(`1(%w*!sCmm@}7x*rwy5F zUt%M7te|(=R5?G7W>HwMhH3JDoO3-Wb9MpOL{9_VnOwwQDixx;PP>IllJfy+nF~*) FwrfUgo=^Y) delta 693 zcmYk4J4{ny6vxkLvAtG6v^7>Gv|@aObm;Bt78kf_Z6p$#CIaf<69)uIW7NS!LLD3o zKH^C{+FWWeltI*#7U-g;iG&d2Kv{G$bYXE(M`MWJy{(DE_sGfb{J(Sl-+A{@Dz8ZS zRulaSyeyVY9kb>j_$hT=F1EcLG}&d4AqXC^`=HY}Wl9Xow3MGF_n<_{xeXefw~?b1 zqK6AkS}SVgU9{2Zg|BqGXrr~ep<;4z%ubt{^yE=HW!^MXxnSc%Ic%fxa}7H};QdcN z01BxCGOwORCtvWOgx zqG}C8Ko9|{Oep+e3R?^S<5aC4q?S9*CPirc(=n)Ry%2{8oPc8x<>xuvXRQaQ`nzja z4X=yVZSax$=K!z1$Ht=bQ~xq2kD$dGf{c*q|N9E^e8 z5l~u92we1LMx+7DO0`ZycF5A!+Gv4R#bGK{DVPG$(`abk+=!fN(+D&m?H!7$? z63_2to9-QRBFYe(tTVc#&!`J*(eKh&E)2D9xv%%;T?gM?d&%8?qgcKbn;-BPwHi67 zn=M;SwR#uUjglWFCCCSiHaTjlm6h@NvNfj000t~FP80=3V`?>e9U}7tlC5#IX4CC` zkH*!?6LI;5n;^t$ootJ*GV5=P(OVHLky9;mq{otoUS6yffbq%5XP`%;zxUc)>y@$3 zL&WdHd<%N&Z9E1ORk`a>8E0xQ+}De7-Hmr%`P9dWy%{lDe}B+ zmAsi_liewq(v#xR&RSh0Jvk+Tft2mIBGiC=&;W5*JAPu4hV7VJ=MJ=`4;u_%!HjjH zNVd9sa@3v`uxHLR%E6o>>C0IzEx9eqlLy#V?!Y2yDsmzTn9o5ci{y{vB%eXQ%o>b|+yw?&$-^4?mBS?u zl)efJC&nFUT{N;(R+{iJchs6~w^a*_c9?B}GyYtVJtvLQIhv|QvcV>chPwNX*phW) z*hj$ryGsUnc4$nth6+?m8Q7H53|Vlmj32(LTB2dT+%}dddq;JF>d|VDzD!5J@y^xE ztT(l5HMnC!q0<_HqYqnQ<0aZwVRLQ>Yn|HN2=@eh|L|#*rW00zKJf2WC*I~H896X6FP>yQ`(Q|Z_tmU|B9LVn+EJKw&&qA=-X5G7rzd4@IVku5Ynpr zSePlRPdbBD7U&0m9B9n_+L{Ly%CiHerQuM@#hv0VagV4*O{NzI!f9|I z4?flERaR%qd$Ur*gUaS3^91j^n!Z78>-ZaZYb_w0|!Aq=rpK%ci}p| zw-cf)bQEdOwdk~n%CZj59$jUJSt3b%<0roU88|0T58J{GXNzxKRig`T-vMZ)Q7xk*I6^^KZ&EQcZN%S~6VFc83F0clz`@jK7CAj%$|J86x?@oJHW~M8uIMQxS39toKL6ktTbI8J!LXSRWiuU4n)}8L}go;(~_8bGLq#_fgm+ zTfef%@~2DtABTLs*N>6&FyNK(X2O&E0CgU+a}msl&Cfv=gDGM$7o9dcSsF9a7f=^r z`VljV_2Ba@#Iyoa$}dE>V>w!tsAKpL=9Zx*`xCQV)PH7{iSIg9eh}Tw@BPo2xskmp zGb%E?PE^Oa^bIb}MD|-|r4cZc z#5IO@qW*#d0l#H5{1kKzYBD1;7wTwcHfA)X6lUw0QJoFUnwZ5RYi7MokNs08rRYy_ z;4UsiB!0~7C(P&>97au@`I${Y{Vd1zG0R65VD>IEdMuxyrd7MlYzoc)GzX^QHGl>~ z4W^+cD`VzFUCyi_f~{co7_(^@w~<*_1lz;R&y3o81vT|AMi|nvzR!V|nbBzf&TI;P z9ch5{gz{0-VOhY;gW4JXdg2~s=0LWX*$1=88&g?Y-G*MwlJHH z>`Fr138jRRj~mVsQPax)I)Ys{;i}N~G4bFiFby>w8yU>#Mae`>E8&h{g{Z5L6*F_9 zei<7lYhXq%=s!`MROV%G0vHz;V&ch$o=-(iK0Ep%b+UHQ97#wDYr=WizAM=P;Wc!3vnok6;U! zEo4R$EoSD46&2wT(r9WCmSI}Qfpln=abQOT>tyx|Ovk^`s%sad(UmB{R`T`r)>!iT zBy2)tB`yY`?%x5K>h(tO%a&6n<#_}gDz*{oOX$Aii~6M&H%=(@ziLx6LWElzm*cdBqZ@PDn=t&t_F-cCrpH8Nw-cb#iJ$m`Z6Dea^)9;O?_qo_+oyDH0omz1{&>ggW6NnPlMRkwc1_4LO!M&<2>C#C055pECfK4?~F gyP;(~Xlwy)68m1rh9bU}rvx|eh3#ORjJt*GKOyYZk^lez delta 5784 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 G^#204g}g-o diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index 6c52cdf..9a081e8 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -277,13 +277,6 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) case 2: t->flags2 |= SHOWHWCURSOR; break; } - switch(dlg->m_MouseClipper){ - case 0: break; - case 1: t->flags |= DISABLECLIPPING; break; - case 2: t->flags |= CLIPCURSOR; break; - case 3: t->flags |= CLIPCURSOR; t->flags8 |= CLIPLOCKED; break; - } - switch(dlg->m_OffendingMessages){ case 0: break; case 1: t->flags3 |= FILTERMESSAGES; break; @@ -401,7 +394,6 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_DisableDisableAltTab) t->flags7 |= DISABLEDISABLEALTTAB; if(dlg->m_NoImagehlp) t->flags5 |= NOIMAGEHLP; if(dlg->m_ForcesHEL) t->flags3 |= FORCESHEL; - if(dlg->m_NoHALDevice) t->flags8 |= NOHALDEVICE; if(dlg->m_MinimalCaps) t->flags3 |= MINIMALCAPS; if(dlg->m_SetZBufferBitDepths) t->flags6 |= SETZBUFFERBITDEPTHS; if(dlg->m_ForcesSwapEffect) t->flags6 |= FORCESWAPEFFECT; @@ -435,8 +427,8 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_IndependentRefresh) t->flags2 |= INDEPENDENTREFRESH; if(dlg->m_TextureFormat) t->flags5 |= TEXTUREFORMAT; if(dlg->m_FixWinFrame) t->flags |= FIXWINFRAME; - //if(dlg->m_EnableClipping) t->flags |= DISABLECLIPPING; - //if(dlg->m_CursorClipping) t->flags |= CLIPCURSOR; + if(dlg->m_EnableClipping) t->flags |= ENABLECLIPPING; + if(dlg->m_CursorClipping) t->flags |= CLIPCURSOR; if(dlg->m_VideoToSystemMem) t->flags |= SWITCHVIDEOMEMORY; if(dlg->m_FixTextOut) t->flags |= FIXTEXTOUT; if(dlg->m_HookGlide) t->flags4 |= HOOKGLIDE; @@ -611,11 +603,6 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) if(t->flags & HIDEHWCURSOR) dlg->m_MouseVisibility = 1; if(t->flags2 & SHOWHWCURSOR) dlg->m_MouseVisibility = 2; - dlg->m_MouseClipper = 0; - if(t->flags & DISABLECLIPPING) dlg->m_MouseClipper = 1; - if(t->flags & CLIPCURSOR) dlg->m_MouseClipper = 2; - if(t->flags8 & CLIPLOCKED) dlg->m_MouseClipper = 3; - dlg->m_OffendingMessages = 0; if(t->flags3 & FILTERMESSAGES) dlg->m_OffendingMessages = 1; if(t->flags3 & DEFAULTMESSAGES) dlg->m_OffendingMessages = 2; @@ -702,7 +689,6 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_DisableDisableAltTab = t->flags7 & DISABLEDISABLEALTTAB ? 1 : 0; dlg->m_NoImagehlp = t->flags5 & NOIMAGEHLP ? 1 : 0; dlg->m_ForcesHEL = t->flags3 & FORCESHEL ? 1 : 0; - dlg->m_NoHALDevice = t->flags8 & NOHALDEVICE ? 1 : 0; dlg->m_MinimalCaps = t->flags3 & MINIMALCAPS ? 1 : 0; dlg->m_SetZBufferBitDepths = t->flags6 & SETZBUFFERBITDEPTHS ? 1 : 0; dlg->m_ForcesSwapEffect = t->flags6 & FORCESWAPEFFECT ? 1 : 0; @@ -755,8 +741,8 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_IndependentRefresh = t->flags2 & INDEPENDENTREFRESH ? 1 : 0; dlg->m_TextureFormat = t->flags5 & TEXTUREFORMAT ? 1 : 0; dlg->m_FixWinFrame = t->flags & FIXWINFRAME ? 1 : 0; - //dlg->m_EnableClipping = t->flags & DISABLECLIPPING ? 1 : 0; - //dlg->m_CursorClipping = t->flags & CLIPCURSOR ? 1 : 0; + dlg->m_EnableClipping = t->flags & ENABLECLIPPING ? 1 : 0; + dlg->m_CursorClipping = t->flags & CLIPCURSOR ? 1 : 0; dlg->m_VideoToSystemMem = t->flags & SWITCHVIDEOMEMORY ? 1 : 0; dlg->m_FixTextOut = t->flags & FIXTEXTOUT ? 1 : 0; dlg->m_SharedDC = t->flags6 & SHAREDDC ? 1 : 0; diff --git a/host/host.aps b/host/host.aps index caebb6490da0f0fc3bae79954718d594cc014f62..6a498d03e85fef7ab1de3ee32e169354191a7c48 100644 GIT binary patch delta 981 zcmX|;O-K}B9L8r}oY=__5fK?>-(B6*>0@(k4;2PVA}xq?2qM@}a0La?U0oK14jwu* zAhq%ceq`%cfdl5(uDVO%sY3%65gj5-Iz@tYu|t7K|J|9{%a4cWdH(PF{%7LHY~q;3 zU7~N?UEQ#^DhQz)!It5B{UL9tJJ#Jd5Dvx~I_j@>T));48ye~F3ib>PMRV{Db_v49 z;KWn01#9t1B;v(6^)g2-c`*L1fMj^K9cL%2E%k8HZK{g|_R_vf?T z=zP@b+*+`c?FIW?HH#0d^wZ*bOSLXpXC+@R`3glJey!GuE8`s<6eCDP(Hq22RiXK4C+-@;@a!DEI^(8!KLC%%J0;YlqHYR&Kt2x^U0Eg42j1rFk`F~bGaQ9Rb_zPt0fWLuKb(Hr zlU8Ygyu-yQsKhV=#Lws@4nrfpg-+~&K@8(?ht6$AQL`e2m>|?aO>?%=iYKj#v|Jzv n<>*aw@jEnP9rPRxVibo&7vxO#TdJ9AMnAnhQzecelHvaW$0k|Q delta 886 zcmX}oPe>GD7zXhDmJI|M=@1bi%<5W6G^>;c4G%>^B27q_E-Ndzf`=X5bXz(UdFWu^ z;BL?2y7tF^fgT#$ZMSkeMRf4cKt_m%>JS|w7%=M4p`d4n`38m`5AXYaAMbqmU%@QD zu;|FOM55c9fk5JHtnbFv@kBH+ni)+_q+*%V@y;{xo}T#B z8nf%J1q|ex+;q3{HTOBhxKq50rb5I^(}flUIrp#$1%0 ze~V$Smb@?T|Kg{?2eS6YPhAh&yc6qwI{HY~OquR29rwnr`{~D$92;7e-4A}cxFWl+ zR^)moSBJb?c2|#iX<&_KE7#U;H;NAY+&m#Ra<@7TbcsOVH}t2f=!Zd@VbWn(v*f=2H^r`s?n_osufDEFazaOf#0)%u4v>gV$36qv! z(GYCf4TqkC@=_IfXfz3(zK226FzIVpGy$6?;m~#{TdHV-MmM0-Lonzkm~P#2wP^|t dZH7{-zl>Ik1pm(AO06|GGmr84!?uO%9XSnw%%cwz)&zt9r7Ro`j$ugFk}@gCm0vgA0Qz zLl}eSk!~#_Grr$`CTyuu^rh0W%Au`Q$($d6*otKZD!k zh3<-z56t43EW|D~`JWlvWCvw7kUmEL$p=|9L3$={(pP}#VD|yq>CE6gSy4+FEXOog PZt{V3ESo>fTBHjA8rwAL