diff --git a/Include/dxwnd.h b/Include/dxwnd.h
index eb164e8..aa31275 100644
--- a/Include/dxwnd.h
+++ b/Include/dxwnd.h
@@ -228,6 +228,7 @@
#define INIT24BPP 0x00000400 // simulate a 24BPP initial desktop setting (in GetDeviceCaps API)
#define INIT32BPP 0x00000800 // simulate a 24BPP initial desktop setting (in GetDeviceCaps API)
#define FIXGLOBALUNLOCK 0x00001000 // Fix GlobalUnlock kernel32 API when it keeps returning the 1 retcode.
+#define SHOWHINTS 0x00002000 // show configuration hints at runtime
// eighth flags DWORD dxw.dwFlags8:
@@ -316,6 +317,7 @@ void GetDllVersion(char *);
int GetHookStatus(DXWNDSTATUS *);
DXWNDSTATUS *GetHookInfo();
void HookInit(TARGETMAP *, HWND);
+void ShowHint(int);
char *GetDxWndPath();
void *SetHook(void *, void *);
diff --git a/Release/-dxwnd (2).dll b/Release/-dxwnd (2).dll
new file mode 100644
index 0000000..23c112e
--- /dev/null
+++ b/Release/-dxwnd (2).dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:906d0c1b5bea989f124e1f3e1571d22d7fdfbd68c0f04b585b5241378e5e3f6e
+size 662016
diff --git a/Release/-dxwnd (3).dll b/Release/-dxwnd (3).dll
new file mode 100644
index 0000000..2078c22
--- /dev/null
+++ b/Release/-dxwnd (3).dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:759a3c86aff2e48a44fdfed7dac046ead2235e8a0c23326c0827674cd23a3110
+size 662016
diff --git a/Release/-dxwnd.dll b/Release/-dxwnd.dll
new file mode 100644
index 0000000..3de31fb
--- /dev/null
+++ b/Release/-dxwnd.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9f2fed41c7a75fae85f371ce9cd76bbf7ffa14f6f53178ed6ef52eef8d3ce0d4
+size 662016
diff --git a/Release/.gitattributes b/Release/.gitattributes
new file mode 100644
index 0000000..b110a24
--- /dev/null
+++ b/Release/.gitattributes
@@ -0,0 +1 @@
+*.{dll,exe} filter=lfs diff=lfs merge=lfs -text
\ No newline at end of file
diff --git a/Release/Disasm.dll b/Release/Disasm.dll
new file mode 100644
index 0000000..b9c3542
--- /dev/null
+++ b/Release/Disasm.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f413a207787da88281500aaeae07fb98d7d438ecb4d67f8fcdf0aff2f988717f
+size 138752
diff --git a/Release/dxwnd-sc.ini b/Release/dxwnd-sc.ini
new file mode 100644
index 0000000..2f10b5a
--- /dev/null
+++ b/Release/dxwnd-sc.ini
@@ -0,0 +1,67 @@
+[window]
+posx=172
+posy=164
+sizx=320
+sizy=200
+exepath=D:\Games\Starcraft\ exportpath=\EDMAINPC\installstuff-archive\ [target]
+title0=Starcraft
+path0=D:\Games\Starcraft\StarCraft.exe
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+coord0=2
+flag0=404750386
+flagg0=134217728
+flagh0=20
+flagi0=142802948
+flagj0=268440577
+flagk0=1114144
+flagl0=0
+flagm0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=1920
+sizy0=1080
+maxfps0=0
+initts0=-6
+winver0=0
+maxres0=-1
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
+[target]
+title0=Starcraft
+path0=D:\Games\Starcraft\StarCraft.exe
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+coord0=2
+flag0=136315042
+flagg0=1207959568
+flagh0=20
+flagi0=142606340
+flagj0=5248
+flagk0=65536
+flagl0=0
+flagm0=0
+tflag0=0
+dflag0=0
+posx0=50
+posy0=50
+sizx0=1920
+sizy0=1080
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=-1
+swapeffect0=0
+maxddinterface0=7
+slowratio0=2
diff --git a/Release/dxwnd.ini b/Release/dxwnd.ini
new file mode 100644
index 0000000..f8811df
--- /dev/null
+++ b/Release/dxwnd.ini
@@ -0,0 +1,698 @@
+[target]
+title0=3D Ultra Radio Control Racers
+path0=D:\Games\3D Ultra Radio Control Racers\rcracers.exe
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+coord0=0
+flag0=681574434
+flagg0=1209008128
+flagh0=20
+flagi0=138412036
+flagj0=4224
+flagk0=65536
+flagl0=0
+flagm0=0
+tflag0=-2147477245
+dflag0=0
+posx0=450
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=800
+initts0=-9
+winver0=0
+maxres0=0
+swapeffect0=4
+maxddinterface0=7
+slowratio0=2
+title1=Imperialism II
+path1=D:\Games\Imperialism_2\imperialism II.exe
+launchpath1=
+module1=
+opengllib1=
+notes1=
+registry1=
+ver1=0
+coord1=0
+flag1=679485474
+flagg1=1210073088
+flagh1=32788
+flagi1=4194308
+flagj1=0
+flagk1=32768
+flagl1=8192
+flagm1=0
+tflag1=0
+dflag1=0
+posx1=50
+posy1=50
+sizx1=800
+sizy1=600
+maxfps1=50
+initts1=-9
+winver1=0
+maxres1=0
+swapeffect1=0
+maxddinterface1=7
+slowratio1=1
+title2=Imperialism
+path2=D:\Games\Imperialism\Imperialism.exe
+launchpath2=
+module2=
+opengllib2=
+notes2=
+registry2=
+ver2=0
+coord2=0
+flag2=1744839201
+flagg2=137363456
+flagh2=20
+flagi2=4198404
+flagj2=1024
+flagk2=0
+flagl2=0
+flagm2=0
+tflag2=-2147477181
+dflag2=0
+posx2=50
+posy2=50
+sizx2=800
+sizy2=600
+maxfps2=0
+initts2=0
+winver2=0
+maxres2=3
+swapeffect2=3
+maxddinterface2=7
+slowratio2=1
+title3=Microsoft Pandora's Box
+path3=D:\Games\Microsoft Pandora's Box\pandora.exe
+launchpath3=
+module3=
+opengllib3=
+notes3=
+registry3=; Pandora's Box\n\n[HKEY_CURRENT_USER\Software]\n[HKEY_CURRENT_USER\Software\Microsoft]\n[HKEY_CURRENT_USER\Software\Microsoft\Microsoft Games\Pandora's Box]\n[HKEY_CURRENT_USER\Software\Microsoft\Microsoft Games\Pandora's Box\1.0]\n"Music"=hex:31\n"PlayerName"="Gho"\n"Sound"=hex:31\n"Timer"=hex:31\n
+ver3=0
+coord3=0
+flag3=673185827
+flagg3=1209008128
+flagh3=20
+flagi3=138420228
+flagj3=128
+flagk3=0
+flagl3=0
+flagm3=0
+tflag3=0
+dflag3=0
+posx3=50
+posy3=50
+sizx3=800
+sizy3=600
+maxfps3=0
+initts3=0
+winver3=0
+maxres3=-1
+swapeffect3=0
+maxddinterface3=7
+slowratio3=1
+title4=GOLFDEMO.EXE
+path4=D:\Games\MSGolf98\MSGOLF98\GAME.EXE
+launchpath4=
+module4=
+opengllib4=
+notes4=
+registry4=
+ver4=0
+coord4=0
+flag4=136314914
+flagg4=1207959552
+flagh4=20
+flagi4=138412036
+flagj4=4224
+flagk4=327680
+flagl4=0
+flagm4=0
+tflag4=0
+dflag4=0
+posx4=0
+posy4=0
+sizx4=800
+sizy4=600
+maxfps4=0
+initts4=0
+winver4=72
+maxres4=-1
+swapeffect4=0
+maxddinterface4=7
+slowratio4=2
+title5=GAME.EXE
+path5=D:\Games\msgolf99\GAME.EXE
+launchpath5=
+module5=
+opengllib5=
+notes5=
+registry5=
+ver5=0
+coord5=0
+flag5=136314914
+flagg5=1207959552
+flagh5=20
+flagi5=138412036
+flagj5=4224
+flagk5=327680
+flagl5=0
+flagm5=0
+tflag5=0
+dflag5=0
+posx5=0
+posy5=0
+sizx5=800
+sizy5=600
+maxfps5=0
+initts5=0
+winver5=72
+maxres5=-1
+swapeffect5=0
+maxddinterface5=7
+slowratio5=2
+title6=Mortal Kombat 4
+path6=D:\Games\Mortal Kombat 4\Mortal Kombat 4.exe
+launchpath6=
+module6=
+opengllib6=
+notes6=
+registry6=
+ver6=0
+coord6=0
+flag6=136314914
+flagg6=1207959552
+flagh6=20
+flagi6=138412036
+flagj6=4224
+flagk6=65536
+flagl6=8192
+flagm6=0
+tflag6=0
+dflag6=0
+posx6=0
+posy6=0
+sizx6=800
+sizy6=600
+maxfps6=0
+initts6=0
+winver6=0
+maxres6=-1
+swapeffect6=0
+maxddinterface6=7
+slowratio6=2
+title7=empires.exe
+path7=D:\Games\Age of Empires Trial\empires.exe
+launchpath7=
+module7=
+opengllib7=
+notes7=
+registry7=
+ver7=0
+coord7=0
+flag7=136314914
+flagg7=1210073088
+flagh7=20
+flagi7=138412036
+flagj7=4224
+flagk7=327680
+flagl7=0
+flagm7=0
+tflag7=0
+dflag7=0
+posx7=0
+posy7=0
+sizx7=800
+sizy7=600
+maxfps7=50
+initts7=42
+winver7=0
+maxres7=-1
+swapeffect7=0
+maxddinterface7=7
+slowratio7=2
+title8=Need for Speed High Stakes demo
+path8=D:\Games\Need for Speed High Stakes demo\nfshsd.exe
+launchpath8=
+module8=
+opengllib8=
+notes8=
+registry8=ܙ+
+ver8=0
+coord8=0
+flag8=136314914
+flagg8=1212153856
+flagh8=20
+flagi8=138412036
+flagj8=4224
+flagk8=65536
+flagl8=0
+flagm8=0
+tflag8=-2147477245
+dflag8=0
+posx8=50
+posy8=50
+sizx8=800
+sizy8=600
+maxfps8=0
+initts8=0
+winver8=0
+maxres8=-1
+swapeffect8=0
+maxddinterface8=7
+slowratio8=2
+title9=Need for Speed High Stakes demo
+path9=C:\nfsdemo\nfshsd.exe
+launchpath9=C:\nfsdemo\nfshsd.exe -patchrestart
+module9=d3da
+opengllib9=
+notes9=
+registry9=
+ver9=0
+coord9=0
+flag9=203423842
+flagg9=1749024768
+flagh9=1044
+flagi9=1212153860
+flagj9=4224
+flagk9=327680
+flagl9=0
+flagm9=0
+tflag9=-2147476733
+dflag9=0
+posx9=50
+posy9=50
+sizx9=800
+sizy9=600
+maxfps9=0
+initts9=0
+winver9=0
+maxres9=-1
+swapeffect9=0
+maxddinterface9=7
+slowratio9=2
+title10=Need 4 Speed IV High Stakes
+path10=D:\Games\Need 4 Speed IV High Stakes\nfshs.exe
+launchpath10=D:\Games\Need 4 Speed IV High Stakes\nfshs.exe -PatchRestart
+module10=
+opengllib10=
+notes10=
+registry10=[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Need For Speed High Stakes]\n"Version"="4.00"\n"InstallPath"=".\\"\n"3D Device Description"="Software Renderer"\n"3D Card"="[Direct 3D]"\n"Thrash Driver"="d3d"\n"Group"="D3D"\n"D3D Device"=dword:00000000\n"Triple Buffer"=dword:00000000\n"Hardware Acceleration"=dword:00000001\n"Thrash Resolution"="1600x1200"\n\n[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Need For Speed High Stakes]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Need For Speed High Stakes\1.0]\n"Language"=dword:00000001\n"Variant"=dword:00000000\n"Night"=dword:00000000\n"InstLev"=dword:00000002\n"SrcDrive"=".\\"\n
+ver10=0
+coord10=0
+flag10=136314914
+flagg10=1476395008
+flagh10=1044
+flagi10=1212153860
+flagj10=4224
+flagk10=65536
+flagl10=8192
+flagm10=0
+tflag10=-2147483135
+dflag10=0
+posx10=50
+posy10=50
+sizx10=800
+sizy10=600
+maxfps10=0
+initts10=0
+winver10=0
+maxres10=-1
+swapeffect10=0
+maxddinterface10=7
+slowratio10=2
+title11=Chicago 1930
+path11=D:\Games\Chicago.1930\Chicago 1930\Chicago 1930.exe
+launchpath11=
+module11=
+opengllib11=
+notes11=
+registry11=
+ver11=0
+coord11=0
+flag11=134234150
+flagg11=1207959552
+flagh11=20
+flagi11=4325380
+flagj11=128
+flagk11=65536
+flagl11=0
+flagm11=0
+tflag11=0
+dflag11=0
+posx11=50
+posy11=50
+sizx11=800
+sizy11=600
+maxfps11=0
+initts11=0
+winver11=0
+maxres11=-1
+swapeffect11=0
+maxddinterface11=7
+slowratio11=1
+title12=T-Zwei demo
+path12=D:\Games\T-Zwei\TZwei.exe
+launchpath12=
+module12=
+opengllib12=
+notes12=
+registry12=
+ver12=0
+coord12=0
+flag12=136314914
+flagg12=1744830464
+flagh12=20
+flagi12=138412036
+flagj12=4224
+flagk12=65536
+flagl12=0
+flagm12=0
+tflag12=-2147477245
+dflag12=0
+posx12=50
+posy12=50
+sizx12=800
+sizy12=600
+maxfps12=0
+initts12=0
+winver12=0
+maxres12=-1
+swapeffect12=0
+maxddinterface12=7
+slowratio12=2
+title13=Warhammer 40K Rites of War
+path13=D:\Games\Warhammer 40.000 Rites of War\RoW.exe
+launchpath13=
+module13=
+opengllib13=
+notes13=After installing the game copy the "Map" -folder from the CD to the \nRites of War\ directory on your hard drive.\n\nThis will fix the issue where the game crashes when starting a campaign.
+registry13=
+ver13=0
+coord13=0
+flag13=685772838
+flagg13=1207959680
+flagh13=4
+flagi13=138412036
+flagj13=4224
+flagk13=327680
+flagl13=0
+flagm13=0
+tflag13=-2147477245
+dflag13=0
+posx13=50
+posy13=50
+sizx13=0
+sizy13=0
+maxfps13=0
+initts13=0
+winver13=0
+maxres13=-1
+swapeffect13=0
+maxddinterface13=7
+slowratio13=2
+title14=Dylan Dog Horror at Luna Park
+path14=D:\Games\DylanDog\hlp.exe
+launchpath14=
+module14=
+opengllib14=
+notes14=
+registry14=
+ver14=0
+coord14=0
+flag14=136314914
+flagg14=1745879040
+flagh14=1048596
+flagi14=138412038
+flagj14=5248
+flagk14=65538
+flagl14=0
+flagm14=0
+tflag14=-2147477245
+dflag14=0
+posx14=50
+posy14=50
+sizx14=800
+sizy14=600
+maxfps14=0
+initts14=0
+winver14=0
+maxres14=-1
+swapeffect14=0
+maxddinterface14=7
+slowratio14=1
+title15=Tungusskiy Meteorit
+path15=D:\Games\Tungusskiy Meteorit\Tungusskiy Meteorit.exe
+launchpath15=
+module15=
+opengllib15=
+notes15=
+registry15=
+ver15=0
+coord15=0
+flag15=681574434
+flagg15=1207959552
+flagh15=20
+flagi15=138412036
+flagj15=4224
+flagk15=65536
+flagl15=0
+flagm15=0
+tflag15=0
+dflag15=0
+posx15=50
+posy15=50
+sizx15=800
+sizy15=600
+maxfps15=0
+initts15=0
+winver15=0
+maxres15=-1
+swapeffect15=0
+maxddinterface15=7
+slowratio15=2
+title16=Robocop 2D 2
+path16=D:\Games\Robocop2D2\Robocop2D2.exe
+launchpath16=
+module16=
+opengllib16=
+notes16=It seems necessary to click on the small white client area in the tiny window \nin the upper left corner of the desktop to bring everything to normality!
+registry16=
+ver16=0
+coord16=0
+flag16=136314914
+flagg16=1207959552
+flagh16=20
+flagi16=138412036
+flagj16=4224
+flagk16=65536
+flagl16=0
+flagm16=0
+tflag16=0
+dflag16=0
+posx16=50
+posy16=50
+sizx16=800
+sizy16=600
+maxfps16=0
+initts16=0
+winver16=0
+maxres16=-1
+swapeffect16=0
+maxddinterface16=7
+slowratio16=2
+title17=Robocop 2D
+path17=D:\Games\Robocop2Dv1_2\Robocop2Dv1_2.exe
+launchpath17=
+module17=
+opengllib17=
+notes17=It seems necessary to click on the small white client area in the tiny window \nin the upper left corner of the desktop to bring everything to normality!
+registry17=
+ver17=0
+coord17=0
+flag17=136314914
+flagg17=1207959552
+flagh17=65556
+flagi17=138412036
+flagj17=4224
+flagk17=65536
+flagl17=0
+flagm17=0
+tflag17=-2147477245
+dflag17=0
+posx17=50
+posy17=50
+sizx17=800
+sizy17=600
+maxfps17=0
+initts17=0
+winver17=0
+maxres17=-1
+swapeffect17=0
+maxddinterface17=7
+slowratio17=2
+title18=Portugal 1111
+path18=D:\Games\Portugal 1111\Port1111.exe
+launchpath18=
+module18=
+opengllib18=
+notes18=
+registry18=
+ver18=7
+coord18=0
+flag18=136331314
+flagg18=1207961600
+flagh18=20
+flagi18=-2009071612
+flagj18=4224
+flagk18=65536
+flagl18=0
+flagm18=0
+tflag18=6402
+dflag18=0
+posx18=50
+posy18=50
+sizx18=800
+sizy18=600
+maxfps18=0
+initts18=0
+winver18=0
+maxres18=-1
+swapeffect18=0
+maxddinterface18=7
+slowratio18=2
+title19=Motocross Madness
+path19=D:\Games\motocross madness\mcm.exe
+launchpath19=
+module19=
+opengllib19=
+notes19=
+registry19=
+ver19=0
+coord19=0
+flag19=169885728
+flagg19=134219776
+flagh19=20
+flagi19=2097156
+flagj19=0
+flagk19=0
+flagl19=0
+flagm19=0
+tflag19=6415
+dflag19=0
+posx19=50
+posy19=50
+sizx19=800
+sizy19=600
+maxfps19=0
+initts19=0
+winver19=0
+maxres19=-1
+swapeffect19=0
+maxddinterface19=7
+slowratio19=1
+title20=Motocross Madness (RIP)
+path20=D:\Games\Motocross_Madness\mcm.exe
+launchpath20=
+module20=
+opengllib20=
+notes20=
+registry20=[HKEY_LOCAL_MACHINE\Software\Microsoft]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness]\n"1.0"=".\\"\n\n[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0]\n"InstalledFrom"=".\\"\n"HardDriveRootPath"=".\\"\n"InstallType"="Full"\n"version"="1.0"\n"Launched"="1"\n"PID"="87799-442-0210567-79960"\n"Path"=".\\"\n"VersionType"="RetailVersion"\n"InstalledGroup"="15"\n"LangID"=dword:00000009\n"OmitDriverCheck"=dword:00000000\n"LocalDriverInfo"=hex:4e,56,33,44,44,33,32,2e,44,4c,4c,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 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,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 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,\\n 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,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 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,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 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,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 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,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08\n\n[HKEY_LOCAL_MACHINE\Software\Microsoft]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0\DriverInfo]\n\n[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0\DriverInfo\{00000000-0000-0000-0000-000000000000}]\n"Driver"="NV3DD32.DLL"\n"Version"="4.10.0.1713"\n"Description"="Diamond Viper V330 (Nvidia Riva 128)"\n"DeviceID"="PCI\\VEN_12D2&DEV_0018&SUBSYS_10921092&REV_10\\000800"\n"NumberOfModes"=dword:00000025\n"Modes"=hex:40,01,00,00,c8,00,00,00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00\n"TextureSizes"=hex:00,00,02,00,aa,aa,02,00,00,80,00,00,aa,aa,00,00,00,20,00,00,\\n 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,\\n 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00\n\n[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0\DriverInfo\{3A0CFD01-9320-11CF-ACA1-00A02413C2E2}]\n"Driver"="mm3dfx32.dll"\n"Version"="4.10.0.1598"\n"Description"="3Dfx Voodoo"\n"DeviceID"="PCI\\VEN_121A&DEV_0001&SUBSYS_00000000&REV_02\\BUS_00&DEV_0E&FUNC_00"\n"NumberOfModes"=dword:00000004\n"Modes"=hex:00,02,00,00,80,01,00,00,10,00,00,00,00,00,00,00,01,00,00,00,01,00,\\n 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,\\n 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,\\n 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,\\n 00,00,00,01,00,00,00,00,00,00,00,00,00,40,00\n"TextureSizes"=hex:00,00,02,00,33,ab,02,00,00,80,00,00,33,ab,00,00,00,20,00,00,\\n 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,\\n 59,00,00,00,14,00,00,55,19,00,00,00,08,00,00,55,09,00,00\n\n
+ver20=0
+coord20=0
+flag20=136314882
+flagg20=1207959552
+flagh20=1044
+flagi20=1212153860
+flagj20=4224
+flagk20=65536
+flagl20=0
+flagm20=0
+tflag20=0
+dflag20=0
+posx20=50
+posy20=50
+sizx20=800
+sizy20=600
+maxfps20=0
+initts20=0
+winver20=0
+maxres20=-1
+swapeffect20=0
+maxddinterface20=7
+slowratio20=2
+title21=System Shock 2
+path21=D:\Games\System Shock 2\SHOCK2.EXE
+launchpath21=
+module21=
+opengllib21=
+notes21=
+registry21=
+ver21=0
+coord21=0
+flag21=136314978
+flagg21=2046820352
+flagh21=133652
+flagi21=-2011168764
+flagj21=4736
+flagk21=65536
+flagl21=8192
+flagm21=0
+tflag21=-2147477245
+dflag21=0
+posx21=50
+posy21=50
+sizx21=800
+sizy21=600
+maxfps21=0
+initts21=0
+winver21=0
+maxres21=-1
+swapeffect21=0
+maxddinterface21=7
+slowratio21=2
+title22=Uru
+path22=D:\Games\uru\Uru.exe
+launchpath22=
+module22=
+opengllib22=
+notes22=
+registry22=
+ver22=0
+coord22=0
+flag22=136314914
+flagg22=1207959552
+flagh22=20
+flagi22=134217732
+flagj22=4224
+flagk22=65536
+flagl22=0
+flagm22=0
+tflag22=0
+dflag22=0
+posx22=50
+posy22=50
+sizx22=800
+sizy22=600
+maxfps22=0
+initts22=0
+winver22=0
+maxres22=-1
+swapeffect22=0
+maxddinterface22=7
+slowratio22=2
+[window]
+posx=1051
+posy=225
+sizx=320
+sizy=253
+exportpath=D:\DxWnd\exports.ok\
+exepath=D:\Games\motocross madness\
diff --git a/Release/dxwnd.reg b/Release/dxwnd.reg
new file mode 100644
index 0000000..ac2590a
--- /dev/null
+++ b/Release/dxwnd.reg
@@ -0,0 +1,238 @@
+[HKEY_LOCAL_MACHINE\Software\Microsoft]
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games]
+[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]
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games]
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness]
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0]
+[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/Release/filter.dll b/Release/filter.dll
new file mode 100644
index 0000000..41f9d5a
--- /dev/null
+++ b/Release/filter.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d364d53ff922e8381c306d23d51c3a93a0512325824e5e0513c424e9372f9b4c
+size 13312
diff --git a/Release/vcomp90.dll b/Release/vcomp90.dll
new file mode 100644
index 0000000..71b9a14
--- /dev/null
+++ b/Release/vcomp90.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9140efe26252b6329da254201219fc2d17a3f651e1591e32ae04c86a27e35bb2
+size 51024
diff --git a/build/dxwnd.dll b/build/dxwnd.dll
index 1220791..3dadef2 100644
--- a/build/dxwnd.dll
+++ b/build/dxwnd.dll
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e285a1e111688d9564456ef3cba3955cbf10fd56e711280c3da2c5028c4b734e
-size 660480
+oid sha256:a11147cad06a6c6591536e555612315193dd8fcaecb0477ac76c8eb73042c52c
+size 664576
diff --git a/build/dxwnd.exe b/build/dxwnd.exe
index c993d91..0444afe 100644
--- a/build/dxwnd.exe
+++ b/build/dxwnd.exe
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:45173c58df52cbfe63834fb949adf1dc91809a0fce0acdad63069e1c7a20d71a
-size 642560
+oid sha256:49268359617f435f5ecf49d8bd37d95d15779ad9aa9a2035b1b33089c0f2c170
+size 644096
diff --git a/build/exports/dxwnd.reg b/build/exports/dxwnd.reg
index 0bf1cd1..a1f8fd2 100644
--- a/build/exports/dxwnd.reg
+++ b/build/exports/dxwnd.reg
@@ -1,19 +1,238 @@
+[HKEY_LOCAL_MACHINE\Software\Microsoft]
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games]
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness]
+"1.0"=".\\"
-[HKEY_LOCAL_MACHINE\Software]
-[HKEY_LOCAL_MACHINE\Software\MicroProse]
-[HKEY_LOCAL_MACHINE\Software\MicroProse\MechWarrior 3 EP1]
-[HKEY_LOCAL_MACHINE\Software\MicroProse\MechWarrior 3 EP1\1.0]
-"Program"="..\\"
-"Version"="1.0"
-"InstallOptions"=dword:00050707
+[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]
-[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay]
-[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay\Applications]
-[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay\Applications\MechWarrior 3 EP1]
-"Guid"="{FA96C421-18DD-11D3-95AF-0060089877F0}"
-"File"="Mech3.exe"
-"CommandLine"="
-"Path"=".\\"
-"CurrentDirectory"=".\\"
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games]
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness]
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0]
+[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 f595b46..cc388c3 100644
--- a/build/readme-relnotes.txt
+++ b/build/readme-relnotes.txt
@@ -1168,4 +1168,11 @@ fix: workaround for occasional DDERR_INVALIDPARAMS error in service GetDisplayMo
fix: code cleanup: eliminated CREATEDESKTOP handling, experimental and no longer supported
fix: vdxcore::IsToRemap now detects the NULL dc handle as remappable DC
fix: some logging imperfections
-fix: palette log message crashing the program
\ No newline at end of file
+fix: palette log message crashing the program
+
+v2.03.77
+fix: SetCooperativeLevel with 0 HDC should not alter fullscreen status (fixes Portugal 1111 scrolling problem)
+add: preliminary "Show hints" flag and feature
+GUI: multi-line tab control
+GUI: clicking on notes and registry icons the GUI goes straight to the relative tab pages.
+GUI: The DirectX tab is now splitted in two, so that there no longer are DirectX switches into the Direct3D tab.
diff --git a/dll/Release/BuildLog.htm b/dll/Release/BuildLog.htm
new file mode 100644
index 0000000..1f3d410
Binary files /dev/null and b/dll/Release/BuildLog.htm differ
diff --git a/dll/Release/Inject.obj b/dll/Release/Inject.obj
new file mode 100644
index 0000000..cbd6005
Binary files /dev/null and b/dll/Release/Inject.obj differ
diff --git a/dll/Release/advapi.obj b/dll/Release/advapi.obj
new file mode 100644
index 0000000..7969ede
Binary files /dev/null and b/dll/Release/advapi.obj differ
diff --git a/dll/Release/avifile.obj b/dll/Release/avifile.obj
new file mode 100644
index 0000000..dcf9063
Binary files /dev/null and b/dll/Release/avifile.obj differ
diff --git a/dll/Release/comctl32.obj b/dll/Release/comctl32.obj
new file mode 100644
index 0000000..d7757a0
Binary files /dev/null and b/dll/Release/comctl32.obj differ
diff --git a/dll/Release/comdlg32.obj b/dll/Release/comdlg32.obj
new file mode 100644
index 0000000..f62708f
Binary files /dev/null and b/dll/Release/comdlg32.obj differ
diff --git a/dll/Release/cpulimit.obj b/dll/Release/cpulimit.obj
new file mode 100644
index 0000000..fdfbbda
Binary files /dev/null and b/dll/Release/cpulimit.obj differ
diff --git a/dll/Release/d3dtexture.obj b/dll/Release/d3dtexture.obj
new file mode 100644
index 0000000..a710d3b
Binary files /dev/null and b/dll/Release/d3dtexture.obj differ
diff --git a/dll/Release/ddblit.obj b/dll/Release/ddblit.obj
new file mode 100644
index 0000000..049b9eb
Binary files /dev/null and b/dll/Release/ddblit.obj differ
diff --git a/dll/Release/ddraw.obj b/dll/Release/ddraw.obj
new file mode 100644
index 0000000..c9f056b
Binary files /dev/null and b/dll/Release/ddraw.obj differ
diff --git a/dll/Release/ddrawex.obj b/dll/Release/ddrawex.obj
new file mode 100644
index 0000000..116b1eb
Binary files /dev/null and b/dll/Release/ddrawex.obj differ
diff --git a/dll/Release/ddshot.obj b/dll/Release/ddshot.obj
new file mode 100644
index 0000000..fa724ee
Binary files /dev/null and b/dll/Release/ddshot.obj differ
diff --git a/dll/Release/ddtexture.obj b/dll/Release/ddtexture.obj
new file mode 100644
index 0000000..98d0ea9
Binary files /dev/null and b/dll/Release/ddtexture.obj differ
diff --git a/dll/Release/dinput.obj b/dll/Release/dinput.obj
new file mode 100644
index 0000000..14aab0d
Binary files /dev/null and b/dll/Release/dinput.obj differ
diff --git a/dll/Release/dsound.obj b/dll/Release/dsound.obj
new file mode 100644
index 0000000..85a83e4
Binary files /dev/null and b/dll/Release/dsound.obj differ
diff --git a/dll/Release/dwhide.obj b/dll/Release/dwhide.obj
new file mode 100644
index 0000000..c371a6c
Binary files /dev/null and b/dll/Release/dwhide.obj differ
diff --git a/dll/Release/dxdiaghook.obj b/dll/Release/dxdiaghook.obj
new file mode 100644
index 0000000..6561c8a
Binary files /dev/null and b/dll/Release/dxdiaghook.obj differ
diff --git a/dll/Release/dxemublt.obj b/dll/Release/dxemublt.obj
new file mode 100644
index 0000000..73a396c
Binary files /dev/null and b/dll/Release/dxemublt.obj differ
diff --git a/dll/Release/dxhelper.obj b/dll/Release/dxhelper.obj
new file mode 100644
index 0000000..370683f
Binary files /dev/null and b/dll/Release/dxhelper.obj differ
diff --git a/dll/Release/dxhook.obj b/dll/Release/dxhook.obj
new file mode 100644
index 0000000..32fccb2
Binary files /dev/null and b/dll/Release/dxhook.obj differ
diff --git a/dll/Release/dxwcore.obj b/dll/Release/dxwcore.obj
new file mode 100644
index 0000000..12469a7
Binary files /dev/null and b/dll/Release/dxwcore.obj differ
diff --git a/dll/Release/dxwnd.exp b/dll/Release/dxwnd.exp
new file mode 100644
index 0000000..bbc3f60
Binary files /dev/null and b/dll/Release/dxwnd.exp differ
diff --git a/dll/Release/dxwnd.lib b/dll/Release/dxwnd.lib
new file mode 100644
index 0000000..fcf4f01
Binary files /dev/null and b/dll/Release/dxwnd.lib differ
diff --git a/dll/Release/dxwnd.obj b/dll/Release/dxwnd.obj
new file mode 100644
index 0000000..d9fe799
Binary files /dev/null and b/dll/Release/dxwnd.obj differ
diff --git a/dll/Release/dxwnd.res b/dll/Release/dxwnd.res
new file mode 100644
index 0000000..97325b7
Binary files /dev/null and b/dll/Release/dxwnd.res differ
diff --git a/dll/Release/dxwsstack.obj b/dll/Release/dxwsstack.obj
new file mode 100644
index 0000000..fa87021
Binary files /dev/null and b/dll/Release/dxwsstack.obj differ
diff --git a/dll/Release/dxwwstack.obj b/dll/Release/dxwwstack.obj
new file mode 100644
index 0000000..8cdf16e
Binary files /dev/null and b/dll/Release/dxwwstack.obj differ
diff --git a/dll/Release/gdi32.obj b/dll/Release/gdi32.obj
new file mode 100644
index 0000000..1005004
Binary files /dev/null and b/dll/Release/gdi32.obj differ
diff --git a/dll/Release/gdiblt.obj b/dll/Release/gdiblt.obj
new file mode 100644
index 0000000..f398602
Binary files /dev/null and b/dll/Release/gdiblt.obj differ
diff --git a/dll/Release/glide.obj b/dll/Release/glide.obj
new file mode 100644
index 0000000..c470ff0
Binary files /dev/null and b/dll/Release/glide.obj differ
diff --git a/dll/Release/hd3d.obj b/dll/Release/hd3d.obj
new file mode 100644
index 0000000..43ab513
Binary files /dev/null and b/dll/Release/hd3d.obj differ
diff --git a/dll/Release/hd3d7.obj b/dll/Release/hd3d7.obj
new file mode 100644
index 0000000..2a08a2c
Binary files /dev/null and b/dll/Release/hd3d7.obj differ
diff --git a/dll/Release/hd3d8.obj b/dll/Release/hd3d8.obj
new file mode 100644
index 0000000..f30e65e
Binary files /dev/null and b/dll/Release/hd3d8.obj differ
diff --git a/dll/Release/hd3d9.obj b/dll/Release/hd3d9.obj
new file mode 100644
index 0000000..a0f5ac9
Binary files /dev/null and b/dll/Release/hd3d9.obj differ
diff --git a/dll/Release/hexdump.obj b/dll/Release/hexdump.obj
new file mode 100644
index 0000000..f1b2bd1
Binary files /dev/null and b/dll/Release/hexdump.obj differ
diff --git a/dll/Release/hint.obj b/dll/Release/hint.obj
new file mode 100644
index 0000000..4ccdd63
Binary files /dev/null and b/dll/Release/hint.obj differ
diff --git a/dll/Release/hotpatch.obj b/dll/Release/hotpatch.obj
new file mode 100644
index 0000000..b36731b
Binary files /dev/null and b/dll/Release/hotpatch.obj differ
diff --git a/dll/Release/iatpatch.obj b/dll/Release/iatpatch.obj
new file mode 100644
index 0000000..e4d6d0c
Binary files /dev/null and b/dll/Release/iatpatch.obj differ
diff --git a/dll/Release/imagehlp.obj b/dll/Release/imagehlp.obj
new file mode 100644
index 0000000..26b69c7
Binary files /dev/null and b/dll/Release/imagehlp.obj differ
diff --git a/dll/Release/imelib.obj b/dll/Release/imelib.obj
new file mode 100644
index 0000000..e8f6b0c
Binary files /dev/null and b/dll/Release/imelib.obj differ
diff --git a/dll/Release/kernel32.obj b/dll/Release/kernel32.obj
new file mode 100644
index 0000000..9231661
Binary files /dev/null and b/dll/Release/kernel32.obj differ
diff --git a/dll/Release/mincaps.obj b/dll/Release/mincaps.obj
new file mode 100644
index 0000000..525ce50
Binary files /dev/null and b/dll/Release/mincaps.obj differ
diff --git a/dll/Release/msghook.obj b/dll/Release/msghook.obj
new file mode 100644
index 0000000..a0e4649
Binary files /dev/null and b/dll/Release/msghook.obj differ
diff --git a/dll/Release/msims32.obj b/dll/Release/msims32.obj
new file mode 100644
index 0000000..4a93cfb
Binary files /dev/null and b/dll/Release/msims32.obj differ
diff --git a/dll/Release/msvfw.obj b/dll/Release/msvfw.obj
new file mode 100644
index 0000000..1838464
Binary files /dev/null and b/dll/Release/msvfw.obj differ
diff --git a/dll/Release/ole32.obj b/dll/Release/ole32.obj
new file mode 100644
index 0000000..10a8caf
Binary files /dev/null and b/dll/Release/ole32.obj differ
diff --git a/dll/Release/opengl.obj b/dll/Release/opengl.obj
new file mode 100644
index 0000000..7e14b46
Binary files /dev/null and b/dll/Release/opengl.obj differ
diff --git a/dll/Release/shareddc.obj b/dll/Release/shareddc.obj
new file mode 100644
index 0000000..231cde1
Binary files /dev/null and b/dll/Release/shareddc.obj differ
diff --git a/dll/Release/smack.obj b/dll/Release/smack.obj
new file mode 100644
index 0000000..ec5a198
Binary files /dev/null and b/dll/Release/smack.obj differ
diff --git a/dll/Release/supmodes.obj b/dll/Release/supmodes.obj
new file mode 100644
index 0000000..955bbeb
Binary files /dev/null and b/dll/Release/supmodes.obj differ
diff --git a/dll/Release/toggle_fs.obj b/dll/Release/toggle_fs.obj
new file mode 100644
index 0000000..d657fdc
Binary files /dev/null and b/dll/Release/toggle_fs.obj differ
diff --git a/dll/Release/user32.obj b/dll/Release/user32.obj
new file mode 100644
index 0000000..124fe88
Binary files /dev/null and b/dll/Release/user32.obj differ
diff --git a/dll/Release/vc90.idb b/dll/Release/vc90.idb
new file mode 100644
index 0000000..d961d1f
Binary files /dev/null and b/dll/Release/vc90.idb differ
diff --git a/dll/Release/winmm.obj b/dll/Release/winmm.obj
new file mode 100644
index 0000000..509c6df
Binary files /dev/null and b/dll/Release/winmm.obj differ
diff --git a/dll/Release/winproc.obj b/dll/Release/winproc.obj
new file mode 100644
index 0000000..75e7c3a
Binary files /dev/null and b/dll/Release/winproc.obj differ
diff --git a/dll/Release/wintrust.obj b/dll/Release/wintrust.obj
new file mode 100644
index 0000000..58f3583
Binary files /dev/null and b/dll/Release/wintrust.obj differ
diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp
index 5c7c093..8c99995 100644
--- a/dll/ddraw.cpp
+++ b/dll/ddraw.cpp
@@ -2203,11 +2203,18 @@ HRESULT WINAPI extSetCooperativeLevel(int dxversion, SetCooperativeLevel_Type pS
bFixFrame = TRUE;
}
else{
- RECT client;
- (*pGetClientRect)(hwnd, &client);
- // v2.02.11:
- // Non fullscreen cooperative mode means windowed, unless the window occupies the whole desktop area
- dxw.SetFullScreen(client.right==dxw.iSizX && client.bottom==dxw.iSizY);
+ // v2.03.77: the game "Portugal 1111" calls SetCooperativeLevel with hwnd=0.
+ // in such a case, you can get the window size, so better leave the previous
+ // FullScreen setting unchanged. This is a wise politic also in case of any
+ // sort of GetClientRect error code.
+ if(hwnd){
+ RECT client;
+ BOOL ret;
+ ret=(*pGetClientRect)(hwnd, &client);
+ // v2.02.11:
+ // Non fullscreen cooperative mode means windowed, unless the window occupies the whole desktop area
+ if (ret) dxw.SetFullScreen(client.right==dxw.iSizX && client.bottom==dxw.iSizY);
+ }
}
}
diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp
index 032d69e..03490fd 100644
--- a/dll/dxhook.cpp
+++ b/dll/dxhook.cpp
@@ -944,6 +944,26 @@ void SetModuleHooks()
if(hModule) {
SysLibs[i]=hModule;
OutTraceDW("InitModuleHooks: lib=%s hmodule=%x\n", SysNames[i], hModule);
+ if(dxw.bHintActive) switch(i){
+ case SYSLIBIDX_DIRECTDRAW: ShowHint(HINT_DDRAW); break;
+ case SYSLIBIDX_DIRECT3D8: ShowHint(HINT_D3D8); break;
+ case SYSLIBIDX_DIRECT3D9: ShowHint(HINT_D3D9); break;
+ // DirectX10 & 11 are loaded by some system module, so better not to tell
+ //case SYSLIBIDX_DIRECT3D10:
+ //case SYSLIBIDX_DIRECT3D10_1:ShowHint(HINT_D3D10); break;
+ //case SYSLIBIDX_DIRECT3D11: ShowHint(HINT_D3D11); break;
+ case SYSLIBIDX_OPENGL: ShowHint(HINT_OPENGL); break;
+ case SYSLIBIDX_DSOUND: ShowHint(HINT_DSOUND); break;
+ case SYSLIBIDX_DINPUT: ShowHint(HINT_DINPUT); break;
+ case SYSLIBIDX_DINPUT8: ShowHint(HINT_DINPUT8); break;
+ case SYSLIBIDX_MSVFW:
+ case SYSLIBIDX_SMACK:
+ case SYSLIBIDX_WINMM:
+ case SYSLIBIDX_AVIFIL32: ShowHint(HINT_MOVIES); break;
+ case SYSLIBIDX_DIRECT3D:
+ case SYSLIBIDX_DIRECT3D700: ShowHint(HINT_D3D); break;
+ case SYSLIBIDX_IMAGEHLP: ShowHint(HINT_IHLP); break;
+ }
}
}
}
@@ -1328,6 +1348,7 @@ void HookInit(TARGETMAP *target, HWND hwnd)
sSourcePath[strlen(sSourcePath)-strlen("dxwnd.dll")] = 0; // terminate the string just before "dxwnd.dll"
SetDllDirectory(sSourcePath);
+ if(dxw.bHintActive) ShowHint(HINT_HINT);
if(dxw.dwFlags5 & HYBRIDMODE) {
// special mode settings ....
dxw.dwFlags1 |= EMULATESURFACE;
@@ -1413,7 +1434,7 @@ void HookInit(TARGETMAP *target, HWND hwnd)
OutTrace("HookInit: DWMComposition %s\n", sRes);
}
- if (SKIPIMEWINDOW) {
+ if (hwnd) {
char ClassName[8+1];
GetClassName(hwnd, ClassName, sizeof(ClassName));
if(!strcmp(ClassName, "IME")){
@@ -1448,7 +1469,6 @@ void HookInit(TARGETMAP *target, HWND hwnd)
// make InitPosition used for both DInput and DDraw
if(dxw.Windowize) dxw.InitWindowPos(target->posx, target->posy, target->sizx, target->sizy);
-
OutTraceB("HookInit: base hmodule=%x\n", base);
HookModule(base, dxw.dwTargetDDVersion);
if (dxw.dwFlags3 & HOOKDLLS) HookDlls(base);
diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp
index 932d251..beab04b 100644
--- a/dll/dxwcore.cpp
+++ b/dll/dxwcore.cpp
@@ -146,6 +146,9 @@ void dxwCore::InitTarget(TARGETMAP *target)
// made before hooking !!!
pGetWindowLong = (dwFlags5 & ANSIWIDE) ? GetWindowLongW : GetWindowLongA;
pSetWindowLong = (dwFlags5 & ANSIWIDE) ? SetWindowLongW : SetWindowLongA;
+
+ // hint system
+ bHintActive = (dwFlags7 & SHOWHINTS) ? TRUE : FALSE;
}
void dxwCore::SetScreenSize(void)
diff --git a/dll/dxwcore.hpp b/dll/dxwcore.hpp
index 05ccd00..564012b 100644
--- a/dll/dxwcore.hpp
+++ b/dll/dxwcore.hpp
@@ -179,6 +179,7 @@ public: // simple data variables
int GDIEmulationMode;
BOOL TimeFreeze;
RECT VirtualDesktop;
+ BOOL bHintActive;
// Implementation
protected:
@@ -327,6 +328,14 @@ typedef enum {
}
enum_syslibraries;
+typedef enum {
+ HINT_HINT = 0,
+ HINT_DDRAW, HINT_D3D8, HINT_D3D9, HINT_D3D10,
+ HINT_D3D11, HINT_OPENGL, HINT_DSOUND, HINT_DINPUT,
+ HINT_DINPUT8, HINT_MOVIES, HINT_D3D, HINT_IHLP,
+ HINT_LAST
+} HintEnumIds;
+
#ifdef SYSLIBNAMES_DEFINES
char *SysNames[]={
"kernel32",
diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp
index e6cda92..af18a21 100644
--- a/dll/dxwnd.cpp
+++ b/dll/dxwnd.cpp
@@ -27,7 +27,7 @@ along with this program. If not, see .
#include "TlHelp32.h"
-#define VERSION "2.03.76"
+#define VERSION "2.03.77"
#define DDTHREADLOCK 1
//#define LOCKTHREADS
diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo
index 00dad54..f18ed4f 100644
Binary files a/dll/dxwnd.vs2008.suo and b/dll/dxwnd.vs2008.suo differ
diff --git a/dll/dxwnd.vs2008.vcproj b/dll/dxwnd.vs2008.vcproj
index 8ff50c9..836f4f3 100644
--- a/dll/dxwnd.vs2008.vcproj
+++ b/dll/dxwnd.vs2008.vcproj
@@ -437,6 +437,10 @@
RelativePath=".\hexdump.cpp"
>
+
+
diff --git a/dll/gdi32.cpp b/dll/gdi32.cpp
index 96e9359..2c48fc3 100644
--- a/dll/gdi32.cpp
+++ b/dll/gdi32.cpp
@@ -194,7 +194,7 @@ static HookEntryEx_Type SyscallHooks[]={
{HOOK_IAT_CANDIDATE, 0, "FrameRgn", (FARPROC)NULL, (FARPROC *)&pFrameRgn, (FARPROC)extFrameRgn},
{HOOK_IAT_CANDIDATE, 0, "InvertRgn", (FARPROC)NULL, (FARPROC *)&pInvertRgn, (FARPROC)extInvertRgn},
{HOOK_IAT_CANDIDATE, 0, "PaintRgn", (FARPROC)NULL, (FARPROC *)&pPaintRgn, (FARPROC)extPaintRgn},
- //{HOOK_IAT_CANDIDATE, 0, "SetMapMode", (FARPROC)NULL, (FARPROC *)NULL, (FARPROC)extSetMapMode}, // crashes ???
+ ////{HOOK_IAT_CANDIDATE, 0, "SetMapMode", (FARPROC)NULL, (FARPROC *)NULL, (FARPROC)extSetMapMode}, // crashes ???
{HOOK_IAT_CANDIDATE, 0, "SetDIBitsToDevice", (FARPROC)SetDIBitsToDevice, (FARPROC *)&pSetDIBitsToDevice, (FARPROC)extSetDIBitsToDevice}, // does the stretching
{HOOK_IAT_CANDIDATE, 0, "Polyline", (FARPROC)Polyline, (FARPROC *)&pPolyline, (FARPROC)extPolyline},
{HOOK_IAT_CANDIDATE, 0, "BitBlt", (FARPROC)BitBlt, (FARPROC *)&pGDIBitBlt, (FARPROC)extGDIBitBlt},
@@ -227,7 +227,7 @@ static HookEntryEx_Type SyscallHooks[]={
{HOOK_IAT_CANDIDATE, 0, "MoveToEx", (FARPROC)MoveToEx, (FARPROC *)&pMoveToEx, (FARPROC)extMoveToEx},
{HOOK_IAT_CANDIDATE, 0, "GetClipBox", (FARPROC)GetClipBox, (FARPROC *)&pGDIGetClipBox, (FARPROC)extGetClipBox},
{HOOK_IAT_CANDIDATE, 0, "IntersectClipRect", (FARPROC)IntersectClipRect, (FARPROC *)&pIntersectClipRect, (FARPROC)extIntersectClipRect}, // Riven !!
- {HOOK_IAT_CANDIDATE, 0, "DeleteDC", (FARPROC)DeleteDC, (FARPROC *)&pGDIDeleteDC, (FARPROC)extGDIDeleteDC}, // for tracing only!
+ //{HOOK_IAT_CANDIDATE, 0, "DeleteDC", (FARPROC)DeleteDC, (FARPROC *)&pGDIDeleteDC, (FARPROC)extGDIDeleteDC}, // for tracing only! (commented: crashes Dylan Dog HLP!!)
{HOOK_IAT_CANDIDATE, 0, "CreateDCA", (FARPROC)CreateDCA, (FARPROC *)&pGDICreateDCA, (FARPROC)extGDICreateDCA},
{HOOK_IAT_CANDIDATE, 0, "CreateDCW", (FARPROC)CreateDCW, (FARPROC *)&pGDICreateDCW, (FARPROC)extGDICreateDCW},
@@ -350,6 +350,35 @@ extern HRESULT WINAPI sBlt(int, Blt_Type, char *, LPDIRECTDRAWSURFACE, LPRECT, L
extern GetDC_Type pGetDC;
extern ReleaseDC_Type pReleaseDC1;
+static char *ExplainDIBUsage(UINT u)
+{
+ char *p;
+ switch(u){
+ case DIB_PAL_COLORS: p="DIB_PAL_COLORS"; break;
+ case DIB_RGB_COLORS: p="DIB_RGB_COLORS"; break;
+ default: p="invalid"; break;
+ }
+ return p;
+}
+
+static void TraceBITMAPINFOHEADER(char *fName, BITMAPINFOHEADER *bmi)
+{
+ OutTrace("%s: BitmapInfo {Size=%d dim=(%dx%d) Planes=%d bitcount=%d Compression=%x SizeImage=%d PelsPerMeter=%dx%d colors=U%d:I%d}\n",
+ fName, bmi->biSize, bmi->biWidth, bmi->biHeight, bmi->biPlanes, bmi->biBitCount, bmi->biCompression,
+ bmi->biSizeImage, bmi->biXPelsPerMeter, bmi->biYPelsPerMeter, bmi->biClrUsed, bmi->biClrImportant);
+ if(bmi->biSize > sizeof(BITMAPINFOHEADER)){
+ BITMAPV4HEADER *bm4 = (BITMAPV4HEADER *)bmi;
+ OutTrace("%s: BitmapInfoV4 {RGBA mask=%x:%x:%x:%x cstype=%x gamma RGB=%x:%x:%x}\n",
+ fName, bm4->bV4RedMask, bm4->bV4GreenMask, bm4->bV4BlueMask, bm4->bV4AlphaMask,
+ bm4->bV4CSType, bm4->bV4GammaRed, bm4->bV4GammaGreen, bm4->bV4GammaBlue);
+ }
+ if(bmi->biSize > sizeof(BITMAPV4HEADER)){
+ BITMAPV5HEADER *bm5 = (BITMAPV5HEADER *)bmi;
+ OutTrace("%s: BitmapInfoV5 {intent=%x profiledata=%x profilesize=%x resvd=%x}\n",
+ fName, bm5->bV5Intent, bm5->bV5ProfileData, bm5->bV5ProfileSize, bm5->bV5Reserved);
+ }
+}
+
//--------------------------------------------------------------------------------------------
//
// API hookers
@@ -1737,8 +1766,11 @@ int WINAPI extStretchDIBits(HDC hdc, int XDest, int YDest, int nDestWidth, int n
const VOID *lpBits, const BITMAPINFO *lpBitsInfo, UINT iUsage, DWORD dwRop)
{
int ret;
- OutTraceDW("StretchDIBits: hdc=%x dest=(%d,%d)-(%d,%d) src=(%d,%d)-(%d,%d) rop=%x(%s)\n",
- hdc, XDest, YDest, nDestWidth, nDestHeight, XSrc, YSrc, nSrcWidth, nSrcHeight, dwRop, ExplainROP(dwRop));
+ if(IsTraceDW){
+ OutTraceDW("StretchDIBits: hdc=%x dest=(%d,%d)-(%d,%d) src=(%d,%d)-(%d,%d) rop=%x(%s)\n",
+ hdc, XDest, YDest, nDestWidth, nDestHeight, XSrc, YSrc, nSrcWidth, nSrcHeight, dwRop, ExplainROP(dwRop));
+ TraceBITMAPINFOHEADER("StretchDIBits", (BITMAPINFOHEADER *)&(lpBitsInfo->bmiHeader));
+ }
if(dxw.IsToRemap(hdc)){
switch(dxw.GDIEmulationMode){
@@ -1772,11 +1804,10 @@ int WINAPI extStretchDIBits(HDC hdc, int XDest, int YDest, int nDestWidth, int n
int WINAPI extSetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines, const VOID *lpvBits, const BITMAPINFO *lpbmi, UINT fuColorUse)
{
int ret;
- BITMAPINFOHEADER *bmi;
- OutTraceDW("SetDIBits: hdc=%x hbmp=%x lines=(%d,%d) ColorUse=%x\n", hdc, hbmp, uStartScan, cScanLines, fuColorUse);
- bmi=(BITMAPINFOHEADER *)&(lpbmi->bmiHeader);
- OutTraceDW("SetDIBits: BitmapInfo dim=(%dx%d) Planes=%d BPP=%d Compression=%x SizeImage=%x\n",
- bmi->biWidth, bmi->biHeight, bmi->biPlanes, bmi->biBitCount, bmi->biCompression, bmi->biSizeImage);
+ if(IsTraceDW){
+ OutTrace("SetDIBits: hdc=%x hbmp=%x lines=(%d,%d) ColorUse=%x(%s)\n", hdc, hbmp, uStartScan, cScanLines, fuColorUse, ExplainDIBUsage(fuColorUse));
+ TraceBITMAPINFOHEADER("SetDIBits", (BITMAPINFOHEADER *)&(lpbmi->bmiHeader));
+ }
if(dxw.IsToRemap(hdc) && !bGDIRecursionFlag){
//HDC hTempDc;
@@ -1785,7 +1816,8 @@ int WINAPI extSetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines,
case GDIMODE_SHAREDDC: // this will flicker !!!!
sdc.GetPrimaryDC(hdc);
ret=(*pSetDIBits)(sdc.GetHdc(), hbmp, uStartScan, cScanLines, lpvBits, lpbmi, fuColorUse);
- sdc.PutPrimaryDC(hdc, TRUE, 0, 0, bmi->biWidth, bmi->biHeight);
+ if(!ret || (ret==GDI_ERROR)) OutTraceE("SetDIBits: ERROR err=%d\n", GetLastError());
+ sdc.PutPrimaryDC(hdc, TRUE, 0, 0, lpbmi->bmiHeader.biWidth, lpbmi->bmiHeader.biHeight);
return ret;
break;
case GDIMODE_STRETCHED:
@@ -1847,15 +1879,12 @@ int WINAPI extSetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines,
int WINAPI extGetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines, LPVOID lpvBits, LPBITMAPINFO lpbmi, UINT uUsage)
{
int ret;
- BITMAPINFOHEADER *bmi;
- OutTraceDW("GetDIBits: hdc=%x hbmp=%x lines=(%d,%d) ColorUse=%x\n", hdc, hbmp, uStartScan, cScanLines, uUsage);
- bmi=(BITMAPINFOHEADER *)&(lpbmi->bmiHeader);
- OutTraceDW("GetDIBits: BitmapInfo dim=(%dx%d) Planes=%d BPP=%d Compression=%x SizeImage=%x\n",
- bmi->biWidth, bmi->biHeight, bmi->biPlanes, bmi->biBitCount, bmi->biCompression, bmi->biSizeImage);
+ if(IsTraceDW){
+ OutTrace("GetDIBits: hdc=%x hbmp=%x lines=(%d,%d) ColorUse=%x(%s)\n", hdc, hbmp, uStartScan, cScanLines, uUsage, ExplainDIBUsage(uUsage));
+ TraceBITMAPINFOHEADER("GetDIBits", (BITMAPINFOHEADER *)&(lpbmi->bmiHeader));
+ }
if(dxw.IsToRemap(hdc) && !bGDIRecursionFlag){
- //HDC hTempDc;
- //HBITMAP hbmPic;
switch(dxw.GDIEmulationMode){
case GDIMODE_SHAREDDC: // this will flicker !!!!
sdc.GetPrimaryDC(hdc);
@@ -1874,104 +1903,16 @@ int WINAPI extGetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines,
return ret;
}
-#if 0
int WINAPI extSetDIBitsToDevice(HDC hdc, int XDest, int YDest, DWORD dwWidth, DWORD dwHeight, int XSrc, int YSrc, UINT uStartScan, UINT cScanLines,
const VOID *lpvBits, const BITMAPINFO *lpbmi, UINT fuColorUse)
{
int ret;
- BITMAPINFOHEADER *bmi;
- OutTraceDW("SetDIBitsToDevice: hdc=%x dest=(%d,%d)-(%dx%d) src=(%d,%d) lines=(%d,%d)\n",
- hdc, XDest, YDest, dwWidth, dwHeight, XSrc, YSrc, uStartScan, cScanLines);
- bmi=(BITMAPINFOHEADER *)&(lpbmi->bmiHeader);
- OutTraceDW("SetDIBitsToDevice: BitmapInfo dim=(%dx%d) Planes=%d BPP=%d Compression=%x SizeImage=%x\n",
- bmi->biWidth, bmi->biHeight, bmi->biPlanes, bmi->biBitCount, bmi->biCompression, bmi->biSizeImage);
-
- bGDIRecursionFlag = TRUE; // beware: it seems that SetDIBitsToDevice calls SetDIBits internally
- if(dxw.IsFullScreen()){
- HDC hTempDc;
- HBITMAP hbmPic;
- DWORD OrigWidth, OrigHeight;
- int OrigXDest, OrigYDest;
- OrigWidth=dwWidth;
- OrigHeight=dwHeight;
- OrigXDest=XDest;
- OrigYDest=YDest;
- switch(dxw.GDIEmulationMode){
- case GDIMODE_SHAREDDC:
- if(dxw.IsToRemap(hdc)){
- sdc.GetPrimaryDC(hdc);
- ret=(*pSetDIBitsToDevice)(sdc.GetHdc(), XDest, YDest, dwWidth, dwHeight, XSrc, YSrc, uStartScan, cScanLines, lpvBits, lpbmi, fuColorUse);
- sdc.PutPrimaryDC(hdc, TRUE, XDest, YDest, dwWidth, dwHeight);
- }
- else{
- ret=(*pSetDIBitsToDevice)(hdc, XDest, YDest, dwWidth, dwHeight, XSrc, YSrc, uStartScan, cScanLines, lpvBits, lpbmi, fuColorUse);
- }
- bGDIRecursionFlag = FALSE;
- return ret;
- break;
- case GDIMODE_STRETCHED:
- if(dxw.IsToRemap(hdc)){
- // blitting to primary surface !!!
- dxw.MapClient(&XDest, &YDest, (int *)&dwWidth, (int *)&dwHeight);
- OutTraceDW("SetDIBitsToDevice: fixed dest=(%d,%d)-(%dx%d)\n", XDest, YDest, dwWidth, dwHeight);
- if(!(hTempDc=CreateCompatibleDC(hdc)))
- OutTraceE("CreateCompatibleDC: ERROR err=%d at=%d\n", GetLastError(), __LINE__);
- // tricky part: CreateCompatibleBitmap is needed to set the dc size, but it has to be performed
- // against hdc to set for color depth, then selected (through SelectObject) against the temporary
- // dc to assign the needed size and color space to the temporary dc.
- if(!(hbmPic=CreateCompatibleBitmap(hdc, OrigWidth, OrigHeight)))
- OutTraceE("CreateCompatibleBitmap: ERROR err=%d at=%d\n", GetLastError(), __LINE__);
- if(!SelectObject(hTempDc, hbmPic))
- OutTraceE("SelectObject: ERROR err=%d at=%d\n", GetLastError(), __LINE__);
- if(!(ret=(*pSetDIBitsToDevice)(hTempDc, 0, 0, OrigWidth, OrigHeight, XSrc, YSrc, uStartScan, cScanLines, lpvBits, lpbmi, fuColorUse)))
- OutTraceE("SetDIBitsToDevice: ERROR err=%d at=%d\n", GetLastError(), __LINE__);
- bGDIRecursionFlag = FALSE;
- // v2.02.94: set HALFTONE stretching. Fixes "Celtic Kings Rage of War"
- SetStretchBltMode(hdc,HALFTONE);
- if(!(ret=(*pGDIStretchBlt)(hdc, XDest, YDest, dwWidth, dwHeight, hTempDc, 0, 0, OrigWidth, OrigHeight, SRCCOPY)))
- OutTraceE("StretchBlt: ERROR err=%d at=%d\n", GetLastError(), __LINE__);
- if(!(DeleteObject(hbmPic))) // v2.02.32 - avoid resource leakage
- OutTraceE("DeleteObject: ERROR err=%d at=%d\n", GetLastError(), __LINE__);
- if(!(DeleteDC(hTempDc)))
- OutTraceE("DeleteDC: ERROR err=%d at=%d\n", GetLastError(), __LINE__);
- return ret;
- }
- break;
- case GDIMODE_EMULATED:
- if (dxw.IsVirtual(hdc)){
- int X, Y;
- X=XDest+dxw.VirtualOffsetX;
- Y=YDest+dxw.VirtualOffsetY;
- OutTraceDW("SetDIBitsToDevice: virtual pos=(%d,%d)+(%d+%d)=(%d,%d)\n",
- XDest, YDest, dxw.VirtualOffsetX, dxw.VirtualOffsetY, X, Y);
- ret=(*pSetDIBitsToDevice)(hdc, X, Y, dwWidth, dwHeight, XSrc, YSrc, uStartScan, cScanLines, lpvBits, lpbmi, fuColorUse);
- bGDIRecursionFlag = FALSE;
- if(!ret || (ret==GDI_ERROR)) OutTraceE("SetDIBitsToDevice: ERROR ret=%x err=%d\n", ret, GetLastError());
- return ret;
- }
- break;
- default:
- break;
- }
+ if(IsTraceDW){
+ OutTrace("SetDIBitsToDevice: hdc=%x dest=(%d,%d)-(%dx%d) src=(%d,%d) lines=(%d,%d) bits=%x ColorUse=%x(%s)\n",
+ hdc, XDest, YDest, dwWidth, dwHeight, XSrc, YSrc, uStartScan, cScanLines, lpvBits, fuColorUse, ExplainDIBUsage(fuColorUse));
+ TraceBITMAPINFOHEADER("SetDIBitsToDevice", (BITMAPINFOHEADER *)&(lpbmi->bmiHeader));
}
- ret=(*pSetDIBitsToDevice)(hdc, XDest, YDest, dwWidth, dwHeight, XSrc, YSrc, uStartScan, cScanLines, lpvBits, lpbmi, fuColorUse);
- bGDIRecursionFlag = FALSE;
- if(!ret || (ret==GDI_ERROR)) OutTraceE("SetDIBitsToDevice: ERROR ret=%x err=%d\n", ret, GetLastError());
- return ret;
-}
-#else
-int WINAPI extSetDIBitsToDevice(HDC hdc, int XDest, int YDest, DWORD dwWidth, DWORD dwHeight, int XSrc, int YSrc, UINT uStartScan, UINT cScanLines,
- const VOID *lpvBits, const BITMAPINFO *lpbmi, UINT fuColorUse)
-{
- int ret;
- BITMAPINFOHEADER *bmi;
- OutTraceDW("SetDIBitsToDevice: hdc=%x dest=(%d,%d)-(%dx%d) src=(%d,%d) lines=(%d,%d)\n",
- hdc, XDest, YDest, dwWidth, dwHeight, XSrc, YSrc, uStartScan, cScanLines);
- bmi=(BITMAPINFOHEADER *)&(lpbmi->bmiHeader);
- OutTraceDW("SetDIBitsToDevice: BitmapInfo dim=(%dx%d) Planes=%d BPP=%d Compression=%x SizeImage=%x\n",
- bmi->biWidth, bmi->biHeight, bmi->biPlanes, bmi->biBitCount, bmi->biCompression, bmi->biSizeImage);
-
bGDIRecursionFlag = TRUE; // beware: it seems that SetDIBitsToDevice calls SetDIBits internally
if(dxw.IsToRemap(hdc)){
HDC hTempDc;
@@ -2036,7 +1977,6 @@ int WINAPI extSetDIBitsToDevice(HDC hdc, int XDest, int YDest, DWORD dwWidth, DW
if(!ret || (ret==GDI_ERROR)) OutTraceE("SetDIBitsToDevice: ERROR ret=%x err=%d\n", ret, GetLastError());
return ret;
}
-#endif
HBITMAP WINAPI extCreateCompatibleBitmap(HDC hdc, int nWidth, int nHeight)
{
@@ -3007,13 +2947,20 @@ BOOL WINAPI extPolyTextOutW(HDC hdc, const POLYTEXTW *pptxt, int cStrings)
HBITMAP WINAPI extCreateDIBitmap(HDC hdc, BITMAPINFOHEADER *lpbmih, DWORD fdwInit, const VOID *lpbInit, const BITMAPINFO *lpbmi, UINT fuUsage)
{
HBITMAP ret;
- OutTraceDW("CreateDIBitmap: hdc=%x\n", hdc);
+ if(IsTraceDW){
+ OutTrace("CreateDIBitmap: hdc=%x init=%x%s data=%x usage=%x(%s)\n",
+ hdc, fdwInit, fdwInit==CBM_INIT?"(CBM_INIT)":"", lpbInit,
+ fuUsage, ExplainDIBUsage(fuUsage));
+ if(fdwInit==CBM_INIT) TraceBITMAPINFOHEADER("CreateDIBitmap(lpbmih)", lpbmih);
+ TraceBITMAPINFOHEADER("CreateDIBitmap(lpbmi)", (BITMAPINFOHEADER *)&(lpbmi->bmiHeader));
+ }
if(dxw.IsToRemap(hdc)) {
switch(dxw.GDIEmulationMode){
case GDIMODE_SHAREDDC:
sdc.GetPrimaryDC(hdc);
ret=(*pCreateDIBitmap)(sdc.GetHdc(), lpbmih, fdwInit, lpbInit, lpbmi, fuUsage);
+ if(!ret) OutTraceE("CreateDIBitmap ERROR: err=%d\n", GetLastError());
sdc.PutPrimaryDC(hdc, FALSE);
return ret;
break;
diff --git a/dll/hint.cpp b/dll/hint.cpp
new file mode 100644
index 0000000..22d8bff
--- /dev/null
+++ b/dll/hint.cpp
@@ -0,0 +1,38 @@
+#include "windows.h"
+#include "dxwnd.h"
+#include "dxwcore.hpp"
+
+typedef struct {
+ BOOL bShowed;
+ char *sHintText;
+} HintEntry_Type;
+
+HintEntry_Type HintTable[]={
+ {FALSE, "Automatic configuration hints enabled. Uncheck SHOWHINTS to turn off"},
+ {FALSE, "DirectDraw dependency detected. Check DirectX flags"},
+ {FALSE, "Direct3D8 dependency detected. Check DirectX8 flags"},
+ {FALSE, "Direct3D9 dependency detected. Check DirectX9 flags"},
+ {FALSE, "Direct3D10 dependency detected. Check DirectX10 flags"},
+ {FALSE, "Direct3D11 dependency detected. Check DirectX11 flags"},
+ {FALSE, "OpenGL dependency detected. Check OpenGL hook and flags"},
+ {FALSE, "DirectSound dependency detected. Check DirectSound hook in case of sound problems"},
+ {FALSE, "DirectInput dependency detected. Check DirectInput hook in case of input problems"},
+ {FALSE, "DirectInput8 dependency detected. Check DirectInput8 hook in case of input problems"},
+ {FALSE, "Movie libraries detected. Check multimedia section"},
+ {FALSE, "D3D libraries detected. Check DirectX version hook (DirectX7 ?)"},
+ {FALSE, "IMAGEHLP dependency detected. In case of error, check NOIMAGEHLP flag"},
+ {FALSE, ""}
+};
+
+void ShowHint(int HintId)
+{
+ // boundary checks
+ if ((HintId < HINT_HINT) || (HintId >= HINT_LAST)) return;
+
+ // show hints just once
+ if(HintTable[HintId].bShowed) return;
+ HintTable[HintId].bShowed = TRUE;
+
+ // show hint
+ MessageBox(NULL, HintTable[HintId].sHintText, "DxWnd hint", MB_OK);
+}
diff --git a/dll/kernel32.cpp b/dll/kernel32.cpp
index c90973d..6e0e76c 100644
--- a/dll/kernel32.cpp
+++ b/dll/kernel32.cpp
@@ -778,7 +778,7 @@ BOOL WINAPI extReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRea
{
BOOL ret;
static char *IOBuffer=NULL;
-
+ memset(lpBuffer, 0, nNumberOfBytesToRead);
if(IsTraceDW){
OutTrace("ReadFile: hFile=%x Buffer=%x BytesToRead=%d Overlapped=%x", hFile, lpBuffer, nNumberOfBytesToRead, lpOverlapped);
@@ -800,14 +800,65 @@ BOOL WINAPI extReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRea
return ret;
}
+static char *ExplainFlagsAndAttributes(DWORD c)
+{
+ static char eb[256];
+ unsigned int l;
+ strcpy(eb,"");
+ if (c & FILE_ATTRIBUTE_ARCHIVE) strcat(eb, "FILE_ATTRIBUTE_ARCHIVE+");
+ if (c & FILE_ATTRIBUTE_ENCRYPTED) strcat(eb, "FILE_ATTRIBUTE_ENCRYPTED+");
+ if (c & FILE_ATTRIBUTE_HIDDEN) strcat(eb, "FILE_ATTRIBUTE_HIDDEN+");
+ if (c & FILE_ATTRIBUTE_NORMAL) strcat(eb, "FILE_ATTRIBUTE_NORMAL+");
+ if (c & FILE_ATTRIBUTE_OFFLINE) strcat(eb, "FILE_ATTRIBUTE_OFFLINE+");
+ if (c & FILE_ATTRIBUTE_READONLY) strcat(eb, "FILE_ATTRIBUTE_READONLY+");
+ if (c & FILE_ATTRIBUTE_SYSTEM) strcat(eb, "FILE_ATTRIBUTE_SYSTEM+");
+ if (c & FILE_ATTRIBUTE_TEMPORARY) strcat(eb, "FILE_ATTRIBUTE_TEMPORARY+");
+ if (c & FILE_FLAG_BACKUP_SEMANTICS) strcat(eb, "FILE_FLAG_BACKUP_SEMANTICS+");
+ if (c & FILE_FLAG_DELETE_ON_CLOSE) strcat(eb, "FILE_FLAG_DELETE_ON_CLOSE+");
+ if (c & FILE_FLAG_NO_BUFFERING) strcat(eb, "FILE_FLAG_NO_BUFFERING+");
+ if (c & FILE_FLAG_OPEN_NO_RECALL) strcat(eb, "FILE_FLAG_OPEN_NO_RECALL+");
+ if (c & FILE_FLAG_OPEN_REPARSE_POINT) strcat(eb, "FILE_FLAG_OPEN_REPARSE_POINT+");
+ if (c & FILE_FLAG_OVERLAPPED) strcat(eb, "FILE_FLAG_OVERLAPPED+");
+ if (c & FILE_FLAG_POSIX_SEMANTICS) strcat(eb, "FILE_FLAG_POSIX_SEMANTICS+");
+ if (c & FILE_FLAG_RANDOM_ACCESS) strcat(eb, "FILE_FLAG_RANDOM_ACCESS+");
+ //if (c & FILE_FLAG_SESSION_AWARE) strcat(eb, "FILE_FLAG_SESSION_AWARE+");
+ if (c & FILE_FLAG_SEQUENTIAL_SCAN) strcat(eb, "FILE_FLAG_SEQUENTIAL_SCAN+");
+ if (c & FILE_FLAG_WRITE_THROUGH) strcat(eb, "FILE_FLAG_WRITE_THROUGH+");
+ if (c & SECURITY_ANONYMOUS) strcat(eb, "SECURITY_ANONYMOUS+");
+ if (c & SECURITY_CONTEXT_TRACKING) strcat(eb, "SECURITY_CONTEXT_TRACKING+");
+ if (c & SECURITY_DELEGATION) strcat(eb, "SECURITY_DELEGATION+");
+ if (c & SECURITY_EFFECTIVE_ONLY) strcat(eb, "SECURITY_EFFECTIVE_ONLY+");
+ if (c & SECURITY_IDENTIFICATION) strcat(eb, "SECURITY_IDENTIFICATION+");
+ if (c & SECURITY_IMPERSONATION) strcat(eb, "SECURITY_IMPERSONATION+");
+ l=strlen(eb);
+ if (l>strlen("")) eb[l-1]=0; // delete last '+' if any
+ return(eb);
+}
+
+static char *ExplainDesiredAccess(DWORD c)
+{
+ static char eb[256];
+ unsigned int l;
+ strcpy(eb,"GENERIC_");
+ if (c & GENERIC_READ) strcat(eb, "READ+");
+ if (c & GENERIC_WRITE) strcat(eb, "WRITE+");
+ if (c & GENERIC_EXECUTE) strcat(eb, "EXECUTE+");
+ if (c & GENERIC_ALL) strcat(eb, "ALL+");
+ l=strlen(eb);
+ if (l>strlen("GENERIC_")) eb[l-1]=0; // delete last '+' if any
+ else eb[0]=0;
+ return(eb);
+}
+
HANDLE WINAPI extCreateFile(LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
{
HANDLE ret;
int err=0;
- OutTraceDW("CreateFile: FileName=%s DesiredAccess=%x SharedMode=%x Disposition=%x Flags=%x\n",
- lpFileName, dwDesiredAccess, dwShareMode, dwCreationDisposition, dwFlagsAndAttributes);
+ OutTraceDW("CreateFile: FileName=%s DesiredAccess=%x(%s) SharedMode=%x Disposition=%x Flags=%x(%s)\n",
+ lpFileName, dwDesiredAccess, ExplainDesiredAccess(dwDesiredAccess), dwShareMode, dwCreationDisposition,
+ dwFlagsAndAttributes, ExplainFlagsAndAttributes(dwFlagsAndAttributes));
// just proxy
if(!(dxw.dwFlags3 & BUFFEREDIOFIX))
diff --git a/dll/user32.cpp b/dll/user32.cpp
index 7837e07..ce4aaf2 100644
--- a/dll/user32.cpp
+++ b/dll/user32.cpp
@@ -111,6 +111,9 @@ BOOL WINAPI extDrawMenuBar(HWND);
typedef BOOL (WINAPI *EnumDisplayDevicesA_Type)(LPCSTR, DWORD, PDISPLAY_DEVICE, DWORD);
EnumDisplayDevicesA_Type pEnumDisplayDevicesA = NULL;
BOOL WINAPI extEnumDisplayDevicesA(LPCSTR, DWORD, PDISPLAY_DEVICE, DWORD);
+typedef INT_PTR (WINAPI *DialogBoxIndirectParamA_Type)(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM);
+DialogBoxIndirectParamA_Type pDialogBoxIndirectParamA = NULL;
+INT_PTR WINAPI extDialogBoxIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM);
#ifdef TRACEPALETTE
@@ -278,6 +281,7 @@ static HookEntryEx_Type WinHooks[]={
{HOOK_HOT_CANDIDATE, 0, "DeferWindowPos", (FARPROC)DeferWindowPos, (FARPROC *)&pGDIDeferWindowPos, (FARPROC)extDeferWindowPos},
{HOOK_HOT_CANDIDATE, 0, "CallWindowProcA", (FARPROC)CallWindowProcA, (FARPROC *)&pCallWindowProcA, (FARPROC)extCallWindowProcA},
{HOOK_HOT_CANDIDATE, 0, "CallWindowProcW", (FARPROC)CallWindowProcW, (FARPROC *)&pCallWindowProcW, (FARPROC)extCallWindowProcW},
+ {HOOK_HOT_CANDIDATE, 0, "DialogBoxIndirectParamA", (FARPROC)DialogBoxIndirectParamA, (FARPROC *)&pDialogBoxIndirectParamA, (FARPROC)extDialogBoxIndirectParamA},
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
};
@@ -1768,11 +1772,14 @@ HWND WINAPI extCreateWindowExA(
return extCreateWindowCommon("CreateWindowExA", FALSE, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
}
+extern void ExplainMsg(char *, HWND, UINT, WPARAM, LPARAM);
+
LRESULT WINAPI extCallWindowProcA(WNDPROC lpPrevWndFunc, HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
// v2.02.30: fix (Imperialism II): apply to main window only !!!
HRESULT res;
+ if(IsTraceW) ExplainMsg("CallWindowProcA", hwnd, Msg, wParam, lParam);
res = -1;
if(hwnd == dxw.GethWnd()) res=FixWindowProc("CallWindowProcA", hwnd, Msg, wParam, &lParam);
@@ -1787,6 +1794,7 @@ LRESULT WINAPI extCallWindowProcW(WNDPROC lpPrevWndFunc, HWND hwnd, UINT Msg, WP
// v2.02.30: fix (Imperialism II): apply to main window only !!!
HRESULT res;
+ if(IsTraceW) ExplainMsg("CallWindowProcW", hwnd, Msg, wParam, lParam);
res = -1;
if(hwnd == dxw.GethWnd()) res=FixWindowProc("CallWindowProcW", hwnd, Msg, wParam, &lParam);
@@ -1802,6 +1810,7 @@ LRESULT WINAPI extDefWindowProcA(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lPar
// v2.03.50: fix - do clip cursor only after the window has got focus
HRESULT res;
res = (HRESULT)-1;
+ if(IsTraceW) ExplainMsg("DefWindowProcA", hwnd, Msg, wParam, lParam);
if(hwnd == dxw.GethWnd()) res=FixWindowProc("DefWindowProcA", hwnd, Msg, wParam, &lParam);
if (res==(HRESULT)-1) res = (*pDefWindowProcA)(hwnd, Msg, wParam, lParam);
if((Msg == WM_SETFOCUS) && (dxw.dwFlags1 & CLIPCURSOR)) dxw.SetClipCursor();
@@ -1814,6 +1823,7 @@ LRESULT WINAPI extDefWindowProcW(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lPar
// v2.03.50: fix - do clip cursor only after the window has got focus
HRESULT res;
res = (HRESULT)-1;
+ if(IsTraceW) ExplainMsg("DefWindowProcW", hwnd, Msg, wParam, lParam);
if(hwnd == dxw.GethWnd()) res=FixWindowProc("DefWindowProcW", hwnd, Msg, wParam, &lParam);
if (res==(HRESULT)-1) res = (*pDefWindowProcW)(hwnd, Msg, wParam, lParam);
if((Msg == WM_SETFOCUS) && (dxw.dwFlags1 & CLIPCURSOR)) dxw.SetClipCursor();
@@ -3762,3 +3772,13 @@ BOOL WINAPI extEnumDisplayDevicesA(LPCSTR lpDevice, DWORD iDevNum, PDISPLAY_DEVI
}
return ret;
}
+
+INT_PTR WINAPI extDialogBoxIndirectParamA(HINSTANCE hInstance, LPCDLGTEMPLATE hDialogTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
+{
+ //INT_PTR ret;
+ // MessageBox(0, "DialogBoxIndirectParamA", "step", 0);
+ OutTrace("DialogBoxIndirectParamA: hInstance=%x pos=(%d,%d) size=(%dx%d) hWndParent=%x, lpDialogFunc=%x dwInitParam=%x\n",
+ hInstance, hDialogTemplate->x, hDialogTemplate->y, hDialogTemplate->cx, hDialogTemplate->cy, hWndParent, lpDialogFunc, dwInitParam);
+ return (*pDialogBoxIndirectParamA)(hInstance, hDialogTemplate, hWndParent, lpDialogFunc, dwInitParam);
+}
+
diff --git a/dll/winproc.cpp b/dll/winproc.cpp
index 59e58e7..155a447 100644
--- a/dll/winproc.cpp
+++ b/dll/winproc.cpp
@@ -196,6 +196,29 @@ static void dx_Cornerize(HWND hwnd)
LRESULT LastCursorPos;
+void ExplainMsg(char *ApiName, HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ char sPos[161];
+ sPos[160]=0;
+ sPos[0]=0;
+ switch(Msg){
+ case WM_WINDOWPOSCHANGING:
+ case WM_WINDOWPOSCHANGED:
+ LPWINDOWPOS wp;
+ wp = (LPWINDOWPOS)lParam;
+ sprintf_s(sPos, 160, " pos=(%d,%d) size=(%dx%d) flags=%x(%s)", wp->x, wp->y, wp->cx, wp->cy, wp->flags, ExplainWPFlags(wp->flags));
+ break;
+ case WM_MOVE:
+ sprintf_s(sPos, 160, " pos=(%d,%d)", HIWORD(lParam), LOWORD(lParam));
+ break;
+ case WM_SIZE:
+ static char *modes[5]={"RESTORED", "MINIMIZED", "MAXIMIZED", "MAXSHOW", "MAXHIDE"};
+ sprintf_s(sPos, 160, " mode=SIZE_%s size=(%dx%d)", modes[wParam % 5], HIWORD(lParam), LOWORD(lParam));
+ break;
+ }
+ OutTrace("%s[%x]: WinMsg=[0x%x]%s(%x,%x) %s\n", ApiName, hwnd, Msg, ExplainWinMessage(Msg), wParam, lParam, sPos);
+}
+
LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
POINT prev, curr;
@@ -220,27 +243,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
// v2.1.93: adjust clipping region
- if(IsTraceW){
- char sPos[161];
- sPos[160]=0;
- sPos[0]=0;
- switch(message){
- case WM_WINDOWPOSCHANGING:
- case WM_WINDOWPOSCHANGED:
- LPWINDOWPOS wp;
- wp = (LPWINDOWPOS)lparam;
- sprintf_s(sPos, 160, " pos=(%d,%d) size=(%dx%d) flags=%x(%s)", wp->x, wp->y, wp->cx, wp->cy, wp->flags, ExplainWPFlags(wp->flags));
- break;
- case WM_MOVE:
- sprintf_s(sPos, 160, " pos=(%d,%d)", HIWORD(lparam), LOWORD(lparam));
- break;
- case WM_SIZE:
- static char *modes[5]={"RESTORED", "MINIMIZED", "MAXIMIZED", "MAXSHOW", "MAXHIDE"};
- sprintf_s(sPos, 160, " mode=SIZE_%s size=(%dx%d)", modes[wparam % 5], HIWORD(lparam), LOWORD(lparam));
- break;
- }
- OutTrace("WindowProc[%x]: WinMsg=[0x%x]%s(%x,%x) %s\n", hwnd, message, ExplainWinMessage(message), wparam, lparam, sPos);
- }
+ if(IsTraceW) ExplainMsg("WindowProc", hwnd, message, wparam, lparam);
if(dxw.dwFlags3 & FILTERMESSAGES){
switch(message){
diff --git a/host/TabDirect3D.cpp b/host/TabDirect3D.cpp
index 40de20b..ebabb04 100644
--- a/host/TabDirect3D.cpp
+++ b/host/TabDirect3D.cpp
@@ -34,21 +34,6 @@ void CTabDirect3D::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_NOD3DRESET, cTarget->m_NoD3DReset);
DDX_Check(pDX, IDC_SUPPRESSD3DEXT, cTarget->m_SuppressD3DExt);
- // Ddraw tweaks
- DDX_Check(pDX, IDC_NOSYSMEMPRIMARY, cTarget->m_NoSysMemPrimary);
- DDX_Check(pDX, IDC_NOSYSMEMBACKBUF, cTarget->m_NoSysMemBackBuf);
- DDX_Check(pDX, IDC_FIXPITCH, cTarget->m_FixPitch);
- DDX_Check(pDX, IDC_POWER2WIDTH, cTarget->m_Power2Width);
- DDX_Check(pDX, IDC_FIXREFCOUNTER, cTarget->m_FixRefCounter);
- DDX_Check(pDX, IDC_RETURNNULLREF, cTarget->m_ReturnNullRef);
- DDX_Check(pDX, IDC_FORCESHEL, cTarget->m_ForcesHEL);
- DDX_Check(pDX, IDC_MINIMALCAPS, cTarget->m_MinimalCaps);
- DDX_Check(pDX, IDC_SETZBUFFERBITDEPTHS, cTarget->m_SetZBufferBitDepths);
- DDX_Check(pDX, IDC_DEINTERLACE, cTarget->m_Deinterlace);
- DDX_Check(pDX, IDC_LIMITDDRAW, cTarget->m_LimitDdraw);
- DDX_Check(pDX, IDC_SUPPRESSOVERLAY, cTarget->m_SuppressOverlay);
- DDX_CBIndex(pDX, IDC_DDWAWLIMITCOMBO, cTarget->m_MaxDdrawInterface);
-
// Texture management
DDX_Radio(pDX, IDC_TEXTURENONE, cTarget->m_TextureHandling);
diff --git a/host/TabDirectX2.cpp b/host/TabDirectX2.cpp
new file mode 100644
index 0000000..77569b1
--- /dev/null
+++ b/host/TabDirectX2.cpp
@@ -0,0 +1,54 @@
+// TabDirectX2.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "TargetDlg.h"
+#include "TabDirectX2.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CTabDirectX2 dialog
+
+CTabDirectX2::CTabDirectX2(CWnd* pParent /*=NULL*/)
+ : CDialog(CTabDirectX2::IDD, pParent)
+{
+ //{{AFX_DATA_INIT(CTabDirectX2)
+ // NOTE: the ClassWizard will add member initialization here
+ //}}AFX_DATA_INIT
+}
+
+void CTabDirectX2::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
+
+ // Ddraw tweaks
+ DDX_Check(pDX, IDC_NOSYSMEMPRIMARY, cTarget->m_NoSysMemPrimary);
+ DDX_Check(pDX, IDC_NOSYSMEMBACKBUF, cTarget->m_NoSysMemBackBuf);
+ DDX_Check(pDX, IDC_FIXPITCH, cTarget->m_FixPitch);
+ DDX_Check(pDX, IDC_POWER2WIDTH, cTarget->m_Power2Width);
+ DDX_Check(pDX, IDC_FIXREFCOUNTER, cTarget->m_FixRefCounter);
+ DDX_Check(pDX, IDC_RETURNNULLREF, cTarget->m_ReturnNullRef);
+ DDX_Check(pDX, IDC_FORCESHEL, cTarget->m_ForcesHEL);
+ DDX_Check(pDX, IDC_MINIMALCAPS, cTarget->m_MinimalCaps);
+ DDX_Check(pDX, IDC_SETZBUFFERBITDEPTHS, cTarget->m_SetZBufferBitDepths);
+ DDX_Check(pDX, IDC_DEINTERLACE, cTarget->m_Deinterlace);
+ DDX_Check(pDX, IDC_LIMITDDRAW, cTarget->m_LimitDdraw);
+ DDX_Check(pDX, IDC_SUPPRESSOVERLAY, cTarget->m_SuppressOverlay);
+ DDX_CBIndex(pDX, IDC_DDWAWLIMITCOMBO, cTarget->m_MaxDdrawInterface);
+}
+
+BEGIN_MESSAGE_MAP(CTabDirectX2, CDialog)
+ //{{AFX_MSG_MAP(CTabDirectX2)
+ // NOTE: the ClassWizard will add message map macros here
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CTabDirectX2 message handlers
+
diff --git a/host/TabDirectX2.h b/host/TabDirectX2.h
new file mode 100644
index 0000000..a89ee12
--- /dev/null
+++ b/host/TabDirectX2.h
@@ -0,0 +1,48 @@
+#if !defined(AFX_TabDirectX2_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_)
+#define AFX_TabDirectX2_H__798A9124_C906_446C_822D_322B5AB6C4C4__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+// TabDirect3D.h : header file
+//
+#include "resource.h"
+
+/////////////////////////////////////////////////////////////////////////////
+// CTabDirectX2 dialog
+
+class CTabDirectX2 : public CDialog
+{
+// Construction
+public:
+ CTabDirectX2(CWnd* pParent = NULL); // standard constructor
+
+// Dialog Data
+ //{{AFX_DATA(CTabDirectX2)
+ enum { IDD = IDD_TAB_DIRECTX };
+ // NOTE: the ClassWizard will add data members here
+ //}}AFX_DATA
+
+
+// Overrides
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CTabDirectX2)
+ protected:
+ virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
+ //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+
+ // Generated message map functions
+ //{{AFX_MSG(CTabDirectX2)
+ // NOTE: the ClassWizard will add member functions here
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+public:
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif
diff --git a/host/TabProgram.cpp b/host/TabProgram.cpp
index a6ccd8c..b088b33 100644
--- a/host/TabProgram.cpp
+++ b/host/TabProgram.cpp
@@ -51,6 +51,7 @@ void CTabProgram::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_CONFIRMONCLOSE, cTarget->m_ConfirmOnClose);
DDX_Check(pDX, IDC_TERMINATEONCLOSE, cTarget->m_TerminateOnClose);
DDX_Check(pDX, IDC_FULLSCREENONLY, cTarget->m_FullScreenOnly);
+ DDX_Check(pDX, IDC_SHOWHINTS, cTarget->m_ShowHints);
DDX_Check(pDX, IDC_SAVELOAD, cTarget->m_SaveLoad);
DDX_Check(pDX, IDC_KEEPASPECTRATIO, cTarget->m_KeepAspectRatio);
DDX_Check(pDX, IDC_NOBANNER, cTarget->m_NoBanner);
@@ -71,6 +72,8 @@ BEGIN_MESSAGE_MAP(CTabProgram, CDialog)
ON_BN_CLICKED(IDC_OPENLAUNCH, OnOpenLaunch)
ON_WM_DROPFILES()
//}}AFX_MSG_MAP
+ ON_STN_CLICKED(IDC_REGISTRY, &CTabProgram::OnStnClickedRegistry)
+ ON_STN_CLICKED(IDC_NOTES, &CTabProgram::OnStnClickedNotes)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
@@ -211,3 +214,26 @@ BOOL CTabProgram::OnInitDialog()
return TRUE;
}
+
+void CTabProgram::OnStnClickedRegistry()
+{
+ // TODO: Add your control notification handler code here
+ CDXTabCtrl *cTab = (CDXTabCtrl *)this->GetParent();
+ cTab->SwitchToTab(11);
+}
+
+void CTabProgram::OnStnClickedNotes()
+{
+ // TODO: Add your control notification handler code here
+ CDXTabCtrl *cTab = (CDXTabCtrl *)this->GetParent();
+ cTab->SwitchToTab(12);
+}
+
+ //CTabCtrl::OnLButtonDown(nFlags, point);
+
+ //if(m_tabCurrent != GetCurFocus()){
+ // m_tabPages[m_tabCurrent]->ShowWindow(SW_HIDE);
+ // m_tabCurrent=GetCurFocus();
+ // m_tabPages[m_tabCurrent]->ShowWindow(SW_SHOW);
+ // m_tabPages[m_tabCurrent]->SetFocus();
+ //}
diff --git a/host/TabProgram.h b/host/TabProgram.h
index d5779b0..2294918 100644
--- a/host/TabProgram.h
+++ b/host/TabProgram.h
@@ -46,6 +46,9 @@ protected:
CSpecialEdit m_EditPosX;
CSpecialEdit m_EditPosY;
afx_msg void OnDropFiles(HDROP hDropInfo);
+public:
+ afx_msg void OnStnClickedRegistry();
+ afx_msg void OnStnClickedNotes();
};
//{{AFX_INSERT_LOCATION}}
diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp
index d1763f0..7cdcb17 100644
--- a/host/TargetDlg.cpp
+++ b/host/TargetDlg.cpp
@@ -120,6 +120,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
m_Wow64Registry = FALSE;
m_Wow32Registry = FALSE;
m_FullScreenOnly = FALSE;
+ m_ShowHints = FALSE;
//m_FilterMessages = FALSE;
m_PeekAllMessages = FALSE;
m_NoWinPosChanges = FALSE;
@@ -255,6 +256,8 @@ BOOL CTargetDlg::OnInitDialog()
m_tabdxTabCtrl.InsertItem(i++, _T(sCaption));
LoadString(AfxGetResourceHandle(), DXW_TAB_DIRECTX, sCaption, sizeof(sCaption));
m_tabdxTabCtrl.InsertItem(i++, _T(sCaption));
+ LoadString(AfxGetResourceHandle(), DXW_TAB_DIRECTX2, sCaption, sizeof(sCaption));
+ m_tabdxTabCtrl.InsertItem(i++, _T(sCaption));
LoadString(AfxGetResourceHandle(), DXW_TAB_D3D, sCaption, sizeof(sCaption));
m_tabdxTabCtrl.InsertItem(i++, _T(sCaption));
LoadString(AfxGetResourceHandle(), DXW_TAB_TIMING, sCaption, sizeof(sCaption));
diff --git a/host/TargetDlg.h b/host/TargetDlg.h
index e135273..26fbf3a 100644
--- a/host/TargetDlg.h
+++ b/host/TargetDlg.h
@@ -72,6 +72,7 @@ public:
BOOL m_Wow64Registry;
BOOL m_Wow32Registry;
BOOL m_FullScreenOnly;
+ BOOL m_ShowHints;
BOOL m_NeedAdminCaps;
BOOL m_PeekAllMessages;
BOOL m_NoWinPosChanges;
diff --git a/host/dxTabCtrl.cpp b/host/dxTabCtrl.cpp
index eab7457..d34a24b 100644
--- a/host/dxTabCtrl.cpp
+++ b/host/dxTabCtrl.cpp
@@ -24,6 +24,7 @@
#include "TabProgram.h"
#include "TabHook.h"
#include "TabDirectX.h"
+#include "TabDirectX2.h"
#include "TabDirect3D.h"
#include "TabInput.h"
#include "TabTiming.h"
@@ -56,6 +57,7 @@ CDXTabCtrl::CDXTabCtrl()
m_tabPages[i++]=new CTabWindow;
m_tabPages[i++]=new CTabInput;
m_tabPages[i++]=new CTabDirectX;
+ m_tabPages[i++]=new CTabDirectX2;
m_tabPages[i++]=new CTabDirect3D;
m_tabPages[i++]=new CTabTiming;
m_tabPages[i++]=new CTabLogs;
@@ -85,6 +87,7 @@ void CDXTabCtrl::Init()
m_tabPages[i++]->Create(IDD_TAB_OUTPUT, this);
m_tabPages[i++]->Create(IDD_TAB_INPUT, this);
m_tabPages[i++]->Create(IDD_TAB_DIRECTX, this);
+ m_tabPages[i++]->Create(IDD_TAB_DIRECTX2, this);
m_tabPages[i++]->Create(IDD_TAB_D3D, this);
m_tabPages[i++]->Create(IDD_TAB_TIMING, this);
m_tabPages[i++]->Create(IDD_TAB_LOG, this);
@@ -141,9 +144,19 @@ void CDXTabCtrl::OnLButtonDown(UINT nFlags, CPoint point)
}
}
+void CDXTabCtrl::SwitchToTab(int pos)
+{
+ m_tabPages[m_tabCurrent]->ShowWindow(SW_HIDE);
+ SetCurSel(pos);
+ m_tabPages[pos]->ShowWindow(SW_SHOW);
+ m_tabPages[pos]->SetFocus();
+ m_tabCurrent=GetCurFocus();
+}
+
void CDXTabCtrl::OnOK()
{
for(int nCount=0; nCount < m_nNumberOfPages; nCount++){
m_tabPages[nCount]->UpdateData(TRUE);
}
}
+
diff --git a/host/dxTabCtrl.h b/host/dxTabCtrl.h
index 6a9e4cb..663561d 100644
--- a/host/dxTabCtrl.h
+++ b/host/dxTabCtrl.h
@@ -16,7 +16,7 @@ class CDXTabCtrl : public CTabCtrl
// Construction
public:
CDXTabCtrl();
- CDialog *m_tabPages[13]; // this must match the total number of tab elements!
+ CDialog *m_tabPages[14]; // this must match the total number of tab elements!
int m_tabCurrent;
int m_nNumberOfPages;
enum { IDD = IDC_TABPANEL };
@@ -28,6 +28,7 @@ public:
public:
void Init();
void SetRectangle();
+ void SwitchToTab(int);
// Overrides
// ClassWizard generated virtual function overrides
diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps
index 961baf3..47704cb 100644
Binary files a/host/dxwndhost.aps and b/host/dxwndhost.aps differ
diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc
index 3019b22..f470d77 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 a08136f..dcde0ee 100644
Binary files a/host/dxwndhost.vs2008.suo and b/host/dxwndhost.vs2008.suo differ
diff --git a/host/dxwndhost.vs2008.vcproj b/host/dxwndhost.vs2008.vcproj
index 2b33f7f..da995da 100644
--- a/host/dxwndhost.vs2008.vcproj
+++ b/host/dxwndhost.vs2008.vcproj
@@ -436,11 +436,11 @@
>
+
+
+
+
@@ -722,22 +730,22 @@
>
-
-
+
+
diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp
index c2e7f94..6a3bcac 100644
--- a/host/dxwndhostView.cpp
+++ b/host/dxwndhostView.cpp
@@ -216,6 +216,7 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
if(dlg->m_StartDebug) t->flags2 |= STARTDEBUG;
if(dlg->m_HotPatch) t->flags4 |= HOTPATCH;
if(dlg->m_FullScreenOnly) t->flags3 |= FULLSCREENONLY;
+ if(dlg->m_ShowHints) t->flags7 |= SHOWHINTS;
//if(dlg->m_FilterMessages) t->flags3 |= FILTERMESSAGES;
if(dlg->m_PeekAllMessages) t->flags3 |= PEEKALLMESSAGES;
if(dlg->m_NoWinPosChanges) t->flags5 |= NOWINPOSCHANGES;
@@ -505,6 +506,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
dlg->m_NoBanner = t->flags2 & NOBANNER ? 1 : 0;
dlg->m_StartDebug = t->flags2 & STARTDEBUG ? 1 : 0;
dlg->m_FullScreenOnly = t->flags3 & FULLSCREENONLY ? 1 : 0;
+ dlg->m_ShowHints = t->flags7 & SHOWHINTS ? 1 : 0;
//dlg->m_FilterMessages = t->flags3 & FILTERMESSAGES ? 1 : 0;
dlg->m_PeekAllMessages = t->flags3 & PEEKALLMESSAGES ? 1 : 0;
dlg->m_NoWinPosChanges = t->flags5 & NOWINPOSCHANGES ? 1 : 0;
diff --git a/host/host.aps b/host/host.aps
index 2ead7e8..3e288d4 100644
Binary files a/host/host.aps and b/host/host.aps differ
diff --git a/host/resource b/host/resource
index 3f0efa7..2d496ec 100644
Binary files a/host/resource and b/host/resource differ