mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_02_76_src
Former-commit-id: e638d38fb9407ba82b1423e5596ccadd84aaecd3
This commit is contained in:
parent
8e93278b0c
commit
46fe2cb28f
@ -143,6 +143,7 @@
|
|||||||
#define ENABLEHOTKEYS 0x08000000 // Enables hot keys
|
#define ENABLEHOTKEYS 0x08000000 // Enables hot keys
|
||||||
#define HOTPATCHALWAYS 0x10000000 // Force hot patching to every call
|
#define HOTPATCHALWAYS 0x10000000 // Force hot patching to every call
|
||||||
#define NOD3DRESET 0x20000000 // Disables D3D8/9 D3DDevice::Reset method
|
#define NOD3DRESET 0x20000000 // Disables D3D8/9 D3DDevice::Reset method
|
||||||
|
#define OVERRIDEREGISTRY 0x40000000 // same as EMULATEREGISTRY, but fake keys takeprecedence
|
||||||
|
|
||||||
// logging Tflags DWORD:
|
// logging Tflags DWORD:
|
||||||
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general
|
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:0abd5d664eea54b2046da9cf7c3b556569a5bbd8c65eb87e1b088dff67641ef1
|
oid sha256:cb95d0f4d937aa39bf29f2fdcc106f4999dff564dbb4b323be38fd9e106184fd
|
||||||
size 483840
|
size 483840
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:11f3d90b87b33ec400bd96219a0786300f2dbd21935e72a2b859317f887696e0
|
oid sha256:14c815ffe23493c0f2ea72905d50b6972fcf35e78b827e243865b327d2ce7ac8
|
||||||
size 540160
|
size 540160
|
||||||
|
10
build/dxwnd.reg
Normal file
10
build/dxwnd.reg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Requiem Avenging Angel: DirectX version patch
|
||||||
|
|
||||||
|
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\DirectX]
|
||||||
|
"Version"="4.07.00.0704"
|
||||||
|
|
||||||
|
[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectX]
|
||||||
|
"Version"="4.07.00.0704"
|
||||||
|
|
||||||
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX]
|
||||||
|
"Version"="4.07.00.0704"
|
27
build/exports/Requiem Avenging Angel (software).dxw
Normal file
27
build/exports/Requiem Avenging Angel (software).dxw
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
[target]
|
||||||
|
title0=Requiem Avenging Angel (software)
|
||||||
|
path0=D:\Games\Requiem Avenging Angel\Software.exe
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=-1199570906
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=1212153860
|
||||||
|
tflag0=6914
|
||||||
|
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
|
@ -500,3 +500,7 @@ added: "Suppress D3D8/9 Reset" flag
|
|||||||
fix: improved show FPS and Time Stretch overlay so that the two overlays won't overlap each other
|
fix: improved show FPS and Time Stretch overlay so that the two overlays won't overlap each other
|
||||||
fix: bug in ddraw "Locked surface" mode preventing output on screen
|
fix: bug in ddraw "Locked surface" mode preventing output on screen
|
||||||
fix: fixed bug in critical common portion of the code that was crashing even unhooked programs (namely, Flash Player, ...)
|
fix: fixed bug in critical common portion of the code that was crashing even unhooked programs (namely, Flash Player, ...)
|
||||||
|
|
||||||
|
v2.02.76
|
||||||
|
fixed and enhanced several features about registry emulation: added flags "Emulate registry" (to add missing entries) and "Override registry" (to fake existing entries with different values). Fixed "Requiem Avenging Angel" DirectX bogus check bug.
|
||||||
|
fixed bug in emulate surface palette handling affecting "Requiem Avenging Angel" colors
|
@ -49,8 +49,56 @@ static char *hKey2String(HKEY hKey)
|
|||||||
return skey;
|
return skey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static FILE *OpenFakeRegistry()
|
||||||
|
{
|
||||||
|
DWORD dwAttrib;
|
||||||
|
char sSourcePath[MAX_PATH+1];
|
||||||
|
char *p;
|
||||||
|
dwAttrib = GetFileAttributes("dxwnd.dll");
|
||||||
|
if (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)) return NULL;
|
||||||
|
GetModuleFileName(GetModuleHandle("dxwnd"), sSourcePath, MAX_PATH);
|
||||||
|
p=&sSourcePath[strlen(sSourcePath)-strlen("dxwnd.dll")];
|
||||||
|
strcpy(p, "dxwnd.reg");
|
||||||
|
return fopen(sSourcePath,"r");
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
static LONG myRegOpenKeyEx(
|
||||||
|
HKEY hKey,
|
||||||
|
LPCTSTR lpSubKey,
|
||||||
|
PHKEY phkResult)
|
||||||
|
{
|
||||||
|
FILE *regf;
|
||||||
|
char sKey[MAX_PATH+1];
|
||||||
|
char RegBuf[MAX_PATH+1];
|
||||||
|
|
||||||
|
sprintf(sKey,"%s\\%s", hKey2String(hKey), lpSubKey);
|
||||||
|
OutTraceDW("RegOpenKeyEx: searching for key=\"%s\"\n", sKey);
|
||||||
|
|
||||||
|
regf=OpenFakeRegistry();
|
||||||
|
if(regf!=NULL){
|
||||||
|
if(phkResult) *phkResult=HKEY_FAKE;
|
||||||
|
fgets(RegBuf, 256, regf);
|
||||||
|
while (!feof(regf)){
|
||||||
|
if(RegBuf[0]=='['){
|
||||||
|
if((!strncmp(&RegBuf[1],sKey,strlen(sKey))) && (RegBuf[strlen(sKey)+1]==']')){
|
||||||
|
OutTrace("RegOpenKeyEx: found fake Key=\"%s\" hkResult=%x\n", sKey, phkResult ? *phkResult : 0);
|
||||||
|
fclose(regf);
|
||||||
|
return ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(phkResult) (*phkResult)--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fgets(RegBuf, 256, regf);
|
||||||
|
}
|
||||||
|
fclose(regf);
|
||||||
|
}
|
||||||
|
return ERROR_FILE_NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
LONG WINAPI extRegOpenKeyEx(
|
LONG WINAPI extRegOpenKeyEx(
|
||||||
HKEY hKey,
|
HKEY hKey,
|
||||||
LPCTSTR lpSubKey,
|
LPCTSTR lpSubKey,
|
||||||
@ -59,36 +107,21 @@ LONG WINAPI extRegOpenKeyEx(
|
|||||||
PHKEY phkResult)
|
PHKEY phkResult)
|
||||||
{
|
{
|
||||||
LONG res;
|
LONG res;
|
||||||
char RegBuf[256+1];
|
|
||||||
|
|
||||||
OutTraceR("RegOpenKeyEx: hKey=%x(%s) SubKey=\"%s\" Options=%x\n",
|
OutTraceR("RegOpenKeyEx: hKey=%x(%s) SubKey=\"%s\" Options=%x\n",
|
||||||
hKey, hKey2String(hKey), lpSubKey, ulOptions);
|
hKey, hKey2String(hKey), lpSubKey, ulOptions);
|
||||||
res=(*pRegOpenKeyEx)(hKey, lpSubKey, ulOptions, samDesired, phkResult);
|
|
||||||
OutTraceR("RegOpenKeyEx: res=%x\n", res);
|
|
||||||
|
|
||||||
if((res==ERROR_SUCCESS) || !(dxw.dwFlags3 & EMULATEREGISTRY)) return res;
|
if(dxw.dwFlags4 & OVERRIDEREGISTRY){
|
||||||
|
res = myRegOpenKeyEx(hKey, lpSubKey, phkResult);
|
||||||
if(phkResult) *phkResult=HKEY_FAKE;
|
if(res == ERROR_SUCCESS) return res;
|
||||||
FILE *regf;
|
|
||||||
char sKey[256+1];
|
|
||||||
sprintf(sKey,"%s\\%s", hKey2String(hKey), lpSubKey);
|
|
||||||
OutTraceDW("RegOpenKeyEx: searching for key=\"%s\"\n", sKey);
|
|
||||||
regf=fopen("dxwnd.reg","r");
|
|
||||||
if(regf==NULL) return ERROR_FILE_NOT_FOUND;
|
|
||||||
fgets(RegBuf, 256, regf);
|
|
||||||
while (!feof(regf)){
|
|
||||||
if(RegBuf[0]=='['){
|
|
||||||
if((!strncmp(&RegBuf[1],sKey,strlen(sKey))) && (RegBuf[strlen(sKey)+1]==']')){
|
|
||||||
OutTrace("RegOpenKeyEx: found fake Key=\"%s\" hkResult=%x\n", sKey, *phkResult);
|
|
||||||
fclose(regf);
|
|
||||||
return ERROR_SUCCESS;
|
|
||||||
}
|
|
||||||
else (*phkResult)--;
|
|
||||||
}
|
|
||||||
fgets(RegBuf, 256, regf);
|
|
||||||
}
|
}
|
||||||
fclose(regf);
|
|
||||||
return ERROR_FILE_NOT_FOUND;
|
res=(*pRegOpenKeyEx)(hKey, lpSubKey, ulOptions, samDesired, phkResult);
|
||||||
|
OutTraceR("RegOpenKeyEx: res=%x phkResult=%x\n", res, phkResult ? *phkResult : 0);
|
||||||
|
|
||||||
|
if((res==ERROR_SUCCESS) || !(dxw.dwFlags3 & EMULATEREGISTRY) || (dxw.dwFlags4 & OVERRIDEREGISTRY)) return res;
|
||||||
|
|
||||||
|
return myRegOpenKeyEx(hKey, lpSubKey, phkResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
LONG WINAPI extRegQueryValueEx(
|
LONG WINAPI extRegQueryValueEx(
|
||||||
@ -132,14 +165,12 @@ LONG WINAPI extRegQueryValueEx(
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
//if(!(dxw.dwFlags3 & EMULATEREGISTRY)) return res;
|
|
||||||
|
|
||||||
// try emulated registry
|
// try emulated registry
|
||||||
FILE *regf;
|
FILE *regf;
|
||||||
char RegBuf[256+1];
|
char RegBuf[MAX_PATH+1];
|
||||||
char *pData;
|
char *pData;
|
||||||
HKEY hCurKey=HKEY_FAKE+1;
|
HKEY hCurKey=HKEY_FAKE+1;
|
||||||
regf=fopen("dxwnd.reg","r");
|
regf=OpenFakeRegistry();
|
||||||
if(regf==NULL) return ERROR_FILE_NOT_FOUND;
|
if(regf==NULL) return ERROR_FILE_NOT_FOUND;
|
||||||
if(!lpValueName)lpValueName="";
|
if(!lpValueName)lpValueName="";
|
||||||
fgets(RegBuf, 256, regf);
|
fgets(RegBuf, 256, regf);
|
||||||
@ -159,17 +190,16 @@ LONG WINAPI extRegQueryValueEx(
|
|||||||
res=ERROR_FILE_NOT_FOUND;
|
res=ERROR_FILE_NOT_FOUND;
|
||||||
pData=&RegBuf[strlen(lpValueName)+3];
|
pData=&RegBuf[strlen(lpValueName)+3];
|
||||||
if(*pData=='"'){ // string value
|
if(*pData=='"'){ // string value
|
||||||
//strcpy((char *)lpData, &RegBuf[strlen(lpValueName)+4]);
|
LPBYTE lpb;
|
||||||
//lpData[strlen((char *)lpData)-2]=0; // eliminates " and \n
|
lpb = lpData;
|
||||||
//if(lpType) *lpType=REG_SZ;
|
|
||||||
//*lpcbData=strlen((char *)lpData)+1;
|
|
||||||
*lpcbData=0;
|
*lpcbData=0;
|
||||||
pData++;
|
pData++;
|
||||||
while(*pData && (*pData != '"')){
|
while(*pData && (*pData != '"')){
|
||||||
if(*pData=='\\') pData++;
|
if(*pData=='\\') pData++;
|
||||||
*lpData++=*pData++;
|
*lpb++=*pData++;
|
||||||
*lpcbData++;
|
*lpcbData++;
|
||||||
}
|
}
|
||||||
|
*lpb = 0; // string terminator
|
||||||
if(lpType) *lpType=REG_SZ;
|
if(lpType) *lpType=REG_SZ;
|
||||||
//
|
//
|
||||||
OutTraceDW("RegQueryValueEx: Data=\"%s\" type=REG_SZ\n", lpData);
|
OutTraceDW("RegQueryValueEx: Data=\"%s\" type=REG_SZ\n", lpData);
|
||||||
|
@ -3565,7 +3565,7 @@ HRESULT WINAPI extSetPalette(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpdd
|
|||||||
lpentries = (LPPALETTEENTRY)PaletteEntries;
|
lpentries = (LPPALETTEENTRY)PaletteEntries;
|
||||||
res2=lpddp->GetEntries(0, 0, 256, lpentries);
|
res2=lpddp->GetEntries(0, 0, 256, lpentries);
|
||||||
if(res2) OutTraceE("SetPalette: GetEntries ERROR res=%x(%s)\n", res2, ExplainDDError(res2));
|
if(res2) OutTraceE("SetPalette: GetEntries ERROR res=%x(%s)\n", res2, ExplainDDError(res2));
|
||||||
//mySetPalette(0, 256, lpentries);
|
mySetPalette(0, 256, lpentries); // v2.02.76: necessary for "Requiem Avenging Angel" in SURFACEEMULATION mode
|
||||||
}
|
}
|
||||||
// Apply palette to backbuffer surface. This is necessary on some games: "Duckman private dick", "Total Soccer 2000", ...
|
// Apply palette to backbuffer surface. This is necessary on some games: "Duckman private dick", "Total Soccer 2000", ...
|
||||||
if (lpDDSBack) {
|
if (lpDDSBack) {
|
||||||
|
@ -87,7 +87,7 @@ static char *Flag4Names[32]={
|
|||||||
"STRETCHTIMERS", "NOFLIPEMULATION", "NOTEXTURES", "RETURNNULLREF",
|
"STRETCHTIMERS", "NOFLIPEMULATION", "NOTEXTURES", "RETURNNULLREF",
|
||||||
"FINETIMING", "NATIVERES", "SUPPORTSVGA", "SUPPORTHDTV",
|
"FINETIMING", "NATIVERES", "SUPPORTSVGA", "SUPPORTHDTV",
|
||||||
"RELEASEMOUSE", "FRAMECOMPENSATION", "HOTPATCH", "ENABLEHOTKEYS",
|
"RELEASEMOUSE", "FRAMECOMPENSATION", "HOTPATCH", "ENABLEHOTKEYS",
|
||||||
"HOTPATCHALWAYS", "", "", "",
|
"HOTPATCHALWAYS", "NOD3DRESET", "OVERRIDEREGISTRY", "",
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *TFlagNames[32]={
|
static char *TFlagNames[32]={
|
||||||
@ -1222,7 +1222,9 @@ void HookModule(HMODULE base, int dxversion)
|
|||||||
HookDirect3D7(base, dxversion);
|
HookDirect3D7(base, dxversion);
|
||||||
if(dxw.dwFlags2 & HOOKOPENGL) HookOpenGLLibs(base, dxw.CustomOpenGLLib);
|
if(dxw.dwFlags2 & HOOKOPENGL) HookOpenGLLibs(base, dxw.CustomOpenGLLib);
|
||||||
if(dxw.dwFlags4 & HOOKGLIDE) HookGlideLibs(base);
|
if(dxw.dwFlags4 & HOOKGLIDE) HookGlideLibs(base);
|
||||||
if((dxw.dwFlags3 & EMULATEREGISTRY) || (dxw.dwTFlags & OUTREGISTRY)) HookAdvApi32(base);
|
if( (dxw.dwFlags3 & EMULATEREGISTRY) ||
|
||||||
|
(dxw.dwFlags4 & OVERRIDEREGISTRY) ||
|
||||||
|
(dxw.dwTFlags & OUTREGISTRY)) HookAdvApi32(base);
|
||||||
HookMSV4WLibs(base); // -- used by Aliens & Amazons demo: what for?
|
HookMSV4WLibs(base); // -- used by Aliens & Amazons demo: what for?
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1428,6 +1430,7 @@ void HookInit(TARGETMAP *target, HWND hwnd)
|
|||||||
dxw.hChildWnd=hwnd;
|
dxw.hChildWnd=hwnd;
|
||||||
// v2.02.31: set main win either this one or the parent!
|
// v2.02.31: set main win either this one or the parent!
|
||||||
dxw.SethWnd((dxw.dwFlags1 & FIXPARENTWIN) ? GetParent(hwnd) : hwnd);
|
dxw.SethWnd((dxw.dwFlags1 & FIXPARENTWIN) ? GetParent(hwnd) : hwnd);
|
||||||
|
if(dxw.dwFlags4 & ENABLEHOTKEYS) dxw.MapKeysInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IsTraceDW){
|
if(IsTraceDW){
|
||||||
|
@ -102,7 +102,6 @@ void dxwCore::InitTarget(TARGETMAP *target)
|
|||||||
pTimeShifter = TimeShifterCoarse;
|
pTimeShifter = TimeShifterCoarse;
|
||||||
pTimeShifter64 = TimeShifter64Coarse;
|
pTimeShifter64 = TimeShifter64Coarse;
|
||||||
}
|
}
|
||||||
if(dwFlags4 & ENABLEHOTKEYS) MapKeysInit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void dxwCore::SetScreenSize(void)
|
void dxwCore::SetScreenSize(void)
|
||||||
|
@ -117,6 +117,7 @@ public: // methods
|
|||||||
BOOL CheckScreenResolution(unsigned int, unsigned int);
|
BOOL CheckScreenResolution(unsigned int, unsigned int);
|
||||||
LARGE_INTEGER StretchLargeCounter(LARGE_INTEGER);
|
LARGE_INTEGER StretchLargeCounter(LARGE_INTEGER);
|
||||||
UINT MapKeysConfig(UINT, LPARAM, WPARAM);
|
UINT MapKeysConfig(UINT, LPARAM, WPARAM);
|
||||||
|
void MapKeysInit();
|
||||||
|
|
||||||
public: // simple data variables
|
public: // simple data variables
|
||||||
BOOL Windowize;
|
BOOL Windowize;
|
||||||
@ -170,7 +171,6 @@ private:
|
|||||||
void ShowFPS(HDC);
|
void ShowFPS(HDC);
|
||||||
void ShowTimeStretching(HDC);
|
void ShowTimeStretching(HDC);
|
||||||
TimerEvent_Type TimerEvent;
|
TimerEvent_Type TimerEvent;
|
||||||
void MapKeysInit();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern dxwCore dxw;
|
extern dxwCore dxw;
|
||||||
|
@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "dxwnd.h"
|
#include "dxwnd.h"
|
||||||
#include "dxwcore.hpp"
|
#include "dxwcore.hpp"
|
||||||
|
|
||||||
#define VERSION "2.02.75"
|
#define VERSION "2.02.76"
|
||||||
|
|
||||||
#define DDTHREADLOCK 1
|
#define DDTHREADLOCK 1
|
||||||
|
|
||||||
@ -224,8 +224,9 @@ void InjectHook()
|
|||||||
for(i = 0; pMapping[i].path[0]; i ++){
|
for(i = 0; pMapping[i].path[0]; i ++){
|
||||||
if(!strncmp(name, pMapping[i].path, strlen(name))){
|
if(!strncmp(name, pMapping[i].path, strlen(name))){
|
||||||
if (pMapping[i].flags2 & STARTDEBUG){
|
if (pMapping[i].flags2 & STARTDEBUG){
|
||||||
OutTrace("InjectHook: task[%d]=\"%s\" hooked\n", i, pMapping[i].path);
|
HookInit(&pMapping[i],NULL);
|
||||||
HookInit(&pMapping[i],NULL);
|
// beware: logging is possible only AFTER HookInit execution
|
||||||
|
OutTrace("InjectHook: task[%d]=\"%s\" hooked\n", i, pMapping[i].path);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
65
dll/dxwnd.vs2008.vcproj.User-PC.User.user
Normal file
65
dll/dxwnd.vs2008.vcproj.User-PC.User.user
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioUserFile
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="9.00"
|
||||||
|
ShowAllFiles="false"
|
||||||
|
>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<DebugSettings
|
||||||
|
Command=""
|
||||||
|
WorkingDirectory=""
|
||||||
|
CommandArguments=""
|
||||||
|
Attach="false"
|
||||||
|
DebuggerType="3"
|
||||||
|
Remote="1"
|
||||||
|
RemoteMachine="USER-PC"
|
||||||
|
RemoteCommand=""
|
||||||
|
HttpUrl=""
|
||||||
|
PDBPath=""
|
||||||
|
SQLDebugging=""
|
||||||
|
Environment=""
|
||||||
|
EnvironmentMerge="true"
|
||||||
|
DebuggerFlavor=""
|
||||||
|
MPIRunCommand=""
|
||||||
|
MPIRunArguments=""
|
||||||
|
MPIRunWorkingDirectory=""
|
||||||
|
ApplicationCommand=""
|
||||||
|
ApplicationArguments=""
|
||||||
|
ShimCommand=""
|
||||||
|
MPIAcceptMode=""
|
||||||
|
MPIAcceptFilter=""
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
>
|
||||||
|
<DebugSettings
|
||||||
|
Command=""
|
||||||
|
WorkingDirectory=""
|
||||||
|
CommandArguments=""
|
||||||
|
Attach="false"
|
||||||
|
DebuggerType="3"
|
||||||
|
Remote="1"
|
||||||
|
RemoteMachine="USER-PC"
|
||||||
|
RemoteCommand=""
|
||||||
|
HttpUrl=""
|
||||||
|
PDBPath=""
|
||||||
|
SQLDebugging=""
|
||||||
|
Environment=""
|
||||||
|
EnvironmentMerge="true"
|
||||||
|
DebuggerFlavor=""
|
||||||
|
MPIRunCommand=""
|
||||||
|
MPIRunArguments=""
|
||||||
|
MPIRunWorkingDirectory=""
|
||||||
|
ApplicationCommand=""
|
||||||
|
ApplicationArguments=""
|
||||||
|
ShimCommand=""
|
||||||
|
MPIAcceptMode=""
|
||||||
|
MPIAcceptFilter=""
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
</VisualStudioUserFile>
|
@ -36,7 +36,6 @@ void WhndStackPush(HWND hwnd, WNDPROC wndproc)
|
|||||||
if(WhndTOS == WhndSize){
|
if(WhndTOS == WhndSize){
|
||||||
WhndSize += MAXWNDHSTACK;
|
WhndSize += MAXWNDHSTACK;
|
||||||
WhndStack = (wndstack_entry *)realloc(WhndStack, WhndSize * sizeof(wndstack_entry));
|
WhndStack = (wndstack_entry *)realloc(WhndStack, WhndSize * sizeof(wndstack_entry));
|
||||||
//OutTraceDW("DEBUG: WNDPROC STACK new size=%d\n", WhndSize);
|
|
||||||
}
|
}
|
||||||
// wndproc values of 0xFFFFxxxx type seems to be error codes rather than valid callback addresses ....
|
// wndproc values of 0xFFFFxxxx type seems to be error codes rather than valid callback addresses ....
|
||||||
// v2.02.36 using CallWindowProc you can pass WinProc handles, so you don't need to eliminate them!
|
// v2.02.36 using CallWindowProc you can pass WinProc handles, so you don't need to eliminate them!
|
||||||
|
@ -152,6 +152,7 @@
|
|||||||
#define IDC_HOOKDI 1112
|
#define IDC_HOOKDI 1112
|
||||||
#define IDC_EMULATEREGISTRY 1113
|
#define IDC_EMULATEREGISTRY 1113
|
||||||
#define IDC_CDROMDRIVETYPE 1114
|
#define IDC_CDROMDRIVETYPE 1114
|
||||||
|
#define IDC_OVERRIDEREGISTRY 1115
|
||||||
#define IDC_NOWINDOWMOVE 1116
|
#define IDC_NOWINDOWMOVE 1116
|
||||||
#define IDC_DISABLEHAL 1117
|
#define IDC_DISABLEHAL 1117
|
||||||
#define IDC_LOCKSYSCOLORS 1118
|
#define IDC_LOCKSYSCOLORS 1118
|
||||||
|
@ -46,6 +46,10 @@ void CTabCompat::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Check(pDX, IDC_NOTEXTURES, cTarget->m_NoTextures);
|
DDX_Check(pDX, IDC_NOTEXTURES, cTarget->m_NoTextures);
|
||||||
DDX_Check(pDX, IDC_WIREFRAME, cTarget->m_WireFrame);
|
DDX_Check(pDX, IDC_WIREFRAME, cTarget->m_WireFrame);
|
||||||
DDX_Check(pDX, IDC_DISABLEFOGGING, cTarget->m_DisableFogging);
|
DDX_Check(pDX, IDC_DISABLEFOGGING, cTarget->m_DisableFogging);
|
||||||
|
|
||||||
|
// Registry management
|
||||||
|
DDX_Check(pDX, IDC_EMULATEREGISTRY, cTarget->m_EmulateRegistry);
|
||||||
|
DDX_Check(pDX, IDC_OVERRIDEREGISTRY, cTarget->m_OverrideRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
BEGIN_MESSAGE_MAP(CTabCompat, CDialog)
|
BEGIN_MESSAGE_MAP(CTabCompat, CDialog)
|
||||||
|
@ -40,7 +40,6 @@ void CTabDebug::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Check(pDX, IDC_NODDRAWFLIP, cTarget->m_NoDDRAWFlip);
|
DDX_Check(pDX, IDC_NODDRAWFLIP, cTarget->m_NoDDRAWFlip);
|
||||||
DDX_Check(pDX, IDC_NOGDIBLT, cTarget->m_NoGDIBlt);
|
DDX_Check(pDX, IDC_NOGDIBLT, cTarget->m_NoGDIBlt);
|
||||||
DDX_Check(pDX, IDC_NOFILLRECT, cTarget->m_NoFillRect);
|
DDX_Check(pDX, IDC_NOFILLRECT, cTarget->m_NoFillRect);
|
||||||
DDX_Check(pDX, IDC_EMULATEREGISTRY, cTarget->m_EmulateRegistry);
|
|
||||||
DDX_Check(pDX, IDC_ZBUFFERALWAYS, cTarget->m_ZBufferAlways);
|
DDX_Check(pDX, IDC_ZBUFFERALWAYS, cTarget->m_ZBufferAlways);
|
||||||
DDX_Check(pDX, IDC_HOTPATCHALWAYS, cTarget->m_HotPatchAlways);
|
DDX_Check(pDX, IDC_HOTPATCHALWAYS, cTarget->m_HotPatchAlways);
|
||||||
}
|
}
|
||||||
|
@ -72,6 +72,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_HookDLLs = TRUE; // default true !!
|
m_HookDLLs = TRUE; // default true !!
|
||||||
m_HookEnabled = TRUE; // default true !!
|
m_HookEnabled = TRUE; // default true !!
|
||||||
m_EmulateRegistry = FALSE;
|
m_EmulateRegistry = FALSE;
|
||||||
|
m_OverrideRegistry = FALSE;
|
||||||
m_FullScreenOnly = FALSE;
|
m_FullScreenOnly = FALSE;
|
||||||
m_FilterMessages = FALSE;
|
m_FilterMessages = FALSE;
|
||||||
m_PeekAllMessages = FALSE;
|
m_PeekAllMessages = FALSE;
|
||||||
|
@ -49,6 +49,7 @@ public:
|
|||||||
BOOL m_HotPatch;
|
BOOL m_HotPatch;
|
||||||
BOOL m_HookDLLs;
|
BOOL m_HookDLLs;
|
||||||
BOOL m_EmulateRegistry;
|
BOOL m_EmulateRegistry;
|
||||||
|
BOOL m_OverrideRegistry;
|
||||||
BOOL m_FullScreenOnly;
|
BOOL m_FullScreenOnly;
|
||||||
BOOL m_FilterMessages;
|
BOOL m_FilterMessages;
|
||||||
BOOL m_PeekAllMessages;
|
BOOL m_PeekAllMessages;
|
||||||
|
@ -319,7 +319,7 @@ DWORD CDib::Save(CFile& file) const
|
|||||||
DWORD CDib::Read(CFile& file, BOOL bFromResource)
|
DWORD CDib::Read(CFile& file, BOOL bFromResource)
|
||||||
{
|
{
|
||||||
DWORD dwReadBytes = 0;
|
DWORD dwReadBytes = 0;
|
||||||
DWORD dwLength = file.GetLength();
|
DWORD dwLength = (DWORD)file.GetLength();
|
||||||
|
|
||||||
// Ensures no memory leaks will occur
|
// Ensures no memory leaks will occur
|
||||||
Free();
|
Free();
|
||||||
|
@ -466,7 +466,10 @@ IDD_TAB_COMPAT DIALOGEX 0, 0, 300, 240
|
|||||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
|
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
GROUPBOX "Fake Version",IDC_STATIC,7,3,139,64
|
GROUPBOX "Fake Version",IDC_STATIC,6,3,140,64
|
||||||
|
GROUPBOX "3D effects",IDC_STATIC,149,3,144,64
|
||||||
|
GROUPBOX "Registry",IDC_STATIC,149,69,144,64
|
||||||
|
GROUPBOX "Tweaks",IDC_STATIC,6,69,140,164
|
||||||
CONTROL "",IDC_FAKEVERSION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,26,12,10
|
CONTROL "",IDC_FAKEVERSION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,26,12,10
|
||||||
LISTBOX IDC_LISTFAKE,39,15,98,43,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
LISTBOX IDC_LISTFAKE,39,15,98,43,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||||
CONTROL "Handle Exceptions",IDC_HANDLEEXCEPTIONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,200,109,12
|
CONTROL "Handle Exceptions",IDC_HANDLEEXCEPTIONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,200,109,12
|
||||||
@ -482,10 +485,11 @@ BEGIN
|
|||||||
CONTROL "Clean ZBUFFER @0.0 fix",IDC_ZBUFFER0CLEAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,104,109,12
|
CONTROL "Clean ZBUFFER @0.0 fix",IDC_ZBUFFER0CLEAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,104,109,12
|
||||||
CONTROL "Textures not power of 2 fix",IDC_NOPOWER2FIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,92,109,12
|
CONTROL "Textures not power of 2 fix",IDC_NOPOWER2FIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,92,109,12
|
||||||
CONTROL "Disable performance counter",IDC_NOPERFCOUNTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,80,109,12
|
CONTROL "Disable performance counter",IDC_NOPERFCOUNTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,80,109,12
|
||||||
CONTROL "3D Wireframe",IDC_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,34,96,10
|
CONTROL "3D Wireframe",IDC_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,34,96,10
|
||||||
GROUPBOX "3D effects",IDC_STATIC,149,3,144,64
|
CONTROL "Disable Fogging",IDC_DISABLEFOGGING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,46,96,10
|
||||||
CONTROL "Disable Fogging",IDC_DISABLEFOGGING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,46,96,10
|
|
||||||
CONTROL "Disable Textures",IDC_NOTEXTURES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,22,96,10
|
CONTROL "Disable Textures",IDC_NOTEXTURES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,22,96,10
|
||||||
|
CONTROL "Emulate Registry",IDC_EMULATEREGISTRY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,84,110,10
|
||||||
|
CONTROL "Override Registry",IDC_OVERRIDEREGISTRY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,96,110,10
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_TAB_SYSLIBS DIALOGEX 0, 0, 300, 240
|
IDD_TAB_SYSLIBS DIALOGEX 0, 0, 300, 240
|
||||||
@ -526,7 +530,6 @@ BEGIN
|
|||||||
CONTROL "Suppress ddraw Flip",IDC_NODDRAWFLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,36,127,10
|
CONTROL "Suppress ddraw Flip",IDC_NODDRAWFLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,36,127,10
|
||||||
CONTROL "Suppress GDI Blt",IDC_NOGDIBLT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,48,127,10
|
CONTROL "Suppress GDI Blt",IDC_NOGDIBLT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,48,127,10
|
||||||
GROUPBOX "Visual flags",IDC_STATIC,153,7,140,139
|
GROUPBOX "Visual flags",IDC_STATIC,153,7,140,139
|
||||||
CONTROL "Emulate Registry",IDC_EMULATEREGISTRY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,84,124,10
|
|
||||||
CONTROL "Force D3DCMP_ALWAYS setting ",IDC_ZBUFFERALWAYS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,164,127,10
|
CONTROL "Force D3DCMP_ALWAYS setting ",IDC_ZBUFFERALWAYS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,164,127,10
|
||||||
CONTROL "Suppress FillRect",IDC_NOFILLRECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,60,127,10
|
CONTROL "Suppress FillRect",IDC_NOFILLRECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,60,127,10
|
||||||
CONTROL "Force hot patching",IDC_HOTPATCHALWAYS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,176,127,10
|
CONTROL "Force hot patching",IDC_HOTPATCHALWAYS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,176,127,10
|
||||||
|
Binary file not shown.
@ -116,6 +116,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(dlg->m_Windowize) t->flags2 |= WINDOWIZE;
|
if(dlg->m_Windowize) t->flags2 |= WINDOWIZE;
|
||||||
if(dlg->m_HookDLLs) t->flags3 |= HOOKDLLS;
|
if(dlg->m_HookDLLs) t->flags3 |= HOOKDLLS;
|
||||||
if(dlg->m_EmulateRegistry) t->flags3 |= EMULATEREGISTRY;
|
if(dlg->m_EmulateRegistry) t->flags3 |= EMULATEREGISTRY;
|
||||||
|
if(dlg->m_OverrideRegistry) t->flags4 |= OVERRIDEREGISTRY;
|
||||||
if(dlg->m_HookEnabled) t->flags3 |= HOOKENABLED;
|
if(dlg->m_HookEnabled) t->flags3 |= HOOKENABLED;
|
||||||
if(dlg->m_NoBanner) t->flags2 |= NOBANNER;
|
if(dlg->m_NoBanner) t->flags2 |= NOBANNER;
|
||||||
if(dlg->m_StartDebug) t->flags2 |= STARTDEBUG;
|
if(dlg->m_StartDebug) t->flags2 |= STARTDEBUG;
|
||||||
@ -293,6 +294,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
dlg->m_HotPatch = t->flags4 & HOTPATCH ? 1 : 0;
|
dlg->m_HotPatch = t->flags4 & HOTPATCH ? 1 : 0;
|
||||||
dlg->m_HookDLLs = t->flags3 & HOOKDLLS ? 1 : 0;
|
dlg->m_HookDLLs = t->flags3 & HOOKDLLS ? 1 : 0;
|
||||||
dlg->m_EmulateRegistry = t->flags3 & EMULATEREGISTRY ? 1 : 0;
|
dlg->m_EmulateRegistry = t->flags3 & EMULATEREGISTRY ? 1 : 0;
|
||||||
|
dlg->m_OverrideRegistry = t->flags4 & OVERRIDEREGISTRY ? 1 : 0;
|
||||||
dlg->m_HookEnabled = t->flags3 & HOOKENABLED ? 1 : 0;
|
dlg->m_HookEnabled = t->flags3 & HOOKENABLED ? 1 : 0;
|
||||||
dlg->m_NoBanner = t->flags2 & NOBANNER ? 1 : 0;
|
dlg->m_NoBanner = t->flags2 & NOBANNER ? 1 : 0;
|
||||||
dlg->m_StartDebug = t->flags2 & STARTDEBUG ? 1 : 0;
|
dlg->m_StartDebug = t->flags2 & STARTDEBUG ? 1 : 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user