From 1f79c0ab092ad716fb20d6f81425a161f80d3f43 Mon Sep 17 00:00:00 2001 From: gho tik Date: Sat, 12 Apr 2014 12:40:05 -0400 Subject: [PATCH] v2_03_02_src Former-commit-id: 3761b000afb06eab3fdce96c73b86c5cac40d3f9 --- build/Resources_IT.dll | 3 + build/Resources_RU.dll | 2 +- build/dxwnd.0.ini | 5 ++ build/dxwnd.dll | 4 +- build/dxwnd.exe | 2 +- build/dxwnd.ini | 5 ++ build/readme-relnotes.txt | 11 ++++ dll/ddraw.cpp | 42 ++++++++++++-- dll/dxwnd.vs2008.suo | Bin 280576 -> 280576 bytes dll/dxwnd.vs2008.vcproj.User-PC.User.user | 65 ---------------------- dll/texv4handle.cpp | 47 ++++++++++++++-- dll/user32.cpp | 17 +++++- host/KillProc.cpp | 17 +++++- host/MainFrm.cpp | 21 +++++-- host/dxwndhost.vs2008.suo | Bin 128512 -> 128512 bytes host/dxwndhostView.cpp | 18 +++--- host/resource - Copia | Bin 30806 -> 0 bytes host/resource - Copia (2) | Bin 31266 -> 0 bytes host/resource.xxx | Bin 30806 -> 0 bytes locale/it/Resources_IT.rc | Bin 89436 -> 91078 bytes locale/ru/Resources_RU.rc | Bin 95818 -> 95876 bytes 21 files changed, 162 insertions(+), 97 deletions(-) create mode 100644 build/Resources_IT.dll delete mode 100644 dll/dxwnd.vs2008.vcproj.User-PC.User.user delete mode 100644 host/resource - Copia delete mode 100644 host/resource - Copia (2) delete mode 100644 host/resource.xxx diff --git a/build/Resources_IT.dll b/build/Resources_IT.dll new file mode 100644 index 0000000..8b9cfc3 --- /dev/null +++ b/build/Resources_IT.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:825e33de765c1346acb699050c248fb7e475c86c89378d55352f745b56e2256f +size 112128 diff --git a/build/Resources_RU.dll b/build/Resources_RU.dll index adbda6a..9382396 100644 --- a/build/Resources_RU.dll +++ b/build/Resources_RU.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36821f95e5eac34a48bccb62115ffdf4b1ff5f6bde33f90e220c709fa4be086a +oid sha256:f2673e4533d1eeb79eb96ba29f360d844b64b06cdf3000271441a9f6b026d7e5 size 114176 diff --git a/build/dxwnd.0.ini b/build/dxwnd.0.ini index b09eb5f..62664c1 100644 --- a/build/dxwnd.0.ini +++ b/build/dxwnd.0.ini @@ -4,6 +4,11 @@ posy=50 sizx=320 sizy=200 lang=automatic +[texture] +MinTexX=16 +MaxTexX=0 +MinTexY=16 +MaxTexY=0 [keymapping] timetoggle=0x72 altf4=0x73 diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 39fbedc..638ec08 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59e618b7d0672f738eebd3958be555bdbcfa2da9f34681a37df8cc6258bad250 -size 524288 +oid sha256:ea2c1cd561a930d2b22057633659850296da519f6d1b7859ed94fa69f3c07795 +size 525824 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index d4feaee..31bca86 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8512c89fbd6ea22a4efd33008c987208f2483763e568bc9ce0c8e9ce211b9b0a +oid sha256:9cbd160962bb3334a41daaa0ab1869ba7726faa7c5590649000cfb8409be83c8 size 532992 diff --git a/build/dxwnd.ini b/build/dxwnd.ini index b09eb5f..62664c1 100644 --- a/build/dxwnd.ini +++ b/build/dxwnd.ini @@ -4,6 +4,11 @@ posy=50 sizx=320 sizy=200 lang=automatic +[texture] +MinTexX=16 +MaxTexX=0 +MinTexY=16 +MaxTexY=0 [keymapping] timetoggle=0x72 altf4=0x73 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 0eb71ce..e587dab 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -659,3 +659,14 @@ fix: AERO optimized mode with ddraw7 only surfaces: "Hoyle Casino Empire" works fix: bilinear filters compiled with optimized and openmp flags - big speed improvement. fix: reduced the maximum amount of visible video card with "Limit available resources" flag: now "Breath of Fire IV" works. +v2.3.02 +fix: when creating an IID_IDirectDrawGammaControl object through lpdds->QueryInterface redirect fake primary surface to real one to make the object working. Fixes "Might & Magic 7" +fix: fixed logging of ddraw Set/GetGammaRamp methods. Added SUPPRESSDXERRORS error suppression +add: texture extraction parameters (min & max x,y size) in dxwnd.ini config file +add: texture extraction / hack made in DxWnd install folder, to allow usage also for games running from unwritable (CDRom) directory +fix: in "prevent maximize" mode, set the main window in maximized state. Allow "Hoyle Casino Empire" to continue after the intro movie is terminated +add: Process kill command now warns you about existence of task +fix: DxWnd window position save now works on multiscreen desktop + + + diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index f983209..adfe639 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -1851,6 +1851,9 @@ HRESULT WINAPI extQueryInterfaceS(void *lpdds, REFIID riid, LPVOID *obp) return(0); } + // fix the target for gamma ramp creation: if it is a primary surface, use the real one!! + if(dxw.IsAPrimarySurface((LPDIRECTDRAWSURFACE)lpdds) && IsGammaRamp) lpdds = lpDDSEmu_Prim; + res = (*pQueryInterfaceS)(lpdds, riid, obp); if(res) // added trace @@ -3743,8 +3746,15 @@ HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC OutTraceB("Lock: lPitch=%d lpSurface=%x\n", lpDDSurfaceDesc->lPitch, lpDDSurfaceDesc->lpSurface); if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK; - // shouldn't happen.... if hooked to non primary surface, just call regular method. - // it happens in "Deadlock 2" backbuffer surface!!! + // Pitch fix: some video cards require alignement to a wide boundary, e.g. 128 bytes. + // on "Risk II" (Microprose version) you get a 800x600 generic surface that has a wider + // pitch (1664 bytes, that is the smaller 128 multiple of 800 * 2) that should be treated + // as if it were a smaller one (1600 = 800 * 2) to get a good blit. + // both fixes below are working (one is commented out). + if(dxw.dwFlags1 & EMULATESURFACE) + lpDDSurfaceDesc->lPitch = (lpDDSurfaceDesc->dwWidth * lpDDSurfaceDesc->ddpfPixelFormat.dwRGBBitCount) >> 3; + //lpDDSurfaceDesc->lPitch = (lpDDSurfaceDesc->lPitch / lpDDSurfaceDesc->dwWidth) * lpDDSurfaceDesc->dwWidth; + return res; } @@ -4848,19 +4858,41 @@ HRESULT WINAPI extDDGetGammaRamp(LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags, LPDDG { HRESULT ret; OutTraceDDRAW("GetGammaRamp: dds=%x dwFlags=%x\n", lpdds, dwFlags); + + if(dxw.IsAPrimarySurface(lpdds)) lpdds=lpDDSEmu_Prim; + ret=(*pDDGetGammaRamp)(lpdds, dwFlags, lpgr); - if(ret) OutTraceE("GetGammaRamp: ERROR res=%x(%s)\n", ret, ExplainDDError(ret)); - else OutTraceDDRAW("GetGammaRamp: RGB=(%x,%x,%x)\n", lpgr->red, lpgr->green, lpgr->blue); + if(ret) { + OutTraceE("GetGammaRamp: ERROR res=%x(%s)\n", ret, ExplainDDError(ret)); + if(dxw.dwFlags1 & SUPPRESSDXERRORS) { + // clear the error code, and provide a reasonable gamma ramp array + for(int i=0; i<256; i++) lpgr->red[i]=lpgr->green[i]=lpgr->blue[i]=(i * 0x100); + ret=0; + } + } + else{ + if(IsDebug){ + OutTrace("GetGammaRamp: RGB="); + for(int i=0; i<256; i++) OutTrace("(%x,%x,%x)", lpgr->red[i], lpgr->green[i], lpgr->blue[i]); + OutTrace("\n"); + } + } return ret; } HRESULT WINAPI extDDSetGammaRamp(LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags, LPDDGAMMARAMP lpgr) { HRESULT ret; - OutTraceDDRAW("SetGammaRamp: dds=%x dwFlags=%x RGB=(%x,%x,%x)\n", lpdds, dwFlags, lpgr->red, lpgr->green, lpgr->blue); + OutTraceDDRAW("SetGammaRamp: dds=%x dwFlags=%x\n", lpdds, dwFlags); + if(IsDebug){ + OutTrace("GetGammaRamp: RGB="); + for(int i=0; i<256; i++) OutTrace("(%x,%x,%x)", lpgr->red[i], lpgr->green[i], lpgr->blue[i]); + OutTrace("\n"); + } if (dxw.dwFlags2 & DISABLEGAMMARAMP) return DD_OK; ret=(*pDDSetGammaRamp)(lpdds, dwFlags, lpgr); if(ret) OutTraceE("SetGammaRamp: ERROR res=%x(%s)\n", ret, ExplainDDError(ret)); + if(dxw.dwFlags1 & SUPPRESSDXERRORS) ret = DD_OK; return ret; } diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 95e97057a8338771ae62cf7c77349cfbdf5b772b..be3dbd5bbe10109bdb3475143856940927c4cdde 100644 GIT binary patch delta 1212 zcmaize`s4(6vy8=_vPhxo1{roW0|27ZB@3qA8l8=Hrq)!Z_JhTG7zqOg{?g-|aPi$xh|9StNn(RL;|-`=hFTNi=$?|?XYD@07rw;6&% z61t*OJD(NUsael=6dZ8SdM^1Az=Cys&!;+Q@@!Yja8H8FIlMLY2p1FOLtnhJDfCNW zv1k{U;xY!1(sfuXvpYkyy%wuv{A7%pgCZ;g-DfD5hYI@Y2v&nBA>TrM$8jB9ZNQLa z_L$A^kp-j0Xl6&mPLzb zrt<^gVPT7pqxN?b8jk06J8G}^U|xL_77s)0KN1!aA__GTE$0}+|GA7WMs@grxCtOf zi6=2Z2^YNRujfzQ#;j*tMqPHh>nOPqb(#-~a+SP{Q?Bu>9}I~`mOgscM6cUkt z>x|;gYV zuPwmvr8vb?;z8pmADP}EU*6IpYjv-hO^GIuSN_=Gu;=-HxpwK570a~VUE1Rw(?K7L ZfoH4>Tw`-=F9Ob-7N^{5=A`Jz{sq>xWbOa} delta 18902 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 diff --git a/dll/dxwnd.vs2008.vcproj.User-PC.User.user b/dll/dxwnd.vs2008.vcproj.User-PC.User.user deleted file mode 100644 index facf31e..0000000 --- a/dll/dxwnd.vs2008.vcproj.User-PC.User.user +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - diff --git a/dll/texv4handle.cpp b/dll/texv4handle.cpp index bffd8a9..4e1ed94 100644 --- a/dll/texv4handle.cpp +++ b/dll/texv4handle.cpp @@ -21,6 +21,26 @@ extern int Set_dwSize_From_Surface(LPDIRECTDRAWSURFACE); #define GRIDSIZE 16 +char *GetDxWndPath() +{ + static BOOL DoOnce = TRUE; + static char sFolderPath[MAX_PATH]; + + if(DoOnce){ // first time through, build the texture dir if not done yet + DWORD dwAttrib; + dwAttrib = GetFileAttributes("dxwnd.dll"); + if (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)) { + MessageBox(0, "DXWND: ERROR can't locate itself", "ERROR", MB_OK | MB_ICONEXCLAMATION); + exit(0); + } + GetModuleFileName(GetModuleHandle("dxwnd"), sFolderPath, MAX_PATH); + sFolderPath[strlen(sFolderPath)-strlen("dxwnd.dll")] = 0; // terminate the string just before "dxwnd.dll" + DoOnce = FALSE; + } + + return sFolderPath; +} + /* RS Hash Function */ static unsigned int Hash(BYTE *buf, int len) @@ -128,10 +148,17 @@ static void TextureDump(LPDIRECTDRAWSURFACE s) DDSURFACEDESC2 ddsd; int w, h, iSurfaceSize, iScanLineSize; HRESULT res; + static int MinTexX, MinTexY, MaxTexX, MaxTexY; static BOOL DoOnce = TRUE; - if(DoOnce){ // first time through, build the texture dir if not done yet - CreateDirectory("texture.out", NULL); + if(DoOnce){ + char sProfilePath[MAX_PATH]; + sprintf(sProfilePath, "%s\\dxwnd.ini", GetDxWndPath()); + MinTexX=GetPrivateProfileInt("Texture", "MinTexX", 0, sProfilePath); + MaxTexX=GetPrivateProfileInt("Texture", "MaxTexX", 0, sProfilePath); + MinTexY=GetPrivateProfileInt("Texture", "MinTexY", 0, sProfilePath); + MaxTexY=GetPrivateProfileInt("Texture", "MaxTexY", 0, sProfilePath); + OutTrace("TextureDump: size min=(%dx%d) max=(%dx%d)\n", MinTexX, MinTexY, MaxTexX, MaxTexY); DoOnce = FALSE; } @@ -149,10 +176,18 @@ static void TextureDump(LPDIRECTDRAWSURFACE s) s, ddsd.ddpfPixelFormat.dwRGBBitCount, ddsd.dwWidth, ddsd.dwHeight); w = ddsd.dwWidth; h = ddsd.dwHeight; - if((w<2) && (h<2)) { + if((MinTexX && (wMaxTexX)) || (MaxTexY && (h>MaxTexY))) { + OutTrace("TextureDump: SKIP big texture\n"); + break; + } + if(ddsd.ddpfPixelFormat.dwRGBBitCount == 0) { + OutTrace("TextureDump: SKIP 0BPP texture\n"); + break; + } iSurfaceSize = ddsd.dwHeight * ddsd.lPitch; @@ -161,7 +196,7 @@ static void TextureDump(LPDIRECTDRAWSURFACE s) BITMAPFILEHEADER hdr; // bitmap file-header BITMAPV4HEADER pbi; // bitmap info-header //DWORD dwTmp; - char pszFile[81]; + char pszFile[MAX_PATH]; //pbih = (PBITMAPINFOHEADER)&pbi; memset((void *)&pbi, 0, sizeof(BITMAPV4HEADER)); @@ -194,7 +229,7 @@ static void TextureDump(LPDIRECTDRAWSURFACE s) } // Create the .BMP file. - sprintf_s(pszFile, 80, "texture.out/texture.%03d.%03d.%08X.bmp", ddsd.dwWidth, ddsd.dwHeight, hash); + sprintf_s(pszFile, 80, "%s\\texture.out\\texture.%03d.%03d.%08X.bmp", GetDxWndPath(), ddsd.dwWidth, ddsd.dwHeight, hash); hf = fopen(pszFile, "wb"); if(!hf) break; @@ -267,7 +302,7 @@ static void TextureHack(LPDIRECTDRAWSURFACE s) if(!hash) break; // almost certainly, an empty black surface! // Look for the .BMP file. - sprintf_s(pszFile, 80, "texture.in/texture.%03d.%03d.%08X.bmp", ddsd.dwWidth, ddsd.dwHeight, hash); + sprintf_s(pszFile, 80, "%s\\texture.in\\texture.%03d.%03d.%08X.bmp", GetDxWndPath(), ddsd.dwWidth, ddsd.dwHeight, hash); hf = fopen(pszFile, "rb"); if(!hf) break; // no updated texture to load diff --git a/dll/user32.cpp b/dll/user32.cpp index 46141d7..62c1bb4 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -547,6 +547,7 @@ BOOL WINAPI extShowWindow(HWND hwnd, int nCmdShow) } res=(*pShowWindow)(hwnd, nCmdShow); + OutTraceDW("ShowWindow: res=%x\n", res); return res; } @@ -1403,6 +1404,13 @@ static HWND WINAPI extCreateWindowCommon( if ((FIXCHILDSIZE) && (dwStyle & (WS_CHILD|WS_DLGFRAME))) WinDBPutSize(hwnd, iOrigW, iOrigH); + // "Hoyle Casino Empire" needs to be in a maximized state to continue after the intro movie. + // Sending a SW_MAXIMIZE message intercepted by the PREVENTMAXIMIZE handling fixes the problem. + if (dxw.IsFullScreen() && (dxw.dwFlags1 & PREVENTMAXIMIZE)){ + OutTraceDW("%s: entering maximized state\n", ApiName); + (*pShowWindow)(hwnd, SW_MAXIMIZE); + } + OutTraceDW("%s: ret=%x\n", ApiName, hwnd); return hwnd; } @@ -2045,7 +2053,7 @@ HDC WINAPI extEMUBeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint) HDC hdc; HDC EmuHDC; - OutTraceDW("GDI.BeginPaint: hwnd=%x lpPaint=%x FullScreen=%x\n", hwnd, lpPaint, dxw.IsFullScreen()); + OutTraceDW("GDI.BeginPaint(GDIEMULATEDC): hwnd=%x lpPaint=%x FullScreen=%x\n", hwnd, lpPaint, dxw.IsFullScreen()); hdc=(*pBeginPaint)(hwnd, lpPaint); // avoid access to real desktop @@ -2059,7 +2067,7 @@ HDC WINAPI extEMUBeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint) EmuHDC = dxw.AcquireEmulatedDC(hwnd); lpPaint->hdc=EmuHDC; - OutTraceDW("GDI.BeginPaint: hdc=%x -> %x\n", hdc, EmuHDC); + OutTraceDW("GDI.BeginPaint(GDIEMULATEDC): hdc=%x -> %x\n", hdc, EmuHDC); return EmuHDC; } @@ -2129,12 +2137,15 @@ BOOL WINAPI extEMUEndPaint(HWND hwnd, const PAINTSTRUCT *lpPaint) OutTraceDW("GDI.EndPaint: hwnd=%x lpPaint=%x lpPaint.hdc=%x\n", hwnd, lpPaint, lpPaint->hdc); if(dxw.IsFullScreen()){ + // avoid access to real desktop + if(dxw.IsRealDesktop(hwnd)) hwnd=dxw.GethWnd(); OutTraceDW("GDI.EndPaint(GDIEMULATEDC): hwnd=%x\n", hwnd); ret=dxw.ReleaseEmulatedDC(hwnd); } - else + else{ // proxy part ... ret=(*pEndPaint)(hwnd, lpPaint); + } OutTraceDW("GDI.EndPaint: hwnd=%x ret=%x\n", hwnd, ret); if(!ret) OutTraceE("GDI.EndPaint ERROR: err=%d at %d\n", GetLastError(), __LINE__); return ret; diff --git a/host/KillProc.cpp b/host/KillProc.cpp index d864119..dc6399e 100644 --- a/host/KillProc.cpp +++ b/host/KillProc.cpp @@ -7,7 +7,7 @@ #include #include -int KillProcByName(char *szToTerminate) +int KillProcByName(char *szToTerminate, BOOL bKill) // Created: 6/23/2000 (RK) // Last modified: 3/10/2002 (RK) // Please report any problems or bugs to kochhar@physiology.wisc.edu @@ -151,6 +151,12 @@ int KillProcByName(char *szToTerminate) { // Process found, now terminate it iFound=1; + + if(!bKill) { + FreeLibrary(hInstLib); + return 0; // just tell you found it. + } + // First open for termination hProc=OpenProcess(PROCESS_TERMINATE,FALSE,aiPID[i]); if(hProc) @@ -259,6 +265,15 @@ int KillProcByName(char *szToTerminate) { // Process found, now terminate it iFound=1; + + if(!bKill) { + // process terminated + CloseHandle(hSnapShotm); + CloseHandle(hSnapShot); + FreeLibrary(hInstLib); + return 0; // just tell you found it. + } + // First open for termination hProc=OpenProcess(PROCESS_TERMINATE,FALSE,procentry.th32ProcessID); if(hProc) diff --git a/host/MainFrm.cpp b/host/MainFrm.cpp index bae5892..99a50ad 100644 --- a/host/MainFrm.cpp +++ b/host/MainFrm.cpp @@ -31,6 +31,8 @@ along with this program. If not, see . static char THIS_FILE[] = __FILE__; #endif +#define MULTIMONITOR TRUE + ///////////////////////////////////////////////////////////////////////////// // CMainFrame @@ -108,7 +110,7 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { char InitPath[MAX_PATH]; - RECT DesktopRect; + int iMaxX, iMaxY; GetCurrentDirectory(MAX_PATH, InitPath); strcat_s(InitPath, sizeof(InitPath), "\\dxwnd.ini"); cs.x = GetPrivateProfileInt("window", "posx", 50, InitPath); @@ -116,15 +118,22 @@ BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) cs.cx = GetPrivateProfileInt("window", "sizx", 320, InitPath); cs.cy = GetPrivateProfileInt("window", "sizy", 200, InitPath); - // keep window inside desktop boundaries +#ifdef MULTIMONITOR + iMaxX = ::GetSystemMetrics(SM_CXVIRTUALSCREEN); + iMaxY = ::GetSystemMetrics(SM_CYVIRTUALSCREEN); +#else + RECT DesktopRect; ::GetWindowRect(::GetDesktopWindow(), &DesktopRect); + iMaxX = DesktopRect.right; + iMaxY = DesktopRect.bottom; +#endif if(cs.cx < 320) cs.cx = 320; if(cs.cy < 200) cs.cy = 200; - if(cs.x < DesktopRect.left) cs.x = DesktopRect.left; - if(cs.y < DesktopRect.top) cs.y = DesktopRect.top; - if(cs.x+cs.cx > DesktopRect.right) cs.x = DesktopRect.right - cs.cx; - if(cs.y+cs.cy > DesktopRect.bottom) cs.y = DesktopRect.bottom - cs.cy; + if(cs.x < 0) cs.x = 0; + if(cs.y < 0) cs.y = 0; + if(cs.x+cs.cx > iMaxX) cs.x = iMaxX - cs.cx; + if(cs.y+cs.cy > iMaxY) cs.y = iMaxY - cs.cy; if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index 16410ff04f9ceeba92a72952473f967f52ff6be4..fa08ca2c4ded6a2a8793b20a5f9f49ac74129978 100644 GIT binary patch delta 3251 zcmds3eN2@19e+L#&mAvf7N4ILnR$SQ9$iBblIS#v} z%l;nZdG2}ny?kFjFHh`ddhBNUNM#zn8Gj&c8SHJ7M=$0$M7y@0&RjrP+}1AGURM;w zPJ_Qife2~Y;$(&#(O|DMFXBD+Ue&f-c~l9BYlV67s>~N5&S>Q#bbv=^ zt+nHRUL_;73Wd%>6VJ_CD+k4==ABoe#Lvu+!H#quXiE(g9gcP8LQ{?gaW*$3I&vFq zIXomQHN<{fRg`o^{4=*kjN)|8AWj0+LdoByTr_)TN;;dMoj+nMy@R6?B72)l{@>l zx?J*?AGRvbDDBE)JV{X=Cv>Bmdir4(>J=BYUxi=jhumV#?}N!eyrOESOKiW=fB3My zPlt=n>Zp_Ns7FVHTsk(9qYyi3^lc7kvJhc97UorAL)oYiGlKkC_;rW&gmky(ZRvJ@ivM?%f=AA^kx|4qgR_s(4Tl%#nJmj=YX!h zqVyUS^l}+I*h8%W9Hq!XR8va;PFd+FX`B-kd;oXfB6#rpa~Ju{O;0aE z289jTXg}YcUxEPk(qIBi0was22jIr{=t2>1A6?8_sCBbL-@OSxV$^yy8JV0Ll<#$6 zbXK5@t{EoW@>SR8_RJ6`f8eC|OHe6M=EXcZrE}$sSP&0VfgeTG@-af>ILm?ktrRV? z|H+C^l<`$#88&be8qG%NYmhBM0|BdedJPxo(rDEclxC@#dCMnJf8@TTD&J)ftJitRGmOW@ z>7j6{*J5Ny`?T_ z_D0?3fAu#&x<&dI=S;>VWJk(Lg4A%16|Gd7do#B@F?9`fpi9Ll6_w5T{|_GyY?vS6Bwa6t zS5&j&u*+orn9<+Jhu1Pa>0OC)f5Hlt4#(MMx=N9Sf}|5Y6~euyz_2=ccm)p`w=6dM zEnAbbO;=xQeIB$#E08NL+KR-4%_R?-cpnSs!y@jnL~5ey6WCO{a+CuYzN-b3Rtsoq P5>3pmIlcWWy0m`*og+9R delta 4017 zcmcgvZBUfg6~1SAcLhXTaajpL^70i|6tcjwf}-KmfTDsSPSRM5X*HJGYLGO>U|lm! zrcF&W-h_iQCRxqYqQ=C!8MZSTT|a8R)S_b(>NqVr{n4aoF(qx9w%X_3mqn(@Ozlis zn6rELzW3vt=RD`R_YL%q3iOZKUlv21p_wsvkt0&>wmV13R-;iKk1vp3!;qgDr(%XJ@ z(9I3GWJqIsCPxlZ8XuPArWRf>g_d%4Kbg|(@zP>$%%v>ZeA1MW35hgM-gxPXk***e zc=`8J|AKh_3i}-PH`sOH@OOOw1NKi?90uMP>gR#0l+8VbkSkiE8B=+pFYf z$5ZJZN!uUfJ(salq?iif!*cY@P}@4U?o1D*?{Vb1;?X@CmH-@0n5cl$`USy}QwoI;gGKG8I zqqW?yi5zlg(8by25NNV&rCYAp(RrX3>7N(A&qjMEZtZgMn*l1}o__j?{+BDhxL7GLf zG$a}%n=YFl@Pb@=PVK{Q^0Zz_xlI5M^8v@83vH z3Rt14WkMEjb`fqn#^ zm`Sm;F52nWP;=iaz#ApUdkQIA2J3zNwIWm_d|ZN(EgLbj(E>Mk7GPdKMM>a*uGzky z=>=k%L9@FbujnYIc&oHbiPU|UAIXR!mL8%c`}Yx0Jzu*@r5cxTxu2X#Rz$&%D3|B& zA_qOJy)5s=Z|(I%`nQq~IqQBmEgMpcU*=Q2MGCWy{2enXJ)Ay=*4cD<0=0hZ3>DJx zyVx<0%B)-j>w%Q5MH-iK zX%V+QOIx&BLWrzAc=fXor)Zs7x<+%XboAu|qUy8AIrD$cXLB086Df`X{&a6I;~(BEKTL#hQX19V-y>{u#N6_aBDB{!IN2func~v z#hfy9yvJj6k?`ot;gmCg*Pg9L5UI)hn%(2 zMH_V~aPS4IjK{2j-}A+{#B{M(RLc!H8DaAmbj~&`89r5;nJSz7+-6FlNxHJ4GL^(- z2PrW;c#t;PqDjg8Vp5Vjj!=0tCp#w5bSjkez>JtwoD@fnP=&nKb=#uHG| z(WgT6!FyFKs%UBurWN*VjI6|rN_<=8QH@cz66M%-II;GoGrQhJd9Un+xM_vc^01Vb zz7LIT{TR9F$s?ys$WP(s_aSeP8&t{jKHmQxj#PCG;GQXz(tV0540+g9GOP$Ht>D~( zhOe4nI*+kYYALKy-l((i;j?tikng%PMi8p$CdNugyqZ!9WkskGd=>+9g>e<0KrYZz ziGG!V0wArhw`k`_pAQIE-x9_*QHTNB>MBERx`Lxraq-n|9P>{NiOiZZnqb`y^lkj& zu~g3f4emgJt`v1o)x>fuNoc~6V|Kiyr1}E&#qgyZx`V;A{0$b&emFP{jw)wWcuGr^ z@+y6`f>EJWAn0PyMztz1Ly<|&%uW+U;OsK~FSleb2mU}2w)K-= zUuypCzFcDCR+OB67u3OUdB0Ve`mJc>F<-6T-*WiS0SpgZ!Np#`$pz0%InitDevMode); diff --git a/host/resource - Copia b/host/resource - Copia deleted file mode 100644 index c9dff848872e74d49e028395f2972a3b2f4cd82c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30806 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 PeIIw){qS*g=db?{5_4Kz diff --git a/host/resource - Copia (2) b/host/resource - Copia (2) deleted file mode 100644 index c1e94d6179efa2e993808b13baa1134154fa3ba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31266 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 PeIIw){qS*g=db?{5_4Kz diff --git a/locale/it/Resources_IT.rc b/locale/it/Resources_IT.rc index 8ecbd4f4762672fbba158c81a54c99cbccd9dcd1..7b09628223478bda5efec6b5ad3ca803c9da99ba 100644 GIT binary patch delta 1001 zcmZuw?MstU6hF7U__7SADCu-=u@Y^_v&}iDE*ni#3SUAc%E+}X7^H4)Y8r`3*f*IT z;rY_r`~yOGf*|^^z7!T{VQR{n_78;hLFfhP?AchBa(V8(&pqe$r~1&X*BR}n^~sT2`A{V860p9u0sbjz-5{{ z;S%jypcPus-dl@f?!vSx;KJ?EB#^ZoaY=2q0?>40pzm4O+q^ARvsyCi4%>i)Hd=Q}t z?3CXHY;Un8-#0@wA*is&tHV=^Twa1AifSKKR@6Q<;MDq*g1p6ZGgz=bR*Rvvd>s08 zFLho8*3|iSNUr=x2FlEXt_^?6yOJa$6h7L@a`4&b$&{fQ3?fWyMVF?5o0Q6JWFJQ` zbXAVJts0E2sIxezAR+!*Rd{5zMWy2?<={6t9GC&@OR75-!vh+beeH!r58cd4l zq<=Sfadq_$Gh+K%J&~J(drNAjL4TkGYnHoZdawY8+N}+R9ukyTsUX7r7L5GJ#NFW_ zo?TB*GZIy1FrocM8Lw8dOks9%wvm5d#-zf7#WtA`UH&N{26s{Y^{AlR9Ft(=em;g` zOTwA$?<$N8mzM@eO%16zNFjPeB3xqNKCw!Asbb>Q;=~UV#ke!xjodYPh9Rk)0lz)A z{D&}*#PAZT2YLxN(IOr~xEsH%FeaOW8VbX&@^FFEhy=_}9A`B+F;|?MXdaFlPEXZf ujnBNlg5_eQNQ$97DPLZ|jtL#VyRS&7b@{NBsrd0OmQC6?p3ii#ck(|uyAK=y delta 462 zcmX?hob}Ew)(sz$Ctu2R*sPOcBQsgyk=EpYj|HX%F-ov1FcdSCPTv1Rak>Q~BhS=0 z#+b9vQ2KfYBSkxE8Ap^c(KWSuLLGvIK#HN?y3^& z2jc05s;nFkT$uvyPDB*a(=!2WP=Qr$@A`gn*6J^ZSsZV96%fVJFKCiLcFOAX+W3? zG^2zefAY8#7o=-rH-v`QPJD(vyAOi)~L}V$6!#E)~nTh7AC~;Hq!{ diff --git a/locale/ru/Resources_RU.rc b/locale/ru/Resources_RU.rc index 8ed97c1606c54b3f15fcfc6ebd91f5392a1b9a31..322ecc812efe821d3bbe234a14c96d6378ef7b7f 100644 GIT binary patch delta 246 zcmX^0hPCA_>xQPb$q&|uOrF+OGW`NSqtxVx={%Dq+Sg5XNaf%(VlicLXR%;0njAP? zc=C((S+a^O)*wEM0gDrh4~qhWEs&+aU;-3#WU-pu-7$A^!gZF(aUZyNAu`rL6P#F_ zH=B3fEn_s>D#|Fx$Y{1*osrR&iP2(uDl_A8W=jTx?fNW?ksygqRz`aeeUgolk#TaI z58LFV^$yzwI2ip{CL45fZO`Cg+`~9I;SJa1N4xAM2lTLQFXCg2V+N}%NZ?>Jog5fq jKD~gGk!SL~N{;Ccf{YT=orD-qFq<%#Z08kbv`q#8r-nx) delta 258 zcmZp9%X;b!>xQN_M!U()ZS9lSWbsX|>tvg3*1m$@hQ*Y{n#F>}fyIu+h{a&?K_6kD z9LHp?j!B$WKrwruod4v)PT|RCI=Z;cSqxY}I&6VrAKN82w{@N(P2~57R zNN9QlJL4LlAlu|Q>m4RPc*C;YkAu;Rh1rzBa{Fu^#>0$YRw5tcO6JK0RcxGw3}y^E v42BG*(;ImiEhkSfW0}5zlaX!my-JShRf3EX(`$qnPcRz+?ROVuv`q#8B6?HY