From 3c26956485c90a75d4d74be0e5f9d6d30594bd8c Mon Sep 17 00:00:00 2001 From: gho tik Date: Sat, 25 Mar 2017 10:00:24 -0400 Subject: [PATCH] v2_04_21_src --- Include/dxwnd.h | 3 + build/exports/Agile Warrior F111X.dxw | 36 +++ build/exports/Arthur's Quest.dxw | 42 ++++ build/exports/Bomberbabe.dxw | 22 +- build/exports/Dark Earth.dxw | 9 +- build/exports/Defiance (D3D).dxw | 14 +- build/exports/Forsaken (HW).dxw | 19 +- build/exports/Future Cop L.A.P.D..dxw | 10 +- build/exports/G-Darius.dxw | 42 ++++ build/exports/Galapagos demo.dxw | 42 ++++ build/exports/Gorky 17.dxw | 19 +- .../exports/Ground Control (sw renderer).dxw | 42 ++++ build/exports/HyperBlade.dxw | 43 ++++ build/exports/Inquisition.dxw | 42 ++++ build/exports/Largo Winch.dxw | 42 ++++ build/exports/Loonyland 2 CE.dxw | 36 +++ build/exports/Marbles.dxw | 40 +++ .../Microsoft Motocross Madness 2 trial.dxw | 43 ++++ build/exports/Paradise Cracked.dxw | 42 ++++ build/exports/Planet of the Apes.dxw | 21 +- build/exports/Post Mortem (CD version).dxw | 42 ++++ ...Prince of Persia The Two Thrones (GOG).dxw | 42 ++++ build/exports/Prisoner of War.dxw | 42 ++++ build/exports/Shadow Watch.dxw | 24 +- build/exports/Spike the Hedgehog.dxw | 42 ++++ build/exports/Taz Wanted.dxw | 15 +- build/exports/The Sting!.dxw | 11 +- build/exports/Tone Rebellion Leviathan.dxw | 13 +- build/exports/Toy Factory.dxw | 13 +- build/exports/Warlords Battlecry 2.dxw | 36 +++ build/exports/dxwnd.ini | 5 - build/exports/dxwnd.log | 20 -- build/exports/dxwnd.reg | 233 ------------------ build/readme-relnotes.txt | 16 ++ dll/ddcreates.cpp | 2 + dll/ddraw.cpp | 167 +++++++++++-- dll/dxemublt.cpp | 2 +- dll/dxwcore.cpp | 2 +- dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 186368 -> 220672 bytes dll/dxwsstack.cpp | 11 +- dll/gdi32.cpp | 41 +-- dll/hd3d7.cpp | 5 +- dll/hddraw.h | 4 +- dll/queryint.cpp | 6 + host/TabLogs.cpp | 1 + host/TargetDlg.cpp | 1 + host/TargetDlg.h | 1 + host/dxwndhost.aps | Bin 264404 -> 230116 bytes host/dxwndhost.cpp | 4 +- host/dxwndhost.h | 2 +- host/dxwndhost.rc | Bin 156908 -> 157118 bytes host/dxwndhost.vs2008.suo | Bin 241664 -> 250368 bytes host/dxwndhostDoc.cpp | 75 ++++++ host/dxwndhostView.cpp | 20 +- host/resource | Bin 57146 -> 57238 bytes 56 files changed, 1169 insertions(+), 340 deletions(-) create mode 100644 build/exports/Agile Warrior F111X.dxw create mode 100644 build/exports/Arthur's Quest.dxw create mode 100644 build/exports/G-Darius.dxw create mode 100644 build/exports/Galapagos demo.dxw create mode 100644 build/exports/Ground Control (sw renderer).dxw create mode 100644 build/exports/HyperBlade.dxw create mode 100644 build/exports/Inquisition.dxw create mode 100644 build/exports/Largo Winch.dxw create mode 100644 build/exports/Loonyland 2 CE.dxw create mode 100644 build/exports/Marbles.dxw create mode 100644 build/exports/Microsoft Motocross Madness 2 trial.dxw create mode 100644 build/exports/Paradise Cracked.dxw create mode 100644 build/exports/Post Mortem (CD version).dxw create mode 100644 build/exports/Prince of Persia The Two Thrones (GOG).dxw create mode 100644 build/exports/Prisoner of War.dxw create mode 100644 build/exports/Spike the Hedgehog.dxw create mode 100644 build/exports/Warlords Battlecry 2.dxw delete mode 100644 build/exports/dxwnd.ini delete mode 100644 build/exports/dxwnd.log delete mode 100644 build/exports/dxwnd.reg create mode 100644 host/dxwndhostDoc.cpp 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 515de0aab6d56d9d27002d587da250fce3f53b07..d169ec03116c7025f5ffeed4821415d32628af8f 100644 GIT binary patch delta 20425 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 delta 3420 zcmdT{e@xrQ6~A{j#wK8a=NQjn%(!04GLjfD8Lb*-lPqfjB<_zTS)d&>P}<-ccV%rw zXaXzSDqVpNZ3g-CKqkP20EmR(Ke8`Y(( zt;Vlnth(D&dRrTW62Jpo!DKJq16W+k8l`Bj0G0t?1ImEqfbLVTn)>OmTAjTm>wc|L z2eRAqpZM;L$;IZw(X*##7DM&8s=OtQjS8mB`ns8 zTSb#toA^dyKdBSOa??#PmP?7t&UIvgsGnj|A$vXbC`;kZ`0cx|N(b-h=n*|)CoK5H zH$}M!iYl>2tU^+2MJ420Ao2I3Pv3P^yoOCH~bjh3E=0top^KWO3BkP>Ewu%b`@T~KQY-Dpu9E_5j7%DVADXd zhV_++z&#&~6bvG@F+dyItKW%RF20>hC%J$qK_4bh68)lv|2{)yI!$)Ia|czhZ>Mze z8xxezMM3f^YoWJETXl)MM5p+^_@3A<+JsxI6Ay|oq(^k;g6D?DwPNCh7Z zvt;9a?_&7qL5gtvA#(7&2g#`?ZdRK=a?lsKZ-VN$DM)tmX!BLc_g&6Z?2Vfvg={mWHX5nmR~)uz4#>MnzExJ3bl#*W~fSg z;N<2}Y30zEG{ZT)B4b4dhtHCOEF3%scZQCTi9;L6%Hc!OuY8aAD2wknjM#n8lAo3{ zbyB5@*E)IN4QZod{!EABiOlC({< zrt3O+^$`7kjj5R7LUX!JRCK1SDd^@TYZ## z?I=~RVBerD<(>g#&NV=n^lHfPG%e$2LRe#J4`v%S(1teMhA1hatW3YW6KZm88jvNKIT8r-3p$81NY&kBae4NkpfuQ3DqZ%eRk{i{F8mau0ingQF{-ikn(hfY@ds#>8#$6uL$V|d~N)Ha8n=BxNNMOKab6?^z*wL zWl2*bzMlpdds==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 433abc9a832a392760986a1d73bfdda9e2e89315..b27abee1b08033e0c447e1305d62dbe30fcc6231 100644 GIT binary patch delta 6745 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 delta 31163 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

*fC-(< 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 Yzk?5E5qJ1~@S((P{H5lJYn|r*4=1(S2><{9 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 fe5d6a67de82fd44b4d827e367960ab531db2925..816ebd14ceafd9f32ebbeac0a6ca09c15460e397 100644 GIT binary patch delta 60 zcmV-C0K@<6$qBy839y2Qld#t$3uOR!07L+F0BrzplM#m>1xNrz09ccufnAf3hX#}G Sg&dPWe<*{hh_|YU0Yco?G#C~D delta 22 ecmdmYn)A&`&J9f+lO5_cnrk|@*K{&E-2niE1q$c@ diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index e26165634250905c2d9ffc12d67dbdc943f59ee0..f2e7f5720a7a76eb0571c478616e80a3c3029da0 100644 GIT binary patch delta 7835 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 delta 2822 zcmbtWe{9rM65n~VyWRe9yWQKuww7hLlu{e$e!DFk)&k!`v3t2B4H zKkp@P_xpV_?>jS}&%BuzIglMm+DEsV?cu$Srw*lXIl(kOCbs6Qd%N~^Pnl)=9t6DAc2m7s-JTRHk=XOC< zc4u!$>CR*iu1II$0-i3`Kl#T>=eM)pTm^oAli%OtX^j6||9~U>0^{#Eot010mJq}i|@y5(KtMRURPXO$em*&^O0(s0`Ae-IyQH~Gm<&axTV}r(^ zgR^j>+?}^Vj`}m=iM%5yiaX;w7rdWMx3yx0-Q;hrYO3wItE087b@ScwF>MVsr;CO1 zIe)S2%S)FzW!rJb=B+YPmdM;5ZrTypq*ZPz|2Z}La3O{K;E_-Jmm>?}3BR6|_MD3rT@ineCC;Ycb-f$nPz$YdHx^d zx%a2{S^4YOKg@a zqB2A^tORR^oN^c8{m3+%nyZz zD;}jk0GrIrkAo4nrEA)zmd#zwO>LCe2D*GPZ^1QDrnd4Y(e{Uw-T~8soV^gB(6BI5 z=w+NIgFh6+I>Ah%-DoF!FWgO$+u49;2b`NP@4VzxJA2_tAl=Z3v zgDI42e<+})Hn7vcAhbi9Jod(B3Vy>MpWF)?jhu!I>dWOH{Uj8_gLG^U_-XPXaLMWM zMp;|zQQjydE%HvUi#EOhuaLGuO^oPpQ``w;k*D5BACp@5QA z!luHfp${ln3i&GkEBF#BHcm zU=3u*NFm$#8j?VXhef_xI}7iC3|}c3n+E+lV#lthXRk0OfABA1nymCst8mE3Fl)NS zmvC4ltTH&AXTG0LlT0jI1Z`AvpID>xG?6P(8Ao4-gbVIdk#rHU)46@3jOra&sCx3n zZlvUG=$45Sg{rDjyw42jP(+?Rd~hmt(4tc!pjtg*D3|(HU>WS9RU^=?s&5ocFwnq$ zuMkO)$1j%Agz?4mRl*GvaSMmy?A|S+8<82V7E|-7>nWKHHVU2->t$p$d-%3U zx@pfgxIx~vY`&2{Ba~bOUU~eNrRw-OaTn{0V76Ss~PVjIM4y!1&8mXXKF#pdiHY^MWEuI#v2kV;;1 zF2~#iJ;GX z=%a`ae4a*&?WmWSFN)0Y2|S~)s%BhcKkDB7!|u*n0{(FCflkCv!Qcj@z!fg zsdw&0{fA(=fv`PR%8p!^W%{Qp&=Jk$2W>M3RO1TV0d(#aOcB93Uxq_SyG}8g8*Xxq z>39O7mH2jl*sIP~Vi8cwBJ5CAH{$?A7b2&^N=&Ay6TiSP(1C77Uh4#_)Mg5d%1E8{ zSS%x#b)~OG!RO`j>J-uxZs)C&>rfLk*=QtPJ#x~GTrb?p-G%3Yem4wdR2F5j8oF_d z)Gpen<5nC<-(u=9J#2cw)Ipn^e8sSLged7nFFjRIT@}pxLab1?p zBp6)gL0;XqocKOdoGQ`k)mCiGrd`9}lzjoaIugSqjP1bjG_IA`EQu>`2^Zc$1zgZLNY8k2c~dsf&W(PUEe3O>MSyda86UxscP-3v|%PT=~nXE9+> z3HB6J$J^6VR~YVh w#!BYjShM8ElOP}aZn4F;ewa-3#XW*c)iN#ujHlP=)%kQ`h>!jB8|Z+419F|MVE_OC 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 1b226ba205d6d0a0517af89324d36cf78807fa02..46b86c064fb7e1d2893026364391095daa5e96c2 100644 GIT binary patch delta 39 xcmV+?0NDS!z5|xO1F&ANlZs3V1xNrz09cc6rY({N29x9#8k3O22D4