diff --git a/build/Resources_IT.dll b/build/Resources_IT.dll index 8b9cfc3..a8a9f92 100644 --- a/build/Resources_IT.dll +++ b/build/Resources_IT.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:825e33de765c1346acb699050c248fb7e475c86c89378d55352f745b56e2256f +oid sha256:ceacbf8f568d53efcb0982da28698e26923abb941312acaa6d6d0a743a91870b size 112128 diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 638ec08..5c54bf3 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea2c1cd561a930d2b22057633659850296da519f6d1b7859ed94fa69f3c07795 +oid sha256:cb39f983940d6870059f12aedec119662e8fa477b9e6a8729cd11bdaea54899a size 525824 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index 31bca86..cfaddd5 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9cbd160962bb3334a41daaa0ab1869ba7726faa7c5590649000cfb8409be83c8 +oid sha256:e5527a66a62d88b1d8b752729337b257c6c83e74098f5a158893b92552a1fc0c size 532992 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index e587dab..cd3ebff 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -652,14 +652,14 @@ add: texture hooking add: texture management add: Direct3D dedicated configuration tab -v2.3.01 +v2.03.01 fix: fixed some bitmap handling while processing textures add: texture management dump to texture.out folder and hack from texture.in folder fix: AERO optimized mode with ddraw7 only surfaces: "Hoyle Casino Empire" works at least in fullscreen mode. 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 +v2.03.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 @@ -668,5 +668,6 @@ fix: in "prevent maximize" mode, set the main window in maximized state. Allow " add: Process kill command now warns you about existence of task fix: DxWnd window position save now works on multiscreen desktop - +v2.03.04 +fix: changed surface capability policy so that "Risk II" works with identical surface pitches diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index adfe639..e06536d 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -2442,7 +2442,11 @@ static HRESULT BuildGenericEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf memcpy(&ddsd, lpddsd, lpddsd->dwSize); // Copy over .... FixSurfaceCaps(&ddsd, dxversion); - if(ddsd.ddsCaps.dwCaps & (DDSCAPS_3DDEVICE|DDSCAPS_ZBUFFER)) ddsd.ddsCaps.dwCaps &= ~DDSCAPS_SYSTEMMEMORY; // v2.02.96 !! + // It looks that DDSCAPS_SYSTEMMEMORY surfaces can perfectly be DDSCAPS_3DDEVICE as well. + // For "Risk II" it is necessary that both the primary surface and the offscreen surfaces are generated + // with the same type, so that assuming an identical lPitch and memcopy-ing from one buffer to the + // other is a legitimate operation. + if(ddsd.ddsCaps.dwCaps & DDSCAPS_ZBUFFER) ddsd.ddsCaps.dwCaps &= ~DDSCAPS_SYSTEMMEMORY; // v2.03.03 !! // on WinXP Fifa 99 doesn't like DDSCAPS_SYSTEMMEMORY cap, so better to leave a way to unset it.... if(dxw.dwFlags5 & NOSYSTEMMEMORY) ddsd.ddsCaps.dwCaps &= ~DDSCAPS_SYSTEMMEMORY; @@ -3746,15 +3750,6 @@ 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; - // 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; } diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index 10c7778..23b4043 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.03.01" +#define VERSION "2.03.04" #define DXWACTIVATESINGLETASK 1 // comment to allow multiple task activations #define DDTHREADLOCK 1 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index be3dbd5..851da90 100644 Binary files a/dll/dxwnd.vs2008.suo and b/dll/dxwnd.vs2008.suo differ diff --git a/host/dxwnd.ini b/host/dxwnd.ini deleted file mode 100644 index 3608fe7..0000000 --- a/host/dxwnd.ini +++ /dev/null @@ -1,5 +0,0 @@ -[window] -posx=1213 -posy=261 -sizx=320 -sizy=200 diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index fa08ca2..4b0c3ba 100644 Binary files a/host/dxwndhost.vs2008.suo and b/host/dxwndhost.vs2008.suo differ diff --git a/locale/it/Resources_IT.rc b/locale/it/Resources_IT.rc index 7b09628..3f05a60 100644 Binary files a/locale/it/Resources_IT.rc and b/locale/it/Resources_IT.rc differ diff --git a/locale/it/Resources_It.suo b/locale/it/Resources_It.suo index 42389af..ab65f07 100644 Binary files a/locale/it/Resources_It.suo and b/locale/it/Resources_It.suo differ