mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_03_26_src
Former-commit-id: 51365996729c3c348ae3dfc5911e5f6b364f1ca7
This commit is contained in:
parent
6b20484cd8
commit
f479c25e2e
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:56ab101cb2b224e431663b2780b0f9909105b05d8224c9aaf04fce73f4478f2c
|
||||
size 576000
|
||||
oid sha256:4ab5dd831d56508ccd5cbbda6a530cd2590513f33e24d99218eda96a1c592d5f
|
||||
size 578048
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4689f5e3e9616fb6a9cffaa580a02ca3aceb4364593deeb30b373e1e6f0d0696
|
||||
size 539648
|
||||
oid sha256:1520acef3baabbb9746fcc7f4e3ef6e485a67880b7c1503d9abf37097bfdd4ab
|
||||
size 540160
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
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.
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
87
dll/comdlg32.cpp
Normal file
87
dll/comdlg32.cpp
Normal file
@ -0,0 +1,87 @@
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
|
||||
#include <stdio.h>
|
||||
#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;
|
||||
}
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -1,4 +1,5 @@
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#define SYSLIBNAMES_DEFINES
|
||||
|
||||
#include <stdio.h>
|
||||
#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++){
|
||||
|
@ -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,
|
||||
|
@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "TlHelp32.h"
|
||||
|
||||
#define VERSION "2.03.25"
|
||||
#define VERSION "2.03.26"
|
||||
|
||||
#define DDTHREADLOCK 1
|
||||
//#define LOCKTHREADS
|
||||
|
Binary file not shown.
@ -229,6 +229,10 @@
|
||||
RelativePath=".\avifile.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\comdlg32.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\d3dtexture.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));
|
||||
|
@ -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;
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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;
|
||||
|
BIN
host/resource
BIN
host/resource
Binary file not shown.
26
to do 24.txt
Normal file
26
to do 24.txt
Normal file
@ -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 ???
|
||||
|
8
todo.txt.txt
Normal file
8
todo.txt.txt
Normal file
@ -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 .....
|
Loading…
x
Reference in New Issue
Block a user