From 5fb3701aa46ef1cf8a6b1811bec52ff5e8eb860d Mon Sep 17 00:00:00 2001 From: gho tik Date: Thu, 7 May 2015 12:41:04 -0400 Subject: [PATCH] v2_03_28_src Former-commit-id: 708ae7af446f637162f5f2f3be1c222509f80afb --- Include/dxwnd.h | 4 +- build/dxwnd.dll | 4 +- build/dxwnd.exe | 4 +- build/exports/Microsoft Midtown Madness.dxw | 4 +- build/exports/Snowboard Racer.dxw | 31 ++++++++ build/readme-relnotes.txt | 5 ++ dll/ddraw.cpp | 76 +++++++++++++++++--- dll/dxhook.cpp | 4 +- dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 347648 -> 369568 bytes host/TabDebug.cpp | 1 + host/TabDirect3D.cpp | 4 ++ host/TargetDlg.cpp | 1 + host/TargetDlg.h | 3 + host/dxwndhost.aps | Bin 157280 -> 157856 bytes host/dxwndhost.rc | Bin 100228 -> 101036 bytes host/dxwndhost.vs2008.suo | Bin 231424 -> 239616 bytes host/dxwndhostView.cpp | 6 ++ host/resource | Bin 34956 -> 35226 bytes 19 files changed, 131 insertions(+), 18 deletions(-) create mode 100644 build/exports/Snowboard Racer.dxw diff --git a/Include/dxwnd.h b/Include/dxwnd.h index 7e53f52..95d7871 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -87,7 +87,7 @@ #define FIXD3DFRAME 0x00000020 // Preserve windows frame in D3D9 programs #define FORCE16BPP 0x00000040 // Forces 16BPP desktop color depth #define BLACKWHITE 0x00000080 // Simulate a B&W screen monitor mapping colors to grayscales -//#define SAVECAPS 0x00000100 // Saves and restores original surface flags & capabilities (UNUSED) +#define MARKLOCK 0x00000100 // higlights the locked/unlocked surfaces by surroundig the rect in color #define SINGLEPROCAFFINITY 0x00000200 // Set Process Affinity to a single core #define EMULATEREGISTRY 0x00000400 // Emulate registry api to read extra keys #define CDROMDRIVETYPE 0x00000800 // Pretends that GetDriveType() always returns DRIVE_CDROM @@ -189,6 +189,8 @@ #define FIXMOVIESCOLOR 0x00000020 // Fixes vfw movies color depth forcing the virtual value #define WOW64REGISTRY 0x00000040 // Sets KEY_WOW64_64KEY registry flag #define DISABLEMAXWINMODE 0x00000080 // invoke ddraw SetAppCompatData(12,0) to set DisableMaxWindowedMode +#define FIXPITCH 0x00000100 // Fixes surface filling made with no concern to actual pitch value +#define POWER2WIDTH 0x00000200 // Fixes ..... // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 19584bf..3256573 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f050a1ea1f36d6ac4045aee71626b4727670871e418331417ef4f2ad22a1e42 -size 577536 +oid sha256:bd9f3a8d1c620b34bb5d445bab38ed6510a486f2f3bdbde661a4a8d3d3c2052f +size 578048 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index fd7dcf6..9003103 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08eab14d883756898f5ba78147dee338e120fd229891eb8ed192c22faafa2a6e -size 540160 +oid sha256:5be9b2e6e65b9ed2d920418acc46bbfb48166515b1ad5d47f5c17854d73c5041 +size 540672 diff --git a/build/exports/Microsoft Midtown Madness.dxw b/build/exports/Microsoft Midtown Madness.dxw index 38f828e..2502ca3 100644 --- a/build/exports/Microsoft Midtown Madness.dxw +++ b/build/exports/Microsoft Midtown Madness.dxw @@ -12,8 +12,8 @@ flagg0=1207959552 flagh0=20 flagi0=138412036 flagj0=4224 -flagk0=0 -tflag0=-2147477245 +flagk0=512 +tflag0=0 initx0=0 inity0=0 minx0=0 diff --git a/build/exports/Snowboard Racer.dxw b/build/exports/Snowboard Racer.dxw new file mode 100644 index 0000000..a668ecc --- /dev/null +++ b/build/exports/Snowboard Racer.dxw @@ -0,0 +1,31 @@ +[target] +title0=Snowboard Racer +path0=D:\Games\Snowboard Racer\snowboard\SnowBoard.exe +launchpath0= +module0= +opengllib0= +notes0= +ver0=0 +coord0=0 +flag0=136314914 +flagg0=1207959552 +flagh0=33554452 +flagi0=138412036 +flagj0=4224 +flagk0=256 +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 +swapeffect0=0 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index c318c76..4819f8b 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -842,3 +842,8 @@ add: dxwnd proxyes to get standalone windowed mode (ask for instructions) fix: added SetAppCompatData(1, 0) to AERO compatibility for lock operations - improves AERO compatibility, e.g. "Age of Empires" intro movie add: added "Disable max window mode" flag for better compatibility with Win8/8.1 fix: cleaned up some opengl hooking code. Mind possible regressions .... + +v2.03.28: +add: added "Lock / Unlock pitch fix" flag to compensate for pitch change in emulation mode. Fixes "Snowboard racer" slanted graphic +add: added "Width not power of 2 fix" flag to compensate for pitch change in emulation mode. Fixes "Microsoft Midtown Madness" slanted graphic +add: debug flag "Highlight Locked surfaces" to highlight service surfaces that are Lock-ed and Unlock-ed. \ No newline at end of file diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 6edb0b1..a9dddd9 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -2482,6 +2482,17 @@ static HRESULT BuildGenericEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf // 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; + if(dxw.dwFlags6 & POWER2WIDTH){ // v2.03.28: POWER2WIDTH to fix "Midtown Madness" in surface emulation mode + if(((ddsd.dwFlags & (DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH)) == (DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH)) && + (ddsd.ddsCaps.dwCaps & DDSCAPS_OFFSCREENPLAIN) + ){ + DWORD dwWidth; + dwWidth = ((ddsd.dwWidth + 3) >> 2) << 2; + if(dwWidth != ddsd.dwWidth) OutTraceDW("CreateSurface: fixed surface width %d->%d\n", ddsd.dwWidth, dwWidth); + ddsd.dwWidth = dwWidth; + } + } + res=(*pCreateSurface)(lpdd, &ddsd, lplpdds, pu); if ((dxw.dwFlags1 & SWITCHVIDEOMEMORY) && (res!=DD_OK)){ OutTraceDW("CreateSurface ERROR: res=%x(%s) at %d, retry\n", res, ExplainDDError(res), __LINE__); @@ -2494,11 +2505,9 @@ static HRESULT BuildGenericEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf return res; } - OutTraceDW("CreateSurface: %s\n", LogSurfaceAttributes((LPDDSURFACEDESC)&ddsd, "[Emu Generic]", __LINE__)); + OutTraceDW("CreateSurface: CREATED lpddsd=%x version=%d %s\n", + *lplpdds, dxversion, LogSurfaceAttributes((LPDDSURFACEDESC)&ddsd, "[Dir Generic]", __LINE__)); - OutTraceDW("CreateSurface: created Emu_Generic dds=%x\n", *lplpdds); - if(IsDebug) DescribeSurface(*lplpdds, dxversion, "DDSEmu_Generic", __LINE__); - // v2.02.66: if 8BPP paletized surface and a primary palette exixts, apply. // fixes "Virtua Fighter PC" palette bug if(lpDDP && (ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8)){ @@ -2535,14 +2544,13 @@ static HRESULT BuildGenericDir(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf return res; } } - OutTraceDW("CreateSurface: created GENERIC surface dds=%x flags=%x(%s) caps=%x(%s)\n", - *lplpdds, lpddsd->dwFlags, ExplainFlags(lpddsd->dwFlags), lpddsd->ddsCaps.dwCaps, ExplainDDSCaps(lpddsd->ddsCaps.dwCaps)); + + OutTraceDW("CreateSurface: CREATED lpddsd=%x version=%d %s\n", + *lplpdds, dxversion, LogSurfaceAttributes((LPDDSURFACEDESC)lpddsd, "[Dir Generic]", __LINE__)); // hooks .... HookDDSurfaceGeneric(lplpdds, dxversion); - OutTraceDW("CreateSurface: created lpdds=%x type=Generic ret=%x\n", *lplpdds, res); - if(IsDebug) DescribeSurface(*lplpdds, dxversion, "Generic", __LINE__); //v2.02.44 bug fix return DD_OK; } @@ -3522,6 +3530,9 @@ HRESULT WINAPI extSetClipper(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpdd return res; } +DDSURFACEDESC SaveSurfaceDesc; +LPDIRECTDRAWSURFACE SaveSurface = NULL; + HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent) { HRESULT res; @@ -3553,6 +3564,11 @@ HRESULT WINAPI extLock(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc->lPitch, lpDDSurfaceDesc->lpSurface, LogSurfaceAttributes(lpDDSurfaceDesc, "[Locked]", __LINE__)); if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK; + if((dxw.dwFlags6 & FIXPITCH) || (dxw.dwFlags3 & MARKLOCK)){ + SaveSurfaceDesc = *lpDDSurfaceDesc; + SaveSurface = lpdds; + } + return res; } @@ -3635,6 +3651,9 @@ HRESULT WINAPI extLockDir(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACED return res; } +#define MARK16COLOR 0x7C1F +#define MARK32COLOR 0x00FF00FF + HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect) { HRESULT res; @@ -3668,6 +3687,47 @@ HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFAC } } + if((dxw.dwFlags6 & FIXPITCH) && !(IsPrim||IsBack) && (lpdds == SaveSurface)){ + OutTrace("DEBUG: fixing lpdds=%x size=(%dx%d) surface=%x pitch=%d bpp=%d\n", + lpdds, SaveSurfaceDesc.dwWidth, SaveSurfaceDesc.dwHeight, SaveSurfaceDesc.lpSurface, SaveSurfaceDesc.lPitch, SaveSurfaceDesc.ddpfPixelFormat.dwRGBBitCount); + int y; + LONG lVirtualPitch; + LPVOID p1, p2; + lVirtualPitch = (((SaveSurfaceDesc.dwWidth+1)>>1) * SaveSurfaceDesc.ddpfPixelFormat.dwRGBBitCount) >> 2; + if(lVirtualPitch != SaveSurfaceDesc.lPitch){ // do just if necessary ... + for (y=SaveSurfaceDesc.dwHeight-1; y; y--){ // for each scan line ... + p1 = (LPVOID)((DWORD)SaveSurfaceDesc.lpSurface + (y * lVirtualPitch)); + p2 = (LPVOID)((DWORD)SaveSurfaceDesc.lpSurface + (y * SaveSurfaceDesc.lPitch)); + memcpy(p2, p1, SaveSurfaceDesc.lPitch); // copy line to correct offset + } + } + } + + if((dxw.dwFlags3 & MARKLOCK) && !(IsPrim||IsBack) && (lpdds == SaveSurface)){ + switch(SaveSurfaceDesc.ddpfPixelFormat.dwRGBBitCount){ + case 16: + for (UINT y=0; y. #include "TlHelp32.h" -#define VERSION "2.03.27" +#define VERSION "2.03.28" #define DDTHREADLOCK 1 //#define LOCKTHREADS diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index fce89e5cc9cfd89bf30d5587fbfd4fc78d64580a..60e1a664c95eab491cdfb9e229a8e07048153e85 100644 GIT binary patch delta 9501 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 C!(##f delta 6171 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 VjW~{V3QFHM=Xlv&R${-O`(JD#E(-tv diff --git a/host/TabDebug.cpp b/host/TabDebug.cpp index 91b4348..160dc1a 100644 --- a/host/TabDebug.cpp +++ b/host/TabDebug.cpp @@ -32,6 +32,7 @@ void CTabDebug::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_DXPROXED, cTarget->m_DXProxed); DDX_Check(pDX, IDC_ASSERT, cTarget->m_AssertDialog); DDX_Check(pDX, IDC_MARKBLIT, cTarget->m_MarkBlit); + DDX_Check(pDX, IDC_MARKLOCK, cTarget->m_MarkLock); DDX_Check(pDX, IDC_NOBLT, cTarget->m_NoBlt); DDX_Check(pDX, IDC_FASTBLT, cTarget->m_FastBlt); DDX_Check(pDX, IDC_GDICOLORCONV, cTarget->m_GDIColorConv); diff --git a/host/TabDirect3D.cpp b/host/TabDirect3D.cpp index b28dcca..21b065d 100644 --- a/host/TabDirect3D.cpp +++ b/host/TabDirect3D.cpp @@ -34,7 +34,11 @@ void CTabDirect3D::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_NOD3DRESET, cTarget->m_NoD3DReset); DDX_Check(pDX, IDC_SUPPRESSD3DEXT, cTarget->m_SuppressD3DExt); DDX_Check(pDX, IDC_FORCESHEL, cTarget->m_ForcesHEL); + + // Ddraw tweaks DDX_Check(pDX, IDC_NOSYSTEMEMULATED, cTarget->m_NoSystemEmulated); + DDX_Check(pDX, IDC_FIXPITCH, cTarget->m_FixPitch); + DDX_Check(pDX, IDC_POWER2WIDTH, cTarget->m_Power2Width); // Texture management DDX_Radio(pDX, IDC_TEXTURENONE, cTarget->m_TextureHandling); diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index 5b3d512..a92a1ba 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -121,6 +121,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_UseRGB565 = TRUE; // seems the default for 16bit video mode m_SuppressDXErrors = FALSE; m_MarkBlit = FALSE; + m_MarkLock = FALSE; m_NoSystemMemory = FALSE; m_NoSystemEmulated = FALSE; m_NoBlt = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 4353f98..5b6d793 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -96,6 +96,7 @@ public: BOOL m_UseRGB565; BOOL m_SuppressDXErrors; BOOL m_MarkBlit; + BOOL m_MarkLock; BOOL m_NoSystemMemory; BOOL m_NoSystemEmulated; BOOL m_NoBlt; @@ -166,6 +167,8 @@ public: BOOL m_NoPerfCounter; BOOL m_DisableFogging; BOOL m_ClearTarget; + BOOL m_FixPitch; + BOOL m_Power2Width; BOOL m_SuppressIME; BOOL m_SetCompatibility; BOOL m_AEROBoost; diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index 11e1fb70dd5f7df568a417753d99d7b9080e4d0f..b695693a0884cd3b9fd7550430e6a5fa46224c4f 100644 GIT binary patch delta 5545 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 delta 5261 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 B$}s={ diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index 036195b87702dc2d0b6a69caeaa668cbcfc3c855..9cef16ad0a656d2d644606c8f8af44112320dbff 100644 GIT binary patch delta 515 zcmYjN&o5(P6g{7!^`l7}xVRpnwh0dso;@d%|2G2Vs4PG)jTgaVU zr@L#L#m5Rpx`P}u`E;L5)9)LbrImHwdZqMtCr;7FV(Llv(Q#@w_eX(#ZltXxP7idJ zZ{wGZ%ONOq+1=5CT8v^2-|+*Jm}NGE87wl6FdkqW<66%%e)ORiY?&YvPXfjnJ>ZId?u${*bwWu{K*bE<;t1dRK&pg{jtWQ1iAc6LX7(Jc|Blk`B8luO56|dEx_DfyrOG^O%hoj3z7g+D_+EWE7gb zttXAyn85@nu#g$393(NBr7wlql)(bXmY&=Yr!;w0pM{_?&^Tlx4JJ>FHJq%}-^LA8 z36?QsFrR$zw)JF%nQW6UOyHXQ4@u69!4gTX3$Dk6!4xdMVB#FGjjMx&FNfLj9i;9%-1QHzCn>uWV?U><078vOJo_Hrhk%Q+` r@br2)M%(FjWsGdo-^emfn7&Dd(P8@@IYt$x$*-P?ZNH_+cqsz_2RdB= diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index 55d62e0126b062cb01ff650cef549b6389ac7731..8b0b82153456c98d9104f27e950df1c2c12acbdb 100644 GIT binary patch delta 5841 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 z z(m@*)6LRDPzqY4#i#Cu035Rmji5?rZrC>2V7ZDGrk!>QFPyHW3P!@ZgRQzpmmmH$tdqGrub6tQdqV`T+3aw^!`@f|~`>Hf$o#9Uv1&@kf+GAEgTY5dZ)H diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index b3146c9..5d019af 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -268,6 +268,8 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_NoPerfCounter) t->flags4 |= NOPERFCOUNTER; if(dlg->m_DisableFogging) t->flags4 |= DISABLEFOGGING; if(dlg->m_ClearTarget) t->flags5 |= CLEARTARGET; + if(dlg->m_FixPitch) t->flags6 |= FIXPITCH; + if(dlg->m_Power2Width) t->flags6 |= POWER2WIDTH; if(dlg->m_SuppressIME) t->flags2 |= SUPPRESSIME; if(dlg->m_SuppressD3DExt) t->flags3 |= SUPPRESSD3DEXT; if(dlg->m_SetCompatibility) t->flags2 |= SETCOMPATIBILITY; @@ -317,6 +319,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_UseRGB565) t->flags |= USERGB565; if(dlg->m_SuppressDXErrors) t->flags |= SUPPRESSDXERRORS; if(dlg->m_MarkBlit) t->flags3 |= MARKBLIT; + if(dlg->m_MarkLock) t->flags3 |= MARKLOCK; if(dlg->m_NoSystemMemory) t->flags5 |= NOSYSTEMMEMORY; if(dlg->m_NoSystemEmulated) t->flags5 |= NOSYSTEMEMULATED; if(dlg->m_NoBlt) t->flags5 |= NOBLT; @@ -515,6 +518,8 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_NoPerfCounter = t->flags4 & NOPERFCOUNTER ? 1 : 0; dlg->m_DisableFogging = t->flags4 & DISABLEFOGGING ? 1 : 0; dlg->m_ClearTarget = t->flags5 & CLEARTARGET ? 1 : 0; + dlg->m_FixPitch = t->flags6 & FIXPITCH ? 1 : 0; + dlg->m_Power2Width = t->flags6 & POWER2WIDTH ? 1 : 0; dlg->m_SaveLoad = t->flags & SAVELOAD ? 1 : 0; dlg->m_SlowDown = t->flags & SLOWDOWN ? 1 : 0; dlg->m_BlitFromBackBuffer = t->flags & BLITFROMBACKBUFFER ? 1 : 0; @@ -538,6 +543,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_UseRGB565 = t->flags & USERGB565 ? 1 : 0; dlg->m_SuppressDXErrors = t->flags & SUPPRESSDXERRORS ? 1 : 0; dlg->m_MarkBlit = t->flags3 & MARKBLIT ? 1 : 0; + dlg->m_MarkLock = t->flags3 & MARKLOCK ? 1 : 0; dlg->m_NoSystemMemory = t->flags5 & NOSYSTEMMEMORY ? 1 : 0; dlg->m_NoSystemEmulated = t->flags5 & NOSYSTEMEMULATED ? 1 : 0; dlg->m_NoBlt = t->flags5 & NOBLT ? 1 : 0; diff --git a/host/resource b/host/resource index b1b6a4ba9b29708d00fee4c541a406f1f3eb0b27..6e962ac0c05941883ff479e509f9df8a66ae0a80 100644 GIT binary patch delta 103 zcmeB~$TVv*(}r7~lk23}m;)F*Co^hmPA>50+Pus2kL2VJd@S6)42}#z4BiYr4E~e# z!*wTLU}TxRh(!h@CmF!t&k)Yw3Y0ej(w+=13?U3244e#{lM`cQ8BHb!X3K8gk$go3 E09?!+JOBUy delta 19 bcmbO=nW<+Y(}r7~o6WrLNNzroa!myQSojGa