mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_02_46_src
Former-commit-id: f755724f890c4d45c7430632af9ba91aeb2268ca
This commit is contained in:
parent
573a89d129
commit
904be61ef6
@ -64,7 +64,7 @@
|
|||||||
#define TIMESTRETCH 0x00010000 // make system time stretchable
|
#define TIMESTRETCH 0x00010000 // make system time stretchable
|
||||||
#define HOOKOPENGL 0x00020000 // Hook OpenGL calls
|
#define HOOKOPENGL 0x00020000 // Hook OpenGL calls
|
||||||
#define WALLPAPERMODE 0x00040000 // mouse events are discarded (good for screensaver-like)
|
#define WALLPAPERMODE 0x00040000 // mouse events are discarded (good for screensaver-like)
|
||||||
#define SHOWHWCURSOR 0x00080000 // mouse events are discarded (good for screensaver-like)
|
#define SHOWHWCURSOR 0x00080000 // enable hardware cursor
|
||||||
#define HOOKGDI 0x00100000 // Hook GDI functions
|
#define HOOKGDI 0x00100000 // Hook GDI functions
|
||||||
#define SHOWFPSOVERLAY 0x00200000 // shows FPS value to status win / log / screen overlay
|
#define SHOWFPSOVERLAY 0x00200000 // shows FPS value to status win / log / screen overlay
|
||||||
#define FAKEVERSION 0x00400000 // pretends the platvorm is a given window version / subversion
|
#define FAKEVERSION 0x00400000 // pretends the platvorm is a given window version / subversion
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:cf9c7d5fd45f8f880656efab5c5db5ef3a0a8e74942d2b2418bf5a49f8fab39b
|
oid sha256:c96cb2622942095b2b952937cc60ce9ba524aaf8921ddfc68088c370d79d2ff1
|
||||||
size 426496
|
size 426496
|
||||||
|
1230
build/dxwnd.ini
1230
build/dxwnd.ini
File diff suppressed because it is too large
Load Diff
@ -5,11 +5,11 @@ module0=
|
|||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=134234146
|
flag0=134234150
|
||||||
flagg0=134217728
|
flagg0=1207959552
|
||||||
flagh0=65556
|
flagh0=20
|
||||||
flagi0=0
|
flagi0=4
|
||||||
tflag0=67
|
tflag0=0
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
minx0=0
|
minx0=0
|
||||||
|
24
build/exports/A10 Cuba.dxw
Normal file
24
build/exports/A10 Cuba.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=A10 Cuba
|
||||||
|
path0=D:\Games\A10\A10Cuba.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=671096866
|
||||||
|
flagg0=1207959568
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
24
build/exports/Actua Soccer 3.dxw
Normal file
24
build/exports/Actua Soccer 3.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Actua Soccer 3
|
||||||
|
path0=D:\Games\ActuaSoccer3\SOCCER3D.EXE
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=671088674
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
@ -5,7 +5,7 @@ module0=
|
|||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=-394125278
|
flag0=1753358370
|
||||||
flagg0=134217728
|
flagg0=134217728
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=0
|
flagi0=0
|
||||||
|
24
build/exports/Beavis & Butthead Do U..dxw
Normal file
24
build/exports/Beavis & Butthead Do U..dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Beavis & Butthead Do U.
|
||||||
|
path0=D:\Games\B_b\BEAVIS.EXE
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=671090722
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=32788
|
||||||
|
flagi0=0
|
||||||
|
tflag0=3
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
24
build/exports/Black & White.dxw
Normal file
24
build/exports/Black & White.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Black & White
|
||||||
|
path0=D:\Games\Black & White\runblack.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=1
|
||||||
|
flag0=679477280
|
||||||
|
flagg0=1207959568
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=259
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
24
build/exports/Carmageddon 2 (GLIDE).dxw
Normal file
24
build/exports/Carmageddon 2 (GLIDE).dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Carmageddon 2 (GLIDE)
|
||||||
|
path0=D:\Games\Carmageddon_2\carma2_HW.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217730
|
||||||
|
flagg0=1208025088
|
||||||
|
flagh0=20
|
||||||
|
flagi0=12
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
24
build/exports/Carmageddon 2 (SW).dxw
Normal file
24
build/exports/Carmageddon 2 (SW).dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Carmageddon 2 (SW)
|
||||||
|
path0=D:\Games\Carmageddon_2\carma2_SW.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=671088674
|
||||||
|
flagg0=1208025088
|
||||||
|
flagh0=33562644
|
||||||
|
flagi0=12
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
24
build/exports/Cave Story.dxw
Normal file
24
build/exports/Cave Story.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Cave Story
|
||||||
|
path0=D:\Games\Cave Story\Doukutsu.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217762
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
24
build/exports/Crimson Skies.dxw
Normal file
24
build/exports/Crimson Skies.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Crimson Skies
|
||||||
|
path0=D:\Games\Crimson_Skies\crimson.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=7
|
||||||
|
coord0=0
|
||||||
|
flag0=134234148
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=259
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
@ -5,9 +5,9 @@ module0=
|
|||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=134217762
|
flag0=134217766
|
||||||
flagg0=1207959552
|
flagg0=1207959552
|
||||||
flagh0=16
|
flagh0=65556
|
||||||
flagi0=0
|
flagi0=0
|
||||||
tflag0=67
|
tflag0=67
|
||||||
initx0=0
|
initx0=0
|
||||||
|
@ -6,7 +6,7 @@ opengllib0=
|
|||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=134217762
|
flag0=134217762
|
||||||
flagg0=134217728
|
flagg0=1207959552
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=0
|
flagi0=0
|
||||||
tflag0=0
|
tflag0=0
|
||||||
|
24
build/exports/F-16 Fighting Falcon.dxw
Normal file
24
build/exports/F-16 Fighting Falcon.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=F-16 Fighting Falcon
|
||||||
|
path0=D:\Games\F16\f1695.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217826
|
||||||
|
flagg0=1209008128
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=259
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
24
build/exports/Fate.dxw
Normal file
24
build/exports/Fate.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Fate
|
||||||
|
path0=D:\Games\Fate\Fate.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217762
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
24
build/exports/Hitman - Codename 47.dxw
Normal file
24
build/exports/Hitman - Codename 47.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Hitman - Codename 47
|
||||||
|
path0=D:\Games\Hitman - Codename 47\Hitman.Exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=1
|
||||||
|
coord0=0
|
||||||
|
flag0=134234144
|
||||||
|
flagg0=1207959808
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=3
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
24
build/exports/Hitman 2 Silent Assassin.dxw
Normal file
24
build/exports/Hitman 2 Silent Assassin.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Hitman 2 Silent Assassin
|
||||||
|
path0=D:\Games\Hitman 2 Silent Assassin\hitman2.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=2
|
||||||
|
flag0=134234150
|
||||||
|
flagg0=1207959568
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
@ -5,9 +5,9 @@ module0=
|
|||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=671088642
|
flag0=671154178
|
||||||
flagg0=134217728
|
flagg0=134217728
|
||||||
flagh0=477
|
flagh0=285
|
||||||
flagi0=0
|
flagi0=0
|
||||||
tflag0=0
|
tflag0=0
|
||||||
initx0=0
|
initx0=0
|
||||||
|
24
build/exports/Imperialism II.dxw
Normal file
24
build/exports/Imperialism II.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Imperialism II
|
||||||
|
path0=D:\Games\Imperialism 2\imperialism II.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=679485474
|
||||||
|
flagg0=1209008128
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
24
build/exports/International Football 2000.dxw
Normal file
24
build/exports/International Football 2000.dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=International Football 2000
|
||||||
|
path0=D:\Games\International Football 2000\MSIF2000.ICD
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=150994976
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=259
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
@ -5,11 +5,11 @@ module0=
|
|||||||
opengllib0=
|
opengllib0=
|
||||||
ver0=0
|
ver0=0
|
||||||
coord0=0
|
coord0=0
|
||||||
flag0=134217760
|
flag0=134234148
|
||||||
flagg0=1207959552
|
flagg0=1207959808
|
||||||
flagh0=20
|
flagh0=20
|
||||||
flagi0=0
|
flagi0=0
|
||||||
tflag0=67
|
tflag0=3
|
||||||
initx0=0
|
initx0=0
|
||||||
inity0=0
|
inity0=0
|
||||||
minx0=0
|
minx0=0
|
||||||
|
24
build/exports/Pandemonium 2 (GLIDE).dxw
Normal file
24
build/exports/Pandemonium 2 (GLIDE).dxw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[target]
|
||||||
|
title0=Pandemonium 2 (GLIDE)
|
||||||
|
path0=D:\Games\Pandemonium 2\pandy.exe
|
||||||
|
module0=
|
||||||
|
opengllib0=
|
||||||
|
ver0=0
|
||||||
|
coord0=0
|
||||||
|
flag0=134217762
|
||||||
|
flagg0=1207959552
|
||||||
|
flagh0=20
|
||||||
|
flagi0=4
|
||||||
|
tflag0=0
|
||||||
|
initx0=0
|
||||||
|
inity0=0
|
||||||
|
minx0=0
|
||||||
|
miny0=0
|
||||||
|
maxx0=0
|
||||||
|
maxy0=0
|
||||||
|
posx0=50
|
||||||
|
posy0=50
|
||||||
|
sizx0=800
|
||||||
|
sizy0=600
|
||||||
|
maxfps0=0
|
||||||
|
initts0=0
|
@ -1,3 +1,3 @@
|
|||||||
Ancient Evil: working both in emulated / direct mode, but in emulated mode the cursor is not visible.
|
Ancient Evil: working both in emulated / direct mode, but in emulated mode the cursor is not visible.
|
||||||
Whiteout: handling of IMultiMediaStream COM interface for intro movie
|
|
||||||
window handling for ddraw8 games - see WildFire with keep aspect ratio & client area
|
window handling for ddraw8 games - see WildFire with keep aspect ratio & client area
|
||||||
|
"devastation" intro movie - bad cooordinates
|
@ -295,7 +295,7 @@ fix: recovered window destruction
|
|||||||
fix: proper handling of MIPMAP and LOCALVIDMEM surfaces
|
fix: proper handling of MIPMAP and LOCALVIDMEM surfaces
|
||||||
fix: color depth handling - now when the program terminates the desktop is brought to the original color depth
|
fix: color depth handling - now when the program terminates the desktop is brought to the original color depth
|
||||||
|
|
||||||
v2.02.45
|
v2.02.44
|
||||||
Improved debug logging for all palette operations
|
Improved debug logging for all palette operations
|
||||||
fixed a bugged log causing the crash of Empire Earth in debug mode
|
fixed a bugged log causing the crash of Empire Earth in debug mode
|
||||||
added show time stretching flag - preliminary version. Some code cleaning as well.
|
added show time stretching flag - preliminary version. Some code cleaning as well.
|
||||||
@ -307,4 +307,8 @@ added interception for CoCreateInstance following cases:
|
|||||||
case 0x49c47ce5: Module="amstream"; Class="CLSID_AMMultiMediaStream";
|
case 0x49c47ce5: Module="amstream"; Class="CLSID_AMMultiMediaStream";
|
||||||
preliminary (proxed) interception for "GetActiveWindow" and "GetForegroundWindow"
|
preliminary (proxed) interception for "GetActiveWindow" and "GetForegroundWindow"
|
||||||
|
|
||||||
|
v2.02.45
|
||||||
|
A small fix for ddraw 7 games that makes Praetorians playable, though with some problems!
|
||||||
|
|
||||||
|
v2.02.46
|
||||||
|
Fixed handling of user32 CreateDialogIndirectParam call to avoid processing in non fullscreen mode - fix necessary to start "Crimson Skies".
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -2746,7 +2746,14 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// if not primary, just proxy the method
|
// this is yet to be proven utility.....
|
||||||
|
// v2.02.45: No - it prevents "Praetorians" to work!!! -> commented out.
|
||||||
|
//
|
||||||
|
//if (IsBack && (lpddsc->dwCaps & DDSCAPS_ZBUFFER) && lpDDZBuffer){
|
||||||
|
// *lplpddas = lpDDZBuffer;
|
||||||
|
// OutTraceD("GetAttachedSurface(%d): emulating ZBUFFER attach on BACKBUFFER lpddsadd=%x\n", dxversion, *lplpddas);
|
||||||
|
// return 0;
|
||||||
|
//}
|
||||||
|
|
||||||
// v2.1.81: fix to make "Silver" working: if the primary surface was created with
|
// v2.1.81: fix to make "Silver" working: if the primary surface was created with
|
||||||
// backbuffercount == 2, the game expects some more surface to be attached to
|
// backbuffercount == 2, the game expects some more surface to be attached to
|
||||||
@ -2755,13 +2762,6 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet
|
|||||||
// beware: "Snowboard Racer" fails if you return an attached surface anyhow! There,
|
// beware: "Snowboard Racer" fails if you return an attached surface anyhow! There,
|
||||||
// the primary surface was created with back buffer count == 1.
|
// the primary surface was created with back buffer count == 1.
|
||||||
|
|
||||||
// this is yet to be proven utility.....
|
|
||||||
if (IsBack && (lpddsc->dwCaps & DDSCAPS_ZBUFFER) && lpDDZBuffer){
|
|
||||||
*lplpddas = lpDDZBuffer;
|
|
||||||
OutTraceD("GetAttachedSurface(%d): emulating ZBUFFER attach on BACKBUFFER lpddsadd=%x\n", dxversion, *lplpddas);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsBack && (DDSD_Prim.dwBackBufferCount > 1)){
|
if (IsBack && (DDSD_Prim.dwBackBufferCount > 1)){
|
||||||
*lplpddas = lpDDSBack;
|
*lplpddas = lpDDSBack;
|
||||||
OutTraceD("GetAttachedSurface(%d): DOUBLEBUFFER attached=%x\n", dxversion, *lplpddas);
|
OutTraceD("GetAttachedSurface(%d): DOUBLEBUFFER attached=%x\n", dxversion, *lplpddas);
|
||||||
@ -3010,8 +3010,7 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect,
|
|||||||
res=0;
|
res=0;
|
||||||
// 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) {
|
||||||
if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(lpddssrc);
|
dxw.ShowOverlay(lpddssrc);
|
||||||
if (dxw.dwFlags4 & SHOWTIMESTRETCH) dxw.ShowTimeStretching(lpddssrc);
|
|
||||||
if (IsDebug) BlitTrace("PRIM-NOEMU", lpsrcrect, &destrect, __LINE__);
|
if (IsDebug) BlitTrace("PRIM-NOEMU", lpsrcrect, &destrect, __LINE__);
|
||||||
res= (*pBlt)(lpdds, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
res= (*pBlt)(lpdds, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
||||||
}
|
}
|
||||||
@ -3071,8 +3070,7 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect,
|
|||||||
work on my PC.
|
work on my PC.
|
||||||
*/
|
*/
|
||||||
if(res==DDERR_UNSUPPORTED){
|
if(res==DDERR_UNSUPPORTED){
|
||||||
if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(lpddssrc);
|
dxw.ShowOverlay(lpddssrc);
|
||||||
if (dxw.dwFlags4 & SHOWTIMESTRETCH) dxw.ShowTimeStretching(lpddssrc);
|
|
||||||
if (IsDebug) BlitTrace("UNSUPP", &emurect, &destrect, __LINE__);
|
if (IsDebug) BlitTrace("UNSUPP", &emurect, &destrect, __LINE__);
|
||||||
res=(*pBlt)(lpDDSEmu_Prim, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
res=(*pBlt)(lpDDSEmu_Prim, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx);
|
||||||
if (res) BlitError(res, lpsrcrect, &destrect, __LINE__);
|
if (res) BlitError(res, lpsrcrect, &destrect, __LINE__);
|
||||||
@ -3110,8 +3108,7 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect,
|
|||||||
lpDDSSource = lpdds;
|
lpDDSSource = lpdds;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(lpDDSSource);
|
dxw.ShowOverlay(lpDDSSource);
|
||||||
if (dxw.dwFlags4 & SHOWTIMESTRETCH) dxw.ShowTimeStretching(lpDDSSource);
|
|
||||||
if (IsDebug) BlitTrace("BACK2PRIM", &emurect, &destrect, __LINE__);
|
if (IsDebug) BlitTrace("BACK2PRIM", &emurect, &destrect, __LINE__);
|
||||||
res=(*pBlt)(lpDDSEmu_Prim, &destrect, lpDDSSource, &emurect, DDBLT_WAIT, 0);
|
res=(*pBlt)(lpDDSEmu_Prim, &destrect, lpDDSSource, &emurect, DDBLT_WAIT, 0);
|
||||||
|
|
||||||
@ -3301,7 +3298,7 @@ HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY
|
|||||||
OutTraceD("CreatePalette: dwFlags=%x(%s)\n", dwflags, ExplainCreatePaletteFlags(dwflags));
|
OutTraceD("CreatePalette: dwFlags=%x(%s)\n", dwflags, ExplainCreatePaletteFlags(dwflags));
|
||||||
if(IsDebug && (dwflags & DDPCAPS_8BIT)) dxw.DumpPalette(256, lpddpa);
|
if(IsDebug && (dwflags & DDPCAPS_8BIT)) dxw.DumpPalette(256, lpddpa);
|
||||||
|
|
||||||
if (dwflags & ~(DDPCAPS_PRIMARYSURFACE|DDPCAPS_8BIT|DDPCAPS_ALLOW256|DDPCAPS_INITIALIZE_LEGACY)) STOPPER("Palette flags");
|
//if (dwflags & ~(DDPCAPS_PRIMARYSURFACE|DDPCAPS_8BIT|DDPCAPS_ALLOW256|DDPCAPS_INITIALIZE_LEGACY)) STOPPER("Palette flags");
|
||||||
|
|
||||||
if(dxw.dwFlags1 & EMULATESURFACE) dwflags &= ~DDPCAPS_PRIMARYSURFACE;
|
if(dxw.dwFlags1 & EMULATESURFACE) dwflags &= ~DDPCAPS_PRIMARYSURFACE;
|
||||||
res = (*pCreatePalette)(lpdd, dwflags, lpddpa, lplpddp, pu);
|
res = (*pCreatePalette)(lpdd, dwflags, lpddpa, lplpddp, pu);
|
||||||
|
@ -917,6 +917,25 @@ void dxwCore::GetSystemTime(LPSYSTEMTIME lpSystemTime)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dxwCore::ShowOverlay()
|
||||||
|
{
|
||||||
|
this->ShowOverlay(GetDC(hWnd));
|
||||||
|
}
|
||||||
|
|
||||||
|
void dxwCore::ShowOverlay(LPDIRECTDRAWSURFACE lpdds)
|
||||||
|
{
|
||||||
|
HDC hdc; // the working dc
|
||||||
|
if (FAILED(lpdds->GetDC(&hdc))) return;
|
||||||
|
this->ShowOverlay(hdc);
|
||||||
|
lpdds->ReleaseDC(hdc);
|
||||||
|
}
|
||||||
|
|
||||||
|
void dxwCore::ShowOverlay(HDC hdc)
|
||||||
|
{
|
||||||
|
if (dwFlags2 & SHOWFPSOVERLAY) ShowFPS(hdc);
|
||||||
|
if (dwFlags4 & SHOWTIMESTRETCH) ShowTimeStretching(hdc);
|
||||||
|
}
|
||||||
|
|
||||||
void dxwCore::ShowFPS()
|
void dxwCore::ShowFPS()
|
||||||
{
|
{
|
||||||
this->ShowFPS(GetDC(hWnd));
|
this->ShowFPS(GetDC(hWnd));
|
||||||
|
@ -71,8 +71,11 @@ public: // methods
|
|||||||
void ShowTimeStretching(void);
|
void ShowTimeStretching(void);
|
||||||
void ShowFPS(HDC);
|
void ShowFPS(HDC);
|
||||||
void ShowTimeStretching(HDC);
|
void ShowTimeStretching(HDC);
|
||||||
char *GetTSCaption(int);
|
void ShowOverlay();
|
||||||
|
void ShowOverlay(HDC);
|
||||||
|
void ShowOverlay(LPDIRECTDRAWSURFACE);
|
||||||
char *GetTSCaption(void);
|
char *GetTSCaption(void);
|
||||||
|
char *GetTSCaption(int);
|
||||||
void DoSlow(int);
|
void DoSlow(int);
|
||||||
void ShowBanner(HWND);
|
void ShowBanner(HWND);
|
||||||
POINT ScreenToClient(POINT);
|
POINT ScreenToClient(POINT);
|
||||||
|
@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "dxwnd.h"
|
#include "dxwnd.h"
|
||||||
#include "dxwcore.hpp"
|
#include "dxwcore.hpp"
|
||||||
|
|
||||||
#define VERSION "2.02.44"
|
#define VERSION "2.02.46"
|
||||||
|
|
||||||
#define DDTHREADLOCK 1
|
#define DDTHREADLOCK 1
|
||||||
|
|
||||||
|
Binary file not shown.
@ -42,6 +42,7 @@ static HookEntry_Type Hooks[]={
|
|||||||
{"StretchDIBits", (FARPROC)StretchDIBits, (FARPROC *)&pStretchDIBits, (FARPROC)extStretchDIBits},
|
{"StretchDIBits", (FARPROC)StretchDIBits, (FARPROC *)&pStretchDIBits, (FARPROC)extStretchDIBits},
|
||||||
//{"SetDIBitsToDevice", (FARPROC)NULL, (FARPROC *)&pSetDIBitsToDevice, (FARPROC)extSetDIBitsToDevice},
|
//{"SetDIBitsToDevice", (FARPROC)NULL, (FARPROC *)&pSetDIBitsToDevice, (FARPROC)extSetDIBitsToDevice},
|
||||||
//{"CreateCompatibleBitmap", (FARPROC)NULL, (FARPROC *)&pCreateCompatibleBitmap, (FARPROC)extCreateCompatibleBitmap},
|
//{"CreateCompatibleBitmap", (FARPROC)NULL, (FARPROC *)&pCreateCompatibleBitmap, (FARPROC)extCreateCompatibleBitmap},
|
||||||
|
//{"SetMapMode", (FARPROC)NULL, (FARPROC *)NULL, (FARPROC)extSetMapMode},
|
||||||
{0, NULL, 0, 0} // terminator
|
{0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -955,8 +956,7 @@ BOOL WINAPI extGDIBitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH
|
|||||||
nHDest= nHeight;
|
nHDest= nHeight;
|
||||||
dxw.MapClient(&nXDest, &nYDest, &nWDest, &nHDest);
|
dxw.MapClient(&nXDest, &nYDest, &nWDest, &nHDest);
|
||||||
res=(*pGDIStretchBlt)(hdcDest, nXDest, nYDest, nWDest, nHDest, hdcSrc, nXSrc, nYSrc, nWidth, nHeight, dwRop);
|
res=(*pGDIStretchBlt)(hdcDest, nXDest, nYDest, nWDest, nHDest, hdcSrc, nXSrc, nYSrc, nWidth, nHeight, dwRop);
|
||||||
if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(hdcDest);
|
dxw.ShowOverlay(hdcDest);
|
||||||
if (dxw.dwFlags4 & SHOWTIMESTRETCH) dxw.ShowTimeStretching(hdcDest);
|
|
||||||
OutTrace("Debug: DC dest=(%d,%d) size=(%d,%d)\n", nXDest, nYDest, nWDest, nHDest);
|
OutTrace("Debug: DC dest=(%d,%d) size=(%d,%d)\n", nXDest, nYDest, nWDest, nHDest);
|
||||||
}
|
}
|
||||||
else if(WindowFromDC(hdcDest)==NULL){
|
else if(WindowFromDC(hdcDest)==NULL){
|
||||||
@ -966,8 +966,7 @@ BOOL WINAPI extGDIBitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH
|
|||||||
nHDest= nHeight;
|
nHDest= nHeight;
|
||||||
dxw.MapWindow(&nXDest, &nYDest, &nWDest, &nHDest);
|
dxw.MapWindow(&nXDest, &nYDest, &nWDest, &nHDest);
|
||||||
res=(*pGDIStretchBlt)(hdcDest, nXDest, nYDest, nWDest, nHDest, hdcSrc, nXSrc, nYSrc, nWidth, nHeight, dwRop);
|
res=(*pGDIStretchBlt)(hdcDest, nXDest, nYDest, nWDest, nHDest, hdcSrc, nXSrc, nYSrc, nWidth, nHeight, dwRop);
|
||||||
if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(hdcDest);
|
dxw.ShowOverlay(hdcDest);
|
||||||
if (dxw.dwFlags4 & SHOWTIMESTRETCH) dxw.ShowTimeStretching(hdcDest);
|
|
||||||
OutTrace("Debug: NULL dest=(%d,%d) size=(%d,%d)\n", nXDest, nYDest, nWDest, nHDest);
|
OutTrace("Debug: NULL dest=(%d,%d) size=(%d,%d)\n", nXDest, nYDest, nWDest, nHDest);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@ -1004,8 +1003,7 @@ BOOL WINAPI extGDIPatBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH
|
|||||||
if (dxw.dwFlags3 & NOGDIBLT) return TRUE;
|
if (dxw.dwFlags3 & NOGDIBLT) return TRUE;
|
||||||
if (dxw.IsFullScreen()){
|
if (dxw.IsFullScreen()){
|
||||||
dxw.MapClient(&nXDest, &nYDest, &nWidth, &nHeight);
|
dxw.MapClient(&nXDest, &nYDest, &nWidth, &nHeight);
|
||||||
if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(hdcDest);
|
dxw.ShowOverlay(hdcDest);
|
||||||
if (dxw.dwFlags4 & SHOWTIMESTRETCH) dxw.ShowTimeStretching(hdcDest);
|
|
||||||
res=(*pGDIPatBlt)(hdcDest, nXDest, nYDest, nWidth, nHeight, dwRop);
|
res=(*pGDIPatBlt)(hdcDest, nXDest, nYDest, nWidth, nHeight, dwRop);
|
||||||
}
|
}
|
||||||
else if(WindowFromDC(hdcDest)==NULL){
|
else if(WindowFromDC(hdcDest)==NULL){
|
||||||
@ -1017,8 +1015,7 @@ BOOL WINAPI extGDIPatBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH
|
|||||||
else {
|
else {
|
||||||
res=(*pGDIPatBlt)(hdcDest, nXDest, nYDest, nWidth, nHeight, dwRop);
|
res=(*pGDIPatBlt)(hdcDest, nXDest, nYDest, nWidth, nHeight, dwRop);
|
||||||
}
|
}
|
||||||
if (IsToScreen && (dxw.dwFlags2 & SHOWFPSOVERLAY)) dxw.ShowFPS(hdcDest);
|
if (IsToScreen) dxw.ShowOverlay(hdcDest);
|
||||||
if (IsToScreen && (dxw.dwFlags4 & SHOWTIMESTRETCH)) dxw.ShowTimeStretching(hdcDest);
|
|
||||||
if(!res) OutTraceE("GDI.PatBlt: ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
if(!res) OutTraceE("GDI.PatBlt: ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
@ -1053,8 +1050,7 @@ BOOL WINAPI extGDIStretchBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, in
|
|||||||
}
|
}
|
||||||
|
|
||||||
res=(*pGDIStretchBlt)(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, nWSrc, nHSrc, dwRop);
|
res=(*pGDIStretchBlt)(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, nWSrc, nHSrc, dwRop);
|
||||||
if (IsToScreen && (dxw.dwFlags2 & SHOWFPSOVERLAY)) dxw.ShowFPS(hdcDest);
|
if (IsToScreen) dxw.ShowOverlay(hdcDest);
|
||||||
if (IsToScreen && (dxw.dwFlags4 & SHOWTIMESTRETCH)) dxw.ShowTimeStretching(hdcDest);
|
|
||||||
if(!res) OutTraceE("GDI.StretchBlt: ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
if(!res) OutTraceE("GDI.StretchBlt: ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -1801,6 +1797,14 @@ UINT WINAPI extSetSystemPaletteUse(HDC hdc, UINT uUsage)
|
|||||||
return SYSPAL_NOSTATIC256;
|
return SYSPAL_NOSTATIC256;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
int WINAPI extSetMapMode(HDC hdc, int fnMapMode)
|
||||||
|
{
|
||||||
|
OutTraceD("SetMapMode: hdc=%x MapMode=%d\n", hdc, fnMapMode);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// to map:
|
// to map:
|
||||||
// GetCurrentPositionEx
|
// GetCurrentPositionEx
|
||||||
|
@ -523,8 +523,7 @@ HRESULT WINAPI extPresent(void *pd3dd, CONST RECT *pSourceRect, CONST RECT *pDes
|
|||||||
if (dxw.HandleFPS()) return D3D_OK;
|
if (dxw.HandleFPS()) return D3D_OK;
|
||||||
// proxy ....
|
// proxy ....
|
||||||
res=(*pPresent)(pd3dd, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
|
res=(*pPresent)(pd3dd, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
|
||||||
if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS();
|
dxw.ShowOverlay();
|
||||||
if (dxw.dwFlags4 & SHOWTIMESTRETCH) dxw.ShowTimeStretching();
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
110
dll/ole32.cpp
110
dll/ole32.cpp
@ -10,6 +10,7 @@ extern void HookModule(HMODULE, int);
|
|||||||
static HookEntry_Type Hooks[]={
|
static HookEntry_Type Hooks[]={
|
||||||
{"CoCreateInstance", NULL, (FARPROC *)&pCoCreateInstance, (FARPROC)extCoCreateInstance},
|
{"CoCreateInstance", NULL, (FARPROC *)&pCoCreateInstance, (FARPROC)extCoCreateInstance},
|
||||||
{"CoCreateInstanceEx", NULL, (FARPROC *)&pCoCreateInstanceEx, (FARPROC)extCoCreateInstanceEx},
|
{"CoCreateInstanceEx", NULL, (FARPROC *)&pCoCreateInstanceEx, (FARPROC)extCoCreateInstanceEx},
|
||||||
|
{"CoInitialize", NULL, (FARPROC *)&pCoInitialize, (FARPROC)extCoInitialize},
|
||||||
{0, NULL, 0, 0} // terminator
|
{0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -28,12 +29,91 @@ FARPROC Remap_ole32_ProcAddress(LPCSTR proc, HMODULE hModule)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// so far, there are 4 additional libraries that could be loaded by meand of a CoCreateInstance call....
|
||||||
|
|
||||||
|
#define ADDITIONAL_MODULE_COUNT 4
|
||||||
|
struct {
|
||||||
|
BOOL Hooked;
|
||||||
|
char *ModuleName;
|
||||||
|
} AddedModules[ADDITIONAL_MODULE_COUNT]=
|
||||||
|
{
|
||||||
|
{FALSE, "quartz"},
|
||||||
|
{FALSE, "ddrawex"},
|
||||||
|
{FALSE, "amstream"},
|
||||||
|
{FALSE, "dplayx"}
|
||||||
|
};
|
||||||
|
|
||||||
|
static void HookAdditionalModules()
|
||||||
|
{
|
||||||
|
for(int i=0; i<ADDITIONAL_MODULE_COUNT; i++){
|
||||||
|
if(!AddedModules[i].Hooked){
|
||||||
|
HMODULE hModule;
|
||||||
|
hModule=GetModuleHandle(AddedModules[i].ModuleName);
|
||||||
|
if(hModule){ // if not hooked yet...
|
||||||
|
HookModule(hModule, 0); // hook it and ..
|
||||||
|
AddedModules[i].Hooked=TRUE; // .. mark it as already hooked
|
||||||
|
OutTraceD("CoCreateInstance: hooked module=%s hmodule=%x\n", AddedModules[i].ModuleName, hModule);
|
||||||
|
CloseHandle(hModule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------
|
||||||
// Ole32 CoCreateInstance handling: you can create DirectDraw objects through it!
|
// Ole32 CoCreateInstance handling: you can create DirectDraw objects through it!
|
||||||
// utilized so far in a single game: Axiz & Allies
|
// utilized so far in a single game: Axiz & Allies
|
||||||
// -------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------
|
||||||
|
|
||||||
static void HookDDSession(LPDIRECTDRAW *, int);
|
static void HookDDSession(LPDIRECTDRAW *, int);
|
||||||
|
static HRESULT STDAPICALLTYPE myCoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID FAR* ppv)
|
||||||
|
{
|
||||||
|
HRESULT res;
|
||||||
|
|
||||||
|
res=(*pCoCreateInstance)(rclsid, pUnkOuter, dwClsContext, riid, ppv);
|
||||||
|
if(res)
|
||||||
|
OutTraceE("CoCreateInstance: ERROR res=%x\n", res);
|
||||||
|
else
|
||||||
|
OutTraceD("CoCreateInstance: ppv=%x->%x\n", *ppv, *(DWORD *)*ppv);
|
||||||
|
|
||||||
|
if (*(DWORD *)&rclsid==*(DWORD *)&CLSID_DirectDraw){
|
||||||
|
LPDIRECTDRAW lpOldDDraw;
|
||||||
|
OutTraceD("CoCreateInstance: CLSID_DirectDraw object\n");
|
||||||
|
switch (*(DWORD *)&riid){
|
||||||
|
case 0x6C14DB80:
|
||||||
|
OutTraceD("DirectDrawCreate: IID_DirectDraw RIID\n");
|
||||||
|
res=extDirectDrawCreate(NULL, (LPDIRECTDRAW *)&ppv, 0);
|
||||||
|
if(res)OutTraceD("DirectDrawCreate: res=%x(%s)\n", res, ExplainDDError(res));
|
||||||
|
break;
|
||||||
|
case 0xB3A6F3E0:
|
||||||
|
OutTraceD("DirectDrawCreate: IID_DirectDraw2 RIID\n");
|
||||||
|
res=extDirectDrawCreate(NULL, &lpOldDDraw, 0);
|
||||||
|
if(res)OutTraceD("DirectDrawCreate: res=%x(%s)\n", res, ExplainDDError(res));
|
||||||
|
res=lpOldDDraw->QueryInterface(IID_IDirectDraw2, (LPVOID *)&ppv);
|
||||||
|
if(res)OutTraceD("QueryInterface: res=%x(%s)\n", res, ExplainDDError(res));
|
||||||
|
lpOldDDraw->Release();
|
||||||
|
break;
|
||||||
|
case 0x9c59509a:
|
||||||
|
OutTraceD("DirectDrawCreate: IID_DirectDraw4 RIID\n");
|
||||||
|
res=extDirectDrawCreate(NULL, &lpOldDDraw, 0);
|
||||||
|
if(res)OutTraceD("DirectDrawCreate: res=%x(%s)\n", res, ExplainDDError(res));
|
||||||
|
res=lpOldDDraw->QueryInterface(IID_IDirectDraw4, (LPVOID *)&ppv);
|
||||||
|
if(res)OutTraceD("QueryInterface: res=%x(%s)\n", res, ExplainDDError(res));
|
||||||
|
lpOldDDraw->Release();
|
||||||
|
case 0x15e65ec0:
|
||||||
|
OutTraceD("CoCreateInstance: IID_DirectDraw7 RIID\n");
|
||||||
|
res=extDirectDrawCreateEx(NULL, (LPDIRECTDRAW *)&ppv, IID_IDirectDraw7, 0);
|
||||||
|
if(res)OutTraceD("DirectDrawCreateEx: res=%x(%s)\n", res, ExplainDDError(res));
|
||||||
|
break;
|
||||||
|
case 0xe436ebb3:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (*(DWORD *)&rclsid==*(DWORD *)&CLSID_DxDiagProvider) res=HookDxDiag(riid, ppv);
|
||||||
|
|
||||||
|
HookAdditionalModules();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT STDAPICALLTYPE extCoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID FAR* ppv)
|
HRESULT STDAPICALLTYPE extCoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID FAR* ppv)
|
||||||
{
|
{
|
||||||
@ -83,26 +163,7 @@ HRESULT STDAPICALLTYPE extCoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter,
|
|||||||
else
|
else
|
||||||
if (*(DWORD *)&rclsid==*(DWORD *)&CLSID_DxDiagProvider) res=HookDxDiag(riid, ppv);
|
if (*(DWORD *)&rclsid==*(DWORD *)&CLSID_DxDiagProvider) res=HookDxDiag(riid, ppv);
|
||||||
|
|
||||||
// hook of library modules loaded by CoCreateInstance without going through LoadLibrary call....
|
HookAdditionalModules();
|
||||||
char *Module=NULL;
|
|
||||||
char *Class=NULL;
|
|
||||||
HMODULE hModule=NULL;
|
|
||||||
switch (*(DWORD *)&rclsid){
|
|
||||||
case 0xe436ebb3: Module="quartz"; Class="CLSID_FilterGraph"; break;
|
|
||||||
case 0x4fd2a832: Module="ddrawex"; Class="CLSID_DirectDrawEx"; break;
|
|
||||||
case 0x49c47ce5: Module="amstream"; Class="CLSID_AMMultiMediaStream"; break;
|
|
||||||
}
|
|
||||||
if(Module){
|
|
||||||
hModule=GetModuleHandle(Module);
|
|
||||||
if(hModule){
|
|
||||||
OutTraceD("CoCreateInstance: Class=%s RIID=%x lib=%s handle=%x\n", Class, *(DWORD *)&riid, Module, hModule);
|
|
||||||
HookModule(hModule, 0);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
OutTraceE("CoCreateInstance: GetModuleHandle(%s) ERROR err=%d at %d\n", Module, GetLastError(), __LINE__);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,5 +237,14 @@ HRESULT STDAPICALLTYPE extCoCreateInstanceEx(REFCLSID rclsid, IUnknown *punkOute
|
|||||||
if (*(DWORD *)&rclsid==*(DWORD *)&CLSID_DxDiagProvider) res=HookDxDiag(riid, ppv);
|
if (*(DWORD *)&rclsid==*(DWORD *)&CLSID_DxDiagProvider) res=HookDxDiag(riid, ppv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HookAdditionalModules();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT WINAPI extCoInitialize(LPVOID pvReserved)
|
||||||
|
{
|
||||||
|
HRESULT res;
|
||||||
|
OutTraceD("CoInitialize: Reserved=%x\n", pvReserved);
|
||||||
|
res=(*pCoInitialize)(pvReserved);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -219,8 +219,7 @@ void WINAPI extglDrawBuffer(GLenum mode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
(*pglDrawBuffer)(mode);
|
(*pglDrawBuffer)(mode);
|
||||||
if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS();
|
dxw.ShowOverlay();
|
||||||
if (dxw.dwFlags4 & SHOWTIMESTRETCH) dxw.ShowTimeStretching();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WINAPI extglPolygonMode(GLenum face, GLenum mode)
|
void WINAPI extglPolygonMode(GLenum face, GLenum mode)
|
||||||
|
@ -124,6 +124,7 @@ typedef BOOL (WINAPI *QueryPerformanceCounter_Type)(LARGE_INTEGER *);
|
|||||||
// ole32.dll:
|
// ole32.dll:
|
||||||
typedef HRESULT (STDAPICALLTYPE *CoCreateInstance_Type)(REFCLSID, LPUNKNOWN, DWORD, REFIID, LPVOID FAR*);
|
typedef HRESULT (STDAPICALLTYPE *CoCreateInstance_Type)(REFCLSID, LPUNKNOWN, DWORD, REFIID, LPVOID FAR*);
|
||||||
typedef HRESULT (STDAPICALLTYPE *CoCreateInstanceEx_Type)(REFCLSID, IUnknown *, DWORD, COSERVERINFO *, DWORD, MULTI_QI *);
|
typedef HRESULT (STDAPICALLTYPE *CoCreateInstanceEx_Type)(REFCLSID, IUnknown *, DWORD, COSERVERINFO *, DWORD, MULTI_QI *);
|
||||||
|
typedef HRESULT (STDAPICALLTYPE *CoInitialize_Type)(LPVOID);
|
||||||
|
|
||||||
// user32.dll:
|
// user32.dll:
|
||||||
typedef HDC (WINAPI *BeginPaint_Type)(HWND, LPPAINTSTRUCT);
|
typedef HDC (WINAPI *BeginPaint_Type)(HWND, LPPAINTSTRUCT);
|
||||||
@ -308,6 +309,7 @@ DXWEXTERN QueryPerformanceCounter_Type pQueryPerformanceCounter DXWINITIALIZED;
|
|||||||
// ole32.dll:
|
// ole32.dll:
|
||||||
DXWEXTERN CoCreateInstance_Type pCoCreateInstance DXWINITIALIZED;
|
DXWEXTERN CoCreateInstance_Type pCoCreateInstance DXWINITIALIZED;
|
||||||
DXWEXTERN CoCreateInstanceEx_Type pCoCreateInstanceEx DXWINITIALIZED;
|
DXWEXTERN CoCreateInstanceEx_Type pCoCreateInstanceEx DXWINITIALIZED;
|
||||||
|
DXWEXTERN CoInitialize_Type pCoInitialize DXWINITIALIZED;
|
||||||
|
|
||||||
// user32.dll:
|
// user32.dll:
|
||||||
DXWEXTERN BeginPaint_Type pBeginPaint DXWINITIALIZED;
|
DXWEXTERN BeginPaint_Type pBeginPaint DXWINITIALIZED;
|
||||||
@ -488,6 +490,7 @@ extern BOOL WINAPI extQueryPerformanceCounter(LARGE_INTEGER *);
|
|||||||
// ole32.dll:
|
// ole32.dll:
|
||||||
extern HRESULT STDAPICALLTYPE extCoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, LPVOID FAR*);
|
extern HRESULT STDAPICALLTYPE extCoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, LPVOID FAR*);
|
||||||
extern HRESULT STDAPICALLTYPE extCoCreateInstanceEx(REFCLSID, IUnknown *, DWORD, COSERVERINFO *, DWORD, MULTI_QI *);
|
extern HRESULT STDAPICALLTYPE extCoCreateInstanceEx(REFCLSID, IUnknown *, DWORD, COSERVERINFO *, DWORD, MULTI_QI *);
|
||||||
|
extern HRESULT STDAPICALLTYPE extCoInitialize(LPVOID);
|
||||||
|
|
||||||
// user32.dll:
|
// user32.dll:
|
||||||
extern HDC WINAPI extBeginPaint(HWND, LPPAINTSTRUCT);
|
extern HDC WINAPI extBeginPaint(HWND, LPPAINTSTRUCT);
|
||||||
|
@ -40,8 +40,8 @@ static HookEntry_Type Hooks[]={
|
|||||||
{"SetSysColors", (FARPROC)NULL, (FARPROC *)&pSetSysColors, (FARPROC)extSetSysColors},
|
{"SetSysColors", (FARPROC)NULL, (FARPROC *)&pSetSysColors, (FARPROC)extSetSysColors},
|
||||||
{"SetCapture", (FARPROC)NULL, (FARPROC *)&pSetCapture, (FARPROC)extSetCapture},
|
{"SetCapture", (FARPROC)NULL, (FARPROC *)&pSetCapture, (FARPROC)extSetCapture},
|
||||||
|
|
||||||
{"GetActiveWindow", (FARPROC)NULL, (FARPROC *)&pGetActiveWindow, (FARPROC)extGetActiveWindow},
|
//{"GetActiveWindow", (FARPROC)NULL, (FARPROC *)&pGetActiveWindow, (FARPROC)extGetActiveWindow},
|
||||||
{"GetForegroundWindow", (FARPROC)NULL, (FARPROC *)&pGetForegroundWindow, (FARPROC)extGetForegroundWindow},
|
//{"GetForegroundWindow", (FARPROC)NULL, (FARPROC *)&pGetForegroundWindow, (FARPROC)extGetForegroundWindow},
|
||||||
{0, NULL, 0, 0} // terminator
|
{0, NULL, 0, 0} // terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -919,6 +919,7 @@ int WINAPI extMapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT
|
|||||||
|
|
||||||
// should scale the retcode ???
|
// should scale the retcode ???
|
||||||
ret=(*pMapWindowPoints)(hWndFrom, hWndTo, lpPoints, cPoints);
|
ret=(*pMapWindowPoints)(hWndFrom, hWndTo, lpPoints, cPoints);
|
||||||
|
|
||||||
OutTraceD("MapWindowPoints: ret=%x (%d,%d)\n", ret, (ret&0xFFFF0000)>>16, ret&0x0000FFFF);
|
OutTraceD("MapWindowPoints: ret=%x (%d,%d)\n", ret, (ret&0xFFFF0000)>>16, ret&0x0000FFFF);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -1042,7 +1043,8 @@ static HWND WINAPI extCreateWindowCommon(
|
|||||||
!(dwExStyle & WS_EX_CONTROLPARENT) // Diablo fix
|
!(dwExStyle & WS_EX_CONTROLPARENT) // Diablo fix
|
||||||
&&
|
&&
|
||||||
!(dwStyle & WS_CHILD) // Diablo fix
|
!(dwStyle & WS_CHILD) // Diablo fix
|
||||||
){
|
)
|
||||||
|
{
|
||||||
RECT screen;
|
RECT screen;
|
||||||
POINT upleft = {0,0};
|
POINT upleft = {0,0};
|
||||||
|
|
||||||
@ -1142,7 +1144,7 @@ static HWND WINAPI extCreateWindowCommon(
|
|||||||
return wndh;
|
return wndh;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((!isValidHandle) && dxw.IsFullScreen()) {
|
if ((!isValidHandle) && dxw.IsFullScreen()){
|
||||||
dxw.SethWnd(wndh);
|
dxw.SethWnd(wndh);
|
||||||
extern void AdjustWindowPos(HWND, DWORD, DWORD);
|
extern void AdjustWindowPos(HWND, DWORD, DWORD);
|
||||||
(*pSetWindowLong)(wndh, GWL_STYLE, (dxw.dwFlags2 & MODALSTYLE) ? 0 : WS_OVERLAPPEDWINDOW);
|
(*pSetWindowLong)(wndh, GWL_STYLE, (dxw.dwFlags2 & MODALSTYLE) ? 0 : WS_OVERLAPPEDWINDOW);
|
||||||
@ -1195,9 +1197,16 @@ HWND WINAPI extCreateWindowExW(
|
|||||||
HINSTANCE hInstance,
|
HINSTANCE hInstance,
|
||||||
LPVOID lpParam)
|
LPVOID lpParam)
|
||||||
{
|
{
|
||||||
OutTraceD("CreateWindowExW: class=\"%ls\" wname=\"%ls\" pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n",
|
if(IsTraceD){
|
||||||
lpClassName, lpWindowName, x, y, nWidth, nHeight,
|
char xString[20], yString[20];
|
||||||
dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle));
|
if (x==CW_USEDEFAULT) strcpy(xString,"CW_USEDEFAULT");
|
||||||
|
else sprintf(xString,"%d", x);
|
||||||
|
if (y==CW_USEDEFAULT) strcpy(yString,"CW_USEDEFAULT");
|
||||||
|
else sprintf(yString,"%d", y);
|
||||||
|
OutTraceD("CreateWindowExW: class=\"%ls\" wname=\"%ls\" pos=(%s,%s) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n",
|
||||||
|
lpClassName, lpWindowName, xString, yString, nWidth, nHeight,
|
||||||
|
dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle));
|
||||||
|
}
|
||||||
if(IsDebug) OutTrace("CreateWindowExW: DEBUG screen=(%d,%d)\n", dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
if(IsDebug) OutTrace("CreateWindowExW: DEBUG screen=(%d,%d)\n", dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
||||||
|
|
||||||
return extCreateWindowCommon("CreateWindowExW", TRUE, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
|
return extCreateWindowCommon("CreateWindowExW", TRUE, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
|
||||||
@ -1218,9 +1227,16 @@ HWND WINAPI extCreateWindowExA(
|
|||||||
HINSTANCE hInstance,
|
HINSTANCE hInstance,
|
||||||
LPVOID lpParam)
|
LPVOID lpParam)
|
||||||
{
|
{
|
||||||
OutTraceD("CreateWindowExA: class=\"%s\" wname=\"%s\" pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n",
|
if(IsTraceD){
|
||||||
ClassToStr(lpClassName), lpWindowName, x, y, nWidth, nHeight,
|
char xString[20], yString[20];
|
||||||
dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle));
|
if (x==CW_USEDEFAULT) strcpy(xString,"CW_USEDEFAULT");
|
||||||
|
else sprintf(xString,"%d", x);
|
||||||
|
if (y==CW_USEDEFAULT) strcpy(yString,"CW_USEDEFAULT");
|
||||||
|
else sprintf(yString,"%d", y);
|
||||||
|
OutTraceD("CreateWindowExA: class=\"%s\" wname=\"%s\" pos=(%s,%s) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n",
|
||||||
|
ClassToStr(lpClassName), lpWindowName, xString, yString, nWidth, nHeight,
|
||||||
|
dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle));
|
||||||
|
}
|
||||||
if(IsDebug) OutTrace("CreateWindowExA: DEBUG screen=(%d,%d)\n", dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
if(IsDebug) OutTrace("CreateWindowExA: DEBUG screen=(%d,%d)\n", dxw.GetScreenWidth(), dxw.GetScreenHeight());
|
||||||
|
|
||||||
return extCreateWindowCommon("CreateWindowExA", false, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
|
return extCreateWindowCommon("CreateWindowExA", false, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
|
||||||
@ -1614,7 +1630,7 @@ HWND WINAPI extCreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpT
|
|||||||
isWithinDialog=TRUE;
|
isWithinDialog=TRUE;
|
||||||
OutTraceD("CreateDialogIndirectParam: hInstance=%x lpTemplate=%s hWndParent=%x lpDialogFunc=%x lParamInit=%x\n",
|
OutTraceD("CreateDialogIndirectParam: hInstance=%x lpTemplate=%s hWndParent=%x lpDialogFunc=%x lParamInit=%x\n",
|
||||||
hInstance, "tbd", hWndParent, lpDialogFunc, lParamInit);
|
hInstance, "tbd", hWndParent, lpDialogFunc, lParamInit);
|
||||||
if(hWndParent==NULL) hWndParent=dxw.GethWnd();
|
if(dxw.IsFullScreen() && hWndParent==NULL) hWndParent=dxw.GethWnd();
|
||||||
RetHWND=(*pCreateDialogIndirectParam)(hInstance, lpTemplate, hWndParent, lpDialogFunc, lParamInit);
|
RetHWND=(*pCreateDialogIndirectParam)(hInstance, lpTemplate, hWndParent, lpDialogFunc, lParamInit);
|
||||||
|
|
||||||
WhndStackPush(RetHWND, (WNDPROC)lpDialogFunc);
|
WhndStackPush(RetHWND, (WNDPROC)lpDialogFunc);
|
||||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user