From f479c25e2edf74020be1c87c975e74e69c45b3d0 Mon Sep 17 00:00:00 2001 From: gho tik Date: Mon, 22 Jun 2015 12:40:59 -0400 Subject: [PATCH] v2_03_26_src Former-commit-id: 51365996729c3c348ae3dfc5911e5f6b364f1ca7 --- Include/ddraw.h | 2 +- Include/dxwnd.h | 2 + build/dxwnd.dll | 4 +- build/dxwnd.exe | 4 +- build/exports/Rollcage (D3D).dxw | 8 ++- build/readme-relnotes.txt | 7 ++- dll/advapi.cpp | 2 + dll/avifile.cpp | 33 +++++++++++- dll/comdlg32.cpp | 87 +++++++++++++++++++++++++++++++ dll/ddraw.cpp | 1 + dll/dxhook.cpp | 4 +- dll/dxhook.h | 2 + dll/dxwcore.cpp | 41 +-------------- dll/dxwcore.hpp | 45 ++++++++++++++++ dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 331264 -> 347136 bytes dll/dxwnd.vs2008.vcproj | 4 ++ dll/gdi32.cpp | 1 - dll/msvfw.cpp | 21 ++++++++ dll/msvfwhook.h | 3 ++ dll/user32.cpp | 37 +++++++++---- host/TabCompat.cpp | 1 + host/TabSysLibs.cpp | 1 + host/TargetDlg.cpp | 2 + host/TargetDlg.h | 2 + host/dxwndhost.aps | Bin 157016 -> 157280 bytes host/dxwndhost.rc | Bin 99506 -> 99982 bytes host/dxwndhost.vs2008.suo | Bin 222720 -> 230912 bytes host/dxwndhostView.cpp | 4 ++ host/resource | Bin 34772 -> 34956 bytes to do 24.txt | 26 +++++++++ todo.txt.txt | 8 +++ 32 files changed, 292 insertions(+), 62 deletions(-) create mode 100644 dll/comdlg32.cpp create mode 100644 to do 24.txt create mode 100644 todo.txt.txt diff --git a/Include/ddraw.h b/Include/ddraw.h index e66314b..9432f1b 100644 --- a/Include/ddraw.h +++ b/Include/ddraw.h @@ -2438,7 +2438,7 @@ typedef struct _DDOPTSURFACEDESC /* * The surface's optimized pixelformat is compressed */ -#define DDOSDCAPS_OPTCOMPRESSED 0x00000001l +#define DDSDCAPS_PRIMARYSURFACE 0x00000001l /* * The surface's optimized pixelformat is reordered diff --git a/Include/dxwnd.h b/Include/dxwnd.h index 143c59f..538aa94 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -186,6 +186,8 @@ #define NODESTROYWINDOW 0x00000004 // suppress the main window destruction #define NOMOVIES 0x00000008 // suppress MCI Movies #define SUPPRESSRELEASE 0x00000010 // Avoid releasing critical emulated surfaces - the backbuffer +#define FIXMOVIESCOLOR 0x00000020 // Fixes vfw movies color depth forcing the virtual value +#define WOW64REGISTRY 0x00000040 // Sets KEY_WOW64_64KEY registry flag // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 9dafcdc..b78801c 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56ab101cb2b224e431663b2780b0f9909105b05d8224c9aaf04fce73f4478f2c -size 576000 +oid sha256:4ab5dd831d56508ccd5cbbda6a530cd2590513f33e24d99218eda96a1c592d5f +size 578048 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index d4cbbf5..78a4a7a 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4689f5e3e9616fb6a9cffaa580a02ca3aceb4364593deeb30b373e1e6f0d0696 -size 539648 +oid sha256:1520acef3baabbb9746fcc7f4e3ef6e485a67880b7c1503d9abf37097bfdd4ab +size 540160 diff --git a/build/exports/Rollcage (D3D).dxw b/build/exports/Rollcage (D3D).dxw index bb50259..8c16fb5 100644 --- a/build/exports/Rollcage (D3D).dxw +++ b/build/exports/Rollcage (D3D).dxw @@ -6,8 +6,8 @@ module0= opengllib0= ver0=0 coord0=0 -flag0=150994976 -flagg0=134217728 +flag0=134217762 +flagg0=1207959552 flagh0=20 flagi0=136314884 tflag0=6147 @@ -25,3 +25,7 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +notes0= +flagj0=128 +flagk0=0 +swapeffect0=0 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index c53a606..4ff201a 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -830,4 +830,9 @@ add: added the "Suppress Release on backbuffer" that makes "Tetris Worlds" worki v2.03.25: fix: CoCreateInstance hooking for IDirectDraw interface: fixes "Darius Gaiden" fix: BackBufferCaps value for NOSYSTEMEMULATED option. Fixes "Forsaken" crashes in AERO mode. -fix: GDI GetDC and GetWindowDC must not redirect the zero hWnd to the current main window if not in fullscreen mode. \ No newline at end of file +fix: GDI GetDC and GetWindowDC must not redirect the zero hWnd to the current main window if not in fullscreen mode. + +v2.03.26: +add: Added "Set KEY_WOW64_64KEY flag" flag to registry operations. It could prove useful for old programs on recent W64 platforms. +add: Added "fix movies color depth" flag. It fixes some problems when windows multimedia functions detect and process the actual video color mode and they should rather consider the virtual value. Fixes "Killing Time" intro movies decoding. +fix: suppressed hooking for comdlg32.dll module. Common dialogues never need to be altered. Fixes "Road Rash" save/load game dialog problems. diff --git a/dll/advapi.cpp b/dll/advapi.cpp index a6e52ad..4335d05 100644 --- a/dll/advapi.cpp +++ b/dll/advapi.cpp @@ -152,6 +152,8 @@ LONG WINAPI extRegOpenKeyEx( if(res == ERROR_SUCCESS) return res; } + if(dxw.dwFlags6 & WOW64REGISTRY) ulOptions |= KEY_WOW64_64KEY; + res=(*pRegOpenKeyEx)(hKey, lpSubKey, ulOptions, samDesired, phkResult); OutTraceR("RegOpenKeyEx: res=%x phkResult=%x\n", res, phkResult ? *phkResult : 0); diff --git a/dll/avifile.cpp b/dll/avifile.cpp index 833e977..7b1c729 100644 --- a/dll/avifile.cpp +++ b/dll/avifile.cpp @@ -10,17 +10,21 @@ typedef LONG (WINAPI *AVIFileRelease_Type)(PAVIFILE); typedef LONG (WINAPI *AVIStreamRelease_Type)(PAVISTREAM); +typedef PGETFRAME (WINAPI *AVIStreamGetFrameOpen_Type)(PAVISTREAM, LPBITMAPINFOHEADER); AVIFileRelease_Type pAVIFileRelease = NULL; AVIStreamRelease_Type pAVIStreamRelease = NULL; +AVIStreamGetFrameOpen_Type pAVIStreamGetFrameOpen = NULL; LONG WINAPI extAVIFileRelease(PAVIFILE); LONG WINAPI extAVIStreamRelease(PAVISTREAM); +PGETFRAME WINAPI extAVIStreamGetFrameOpen(PAVISTREAM, LPBITMAPINFOHEADER); static HookEntry_Type Hooks[]={ //{HOOK_IAT_CANDIDATE, "AVIFileClose", NULL, (FARPROC *)&pAVIFileClose, (FARPROC)extAVIFileClose}, - {HOOK_IAT_CANDIDATE, "AVIFileRelease", NULL, (FARPROC *)&pAVIFileRelease, (FARPROC)extAVIFileRelease}, - {HOOK_IAT_CANDIDATE, "AVIStreamRelease", NULL, (FARPROC *)&pAVIStreamRelease, (FARPROC)extAVIStreamRelease}, + //{HOOK_IAT_CANDIDATE, "AVIFileRelease", NULL, (FARPROC *)&pAVIFileRelease, (FARPROC)extAVIFileRelease}, + //{HOOK_IAT_CANDIDATE, "AVIStreamRelease", NULL, (FARPROC *)&pAVIStreamRelease, (FARPROC)extAVIStreamRelease}, + {HOOK_IAT_CANDIDATE, "AVIStreamGetFrameOpen", NULL, (FARPROC *)&pAVIStreamGetFrameOpen, (FARPROC)extAVIStreamGetFrameOpen}, {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator }; @@ -54,5 +58,30 @@ LONG WINAPI extAVIStreamRelease(PAVISTREAM pavi) return (*pAVIStreamRelease)(pavi); } +PGETFRAME WINAPI extAVIStreamGetFrameOpen(PAVISTREAM pavi, LPBITMAPINFOHEADER lpbiWanted) +{ + if(IsTraceDW){ + char sColor[12]; + switch ((DWORD)lpbiWanted){ + case 0: strcpy(sColor, "DEFAULT"); break; + case AVIGETFRAMEF_BESTDISPLAYFMT: strcpy(sColor, "BEST"); break; + default: sprintf(sColor,"%d", lpbiWanted->biBitCount); + } + OutTrace("AVIStreamGetFrameOpen: pavi=%x lpbiwanted=%x bitcount=%s\n", pavi, lpbiWanted, sColor); + } + + if((dxw.dwFlags6 & FIXMOVIESCOLOR) && (((DWORD)lpbiWanted == 0) || ((DWORD)lpbiWanted == AVIGETFRAMEF_BESTDISPLAYFMT))){ + BITMAPINFOHEADER biWanted; + memset(&biWanted, 0, sizeof(BITMAPINFOHEADER)); + biWanted.biSize = sizeof(BITMAPINFOHEADER); + biWanted.biBitCount = (WORD)dxw.VirtualPixelFormat.dwRGBBitCount; + biWanted.biPlanes = 1; + biWanted.biClrUsed = (0x1 << biWanted.biBitCount); // 8 -> 256; + biWanted.biClrImportant = biWanted.biClrUsed; + return (*pAVIStreamGetFrameOpen)(pavi, &biWanted); + } + + return (*pAVIStreamGetFrameOpen)(pavi, lpbiWanted); +} diff --git a/dll/comdlg32.cpp b/dll/comdlg32.cpp new file mode 100644 index 0000000..3b702fd --- /dev/null +++ b/dll/comdlg32.cpp @@ -0,0 +1,87 @@ +#define _CRT_SECURE_NO_WARNINGS + +#include +#include "dxwnd.h" +#include "dxwcore.hpp" +#include "syslibs.h" +#include "dxhook.h" +#include "dxhelper.h" + +typedef BOOL (WINAPI *GetFileNameA_Type)(LPOPENFILENAMEA); +typedef BOOL (WINAPI *GetFileNameW_Type)(LPOPENFILENAMEW); +GetFileNameA_Type pGetOpenFileNameA = NULL; +GetFileNameA_Type pGetSaveFileNameA = NULL; +GetFileNameW_Type pGetOpenFileNameW = NULL; +GetFileNameW_Type pGetSaveFileNameW = NULL; +BOOL WINAPI extGetSaveFileNameA(LPOPENFILENAMEA); +BOOL WINAPI extGetOpenFileNameA(LPOPENFILENAMEA); +BOOL WINAPI extGetSaveFileNameW(LPOPENFILENAMEW); +BOOL WINAPI extGetOpenFileNameW(LPOPENFILENAMEW); + +static HookEntry_Type Hooks[]={ + {HOOK_IAT_CANDIDATE, "GetSaveFileNameA", NULL, (FARPROC *)&pGetSaveFileNameA, (FARPROC)extGetSaveFileNameA}, + {HOOK_IAT_CANDIDATE, "GetOpenFileNameA", NULL, (FARPROC *)&pGetOpenFileNameA, (FARPROC)extGetOpenFileNameA}, + {HOOK_IAT_CANDIDATE, "GetSaveFileNameW", NULL, (FARPROC *)&pGetSaveFileNameW, (FARPROC)extGetSaveFileNameW}, + {HOOK_IAT_CANDIDATE, "GetOpenFileNameW", NULL, (FARPROC *)&pGetOpenFileNameW, (FARPROC)extGetOpenFileNameW}, + {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator +}; + +void HookComDlg32(HMODULE module) +{ + HookLibrary(module, Hooks, "comdlg32.dll"); +} + +FARPROC Remap_ComDlg32_ProcAddress(LPCSTR proc, HMODULE hModule) +{ + FARPROC addr; + if (addr=RemapLibrary(proc, hModule, Hooks)) return addr; + return NULL; +} + +BOOL WINAPI extGetSaveFileNameA(LPOPENFILENAMEA lpofn) +{ + BOOL ret, FullScreen; + FullScreen = dxw.IsFullScreen(); + OutTraceDW("GetSaveFileNameA: FullScreen=%x\n", FullScreen); + dxw.SetFullScreen(FALSE); + ret = (*pGetSaveFileNameA)(lpofn); + dxw.SetFullScreen(FullScreen); + OutTraceDW("GetSaveFileNameA: ret=%x\n", ret); + return ret; +} + +BOOL WINAPI extGetOpenFileNameA(LPOPENFILENAMEA lpofn) +{ + BOOL ret, FullScreen; + FullScreen = dxw.IsFullScreen(); + OutTraceDW("GetOpenFileNameA: FullScreen=%x\n", FullScreen); + dxw.SetFullScreen(FALSE); + ret = (*pGetOpenFileNameA)(lpofn); + dxw.SetFullScreen(FullScreen); + OutTraceDW("GetOpenFileNameA: ret=%x\n", ret); + return ret; +} + +BOOL WINAPI extGetSaveFileNameW(LPOPENFILENAMEW lpofn) +{ + BOOL ret, FullScreen; + FullScreen = dxw.IsFullScreen(); + OutTraceDW("GetSaveFileNameW: FullScreen=%x\n", FullScreen); + dxw.SetFullScreen(FALSE); + ret = (*pGetSaveFileNameW)(lpofn); + dxw.SetFullScreen(FullScreen); + OutTraceDW("GetSaveFileNameW: ret=%x\n", ret); + return ret; +} + +BOOL WINAPI extGetOpenFileNameW(LPOPENFILENAMEW lpofn) +{ + BOOL ret, FullScreen; + FullScreen = dxw.IsFullScreen(); + OutTraceDW("GetOpenFileNameW: FullScreen=%x\n", FullScreen); + dxw.SetFullScreen(FALSE); + ret = (*pGetOpenFileNameW)(lpofn); + dxw.SetFullScreen(FullScreen); + OutTraceDW("GetOpenFileNameW: ret=%x\n", ret); + return ret; +} diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 01085a1..3ec7cbc 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -3848,6 +3848,7 @@ HRESULT WINAPI EnumModesCallbackDumper(LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID l OutTrace("\tdwBackBufferCount=%d\n", lpDDSurfaceDesc->dwBackBufferCount); OutTrace("\tdwRefreshRate=%d\n", lpDDSurfaceDesc->dwRefreshRate); OutTrace("\tlpSurface=%x\n", lpDDSurfaceDesc->lpSurface); + OutTrace("\tCaps=%x(%s)\n", lpDDSurfaceDesc->ddsCaps.dwCaps, ExplainDDSCaps(lpDDSurfaceDesc->ddsCaps.dwCaps)); OutTrace("\tddpfPixelFormat %s\n", DumpPixelFormat((LPDDSURFACEDESC2)lpDDSurfaceDesc)); #ifdef FULLHEXDUMP diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index 0811309..3ab5828 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -106,7 +106,7 @@ static char *Flag5Names[32]={ static char *Flag6Names[32]={ "FORCESWAPEFFECT", "LEGACYALLOC", "NODESTROYWINDOW", "NOMOVIES", - "SUPPRESSRELEASE", "", "", "", + "SUPPRESSRELEASE", "FIXMOVIESCOLOR", "WOW64REGISTRY", "", "", "", "", "", "", "", "", "", "", "", "", "", @@ -1375,8 +1375,10 @@ void HookModule(HMODULE base, int dxversion) (dxw.dwFlags4 & OVERRIDEREGISTRY) || (dxw.dwTFlags & OUTREGISTRY)) HookAdvApi32(base); HookMSV4WLibs(base); // -- used by Aliens & Amazons demo: what for? + HookAVIFil32(base); //HookSmackW32(base); //HookDirectSound(base); + //HookComDlg32(base); } #define USEWINNLSENABLE diff --git a/dll/dxhook.h b/dll/dxhook.h index acaf554..ecce047 100644 --- a/dll/dxhook.h +++ b/dll/dxhook.h @@ -13,6 +13,8 @@ extern void HookWinMM(HMODULE); extern void HookAdvApi32(HMODULE); extern void HookImagehlp(HMODULE); extern void HookSmackW32(HMODULE); +extern void HookAVIFil32(HMODULE); +extern void HookComDlg32(HMODULE); extern void InitPosition(int, int, int, int, int, int); //void InitWindowPos(int, int, int, int); diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp index 587f36c..5a60ffe 100644 --- a/dll/dxwcore.cpp +++ b/dll/dxwcore.cpp @@ -1,4 +1,5 @@ #define _CRT_SECURE_NO_WARNINGS +#define SYSLIBNAMES_DEFINES #include #include "dxwnd.h" @@ -1428,45 +1429,7 @@ int dxwCore::GetDLLIndex(char *lpFileName) { int idx; char *lpName, *lpNext; - char *SysNames[]={ - "kernel32", - "USER32", - "GDI32", - "imelib", - "ADVAPI32", - "ole32", - "ddraw", - "d3d8", - "d3d9", - "d3d10", - "d3d10_1", - "d3d11", - "opengl32", - "msvfw32", - "smackw32", - "version", - "dplayx", - "dsound", - "winmm", - "imm32", - "wsock32", - "dinput", - "dinput8", - "shfolder", - "shell32", - "ws2_32", - "tapi32", - "netapi32", - "wintrust", - "d3dim", - "d3dim700", - "imagehlp", -// "+glide", -// "+glide2x", -// "+glide3x", - NULL - }; - + lpName=lpFileName; while (lpNext=strchr(lpName,'\\')) lpName=lpNext+1; for(idx=0; SysNames[idx]; idx++){ diff --git a/dll/dxwcore.hpp b/dll/dxwcore.hpp index 3dea15a..9a01f44 100644 --- a/dll/dxwcore.hpp +++ b/dll/dxwcore.hpp @@ -284,9 +284,54 @@ typedef enum { // SYSLIBIDX_GLIDE, // SYSLIBIDX_GLIDE2X, // SYSLIBIDX_GLIDE3X, + SYSLIBIDX_COMDLG32, SYSLIBIDX_MAX } enum_syslibraries; +#ifdef SYSLIBNAMES_DEFINES +char *SysNames[]={ + "kernel32", + "USER32", + "GDI32", + "imelib", + "ADVAPI32", + "ole32", + "ddraw", + "d3d8", + "d3d9", + "d3d10", + "d3d10_1", + "d3d11", + "opengl32", + "msvfw32", + "smackw32", + "version", + "dplayx", + "dsound", + "winmm", + "imm32", + "wsock32", + "dinput", + "dinput8", + "shfolder", + "shell32", + "ws2_32", + "tapi32", + "netapi32", + "wintrust", + "d3dim", + "d3dim700", + "imagehlp", +// "+glide", +// "+glide2x", +// "+glide3x", + "comdlg32", + NULL +}; +#else +extern char *SysNames[]; +#endif + typedef enum { DXVK_NONE=0, DXVK_CLIPTOGGLE, diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index 7b07040..b5f476f 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.25" +#define VERSION "2.03.26" #define DDTHREADLOCK 1 //#define LOCKTHREADS diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 1155ddf1fe93b3de4302dcd693ce4ba21ec71e74..569382729256acdf407b99a5197a24c61831dcd6 100644 GIT binary patch delta 16205 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 diff --git a/dll/dxwnd.vs2008.vcproj b/dll/dxwnd.vs2008.vcproj index de9bd1a..ccc6767 100644 --- a/dll/dxwnd.vs2008.vcproj +++ b/dll/dxwnd.vs2008.vcproj @@ -229,6 +229,10 @@ RelativePath=".\avifile.cpp" > + + diff --git a/dll/gdi32.cpp b/dll/gdi32.cpp index ca52881..a3698b7 100644 --- a/dll/gdi32.cpp +++ b/dll/gdi32.cpp @@ -724,7 +724,6 @@ HDC WINAPI extGDICreateCompatibleDC(HDC hdc) BOOL WINAPI extGDIBitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop) { BOOL res; - extern BOOL isWithinDialog; OutTraceDW("GDI.BitBlt: HDC=%x nXDest=%d nYDest=%d nWidth=%d nHeight=%d hdcSrc=%x nXSrc=%d nYSrc=%d dwRop=%x(%s)\n", hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, dwRop, ExplainROP(dwRop)); diff --git a/dll/msvfw.cpp b/dll/msvfw.cpp index f39bc68..fff3eb5 100644 --- a/dll/msvfw.cpp +++ b/dll/msvfw.cpp @@ -14,6 +14,7 @@ static HookEntry_Type Hooks[]={ //{HOOK_HOT_CANDIDATE, "ICSendMessage", (FARPROC)NULL, (FARPROC *)&pICSendMessage, (FARPROC)extICSendMessage}, //{HOOK_HOT_CANDIDATE, "ICOpen", (FARPROC)NULL, (FARPROC *)&pICOpen, (FARPROC)extICOpen}, //{HOOK_HOT_CANDIDATE, "MCIWndCreateA", (FARPROC)NULL, (FARPROC *)&pMCIWndCreateA, (FARPROC)extMCIWndCreateA}, // "Man in Black" - beware: this is NOT STDCALL!!! + {HOOK_HOT_CANDIDATE, "ICGetDisplayFormat", (FARPROC)NULL, (FARPROC *)&pICGetDisplayFormat, (FARPROC)extICGetDisplayFormat}, // "Man in Black" - beware: this is NOT STDCALL!!! {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator }; @@ -176,4 +177,24 @@ HWND extMCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCTS } return g_hwndMCIWnd; +} + +HIC WINAPI extICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy) +{ + HIC ret; + OutTraceDW("ICGetDisplayFormat: hic=%x bitdepth=%d dx=%d dy=%d indepth=%d\n", hic, BitDepth, dx, dy, lpbiIn->biBitCount); + + ret=(*pICGetDisplayFormat)(hic, lpbiIn, lpbiOut, BitDepth, dx, dy); + if(ret){ + OutTraceDW("ICGetDisplayFormat: ret=%x outdepth=%d\n", hic, lpbiOut->biBitCount); + if(dxw.dwFlags6 & FIXMOVIESCOLOR){ + lpbiOut->biBitCount = (WORD)dxw.VirtualPixelFormat.dwRGBBitCount; + OutTraceDW("ICGetDisplayFormat: FIXED outdepth=%d\n", lpbiOut->biBitCount); + } + } + else { + OutTraceDW("ICGetDisplayFormat ERROR: err=%d\n", GetLastError()); + } + + return ret; } \ No newline at end of file diff --git a/dll/msvfwhook.h b/dll/msvfwhook.h index 99d3e5c..759a0fa 100644 --- a/dll/msvfwhook.h +++ b/dll/msvfwhook.h @@ -5,11 +5,13 @@ extern void HookMSV4WLibs(HMODULE); typedef LRESULT (WINAPI * ICSendMessage_Type)(HIC, UINT, DWORD_PTR, DWORD_PTR); typedef HIC (WINAPI *ICOpen_Type)(DWORD, DWORD, UINT); +typedef HIC (WINAPI *ICGetDisplayFormat_Type)(HIC, LPBITMAPINFOHEADER, LPBITMAPINFOHEADER, int, int, int); //typedef HWND (WINAPI *MCIWndCreateA_Type)(HWND, HINSTANCE, DWORD, LPCTSTR); typedef HWND (*MCIWndCreateA_Type)(HWND, HINSTANCE, DWORD, LPCTSTR); extern LRESULT WINAPI extICSendMessage(HIC, UINT, DWORD_PTR, DWORD_PTR); extern HIC WINAPI extICOpen(DWORD, DWORD, UINT); +extern HIC WINAPI extICGetDisplayFormat(HIC, LPBITMAPINFOHEADER, LPBITMAPINFOHEADER, int, int, int); //extern HWND WINAPI extMCIWndCreateA(HWND, HINSTANCE, DWORD, LPCTSTR); extern HWND extMCIWndCreateA(HWND, HINSTANCE, DWORD, LPCTSTR); @@ -28,4 +30,5 @@ extern HWND extMCIWndCreateA(HWND, HINSTANCE, DWORD, LPCTSTR); // MSVFW32.dll: DXWEXTERN ICSendMessage_Type pICSendMessage DXWINITIALIZED; DXWEXTERN ICOpen_Type pICOpen DXWINITIALIZED; +DXWEXTERN ICGetDisplayFormat_Type pICGetDisplayFormat; DXWEXTERN MCIWndCreateA_Type pMCIWndCreateA DXWINITIALIZED; diff --git a/dll/user32.cpp b/dll/user32.cpp index caf2d76..622fb68 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -63,6 +63,10 @@ typedef BOOL (WINAPI *CloseDesktop_Type)(HDESK); CloseDesktop_Type pCloseDesktop = NULL; BOOL WINAPI extCloseDesktop(HDESK); +typedef INT_PTR (WINAPI *DialogBoxParamA_Type)(HINSTANCE, LPCTSTR, HWND, DLGPROC, LPARAM); +DialogBoxParamA_Type pDialogBoxParamA = NULL; +INT_PTR WINAPI extDialogBoxParamA(HINSTANCE, LPCTSTR, HWND, DLGPROC, LPARAM); + #ifdef TRACEPALETTE typedef UINT (WINAPI *GetDIBColorTable_Type)(HDC, UINT, UINT, RGBQUAD *); GetDIBColorTable_Type pGetDIBColorTable = NULL; @@ -143,6 +147,8 @@ static HookEntry_Type Hooks[]={ {HOOK_HOT_CANDIDATE, "BeginPaint", (FARPROC)BeginPaint, (FARPROC *)&pBeginPaint, (FARPROC)extBeginPaint}, {HOOK_HOT_CANDIDATE, "EndPaint", (FARPROC)EndPaint, (FARPROC *)&pEndPaint, (FARPROC)extEndPaint}, + {HOOK_IAT_CANDIDATE, "DialogBoxParamA", (FARPROC)NULL, (FARPROC *)&pDialogBoxParamA, (FARPROC)extDialogBoxParamA}, + {HOOK_IAT_CANDIDATE, 0, NULL, 0, 0} // terminator }; @@ -309,7 +315,6 @@ static void Stopper(char *s, int line) // PrimHDC: DC handle of the selected DirectDraw primary surface. NULL when invalid. HDC PrimHDC=NULL; -BOOL isWithinDialog=FALSE; LPRECT lpClipRegion=NULL; RECT ClipRegion; int LastCurPosX, LastCurPosY; @@ -2095,11 +2100,13 @@ BOOL WINAPI extEndPaint(HWND hwnd, const PAINTSTRUCT *lpPaint) HWND WINAPI extCreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM lParamInit) { HWND RetHWND; - isWithinDialog=TRUE; + BOOL FullScreen; + FullScreen = dxw.IsFullScreen(); OutTraceDW("CreateDialogIndirectParam: hInstance=%x lpTemplate=%s hWndParent=%x lpDialogFunc=%x lParamInit=%x\n", hInstance, "tbd", hWndParent, lpDialogFunc, lParamInit); if(dxw.IsFullScreen() && hWndParent==NULL) hWndParent=dxw.GethWnd(); RetHWND=(*pCreateDialogIndirectParam)(hInstance, lpTemplate, hWndParent, lpDialogFunc, lParamInit); + dxw.SetFullScreen(FullScreen); // v2.02.73: redirect lpDialogFunc only when it is nor NULL if(lpDialogFunc) { @@ -2109,19 +2116,19 @@ HWND WINAPI extCreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpT } OutTraceDW("CreateDialogIndirectParam: hwnd=%x\n", RetHWND); - isWithinDialog=FALSE; - //if (IsDebug) EnumChildWindows(RetHWND, (WNDENUMPROC)TraceChildWin, (LPARAM)RetHWND); return RetHWND; } HWND WINAPI extCreateDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM lParamInit) { HWND RetHWND; - isWithinDialog=TRUE; + BOOL FullScreen; + FullScreen = dxw.IsFullScreen(); OutTraceDW("CreateDialogParam: hInstance=%x lpTemplateName=%s hWndParent=%x lpDialogFunc=%x lParamInit=%x\n", hInstance, "tbd", hWndParent, lpDialogFunc, lParamInit); if(hWndParent==NULL) hWndParent=dxw.GethWnd(); RetHWND=(*pCreateDialogParam)(hInstance, lpTemplateName, hWndParent, lpDialogFunc, lParamInit); + dxw.SetFullScreen(FullScreen); // v2.02.73: redirect lpDialogFunc only when it is nor NULL: fix for "LEGO Stunt Rally" if(lpDialogFunc) { @@ -2131,16 +2138,14 @@ HWND WINAPI extCreateDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HW } OutTraceDW("CreateDialogParam: hwnd=%x\n", RetHWND); - isWithinDialog=FALSE; - //if (IsDebug) EnumChildWindows(RetHWND, (WNDENUMPROC)TraceChildWin, (LPARAM)RetHWND); return RetHWND; } BOOL WINAPI extMoveWindow(HWND hwnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint) { BOOL ret; - OutTraceDW("MoveWindow: hwnd=%x xy=(%d,%d) size=(%d,%d) repaint=%x indialog=%x fullscreen=%x\n", - hwnd, X, Y, nWidth, nHeight, bRepaint, isWithinDialog, dxw.IsFullScreen()); + OutTraceDW("MoveWindow: hwnd=%x xy=(%d,%d) size=(%d,%d) repaint=%x fullscreen=%x\n", + hwnd, X, Y, nWidth, nHeight, bRepaint, dxw.IsFullScreen()); if(dxw.Windowize){ if(dxw.IsDesktop(hwnd)){ @@ -2940,4 +2945,16 @@ BOOL WINAPI extCloseDesktop(HDESK hDesktop) { OutTraceDW("CloseDesktop: SUPPRESS hDesktop=%x\n", hDesktop); return TRUE; -} \ No newline at end of file +} + +INT_PTR WINAPI extDialogBoxParamA(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam) +{ + BOOL ret, FullScreen; + FullScreen = dxw.IsFullScreen(); + OutTraceDW("DialogBoxParamA: FullScreen=%x\n", FullScreen); + dxw.SetFullScreen(FALSE); + ret = (*pDialogBoxParamA)(hInstance, lpTemplateName, hWndParent, lpDialogFunc, dwInitParam); + dxw.SetFullScreen(FullScreen); + OutTraceDW("DialogBoxParamA: ret=%x\n", ret); + return ret; +} diff --git a/host/TabCompat.cpp b/host/TabCompat.cpp index abce254..253a5de 100644 --- a/host/TabCompat.cpp +++ b/host/TabCompat.cpp @@ -47,6 +47,7 @@ void CTabCompat::DoDataExchange(CDataExchange* pDX) // Registry management DDX_Check(pDX, IDC_EMULATEREGISTRY, cTarget->m_EmulateRegistry); DDX_Check(pDX, IDC_OVERRIDEREGISTRY, cTarget->m_OverrideRegistry); + DDX_Check(pDX, IDC_WOW64REGISTRY, cTarget->m_Wow64Registry); } BEGIN_MESSAGE_MAP(CTabCompat, CDialog) diff --git a/host/TabSysLibs.cpp b/host/TabSysLibs.cpp index 83f4944..e41fa2e 100644 --- a/host/TabSysLibs.cpp +++ b/host/TabSysLibs.cpp @@ -41,6 +41,7 @@ void CTabSysLibs::DoDataExchange(CDataExchange* pDX) // MCI DDX_Check(pDX, IDC_REMAPMCI, cTarget->m_RemapMCI); DDX_Check(pDX, IDC_NOMOVIES, cTarget->m_NoMovies); + DDX_Check(pDX, IDC_FIXMOVIESCOLOR, cTarget->m_FixMoviesColor); // Kernel32 DDX_Radio(pDX, IDC_SONDEFAULT, cTarget->m_SonProcessMode); diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index b43bfe7..2c33c6f 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -87,6 +87,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_HookEnabled = TRUE; // default true !! m_EmulateRegistry = FALSE; m_OverrideRegistry = FALSE; + m_Wow64Registry = FALSE; m_FullScreenOnly = FALSE; m_FilterMessages = FALSE; m_PeekAllMessages = FALSE; @@ -112,6 +113,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_HookGlide = FALSE; m_RemapMCI = TRUE; m_NoMovies = FALSE; + m_FixMoviesColor = FALSE; m_SuppressRelease = FALSE; m_KeepCursorWithin = FALSE; m_KeepCursorFixed = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 85be721..084ab4c 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -57,6 +57,7 @@ public: BOOL m_HookDLLs; BOOL m_EmulateRegistry; BOOL m_OverrideRegistry; + BOOL m_Wow64Registry; BOOL m_FullScreenOnly; BOOL m_FilterMessages; BOOL m_PeekAllMessages; @@ -88,6 +89,7 @@ public: BOOL m_HookGlide; BOOL m_RemapMCI; BOOL m_NoMovies; + BOOL m_FixMoviesColor; BOOL m_SuppressRelease; BOOL m_KeepCursorWithin; BOOL m_KeepCursorFixed; diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index 731ced817c26f946fd4e0c57911ece02779d7331..11e1fb70dd5f7df568a417753d99d7b9080e4d0f 100644 GIT binary patch delta 3340 zcmZuzdr*|u6~E^a7K23B3M~8H1pyNQ_d#G$c`UmNyRz&q?D9|+)~NW1sMr`o5+1%M ziPX^^liOz0+BR)XYtzTJ;>3iY=^t%l5>Z=iqsGpd8E3RzV^motIrd51^vNhVzt>Thzf|$9cv7_eRa!--Bw<1B{>r0_V_&!j|AC>T7sNz zx3snsjkNZ(hj^ZZrj%$Uthps1Y08OCT8ENAii7C!u6k~_A%Wk|@30VK0+TmzScxeC zJg|eqM$8h(8))+f>%}gPa*``y5ofp|*5LE|CA5O%;d+f3=AmIs5BXR#mIVd)fhN1C zP*Qt?!G>5k5)27-MH!hdp*&|y z_UCa9i=7lps8mqM*%B7haaf)vC0KGs4-4_2HiudOH=W5Ywn|EOyE7DudD?vup|o0v zO@hPDR*y(6fmUM2FSXk2QaPe6;O3=Dl$|_{MqQ4oOrpdHl5=oa9i$usIu$su@vI6e za8Rc%TqNm2e6Yc0X-AulEKXqZ{2VqrS%Raw9H_+0x?I%jb8!0_MJlh(R*p4#^%J(z z+K`x?!{#70Xwa)L`e6n*C2v4Kv$QsmPYliNscos3r|Pg?x2{q!(K|< z_?})19=!dbMpGwg5_HVv4<=@4FDLbwVbE&4K-}$Z{QR1If%=#)P!}X+7K_D3eCRZ& z=~BRf^D5c^_~v;n`0=1Y2aWiSL6;H$g692m@rFS`gMj*RJq-cYjH{ptjYb`91{@sM z(lFqU#tjg`7mfOq79R87{v4bbSI}0#^b30023X8ZJ7DO7mM#O_a=~C+{!md7PjjO$ z;N(9aUYX58I!H zb+8(j^LsbGz=<`0D-Niz>XM>lZDPBKvo_Y~^aaE=b~{;jA8qxyJa=!s;xj`&QLgJcgI}8K%_b7 z4-+eS3Gd|^;bqk4nV=u5@{BNmU3oefjK7@ctd5^v*+QWP=XBSD^y-Um=?+rK{Wt;O zFVd;S7t@w+|y5{Yu+uW$B3f{XvJcWz3;r2)XE z9z(o#Yd_#`cBpXl`S}S3HvWFw&*fM+5+Ca;m!sj2@i{NOCNql9VIG;B#NI<$_-VgV zPWpvN>WJG0_9bH|ULL%x{MKvyGMa~s_~)T+c}IP`emg(Sf}z>?j~!()Scy;WTrB$@ z9GvnS@#0RGjCY`AS6wm*9@zDi>>KdXuEK<$W=s)P+k3Wjbh}CK>BNPabIq@aG zdix2LkbG;R;vZxD+Np`!_|>o9%%_u+tj`PuETaZyuy+=Kf}Jo!x`0oaVJB0}hFQ#; z3(E!aRxW&>75TVubT${d^I(vjRDzOS$b%a!I!_Qvemgr4h7&|rKFnt)y`W6rMfQ+2 ze7Zc%v3xKj=uh%tHT%1VXQ(ZJUN&ZfRQ8z%W{#XKfZUw4sDcm^AuQHK)l8WVN>DN9 zcVICKRr3-#5v_(YHjxS0Y^e(}veF0%DTs#*lehRzgkRf9gx#y=VK=H_7LOSDsv1nG z%%2Gv4aZ0i*+kMwlz&ACWteo6t$e=*o?#h@kv07KaFPvQ1OV4uGL>iS#!yuJNGoWd`V6iVfN_3;csb`K?aF6Ms^ z@m%X42DV@ys0)R-{YX+QzB?Zkn|=vw@;Io|j`PT()4*oF%gYdp`R9_6{1Kfda^AHh z&l{YEH+{)7-;p!xCV_o@PtKg96q67Q&YU(f)12ga1Jh(y+9>;vg{spsIT;!Pwr~*C zYjgP`Q|fjW&-|(gB$fw8C-__Mikb!g+9SM3_TP_^{P48=S66|3`Wf#@i0}Lx*hjp< zda<}Qk&HYrZRE|_q9?KQ!D;y$CdxiA$~|4RQg)g*SST`IsZB;6dL%NPBPJJRx1F?@ zDOb_QQdaQQf?8Uv$l}xwTx{toYNO{}Y;YBSH2dA`sIXVuY*g5G54$exSRI=X_D(%B ztmZbOfmI3nrv}y~Y>l4{N;b%j3VSoiMui=2V%LQ&YGxC{zS7DJ-Q0RRSXDRG{2wxa Bh(iDX delta 2904 zcmZuz3v5%@89x7U;?R%*g*+U`uRLLtCf9Zz4wNR2?{(tXv5oDJ0D%iMp)^n)ZP!vt zAwU9K5U-vtXIi_$rWP?;i6U>xT6G#JZB-sx0|X6eRLZn&n);I1v})5>v;Q1l2-9ZC z{=fhG{+IuIe6J_3JaF^U1IN??-zrLa7x$<;y0-N8JnPXFukNX1w|84+5JJk<6H>ts z_fY4#AN|#`NAHNKq2LPQ^)xiNNfD5cs;gQ=OKFnw5R0Vzsw#aiDVDz09goBknV4E) zm0Y4TDq|W*iS*-l2_La#i2Hgq61(8m>+$JsK7}|kfkr!@n>aJXef@kM;*#X@kk%E6 zwThm;22v`yls_5P!=Xq-vW=t+2z#xsm<^maLpeKi-dGD{?ghN;e^%xffy;sI9kzBTAIQo5olP9QZeshzH`YRPaa7MDUTsgr_O(cL}y+&)qd?8N(p(7^WE ziduX!BotM(ZUu*k$K*bI9ye)}O8h>~Ll$Q^W9dGRmn;G1yii0R0oHt>6qd5R_9C{( zo(GRg6i3t~(ZvgS(2S@I{0u&@(iUK)9~AlmvS1hXk9FxCp=hWhv{HU$ZyizZ*AiMX zl{thyZ#~i2EQf^#fgK&U(pF$+$BUqi^*D;HAs}kE*mEKjZPmN{xYc?^QEEv$JL<4O zn7xIc5q8mGqaDEduUcso*zi?5#8|1*Vv6G#I({Ud#hqrl4A>V}OK1XE-ZckJ0#mNp zOeqZb>WF0q7IoK=PGHYnvzwM9S$(uHN01Gqi#_PFK{u;*Ibj8hy6mu$ZFV_e6+47{ z4?FF$nO0-Q_|bg!+I2Hs1MJN8642Qc%4?ae)K1p{n>Ash>#^rV34ILMvWXIB?|*%@ zq}Jh&w~3WtSFfA&vA0Vduz`J2T0kEMc6Fj4xG|HE^0(-rXuMNy0{8mFG_8gbS|HUe zOVpG8`vk8l$p*5C`OAumHcv}<_>)p=Bu}!fWd-e9rnNwsXyXcnR6OEB@RIGo{&2%q{nT_?G?vn2ui85DG!We%PwHM(55%IWL@bgdZt^^{ zlsjQ3^Od{c1-1h5F7|x64PH!-l>3{~H`k{q{w^QxYXx~zOdsxx(F|mNfBcsQy0G!O zfzCehg@MxjV+K0Bsm(xNZ+gT)fz1~)C|&vF(?-GcxvgzruyeQ1Gi9JSWw6PSUh~W@ zV7I@wAj86@wD;LlMk2hD{@acQBNftVb?305m_LOIGBw3czFhF&|Gml6KZ@$Ubl;1I z?&cGgyXSZ8n>~AsPS*6%fz2>C8cVK7rnC;Nqch@9X)1Y(-QJVWa`)96aZA|BeM<}+ zU}x{)Fw5E>F!&X0-Tt6~OW4@{g$A~!L%{w5pb3^4UArU_6@HTt!KxHNaYS>5j zu#(O`cqkWtYR8VNP?x@OJSQ7wvQJ0KVO1LV=6t4iTGMa5dE`6k#5>=#q+9R2Qb`Hn zpOr$DRS)9>RK9Wui8GQzULrg2VxV482K#72=cmhHgNUC~4lmKEI{tb&3{y40l?wQp z26XPKgdfvXh`(0}^;VHNT`!01CqraIre0nZIB1W`7gfPiBJX4s?8dxN*L+YckjIxb zK@Al0y-lFesVV+(6V#&}X@+XyD$TGE?PyOkxU%U)7XPgV)sWAx&WEL=i-XW&;^!lf zKYA+!rvS$t9SlRe1mh8$TQI#b_?Z9)XCz>BMuHCHLK*)-4?YYh`8oXekp0jiLTdSq z9$F5A{GY-o+`gJR%`^K586V*-t7#d%^Dh>?W90*@X%<~D#dc0v`ANi3%iq9IQ2B>w zOjiK7lS1*x8kAf-dku1VIl%QCDCW&b(qH88;2P?HIlK==>@*|{RuRUh!<NW z{t;S}lE9IZINqdAvrM&&kE4FW;|A;TM{06%n-Kp(n9)i3qR0{C7ucJQ)o@&0W6_X z+;T5&Ij&OPq|xG$K3wvzG;Zz_BL#VtuvzUqh}QI8JLPYNF=aqR`NI5wP<>H;N~pJ@ olwXdCfWetJQU~=Md&CPp$Sa3})2vVB- zU^|O?1%m=ZE<-*;8AB#RDnl`lmki|P0C5qJodOgqU?^e8m|VDASlAcnh%lfvt_;CI zi~JdU82l$Y7OGATh&7nb$Hd6SZVYsr4uj?7#KWSK`=XU5A6U$?U5c4;O~d2})g{w2 HS{S_m#RWa( delta 44 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 diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index 7179486..b1a731b 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -173,6 +173,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_HookDLLs) t->flags3 |= HOOKDLLS; if(dlg->m_EmulateRegistry) t->flags3 |= EMULATEREGISTRY; if(dlg->m_OverrideRegistry) t->flags4 |= OVERRIDEREGISTRY; + if(dlg->m_Wow64Registry) t->flags6 |= WOW64REGISTRY; if(dlg->m_HookEnabled) t->flags3 |= HOOKENABLED; if(dlg->m_NoBanner) t->flags2 |= NOBANNER; if(dlg->m_StartDebug) t->flags2 |= STARTDEBUG; @@ -308,6 +309,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_HookGlide) t->flags4 |= HOOKGLIDE; if(dlg->m_RemapMCI) t->flags5 |= REMAPMCI; if(dlg->m_NoMovies) t->flags6 |= NOMOVIES; + if(dlg->m_FixMoviesColor) t->flags6 |= FIXMOVIESCOLOR; if(dlg->m_SuppressRelease) t->flags6 |= SUPPRESSRELEASE; if(dlg->m_KeepCursorWithin) t->flags |= KEEPCURSORWITHIN; if(dlg->m_KeepCursorFixed) t->flags2 |= KEEPCURSORFIXED; @@ -405,6 +407,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_HookDLLs = t->flags3 & HOOKDLLS ? 1 : 0; dlg->m_EmulateRegistry = t->flags3 & EMULATEREGISTRY ? 1 : 0; dlg->m_OverrideRegistry = t->flags4 & OVERRIDEREGISTRY ? 1 : 0; + dlg->m_Wow64Registry = t->flags6 & WOW64REGISTRY ? 1 : 0; dlg->m_HookEnabled = t->flags3 & HOOKENABLED ? 1 : 0; dlg->m_NoBanner = t->flags2 & NOBANNER ? 1 : 0; dlg->m_StartDebug = t->flags2 & STARTDEBUG ? 1 : 0; @@ -526,6 +529,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_HookGlide = t->flags4 & HOOKGLIDE ? 1 : 0; dlg->m_RemapMCI = t->flags5 & REMAPMCI ? 1 : 0; dlg->m_NoMovies = t->flags6 & NOMOVIES ? 1 : 0; + dlg->m_FixMoviesColor = t->flags6 & FIXMOVIESCOLOR ? 1 : 0; dlg->m_SuppressRelease = t->flags6 & SUPPRESSRELEASE ? 1 : 0; dlg->m_KeepCursorWithin = t->flags & KEEPCURSORWITHIN ? 1 : 0; dlg->m_KeepCursorFixed = t->flags2 & KEEPCURSORFIXED ? 1 : 0; diff --git a/host/resource b/host/resource index 7f616934cf5c2470a284fd79bf5a85a03b041354..7098e47deac62cd75a559a979972e90b4e9a174f 100644 GIT binary patch delta 82 zcmV-Y0ImPjj{=O50q>d`$%aa)1fl diff --git a/to do 24.txt b/to do 24.txt new file mode 100644 index 0000000..9e81c6b --- /dev/null +++ b/to do 24.txt @@ -0,0 +1,26 @@ +Rotture di AERO: Worms Pinball, Sim City 3000 + +regolazione luminosita + +scrolling decelerato + +CONTROLLO MOUSE IN gIOVANNA d'aRCO + +Tetris Worlds - va in crash, come mai??? + +Thief dark project GOLD GOG + +Thorgal (lock after movies) + +Total annihilation kingdoms ,,,,,, -> native modes / SVGA modes !!!! EnumDisplayModesD + +Total immersion racing + +Total soccer (directx) + +Risk II (hasbro) + +Sid Meier's Alpha Centauri (GOG) + +GetMessagePos() hook in Settlers III ??? + diff --git a/todo.txt.txt b/todo.txt.txt new file mode 100644 index 0000000..54cfcd0 --- /dev/null +++ b/todo.txt.txt @@ -0,0 +1,8 @@ +darius gaiden - CoCreateInstance used instead of DirectDrawCreate??? fixed + +Crimson Skies - fixed + +Echelon ??? + +Forsaken: why the Viewport::Clear method crashes? see d3d7.cpp +dipende dall' aver attivato AEROBOOST. Tolto quello, va ..... \ No newline at end of file