mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_03_98_src
Former-commit-id: 0ccae4566e2686b634ad5e56617ca947993f1d28
This commit is contained in:
parent
fa59792b6d
commit
0e0ef465dc
1
Debug/.gitattributes
vendored
Normal file
1
Debug/.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*.{dll,exe} filter=lfs diff=lfs merge=lfs -text
|
3
Debug/ddraw.dll
Normal file
3
Debug/ddraw.dll
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:57380350f6215b3dadaf6f920ebbf18fd2ec95162c1722bafac6f8b949eb851b
|
||||||
|
size 458240
|
BIN
Debug/ddraw.ilk
Normal file
BIN
Debug/ddraw.ilk
Normal file
Binary file not shown.
@ -41,7 +41,7 @@
|
|||||||
#define CLIENTREMAPPING 0x08000000 // hooks ClientToRect, RectToClient, GetClientRect, GetWinRect
|
#define CLIENTREMAPPING 0x08000000 // hooks ClientToRect, RectToClient, GetClientRect, GetWinRect
|
||||||
#define HANDLEALTF4 0x10000000 // forces quitting the program when receiving Alt-F4 key
|
#define HANDLEALTF4 0x10000000 // forces quitting the program when receiving Alt-F4 key
|
||||||
#define LOCKWINPOS 0x20000000 // prevent the program to change its own windows properties
|
#define LOCKWINPOS 0x20000000 // prevent the program to change its own windows properties
|
||||||
#define HOOKCHILDWIN 0x40000000 // hook CHILD windows to alter placement coordinates (UNUSED)
|
#define HOOKCHILDWIN 0x40000000 // hook CHILD windows to alter placement coordinates
|
||||||
#define MESSAGEPROC 0x80000000 // process peek/get messages
|
#define MESSAGEPROC 0x80000000 // process peek/get messages
|
||||||
|
|
||||||
// second flags DWORD dxw.dwFlags2:
|
// second flags DWORD dxw.dwFlags2:
|
||||||
@ -246,8 +246,14 @@
|
|||||||
#define ANCHORED 0x10000000 // Anchored position & size, mo stretching or sliding is allowed
|
#define ANCHORED 0x10000000 // Anchored position & size, mo stretching or sliding is allowed
|
||||||
#define CLEARTEXTUREFOURCC 0x20000000 // Clear DDSCAPS2_FOURCC bit and makes texture load without codec
|
#define CLEARTEXTUREFOURCC 0x20000000 // Clear DDSCAPS2_FOURCC bit and makes texture load without codec
|
||||||
#define NODDEXCLUSIVEMODE 0x40000000 // Do not allow ddraw EXCLUSIVE mode also in non windowed mode
|
#define NODDEXCLUSIVEMODE 0x40000000 // Do not allow ddraw EXCLUSIVE mode also in non windowed mode
|
||||||
|
#define COPYNOSHIMS 0x80000000 // Create a hiden and temporary copy of the target exe so that shims are not applied
|
||||||
|
|
||||||
// eighth flags DWORD dxw.dwFlags8:
|
// eighth flags DWORD dxw.dwFlags8:
|
||||||
|
#define FORCEWAIT 0x00000001 // Forces DDBLT/DDFLIP WAIT flags
|
||||||
|
#define FORCENOWAIT 0x00000002 // Forces DDBLT/DDFLIP NOWAIT flags
|
||||||
|
#define FORCEVSYNC 0x00000004 // Forces hardware VSync
|
||||||
|
#define FORCENOVSYNC 0x00000008 // Forces NO hardware VSync
|
||||||
|
#define VSYNCSCANLINE 0x00000010 // Activates WaitForVerticalBlank algorythm based on reaching a given scan line
|
||||||
|
|
||||||
// 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
|
||||||
@ -258,7 +264,7 @@
|
|||||||
//#define DXPROXED 0x00000020 // hook DX proxy methods to log each call in original behaviour
|
//#define DXPROXED 0x00000020 // hook DX proxy methods to log each call in original behaviour
|
||||||
#define ASSERTDIALOG 0x00000040 // show assert messages in Dialog Box
|
#define ASSERTDIALOG 0x00000040 // show assert messages in Dialog Box
|
||||||
#define OUTIMPORTTABLE 0x00000080 // dump import table contents
|
#define OUTIMPORTTABLE 0x00000080 // dump import table contents
|
||||||
#define OUTDEBUG 0x00000100 // detailed debugging indormation
|
#define OUTDEBUG 0x00000100 // detailed debugging information
|
||||||
#define OUTREGISTRY 0x00000200 // log registry operations
|
#define OUTREGISTRY 0x00000200 // log registry operations
|
||||||
#define TRACEHOOKS 0x00000400 // log hook operations
|
#define TRACEHOOKS 0x00000400 // log hook operations
|
||||||
#define OUTD3DTRACE 0x00000800 // traces DxWnd direct3d screen handling
|
#define OUTD3DTRACE 0x00000800 // traces DxWnd direct3d screen handling
|
||||||
@ -306,6 +312,7 @@ typedef struct TARGETMAP
|
|||||||
short SwapEffect;
|
short SwapEffect;
|
||||||
short MaxDdrawInterface;
|
short MaxDdrawInterface;
|
||||||
short SlowRatio;
|
short SlowRatio;
|
||||||
|
short ScanLine;
|
||||||
}TARGETMAP;
|
}TARGETMAP;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:4af08fde73eb963389ed3ef80c024a9aaf6a711bfc70f8b2c2091c9c75dfbbad
|
oid sha256:d7f4c6f63e720e5a4a2275522d0d414d00fba3b80e28751a6db8e1f0613483f0
|
||||||
size 700928
|
size 706560
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:2e87504512135e86893727a9d1fec372ce4ad78e50f6b897ddf819bc6fd3d9db
|
oid sha256:4c369251987e49585a3cb5776a808fafe262ccf2d6b0ef0265275ba2080189ac
|
||||||
size 665600
|
size 667136
|
||||||
|
349
build/dxwnd.ini
349
build/dxwnd.ini
@ -1,349 +0,0 @@
|
|||||||
[window]
|
|
||||||
exportpath=D:\DxWnd.develop\v2_03_97_beta\build\exports\
|
|
||||||
posx=-592
|
|
||||||
posy=438
|
|
||||||
sizx=436
|
|
||||||
sizy=417
|
|
||||||
exepath=D:\Games\Warhammer 40.000 Dark Omen\PRG_ENG\
|
|
||||||
debug=1
|
|
||||||
autohide=0
|
|
||||||
checkadmin=0
|
|
||||||
namefromfolder=0
|
|
||||||
multiprocesshook=0
|
|
||||||
updatepaths=1
|
|
||||||
defaultcoord=0
|
|
||||||
defaultposx=50
|
|
||||||
defaultposy=50
|
|
||||||
defaultsizx=800
|
|
||||||
defaultsizy=600
|
|
||||||
[target]
|
|
||||||
title0=Warhammer 40K Rites of War
|
|
||||||
path0=D:\Games\Warhammer 40.000 Rites of War\RoWDemo.exe
|
|
||||||
startfolder0=
|
|
||||||
launchpath0=
|
|
||||||
module0=
|
|
||||||
opengllib0=
|
|
||||||
notes0=After installing the game copy the "Map" -folder from the CD to the \nRites of War\ directory on your hard drive.\n\nThis will fix the issue where the game crashes when starting a campaign.
|
|
||||||
registry0=
|
|
||||||
ver0=0
|
|
||||||
monitorid0=0
|
|
||||||
coord0=0
|
|
||||||
flag0=685772838
|
|
||||||
flagg0=1207959680
|
|
||||||
flagh0=20
|
|
||||||
flagi0=138412036
|
|
||||||
flagj0=4224
|
|
||||||
flagk0=65536
|
|
||||||
flagl0=0
|
|
||||||
flagm0=0
|
|
||||||
tflag0=0
|
|
||||||
dflag0=0
|
|
||||||
posx0=50
|
|
||||||
posy0=50
|
|
||||||
sizx0=800
|
|
||||||
sizy0=600
|
|
||||||
maxfps0=0
|
|
||||||
initts0=0
|
|
||||||
winver0=0
|
|
||||||
maxres0=-1
|
|
||||||
swapeffect0=0
|
|
||||||
maxddinterface0=7
|
|
||||||
slowratio0=2
|
|
||||||
initresw0=0
|
|
||||||
initresh0=0
|
|
||||||
title1=Adrenix mod
|
|
||||||
path1=D:\Games\Adrenix\Adrenix.exe
|
|
||||||
startfolder1=
|
|
||||||
launchpath1=
|
|
||||||
module1=
|
|
||||||
opengllib1=
|
|
||||||
notes1=
|
|
||||||
registry1=
|
|
||||||
ver1=0
|
|
||||||
monitorid1=-1
|
|
||||||
coord1=0
|
|
||||||
flag1=136314915
|
|
||||||
flagg1=1207959552
|
|
||||||
flagh1=8212
|
|
||||||
flagi1=138412036
|
|
||||||
flagj1=4224
|
|
||||||
flagk1=2424840
|
|
||||||
flagl1=0
|
|
||||||
flagm1=0
|
|
||||||
tflag1=-2147483647
|
|
||||||
dflag1=0
|
|
||||||
posx1=50
|
|
||||||
posy1=50
|
|
||||||
sizx1=0
|
|
||||||
sizy1=0
|
|
||||||
maxfps1=0
|
|
||||||
initts1=0
|
|
||||||
winver1=0
|
|
||||||
maxres1=-1
|
|
||||||
swapeffect1=0
|
|
||||||
maxddinterface1=7
|
|
||||||
slowratio1=2
|
|
||||||
initresw1=800
|
|
||||||
initresh1=600
|
|
||||||
title2=Adrenix 3D
|
|
||||||
path2=D:\Games\Adrenix\AdrenixD.exe
|
|
||||||
startfolder2=
|
|
||||||
launchpath2=
|
|
||||||
module2=
|
|
||||||
opengllib2=
|
|
||||||
notes2=
|
|
||||||
registry2=
|
|
||||||
ver2=0
|
|
||||||
monitorid2=0
|
|
||||||
coord2=0
|
|
||||||
flag2=134234150
|
|
||||||
flagg2=1208025088
|
|
||||||
flagh2=20
|
|
||||||
flagi2=138412036
|
|
||||||
flagj2=5248
|
|
||||||
flagk2=65536
|
|
||||||
flagl2=0
|
|
||||||
flagm2=0
|
|
||||||
tflag2=-2147477245
|
|
||||||
dflag2=0
|
|
||||||
posx2=50
|
|
||||||
posy2=50
|
|
||||||
sizx2=800
|
|
||||||
sizy2=600
|
|
||||||
maxfps2=0
|
|
||||||
initts2=0
|
|
||||||
winver2=0
|
|
||||||
maxres2=-1
|
|
||||||
swapeffect2=0
|
|
||||||
maxddinterface2=7
|
|
||||||
slowratio2=1
|
|
||||||
initresw2=0
|
|
||||||
initresh2=0
|
|
||||||
title3=Minigolf master miniverse demo
|
|
||||||
path3=D:\Games\MiniGolf Master Demo\mvdemo.exe
|
|
||||||
startfolder3=
|
|
||||||
launchpath3=
|
|
||||||
module3=
|
|
||||||
opengllib3=
|
|
||||||
notes3=
|
|
||||||
registry3=
|
|
||||||
ver3=0
|
|
||||||
monitorid3=-1
|
|
||||||
coord3=0
|
|
||||||
flag3=136314914
|
|
||||||
flagg3=1207959552
|
|
||||||
flagh3=20
|
|
||||||
flagi3=138412036
|
|
||||||
flagj3=4224
|
|
||||||
flagk3=33882112
|
|
||||||
flagl3=32768
|
|
||||||
flagm3=0
|
|
||||||
tflag3=0
|
|
||||||
dflag3=0
|
|
||||||
posx3=50
|
|
||||||
posy3=50
|
|
||||||
sizx3=800
|
|
||||||
sizy3=600
|
|
||||||
maxfps3=0
|
|
||||||
initts3=0
|
|
||||||
winver3=0
|
|
||||||
maxres3=-1
|
|
||||||
swapeffect3=0
|
|
||||||
maxddinterface3=7
|
|
||||||
slowratio3=2
|
|
||||||
initresw3=640
|
|
||||||
initresh3=480
|
|
||||||
title4=Galapagos
|
|
||||||
module4=
|
|
||||||
opengllib4=
|
|
||||||
monitorid4=-1
|
|
||||||
dflag4=0
|
|
||||||
initresw4=640
|
|
||||||
initresh4=480
|
|
||||||
path4=D:\Games\Galapagos\GALA.EXE
|
|
||||||
startfolder4=
|
|
||||||
launchpath4=
|
|
||||||
notes4=
|
|
||||||
registry4=
|
|
||||||
ver4=7
|
|
||||||
coord4=0
|
|
||||||
flag4=137379894
|
|
||||||
flagg4=1207959552
|
|
||||||
flagh4=33300
|
|
||||||
flagi4=138412036
|
|
||||||
flagj4=469766272
|
|
||||||
flagk4=67584
|
|
||||||
flagl4=92340240
|
|
||||||
flagm4=0
|
|
||||||
tflag4=-2147477245
|
|
||||||
posx4=150
|
|
||||||
posy4=150
|
|
||||||
sizx4=800
|
|
||||||
sizy4=600
|
|
||||||
maxfps4=0
|
|
||||||
initts4=0
|
|
||||||
winver4=0
|
|
||||||
maxres4=-1
|
|
||||||
swapeffect4=0
|
|
||||||
maxddinterface4=7
|
|
||||||
slowratio4=2
|
|
||||||
title5=Incubation.exe
|
|
||||||
module5=
|
|
||||||
opengllib5=
|
|
||||||
monitorid5=-1
|
|
||||||
dflag5=0
|
|
||||||
initresw5=800
|
|
||||||
initresh5=600
|
|
||||||
path5=D:\Games\Incubation\Incubation.exe
|
|
||||||
startfolder5=
|
|
||||||
launchpath5=
|
|
||||||
notes5=
|
|
||||||
registry5=
|
|
||||||
ver5=0
|
|
||||||
coord5=0
|
|
||||||
flag5=681574434
|
|
||||||
flagg5=1208221696
|
|
||||||
flagh5=20
|
|
||||||
flagi5=138412036
|
|
||||||
flagj5=4224
|
|
||||||
flagk5=65536
|
|
||||||
flagl5=0
|
|
||||||
flagm5=0
|
|
||||||
tflag5=0
|
|
||||||
posx5=50
|
|
||||||
posy5=50
|
|
||||||
sizx5=800
|
|
||||||
sizy5=600
|
|
||||||
maxfps5=0
|
|
||||||
initts5=0
|
|
||||||
winver5=0
|
|
||||||
maxres5=-1
|
|
||||||
swapeffect5=0
|
|
||||||
maxddinterface5=7
|
|
||||||
slowratio5=2
|
|
||||||
title6=Autorun.exe
|
|
||||||
path6=D:\Games\Incubation\Autorun.exe
|
|
||||||
startfolder6=
|
|
||||||
launchpath6=
|
|
||||||
module6=
|
|
||||||
opengllib6=
|
|
||||||
notes6=
|
|
||||||
registry6=
|
|
||||||
ver6=0
|
|
||||||
monitorid6=-1
|
|
||||||
coord6=0
|
|
||||||
flag6=136314914
|
|
||||||
flagg6=1207959552
|
|
||||||
flagh6=20
|
|
||||||
flagi6=134217732
|
|
||||||
flagj6=4224
|
|
||||||
flagk6=65536
|
|
||||||
flagl6=0
|
|
||||||
flagm6=0
|
|
||||||
tflag6=0
|
|
||||||
dflag6=0
|
|
||||||
posx6=50
|
|
||||||
posy6=50
|
|
||||||
sizx6=800
|
|
||||||
sizy6=600
|
|
||||||
maxfps6=0
|
|
||||||
initts6=0
|
|
||||||
winver6=0
|
|
||||||
maxres6=-1
|
|
||||||
swapeffect6=0
|
|
||||||
maxddinterface6=7
|
|
||||||
slowratio6=2
|
|
||||||
initresw6=800
|
|
||||||
initresh6=600
|
|
||||||
title7=Warhammer 40.000 Dark Omen
|
|
||||||
path7=D:\Games\Warhammer 40.000 Dark Omen\PRG_ENG\ENGREL.EXE
|
|
||||||
startfolder7=
|
|
||||||
launchpath7=
|
|
||||||
module7=
|
|
||||||
opengllib7=
|
|
||||||
notes7=
|
|
||||||
registry7=
|
|
||||||
ver7=0
|
|
||||||
monitorid7=-1
|
|
||||||
coord7=0
|
|
||||||
flag7=136314922
|
|
||||||
flagg7=1207959552
|
|
||||||
flagh7=4
|
|
||||||
flagi7=138412036
|
|
||||||
flagj7=4224
|
|
||||||
flagk7=65536
|
|
||||||
flagl7=0
|
|
||||||
flagm7=0
|
|
||||||
tflag7=-2147477245
|
|
||||||
dflag7=0
|
|
||||||
posx7=50
|
|
||||||
posy7=50
|
|
||||||
sizx7=800
|
|
||||||
sizy7=600
|
|
||||||
maxfps7=0
|
|
||||||
initts7=0
|
|
||||||
winver7=0
|
|
||||||
maxres7=-1
|
|
||||||
swapeffect7=0
|
|
||||||
maxddinterface7=7
|
|
||||||
slowratio7=2
|
|
||||||
initresw7=800
|
|
||||||
initresh7=600
|
|
||||||
title8=Warhammer Dark Omen
|
|
||||||
path8=D:\Games\Warhammer 40.000 Dark Omen\PRG_ENG\ENGREL.EXE
|
|
||||||
startfolder8=
|
|
||||||
launchpath8=
|
|
||||||
module8=
|
|
||||||
opengllib8=
|
|
||||||
notes8=Dark Omen needs a d3drm.dll file to run:\n- This file can be located in the CD's \DIRECTX -folder.\n- Copy the file into the "Dark Omen\PRG_ENG" directory.\n\nSound issues:\nDark Omen can sometimes produce a burst of white noise from the speakers.\nUsing the Timing option "CPU slow down" may fix this issue.
|
|
||||||
registry8=[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Dark Omen\1.0\Options\Options]\n"Selected"="4"\n"HardwareSelected"="252"\n"SoftwareSelected"="228"\n"MMXSelected"="256"\n"ToolTips"="1"\n"MusicVolume"="408"\n"SFXVolume"="816"\n"SoftwareSoundQuality"="2"\n"SoftwareParticleQuality"="2"\n"MMXSoundQuality"="2"\n"MMXParticaleQuality"="1"\n"HardwareSoundQuality"="2"\n"HardwareParticleQuality"="2"\n"InformationNum"="11"\n
|
|
||||||
ver8=0
|
|
||||||
monitorid8=-1
|
|
||||||
coord8=0
|
|
||||||
flag8=136314922
|
|
||||||
flagg8=1207959552
|
|
||||||
flagh8=9236
|
|
||||||
flagi8=1212153860
|
|
||||||
flagj8=4224
|
|
||||||
flagk8=67584
|
|
||||||
flagl8=0
|
|
||||||
flagm8=0
|
|
||||||
tflag8=0
|
|
||||||
dflag8=0
|
|
||||||
posx8=50
|
|
||||||
posy8=50
|
|
||||||
sizx8=800
|
|
||||||
sizy8=600
|
|
||||||
maxfps8=0
|
|
||||||
initts8=0
|
|
||||||
winver8=0
|
|
||||||
maxres8=-1
|
|
||||||
swapeffect8=0
|
|
||||||
maxddinterface8=7
|
|
||||||
slowratio8=2
|
|
||||||
initresw8=800
|
|
||||||
initresh8=600
|
|
||||||
[texture]
|
|
||||||
MinTexX=0
|
|
||||||
MinTexY=0
|
|
||||||
MaxTexX=0
|
|
||||||
MaxTexY=0
|
|
||||||
[keymapping]
|
|
||||||
timetoggle=
|
|
||||||
timefast=
|
|
||||||
timeslow=
|
|
||||||
altf4=
|
|
||||||
cliptoggle=
|
|
||||||
refresh=
|
|
||||||
logtoggle=
|
|
||||||
plogtoggle=
|
|
||||||
fpstoggle=
|
|
||||||
printscreen=
|
|
||||||
corner=
|
|
||||||
freezetime=
|
|
||||||
fullscreen=
|
|
||||||
workarea=
|
|
||||||
desktop=
|
|
||||||
minimize=
|
|
||||||
restore=
|
|
||||||
kill=
|
|
@ -1,32 +0,0 @@
|
|||||||
OnRun idx=8 prog="D:\Games\Warhammer 40.000 Dark Omen\PRG_ENG\ENGREL.EXE"
|
|
||||||
self elevation
|
|
||||||
export virtual registry
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=8 prog="D:\Games\Warhammer 40.000 Dark Omen\PRG_ENG\ENGREL.EXE"
|
|
||||||
self elevation
|
|
||||||
export virtual registry
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=8 prog="D:\Games\Warhammer 40.000 Dark Omen\PRG_ENG\ENGREL.EXE"
|
|
||||||
self elevation
|
|
||||||
export virtual registry
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=8 prog="D:\Games\Warhammer 40.000 Dark Omen\PRG_ENG\ENGREL.EXE"
|
|
||||||
self elevation
|
|
||||||
export virtual registry
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=9 prog="D:\Games\If-18 Carrier Strike Fighter\if18.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=9 prog="D:\Games\If-18 Carrier Strike Fighter\if18.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=9 prog="D:\Games\If-18 Carrier Strike Fighter\if18.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=9 prog="D:\Games\If-18 Carrier Strike Fighter\if18.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=9 prog="D:\Games\If-18 Carrier Strike Fighter\if18.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=9 prog="D:\Games\If-18 Carrier Strike Fighter\if19.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=9 prog="D:\Games\If-18 Carrier Strike Fighter\if19.exe"
|
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=9 prog="D:\Games\If-18 Carrier Strike Fighter\if19.exe"
|
|
||||||
setwindowshook mode
|
|
@ -1,16 +0,0 @@
|
|||||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Dark Omen\1.0\Options\Options]
|
|
||||||
"Selected"="4"
|
|
||||||
"HardwareSelected"="252"
|
|
||||||
"SoftwareSelected"="228"
|
|
||||||
"MMXSelected"="256"
|
|
||||||
"ToolTips"="1"
|
|
||||||
"MusicVolume"="408"
|
|
||||||
"SFXVolume"="816"
|
|
||||||
"SoftwareSoundQuality"="2"
|
|
||||||
"SoftwareParticleQuality"="2"
|
|
||||||
"MMXSoundQuality"="2"
|
|
||||||
"MMXParticaleQuality"="1"
|
|
||||||
"HardwareSoundQuality"="2"
|
|
||||||
"HardwareParticleQuality"="2"
|
|
||||||
"InformationNum"="11"
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
|||||||
[target]
|
[target]
|
||||||
title0=Crimson Skies
|
title0=Crimson Skies
|
||||||
path0=D:\Games\Crimson_Skies\crimson.exe
|
path0=F:\Games\Crimson Skies\crimson.exe
|
||||||
module0=
|
module0=
|
||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=7
|
ver0=7
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=140525606
|
flag0=677396518
|
||||||
flagg0=1207959568
|
flagg0=1207959568
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=4194596
|
flagi0=4194596
|
||||||
@ -30,3 +30,13 @@ notes0=
|
|||||||
flagk0=65536
|
flagk0=65536
|
||||||
swapeffect0=0
|
swapeffect0=0
|
||||||
registry0=
|
registry0=
|
||||||
|
startfolder0=
|
||||||
|
monitorid0=0
|
||||||
|
flagl0=512
|
||||||
|
flagm0=0
|
||||||
|
dflag0=0
|
||||||
|
maxddinterface0=7
|
||||||
|
slowratio0=1
|
||||||
|
scanline0=1
|
||||||
|
initresw0=0
|
||||||
|
initresh0=0
|
||||||
|
36
build/exports/DOSBox-0.74.dxw
Normal file
36
build/exports/DOSBox-0.74.dxw
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
[target]
|
||||||
|
title0=DOSBox-0.74
|
||||||
|
path0=C:\Program Files (x86)\DOSBox-0.74\DOSBox.exe
|
||||||
|
startfolder0=
|
||||||
|
launchpath0=
|
||||||
|
module0=sdl.dll
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
registry0=
|
||||||
|
ver0=0
|
||||||
|
monitorid0=-1
|
||||||
|
coord0=0
|
||||||
|
flag0=136314914
|
||||||
|
flagg0=1208090624
|
||||||
|
flagh0=20
|
||||||
|
flagi0=138412036
|
||||||
|
flagj0=4224
|
||||||
|
flagk0=4259840
|
||||||
|
flagl0=4489216
|
||||||
|
flagm0=0
|
||||||
|
tflag0=0
|
||||||
|
dflag0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
||||||
|
swapeffect0=0
|
||||||
|
maxddinterface0=7
|
||||||
|
slowratio0=2
|
||||||
|
scanline0=0
|
||||||
|
initresw0=800
|
||||||
|
initresh0=600
|
35
build/exports/Dinosaur Resurrection.dxw
Normal file
35
build/exports/Dinosaur Resurrection.dxw
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[target]
|
||||||
|
title0=Dinosaur Resurrection
|
||||||
|
path0=F:\Games\Dinosaur Resurrection\FALCOM\DIN\DIN_Win.EXE
|
||||||
|
startfolder0=
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
registry0=
|
||||||
|
ver0=0
|
||||||
|
monitorid0=-1
|
||||||
|
coord0=0
|
||||||
|
flag0=673185826
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=138412036
|
||||||
|
flagj0=4224
|
||||||
|
flagk0=65536
|
||||||
|
flagl0=8388608
|
||||||
|
flagm0=0
|
||||||
|
tflag0=0
|
||||||
|
dflag0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
||||||
|
swapeffect0=0
|
||||||
|
maxddinterface0=7
|
||||||
|
slowratio0=2
|
||||||
|
initresw0=640
|
||||||
|
initresh0=480
|
35
build/exports/Need for Speed 5 Porsche Unleashed.dxw
Normal file
35
build/exports/Need for Speed 5 Porsche Unleashed.dxw
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[target]
|
||||||
|
title0=Need for Speed 5 Porsche Unleashed
|
||||||
|
path0=F:\Games\Need for Speed 5\Porsche.exe
|
||||||
|
startfolder0=
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
registry0=
|
||||||
|
ver0=0
|
||||||
|
monitorid0=-1
|
||||||
|
coord0=0
|
||||||
|
flag0=136314914
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=138412036
|
||||||
|
flagj0=4224
|
||||||
|
flagk0=65536
|
||||||
|
flagl0=32768
|
||||||
|
flagm0=0
|
||||||
|
tflag0=0
|
||||||
|
dflag0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
||||||
|
swapeffect0=0
|
||||||
|
maxddinterface0=7
|
||||||
|
slowratio0=2
|
||||||
|
initresw0=800
|
||||||
|
initresh0=600
|
36
build/exports/Ultimate Spiderman.dxw
Normal file
36
build/exports/Ultimate Spiderman.dxw
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
[target]
|
||||||
|
title0=Ultimate Spiderman
|
||||||
|
path0=F:\Games\Ultimate Spiderman\USM.exe
|
||||||
|
startfolder0=
|
||||||
|
launchpath0=
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
notes0=
|
||||||
|
registry0=
|
||||||
|
ver0=0
|
||||||
|
monitorid0=-1
|
||||||
|
coord0=0
|
||||||
|
flag0=673202214
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=138412036
|
||||||
|
flagj0=1073746048
|
||||||
|
flagk0=65536
|
||||||
|
flagl0=1048576
|
||||||
|
flagm0=0
|
||||||
|
tflag0=0
|
||||||
|
dflag0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
||||||
|
winver0=0
|
||||||
|
maxres0=-1
|
||||||
|
swapeffect0=0
|
||||||
|
maxddinterface0=7
|
||||||
|
slowratio0=2
|
||||||
|
scanline0=0
|
||||||
|
initresw0=800
|
||||||
|
initresh0=600
|
@ -1,6 +1,12 @@
|
|||||||
OnRun idx=7 prog="F:\Games\Warhammer 40K Rites Of War\RoW.exe"
|
OnRun idx=23 prog="D:\Games\Crimson_Skies\crimson.exe"
|
||||||
setwindowshook mode
|
setwindowshook mode
|
||||||
OnRun idx=7 prog="F:\Games\Warhammer 40K Rites Of War\RoW.exe"
|
OnRun idx=23 prog="D:\Games\Crimson_Skies\crimson.exe"
|
||||||
setwindowshook mode
|
|
||||||
OnRun idx=7 prog="F:\Games\Warhammer 40K Rites Of War\RoW.exe"
|
|
||||||
setwindowshook mode
|
setwindowshook mode
|
||||||
|
OnRun idx=23 prog="D:\Games\Crimson_Skies\crimson.exe"
|
||||||
|
injectsuspended mode
|
||||||
|
InjectSuspended: exe=D:\Games\Crimson_Skies\crimson.exe dir=D:\Games\Crimson_Skies
|
||||||
|
Target handle=844
|
||||||
|
NT Header offset=F8
|
||||||
|
AddressOfEntryPoint=1F7056 ImageBase=400000
|
||||||
|
Thread start address=5f7056
|
||||||
|
wait cycle 0 eip=5f7056
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
<a href="Initialvirtualcolorsetting.html"><img src="img/arrow_left.png" alt="Previous"/></a>
|
<a href="Initialvirtualcolorsetting.html"><img src="img/arrow_left.png" alt="Previous"/></a>
|
||||||
|
|
||||||
<a href="Screenresolution.html"><img src="img/arrow_right.png" alt="Next"/></a>
|
<a href="Windowsizeposition.html"><img src="img/arrow_right.png" alt="Next"/></a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
|
@ -86,6 +86,18 @@
|
|||||||
<td width="1380" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Enables debug features. Not recommended!</span></p>
|
<td width="1380" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Enables debug features. Not recommended!</span></p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td width="163" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts17">/R:n</span></p>
|
||||||
|
</td>
|
||||||
|
<td width="1380" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Automatically starts DxWnd iconized to the system tray, runs the </span><span class="rvts19">n</span><span class="rvts6">th program in the configuration file, and exits DxWnd.</span></p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td width="163" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts17">/q</span></p>
|
||||||
|
</td>
|
||||||
|
<td width="1380" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Quiet mode. DxWnd will not produce message dialogs.</span></p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<p></p>
|
<p></p>
|
||||||
|
@ -89,7 +89,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td width="133" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts17">SAVELOAD</span></p>
|
<td width="133" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts17">SAVELOAD</span></p>
|
||||||
</td>
|
</td>
|
||||||
<td width="1160" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Optimizes the CPU load, but only for DirectDraw operations (DirectX1 to DirectX7).</span></p>
|
<td width="1160" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Optimizes the CPU load, but only for DirectDraw operations (DirectX1 to DirectX9).</span></p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr valign="top">
|
<tr valign="top">
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
<div id="topic_header_nav">
|
<div id="topic_header_nav">
|
||||||
<a href="Video.html"><img src="img/arrow_up.png" alt="Parent"/></a>
|
<a href="Video.html"><img src="img/arrow_up.png" alt="Parent"/></a>
|
||||||
|
|
||||||
<a href="Colormanagement.html"><img src="img/arrow_left.png" alt="Previous"/></a>
|
<a href="Windowsizeposition.html"><img src="img/arrow_left.png" alt="Previous"/></a>
|
||||||
|
|
||||||
<a href="Input.html"><img src="img/arrow_right.png" alt="Next"/></a>
|
<a href="Input.html"><img src="img/arrow_right.png" alt="Next"/></a>
|
||||||
|
|
||||||
|
100
build/help/Windowsizeposition.html
Normal file
100
build/help/Windowsizeposition.html
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>Window size & position</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta name="generator" content="HelpNDoc Personal Edition 4.6.2.573">
|
||||||
|
<meta name="keywords" content="">
|
||||||
|
|
||||||
|
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
|
||||||
|
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
|
||||||
|
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
|
||||||
|
<!--[if lte IE 8]>
|
||||||
|
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
|
||||||
|
<![endif]-->
|
||||||
|
<style type="text/css">
|
||||||
|
#topic_header
|
||||||
|
{
|
||||||
|
background-color: #EFEFEF;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript" src="js/jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/hnd.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function()
|
||||||
|
{
|
||||||
|
if (top.frames.length == 0)
|
||||||
|
{
|
||||||
|
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
|
||||||
|
top.location.href = "DxWnd.html?" + sTopicUrl;
|
||||||
|
}
|
||||||
|
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
|
||||||
|
{
|
||||||
|
top.FrameTOC.SelectTocItem("Windowsizeposition");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="topic_header">
|
||||||
|
<div id="topic_header_content">
|
||||||
|
<h1 id="topic_header_text">Window size & position</h1>
|
||||||
|
|
||||||
|
<div id="topic_breadcrumb">
|
||||||
|
<a href="Theconfigurationpanel.html">The configuration panel</a> ›› <a href="Video.html">Video</a> ›› </div>
|
||||||
|
</div>
|
||||||
|
<div id="topic_header_nav">
|
||||||
|
<a href="Video.html"><img src="img/arrow_up.png" alt="Parent"/></a>
|
||||||
|
|
||||||
|
<a href="Colormanagement.html"><img src="img/arrow_left.png" alt="Previous"/></a>
|
||||||
|
|
||||||
|
<a href="Screenresolution.html"><img src="img/arrow_right.png" alt="Next"/></a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
<div id="topic_content">
|
||||||
|
|
||||||
|
<p></p>
|
||||||
|
<div class="rvps2"><table width="100%" border="1" cellpadding="1" cellspacing="2" style="border-color: #000000; border-style: solid; border-spacing: 2px;">
|
||||||
|
<tr valign="top">
|
||||||
|
<td width="84" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Free</span></p>
|
||||||
|
</td>
|
||||||
|
<td width="1459" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Allows you to move and resize the window freely, with commands from inside the application (through system calls) or from external user commands (such as grabbing the window border to stretch or move the window).</span></p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td width="84" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Floating</span></p>
|
||||||
|
</td>
|
||||||
|
<td width="1459" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Move and resize operations are allowed only from user commands, but internal operations are intercepted and neutralized.</span></p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td width="84" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Locked size</span></p>
|
||||||
|
</td>
|
||||||
|
<td width="1459" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">It is only possible to move the window from user external commands, and the window can't be stretched or altered from internal operations.</span></p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr valign="top">
|
||||||
|
<td width="84" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">Anchored</span></p>
|
||||||
|
</td>
|
||||||
|
<td width="1459" style="border-color: #000000; border-style: solid; padding: 1px;"><p class="rvps2"><span class="rvts6">The window will remain fixed in its original position.</span></p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<p></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="topic_footer">
|
||||||
|
|
||||||
|
<div id="topic_footer_content">
|
||||||
|
Copyright © 2016 by GHO. All Rights Reserved.</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
File diff suppressed because one or more lines are too long
@ -456,6 +456,12 @@
|
|||||||
target="FrameMain">
|
target="FrameMain">
|
||||||
Color management</a>
|
Color management</a>
|
||||||
|
|
||||||
|
</li><li class="" id="Windowsizeposition" data="">
|
||||||
|
<a
|
||||||
|
href="Windowsizeposition.html"
|
||||||
|
target="FrameMain">
|
||||||
|
Window size & position</a>
|
||||||
|
|
||||||
</li><li class="" id="Screenresolution" data="">
|
</li><li class="" id="Screenresolution" data="">
|
||||||
<a
|
<a
|
||||||
href="Screenresolution.html"
|
href="Screenresolution.html"
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:37885dbe85ab16b1b2cf2c3b076fabcab8e7b4449805b687e6bf407f3d16fcf2
|
oid sha256:3ed113b19339a8f63d6ae25dfb0ed2e78b90369c80c3ddf16e507230f34a15da
|
||||||
size 54784
|
size 54784
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:1cdc266999665fbf022cd1853a03180d854014a4be9436b0b9faeaa6b8244aea
|
oid sha256:6ef0610692cc6fdcc6f1b8260e118c5974cd93e9fb41dd5070e1e30fb40956d3
|
||||||
size 55808
|
size 55808
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:aa3872f2e46abbb3f7eba695aeee5e2b93a454be8d56f8beaf63c06921910730
|
oid sha256:eb3a493b93714ec278186cdf8e71228e843b8681df6278f5da5cedb419f70e14
|
||||||
size 56320
|
size 56320
|
||||||
|
@ -1349,11 +1349,24 @@ fix: CreateDIBSection wrapper log messages
|
|||||||
fix: PREVENTMAXIMIZE window size checks: should avoid size bigger than initial size, bugged coding inhibited any growth.
|
fix: PREVENTMAXIMIZE window size checks: should avoid size bigger than initial size, bugged coding inhibited any growth.
|
||||||
fix: GUI setting of execution folder when running "Launcher" task.
|
fix: GUI setting of execution folder when running "Launcher" task.
|
||||||
|
|
||||||
v2.03.97.rc1/fx1-4:
|
v2.03.97.rc1/fx1-3:
|
||||||
fix: emulation of proper ddraw surface capabilities in GetSurfaceDesc() and GetCaps() methods. Seems to cope with needs of most (all?) games.
|
fix: emulation of proper ddraw surface capabilities in GetSurfaceDesc() and GetCaps() methods. Seems to cope with needs of most (all?) games.
|
||||||
fix: recovered handling of WM_ERASEBKGND message. Fixes missing backgrounds in "Adrenix" and "Adrenix 3D" games.
|
fix: recovered handling of WM_ERASEBKGND message. Fixes missing backgrounds in "Adrenix" and "Adrenix 3D" games.
|
||||||
fix: cleaned up and unified capability handling in DirectDrawSurface GetCaps and GetSurfaceDesc methods
|
fix: cleaned up and unified capability handling in DirectDrawSurface GetCaps and GetSurfaceDesc methods
|
||||||
add: warning message and update when running a program with non updated virtual registry settings.
|
add: warning message and update when running a program with non updated virtual registry settings.fix: LoadLibrary wrappers failed to clear the recursion flag, stopping the hook of new modules after a recursion case.
|
||||||
fix: LoadLibrary wrappers failed to clear the recursion flag, stopping the hook of new modules after a recursion case.
|
|
||||||
add: warning messages when closing DxWnd and possibility to cancel the operation
|
add: warning messages when closing DxWnd and possibility to cancel the operation
|
||||||
add: "Warn on exit" global flag to always force the warning message on exit
|
|
||||||
|
v2.03.98
|
||||||
|
add: fine tuning for vsync options: three modes (default: game native, force on, force off) three algorythms (ddraw WaitForVerticalBlank, loop controlled by GetScanLine, loop controlled by time delay)
|
||||||
|
add: fine tuning for WAIT options in ddraw Flip() and Blt() methods: three modes (default: game native, force on, force off)
|
||||||
|
fix: better support for non windowed + no emulation mode, surfaces and blit operations are left (almost) in original state, surface capabilities are left inaltered
|
||||||
|
fix: added missing recovery on surface lost
|
||||||
|
fix: some missing or wrong logs
|
||||||
|
fix: suppression of WS_EX_TOPMOST flag in all conditions for UNLOCKZORDER mode
|
||||||
|
fix: SUPPRESSOVERLAY flag applied also to D3D capabilities from D3D GetDeviceCaps() method
|
||||||
|
add: added more API hookers in IMAGEHLP.DLL bypass
|
||||||
|
fix: fixed logic to hook WindowProc routines for main window, childs and dialogs.
|
||||||
|
fix: more frequent updates of window coordinates to avoid scaling errors
|
||||||
|
fix: fixed CreateDialogIndirectParam and CreateDialogParam wrappers to make inner windows properly scaled (fixes red Alert 2)
|
||||||
|
fix: recovered DEFAULTMESSAGES option
|
||||||
|
fix: normalized output for ddraw GetScanLine() method
|
@ -9,6 +9,7 @@
|
|||||||
#include "dxhelper.h"
|
#include "dxhelper.h"
|
||||||
|
|
||||||
extern LPDIRECTDRAWSURFACE lpDDSEmu_Prim;
|
extern LPDIRECTDRAWSURFACE lpDDSEmu_Prim;
|
||||||
|
extern BOOL bVSyncDone;
|
||||||
extern LPDIRECTDRAW lpPrimaryDD;
|
extern LPDIRECTDRAW lpPrimaryDD;
|
||||||
extern Blt_Type pBlt;
|
extern Blt_Type pBlt;
|
||||||
extern ReleaseS_Type pReleaseSMethod(int);
|
extern ReleaseS_Type pReleaseSMethod(int);
|
||||||
@ -40,8 +41,6 @@ static HRESULT sBltNoPrimary(int dxversion, Blt_Type pBlt, char *api, LPDIRECTDR
|
|||||||
RECT srcrect;
|
RECT srcrect;
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
BOOL FromScreen;
|
BOOL FromScreen;
|
||||||
//extern PrimaryBlt_Type pPrimaryBlt;
|
|
||||||
//CkArg arg;
|
|
||||||
|
|
||||||
FromScreen=dxwss.IsAPrimarySurface(lpddssrc);
|
FromScreen=dxwss.IsAPrimarySurface(lpddssrc);
|
||||||
|
|
||||||
@ -194,7 +193,7 @@ static HRESULT sBltToPrimary(int dxversion, Blt_Type pBlt, char *api, LPDIRECTDR
|
|||||||
else
|
else
|
||||||
if(dxw.HandleFPS()) return DD_OK;
|
if(dxw.HandleFPS()) return DD_OK;
|
||||||
if(dxw.dwFlags5 & NOBLT) return DD_OK;
|
if(dxw.dwFlags5 & NOBLT) return DD_OK;
|
||||||
|
|
||||||
destrect=dxw.MapWindowRect(lpdestrect);
|
destrect=dxw.MapWindowRect(lpdestrect);
|
||||||
OutTraceB("DESTRECT=(%d,%d)-(%d,%d) Screen=(%dx%d)\n",
|
OutTraceB("DESTRECT=(%d,%d)-(%d,%d) Screen=(%dx%d)\n",
|
||||||
destrect.left, destrect.top, destrect.right, destrect.bottom,
|
destrect.left, destrect.top, destrect.right, destrect.bottom,
|
||||||
@ -207,20 +206,32 @@ static HRESULT sBltToPrimary(int dxversion, Blt_Type pBlt, char *api, LPDIRECTDR
|
|||||||
}
|
}
|
||||||
|
|
||||||
// =========================
|
// =========================
|
||||||
// Blit to primary direct surface
|
// Blit to primary direct or fullscreen surface
|
||||||
// =========================
|
// =========================
|
||||||
|
|
||||||
if(!(dxw.dwFlags1 & (EMULATESURFACE|EMULATEBUFFER))){
|
if(!dxw.IsEmulated){
|
||||||
res=DD_OK;
|
res=DD_OK;
|
||||||
|
|
||||||
|
if((dxw.dwFlags1 & SAVELOAD) || (dxw.dwFlags8 & FORCEVSYNC)) {
|
||||||
|
HRESULT res2;
|
||||||
|
if(!bVSyncDone){
|
||||||
|
if(res2=lpPrimaryDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN , 0))
|
||||||
|
OutTraceE("WaitForVerticalBlank ERROR: res=%x\n", res2);
|
||||||
|
}
|
||||||
|
bVSyncDone = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(dxw.Windowize) lpdestrect = &destrect;
|
||||||
|
|
||||||
// blit only when source and dest surface are different. Should make ScreenRefresh faster.
|
// blit only when source and dest surface are different. Should make ScreenRefresh faster.
|
||||||
if (lpdds != lpddssrc) {
|
if (lpdds != lpddssrc) {
|
||||||
dxw.ShowOverlay(lpddssrc);
|
dxw.ShowOverlay(lpddssrc);
|
||||||
if (IsDebug) BlitTrace("PRIM-NOEMU", lpsrcrect, &destrect, __LINE__);
|
if (IsDebug) BlitTrace("PRIM-NOEMU", lpsrcrect, lpdestrect, __LINE__);
|
||||||
res=(*pPrimaryBlt)(dxversion, pBlt, lpdds, &destrect, lpddssrc, lpsrcrect);
|
res=(*pPrimaryBlt)(dxversion, pBlt, lpdds, lpdestrect, lpddssrc, lpsrcrect, lpddbltfx);
|
||||||
|
//res=(*pBlt)(lpdds, lpdestrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
||||||
}
|
}
|
||||||
if(res){
|
if(res){
|
||||||
BlitError(res, lpsrcrect, &destrect, __LINE__);
|
BlitError(res, lpsrcrect, lpdestrect, __LINE__);
|
||||||
if(IsDebug) {
|
if(IsDebug) {
|
||||||
DescribeSurface(lpdds, 0, "[DST]" , __LINE__);
|
DescribeSurface(lpdds, 0, "[DST]" , __LINE__);
|
||||||
if (lpddssrc) DescribeSurface(lpddssrc, 0, "[SRC]" , __LINE__); // lpddssrc could be NULL!!!
|
if (lpddssrc) DescribeSurface(lpddssrc, 0, "[SRC]" , __LINE__); // lpddssrc could be NULL!!!
|
||||||
@ -229,9 +240,9 @@ static HRESULT sBltToPrimary(int dxversion, Blt_Type pBlt, char *api, LPDIRECTDR
|
|||||||
if(res==DDERR_SURFACEBUSY){
|
if(res==DDERR_SURFACEBUSY){
|
||||||
(*pUnlockMethod(dxversion))(lpdds, NULL);
|
(*pUnlockMethod(dxversion))(lpdds, NULL);
|
||||||
if(lpddssrc) (*pUnlockMethod(dxversion))(lpdds, NULL);
|
if(lpddssrc) (*pUnlockMethod(dxversion))(lpdds, NULL);
|
||||||
if (IsDebug) BlitTrace("BUSY", lpsrcrect, &destrect, __LINE__);
|
if (IsDebug) BlitTrace("BUSY", lpsrcrect, lpdestrect, __LINE__);
|
||||||
res= (*pBlt)(lpdds, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
res= (*pBlt)(lpdds, lpdestrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
||||||
if (res) BlitError(res, lpsrcrect, &destrect, __LINE__);
|
if (res) BlitError(res, lpsrcrect, lpdestrect, __LINE__);
|
||||||
}
|
}
|
||||||
// Try to handle DDBLT_KEYSRC on primary surface
|
// Try to handle DDBLT_KEYSRC on primary surface
|
||||||
if((res==DDERR_INVALIDPARAMS) && (dwflags & DDBLT_KEYSRC)){
|
if((res==DDERR_INVALIDPARAMS) && (dwflags & DDBLT_KEYSRC)){
|
||||||
@ -239,22 +250,22 @@ static HRESULT sBltToPrimary(int dxversion, Blt_Type pBlt, char *api, LPDIRECTDR
|
|||||||
DDSURFACEDESC2 ddsd;
|
DDSURFACEDESC2 ddsd;
|
||||||
LPDIRECTDRAWSURFACE2 lpddsTmp;
|
LPDIRECTDRAWSURFACE2 lpddsTmp;
|
||||||
extern CreateSurface2_Type pCreateSurfaceMethod(int);
|
extern CreateSurface2_Type pCreateSurfaceMethod(int);
|
||||||
if (IsDebug) BlitTrace("KEYSRC", lpsrcrect, &destrect, __LINE__);
|
if (IsDebug) BlitTrace("KEYSRC", lpsrcrect, lpdestrect, __LINE__);
|
||||||
memset(&ddsd, 0, sizeof(ddsd));
|
memset(&ddsd, 0, sizeof(ddsd));
|
||||||
ddsd.dwSize = (dxversion < 4) ? sizeof(DDSURFACEDESC) : sizeof(DDSURFACEDESC2);
|
ddsd.dwSize = (dxversion < 4) ? sizeof(DDSURFACEDESC) : sizeof(DDSURFACEDESC2);
|
||||||
(*pGetSurfaceDescMethod())((LPDIRECTDRAWSURFACE2)lpddssrc, &ddsd);
|
(*pGetSurfaceDescMethod())((LPDIRECTDRAWSURFACE2)lpddssrc, &ddsd);
|
||||||
res=(*pCreateSurfaceMethod(dxversion))(lpPrimaryDD, &ddsd, (LPDIRECTDRAWSURFACE *)&lpddsTmp, NULL);
|
res=(*pCreateSurfaceMethod(dxversion))(lpPrimaryDD, &ddsd, (LPDIRECTDRAWSURFACE *)&lpddsTmp, NULL);
|
||||||
if(res) OutTraceE("CreateSurface: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__);
|
if(res) OutTraceE("CreateSurface: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__);
|
||||||
// copy background
|
// copy background
|
||||||
res= (*pBlt)((LPDIRECTDRAWSURFACE)lpddsTmp, lpsrcrect, lpdds, &destrect, DDBLT_WAIT, NULL);
|
res= (*pBlt)((LPDIRECTDRAWSURFACE)lpddsTmp, lpsrcrect, lpdds, lpdestrect, DDBLT_WAIT, NULL);
|
||||||
if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__);
|
if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__);
|
||||||
// overlay texture
|
// overlay texture
|
||||||
res= (*pBlt)((LPDIRECTDRAWSURFACE)lpddsTmp, lpsrcrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
res= (*pBlt)((LPDIRECTDRAWSURFACE)lpddsTmp, lpsrcrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
||||||
if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__);
|
if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__);
|
||||||
// copy back to destination
|
// copy back to destination
|
||||||
res= (*pBlt)(lpdds, &destrect, (LPDIRECTDRAWSURFACE)lpddsTmp, lpsrcrect, DDBLT_WAIT, lpddbltfx);
|
res= (*pBlt)(lpdds, lpdestrect, (LPDIRECTDRAWSURFACE)lpddsTmp, lpsrcrect, DDBLT_WAIT, lpddbltfx);
|
||||||
if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__);
|
if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__);
|
||||||
if (res) BlitError(res, lpsrcrect, &destrect, __LINE__);
|
if (res) BlitError(res, lpsrcrect, lpdestrect, __LINE__);
|
||||||
(*pReleaseSMethod(dxversion))((LPDIRECTDRAWSURFACE)lpddsTmp);
|
(*pReleaseSMethod(dxversion))((LPDIRECTDRAWSURFACE)lpddsTmp);
|
||||||
}
|
}
|
||||||
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
||||||
@ -271,8 +282,15 @@ static HRESULT sBltToPrimary(int dxversion, Blt_Type pBlt, char *api, LPDIRECTDR
|
|||||||
|
|
||||||
if(dxw.dwFlags5 & GDIMODE){
|
if(dxw.dwFlags5 & GDIMODE){
|
||||||
extern void BlitToWindow(HWND, LPDIRECTDRAWSURFACE);
|
extern void BlitToWindow(HWND, LPDIRECTDRAWSURFACE);
|
||||||
//if (lpdds != lpddssrc)
|
if((dxw.dwFlags1 & SAVELOAD) || (dxw.dwFlags8 & FORCEVSYNC)){
|
||||||
|
HRESULT res2;
|
||||||
|
if(!bVSyncDone){
|
||||||
|
if(res2=lpPrimaryDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN , 0))
|
||||||
|
OutTraceE("WaitForVerticalBlank ERROR: res=%x\n", res2);
|
||||||
|
}
|
||||||
|
bVSyncDone = FALSE;
|
||||||
BlitToWindow(dxw.GethWnd(), lpddssrc);
|
BlitToWindow(dxw.GethWnd(), lpddssrc);
|
||||||
|
}
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -363,8 +381,18 @@ static HRESULT sBltToPrimary(int dxversion, Blt_Type pBlt, char *api, LPDIRECTDR
|
|||||||
emurect.right <<= 1;
|
emurect.right <<= 1;
|
||||||
emurect.bottom <<= 1;
|
emurect.bottom <<= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((dxw.dwFlags1 & SAVELOAD) || (dxw.dwFlags8 & FORCEVSYNC)) {
|
||||||
|
HRESULT res2;
|
||||||
|
if(!bVSyncDone){
|
||||||
|
if(res2=lpPrimaryDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN , 0))
|
||||||
|
OutTraceE("WaitForVerticalBlank ERROR: res=%x\n", res2);
|
||||||
|
}
|
||||||
|
bVSyncDone = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (IsDebug) BlitTrace("BACK2PRIM", &emurect, &destrect, __LINE__);
|
if (IsDebug) BlitTrace("BACK2PRIM", &emurect, &destrect, __LINE__);
|
||||||
res=(*pPrimaryBlt)(dxversion, pBlt, lpDDSEmu_Prim, &destrect, lpDDSSource, &emurect);
|
res=(*pPrimaryBlt)(dxversion, pBlt, lpDDSEmu_Prim, &destrect, lpDDSSource, &emurect, NULL);
|
||||||
|
|
||||||
if (res) BlitError(res, &emurect, &destrect, __LINE__);
|
if (res) BlitError(res, &emurect, &destrect, __LINE__);
|
||||||
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK;
|
||||||
@ -428,6 +456,15 @@ HRESULT WINAPI sBlt(int dxversion, Blt_Type pBlt, char *api, LPDIRECTDRAWSURFACE
|
|||||||
OutTrace(sLog);
|
OutTrace(sLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(dxw.dwFlags8 & FORCEWAIT){
|
||||||
|
dwflags |= DDBLT_WAIT;
|
||||||
|
dwflags &= ~(DDBLT_ASYNC|DDBLT_DONOTWAIT);
|
||||||
|
}
|
||||||
|
if(dxw.dwFlags8 & FORCENOWAIT){
|
||||||
|
dwflags &= ~DDBLT_WAIT;
|
||||||
|
dwflags |= (DDBLT_ASYNC|DDBLT_DONOTWAIT);
|
||||||
|
}
|
||||||
|
|
||||||
if(ToPrim)
|
if(ToPrim)
|
||||||
res = sBltToPrimary(dxversion, pBlt, api, lpdds, lpdestrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx, isFlipping);
|
res = sBltToPrimary(dxversion, pBlt, api, lpdds, lpdestrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx, isFlipping);
|
||||||
else
|
else
|
||||||
|
1046
dll/ddcreates.cpp
Normal file
1046
dll/ddcreates.cpp
Normal file
File diff suppressed because it is too large
Load Diff
1124
dll/ddraw.cpp
1124
dll/ddraw.cpp
File diff suppressed because it is too large
Load Diff
@ -136,12 +136,12 @@ static char *Flag7Names[32]={
|
|||||||
"SSUPPRESSDIERRORS", "HOOKNORUN", "FIXBINDTEXTURE", "ENUM16BITMODES",
|
"SSUPPRESSDIERRORS", "HOOKNORUN", "FIXBINDTEXTURE", "ENUM16BITMODES",
|
||||||
"SHAREDKEYBOARD", "HOOKNOUPDATE", "HOOKGLUT32", "INITIALRES",
|
"SHAREDKEYBOARD", "HOOKNOUPDATE", "HOOKGLUT32", "INITIALRES",
|
||||||
"MAXIMUMRES", "LOCKCOLORDEPTH", "FIXSMACKLOOP", "FIXFREELIBRARY",
|
"MAXIMUMRES", "LOCKCOLORDEPTH", "FIXSMACKLOOP", "FIXFREELIBRARY",
|
||||||
"ANCHORED", "", "", "",
|
"ANCHORED", "CLEARTEXTUREFOURCC", "NODDEXCLUSIVEMODE", "COPYNOSHIMS",
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *Flag8Names[32]={
|
static char *Flag8Names[32]={
|
||||||
"", "", "", "",
|
"FORCEWAIT", "FORCENOWAIT", "FORCEVSYNC", "FORCENOVSYNC",
|
||||||
"", "", "", "",
|
"VSYNCSCANLINES", "", "", "",
|
||||||
"", "", "", "",
|
"", "", "", "",
|
||||||
"", "", "", "",
|
"", "", "", "",
|
||||||
"", "", "", "",
|
"", "", "", "",
|
||||||
@ -1398,9 +1398,9 @@ void HookInit(TARGETMAP *target, HWND hwnd)
|
|||||||
OSVERSIONINFO osinfo;
|
OSVERSIONINFO osinfo;
|
||||||
strcpy(sInfo, "");
|
strcpy(sInfo, "");
|
||||||
if(hwnd) sprintf(sInfo, " hWnd=%x ParentWnd=%x desktop=%x", hwnd, dxw.hParentWnd, GetDesktopWindow());
|
if(hwnd) sprintf(sInfo, " hWnd=%x ParentWnd=%x desktop=%x", hwnd, dxw.hParentWnd, GetDesktopWindow());
|
||||||
OutTrace("HookInit: path=\"%s\" module=\"%s\" dxversion=%s pos=(%d,%d) size=(%d,%d) monitor=%d%s\n",
|
OutTrace("HookInit: path=\"%s\" module=\"%s\" dxversion=%s pos=(%d,%d) size=(%d,%d) init-max=(%d,%d) monitor=%d%s\n",
|
||||||
target->path, target->module, dxversions[dxw.dwTargetDDVersion],
|
target->path, target->module, dxversions[dxw.dwTargetDDVersion],
|
||||||
target->posx, target->posy, target->sizx, target->sizy, target->monitorid, sInfo);
|
target->posx, target->posy, target->sizx, target->sizy, target->resw, target->resh, target->monitorid, sInfo);
|
||||||
osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||||
if(GetVersionEx(&osinfo)){
|
if(GetVersionEx(&osinfo)){
|
||||||
OutTrace("OS=(%d.%d) build=%d platform=%d service pack=%s\n",
|
OutTrace("OS=(%d.%d) build=%d platform=%d service pack=%s\n",
|
||||||
@ -1411,6 +1411,7 @@ void HookInit(TARGETMAP *target, HWND hwnd)
|
|||||||
if (dxw.dwFlags7 & LIMITDDRAW) OutTrace("HookInit: max supported IDidrectDrawInterface=%d\n", dxw.MaxDdrawInterface);
|
if (dxw.dwFlags7 & LIMITDDRAW) OutTrace("HookInit: max supported IDidrectDrawInterface=%d\n", dxw.MaxDdrawInterface);
|
||||||
if (dxw.dwFlags7 & CPUSLOWDOWN) OutTrace("HookInit: CPU slowdown ratio 1:%d\n", dxw.SlowRatio);
|
if (dxw.dwFlags7 & CPUSLOWDOWN) OutTrace("HookInit: CPU slowdown ratio 1:%d\n", dxw.SlowRatio);
|
||||||
if (dxw.dwFlags7 & CPUMAXUSAGE) OutTrace("HookInit: CPU maxusage ratio 1:%d\n", dxw.SlowRatio);
|
if (dxw.dwFlags7 & CPUMAXUSAGE) OutTrace("HookInit: CPU maxusage ratio 1:%d\n", dxw.SlowRatio);
|
||||||
|
if (dxw.dwFlags8 & VSYNCSCANLINE) OutTrace("HookInit: VSync Scanline=%d\n", dxw.ScanLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hwnd && IsDebug){
|
if (hwnd && IsDebug){
|
||||||
|
@ -94,6 +94,7 @@ void dxwCore::InitTarget(TARGETMAP *target)
|
|||||||
dwFlags8 = target->flags8;
|
dwFlags8 = target->flags8;
|
||||||
dwTFlags = target->tflags;
|
dwTFlags = target->tflags;
|
||||||
Windowize = (dwFlags2 & WINDOWIZE) ? TRUE : FALSE;
|
Windowize = (dwFlags2 & WINDOWIZE) ? TRUE : FALSE;
|
||||||
|
IsEmulated = (dwFlags1 & (EMULATESURFACE|EMULATEBUFFER)) ? TRUE : FALSE;
|
||||||
IsVisible = TRUE;
|
IsVisible = TRUE;
|
||||||
if(dwFlags3 & FULLSCREENONLY) FullScreen=TRUE;
|
if(dwFlags3 & FULLSCREENONLY) FullScreen=TRUE;
|
||||||
gsModules = target->module;
|
gsModules = target->module;
|
||||||
@ -143,6 +144,7 @@ void dxwCore::InitTarget(TARGETMAP *target)
|
|||||||
dwScreenHeight = 600;
|
dwScreenHeight = 600;
|
||||||
|
|
||||||
SlowRatio = target->SlowRatio;
|
SlowRatio = target->SlowRatio;
|
||||||
|
ScanLine = target->ScanLine;
|
||||||
|
|
||||||
GDIEmulationMode = GDIMODE_NONE; // default
|
GDIEmulationMode = GDIMODE_NONE; // default
|
||||||
if (dwFlags2 & GDISTRETCHED) GDIEmulationMode = GDIMODE_STRETCHED;
|
if (dwFlags2 & GDISTRETCHED) GDIEmulationMode = GDIMODE_STRETCHED;
|
||||||
@ -693,6 +695,27 @@ void dxwCore::VSyncWait()
|
|||||||
if(step >= iRefreshDelayCount) step=0;
|
if(step >= iRefreshDelayCount) step=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dxwCore::VSyncWaitLine(DWORD ScanLine)
|
||||||
|
{
|
||||||
|
extern LPDIRECTDRAW lpPrimaryDD;
|
||||||
|
static DWORD iLastScanLine = 0;
|
||||||
|
DWORD iCurrentScanLine;
|
||||||
|
if (!lpPrimaryDD) return;
|
||||||
|
while(1){
|
||||||
|
HRESULT res;
|
||||||
|
if(res=lpPrimaryDD->GetScanLine(&iCurrentScanLine)) {
|
||||||
|
OutTraceE("VSyncWaitLine: GetScanLine ERROR res=%x\n", res);
|
||||||
|
iLastScanLine = 0;
|
||||||
|
break; // error
|
||||||
|
}
|
||||||
|
if((iLastScanLine <= ScanLine) && (iCurrentScanLine > ScanLine)) {
|
||||||
|
OutTraceB("VSyncWaitLine: line=%d last=%d\n", iCurrentScanLine, iLastScanLine);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
iLastScanLine = iCurrentScanLine;
|
||||||
|
(*pSleep)(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static float fMul[17]={2.14F, 1.95F, 1.77F, 1.61F, 1.46F, 1.33F, 1.21F, 1.10F, 1.00F, 0.91F, 0.83F, 0.75F, 0.68F, 0.62F, 0.56F, 0.51F, 0.46F};
|
static float fMul[17]={2.14F, 1.95F, 1.77F, 1.61F, 1.46F, 1.33F, 1.21F, 1.10F, 1.00F, 0.91F, 0.83F, 0.75F, 0.68F, 0.62F, 0.56F, 0.51F, 0.46F};
|
||||||
|
|
||||||
@ -1194,12 +1217,12 @@ void dxwCore::FixStyle(char *ApiName, HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||||||
if (dxw.dwFlags1 & LOCKWINSTYLE){ // set to current value
|
if (dxw.dwFlags1 & LOCKWINSTYLE){ // set to current value
|
||||||
lpSS->styleNew= (*pGetWindowLong)(hwnd, GWL_EXSTYLE);
|
lpSS->styleNew= (*pGetWindowLong)(hwnd, GWL_EXSTYLE);
|
||||||
}
|
}
|
||||||
if ((dxw.dwFlags1 & PREVENTMAXIMIZE) && (hwnd==hWnd)){ // disable maximize settings
|
if ((dxw.dwFlags5 & UNLOCKZORDER) && (hwnd==hWnd)){ // disable maximize settings
|
||||||
if (lpSS->styleNew & WS_EX_TOPMOST){
|
if (lpSS->styleNew & WS_EX_TOPMOST){
|
||||||
OutTraceDW("%s: prevent EXSTYLE topmost style\n", ApiName);
|
OutTraceDW("%s: prevent EXSTYLE topmost style\n", ApiName);
|
||||||
lpSS->styleNew &= ~WS_EX_TOPMOST;
|
lpSS->styleNew &= ~WS_EX_TOPMOST;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -140,6 +140,7 @@ public: // methods
|
|||||||
void MapKeysInit();
|
void MapKeysInit();
|
||||||
void SetVSyncDelays(UINT);
|
void SetVSyncDelays(UINT);
|
||||||
void VSyncWait();
|
void VSyncWait();
|
||||||
|
void VSyncWaitLine(DWORD);
|
||||||
void DumpDesktopStatus();
|
void DumpDesktopStatus();
|
||||||
void ToggleFreezedTime();
|
void ToggleFreezedTime();
|
||||||
void GetMonitorWorkarea(LPRECT, BOOL);
|
void GetMonitorWorkarea(LPRECT, BOOL);
|
||||||
@ -150,6 +151,7 @@ public: // simple data variables
|
|||||||
int MonitorId;
|
int MonitorId;
|
||||||
BOOL Windowize;
|
BOOL Windowize;
|
||||||
BOOL IsVisible;
|
BOOL IsVisible;
|
||||||
|
BOOL IsEmulated;
|
||||||
DDPIXELFORMAT ActualPixelFormat;
|
DDPIXELFORMAT ActualPixelFormat;
|
||||||
DDPIXELFORMAT VirtualPixelFormat;
|
DDPIXELFORMAT VirtualPixelFormat;
|
||||||
DWORD dwDDVersion;
|
DWORD dwDDVersion;
|
||||||
@ -191,6 +193,7 @@ public: // simple data variables
|
|||||||
short Coordinates;
|
short Coordinates;
|
||||||
short MaxScreenRes;
|
short MaxScreenRes;
|
||||||
short SlowRatio;
|
short SlowRatio;
|
||||||
|
short ScanLine;
|
||||||
HDC RealHDC;
|
HDC RealHDC;
|
||||||
HDC VirtualHDC;
|
HDC VirtualHDC;
|
||||||
int GDIEmulationMode;
|
int GDIEmulationMode;
|
||||||
@ -198,6 +201,8 @@ public: // simple data variables
|
|||||||
RECT VirtualDesktop;
|
RECT VirtualDesktop;
|
||||||
BOOL bHintActive;
|
BOOL bHintActive;
|
||||||
BOOL bAutoScale;
|
BOOL bAutoScale;
|
||||||
|
DWORD dwRealScreenWidth;
|
||||||
|
DWORD dwRealScreenHeight;
|
||||||
|
|
||||||
// Implementation
|
// Implementation
|
||||||
protected:
|
protected:
|
||||||
|
@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#include "TlHelp32.h"
|
#include "TlHelp32.h"
|
||||||
|
|
||||||
#define VERSION "2.03.97.fx2"
|
#define VERSION "2.03.98"
|
||||||
|
|
||||||
#define DDTHREADLOCK 1
|
#define DDTHREADLOCK 1
|
||||||
//#define LOCKTHREADS
|
//#define LOCKTHREADS
|
||||||
|
Binary file not shown.
@ -257,6 +257,10 @@
|
|||||||
RelativePath=".\ddblit.cpp"
|
RelativePath=".\ddblit.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\ddcreates.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\ddraw.cpp"
|
RelativePath=".\ddraw.cpp"
|
||||||
>
|
>
|
||||||
|
@ -1,65 +0,0 @@
|
|||||||
<?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="GHO-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="GHO-PC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
</VisualStudioUserFile>
|
|
@ -2101,6 +2101,12 @@ HRESULT WINAPI extD3DGetDeviceCaps(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceT
|
|||||||
pCaps->MaxPixelShader30InstructionSlots);
|
pCaps->MaxPixelShader30InstructionSlots);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(dxw.dwFlags7 & SUPPRESSOVERLAY){
|
||||||
|
if(pCaps->Caps & D3DCAPS_OVERLAY) OutTraceDW("GetDeviceCaps(%d): SUPPRESS OVERLAY CAP\n");
|
||||||
|
pCaps->Caps &= ~D3DCAPS_OVERLAY;
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
13
dll/hddraw.h
13
dll/hddraw.h
@ -51,6 +51,7 @@ typedef HRESULT (WINAPI *GetSurfaceFromDC_Type)(LPDIRECTDRAW, HDC, LPDIRECTDRAWS
|
|||||||
typedef HRESULT (WINAPI *RestoreAllSurfaces_Type)(LPDIRECTDRAW);
|
typedef HRESULT (WINAPI *RestoreAllSurfaces_Type)(LPDIRECTDRAW);
|
||||||
typedef HRESULT (WINAPI *TestCooperativeLevel_Type)(LPDIRECTDRAW);
|
typedef HRESULT (WINAPI *TestCooperativeLevel_Type)(LPDIRECTDRAW);
|
||||||
typedef HRESULT (WINAPI *GetDeviceIdentifier_Type)(LPDIRECTDRAW, LPDDDEVICEIDENTIFIER, DWORD);
|
typedef HRESULT (WINAPI *GetDeviceIdentifier_Type)(LPDIRECTDRAW, LPDDDEVICEIDENTIFIER, DWORD);
|
||||||
|
typedef HRESULT (WINAPI *GetScanLine_Type)(LPDIRECTDRAW, LPDWORD);
|
||||||
// STDMETHOD(StartModeTest)(THIS_ LPSIZE, DWORD, DWORD ) PURE;
|
// STDMETHOD(StartModeTest)(THIS_ LPSIZE, DWORD, DWORD ) PURE;
|
||||||
// STDMETHOD(EvaluateMode)(THIS_ DWORD, DWORD * ) PURE;
|
// STDMETHOD(EvaluateMode)(THIS_ DWORD, DWORD * ) PURE;
|
||||||
|
|
||||||
@ -125,15 +126,15 @@ extern void HookTexture(LPVOID *, int);
|
|||||||
extern int Set_dwSize_From_Surface();
|
extern int Set_dwSize_From_Surface();
|
||||||
|
|
||||||
extern void SetBltTransformations(int);
|
extern void SetBltTransformations(int);
|
||||||
extern HRESULT WINAPI PrimaryBlt(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT);
|
extern HRESULT WINAPI PrimaryBlt(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, LPDDBLTFX);
|
||||||
extern HRESULT WINAPI PrimaryNoBlt(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT);
|
extern HRESULT WINAPI PrimaryNoBlt(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, LPDDBLTFX);
|
||||||
extern HRESULT WINAPI PrimaryStretchBlt(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT);
|
extern HRESULT WINAPI PrimaryStretchBlt(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, LPDDBLTFX);
|
||||||
extern HRESULT WINAPI PrimaryFastBlt(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT);
|
extern HRESULT WINAPI PrimaryFastBlt(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, LPDDBLTFX);
|
||||||
extern HRESULT WINAPI PrimaryBilinearBlt(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT);
|
extern HRESULT WINAPI PrimaryBilinearBlt(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, LPDDBLTFX);
|
||||||
|
|
||||||
typedef HRESULT (WINAPI *EmuBlt_Type)(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, DWORD, LPVOID);
|
typedef HRESULT (WINAPI *EmuBlt_Type)(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, DWORD, LPVOID);
|
||||||
typedef HRESULT (WINAPI *RevBlt_Type)(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT);
|
typedef HRESULT (WINAPI *RevBlt_Type)(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT);
|
||||||
typedef HRESULT (WINAPI *PrimaryBlt_Type)(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT);
|
typedef HRESULT (WINAPI *PrimaryBlt_Type)(int, Blt_Type, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, LPDDBLTFX);
|
||||||
|
|
||||||
extern EmuBlt_Type pEmuBlt;
|
extern EmuBlt_Type pEmuBlt;
|
||||||
extern RevBlt_Type pRevBlt;
|
extern RevBlt_Type pRevBlt;
|
||||||
|
@ -9,14 +9,40 @@
|
|||||||
|
|
||||||
typedef PIMAGE_DEBUG_INFORMATION (WINAPI *MapDebugInformation_Type)(HANDLE, PCSTR, PCSTR, ULONG);
|
typedef PIMAGE_DEBUG_INFORMATION (WINAPI *MapDebugInformation_Type)(HANDLE, PCSTR, PCSTR, ULONG);
|
||||||
typedef BOOL (WINAPI *UnmapDebugInformation_Type)(PIMAGE_DEBUG_INFORMATION);
|
typedef BOOL (WINAPI *UnmapDebugInformation_Type)(PIMAGE_DEBUG_INFORMATION);
|
||||||
|
typedef BOOL (WINAPI *SymInitialize_Type)(HANDLE, PCTSTR, BOOL);
|
||||||
|
typedef BOOL (WINAPI *SymCleanup_Type)(HANDLE);
|
||||||
|
typedef BOOL (WINAPI *StackWalk_Type)(DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID, PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE);
|
||||||
|
typedef LPVOID (WINAPI *SymFunctionTableAccess_Type)(HANDLE, DWORD);
|
||||||
|
typedef LPVOID (WINAPI *SymGetModuleBase_Type)(HANDLE, DWORD);
|
||||||
|
typedef BOOL (WINAPI *SymGetSymFromAddr_Type)(HANDLE, DWORD, LPDWORD, PIMAGEHLP_SYMBOL);
|
||||||
|
|
||||||
PIMAGE_DEBUG_INFORMATION WINAPI extMapDebugInformation(HANDLE, PCSTR, PCSTR, ULONG);
|
PIMAGE_DEBUG_INFORMATION WINAPI extMapDebugInformation(HANDLE, PCSTR, PCSTR, ULONG);
|
||||||
BOOL WINAPI extUnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
|
BOOL WINAPI extUnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
|
||||||
|
BOOL WINAPI extSymInitialize(HANDLE, PCTSTR, BOOL);
|
||||||
|
BOOL WINAPI extSymCleanup(HANDLE);
|
||||||
|
BOOL WINAPI extStackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID, PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE);
|
||||||
|
LPVOID WINAPI extSymFunctionTableAccess(HANDLE, DWORD);
|
||||||
|
LPVOID WINAPI extSymGetModuleBase(HANDLE, DWORD);
|
||||||
|
BOOL WINAPI extSymGetSymFromAddr(HANDLE, DWORD, LPDWORD, PIMAGEHLP_SYMBOL);
|
||||||
|
|
||||||
MapDebugInformation_Type pMapDebugInformation = NULL;
|
MapDebugInformation_Type pMapDebugInformation = NULL;
|
||||||
UnmapDebugInformation_Type pUnmapDebugInformation = NULL;
|
UnmapDebugInformation_Type pUnmapDebugInformation = NULL;
|
||||||
|
SymInitialize_Type pSymInitialize;
|
||||||
|
SymCleanup_Type pSymCleanup;
|
||||||
|
StackWalk_Type pStackWalk;
|
||||||
|
SymFunctionTableAccess_Type pSymFunctionTableAccess;
|
||||||
|
SymGetModuleBase_Type pSymGetModuleBase;
|
||||||
|
SymGetSymFromAddr_Type pSymGetSymFromAddr;
|
||||||
|
|
||||||
static HookEntryEx_Type Hooks[]={
|
static HookEntryEx_Type Hooks[]={
|
||||||
{HOOK_IAT_CANDIDATE, 0, "MapDebugInformation", (FARPROC)NULL, (FARPROC *)&pMapDebugInformation, (FARPROC)extMapDebugInformation},
|
{HOOK_IAT_CANDIDATE, 0, "MapDebugInformation", (FARPROC)NULL, (FARPROC *)&pMapDebugInformation, (FARPROC)extMapDebugInformation},
|
||||||
{HOOK_IAT_CANDIDATE, 0, "UnmapDebugInformation", (FARPROC)NULL, (FARPROC *)&pUnmapDebugInformation, (FARPROC)extUnmapDebugInformation},
|
{HOOK_IAT_CANDIDATE, 0, "UnmapDebugInformation", (FARPROC)NULL, (FARPROC *)&pUnmapDebugInformation, (FARPROC)extUnmapDebugInformation},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "SymInitialize", (FARPROC)NULL, (FARPROC *)&pSymInitialize, (FARPROC)extSymInitialize},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "SymCleanup", (FARPROC)NULL, (FARPROC *)&pSymCleanup, (FARPROC)extSymCleanup},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "StackWalk", (FARPROC)NULL, (FARPROC *)&pStackWalk, (FARPROC)extStackWalk},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "SymFunctionTableAccess", (FARPROC)NULL, (FARPROC *)&pSymFunctionTableAccess, (FARPROC)extSymFunctionTableAccess},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "SymGetModuleBase", (FARPROC)NULL, (FARPROC *)&pSymGetModuleBase, (FARPROC)extSymGetModuleBase},
|
||||||
|
{HOOK_IAT_CANDIDATE, 0, "SymGetSymFromAddr", (FARPROC)NULL, (FARPROC *)&pSymGetSymFromAddr, (FARPROC)extSymGetSymFromAddr},
|
||||||
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
|
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -60,3 +86,44 @@ BOOL WINAPI extUnmapDebugInformation(PIMAGE_DEBUG_INFORMATION DebugInfo)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI extSymInitialize(HANDLE hProcess, PCTSTR UserSearchPath, BOOL fInvadeProcess)
|
||||||
|
{
|
||||||
|
OutTrace("SymInitialize: hprocess=%x usrsearchpath=\"%s\" invadeproc=%x\n", hProcess, UserSearchPath, fInvadeProcess);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI extSymCleanup(HANDLE hProcess)
|
||||||
|
{
|
||||||
|
OutTrace("SymCleanup: hprocess=%x\n", hProcess);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI extStackWalk(DWORD MachineType, HANDLE hProcess, HANDLE hThread, LPSTACKFRAME StackFrame, LPVOID ContextRecord,
|
||||||
|
PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine, PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
|
||||||
|
PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine, PTRANSLATE_ADDRESS_ROUTINE TranslateAddress)
|
||||||
|
{
|
||||||
|
OutTrace("SymCleanup: hprocess=%x\n", hProcess);
|
||||||
|
// too complex, pretend we have an error
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
LPVOID WINAPI extSymFunctionTableAccess(HANDLE hProcess, DWORD AddrBase)
|
||||||
|
{
|
||||||
|
OutTrace("SymFunctionTableAccess: hprocess=%x addrbase=%x\n", hProcess, AddrBase);
|
||||||
|
// too dangerous, pretend we have an error
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
LPVOID WINAPI extSymGetModuleBase(HANDLE hProcess, DWORD AddrBase)
|
||||||
|
{
|
||||||
|
OutTrace("SymGetModuleBase: hprocess=%x addrbase=%x\n", hProcess, AddrBase);
|
||||||
|
// too dangerous, pretend we have an error
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI extSymGetSymFromAddr(HANDLE hProcess, DWORD Address, LPDWORD Displacement, PIMAGEHLP_SYMBOL Symbol)
|
||||||
|
{
|
||||||
|
OutTrace("SymGetSymFromAddr: hprocess=%x address=%x\n", hProcess, Address);
|
||||||
|
// too dangerous, pretend we have an error
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
103
dll/user32.cpp
103
dll/user32.cpp
@ -238,7 +238,6 @@ static HookEntryEx_Type Hooks[]={
|
|||||||
//{HOOK_IAT_CANDIDATE, 0, "IsZoomed", (FARPROC)NULL, (FARPROC *)&pIsZoomed, (FARPROC)extIsZoomed},
|
//{HOOK_IAT_CANDIDATE, 0, "IsZoomed", (FARPROC)NULL, (FARPROC *)&pIsZoomed, (FARPROC)extIsZoomed},
|
||||||
//{HOOK_HOT_CANDIDATE, 0, "IsIconic", (FARPROC)IsIconic, (FARPROC *)&pIsIconic, (FARPROC)extIsIconic},
|
//{HOOK_HOT_CANDIDATE, 0, "IsIconic", (FARPROC)IsIconic, (FARPROC *)&pIsIconic, (FARPROC)extIsIconic},
|
||||||
{HOOK_HOT_CANDIDATE, 0, "ScrollDC", (FARPROC)NULL, (FARPROC *)&pScrollDC, (FARPROC)extScrollDC},
|
{HOOK_HOT_CANDIDATE, 0, "ScrollDC", (FARPROC)NULL, (FARPROC *)&pScrollDC, (FARPROC)extScrollDC},
|
||||||
//{HOOK_IAT_CANDIDATE, 0, "mouse_event", (FARPROC)NULL, (FARPROC *)&pmouse_event, (FARPROC)extmouse_event},
|
|
||||||
|
|
||||||
// both added to fix the Galapagos menu bar, but with no success !!!!
|
// both added to fix the Galapagos menu bar, but with no success !!!!
|
||||||
{HOOK_HOT_CANDIDATE, 0, "ShowScrollBar", (FARPROC)ShowScrollBar, (FARPROC *)&pShowScrollBar, (FARPROC)extShowScrollBar},
|
{HOOK_HOT_CANDIDATE, 0, "ShowScrollBar", (FARPROC)ShowScrollBar, (FARPROC *)&pShowScrollBar, (FARPROC)extShowScrollBar},
|
||||||
@ -874,8 +873,10 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon
|
|||||||
}
|
}
|
||||||
// v2.02.32: disable topmost for main window only
|
// v2.02.32: disable topmost for main window only
|
||||||
if(dxw.IsDesktop(hwnd) && (nIndex==GWL_EXSTYLE)){
|
if(dxw.IsDesktop(hwnd) && (nIndex==GWL_EXSTYLE)){
|
||||||
OutTraceDW("SetWindowLong: GWL_EXSTYLE %x suppress TOPMOST\n", dwNewLong);
|
if(dxw.dwFlags5 & UNLOCKZORDER) {
|
||||||
dwNewLong = dwNewLong & ~(WS_EX_TOPMOST);
|
OutTraceDW("SetWindowLong: GWL_EXSTYLE %x suppress TOPMOST\n", dwNewLong);
|
||||||
|
dwNewLong = dwNewLong & ~(WS_EX_TOPMOST);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -891,12 +892,11 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon
|
|||||||
|
|
||||||
// v2.03.94.fx2: removed dxw.IsFullScreen() check here ... WinProc routine must be verified in all conditions
|
// v2.03.94.fx2: removed dxw.IsFullScreen() check here ... WinProc routine must be verified in all conditions
|
||||||
// fixes "Nascar Racing 3" that was setting the WinProc while still in non fullscreen mode!
|
// fixes "Nascar Racing 3" that was setting the WinProc while still in non fullscreen mode!
|
||||||
if (((nIndex==GWL_WNDPROC)||(nIndex==DWL_DLGPROC)) &&
|
if ((nIndex==GWL_WNDPROC)||(nIndex==DWL_DLGPROC)) {
|
||||||
dxw.Windowize && // v2.03.95 - replaced dxw.IsFullScreen() check
|
|
||||||
// dxw.IsFullScreen() && // v2.02.51 - see A10 Cuba....
|
|
||||||
!(dxw.dwFlags6 & NOWINDOWHOOKS)){ // v2.03.41 - debug flag
|
|
||||||
WNDPROC lres;
|
WNDPROC lres;
|
||||||
WNDPROC OldProc;
|
WNDPROC OldProc;
|
||||||
|
DWORD WinStyle;
|
||||||
|
BOOL bHooked = FALSE;
|
||||||
|
|
||||||
// fix ....
|
// fix ....
|
||||||
extern LRESULT CALLBACK dw_Hider_Message_Handler(HWND, UINT, WPARAM, LPARAM);
|
extern LRESULT CALLBACK dw_Hider_Message_Handler(HWND, UINT, WPARAM, LPARAM);
|
||||||
@ -913,18 +913,47 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon
|
|||||||
// end of GPL fix
|
// end of GPL fix
|
||||||
|
|
||||||
OldProc = (WNDPROC)(*pGetWindowLong)(hwnd, nIndex);
|
OldProc = (WNDPROC)(*pGetWindowLong)(hwnd, nIndex);
|
||||||
// v2.02.70 fix
|
WinStyle = (*pGetWindowLong)(hwnd, GWL_STYLE);
|
||||||
if((OldProc==extWindowProc) ||
|
|
||||||
(OldProc==extChildWindowProc)||
|
// hook extWindowProc to main win ....
|
||||||
(OldProc==extDialogWindowProc))
|
if(dxw.IsDesktop(hwnd) && !(dxw.dwFlags6 & NOWINDOWHOOKS)){
|
||||||
OldProc=dxwws.GetProc(hwnd);
|
if(OldProc==extWindowProc) OldProc=dxwws.GetProc(hwnd);
|
||||||
dxwws.PutProc(hwnd, (WNDPROC)dwNewLong);
|
dxwws.PutProc(hwnd, (WNDPROC)dwNewLong);
|
||||||
res=(LONG)OldProc;
|
res=(LONG)OldProc;
|
||||||
SetLastError(0);
|
SetLastError(0);
|
||||||
lres=(WNDPROC)(*pSetWindowLong)(hwnd, nIndex, (LONG)extWindowProc);
|
lres=(WNDPROC)(*pSetWindowLong)(hwnd, nIndex, (LONG)extWindowProc);
|
||||||
|
OutTraceDW("SetWindowLong: DESKTOP hooked %x->%x\n", dwNewLong, extWindowProc);
|
||||||
|
bHooked = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// hook extChildWindowProc to child win ....
|
||||||
|
if((WinStyle & WS_CHILD) && (dxw.dwFlags1 & HOOKCHILDWIN) && !(dxw.dwFlags6 & NOWINDOWHOOKS)){
|
||||||
|
if(OldProc==extChildWindowProc) OldProc=dxwws.GetProc(hwnd);
|
||||||
|
dxwws.PutProc(hwnd, (WNDPROC)dwNewLong);
|
||||||
|
res=(LONG)OldProc;
|
||||||
|
SetLastError(0);
|
||||||
|
lres=(WNDPROC)(*pSetWindowLong)(hwnd, nIndex, (LONG)extChildWindowProc);
|
||||||
|
OutTraceDW("SetWindowLong: CHILD hooked %x->%x\n", dwNewLong, extChildWindowProc);
|
||||||
|
bHooked = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// hook extDlgWindowProc to dialog win ....
|
||||||
|
if((WinStyle & DWL_DLGPROC) && (dxw.dwFlags1 & HOOKCHILDWIN) && !(dxw.dwFlags6 & NOWINDOWHOOKS)){
|
||||||
|
if(OldProc==extDialogWindowProc) OldProc=dxwws.GetProc(hwnd);
|
||||||
|
dxwws.PutProc(hwnd, (WNDPROC)dwNewLong);
|
||||||
|
res=(LONG)OldProc;
|
||||||
|
SetLastError(0);
|
||||||
|
lres=(WNDPROC)(*pSetWindowLong)(hwnd, nIndex, (LONG)extDialogWindowProc);
|
||||||
|
OutTraceDW("SetWindowLong: DIALOG hooked %x->%x\n", dwNewLong, extDialogWindowProc);
|
||||||
|
bHooked = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// hook dwNewLong if not done otherwise
|
||||||
|
if(!bHooked) res=(*pSetWindowLong)(hwnd, nIndex, dwNewLong);
|
||||||
if(!lres && GetLastError())OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
if(!lres && GetLastError())OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
||||||
}
|
}
|
||||||
else {
|
else{
|
||||||
|
// through here for any message different from GWL_WNDPROC or DWL_DLGPROC
|
||||||
res=(*pSetWindowLong)(hwnd, nIndex, dwNewLong);
|
res=(*pSetWindowLong)(hwnd, nIndex, dwNewLong);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1125,13 +1154,19 @@ BOOL WINAPI extGetCursorPos(LPPOINT lppoint)
|
|||||||
res=1;
|
res=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
prev=*lppoint;
|
if(dxw.dwFlags1 & MODIFYMOUSE){
|
||||||
*lppoint=dxw.ScreenToClient(*lppoint);
|
dxw.UpdateDesktopCoordinates();
|
||||||
*lppoint=dxw.FixCursorPos(*lppoint);
|
prev=*lppoint;
|
||||||
|
*lppoint=dxw.ScreenToClient(*lppoint);
|
||||||
|
//OutTraceC("GetCursorPos: REMAPPED pos=(%d,%d)->(%d,%d)\n", prev.x, prev.y, lppoint->x, lppoint->y);
|
||||||
|
*lppoint=dxw.FixCursorPos(*lppoint);
|
||||||
|
OutTraceC("GetCursorPos: FIXED pos=(%d,%d)->(%d,%d)\n", prev.x, prev.y, lppoint->x, lppoint->y);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
OutTraceC("GetCursorPos: pos=(%d,%d)\n", lppoint->x, lppoint->y);
|
||||||
|
}
|
||||||
GetHookInfo()->CursorX=(short)lppoint->x;
|
GetHookInfo()->CursorX=(short)lppoint->x;
|
||||||
GetHookInfo()->CursorY=(short)lppoint->y;
|
GetHookInfo()->CursorY=(short)lppoint->y;
|
||||||
OutTraceC("GetCursorPos: FIXED pos=(%d,%d)->(%d,%d)\n", prev.x, prev.y, lppoint->x, lppoint->y);
|
|
||||||
|
|
||||||
if((dxw.dwFlags1 & HIDEHWCURSOR) && dxw.IsFullScreen()) while((*pShowCursor)(0) >= 0);
|
if((dxw.dwFlags1 & HIDEHWCURSOR) && dxw.IsFullScreen()) while((*pShowCursor)(0) >= 0);
|
||||||
if(dxw.dwFlags2 & SHOWHWCURSOR) while((*pShowCursor)(1) < 0);
|
if(dxw.dwFlags2 & SHOWHWCURSOR) while((*pShowCursor)(1) < 0);
|
||||||
@ -1164,6 +1199,7 @@ BOOL WINAPI extSetCursorPos(int x, int y)
|
|||||||
if(dxw.dwFlags1 & MODIFYMOUSE){
|
if(dxw.dwFlags1 & MODIFYMOUSE){
|
||||||
// v2.03.41
|
// v2.03.41
|
||||||
POINT cur;
|
POINT cur;
|
||||||
|
dxw.UpdateDesktopCoordinates();
|
||||||
cur.x = x;
|
cur.x = x;
|
||||||
cur.y = y;
|
cur.y = y;
|
||||||
dxw.MapWindow(&cur);
|
dxw.MapWindow(&cur);
|
||||||
@ -1673,6 +1709,8 @@ static HWND WINAPI CreateWindowCommon(
|
|||||||
dxw.SetFullScreen(TRUE);
|
dxw.SetFullScreen(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(dxw.dwFlags5 & UNLOCKZORDER) dwExStyle &= ~WS_EX_TOPMOST ;
|
||||||
|
|
||||||
if(!dxw.IsFullScreen()){ // v2.1.63: needed for "Monster Truck Madness"
|
if(!dxw.IsFullScreen()){ // v2.1.63: needed for "Monster Truck Madness"
|
||||||
if(WideChar)
|
if(WideChar)
|
||||||
hwnd= (*pCreateWindowExW)(dwExStyle, (LPCWSTR)lpClassName, (LPCWSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
|
hwnd= (*pCreateWindowExW)(dwExStyle, (LPCWSTR)lpClassName, (LPCWSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
|
||||||
@ -2498,9 +2536,10 @@ HWND WINAPI extCreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpT
|
|||||||
lpTemplate->style, lpTemplate->dwExtendedStyle, lpTemplate->cdit, lpTemplate->x, lpTemplate->y, lpTemplate->cx, lpTemplate->cy,
|
lpTemplate->style, lpTemplate->dwExtendedStyle, lpTemplate->cdit, lpTemplate->x, lpTemplate->y, lpTemplate->cx, lpTemplate->cy,
|
||||||
hWndParent, lpDialogFunc, lParamInit);
|
hWndParent, lpDialogFunc, lParamInit);
|
||||||
if(dxw.IsFullScreen() && hWndParent==NULL) hWndParent=dxw.GethWnd();
|
if(dxw.IsFullScreen() && hWndParent==NULL) hWndParent=dxw.GethWnd();
|
||||||
dxw.SetFullScreen(FALSE);
|
// v2.03.98: commented out the temporary return to windowed mode to make Red Alert 2 dialog work again!
|
||||||
|
//dxw.SetFullScreen(FALSE);
|
||||||
RetHWND=(*pCreateDialogIndirectParam)(hInstance, lpTemplate, hWndParent, lpDialogFunc, lParamInit);
|
RetHWND=(*pCreateDialogIndirectParam)(hInstance, lpTemplate, hWndParent, lpDialogFunc, lParamInit);
|
||||||
dxw.SetFullScreen(FullScreen);
|
//dxw.SetFullScreen(FullScreen);
|
||||||
|
|
||||||
// v2.02.73: redirect lpDialogFunc only when it is nor NULL
|
// v2.02.73: redirect lpDialogFunc only when it is nor NULL
|
||||||
if( lpDialogFunc &&
|
if( lpDialogFunc &&
|
||||||
@ -2522,9 +2561,9 @@ HWND WINAPI extCreateDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HW
|
|||||||
OutTraceDW("CreateDialogParam: hInstance=%x lpTemplateName=%s hWndParent=%x lpDialogFunc=%x lParamInit=%x\n",
|
OutTraceDW("CreateDialogParam: hInstance=%x lpTemplateName=%s hWndParent=%x lpDialogFunc=%x lParamInit=%x\n",
|
||||||
hInstance, sTemplateName(lpTemplateName), hWndParent, lpDialogFunc, lParamInit);
|
hInstance, sTemplateName(lpTemplateName), hWndParent, lpDialogFunc, lParamInit);
|
||||||
if(hWndParent==NULL) hWndParent=dxw.GethWnd();
|
if(hWndParent==NULL) hWndParent=dxw.GethWnd();
|
||||||
dxw.SetFullScreen(FALSE);
|
//dxw.SetFullScreen(FALSE);
|
||||||
RetHWND=(*pCreateDialogParam)(hInstance, lpTemplateName, hWndParent, lpDialogFunc, lParamInit);
|
RetHWND=(*pCreateDialogParam)(hInstance, lpTemplateName, hWndParent, lpDialogFunc, lParamInit);
|
||||||
dxw.SetFullScreen(FullScreen);
|
//dxw.SetFullScreen(FullScreen);
|
||||||
|
|
||||||
// v2.02.73: redirect lpDialogFunc only when it is nor NULL: fix for "LEGO Stunt Rally"
|
// v2.02.73: redirect lpDialogFunc only when it is nor NULL: fix for "LEGO Stunt Rally"
|
||||||
if( lpDialogFunc &&
|
if( lpDialogFunc &&
|
||||||
@ -3922,9 +3961,17 @@ VOID WINAPI extmouse_event(DWORD dwFlags, DWORD dx, DWORD dy, DWORD dwData, ULON
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dxw.Windowize){
|
if((dwFlags & MOUSEEVENTF_ABSOLUTE) && dxw.Windowize && (dxw.dwFlags1 & MODIFYMOUSE)){
|
||||||
dxw.MapClient((int *)&dx, (int *)&dy);
|
// ???? untested ......
|
||||||
|
//dxw.MapClient((int *)&dx, (int *)&dy);
|
||||||
|
POINT cursor;
|
||||||
|
cursor.x = dx;
|
||||||
|
cursor.y = dy;
|
||||||
|
cursor = dxw.FixCursorPos(cursor);
|
||||||
|
dx = cursor.x;
|
||||||
|
dy = cursor.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (*pmouse_event)(dwFlags, dx, dy, dwData, dwExtraInfo);
|
return (*pmouse_event)(dwFlags, dx, dy, dwData, dwExtraInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -495,8 +495,14 @@ static void ShowJoystick(LONG, LONG, DWORD);
|
|||||||
MMRESULT WINAPI extjoyGetDevCapsA(DWORD uJoyID, LPJOYCAPS pjc, UINT cbjc)
|
MMRESULT WINAPI extjoyGetDevCapsA(DWORD uJoyID, LPJOYCAPS pjc, UINT cbjc)
|
||||||
{
|
{
|
||||||
OutTraceDW("joyGetDevCaps: joyid=%d size=%d\n", uJoyID, cbjc);
|
OutTraceDW("joyGetDevCaps: joyid=%d size=%d\n", uJoyID, cbjc);
|
||||||
if((uJoyID != -1) && (uJoyID != 0)) return MMSYSERR_NODRIVER;
|
if((uJoyID != -1) && (uJoyID != 0)) {
|
||||||
if(cbjc != sizeof(JOYCAPS)) return MMSYSERR_INVALPARAM;
|
OutTraceDW("joyGetDevCaps: ERROR joyid=%d ret=MMSYSERR_NODRIVER\n", uJoyID, cbjc);
|
||||||
|
return MMSYSERR_NODRIVER;
|
||||||
|
}
|
||||||
|
if(cbjc != sizeof(JOYCAPS)) {
|
||||||
|
OutTraceDW("joyGetDevCaps: ERROR joyid=%d size=%d ret=MMSYSERR_INVALPARAM\n", uJoyID, cbjc);
|
||||||
|
return MMSYSERR_INVALPARAM;
|
||||||
|
}
|
||||||
uJoyID = 0; // always first (unique) one ...
|
uJoyID = 0; // always first (unique) one ...
|
||||||
|
|
||||||
// set Joystick capability structure
|
// set Joystick capability structure
|
||||||
|
@ -245,7 +245,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
|
|
||||||
if(IsTraceW) ExplainMsg("WindowProc", hwnd, message, wparam, lparam);
|
if(IsTraceW) ExplainMsg("WindowProc", hwnd, message, wparam, lparam);
|
||||||
|
|
||||||
if(dxw.dwFlags3 & FILTERMESSAGES){
|
if(dxw.dwFlags3 & (FILTERMESSAGES|DEFAULTMESSAGES)){
|
||||||
switch(message){
|
switch(message){
|
||||||
case WM_NCMOUSEMOVE:
|
case WM_NCMOUSEMOVE:
|
||||||
case WM_NCLBUTTONDOWN:
|
case WM_NCLBUTTONDOWN:
|
||||||
@ -257,8 +257,16 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
|||||||
case WM_NCMBUTTONDOWN:
|
case WM_NCMBUTTONDOWN:
|
||||||
case WM_NCMBUTTONUP:
|
case WM_NCMBUTTONUP:
|
||||||
case WM_NCMBUTTONDBLCLK:
|
case WM_NCMBUTTONDBLCLK:
|
||||||
OutTraceDW("WindowProc[%x]: SUPPRESS WinMsg=[0x%x]%s(%x,%x)\n", hwnd, message, ExplainWinMessage(message), wparam, lparam);
|
case WM_MOVE:
|
||||||
return 0;
|
case WM_MOVING:
|
||||||
|
if(dxw.dwFlags3 & FILTERMESSAGES){
|
||||||
|
OutTraceDW("WindowProc[%x]: SUPPRESS WinMsg=[0x%x]%s(%x,%x)\n", hwnd, message, ExplainWinMessage(message), wparam, lparam);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
OutTraceDW("WindowProc[%x]: DEFAULT WinMsg=[0x%x]%s(%x,%x)\n", hwnd, message, ExplainWinMessage(message), wparam, lparam);
|
||||||
|
return (*pDefWindowProcA)(hwnd, message, wparam, lparam);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,9 +178,9 @@ void CMainFrame::OnClose()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(gWarnOnExit){
|
if(gWarnOnExit){
|
||||||
if(MessageBoxLang(DXW_STRING_EXIT_OK, DXW_STRING_WARNING, MB_OKCANCEL)==IDOK)
|
if(MessageBoxLang(DXW_STRING_EXIT_OK, DXW_STRING_WARNING, MB_OKCANCEL)==IDOK)
|
||||||
CFrameWnd::OnClose();
|
CFrameWnd::OnClose();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CFrameWnd::OnClose();
|
CFrameWnd::OnClose();
|
||||||
}
|
}
|
||||||
|
@ -29,8 +29,6 @@ void CTabDirectX::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Radio(pDX, IDC_AUTO, cTarget->m_DXVersion);
|
DDX_Radio(pDX, IDC_AUTO, cTarget->m_DXVersion);
|
||||||
DDX_Radio(pDX, IDC_NOEMULATESURFACE, cTarget->m_DxEmulationMode);
|
DDX_Radio(pDX, IDC_NOEMULATESURFACE, cTarget->m_DxEmulationMode);
|
||||||
DDX_Radio(pDX, IDC_DDRAWFILTER, cTarget->m_DxFilterMode);
|
DDX_Radio(pDX, IDC_DDRAWFILTER, cTarget->m_DxFilterMode);
|
||||||
DDX_Check(pDX, IDC_SUPPRESSCLIPPING, cTarget->m_SuppressClipping);
|
|
||||||
DDX_Check(pDX, IDC_FORCECLIPPER, cTarget->m_ForceClipper);
|
|
||||||
DDX_Check(pDX, IDC_BLITFROMBACKBUFFER, cTarget->m_BlitFromBackBuffer);
|
DDX_Check(pDX, IDC_BLITFROMBACKBUFFER, cTarget->m_BlitFromBackBuffer);
|
||||||
DDX_Check(pDX, IDC_AUTOREFRESH, cTarget->m_AutoRefresh);
|
DDX_Check(pDX, IDC_AUTOREFRESH, cTarget->m_AutoRefresh);
|
||||||
DDX_Check(pDX, IDC_INDEPENDENTREFRESH, cTarget->m_IndependentRefresh);
|
DDX_Check(pDX, IDC_INDEPENDENTREFRESH, cTarget->m_IndependentRefresh);
|
||||||
|
@ -46,6 +46,23 @@ void CTabDirectX2::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Check(pDX, IDC_BACKBUFATTACH, cTarget->m_BackBufAttach);
|
DDX_Check(pDX, IDC_BACKBUFATTACH, cTarget->m_BackBufAttach);
|
||||||
DDX_Check(pDX, IDC_CLEARTEXTUREFOURCC, cTarget->m_ClearTextureFourCC);
|
DDX_Check(pDX, IDC_CLEARTEXTUREFOURCC, cTarget->m_ClearTextureFourCC);
|
||||||
DDX_Check(pDX, IDC_NODDEXCLUSIVEMODE, cTarget->m_NoDDExclusiveMode);
|
DDX_Check(pDX, IDC_NODDEXCLUSIVEMODE, cTarget->m_NoDDExclusiveMode);
|
||||||
|
|
||||||
|
// Vsync
|
||||||
|
//DDX_Check(pDX, IDC_SAVELOAD, cTarget->m_SaveLoad);
|
||||||
|
//DDX_Check(pDX, IDC_FORCEVSYNC, cTarget->m_ForceVSync);
|
||||||
|
//DDX_Check(pDX, IDC_FORCENOVSYNC, cTarget->m_ForceNoVSync);
|
||||||
|
//DDX_Check(pDX, IDC_FORCEWAIT, cTarget->m_ForceWait);
|
||||||
|
//DDX_Check(pDX, IDC_FORCENOWAIT, cTarget->m_ForceNoWait);
|
||||||
|
DDX_Radio(pDX, IDC_VSYNCDEFAULT, cTarget->m_VSyncMode);
|
||||||
|
DDX_Radio(pDX, IDC_WAITDEFAULT, cTarget->m_WaitMode);
|
||||||
|
DDX_Radio(pDX, IDC_VSYNCHW, cTarget->m_VSyncImpl);
|
||||||
|
DDX_Text(pDX, IDC_SCANLINE, cTarget->m_ScanLine);
|
||||||
|
|
||||||
|
// Clipper
|
||||||
|
//DDX_Check(pDX, IDC_SUPPRESSCLIPPING, cTarget->m_SuppressClipping);
|
||||||
|
//DDX_Check(pDX, IDC_FORCECLIPPER, cTarget->m_ForceClipper);
|
||||||
|
DDX_Radio(pDX, IDC_CLIPPERNONE, cTarget->m_ClipperMode);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BEGIN_MESSAGE_MAP(CTabDirectX2, CDialog)
|
BEGIN_MESSAGE_MAP(CTabDirectX2, CDialog)
|
||||||
|
@ -35,6 +35,7 @@ void CTabHook::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Check(pDX, IDC_HOOKDLLS, cTarget->m_HookDLLs);
|
DDX_Check(pDX, IDC_HOOKDLLS, cTarget->m_HookDLLs);
|
||||||
DDX_Check(pDX, IDC_ANSIWIDE, cTarget->m_AnsiWide);
|
DDX_Check(pDX, IDC_ANSIWIDE, cTarget->m_AnsiWide);
|
||||||
DDX_Check(pDX, IDC_HOOKNORUN, cTarget->m_HookNoRun);
|
DDX_Check(pDX, IDC_HOOKNORUN, cTarget->m_HookNoRun);
|
||||||
|
DDX_Check(pDX, IDC_COPYNOSHIMS, cTarget->m_CopyNoShims);
|
||||||
DDX_Check(pDX, IDC_HOOKNOUPDATE, cTarget->m_HookNoUpdate);
|
DDX_Check(pDX, IDC_HOOKNOUPDATE, cTarget->m_HookNoUpdate);
|
||||||
DDX_Check(pDX, IDC_HOOKCHILDWIN, cTarget->m_HookChildWin);
|
DDX_Check(pDX, IDC_HOOKCHILDWIN, cTarget->m_HookChildWin);
|
||||||
|
|
||||||
|
@ -106,7 +106,6 @@ void CTabProgram::DoDataExchange(CDataExchange* pDX)
|
|||||||
DDX_Check(pDX, IDC_TERMINATEONCLOSE, cTarget->m_TerminateOnClose);
|
DDX_Check(pDX, IDC_TERMINATEONCLOSE, cTarget->m_TerminateOnClose);
|
||||||
DDX_Check(pDX, IDC_FULLSCREENONLY, cTarget->m_FullScreenOnly);
|
DDX_Check(pDX, IDC_FULLSCREENONLY, cTarget->m_FullScreenOnly);
|
||||||
DDX_Check(pDX, IDC_SHOWHINTS, cTarget->m_ShowHints);
|
DDX_Check(pDX, IDC_SHOWHINTS, cTarget->m_ShowHints);
|
||||||
DDX_Check(pDX, IDC_SAVELOAD, cTarget->m_SaveLoad);
|
|
||||||
DDX_Check(pDX, IDC_KEEPASPECTRATIO, cTarget->m_KeepAspectRatio);
|
DDX_Check(pDX, IDC_KEEPASPECTRATIO, cTarget->m_KeepAspectRatio);
|
||||||
DDX_Check(pDX, IDC_NOBANNER, cTarget->m_NoBanner);
|
DDX_Check(pDX, IDC_NOBANNER, cTarget->m_NoBanner);
|
||||||
DDX_Check(pDX, IDC_HIDEDESKTOP, cTarget->m_HideDesktop);
|
DDX_Check(pDX, IDC_HIDEDESKTOP, cTarget->m_HideDesktop);
|
||||||
|
@ -117,6 +117,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_HookDLLs = TRUE; // default true !!
|
m_HookDLLs = TRUE; // default true !!
|
||||||
m_AnsiWide = FALSE;
|
m_AnsiWide = FALSE;
|
||||||
m_HookNoRun = FALSE;
|
m_HookNoRun = FALSE;
|
||||||
|
m_CopyNoShims = FALSE;
|
||||||
m_HookNoUpdate = FALSE;
|
m_HookNoUpdate = FALSE;
|
||||||
m_TerminateOnClose = FALSE;
|
m_TerminateOnClose = FALSE;
|
||||||
m_ConfirmOnClose = FALSE;
|
m_ConfirmOnClose = FALSE;
|
||||||
@ -135,13 +136,13 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_NoBanner = FALSE;
|
m_NoBanner = FALSE;
|
||||||
m_FilePath = _T("");
|
m_FilePath = _T("");
|
||||||
m_Module = _T("");
|
m_Module = _T("");
|
||||||
m_SaveLoad = FALSE;
|
//m_SaveLoad = FALSE;
|
||||||
m_SlowDown = FALSE;
|
m_SlowDown = FALSE;
|
||||||
m_BlitFromBackBuffer = FALSE;
|
m_BlitFromBackBuffer = FALSE;
|
||||||
m_NoFlipEmulation = FALSE;
|
m_NoFlipEmulation = FALSE;
|
||||||
m_LockColorDepth = FALSE;
|
m_LockColorDepth = FALSE;
|
||||||
m_SuppressClipping = FALSE;
|
//m_SuppressClipping = FALSE;
|
||||||
m_ForceClipper = FALSE;
|
//m_ForceClipper = FALSE;
|
||||||
m_DisableGammaRamp = FALSE;
|
m_DisableGammaRamp = FALSE;
|
||||||
m_AutoRefresh = FALSE;
|
m_AutoRefresh = FALSE;
|
||||||
m_IndependentRefresh = FALSE;
|
m_IndependentRefresh = FALSE;
|
||||||
@ -194,6 +195,13 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_BackBufAttach = FALSE;
|
m_BackBufAttach = FALSE;
|
||||||
m_ClearTextureFourCC = FALSE;
|
m_ClearTextureFourCC = FALSE;
|
||||||
m_NoDDExclusiveMode = FALSE;
|
m_NoDDExclusiveMode = FALSE;
|
||||||
|
//m_ForceVSync = FALSE;
|
||||||
|
//m_ForceNoVSync = FALSE;
|
||||||
|
//m_ForceWait = FALSE;
|
||||||
|
//m_ForceNoWait = FALSE;
|
||||||
|
m_VSyncMode = 0;
|
||||||
|
m_VSyncImpl = 0;
|
||||||
|
m_WaitMode = 0;
|
||||||
m_HandleAltF4 = FALSE;
|
m_HandleAltF4 = FALSE;
|
||||||
m_LimitFPS = FALSE;
|
m_LimitFPS = FALSE;
|
||||||
m_SkipFPS = FALSE;
|
m_SkipFPS = FALSE;
|
||||||
@ -240,6 +248,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_AssertDialog = FALSE;
|
m_AssertDialog = FALSE;
|
||||||
m_InitialRes = FALSE;
|
m_InitialRes = FALSE;
|
||||||
m_MaximumRes = FALSE;
|
m_MaximumRes = FALSE;
|
||||||
|
m_ClipperMode = 0;
|
||||||
m_PosX = 50;
|
m_PosX = 50;
|
||||||
m_PosY = 50;
|
m_PosY = 50;
|
||||||
m_SizX = 800;
|
m_SizX = 800;
|
||||||
@ -250,7 +259,8 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
|||||||
m_InitTS = 8;
|
m_InitTS = 8;
|
||||||
m_SwapEffect = 0;
|
m_SwapEffect = 0;
|
||||||
m_InjectionMode = 0;
|
m_InjectionMode = 0;
|
||||||
m_WinMovementType = 0;
|
m_WinMovementType = 1; // "Floating" position mode, better than "Free"!
|
||||||
|
m_ScanLine = 0;
|
||||||
//}}AFX_DATA_INIT
|
//}}AFX_DATA_INIT
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -413,4 +423,4 @@ void CTargetDlg::OnBnClickedKill()
|
|||||||
else{
|
else{
|
||||||
MessageBoxLang(DXW_STRING_NOKILLTASK, DXW_STRING_INFO, MB_ICONEXCLAMATION);
|
MessageBoxLang(DXW_STRING_NOKILLTASK, DXW_STRING_INFO, MB_ICONEXCLAMATION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,6 +71,7 @@ public:
|
|||||||
BOOL m_HookDLLs;
|
BOOL m_HookDLLs;
|
||||||
BOOL m_AnsiWide;
|
BOOL m_AnsiWide;
|
||||||
BOOL m_HookNoRun;
|
BOOL m_HookNoRun;
|
||||||
|
BOOL m_CopyNoShims;
|
||||||
BOOL m_HookNoUpdate;
|
BOOL m_HookNoUpdate;
|
||||||
BOOL m_TerminateOnClose;
|
BOOL m_TerminateOnClose;
|
||||||
BOOL m_ConfirmOnClose;
|
BOOL m_ConfirmOnClose;
|
||||||
@ -97,13 +98,13 @@ public:
|
|||||||
CString m_OpenGLLib;
|
CString m_OpenGLLib;
|
||||||
CString m_Notes;
|
CString m_Notes;
|
||||||
CString m_Registry;
|
CString m_Registry;
|
||||||
BOOL m_SaveLoad;
|
//BOOL m_SaveLoad;
|
||||||
BOOL m_SlowDown;
|
BOOL m_SlowDown;
|
||||||
BOOL m_BlitFromBackBuffer;
|
BOOL m_BlitFromBackBuffer;
|
||||||
BOOL m_NoFlipEmulation;
|
BOOL m_NoFlipEmulation;
|
||||||
BOOL m_LockColorDepth;
|
BOOL m_LockColorDepth;
|
||||||
BOOL m_SuppressClipping;
|
//BOOL m_SuppressClipping;
|
||||||
BOOL m_ForceClipper;
|
//BOOL m_ForceClipper;
|
||||||
BOOL m_DisableGammaRamp;
|
BOOL m_DisableGammaRamp;
|
||||||
BOOL m_AutoRefresh;
|
BOOL m_AutoRefresh;
|
||||||
BOOL m_IndependentRefresh;
|
BOOL m_IndependentRefresh;
|
||||||
@ -155,6 +156,10 @@ public:
|
|||||||
BOOL m_BackBufAttach;
|
BOOL m_BackBufAttach;
|
||||||
BOOL m_ClearTextureFourCC;
|
BOOL m_ClearTextureFourCC;
|
||||||
BOOL m_NoDDExclusiveMode;
|
BOOL m_NoDDExclusiveMode;
|
||||||
|
//BOOL m_ForceVSync;
|
||||||
|
//BOOL m_ForceNoVSync;
|
||||||
|
//BOOL m_ForceWait;
|
||||||
|
//BOOL m_ForceNoWait;
|
||||||
BOOL m_HandleAltF4;
|
BOOL m_HandleAltF4;
|
||||||
BOOL m_HandleExceptions;
|
BOOL m_HandleExceptions;
|
||||||
BOOL m_SkipFPS;
|
BOOL m_SkipFPS;
|
||||||
@ -258,6 +263,9 @@ public:
|
|||||||
BOOL m_LimitScreenRes;
|
BOOL m_LimitScreenRes;
|
||||||
BOOL m_InitialRes;
|
BOOL m_InitialRes;
|
||||||
BOOL m_MaximumRes;
|
BOOL m_MaximumRes;
|
||||||
|
int m_VSyncMode;
|
||||||
|
int m_VSyncImpl;
|
||||||
|
int m_WaitMode;
|
||||||
int m_PosX;
|
int m_PosX;
|
||||||
int m_PosY;
|
int m_PosY;
|
||||||
int m_SizX;
|
int m_SizX;
|
||||||
@ -270,6 +278,8 @@ public:
|
|||||||
int m_MaxScreenRes;
|
int m_MaxScreenRes;
|
||||||
int m_ResTypes;
|
int m_ResTypes;
|
||||||
int m_SwapEffect;
|
int m_SwapEffect;
|
||||||
|
int m_ClipperMode;
|
||||||
|
int m_ScanLine;
|
||||||
//}}AFX_DATA
|
//}}AFX_DATA
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,7 +45,6 @@ static char THIS_FILE[] = __FILE__;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern BOOL gbDebug;
|
extern BOOL gbDebug;
|
||||||
extern BOOL gWarnOnExit;
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// CDXTabCtrl
|
// CDXTabCtrl
|
||||||
|
Binary file not shown.
@ -38,6 +38,7 @@ typedef struct PRIVATEMAP
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
TARGETMAP *TM;
|
TARGETMAP *TM;
|
||||||
PRIVATEMAP *PM;
|
PRIVATEMAP *PM;
|
||||||
|
char *ExePath;
|
||||||
} ThreadInfo_Type;
|
} ThreadInfo_Type;
|
||||||
ThreadInfo_Type;
|
ThreadInfo_Type;
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -1,65 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioUserFile
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="9.00"
|
|
||||||
ShowAllFiles="false"
|
|
||||||
>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="GHO-PC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<DebugSettings
|
|
||||||
Command="$(TargetPath)"
|
|
||||||
WorkingDirectory=""
|
|
||||||
CommandArguments=""
|
|
||||||
Attach="false"
|
|
||||||
DebuggerType="3"
|
|
||||||
Remote="1"
|
|
||||||
RemoteMachine="GHO-PC"
|
|
||||||
RemoteCommand=""
|
|
||||||
HttpUrl=""
|
|
||||||
PDBPath=""
|
|
||||||
SQLDebugging=""
|
|
||||||
Environment=""
|
|
||||||
EnvironmentMerge="true"
|
|
||||||
DebuggerFlavor=""
|
|
||||||
MPIRunCommand=""
|
|
||||||
MPIRunArguments=""
|
|
||||||
MPIRunWorkingDirectory=""
|
|
||||||
ApplicationCommand=""
|
|
||||||
ApplicationArguments=""
|
|
||||||
ShimCommand=""
|
|
||||||
MPIAcceptMode=""
|
|
||||||
MPIAcceptFilter=""
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
</VisualStudioUserFile>
|
|
@ -207,6 +207,7 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(dlg->m_HookDLLs) t->flags3 |= HOOKDLLS;
|
if(dlg->m_HookDLLs) t->flags3 |= HOOKDLLS;
|
||||||
if(dlg->m_AnsiWide) t->flags5 |= ANSIWIDE;
|
if(dlg->m_AnsiWide) t->flags5 |= ANSIWIDE;
|
||||||
if(dlg->m_HookNoRun) t->flags7 |= HOOKNORUN;
|
if(dlg->m_HookNoRun) t->flags7 |= HOOKNORUN;
|
||||||
|
if(dlg->m_CopyNoShims) t->flags7 |= COPYNOSHIMS;
|
||||||
if(dlg->m_HookNoUpdate) t->flags7 |= HOOKNOUPDATE;
|
if(dlg->m_HookNoUpdate) t->flags7 |= HOOKNOUPDATE;
|
||||||
if(dlg->m_TerminateOnClose) t->flags6 |= TERMINATEONCLOSE;
|
if(dlg->m_TerminateOnClose) t->flags6 |= TERMINATEONCLOSE;
|
||||||
if(dlg->m_ConfirmOnClose) t->flags6 |= CONFIRMONCLOSE;
|
if(dlg->m_ConfirmOnClose) t->flags6 |= CONFIRMONCLOSE;
|
||||||
@ -309,6 +310,29 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
case 3: t->flags |= LOCKWINPOS; t->flags7 |= ANCHORED; break;
|
case 3: t->flags |= LOCKWINPOS; t->flags7 |= ANCHORED; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch(dlg->m_VSyncMode){
|
||||||
|
case 0: break;
|
||||||
|
case 1: t->flags8 |= FORCEVSYNC; break;
|
||||||
|
case 2: t->flags8 |= FORCENOVSYNC; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(dlg->m_VSyncImpl){
|
||||||
|
case 0: break;
|
||||||
|
case 1: t->flags8 |= VSYNCSCANLINE; break;
|
||||||
|
case 2: t->flags |= SAVELOAD; break;
|
||||||
|
}
|
||||||
|
switch(dlg->m_WaitMode){
|
||||||
|
case 0: break;
|
||||||
|
case 1: t->flags8 |= FORCEWAIT; break;
|
||||||
|
case 2: t->flags8 |= FORCENOWAIT; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(dlg->m_ClipperMode){
|
||||||
|
case 0: break;
|
||||||
|
case 1: t->flags3 |= FORCECLIPPER; break;
|
||||||
|
case 2: t->flags |= SUPPRESSCLIPPING; break;
|
||||||
|
}
|
||||||
|
|
||||||
if(dlg->m_HookDI) t->flags |= HOOKDI;
|
if(dlg->m_HookDI) t->flags |= HOOKDI;
|
||||||
if(dlg->m_HookDI8) t->flags |= HOOKDI8;
|
if(dlg->m_HookDI8) t->flags |= HOOKDI8;
|
||||||
if(dlg->m_EmulateRelMouse) t->flags6 |= EMULATERELMOUSE;
|
if(dlg->m_EmulateRelMouse) t->flags6 |= EMULATERELMOUSE;
|
||||||
@ -389,13 +413,13 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(dlg->m_LimitScreenRes) t->flags4 |= LIMITSCREENRES;
|
if(dlg->m_LimitScreenRes) t->flags4 |= LIMITSCREENRES;
|
||||||
if(dlg->m_SingleProcAffinity) t->flags3 |= SINGLEPROCAFFINITY;
|
if(dlg->m_SingleProcAffinity) t->flags3 |= SINGLEPROCAFFINITY;
|
||||||
if(dlg->m_UseLastCore) t->flags5 |= USELASTCORE;
|
if(dlg->m_UseLastCore) t->flags5 |= USELASTCORE;
|
||||||
if(dlg->m_SaveLoad) t->flags |= SAVELOAD;
|
//if(dlg->m_SaveLoad) t->flags |= SAVELOAD;
|
||||||
if(dlg->m_SlowDown) t->flags |= SLOWDOWN;
|
if(dlg->m_SlowDown) t->flags |= SLOWDOWN;
|
||||||
if(dlg->m_BlitFromBackBuffer) t->flags |= BLITFROMBACKBUFFER;
|
if(dlg->m_BlitFromBackBuffer) t->flags |= BLITFROMBACKBUFFER;
|
||||||
if(dlg->m_NoFlipEmulation) t->flags4 |= NOFLIPEMULATION;
|
if(dlg->m_NoFlipEmulation) t->flags4 |= NOFLIPEMULATION;
|
||||||
if(dlg->m_LockColorDepth) t->flags7 |= LOCKCOLORDEPTH;
|
if(dlg->m_LockColorDepth) t->flags7 |= LOCKCOLORDEPTH;
|
||||||
if(dlg->m_SuppressClipping) t->flags |= SUPPRESSCLIPPING;
|
//if(dlg->m_SuppressClipping) t->flags |= SUPPRESSCLIPPING;
|
||||||
if(dlg->m_ForceClipper) t->flags3 |= FORCECLIPPER;
|
//if(dlg->m_ForceClipper) t->flags3 |= FORCECLIPPER;
|
||||||
if(dlg->m_DisableGammaRamp) t->flags2 |= DISABLEGAMMARAMP;
|
if(dlg->m_DisableGammaRamp) t->flags2 |= DISABLEGAMMARAMP;
|
||||||
if(dlg->m_AutoRefresh) t->flags |= AUTOREFRESH;
|
if(dlg->m_AutoRefresh) t->flags |= AUTOREFRESH;
|
||||||
if(dlg->m_IndependentRefresh) t->flags2 |= INDEPENDENTREFRESH;
|
if(dlg->m_IndependentRefresh) t->flags2 |= INDEPENDENTREFRESH;
|
||||||
@ -492,10 +516,15 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(dlg->m_ReplacePrivOps) t->flags5 |= REPLACEPRIVOPS;
|
if(dlg->m_ReplacePrivOps) t->flags5 |= REPLACEPRIVOPS;
|
||||||
if(dlg->m_InitialRes) t->flags7 |= INITIALRES;
|
if(dlg->m_InitialRes) t->flags7 |= INITIALRES;
|
||||||
if(dlg->m_MaximumRes) t->flags7 |= MAXIMUMRES;
|
if(dlg->m_MaximumRes) t->flags7 |= MAXIMUMRES;
|
||||||
|
//if(dlg->m_ForceVSync) t->flags8 |= FORCEVSYNC;
|
||||||
|
//if(dlg->m_ForceNoVSync) t->flags8 |= FORCENOVSYNC;
|
||||||
|
//if(dlg->m_ForceWait) t->flags8 |= FORCEWAIT;
|
||||||
|
//if(dlg->m_ForceNoWait) t->flags8 |= FORCENOWAIT;
|
||||||
t->posx = dlg->m_PosX;
|
t->posx = dlg->m_PosX;
|
||||||
t->posy = dlg->m_PosY;
|
t->posy = dlg->m_PosY;
|
||||||
t->sizx = dlg->m_SizX;
|
t->sizx = dlg->m_SizX;
|
||||||
t->sizy = dlg->m_SizY;
|
t->sizy = dlg->m_SizY;
|
||||||
|
t->ScanLine = dlg->m_ScanLine;
|
||||||
t->MaxFPS = dlg->m_MaxFPS;
|
t->MaxFPS = dlg->m_MaxFPS;
|
||||||
t->InitTS = dlg->m_InitTS-8;
|
t->InitTS = dlg->m_InitTS-8;
|
||||||
t->FakeVersionId = dlg->m_FakeVersionId;
|
t->FakeVersionId = dlg->m_FakeVersionId;
|
||||||
@ -524,6 +553,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
dlg->m_HookDLLs = t->flags3 & HOOKDLLS ? 1 : 0;
|
dlg->m_HookDLLs = t->flags3 & HOOKDLLS ? 1 : 0;
|
||||||
dlg->m_AnsiWide = t->flags5 & ANSIWIDE ? 1 : 0;
|
dlg->m_AnsiWide = t->flags5 & ANSIWIDE ? 1 : 0;
|
||||||
dlg->m_HookNoRun = t->flags7 & HOOKNORUN ? 1 : 0;
|
dlg->m_HookNoRun = t->flags7 & HOOKNORUN ? 1 : 0;
|
||||||
|
dlg->m_CopyNoShims = t->flags7 & COPYNOSHIMS ? 1 : 0;
|
||||||
dlg->m_HookNoUpdate = t->flags7 & HOOKNOUPDATE ? 1 : 0;
|
dlg->m_HookNoUpdate = t->flags7 & HOOKNOUPDATE ? 1 : 0;
|
||||||
dlg->m_TerminateOnClose = t->flags6 & TERMINATEONCLOSE ? 1 : 0;
|
dlg->m_TerminateOnClose = t->flags6 & TERMINATEONCLOSE ? 1 : 0;
|
||||||
dlg->m_ConfirmOnClose = t->flags6 & CONFIRMONCLOSE ? 1 : 0;
|
dlg->m_ConfirmOnClose = t->flags6 & CONFIRMONCLOSE ? 1 : 0;
|
||||||
@ -601,6 +631,22 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
if(t->flags2 & LOCKEDSIZE) dlg->m_WinMovementType = 2;
|
if(t->flags2 & LOCKEDSIZE) dlg->m_WinMovementType = 2;
|
||||||
if(t->flags7 & ANCHORED) dlg->m_WinMovementType = 3;
|
if(t->flags7 & ANCHORED) dlg->m_WinMovementType = 3;
|
||||||
|
|
||||||
|
dlg->m_VSyncMode = 0;
|
||||||
|
if(t->flags8 & FORCEVSYNC) dlg->m_VSyncMode = 1;
|
||||||
|
if(t->flags8 & FORCENOVSYNC) dlg->m_VSyncMode = 2;
|
||||||
|
|
||||||
|
dlg->m_VSyncImpl = 0;
|
||||||
|
if(t->flags8 & VSYNCSCANLINE) dlg->m_VSyncImpl = 1;
|
||||||
|
if(t->flags & SAVELOAD) dlg->m_VSyncImpl = 2;
|
||||||
|
|
||||||
|
dlg->m_WaitMode = 0;
|
||||||
|
if(t->flags8 & FORCEWAIT) dlg->m_WaitMode = 1;
|
||||||
|
if(t->flags8 & FORCENOWAIT) dlg->m_WaitMode = 2;
|
||||||
|
|
||||||
|
dlg->m_ClipperMode = 0;
|
||||||
|
if (t->flags3 & FORCECLIPPER) dlg->m_ClipperMode = 1;
|
||||||
|
if (t->flags & SUPPRESSCLIPPING) dlg->m_ClipperMode = 2;
|
||||||
|
|
||||||
dlg->m_HookDI = t->flags & HOOKDI ? 1 : 0;
|
dlg->m_HookDI = t->flags & HOOKDI ? 1 : 0;
|
||||||
dlg->m_HookDI8 = t->flags & HOOKDI8 ? 1 : 0;
|
dlg->m_HookDI8 = t->flags & HOOKDI8 ? 1 : 0;
|
||||||
dlg->m_EmulateRelMouse = t->flags6 & EMULATERELMOUSE ? 1 : 0;
|
dlg->m_EmulateRelMouse = t->flags6 & EMULATERELMOUSE ? 1 : 0;
|
||||||
@ -680,13 +726,13 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
dlg->m_ClearTarget = t->flags5 & CLEARTARGET ? 1 : 0;
|
dlg->m_ClearTarget = t->flags5 & CLEARTARGET ? 1 : 0;
|
||||||
dlg->m_FixPitch = t->flags6 & FIXPITCH ? 1 : 0;
|
dlg->m_FixPitch = t->flags6 & FIXPITCH ? 1 : 0;
|
||||||
dlg->m_Power2Width = t->flags6 & POWER2WIDTH ? 1 : 0;
|
dlg->m_Power2Width = t->flags6 & POWER2WIDTH ? 1 : 0;
|
||||||
dlg->m_SaveLoad = t->flags & SAVELOAD ? 1 : 0;
|
//dlg->m_SaveLoad = t->flags & SAVELOAD ? 1 : 0;
|
||||||
dlg->m_SlowDown = t->flags & SLOWDOWN ? 1 : 0;
|
dlg->m_SlowDown = t->flags & SLOWDOWN ? 1 : 0;
|
||||||
dlg->m_BlitFromBackBuffer = t->flags & BLITFROMBACKBUFFER ? 1 : 0;
|
dlg->m_BlitFromBackBuffer = t->flags & BLITFROMBACKBUFFER ? 1 : 0;
|
||||||
dlg->m_NoFlipEmulation = t->flags4 & NOFLIPEMULATION ? 1 : 0;
|
dlg->m_NoFlipEmulation = t->flags4 & NOFLIPEMULATION ? 1 : 0;
|
||||||
dlg->m_LockColorDepth = t->flags7 & LOCKCOLORDEPTH ? 1 : 0;
|
dlg->m_LockColorDepth = t->flags7 & LOCKCOLORDEPTH ? 1 : 0;
|
||||||
dlg->m_SuppressClipping = t->flags & SUPPRESSCLIPPING ? 1 : 0;
|
// dlg->m_SuppressClipping = t->flags & SUPPRESSCLIPPING ? 1 : 0;
|
||||||
dlg->m_ForceClipper = t->flags3 & FORCECLIPPER ? 1 : 0;
|
// dlg->m_ForceClipper = t->flags3 & FORCECLIPPER ? 1 : 0;
|
||||||
dlg->m_DisableGammaRamp = t->flags2 & DISABLEGAMMARAMP ? 1 : 0;
|
dlg->m_DisableGammaRamp = t->flags2 & DISABLEGAMMARAMP ? 1 : 0;
|
||||||
dlg->m_AutoRefresh = t->flags & AUTOREFRESH ? 1 : 0;
|
dlg->m_AutoRefresh = t->flags & AUTOREFRESH ? 1 : 0;
|
||||||
dlg->m_IndependentRefresh = t->flags2 & INDEPENDENTREFRESH ? 1 : 0;
|
dlg->m_IndependentRefresh = t->flags2 & INDEPENDENTREFRESH ? 1 : 0;
|
||||||
@ -781,10 +827,15 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
|||||||
dlg->m_ReplacePrivOps = t->flags5 & REPLACEPRIVOPS ? 1 : 0;
|
dlg->m_ReplacePrivOps = t->flags5 & REPLACEPRIVOPS ? 1 : 0;
|
||||||
dlg->m_InitialRes = t->flags7 & INITIALRES ? 1 : 0;
|
dlg->m_InitialRes = t->flags7 & INITIALRES ? 1 : 0;
|
||||||
dlg->m_MaximumRes = t->flags7 & MAXIMUMRES ? 1 : 0;
|
dlg->m_MaximumRes = t->flags7 & MAXIMUMRES ? 1 : 0;
|
||||||
|
//dlg->m_ForceVSync = t->flags8 & FORCEVSYNC ? 1 : 0;
|
||||||
|
//dlg->m_ForceNoVSync = t->flags8 & FORCENOVSYNC ? 1 : 0;
|
||||||
|
//dlg->m_ForceWait = t->flags8 & FORCEWAIT ? 1 : 0;
|
||||||
|
//dlg->m_ForceNoWait = t->flags8 & FORCENOWAIT ? 1 : 0;
|
||||||
dlg->m_PosX = t->posx;
|
dlg->m_PosX = t->posx;
|
||||||
dlg->m_PosY = t->posy;
|
dlg->m_PosY = t->posy;
|
||||||
dlg->m_SizX = t->sizx;
|
dlg->m_SizX = t->sizx;
|
||||||
dlg->m_SizY = t->sizy;
|
dlg->m_SizY = t->sizy;
|
||||||
|
dlg->m_ScanLine = t->ScanLine;
|
||||||
dlg->m_MaxFPS = t->MaxFPS;
|
dlg->m_MaxFPS = t->MaxFPS;
|
||||||
dlg->m_InitTS = t->InitTS+8;
|
dlg->m_InitTS = t->InitTS+8;
|
||||||
dlg->m_FakeVersionId = t->FakeVersionId;
|
dlg->m_FakeVersionId = t->FakeVersionId;
|
||||||
@ -866,14 +917,6 @@ static void SaveConfigItem(TARGETMAP *TargetMap, PRIVATEMAP *PrivateMap, int i,
|
|||||||
sprintf_s(val, sizeof(val), "%i", TargetMap->flags8);
|
sprintf_s(val, sizeof(val), "%i", TargetMap->flags8);
|
||||||
WritePrivateProfileString("target", key, val, InitPath);
|
WritePrivateProfileString("target", key, val, InitPath);
|
||||||
// -------
|
// -------
|
||||||
sprintf_s(key, sizeof(key), "flagl%i", i);
|
|
||||||
sprintf_s(val, sizeof(val), "%i", TargetMap->flags7);
|
|
||||||
WritePrivateProfileString("target", key, val, InitPath);
|
|
||||||
// -------
|
|
||||||
sprintf_s(key, sizeof(key), "flagm%i", i);
|
|
||||||
sprintf_s(val, sizeof(val), "%i", TargetMap->flags8);
|
|
||||||
WritePrivateProfileString("target", key, val, InitPath);
|
|
||||||
// -------
|
|
||||||
sprintf_s(key, sizeof(key), "tflag%i", i);
|
sprintf_s(key, sizeof(key), "tflag%i", i);
|
||||||
sprintf_s(val, sizeof(val), "%i", TargetMap->tflags);
|
sprintf_s(val, sizeof(val), "%i", TargetMap->tflags);
|
||||||
WritePrivateProfileString("target", key, val, InitPath);
|
WritePrivateProfileString("target", key, val, InitPath);
|
||||||
@ -926,6 +969,10 @@ static void SaveConfigItem(TARGETMAP *TargetMap, PRIVATEMAP *PrivateMap, int i,
|
|||||||
sprintf_s(val, sizeof(val), "%i", TargetMap->SlowRatio);
|
sprintf_s(val, sizeof(val), "%i", TargetMap->SlowRatio);
|
||||||
WritePrivateProfileString("target", key, val, InitPath);
|
WritePrivateProfileString("target", key, val, InitPath);
|
||||||
// -------
|
// -------
|
||||||
|
sprintf_s(key, sizeof(key), "scanline%i", i);
|
||||||
|
sprintf_s(val, sizeof(val), "%i", TargetMap->ScanLine);
|
||||||
|
WritePrivateProfileString("target", key, val, InitPath);
|
||||||
|
// -------
|
||||||
sprintf_s(key, sizeof(key), "initresw%i", i);
|
sprintf_s(key, sizeof(key), "initresw%i", i);
|
||||||
sprintf_s(val, sizeof(val), "%i", TargetMap->resw);
|
sprintf_s(val, sizeof(val), "%i", TargetMap->resw);
|
||||||
WritePrivateProfileString("target", key, val, InitPath);
|
WritePrivateProfileString("target", key, val, InitPath);
|
||||||
@ -1122,6 +1169,9 @@ static int LoadConfigItem(TARGETMAP *TargetMap, PRIVATEMAP *PrivateMap, int i, c
|
|||||||
sprintf_s(key, sizeof(key), "slowratio%i", i);
|
sprintf_s(key, sizeof(key), "slowratio%i", i);
|
||||||
TargetMap->SlowRatio = GetPrivateProfileInt("target", key, 1, InitPath);
|
TargetMap->SlowRatio = GetPrivateProfileInt("target", key, 1, InitPath);
|
||||||
// -------
|
// -------
|
||||||
|
sprintf_s(key, sizeof(key), "scanline%i", i);
|
||||||
|
TargetMap->ScanLine = GetPrivateProfileInt("target", key, 1, InitPath);
|
||||||
|
// -------
|
||||||
sprintf_s(key, sizeof(key), "initresw%i", i);
|
sprintf_s(key, sizeof(key), "initresw%i", i);
|
||||||
TargetMap->resw = GetPrivateProfileInt("target", key, 0, InitPath);
|
TargetMap->resw = GetPrivateProfileInt("target", key, 0, InitPath);
|
||||||
// -------
|
// -------
|
||||||
@ -1940,6 +1990,10 @@ void CDxwndhostView::OnProcessKill()
|
|||||||
lpProcName=FilePath;
|
lpProcName=FilePath;
|
||||||
while (lpNext=strchr(lpProcName,'\\')) lpProcName=lpNext+1;
|
while (lpNext=strchr(lpProcName,'\\')) lpProcName=lpNext+1;
|
||||||
|
|
||||||
|
if(TargetMaps[i].flags7 & COPYNOSHIMS){
|
||||||
|
strcat(lpProcName, ".noshim");
|
||||||
|
}
|
||||||
|
|
||||||
if(!KillProcByName(lpProcName, FALSE)){
|
if(!KillProcByName(lpProcName, FALSE)){
|
||||||
wchar_t *wcstring = new wchar_t[48+1];
|
wchar_t *wcstring = new wchar_t[48+1];
|
||||||
mbstowcs_s(NULL, wcstring, 48, PrivateMaps[i].title, _TRUNCATE);
|
mbstowcs_s(NULL, wcstring, 48, PrivateMaps[i].title, _TRUNCATE);
|
||||||
@ -2666,7 +2720,7 @@ DWORD WINAPI StartDebug(void *p)
|
|||||||
ThInfo = (ThreadInfo_Type *)p;
|
ThInfo = (ThreadInfo_Type *)p;
|
||||||
ZeroMemory(&sinfo, sizeof(sinfo));
|
ZeroMemory(&sinfo, sizeof(sinfo));
|
||||||
sinfo.cb = sizeof(sinfo);
|
sinfo.cb = sizeof(sinfo);
|
||||||
sRunTargetPath = (strlen(ThInfo->PM->launchpath)>0) ? ThInfo->PM->launchpath : ThInfo->TM->path;
|
sRunTargetPath = ThInfo->ExePath;
|
||||||
strcpy_s(path, sizeof(path), sRunTargetPath);
|
strcpy_s(path, sizeof(path), sRunTargetPath);
|
||||||
PathRemoveFileSpec(path);
|
PathRemoveFileSpec(path);
|
||||||
if(!CreateProcess(NULL,
|
if(!CreateProcess(NULL,
|
||||||
@ -3061,6 +3115,77 @@ static void CheckSafeDiscVersion(char *path)
|
|||||||
fclose(exe);
|
fclose(exe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define FILECOPYBUFSIZE 1024
|
||||||
|
|
||||||
|
static void MakeHiddenFile(char *sTargetPath)
|
||||||
|
{
|
||||||
|
HANDLE hFile = INVALID_HANDLE_VALUE;
|
||||||
|
HANDLE hTempFile = INVALID_HANDLE_VALUE;
|
||||||
|
BOOL fSuccess = FALSE;
|
||||||
|
DWORD dwRetVal = 0;
|
||||||
|
UINT uRetVal = 0;
|
||||||
|
DWORD dwBytesRead = 0;
|
||||||
|
DWORD dwBytesWritten = 0;
|
||||||
|
char chBuffer[FILECOPYBUFSIZE];
|
||||||
|
|
||||||
|
hFile = CreateFile(sTargetPath, // file name
|
||||||
|
GENERIC_READ, // open for reading
|
||||||
|
0, // do not share
|
||||||
|
NULL, // default security
|
||||||
|
OPEN_EXISTING, // existing file only
|
||||||
|
FILE_ATTRIBUTE_NORMAL, // normal file
|
||||||
|
NULL); // no template
|
||||||
|
if (hFile == INVALID_HANDLE_VALUE) {
|
||||||
|
//PrintError(TEXT("First CreateFile failed"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcat(sTargetPath, ".noshim");
|
||||||
|
|
||||||
|
// Deletes last copy of the file, just in case it was updated (patched?)
|
||||||
|
// DeleteFile(sTargetPath);
|
||||||
|
|
||||||
|
// Creates the new file to write to for the upper-case version.
|
||||||
|
hTempFile = CreateFile((LPTSTR) sTargetPath, // file name
|
||||||
|
GENERIC_WRITE, // open for write
|
||||||
|
0, // do not share
|
||||||
|
NULL, // default security
|
||||||
|
CREATE_ALWAYS, // overwrite existing
|
||||||
|
//FILE_ATTRIBUTE_HIDDEN, // hidden file
|
||||||
|
FILE_ATTRIBUTE_NORMAL, // normal file
|
||||||
|
NULL); // no template
|
||||||
|
if (hTempFile == INVALID_HANDLE_VALUE) {
|
||||||
|
char msg[120];
|
||||||
|
sprintf(msg, "Creation of hidden copy of target file with no SHIMs failed\nError=%d", GetLastError());
|
||||||
|
MessageBox(0, msg, "Warning", 0);
|
||||||
|
//PrintError(TEXT("Second CreateFile failed"));
|
||||||
|
if (!CloseHandle(hFile)){
|
||||||
|
sprintf(msg, "CloseHandle failed\nError=%d", GetLastError());
|
||||||
|
MessageBox(0, msg, "Error", 0);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Reads BUFSIZE blocks to the buffer and copy to the temporary
|
||||||
|
// file.
|
||||||
|
do {
|
||||||
|
if (ReadFile(hFile, chBuffer, FILECOPYBUFSIZE, &dwBytesRead, NULL)) {
|
||||||
|
fSuccess = WriteFile(hTempFile, chBuffer, dwBytesRead, &dwBytesWritten, NULL);
|
||||||
|
if (!fSuccess) {
|
||||||
|
//PrintError(TEXT("WriteFile failed"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//PrintError(TEXT("ReadFile failed"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Continues until the whole file is processed.
|
||||||
|
} while (dwBytesRead == FILECOPYBUFSIZE);
|
||||||
|
|
||||||
|
CloseHandle(hFile);
|
||||||
|
CloseHandle(hTempFile);
|
||||||
|
}
|
||||||
|
|
||||||
void CDxwndhostView::OnRun()
|
void CDxwndhostView::OnRun()
|
||||||
{
|
{
|
||||||
CListCtrl& listctrl = GetListCtrl();
|
CListCtrl& listctrl = GetListCtrl();
|
||||||
@ -3068,7 +3193,8 @@ void CDxwndhostView::OnRun()
|
|||||||
int i;
|
int i;
|
||||||
STARTUPINFO sinfo;
|
STARTUPINFO sinfo;
|
||||||
PROCESS_INFORMATION pinfo;
|
PROCESS_INFORMATION pinfo;
|
||||||
char path[MAX_PATH];
|
char folderpath[MAX_PATH+20]; // max + space for ".noshim"
|
||||||
|
char exepath[MAX_PATH+20]; // max + space for ".noshim"
|
||||||
TARGETMAP RestrictedMaps[2];
|
TARGETMAP RestrictedMaps[2];
|
||||||
char *sRunTargetPath;
|
char *sRunTargetPath;
|
||||||
|
|
||||||
@ -3088,10 +3214,16 @@ void CDxwndhostView::OnRun()
|
|||||||
memcpy(&RestrictedMaps[0], &TargetMaps[i], sizeof(TARGETMAP));
|
memcpy(&RestrictedMaps[0], &TargetMaps[i], sizeof(TARGETMAP));
|
||||||
memset(&RestrictedMaps[1], 0, sizeof(TARGETMAP));
|
memset(&RestrictedMaps[1], 0, sizeof(TARGETMAP));
|
||||||
if(!(PrivateMaps[i].startfolder[0])){
|
if(!(PrivateMaps[i].startfolder[0])){
|
||||||
strcpy_s(path, sizeof(path), sRunTargetPath);
|
strcpy_s(folderpath, sizeof(folderpath), sRunTargetPath);
|
||||||
PathRemoveFileSpec(path);
|
strcpy_s(exepath, sizeof(exepath), sRunTargetPath);
|
||||||
|
PathRemoveFileSpec(folderpath);
|
||||||
}else{
|
}else{
|
||||||
strcpy_s(path, sizeof(path), PrivateMaps[i].startfolder);
|
strcpy_s(folderpath, sizeof(folderpath), PrivateMaps[i].startfolder);
|
||||||
|
strcpy_s(exepath, sizeof(exepath), sRunTargetPath);
|
||||||
|
}
|
||||||
|
if(TargetMaps[i].flags7 & COPYNOSHIMS){
|
||||||
|
MakeHiddenFile(exepath);
|
||||||
|
strncpy(RestrictedMaps[0].path, exepath, MAX_PATH);
|
||||||
}
|
}
|
||||||
SetTarget(RestrictedMaps);
|
SetTarget(RestrictedMaps);
|
||||||
OutTrace("OnRun idx=%d prog=\"%s\"\n", i, TargetMaps[i].path);
|
OutTrace("OnRun idx=%d prog=\"%s\"\n", i, TargetMaps[i].path);
|
||||||
@ -3137,24 +3269,31 @@ void CDxwndhostView::OnRun()
|
|||||||
ThreadInfo_Type ThreadInfo;
|
ThreadInfo_Type ThreadInfo;
|
||||||
ThreadInfo.TM=&TargetMaps[i];
|
ThreadInfo.TM=&TargetMaps[i];
|
||||||
ThreadInfo.PM=&PrivateMaps[i];
|
ThreadInfo.PM=&PrivateMaps[i];
|
||||||
|
ThreadInfo.ExePath=exepath;
|
||||||
CloseHandle(CreateThread( NULL, 0, StartDebug, &ThreadInfo, 0, NULL));
|
CloseHandle(CreateThread( NULL, 0, StartDebug, &ThreadInfo, 0, NULL));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if(TargetMaps[i].flags7 & INJECTSUSPENDED){
|
if(TargetMaps[i].flags7 & INJECTSUSPENDED){
|
||||||
OutTrace("injectsuspended mode\n");
|
OutTrace("injectsuspended mode\n");
|
||||||
InjectSuspended(sRunTargetPath, path);
|
InjectSuspended(exepath, folderpath);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
OutTrace("setwindowshook mode\n");
|
OutTrace("setwindowshook mode\n");
|
||||||
CreateProcess(NULL,
|
CreateProcess(NULL,
|
||||||
sRunTargetPath,
|
exepath,
|
||||||
0, 0, false, CREATE_DEFAULT_ERROR_MODE, NULL, path, &sinfo, &pinfo);
|
0, 0, false, CREATE_DEFAULT_ERROR_MODE, NULL, folderpath, &sinfo, &pinfo);
|
||||||
CloseHandle(pinfo.hProcess); // no longer needed, avoid handle leakage
|
CloseHandle(pinfo.hProcess); // no longer needed, avoid handle leakage
|
||||||
CloseHandle(pinfo.hThread); // no longer needed, avoid handle leakage
|
CloseHandle(pinfo.hThread); // no longer needed, avoid handle leakage
|
||||||
}
|
}
|
||||||
|
|
||||||
// wait & recover
|
// wait & recover
|
||||||
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)RecoverTargetMaps, (LPVOID)TargetMaps, 0, NULL);
|
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)RecoverTargetMaps, (LPVOID)TargetMaps, 0, NULL);
|
||||||
if(gAutoHideMode) this->OnGoToTrayIcon();
|
if(gAutoHideMode) this->OnGoToTrayIcon();
|
||||||
|
|
||||||
|
// not working: the file is opened, can't be deleted
|
||||||
|
//if(TargetMaps[i].flags7 & COPYNOSHIMS){
|
||||||
|
// DeleteFile(exepath);
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwitchToColorDepth(int bpp)
|
void SwitchToColorDepth(int bpp)
|
||||||
|
BIN
host/host.aps
BIN
host/host.aps
Binary file not shown.
BIN
host/resource
BIN
host/resource
Binary file not shown.
BIN
proxy/d3d8.suo
Normal file
BIN
proxy/d3d8.suo
Normal file
Binary file not shown.
BIN
proxy/d3d9.suo
Normal file
BIN
proxy/d3d9.suo
Normal file
Binary file not shown.
BIN
proxy/ddraw.suo
Normal file
BIN
proxy/ddraw.suo
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user