diff --git a/Include/dxwnd.h b/Include/dxwnd.h
index 2571c20..5ec0ec0 100644
--- a/Include/dxwnd.h
+++ b/Include/dxwnd.h
@@ -303,6 +303,7 @@
#define OUTDXWINTRACE 0x00001000 // traces DxWnd internal operations
#define OUTWINGTRACE 0x00002000 // traces WinG32 hooked calls
#define OUTOGLTRACE 0x00004000 // traces OpenGL hooked calls
+#define OUTHEXTRACE 0x00008000 // traces hexdump of critical structures
#define ADDRELATIVETIME 0x08000000 // log timestamp is relative to previous line
//#define NOLOGCLOSE 0x10000000 // avoid closing the log file handle ("Riven, during CD changes ...)
#define ADDTIMESTAMP 0x20000000 // add timestamp (GetTickCount) to log file
@@ -431,6 +432,7 @@ LRESULT CALLBACK dw_Hider_Message_Handler(HWND, UINT, WPARAM, LPARAM);
#define OutTraceE OutTrace
#define OutTraceWG if(dxw.dwTFlags & OUTWINGTRACE) OutTrace
#define OutTraceOGL if(dxw.dwTFlags & OUTOGLTRACE) OutTrace
+#define OutHex if(dxw.dwTFlags & OUTHEXTRACE) OutTrace
#define IsTraceW (dxw.dwTFlags & OUTWINMESSAGES)
//#define IsTraceX (dxw.dwTFlags & OUTPROXYTRACE)
@@ -444,6 +446,7 @@ LRESULT CALLBACK dw_Hider_Message_Handler(HWND, UINT, WPARAM, LPARAM);
#define IsTraceE (TRUE)
#define IsTraceWG (dxw.dwTFlags & OUTWINGTRACE)
#define IsTraceOGL (dxw.dwTFlags & OUTOGLTRACE)
+#define IsTraceHex (dxw.dwTFlags & OUTHEXTRACE)
#define IsDebug (dxw.dwTFlags & OUTDEBUG)
#define IsAssertEnabled (dxw.dwTFlags & ASSERTDIALOG)
#define STEP OutTrace("STEP at %s:%d\n", __FILE__, __LINE__)
diff --git a/build/exports/Agile Warrior F111X.dxw b/build/exports/Agile Warrior F111X.dxw
new file mode 100644
index 0000000..ed7ddab
--- /dev/null
+++ b/build/exports/Agile Warrior F111X.dxw
@@ -0,0 +1,36 @@
+[target]
+title0=Agile Warrior F111X
+path0=F:\Games\Agile Warrior F 111X\AW.BIN
+startfolder0=
+launchpath0=F:\Games\Agile Warrior F 111X\AW.EXE
+module0=
+opengllib0=
+notes0=So far, only 3D mode is working.
+registry0=\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\aw.exe]\n"Path"=".\\aw"\n@=".\\aw.exe"\n\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Direct3D]\n"DrawPrimFlags"=dword:0
+ver0=1
+monitorid0=-1
+coord0=0
+flag0=673185826
+flagg0=1207959552
+flagh0=1044
+flagi0=1212153860
+flagj0=4224
+flagk0=134807552
+flagl0=0
+flagm0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
diff --git a/build/exports/Arthur's Quest.dxw b/build/exports/Arthur's Quest.dxw
new file mode 100644
index 0000000..4646f16
--- /dev/null
+++ b/build/exports/Arthur's Quest.dxw
@@ -0,0 +1,42 @@
+[target]
+title0=Arthur's Quest
+path0=D:\Games\Arthur's Quest\lithtech.exe
+startfolder0=
+launchpath0=D:\Games\Arthur's Quest\ArthursQuest.exe
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+monitorid0=-1
+coord0=0
+flag0=673185826
+flagg0=1207959552
+flagh0=20
+flagi0=138412036
+flagj0=4224
+flagk0=65536
+flagl0=0
+flagm0=0
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.21.a4
+time=Sat Mar 18 15:43:50 2017
+
diff --git a/build/exports/Bomberbabe.dxw b/build/exports/Bomberbabe.dxw
index a3f5a41..0099fa7 100644
--- a/build/exports/Bomberbabe.dxw
+++ b/build/exports/Bomberbabe.dxw
@@ -5,10 +5,10 @@ module0=
opengllib0=
ver0=0
coord0=0
-flag0=671088674
+flag0=673185826
flagg0=1207959552
flagh0=20
-flagi0=4
+flagi0=138412036
tflag0=0
initx0=0
inity0=0
@@ -22,3 +22,21 @@ sizx0=800
sizy0=600
maxfps0=0
initts0=0
+startfolder0=
+launchpath0=
+notes0=
+registry0=
+monitorid0=-1
+flagj0=4224
+flagk0=65536
+flagl0=276824064
+flagm0=1073741824
+dflag0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
diff --git a/build/exports/Dark Earth.dxw b/build/exports/Dark Earth.dxw
index 29c521e..7d763b5 100644
--- a/build/exports/Dark Earth.dxw
+++ b/build/exports/Dark Earth.dxw
@@ -8,7 +8,7 @@ notes0=
registry0=
ver0=0
coord0=0
-flag0=136331362
+flag0=673210466
flagg0=1476395008
flagh0=20
flagi0=138936324
@@ -27,3 +27,10 @@ winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7
+startfolder0=
+monitorid0=0
+dflag0=0
+slowratio0=1
+scanline0=1
+initresw0=0
+initresh0=0
diff --git a/build/exports/Defiance (D3D).dxw b/build/exports/Defiance (D3D).dxw
index 796cc50..e549e20 100644
--- a/build/exports/Defiance (D3D).dxw
+++ b/build/exports/Defiance (D3D).dxw
@@ -14,9 +14,9 @@ flagg0=1224736768
flagh0=32788
flagi0=138412036
flagj0=4224
-flagk0=77824
+flagk0=65536
flagl0=0
-flagm0=0
+flagm0=4
tflag0=0
dflag0=0
posx0=50
@@ -30,3 +30,13 @@ maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=2
+monitorid0=0
+flagn0=0
+flago0=0
+scanline0=1
+initresw0=0
+initresh0=0
+[stamp]
+version=2.04.21.a2
+time=Wed Mar 15 22:49:07 2017
+
diff --git a/build/exports/Forsaken (HW).dxw b/build/exports/Forsaken (HW).dxw
index a0ee2c1..e7f4f0c 100644
--- a/build/exports/Forsaken (HW).dxw
+++ b/build/exports/Forsaken (HW).dxw
@@ -27,5 +27,22 @@ maxres0=-1
launchpath0=
notes0=
flagj0=130
-flagk0=73728
+flagk0=65536
swapeffect0=0
+startfolder0=
+registry0=
+monitorid0=0
+flagl0=0
+flagm0=0
+flagn0=0
+flago0=0
+dflag0=0
+maxddinterface0=7
+slowratio0=1
+scanline0=1
+initresw0=0
+initresh0=0
+[stamp]
+version=2.04.21.a2
+time=Wed Mar 15 22:14:01 2017
+
diff --git a/build/exports/Future Cop L.A.P.D..dxw b/build/exports/Future Cop L.A.P.D..dxw
index 87faedd..8990a94 100644
--- a/build/exports/Future Cop L.A.P.D..dxw
+++ b/build/exports/Future Cop L.A.P.D..dxw
@@ -9,7 +9,7 @@ notes0=
registry0=
ver0=0
coord0=0
-flag0=136314914
+flag0=673185826
flagg0=1207959552
flagh0=20
flagi0=138412036
@@ -30,3 +30,11 @@ maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=2
+monitorid0=0
+scanline0=1
+initresw0=0
+initresh0=0
+[stamp]
+version=2.04.20.a0
+time=Fri Mar 10 11:58:41 2017
+
diff --git a/build/exports/G-Darius.dxw b/build/exports/G-Darius.dxw
new file mode 100644
index 0000000..7edbe76
--- /dev/null
+++ b/build/exports/G-Darius.dxw
@@ -0,0 +1,42 @@
+[target]
+title0=G-Darius
+path0=D:\Games\G-Darius\G_Darius.exe
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+monitorid0=0
+coord0=0
+flag0=673185826
+flagg0=1207959552
+flagh0=262164
+flagi0=138412036
+flagj0=4224
+flagk0=65536
+flagl0=268435456
+flagm0=0
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=50
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.21.a4
+time=Mon Mar 20 14:42:23 2017
+
diff --git a/build/exports/Galapagos demo.dxw b/build/exports/Galapagos demo.dxw
new file mode 100644
index 0000000..886ef4a
--- /dev/null
+++ b/build/exports/Galapagos demo.dxw
@@ -0,0 +1,42 @@
+[target]
+title0=Galapagos demo
+path0=D:\Games\Galapagos Demo\Galapagos Demo.exe
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+monitorid0=-1
+coord0=0
+flag0=674250814
+flagg0=1208221696
+flagh0=33300
+flagi0=138412036
+flagj0=469766272
+flagk0=67616
+flagl0=92340240
+flagm0=0
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=150
+posy0=150
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=-1
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=1
+initresw0=640
+initresh0=480
+[stamp]
+version=2.04.20.a2
+time=Mon Mar 13 13:51:23 2017
+
diff --git a/build/exports/Gorky 17.dxw b/build/exports/Gorky 17.dxw
index 7e24281..fd3b507 100644
--- a/build/exports/Gorky 17.dxw
+++ b/build/exports/Gorky 17.dxw
@@ -1,18 +1,18 @@
[target]
title0=Gorky 17
-path0=D:\Games\Gorky 17\gorky17.exe
+path0=F:\Games\Gorky 17\gorky17.exe
launchpath0=
module0=
opengllib0=
-notes0=
+notes0=Note: a ddraw error in the initial stage pops out a misleading "missing CD" dialog.
ver0=0
coord0=0
flag0=134217762
flagg0=1207959552
flagh0=20
-flagi0=134217732
+flagi0=138412036
flagj0=4224
-flagk0=0
+flagk0=65536
tflag0=0
initx0=0
inity0=0
@@ -29,3 +29,14 @@ initts0=0
winver0=0
maxres0=-1
swapeffect0=0
+startfolder0=
+registry0=
+monitorid0=0
+flagl0=0
+flagm0=0
+dflag0=0
+maxddinterface0=7
+slowratio0=1
+scanline0=1
+initresw0=0
+initresh0=0
diff --git a/build/exports/Ground Control (sw renderer).dxw b/build/exports/Ground Control (sw renderer).dxw
new file mode 100644
index 0000000..7c6a6f5
--- /dev/null
+++ b/build/exports/Ground Control (sw renderer).dxw
@@ -0,0 +1,42 @@
+[target]
+title0=Ground Control (sw renderer)
+path0=D:\Games\GC\gc.exe
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+monitorid0=-1
+coord0=0
+flag0=681574442
+flagg0=1208090624
+flagh0=8212
+flagi0=138412036
+flagj0=4224
+flagk0=0
+flagl0=67141648
+flagm0=0
+flagn0=0
+flago0=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=1
+scanline0=1
+initresw0=0
+initresh0=0
+[stamp]
+version=2.04.21.a6
+time=Wed Mar 22 12:11:46 2017
+
diff --git a/build/exports/HyperBlade.dxw b/build/exports/HyperBlade.dxw
new file mode 100644
index 0000000..ecebaab
--- /dev/null
+++ b/build/exports/HyperBlade.dxw
@@ -0,0 +1,43 @@
+[target]
+title0=HyperBlade
+path0=D:\Games\HyperBlade\HYPERX.EXE
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+monitorid0=-1
+coord0=0
+flag0=673185826
+flagg0=1209008128
+flagh0=8212
+flagi0=138412036
+flagj0=4224
+flagk0=67174400
+flagl0=268435456
+flagm0=5
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.20.a2
+time=Mon Mar 13 13:54:22 2017
+
+
diff --git a/build/exports/Inquisition.dxw b/build/exports/Inquisition.dxw
new file mode 100644
index 0000000..cae230b
--- /dev/null
+++ b/build/exports/Inquisition.dxw
@@ -0,0 +1,42 @@
+[target]
+title0=Inquisition
+path0=D:\Games\Inquisition\inq.tmp.exe
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=Note:\nthe file Inquisition.exe copies part of itself to a temporary directory, runs this\nexecutable and delete it in the end.\nTo hook the game properly you have to:\n1) run the game normally\n2) Alt-tab and start the task manager\n3) locate the inquisition running process, possibly _inq.tmp\n4) copy the temp file to a safe place and rename it (es. inq.tmp.exe)\n5) kill the fullscreen inquisition and run DxWnd with this configuration
+registry0=
+ver0=0
+monitorid0=-1
+coord0=0
+flag0=673185826
+flagg0=1207959552
+flagh0=20
+flagi0=138412036
+flagj0=4224
+flagk0=65536
+flagl0=268435456
+flagm0=0
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.21.a4
+time=Sat Mar 18 22:20:11 2017
+
diff --git a/build/exports/Largo Winch.dxw b/build/exports/Largo Winch.dxw
new file mode 100644
index 0000000..221e9b2
--- /dev/null
+++ b/build/exports/Largo Winch.dxw
@@ -0,0 +1,42 @@
+[target]
+title0=Largo Winch
+path0=D:\Games\Largo Winch\LargoWinch.exe
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+monitorid0=-1
+coord0=0
+flag0=673185826
+flagg0=1207959552
+flagh0=20
+flagi0=134217732
+flagj0=4224
+flagk0=65536
+flagl0=0
+flagm0=0
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.21.a4
+time=Sun Mar 19 16:02:06 2017
+
diff --git a/build/exports/Loonyland 2 CE.dxw b/build/exports/Loonyland 2 CE.dxw
new file mode 100644
index 0000000..778eacc
--- /dev/null
+++ b/build/exports/Loonyland 2 CE.dxw
@@ -0,0 +1,36 @@
+[target]
+title0=Loonyland 2 CE
+path0=D:\Games\Loonyland2CE\loonyland.exe
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+monitorid0=-1
+coord0=0
+flag0=673194018
+flagg0=1207959552
+flagh0=20
+flagi0=138412036
+flagj0=4224
+flagk0=65536
+flagl0=268435456
+flagm0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
diff --git a/build/exports/Marbles.dxw b/build/exports/Marbles.dxw
new file mode 100644
index 0000000..e7a6e13
--- /dev/null
+++ b/build/exports/Marbles.dxw
@@ -0,0 +1,40 @@
+[target]
+title0=Marbles
+path0=D:\Games\MARBLES\MARBLES.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=0
+flagm0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.20.a0
+time=Fri Mar 10 13:34:32 2017
+
diff --git a/build/exports/Microsoft Motocross Madness 2 trial.dxw b/build/exports/Microsoft Motocross Madness 2 trial.dxw
new file mode 100644
index 0000000..8c3bbcc
--- /dev/null
+++ b/build/exports/Microsoft Motocross Madness 2 trial.dxw
@@ -0,0 +1,43 @@
+[target]
+title0=Microsoft Motocross Madness 2 trial
+path0=D:\Games\Motocross Madness 2 trial\mcm2.exe
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=Runs better with accelerated video card, \nthe software mode is very slow and foggy.\nIn case of troubles, it may be necessary to delete the registry entries to force a \nnew clean configuration.
+registry0=
+ver0=0
+monitorid0=0
+coord0=0
+flag0=136314914
+flagg0=1207959552
+flagh0=20
+flagi0=138412036
+flagj0=4224
+flagk0=65536
+flagl0=0
+flagm0=0
+flagn0=0
+flago0=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=1
+scanline0=1
+initresw0=0
+initresh0=0
+[stamp]
+version=2.04.21.a2
+time=Thu Mar 16 13:33:34 2017
+
+
diff --git a/build/exports/Paradise Cracked.dxw b/build/exports/Paradise Cracked.dxw
new file mode 100644
index 0000000..3acf8b3
--- /dev/null
+++ b/build/exports/Paradise Cracked.dxw
@@ -0,0 +1,42 @@
+[target]
+title0=Paradise Cracked
+path0=D:\Games\Paradise Cracked\game.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=2
+flagm0=0
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.21.a4
+time=Sun Mar 19 00:31:00 2017
+
diff --git a/build/exports/Planet of the Apes.dxw b/build/exports/Planet of the Apes.dxw
index 192b0a4..0fd967b 100644
--- a/build/exports/Planet of the Apes.dxw
+++ b/build/exports/Planet of the Apes.dxw
@@ -9,18 +9,18 @@ notes0=
registry0=
ver0=0
coord0=0
-flag0=203423795
+flag0=203423794
flagg0=1207959552
flagh0=524308
-flagi0=138412036
+flagi0=138936320
flagj0=67113088
-flagk0=-1879044096
+flagk0=-1878982656
flagl0=1048576
flagm0=0
tflag0=0
dflag0=0
-posx0=-1050
-posy0=100
+posx0=50
+posy0=50
sizx0=800
sizy0=600
maxfps0=0
@@ -30,3 +30,14 @@ maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=2
+monitorid0=0
+flagn0=0
+flago0=0
+scanline0=1
+initresw0=0
+initresh0=0
+[stamp]
+version=2.04.20
+time=Thu Mar 16 13:13:41 2017
+
+
diff --git a/build/exports/Post Mortem (CD version).dxw b/build/exports/Post Mortem (CD version).dxw
new file mode 100644
index 0000000..adbf7d2
--- /dev/null
+++ b/build/exports/Post Mortem (CD version).dxw
@@ -0,0 +1,42 @@
+[target]
+title0=Post Mortem (CD version)
+path0=D:\Games\Post Mortem\Game.exe
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=Note:\n\nThe CD version is copy protected and needs a crack to run properly\n\ndepending on the platform (OS? / video card?) the game may require the \n"No primary SYSTEMMEMORY" flag in order to run. \nUnfortunately, in that case it is likely to become very choppy.
+registry0=
+ver0=0
+monitorid0=-1
+coord0=0
+flag0=673341475
+flagg0=1241513984
+flagh0=20
+flagi0=138412036
+flagj0=4224
+flagk0=65536
+flagl0=67108880
+flagm0=0
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.21.a6
+time=Wed Mar 22 15:25:29 2017
+
diff --git a/build/exports/Prince of Persia The Two Thrones (GOG).dxw b/build/exports/Prince of Persia The Two Thrones (GOG).dxw
new file mode 100644
index 0000000..1028ab2
--- /dev/null
+++ b/build/exports/Prince of Persia The Two Thrones (GOG).dxw
@@ -0,0 +1,42 @@
+[target]
+title0=Prince of Persia The Two Thrones (GOG)
+path0=D:\Games\Prince of Persia The Two Thrones\pop3.exe
+startfolder0=
+launchpath0=D:\Games\Prince of Persia The Two Thrones\PrinceOfPersia.exe
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=9
+monitorid0=-1
+coord0=0
+flag0=673202214
+flagg0=1207959552
+flagh0=20
+flagi0=138412036
+flagj0=4224
+flagk0=65536
+flagl0=67108880
+flagm0=0
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.21.a4
+time=Sun Mar 19 11:59:24 2017
+
diff --git a/build/exports/Prisoner of War.dxw b/build/exports/Prisoner of War.dxw
new file mode 100644
index 0000000..8ea1d33
--- /dev/null
+++ b/build/exports/Prisoner of War.dxw
@@ -0,0 +1,42 @@
+[target]
+title0=Prisoner of War
+path0=D:\Games\Prisoner of War\Colditz.EXE
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=cracked exe
+registry0=
+ver0=0
+monitorid0=-1
+coord0=0
+flag0=673185826
+flagg0=1207959552
+flagh0=20
+flagi0=138412036
+flagj0=4224
+flagk0=1114112
+flagl0=0
+flagm0=0
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.21.a2
+time=Fri Mar 17 00:17:24 2017
+
diff --git a/build/exports/Shadow Watch.dxw b/build/exports/Shadow Watch.dxw
index 1804f5b..d72eb98 100644
--- a/build/exports/Shadow Watch.dxw
+++ b/build/exports/Shadow Watch.dxw
@@ -4,11 +4,11 @@ path0=D:\Games\Shadow Watch\sw.exe
launchpath0=D:\Games\Shadow Watch\ShadowWatch.exe
module0=dx.dll
opengllib0=
-ver0=1
+ver0=0
coord0=0
flag0=-2013265869
flagg0=1241513984
-flagh0=4259856
+flagh0=4202512
flagi0=203423748
flagj0=128
tflag0=0
@@ -26,3 +26,23 @@ maxfps0=0
initts0=0
winver0=0
maxres0=-1
+startfolder0=
+notes0=
+registry0=
+monitorid0=0
+flagk0=65536
+flagl0=0
+flagm0=0
+flagn0=0
+flago0=0
+dflag0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=1
+scanline0=1
+initresw0=0
+initresh0=0
+[stamp]
+version=2.04.21.a1
+time=Wed Mar 15 00:06:35 2017
+
diff --git a/build/exports/Spike the Hedgehog.dxw b/build/exports/Spike the Hedgehog.dxw
new file mode 100644
index 0000000..ec6bd7a
--- /dev/null
+++ b/build/exports/Spike the Hedgehog.dxw
@@ -0,0 +1,42 @@
+[target]
+title0=Spike the Hedgehog
+path0=D:\Games\Spike\spike2.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=268435456
+flagm0=0
+flagn0=0
+flago0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
+[stamp]
+version=2.04.21.a4
+time=Sat Mar 18 15:50:14 2017
+
diff --git a/build/exports/Taz Wanted.dxw b/build/exports/Taz Wanted.dxw
index 853f93d..6d1d2b7 100644
--- a/build/exports/Taz Wanted.dxw
+++ b/build/exports/Taz Wanted.dxw
@@ -1,7 +1,7 @@
[target]
title0=Taz Wanted
path0=D:\Games\Taz Wanted\Taz.exe
-launchpath0=
+launchpath0=D:\Games\Taz Wanted\TazLauncher.exe
module0=
opengllib0=
notes0=
@@ -9,7 +9,7 @@ registry0=
ver0=8
coord0=0
flag0=136314914
-flagg0=1744830464
+flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=4224
@@ -29,3 +29,14 @@ maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=2
+startfolder0=
+monitorid0=0
+flagn0=0
+flago0=0
+scanline0=1
+initresw0=0
+initresh0=0
+[stamp]
+version=2.04.21.a6
+time=Tue Mar 21 19:49:05 2017
+
diff --git a/build/exports/The Sting!.dxw b/build/exports/The Sting!.dxw
index 629ada4..1f6fc82 100644
--- a/build/exports/The Sting!.dxw
+++ b/build/exports/The Sting!.dxw
@@ -1,6 +1,6 @@
[target]
title0=The Sting!
-path0=F:\Games\The Sting!\TheSting!\Sting.exe
+path0=D:\Games\The Sting!\Sting.exe
launchpath0=
module0=
opengllib0=
@@ -8,7 +8,7 @@ notes0=
ver0=0
coord0=0
flag0=136314914
-flagg0=1207959552
+flagg0=1476395008
flagh0=16
flagi0=138412036
flagj0=4224
@@ -40,3 +40,10 @@ slowratio0=1
scanline0=1
initresw0=0
initresh0=0
+flagn0=0
+flago0=0
+[stamp]
+version=2.04.21.a2
+time=Thu Mar 16 09:25:20 2017
+
+
diff --git a/build/exports/Tone Rebellion Leviathan.dxw b/build/exports/Tone Rebellion Leviathan.dxw
index 9b819cd..25fe2fe 100644
--- a/build/exports/Tone Rebellion Leviathan.dxw
+++ b/build/exports/Tone Rebellion Leviathan.dxw
@@ -1,6 +1,6 @@
[target]
title0=Tone Rebellion Leviathan
-path0=D:\Games\Tone Rebellion\FLOAT.EXE
+path0=D:\Games\Tone Rebellion Leviatahn\FLOAT.EXE
launchpath0=
module0=
opengllib0=
@@ -29,3 +29,14 @@ maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=2
+startfolder0=
+monitorid0=0
+flagn0=0
+flago0=0
+scanline0=1
+initresw0=0
+initresh0=0
+[stamp]
+version=2.04.21.a6
+time=Wed Mar 22 10:13:22 2017
+
diff --git a/build/exports/Toy Factory.dxw b/build/exports/Toy Factory.dxw
index 2a64281..216a8e0 100644
--- a/build/exports/Toy Factory.dxw
+++ b/build/exports/Toy Factory.dxw
@@ -9,7 +9,7 @@ registry0=
ver0=0
coord0=0
flag0=136314914
-flagg0=1744830464
+flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=4224
@@ -29,3 +29,14 @@ maxres0=-1
swapeffect0=0
maxddinterface0=7
slowratio0=2
+startfolder0=
+monitorid0=0
+flagn0=0
+flago0=0
+scanline0=1
+initresw0=0
+initresh0=0
+[stamp]
+version=2.04.21.a6
+time=Wed Mar 22 09:51:41 2017
+
diff --git a/build/exports/Warlords Battlecry 2.dxw b/build/exports/Warlords Battlecry 2.dxw
new file mode 100644
index 0000000..22836e6
--- /dev/null
+++ b/build/exports/Warlords Battlecry 2.dxw
@@ -0,0 +1,36 @@
+[target]
+title0=Warlords Battlecry 2
+path0=D:\Games\Warlords Battlecry 2\Battlecry II.exe
+startfolder0=
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+monitorid0=-1
+coord0=0
+flag0=673185826
+flagg0=1207959552
+flagh0=20
+flagi0=134217732
+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=0
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+scanline0=0
+initresw0=800
+initresh0=600
diff --git a/build/exports/dxwnd.ini b/build/exports/dxwnd.ini
deleted file mode 100644
index bafc6df..0000000
--- a/build/exports/dxwnd.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[window]
-posx=0
-posy=472
-sizx=320
-sizy=200
diff --git a/build/exports/dxwnd.log b/build/exports/dxwnd.log
deleted file mode 100644
index d7fe0c3..0000000
--- a/build/exports/dxwnd.log
+++ /dev/null
@@ -1,20 +0,0 @@
-OnRun idx=22 prog="D:\Games\TIE95\TIE95.EXE" unhooked=0
-setwindowshook mode
-OnRun idx=22 prog="D:\Games\TIE95\TIE95.EXE" unhooked=0
-setwindowshook mode
-OnRun idx=22 prog="D:\Games\TIE95\TIE95.EXE" unhooked=0
-injectsuspended mode
-InjectSuspended: exe="D:\Games\TIE95\TIE95.EXE" dir="D:\Games\TIE95"
-Target handle=45c
-NT Header offset=B0
-AddressOfEntryPoint=CC220 ImageBase=400000
-Thread start address=4cc220
-wait cycle 0 eip=4cc220
-OnRun idx=22 prog="D:\Games\TIE95\TIE95.EXE" unhooked=0
-injectsuspended mode
-InjectSuspended: exe="D:\Games\TIE95\TIE95.EXE" dir="D:\Games\TIE95"
-Target handle=478
-NT Header offset=B0
-AddressOfEntryPoint=CC220 ImageBase=400000
-Thread start address=4cc220
-wait cycle 0 eip=4cc220
diff --git a/build/exports/dxwnd.reg b/build/exports/dxwnd.reg
deleted file mode 100644
index f56c51a..0000000
--- a/build/exports/dxwnd.reg
+++ /dev/null
@@ -1,233 +0,0 @@
-
-[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness]
-"1.0"=".\\"
-
-[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0]
-"InstalledFrom"=".\\"
-"HardDriveRootPath"=".\\"
-"InstallType"="Full"
-"version"="1.0"
-"Launched"="1"
-"PID"="87799-442-0210567-79960"
-"Path"=".\\"
-"VersionType"="RetailVersion"
-"InstalledGroup"="15"
-"LangID"=dword:00000009
-"OmitDriverCheck"=dword:00000000
-"LocalDriverInfo"=hex:4e,56,33,44,44,33,32,2e,44,4c,4c,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,34,2e,31,30,2e,30,2e,31,37,31,33,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,44,69,61,6d,6f,6e,64,20,56,69,70,65,72,20,\
- 56,33,33,30,20,28,4e,76,69,64,69,61,20,52,69,76,61,20,31,32,38,29,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,44,69,61,6d,\
- 6f,6e,64,20,56,69,70,65,72,20,56,33,33,30,20,28,4e,76,69,64,69,61,20,52,69,\
- 76,61,20,31,32,38,29,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,44,69,61,6d,6f,6e,64,20,4d,75,6c,74,69,6d,65,64,69,61,20,\
- 53,79,73,74,65,6d,73,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,08,6d,6d,33,64,66,78,33,32,2e,64,6c,6c,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,34,2e,31,\
- 30,2e,30,2e,31,35,39,38,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,33,44,66,78,20,56,6f,6f,64,6f,6f,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,33,44,66,78,20,56,6f,6f,\
- 64,6f,6f,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,33,44,66,78,20,49,6e,74,65,72,61,63,74,69,76,65,2c,20,49,6e,63,2e,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08
-
-[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0\DriverInfo]
-
-[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0\DriverInfo\{00000000-0000-0000-0000-000000000000}]
-"Driver"="NV3DD32.DLL"
-"Version"="4.10.0.1713"
-"Description"="Diamond Viper V330 (Nvidia Riva 128)"
-"DeviceID"="PCI\\VEN_12D2&DEV_0018&SUBSYS_10921092&REV_10\\000800"
-"NumberOfModes"=dword:00000025
-"Modes"=hex:40,01,00,00,c8,00,00,00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,40,01,00,00,f0,00,00,00,08,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,90,01,00,00,2c,01,00,00,08,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,e0,01,00,00,68,01,00,00,08,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00,80,01,00,00,08,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,02,00,00,90,01,00,\
- 00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,02,00,00,\
- e0,01,00,00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,20,\
- 03,00,00,58,02,00,00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,c0,03,00,00,d0,02,00,00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,04,00,00,00,03,00,00,08,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,80,04,00,00,60,03,00,00,08,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,05,00,00,00,04,00,00,08,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,06,00,00,b0,04,00,00,08,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,01,00,00,c8,00,00,00,\
- 10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,01,00,00,f0,\
- 00,00,00,10,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,e0,fd,ff,01,90,01,\
- 00,00,2c,01,00,00,10,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,e0,fd,ff,\
- 01,e0,01,00,00,68,01,00,00,10,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,\
- e0,fd,ff,01,00,02,00,00,80,01,00,00,10,00,00,00,00,00,00,00,01,00,00,00,00,\
- 00,00,00,e0,fd,ff,01,80,02,00,00,90,01,00,00,10,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,80,02,00,00,e0,01,00,00,10,00,00,00,00,00,00,\
- 00,01,00,00,00,00,00,00,00,e0,fd,ff,01,20,03,00,00,58,02,00,00,10,00,00,00,\
- 00,00,00,00,01,00,00,00,00,00,00,00,e0,fd,ff,01,c0,03,00,00,d0,02,00,00,10,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,04,00,00,00,03,\
- 00,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,04,00,\
- 00,60,03,00,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,05,00,00,00,04,00,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,40,06,00,00,b0,04,00,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,40,01,00,00,c8,00,00,00,20,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,40,01,00,00,f0,00,00,00,20,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,00,2c,01,00,00,20,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,e0,01,00,00,68,01,00,00,20,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00,80,01,00,\
- 00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,02,00,00,\
- 90,01,00,00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,\
- 02,00,00,e0,01,00,00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,20,03,00,00,58,02,00,00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,c0,03,00,00,d0,02,00,00,20,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,04,00,00,00,03,00,00,20,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,80,04,00,00,60,03,00,00,20,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00
-"TextureSizes"=hex:00,00,02,00,aa,aa,02,00,00,80,00,00,aa,aa,00,00,00,20,00,00,\
- aa,2a,00,00,00,08,00,00,a0,0d,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
- 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0\DriverInfo\{3A0CFD01-9320-11CF-ACA1-00A02413C2E2}]
-"Driver"="mm3dfx32.dll"
-"Version"="4.10.0.1598"
-"Description"="3Dfx Voodoo"
-"DeviceID"="PCI\\VEN_121A&DEV_0001&SUBSYS_00000000&REV_02\\BUS_00&DEV_0E&FUNC_00"
-"NumberOfModes"=dword:00000004
-"Modes"=hex:00,02,00,00,80,01,00,00,10,00,00,00,00,00,00,00,01,00,00,00,01,00,\
- 00,00,00,00,40,00,80,02,00,00,90,01,00,00,10,00,00,00,00,00,00,00,00,00,00,\
- 00,01,00,00,00,00,00,00,00,80,02,00,00,e0,01,00,00,10,00,00,00,00,00,00,00,\
- 01,00,00,00,01,00,00,00,00,00,40,00,20,03,00,00,58,02,00,00,10,00,00,00,00,\
- 00,00,00,01,00,00,00,00,00,00,00,00,00,40,00
-"TextureSizes"=hex:00,00,02,00,33,ab,02,00,00,80,00,00,33,ab,00,00,00,20,00,00,\
- 33,2b,00,00,00,08,00,00,33,0b,00,00,00,04,01,00,55,59,01,00,00,44,00,00,55,\
- 59,00,00,00,14,00,00,55,19,00,00,00,08,00,00,55,09,00,00
-
-
diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt
index 6163212..3e0c64d 100644
--- a/build/readme-relnotes.txt
+++ b/build/readme-relnotes.txt
@@ -1596,3 +1596,19 @@ add: FIXTHINFRAME option to get overlapped window with thin border
fix: revised implementation for DirectDrawSurface getCaps and GetSurfaceDesc wrappers
add: hooker for SetWindowsHookEx WH_MOUSE_LL events - used by "Royal Tramp 2"
fix: added WM_NCMOUSELEAVE to the list of potentially offending messages
+
+v2.04.21
+fix: proxed calls to SetCooperativeLevel with no specification for screen mode changes
+fix: locked rect fix applied only in case of not NULL rect specification. Fixes "Shadow Watch" font blitting problems.
+fix: DirectDrawEnumerate/Ex wrappers now filter video devices properly when a given monitor is selected. Partially fixes "The Sting!" behaviour on multi-monitor environment.
+fix: aligned primary surface capabilities for flipped native and emulated modes
+add: wrappers for ddraw7 StartModeTest and EvaluateMode methods only for logging
+fix: wrapper for SetCooperativeLevel proxy the call when flags is DDSCL_FPUPRESERVE or DDSCL_FPUSETUP only. Seen in "G-Darius"
+add: separated logging flag for structures hexdump
+fix: eliminated initial logging for undefined virtual keys (useless)
+fix: fixed unconditional logging for USER32:PolyLine
+add: diagniostic DC dump in GDI32:SetDIBitsToDevice wrapper
+fix: GDI32:SetViewportOrgEx wrapper when ddraw surface is still missing
+add: in ddraw::QueryInterface, logging for detection of Clipper or Palette objects
+fix: fix for /c:path argument of DxWnd command line usage, now can accept full file paths
+fix: log=none as default value for new dxwnd program entries
\ No newline at end of file
diff --git a/dll/ddcreates.cpp b/dll/ddcreates.cpp
index f909a08..9796bc8 100644
--- a/dll/ddcreates.cpp
+++ b/dll/ddcreates.cpp
@@ -278,6 +278,8 @@ static HRESULT BuildPrimaryFlippable(LPDIRECTDRAW lpdd, CreateSurface_Type pCrea
// dwFlags
ddsd.dwFlags &= ~(DDSD_REFRESHRATE);
ddsd.dwFlags |= (DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PIXELFORMAT|DDSD_BACKBUFFERCOUNT);
+ // DDSCAPS_OFFSCREENPLAIN seems required to support the palette in memory surfaces
+ ddsd.ddsCaps.dwCaps |= (DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY);
// dwBackBufferCount: set to at least 1
if(!(lpddsd->dwFlags & DDSD_BACKBUFFERCOUNT) || (lpddsd->dwBackBufferCount == 0)) ddsd.dwBackBufferCount = 1;
diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp
index cf91c14..cc689fc 100644
--- a/dll/ddraw.cpp
+++ b/dll/ddraw.cpp
@@ -146,6 +146,9 @@ HRESULT WINAPI extGetScanLine2(LPDIRECTDRAW, LPDWORD);
HRESULT WINAPI extGetScanLine3(LPDIRECTDRAW, LPDWORD);
HRESULT WINAPI extGetScanLine4(LPDIRECTDRAW, LPDWORD);
HRESULT WINAPI extGetScanLine7(LPDIRECTDRAW, LPDWORD);
+ /*** Added in the V7 Interface ??? ***/
+HRESULT WINAPI extStartModeTest(LPDIRECTDRAW, LPSIZE, DWORD, DWORD);
+HRESULT WINAPI extEvaluateMode(LPDIRECTDRAW, DWORD, DWORD *);
// DirectDrawSurface
HRESULT WINAPI extQueryInterfaceS1(void *, REFIID, LPVOID *);
@@ -321,6 +324,8 @@ DirectDrawEnumerateExW_Type pDirectDrawEnumerateExW = NULL;
DirectDrawCreateClipper_Type pDirectDrawCreateClipper = NULL;
HandleDDThreadLock_Type pAcquireDDThreadLock = NULL;
HandleDDThreadLock_Type pReleaseDDThreadLock = NULL;
+StartModeTest_Type pStartModeTest = NULL;
+EvaluateMode_Type pEvaluateMode = NULL;
/* DirectDraw hook pointers */
QueryInterface_Type pQueryInterfaceD1, pQueryInterfaceD2, pQueryInterfaceD3, pQueryInterfaceD4, pQueryInterfaceD7;
@@ -1340,6 +1345,9 @@ void HookDDSession(LPDIRECTDRAW *lplpdd, int dxversion)
SetHook((void *)(**(DWORD **)lplpdd + 92), extGetAvailableVidMem7, (void **)&pGetAvailableVidMem7, "GetAvailableVidMem(D7)");
// added in v4 interface
SetHook((void *)(**(DWORD **)lplpdd + 104), extTestCooperativeLevel7, (void **)&pTestCooperativeLevel7, "TestCooperativeLevel(D7)");
+ // added in v7 interface
+ SetHook((void *)(**(DWORD **)lplpdd + 112), extStartModeTest, (void **)&pStartModeTest, "StartModeTest(D7)");
+ SetHook((void *)(**(DWORD **)lplpdd + 116), extEvaluateMode, (void **)&pEvaluateMode, "EvaluateMode(D7)");
break;
}
}
@@ -1651,7 +1659,7 @@ static void HandleCapsD(char *sLabel, LPDDCAPS c)
sLabel, c->dwVidMemTotal, c->dwVidMemFree, c->dwZBufferBitDepths, ExplainZBufferBitDepths(c->dwZBufferBitDepths));
OutTraceDDRAW("GetCaps(%s): MaxVisibleOverlays=%x CurrVisibleOverlays=%x\n",
sLabel, c->dwMaxVisibleOverlays, c->dwCurrVisibleOverlays);
- if(IsDebug) HexTrace((unsigned char *)c, c->dwSize);
+ if(IsTraceHex) HexTrace((unsigned char *)c, c->dwSize);
if(dxw.bHintActive){
if(c->dwVidMemTotal > dwMaxMem) ShowHint(HINT_LIMITMEM);
@@ -2234,6 +2242,19 @@ HRESULT WINAPI extSetCooperativeLevel(int dxversion, SetCooperativeLevel_Type pS
OutTraceDDRAW("SetCooperativeLevel(D%d): lpdd=%x hwnd=%x dwFlags=%x(%s)\n",
dxversion, lpdd, hwnd, dwflags,ExplainCoopFlags(dwflags));
+ // when SetCooperativeLevel is called for the only purpose of setting the FPU policy,
+ // just proxy the call. Seen in "G-Darius".
+ switch(dwflags){
+ case DDSCL_FPUSETUP:
+ case DDSCL_FPUPRESERVE:
+ res=(*pSetCooperativeLevel)(lpdd, hwnd, dwflags);
+ if(res){
+ OutTraceE("SetCooperativeLevel: ERROR bypass err=%x(%s)\n", res, ExplainDDError(res));
+ }
+ return DD_OK;
+ break;
+ }
+
DDSURFACEDESC2 ddsd;
switch(dxversion){
default:
@@ -3868,7 +3889,9 @@ static HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRA
// v2.02.92: found in Fifa 2000: lpRect is completely ignored, receiving bogus values like (-1, -1, -1, -1}
// or {0, 0, 0, 0}, or {-109119151, -109119151, -109119151, -109119151}.
// better use the Lock-ed rect
- lprect = PopLockedRect(lpdds, lprect);
+ // v2.04.21: the fix is proper only when lprect is not NULL, when NULL better leave it unaltered.
+ // Fixing the lprect value unconditionally breaks "Shadow Watch" text blitting on game menus.
+ if(lprect) lprect = PopLockedRect(lpdds, lprect);
break;
case 7:
if(lprect){
@@ -3998,7 +4021,9 @@ static HRESULT WINAPI extUnlockDir(int dxversion, Unlock4_Type pUnlock, LPDIRECT
// v2.02.92: found in Fifa 2000: lpRect is completely ignored, receiving bogus values like (-1, -1, -1, -1}
// or {0, 0, 0, 0}, or {-109119151, -109119151, -109119151, -109119151}.
// better use the Lock-ed rect
- lprect = PopLockedRect(lpdds, lprect);
+ // v2.04.21: the fix is proper only when lprect is not NULL, when NULL better leave it unaltered.
+ // Fixing the lprect value unconditionally breaks "Shadow Watch" text blitting on game menus.
+ if(lprect) lprect = PopLockedRect(lpdds, lprect);
break;
case 7:
if(lprect){
@@ -4867,7 +4892,7 @@ static HRESULT WINAPI extGetCapsS(int dxInterface, GetCapsS_Type pGetCapsS, LPDI
}
if(IsFixed) OutTraceDW("GetCaps(S%d): lpdds=%x FIXED %s caps=%x(%s)\n", dxInterface, lpdds, sLabel, caps->dwCaps, ExplainDDSCaps(caps->dwCaps));
- //if(IsDebug) HexTrace((unsigned char *)caps, sizeof(DDSCAPS));
+ if(IsTraceHex) HexTrace((unsigned char *)caps, sizeof(DDSCAPS));
return res;
}
@@ -4963,11 +4988,8 @@ static HRESULT WINAPI extGetSurfaceDesc(int dxversion, GetSurfaceDesc_Type pGetS
break;
}
- if(IsFixed){
- OutTraceDW("GetSurfaceDesc: FIXED lpdds=%x %s\n", lpdds, LogSurfaceAttributes((LPDDSURFACEDESC2)lpddsd, sLabel, __LINE__));
- //if(IsDebug) HexTrace((unsigned char *)lpddsd, sizeof(DDSURFACEDESC));
- }
-
+ if(IsFixed) OutTraceDW("GetSurfaceDesc: FIXED lpdds=%x %s\n", lpdds, LogSurfaceAttributes((LPDDSURFACEDESC2)lpddsd, sLabel, __LINE__));
+ if(IsTraceHex) HexTrace((unsigned char *)lpddsd, sizeof(DDSURFACEDESC));
return DD_OK;
}
@@ -5182,6 +5204,20 @@ HRESULT WINAPI extReleaseP(LPDIRECTDRAWPALETTE lpddPalette)
return ref;
}
+static BOOL IsMatchingDeviceW(LPWSTR lpDriverName)
+{
+ WCHAR MatchDev[20];
+ wsprintfW(MatchDev, L"DISPLAY%d", dxw.MonitorId+1);
+ return (wcsstr(lpDriverName, MatchDev) != NULL);
+}
+
+static BOOL IsMatchingDeviceA(LPCSTR lpDriverName)
+{
+ CHAR MatchDev[20];
+ sprintf(MatchDev, "DISPLAY%d", dxw.MonitorId+1);
+ return (strstr(lpDriverName, MatchDev) != NULL);
+}
+
BOOL FAR PASCAL DDEnumerateCallbackFilterW(GUID FAR *lpGuid, LPWSTR lpDriverDescription, LPWSTR lpDriverName, LPVOID lpContext)
{
BOOL res;
@@ -5189,8 +5225,20 @@ BOOL FAR PASCAL DDEnumerateCallbackFilterW(GUID FAR *lpGuid, LPWSTR lpDriverDesc
Context_Type *p=(Context_Type *)lpContext;
OutTraceDW("DDEnumerateCallback: guid=%x DriverDescription=\"%ls\" DriverName=\"%ls\" Context=%x\n",
lpGuid, lpDriverDescription, lpDriverName, p->lpContext);
- if((lpGuid==NULL) || !(dxw.dwFlags2 & HIDEMULTIMONITOR)) res=(*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext);
- if((lpGuid==NULL) && (dxw.dwFlags2 & HIDEMULTIMONITOR)) res=FALSE;
+ if(dxw.MonitorId != -1){
+ if(IsMatchingDeviceW(lpDriverName)){
+ (*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext);
+ res=FALSE;
+ }
+ else {
+ OutTraceDW("DDEnumerateCallback: SKIP DriverName=\"%ls\"\n", lpDriverName);
+ res=TRUE;
+ }
+ }
+ else{
+ if((lpGuid==NULL) || !(dxw.dwFlags2 & HIDEMULTIMONITOR)) res=(*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext);
+ if((lpGuid==NULL) && (dxw.dwFlags2 & HIDEMULTIMONITOR)) res=FALSE;
+ }
OutTraceDW("DDEnumerateCallback: res=%x(%s)\n", res, res?"continue":"break");
return res;
}
@@ -5203,8 +5251,21 @@ BOOL FAR PASCAL DDEnumerateCallbackExFilterW(GUID FAR *lpGuid, LPWSTR lpDriverDe
OutTraceDW("DDEnumerateCallbackEx: guid=%x DriverDescription=\"%ls\" DriverName=\"%ls\" Context=%x hm=%x\n",
lpGuid, lpDriverDescription, lpDriverName, lpContext, hm);
res=TRUE;
- if((lpGuid==NULL) || !(dxw.dwFlags2 & HIDEMULTIMONITOR)) res=(*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext, hm);
- if((lpGuid==NULL) && (dxw.dwFlags2 & HIDEMULTIMONITOR)) res=FALSE;
+ // single monitor handling
+ if(dxw.MonitorId != -1){
+ if(IsMatchingDeviceW(lpDriverName)){
+ (*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext, hm);
+ res=FALSE;
+ }
+ else{
+ OutTraceDW("DDEnumerateCallbackEx: SKIP DriverName=\"%ls\"\n", lpDriverName);
+ res=TRUE;
+ }
+ }
+ else{
+ if((lpGuid==NULL) || !(dxw.dwFlags2 & HIDEMULTIMONITOR)) res=(*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext, hm);
+ if((lpGuid==NULL) && (dxw.dwFlags2 & HIDEMULTIMONITOR)) res=FALSE;
+ }
OutTraceDW("DDEnumerateCallbackEx: res=%x(%s)\n", res, res?"continue":"break");
return res;
}
@@ -5216,8 +5277,21 @@ BOOL FAR PASCAL DDEnumerateCallbackFilterA(GUID FAR *lpGuid, LPSTR lpDriverDescr
Context_Type *p=(Context_Type *)lpContext;
OutTraceDW("DDEnumerateCallback: guid=%x DriverDescription=\"%s\" DriverName=\"%s\" Context=%x\n",
lpGuid, lpDriverDescription, lpDriverName, p->lpContext);
- if((lpGuid==NULL) || !(dxw.dwFlags2 & HIDEMULTIMONITOR)) res=(*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext);
- if((lpGuid==NULL) && (dxw.dwFlags2 & HIDEMULTIMONITOR)) res=FALSE;
+ res=TRUE;
+ if(dxw.MonitorId != -1){
+ if(IsMatchingDeviceA(lpDriverName)){
+ (*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext);
+ res=FALSE;
+ }
+ else{
+ OutTraceDW("DDEnumerateCallback: SKIP DriverName=\"%s\"\n", lpDriverName);
+ res=TRUE;
+ }
+ }
+ else{
+ if((lpGuid==NULL) || !(dxw.dwFlags2 & HIDEMULTIMONITOR)) res=(*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext);
+ if((lpGuid==NULL) && (dxw.dwFlags2 & HIDEMULTIMONITOR)) res=FALSE;
+ }
OutTraceDW("DDEnumerateCallback: res=%x(%s)\n", res, res?"continue":"break");
return res;
}
@@ -5230,8 +5304,20 @@ BOOL FAR PASCAL DDEnumerateCallbackExFilterA(GUID FAR *lpGuid, LPSTR lpDriverDes
OutTraceDW("DDEnumerateCallbackEx: guid=%x DriverDescription=\"%s\" DriverName=\"%s\" Context=%x hm=%x\n",
lpGuid, lpDriverDescription, lpDriverName, lpContext, hm);
res=TRUE;
- if((lpGuid==NULL) || !(dxw.dwFlags2 & HIDEMULTIMONITOR)) res=(*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext, hm);
- if((lpGuid==NULL) && (dxw.dwFlags2 & HIDEMULTIMONITOR)) res=FALSE;
+ if(dxw.MonitorId != -1){
+ if(IsMatchingDeviceA(lpDriverName)){
+ (*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext, hm);
+ res=FALSE;
+ }
+ else{
+ OutTraceDW("DDEnumerateCallbackEx: SKIP DriverName=\"%s\"\n", lpDriverName);
+ res=TRUE;
+ }
+ }
+ else{
+ if((lpGuid==NULL) || !(dxw.dwFlags2 & HIDEMULTIMONITOR)) res=(*p->lpCallback)(lpGuid, lpDriverDescription, lpDriverName, p->lpContext, hm);
+ if((lpGuid==NULL) && (dxw.dwFlags2 & HIDEMULTIMONITOR)) res=FALSE;
+ }
OutTraceDW("DDEnumerateCallbackEx: res=%x(%s)\n", res, res?"continue":"break");
return res;
}
@@ -5239,8 +5325,8 @@ BOOL FAR PASCAL DDEnumerateCallbackExFilterA(GUID FAR *lpGuid, LPSTR lpDriverDes
HRESULT WINAPI extDirectDrawEnumerateA(LPDDENUMCALLBACKA lpCallback, LPVOID lpContext)
{
HRESULT ret;
- OutTraceDDRAW("DirectDrawEnumerate: lpCallback=%x lpContext=%x\n", lpCallback, lpContext);
- if((dxw.dwFlags2 & HIDEMULTIMONITOR) || (dxw.dwTFlags & OUTDEBUG)){
+ OutTraceDDRAW("DirectDrawEnumerate[A]: lpCallback=%x lpContext=%x\n", lpCallback, lpContext);
+ if((dxw.dwFlags2 & HIDEMULTIMONITOR) || (dxw.dwTFlags & OUTDEBUG) || (dxw.MonitorId != -1)){
struct {LPDDENUMCALLBACKA lpCallback; LPVOID lpContext;} myContext;
myContext.lpCallback=lpCallback;
myContext.lpContext=lpContext;
@@ -5255,8 +5341,8 @@ HRESULT WINAPI extDirectDrawEnumerateA(LPDDENUMCALLBACKA lpCallback, LPVOID lpCo
HRESULT WINAPI extDirectDrawEnumerateW(LPDDENUMCALLBACKW lpCallback, LPVOID lpContext)
{
HRESULT ret;
- OutTraceDDRAW("DirectDrawEnumerate: lpCallback=%x lpContext=%x\n", lpCallback, lpContext);
- if((dxw.dwFlags2 & HIDEMULTIMONITOR) || (dxw.dwTFlags & OUTDEBUG)){
+ OutTraceDDRAW("DirectDrawEnumerate[W]: lpCallback=%x lpContext=%x\n", lpCallback, lpContext);
+ if((dxw.dwFlags2 & HIDEMULTIMONITOR) || (dxw.dwTFlags & OUTDEBUG) || (dxw.MonitorId != -1)){
struct {LPDDENUMCALLBACKW lpCallback; LPVOID lpContext;} myContext;
myContext.lpCallback=lpCallback;
myContext.lpContext=lpContext;
@@ -5271,12 +5357,15 @@ HRESULT WINAPI extDirectDrawEnumerateW(LPDDENUMCALLBACKW lpCallback, LPVOID lpCo
HRESULT WINAPI extDirectDrawEnumerateExA(LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags)
{
HRESULT ret;
- OutTraceDDRAW("DirectDrawEnumerateEx: lpCallback=%x lpContext=%x Flags=%x(%s)\n",
+ OutTraceDDRAW("DirectDrawEnumerateEx[A]: lpCallback=%x lpContext=%x Flags=%x(%s)\n",
lpCallback, lpContext, dwFlags, ExplainDDEnumerateFlags(dwFlags));
- if((dxw.dwFlags2 & HIDEMULTIMONITOR) || (dxw.dwTFlags & OUTDEBUG)){
+ if((dxw.dwFlags2 & HIDEMULTIMONITOR) || (dxw.dwTFlags & OUTDEBUG) || (dxw.MonitorId != -1)){
struct {LPDDENUMCALLBACKEXA lpCallback; LPVOID lpContext;} myContext;
myContext.lpCallback=lpCallback;
myContext.lpContext=lpContext;
+ if(dxw.dwFlags2 & HIDEMULTIMONITOR){
+ dwFlags &= ~(DDENUM_ATTACHEDSECONDARYDEVICES|DDENUM_DETACHEDSECONDARYDEVICES|DDENUM_NONDISPLAYDEVICES);
+ }
ret=(*pDirectDrawEnumerateExA)(DDEnumerateCallbackExFilterA, (LPVOID)&myContext, dwFlags);
}
else{
@@ -5290,12 +5379,15 @@ HRESULT WINAPI extDirectDrawEnumerateExA(LPDDENUMCALLBACKEXA lpCallback, LPVOID
HRESULT WINAPI extDirectDrawEnumerateExW(LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags)
{
HRESULT ret;
- OutTraceDDRAW("DirectDrawEnumerateEx: lpCallback=%x lpContext=%x Flags=%x(%s)\n",
+ OutTraceDDRAW("DirectDrawEnumerateEx[W]: lpCallback=%x lpContext=%x Flags=%x(%s)\n",
lpCallback, lpContext, dwFlags, ExplainDDEnumerateFlags(dwFlags));
- if((dxw.dwFlags2 & HIDEMULTIMONITOR) || (dxw.dwTFlags & OUTDEBUG)){
+ if((dxw.dwFlags2 & HIDEMULTIMONITOR) || (dxw.dwTFlags & OUTDEBUG) || (dxw.MonitorId != -1)){
struct {LPDDENUMCALLBACKEXW lpCallback; LPVOID lpContext;} myContext;
myContext.lpCallback=lpCallback;
myContext.lpContext=lpContext;
+ if(dxw.dwFlags2 & HIDEMULTIMONITOR){
+ dwFlags &= ~(DDENUM_ATTACHEDSECONDARYDEVICES|DDENUM_DETACHEDSECONDARYDEVICES|DDENUM_NONDISPLAYDEVICES);
+ }
ret=(*pDirectDrawEnumerateExW)(DDEnumerateCallbackExFilterW, (LPVOID)&myContext, dwFlags);
}
else{
@@ -5580,3 +5672,28 @@ HRESULT WINAPI extGetOverlayPosition4(LPDIRECTDRAWSURFACE lpdds, LPLONG lX, LPLO
HRESULT WINAPI extGetOverlayPosition7(LPDIRECTDRAWSURFACE lpdds, LPLONG lX, LPLONG lY)
{ return extGetOverlayPosition(7, pGetOverlayPosition7, lpdds, lX, lY); }
+HRESULT WINAPI extStartModeTest(LPDIRECTDRAW lpdds, LPSIZE lpModesToTest, DWORD dwNumEntries, DWORD dwFlags)
+{
+ HRESULT res;
+ if(IsTraceDW){
+ char sBuf[80];
+ OutTrace("StartModeTest(7): lpdds=%x flags=%x num=%d modes=", lpdds, dwFlags, dwNumEntries);
+ for(DWORD i=0; i.
#include "TlHelp32.h"
-#define VERSION "2.04.20"
+#define VERSION "2.04.21"
#define DDTHREADLOCK 1
diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo
index 515de0a..d169ec0 100644
Binary files a/dll/dxwnd.vs2008.suo and b/dll/dxwnd.vs2008.suo differ
diff --git a/dll/dxwsstack.cpp b/dll/dxwsstack.cpp
index b791b26..cc19d37 100644
--- a/dll/dxwsstack.cpp
+++ b/dll/dxwsstack.cpp
@@ -8,7 +8,9 @@
#include "dxwnd.h"
#include "dxwcore.hpp"
-#define DXW_SURFACE_STACK_TRACING
+// uncomment line below to activate surface stack tracing
+//#define DXW_SURFACE_STACK_TRACING
+
#define OutTraceSDB OutTrace
dxwSStack::dxwSStack()
@@ -211,7 +213,12 @@ DWORD dxwSStack::DuplicateSurface(LPDIRECTDRAWSURFACE psfrom, LPDIRECTDRAWSURFAC
if ((e->lpdds==psfrom) || (e->lpdds==(DWORD)0)) break; // got matching entry or end of the list
}
// if not found, return
- if (!e->lpdds) return 0;
+ if (!e->lpdds) {
+#ifdef DXW_SURFACE_STACK_TRACING
+ OutTraceSDB("--- NO ENTRY: from=%x\n", psfrom);
+#endif
+ return 0;
+ }
// save surface entry
sentry = *e;
// search for destination or empty slot
diff --git a/dll/gdi32.cpp b/dll/gdi32.cpp
index b8e24bc..8e0b0d2 100644
--- a/dll/gdi32.cpp
+++ b/dll/gdi32.cpp
@@ -664,7 +664,8 @@ HPALETTE WINAPI extSelectPalette(HDC hdc, HPALETTE hpal, BOOL bForceBackground)
OutTraceDW("GDI.SelectPalette: hdc=%x hpal=%x ForceBackground=%x\n", hdc, hpal, bForceBackground);
if(hdc==dxw.RealHDC) hdc= dxw.VirtualHDC;
- if((dxw.dwFlags1 & EMULATESURFACE) && (dxw.dwFlags6 & SYNCPALETTE) && bFlippedDC){
+ //if((dxw.dwFlags1 & EMULATESURFACE) && (dxw.dwFlags6 & SYNCPALETTE) && bFlippedDC){
+ if((dxw.dwFlags1 & EMULATESURFACE) && (dxw.dwFlags6 & SYNCPALETTE)){
hDesktopPalette=hpal;
if(hFlippedDC){
hdc = hFlippedDC;
@@ -1416,13 +1417,12 @@ BOOL WINAPI extPolyline(HDC hdc, const POINT *lppt, int cPoints)
return ret;
break;
case GDIMODE_STRETCHED:
- int i;
- OutTrace("Polyline: fixed cPoints=%d pt=", cPoints);
- for(i=0; ix = dxw.VirtualOffsetX;
lpPoint->y = dxw.VirtualOffsetY;
}
- dxw.VirtualOffsetX = X;
- dxw.VirtualOffsetY = Y;
ret = TRUE;
}
- else
+ else {
ret=(*pSetViewportOrgEx)(hdc, X, Y, lpPoint);
- break;
- case GDIMODE_SHAREDDC:
- sdc.GetPrimaryDC(hdc);
- ret=(*pSetViewportOrgEx)(sdc.GetHdc(), X, Y, lpPoint);
- sdc.PutPrimaryDC(hdc, FALSE);
+ if(ret && lpPoint) {
+ OutTraceDW("SetViewportOrgEx: previous ViewPort=(%d,%d)\n", lpPoint->x, lpPoint->y);
+ dxw.UnmapClient(lpPoint);
+ OutTraceDW("SetViewportOrgEx: fixed previous ViewPort=(%d,%d)\n", lpPoint->x, lpPoint->y);
+ }
+ }
break;
case GDIMODE_STRETCHED:
dxw.MapClient(&X, &Y);
@@ -2301,6 +2306,12 @@ BOOL WINAPI extSetViewportOrgEx(HDC hdc, int X, int Y, LPPOINT lpPoint)
OutTraceDW("SetViewportOrgEx: fixed previous ViewPort=(%d,%d)\n", lpPoint->x, lpPoint->y);
}
break;
+ case GDIMODE_SHAREDDC:
+ sdc.GetPrimaryDC(hdc);
+ ret=(*pSetViewportOrgEx)(sdc.GetHdc(), X, Y, lpPoint);
+ sdc.PutPrimaryDC(hdc, FALSE);
+ break;
+
default:
ret=(*pSetViewportOrgEx)(hdc, X, Y, lpPoint);
break;
diff --git a/dll/hd3d7.cpp b/dll/hd3d7.cpp
index fa9ec24..055a13c 100644
--- a/dll/hd3d7.cpp
+++ b/dll/hd3d7.cpp
@@ -402,6 +402,7 @@ int HookDirect3D7(HMODULE module, int version){
LPDIRECT3D lpd3d=NULL;
HRESULT res;
+ OutTraceDW("HookDirect3D7: module=%x version=%d\n", module, version);
switch(version){
case 0:
case 1:
@@ -776,7 +777,7 @@ static void DumpD3DDeviceDesc(LPD3DDEVICEDESC d3, char *label)
if(d3->dwFlags & D3DDD_MAXBUFFERSIZE) OutTrace("MaxBufferSize=%d ", d3->dwMaxBufferSize);
if(d3->dwFlags & D3DDD_MAXVERTEXCOUNT) OutTrace("MaxVertexCount=%d ", d3->dwMaxVertexCount);
OutTrace("Texture min=(%dx%d) max=(%dx%d)\n", d3->dwMinTextureWidth, d3->dwMinTextureHeight, d3->dwMaxTextureWidth, d3->dwMaxTextureHeight);
- HexTrace((unsigned char *)d3, d3->dwSize);
+ if(IsTraceHex) HexTrace((unsigned char *)d3, d3->dwSize);
}
else
OutTrace("EnumDevices: CALLBACK dev=%s ddesc=NULL\n", label);
@@ -803,7 +804,7 @@ static void DumpD3DDeviceDesc7(LPD3DDEVICEDESC7 d3, char *label)
OutTrace("Texture min=(%dx%d) max=(%dx%d)\n", d3->dwMinTextureWidth, d3->dwMinTextureHeight, d3->dwMaxTextureWidth, d3->dwMaxTextureHeight);
// to be completed ....
//OutTrace("\n");
- HexTrace((unsigned char *)d3, sizeof(D3DDEVICEDESC7));
+ if(IsTraceHex) HexTrace((unsigned char *)d3, sizeof(D3DDEVICEDESC7));
}
else
OutTrace("EnumDevices: CALLBACK dev=%s ddesc=NULL\n", label);
diff --git a/dll/hddraw.h b/dll/hddraw.h
index c3fe6b6..fa7552e 100644
--- a/dll/hddraw.h
+++ b/dll/hddraw.h
@@ -55,8 +55,8 @@ typedef HRESULT (WINAPI *RestoreAllSurfaces_Type)(LPDIRECTDRAW);
typedef HRESULT (WINAPI *TestCooperativeLevel_Type)(LPDIRECTDRAW);
typedef HRESULT (WINAPI *GetDeviceIdentifier_Type)(LPDIRECTDRAW, LPDDDEVICEIDENTIFIER, DWORD);
typedef HRESULT (WINAPI *GetScanLine_Type)(LPDIRECTDRAW, LPDWORD);
-// STDMETHOD(StartModeTest)(THIS_ LPSIZE, DWORD, DWORD ) PURE;
-// STDMETHOD(EvaluateMode)(THIS_ DWORD, DWORD * ) PURE;
+typedef HRESULT (WINAPI *StartModeTest_Type)(LPDIRECTDRAW, LPSIZE, DWORD, DWORD);
+typedef HRESULT (WINAPI *EvaluateMode_Type)(LPDIRECTDRAW, DWORD, DWORD *);
// DirectDrawSurface
typedef ULONG (WINAPI *AddRefS_Type)(LPDIRECTDRAWSURFACE);
diff --git a/dll/queryint.cpp b/dll/queryint.cpp
index b8e9921..797868f 100644
--- a/dll/queryint.cpp
+++ b/dll/queryint.cpp
@@ -80,6 +80,9 @@ HRESULT WINAPI extQueryInterfaceDX(int dxversion, QueryInterface_Type pQueryInte
iObjectType=TYPE_OBJECT_DDRAWSURFACE; iObjectVersion=4; break;
case 0x06675a80:
iObjectType=TYPE_OBJECT_DDRAWSURFACE; iObjectVersion=7; break;
+ case 0x6C14DB84:
+ OutTraceDW("QueryInterface: IID_IDirectDrawPalette\n");
+ break;
// Direct3D
case 0x3BBA0080: // IID_IDirect3D
iObjectType=TYPE_OBJECT_DIRECT3D; iObjectVersion=1; break;
@@ -115,6 +118,9 @@ HRESULT WINAPI extQueryInterfaceDX(int dxversion, QueryInterface_Type pQueryInte
case 0x4B9F0EE0:
OutTraceDW("QueryInterface: IID_IDirectDrawColorControl\n");
break;
+ case 0x6C14DB85:
+ OutTraceDW("QueryInterface: IID_IDirectDrawClipper\n");
+ break;
case 0x69C11C3E:
iObjectType=TYPE_OBJECT_GAMMARAMP; iObjectVersion=1; break;
// textures
diff --git a/host/TabLogs.cpp b/host/TabLogs.cpp
index ef00b8d..b6375fd 100644
--- a/host/TabLogs.cpp
+++ b/host/TabLogs.cpp
@@ -53,6 +53,7 @@ void CTabLogs::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_TRACEHOOKS, cTarget->m_TraceHooks);
DDX_Check(pDX, IDC_OUTOGLTRACE, cTarget->m_OutOGLTrace);
DDX_Check(pDX, IDC_OUTWGTRACE, cTarget->m_OutWGTrace);
+ DDX_Check(pDX, IDC_OUTHEXTRACE, cTarget->m_OutHexTrace);
}
BEGIN_MESSAGE_MAP(CTabLogs, CDialog)
diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp
index e86bec1..b5e9f01 100644
--- a/host/TargetDlg.cpp
+++ b/host/TargetDlg.cpp
@@ -49,6 +49,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
m_OutWinMessages = FALSE;
m_OutDWTrace = FALSE;
m_OutOGLTrace = FALSE;
+ m_OutHexTrace = FALSE;
m_OutWGTrace = FALSE;
m_OutD3DTrace = FALSE;
m_OutDDRAWTrace = FALSE;
diff --git a/host/TargetDlg.h b/host/TargetDlg.h
index 65735db..38a1d6d 100644
--- a/host/TargetDlg.h
+++ b/host/TargetDlg.h
@@ -62,6 +62,7 @@ public:
BOOL m_OutWinMessages;
BOOL m_OutDWTrace;
BOOL m_OutOGLTrace;
+ BOOL m_OutHexTrace;
BOOL m_OutWGTrace;
BOOL m_OutD3DTrace;
BOOL m_OutDDRAWTrace;
diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps
index 433abc9..b27abee 100644
Binary files a/host/dxwndhost.aps and b/host/dxwndhost.aps differ
diff --git a/host/dxwndhost.cpp b/host/dxwndhost.cpp
index 44122ed..ed61e13 100644
--- a/host/dxwndhost.cpp
+++ b/host/dxwndhost.cpp
@@ -44,7 +44,7 @@ BOOL gQuietMode = FALSE;
BOOL gMustDie = FALSE;
int iProgIndex;
DWORD SysColors[32];
-extern char m_ConfigFileName[20+1] = "dxwnd.ini";
+//char m_ConfigFileName[MAX_PATH+1] = "dxwnd.ini";
class CNewCommandLineInfo : public CCommandLineInfo
{
@@ -103,7 +103,7 @@ void CNewCommandLineInfo::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast)
return;
}
if (sParam.Left(2).MakeLower() == "c:"){
- strcpy_s(m_ConfigFileName, sizeof(m_ConfigFileName)-1, sParam.Mid(2,sizeof(m_ConfigFileName)-1));
+ strcpy_s(gInitPath, sizeof(gInitPath)-1, sParam.Mid(2,sizeof(gInitPath)-1));
return;
}
if (sParam.MakeLower() == "e"){
diff --git a/host/dxwndhost.h b/host/dxwndhost.h
index ed23689..9ab952e 100644
--- a/host/dxwndhost.h
+++ b/host/dxwndhost.h
@@ -42,7 +42,7 @@ typedef struct {
} ThreadInfo_Type;
ThreadInfo_Type;
-extern char gInitPath[MAX_PATH];
+extern char gInitPath[MAX_PATH+1];
extern void OutTrace(const char *, ...);
/////////////////////////////////////////////////////////////////////////////
diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc
index fe5d6a6..816ebd1 100644
Binary files a/host/dxwndhost.rc and b/host/dxwndhost.rc differ
diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo
index e261656..f2e7f57 100644
Binary files a/host/dxwndhost.vs2008.suo and b/host/dxwndhost.vs2008.suo differ
diff --git a/host/dxwndhostDoc.cpp b/host/dxwndhostDoc.cpp
new file mode 100644
index 0000000..1536efc
--- /dev/null
+++ b/host/dxwndhostDoc.cpp
@@ -0,0 +1,75 @@
+// dxwndhostDoc.cpp : CDxwndhostDoc Define the behavior of the class.
+//
+
+#include "stdafx.h"
+#include "dxwndhost.h"
+
+#include "dxwndhostDoc.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CDxwndhostDoc
+
+IMPLEMENT_DYNCREATE(CDxwndhostDoc, CDocument)
+
+BEGIN_MESSAGE_MAP(CDxwndhostDoc, CDocument)
+ //{{AFX_MSG_MAP(CDxwndhostDoc)
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CDxwndhostDoc class constructor / destructor
+
+CDxwndhostDoc::CDxwndhostDoc()
+{
+}
+
+CDxwndhostDoc::~CDxwndhostDoc()
+{
+}
+
+BOOL CDxwndhostDoc::OnNewDocument()
+{
+ if (!CDocument::OnNewDocument())
+ return FALSE;
+
+ return TRUE;
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CDxwndhostDoc Serialization
+
+void CDxwndhostDoc::Serialize(CArchive& ar)
+{
+ if (ar.IsStoring())
+ {
+ }
+ else
+ {
+ }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CDxwndhostDoc Diagnostic Class
+
+#ifdef _DEBUG
+void CDxwndhostDoc::AssertValid() const
+{
+ CDocument::AssertValid();
+}
+
+void CDxwndhostDoc::Dump(CDumpContext& dc) const
+{
+ CDocument::Dump(dc);
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CDxwndhostDoc Command
diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp
index eb5ddd4..0c7787b 100644
--- a/host/dxwndhostView.cpp
+++ b/host/dxwndhostView.cpp
@@ -32,7 +32,7 @@ static char THIS_FILE[] = __FILE__;
extern UINT m_StartToTray;
extern UINT m_InitialState;
-extern char m_ConfigFileName[20+1];
+//extern char m_ConfigFileName[MAX_PATH+1];
extern BOOL Inject(DWORD, const char *);
extern int KillProcByName(char *, BOOL, BOOL);
extern BOOL gTransientMode;
@@ -46,7 +46,8 @@ TARGETMAP *pTargets; // idem.
#define LOCKINJECTIONTHREADS
-char gInitPath[MAX_PATH]; // don't put it into the class because it must be used after destructor
+char gInitPath[MAX_PATH+1] = ""; // don't put it into the class because it must be used after destructor
+char gExportPath[MAX_PATH+1];
CWnd *pParent;
// beware: it must operate upon count+1 sized arrays
@@ -207,6 +208,8 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
t->flags6 = 0;
t->flags7 = 0;
t->flags8 = 0;
+ t->flags9 = 0;
+ t->flags10 = 0;
t->tflags = 0;
t->dflags = 0;
if(dlg->m_UnNotify) t->flags |= UNNOTIFY;
@@ -378,6 +381,7 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
if(dlg->m_OutWinMessages) t->tflags |= OUTWINMESSAGES;
if(dlg->m_OutDWTrace) t->tflags |= OUTDXWINTRACE;
if(dlg->m_OutOGLTrace) t->tflags |= OUTOGLTRACE;
+ if(dlg->m_OutHexTrace) t->tflags |= OUTHEXTRACE;
if(dlg->m_OutWGTrace) t->tflags |= OUTWINGTRACE;
if(dlg->m_OutDDRAWTrace) t->tflags |= OUTDDRAWTRACE;
if(dlg->m_OutD3DTrace) t->tflags |= OUTD3DTRACE;
@@ -718,6 +722,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
dlg->m_OutWinMessages = t->tflags & OUTWINMESSAGES ? 1 : 0;
dlg->m_OutDWTrace = t->tflags & OUTDXWINTRACE ? 1 : 0;
dlg->m_OutOGLTrace = t->tflags & OUTOGLTRACE ? 1 : 0;
+ dlg->m_OutHexTrace = t->tflags & OUTHEXTRACE ? 1 : 0;
dlg->m_OutWGTrace = t->tflags & OUTWINGTRACE ? 1 : 0;
dlg->m_OutD3DTrace = t->tflags & OUTD3DTRACE ? 1 : 0;
dlg->m_OutDDRAWTrace = t->tflags & OUTDDRAWTRACE ? 1 : 0;
@@ -1443,10 +1448,12 @@ void CDxwndhostView::OnInitialUpdate()
listcol.mask = LVCF_WIDTH;
listcol.cx = 100;
- listctrl.InsertColumn(0, &listcol);
- GetCurrentDirectory(MAX_PATH, gInitPath);
- strcat_s(gInitPath, sizeof(gInitPath), "\\");
- strcat_s(gInitPath, sizeof(gInitPath), m_ConfigFileName);
+ listctrl.InsertColumn(0, &listcol);
+ if(!strlen(gInitPath)){
+ GetCurrentDirectory(MAX_PATH, gInitPath);
+ strcat_s(gInitPath, sizeof(gInitPath), "\\");
+ strcat_s(gInitPath, sizeof(gInitPath), "dxwnd.ini");
+ }
listctrl.InsertColumn(0, &listcol);
StatusMap.VJoyStatus = GetPrivateProfileInt("joystick", "flags", VJOYENABLED|CROSSENABLED|INVERTYAXIS|VJMOUSEMAP|VJKEYBOARDMAP, gInitPath);
@@ -2154,6 +2161,7 @@ void CDxwndhostView::OnAdd(char *sInitialPath)
dlg.m_PosY = GetPrivateProfileInt("window", "defaultposy", 50, gInitPath);
dlg.m_SizX = GetPrivateProfileInt("window", "defaultsizx", 800, gInitPath);
dlg.m_SizY = GetPrivateProfileInt("window", "defaultsizy", 600, gInitPath);
+ dlg.m_LogMode = 0; // ???
if(dlg.DoModal() == IDOK && dlg.m_FilePath.GetLength()){
strnncpy(PrivateMaps[i].title, (char *)dlg.m_Title.GetString(), MAX_TITLE);
diff --git a/host/resource b/host/resource
index 1b226ba..46b86c0 100644
Binary files a/host/resource and b/host/resource differ