diff --git a/Include/dxwnd.h b/Include/dxwnd.h
index c1d4cec..c018474 100644
--- a/Include/dxwnd.h
+++ b/Include/dxwnd.h
@@ -207,7 +207,7 @@
#define REUSEEMULATEDDC 0x00800000
#define CREATEDESKTOP 0x01000000 // creates a virtual desktop window to replace the real one
#define NOWINDOWHOOKS 0x02000000 // do not intercept window callback routines
-//#define NOMOUSEPROC 0x04000000 // don't process mouse x,y coordinates twice in WindowProc and MessageHook hookers
+#define SYNCPALETTE 0x04000000 // Syncronize GDI to DDRAW palette
// logging Tflags DWORD:
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general
diff --git a/build/dxwnd.dll b/build/dxwnd.dll
index 164a363..95f92cb 100644
--- a/build/dxwnd.dll
+++ b/build/dxwnd.dll
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d724989d76de31cdefc98848587998e2e3464ea49793397892e068d37db2c730
-size 593408
+oid sha256:aea2bada6a8f9329392fea5ab8975c3751d32c6a84c8f02924cdef0f42854dca
+size 595456
diff --git a/build/dxwnd.exe b/build/dxwnd.exe
index a960b3c..2f0682e 100644
--- a/build/dxwnd.exe
+++ b/build/dxwnd.exe
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:17c20de2bcab09a41568811d8227ff38f2411dd95c133e1252e2852293ab643f
-size 545280
+oid sha256:d242c24095ab0e76e32fe9d98821ab993f406512317a733859b531f466d160f7
+size 545792
diff --git a/build/dxwnd.ini b/build/dxwnd.ini
new file mode 100644
index 0000000..e99a2ff
--- /dev/null
+++ b/build/dxwnd.ini
@@ -0,0 +1,163 @@
+[window]
+exportpath=D:\DxWnd\exports\
+posx=1231
+posy=493
+sizx=320
+sizy=200
+exepath=D:\Games\Men in Black\
+[target]
+title0=Fin-Fin
+path0=D:\Games\Fin-Fin\v90seger\teoboot.exe
+launchpath0=D:\Games\Fin-Fin\v90seger\FinFin.exe
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+coord0=0
+flag0=-1465909214
+flagg0=1207959552
+flagh0=20
+flagi0=205520900
+flagj0=4224
+flagk0=327680
+tflag0=0
+initx0=0
+inity0=0
+minx0=0
+miny0=0
+maxx0=0
+maxy0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=-1
+swapeffect0=0
+title1=Men in Black
+path1=D:\Games\Men in Black\MiBd.exe
+launchpath1=
+module1=RWL21
+opengllib1=
+notes1=
+registry1=
+ver1=0
+coord1=0
+flag1=136314914
+flagg1=1209008128
+flagh1=20
+flagi1=138412036
+flagj1=4224
+flagk1=327680
+tflag1=-2147477245
+initx1=0
+inity1=0
+minx1=0
+miny1=0
+maxx1=0
+maxy1=0
+posx1=50
+posy1=50
+sizx1=800
+sizy1=600
+maxfps1=0
+initts1=0
+winver1=0
+maxres1=-1
+swapeffect1=0
+title2=STCC Swedish TouringCar Championship
+path2=D:\Games\STCC\STCC.exe
+launchpath2=
+module2=
+opengllib2=
+notes2=Still slow and choppy in emulation mode
+registry2=
+ver2=0
+coord2=0
+flag2=136314914
+flagg2=1207959552
+flagh2=-2147483628
+flagi2=138412036
+flagj2=268439680
+flagk2=69632
+tflag2=-2147477245
+initx2=0
+inity2=0
+minx2=0
+miny2=0
+maxx2=0
+maxy2=0
+posx2=50
+posy2=50
+sizx2=800
+sizy2=600
+maxfps2=0
+initts2=0
+winver2=0
+maxres2=-1
+swapeffect2=0
+title3=DOSBox.exe
+path3=D:\Program Files (x86)\DOSBox-0.74\DOSBox.exe
+launchpath3=
+module3=
+opengllib3=
+notes3=
+registry3=
+ver3=0
+coord3=0
+flag3=681574434
+flagg3=1744830464
+flagh3=20
+flagi3=138412036
+flagj3=4224
+flagk3=327680
+tflag3=0
+initx3=0
+inity3=0
+minx3=0
+miny3=0
+maxx3=0
+maxy3=0
+posx3=50
+posy3=50
+sizx3=800
+sizy3=600
+maxfps3=0
+initts3=0
+winver3=0
+maxres3=-1
+swapeffect3=0
+title4=Imperialism
+path4=D:\Games\Imperialism\Imperialism.exe
+launchpath4=
+module4=
+opengllib4=
+notes4=Note:\nMap zooming is currently not workind. Do not click on the magnifying glass, \nor the game will crash.
+registry4=
+ver4=0
+coord4=0
+flag4=1746935843
+flagg4=1209008128
+flagh4=20
+flagi4=4194308
+flagj4=128
+flagk4=0
+tflag4=0
+initx4=0
+inity4=0
+minx4=0
+miny4=0
+maxx4=0
+maxy4=0
+posx4=50
+posy4=50
+sizx4=800
+sizy4=600
+maxfps4=0
+initts4=0
+winver4=0
+maxres4=-1
+swapeffect4=0
diff --git a/build/exports/Fifa 99 (Direct3D).dxw b/build/exports/Fifa 99 (Direct3D).dxw
index f8c3673..9ebbd8a 100644
--- a/build/exports/Fifa 99 (Direct3D).dxw
+++ b/build/exports/Fifa 99 (Direct3D).dxw
@@ -27,5 +27,6 @@ initts0=0
winver0=0
maxres0=-1
notes0=
-flagk0=0
+flagk0=65536
swapeffect0=0
+registry0=
diff --git a/build/exports/Fin-Fin.dxw b/build/exports/Fin-Fin.dxw
index 321cc05..9b57ce1 100644
--- a/build/exports/Fin-Fin.dxw
+++ b/build/exports/Fin-Fin.dxw
@@ -1,17 +1,17 @@
[target]
title0=Fin-Fin
path0=D:\Games\Fin-Fin\v90seger\teoboot.exe
-launchpath0=D:\Games\Fin-Fin\v90seger\FinFin.exe
+launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
coord0=0
-flag0=-1465909214
+flag0=136314914
flagg0=1207959552
flagh0=20
-flagi0=205520900
+flagi0=138412036
flagj0=4224
flagk0=327680
tflag0=0
diff --git a/build/exports/Imperialism II.dxw b/build/exports/Imperialism II.dxw
index edc1d09..877dcee 100644
--- a/build/exports/Imperialism II.dxw
+++ b/build/exports/Imperialism II.dxw
@@ -6,9 +6,9 @@ opengllib0=
ver0=0
coord0=0
flag0=679485474
-flagg0=1207959552
-flagh0=32788
-flagi0=4
+flagg0=1209008128
+flagh0=20
+flagi0=4194308
tflag0=0
initx0=0
inity0=0
@@ -24,3 +24,9 @@ maxfps0=0
initts0=0
winver0=0
maxres0=0
+launchpath0=
+notes0=
+registry0=
+flagj0=0
+flagk0=262144
+swapeffect0=0
diff --git a/build/exports/Imperialism.dxw b/build/exports/Imperialism.dxw
index 1678029..7c57902 100644
--- a/build/exports/Imperialism.dxw
+++ b/build/exports/Imperialism.dxw
@@ -5,11 +5,11 @@ module0=
opengllib0=
ver0=0
coord0=0
-flag0=1744839201
-flagg0=134217728
-flagh0=32788
+flag0=1746935843
+flagg0=1209008128
+flagh0=20
flagi0=4194308
-tflag0=6466
+tflag0=0
initx0=0
inity0=0
minx0=0
@@ -24,3 +24,9 @@ maxfps0=0
initts0=0
winver0=0
maxres0=-1
+launchpath0=
+notes0=Note:\nMap zooming is currently not workind. Do not click on the magnifying glass, \nor the game will crash.
+registry0=
+flagj0=128
+flagk0=0
+swapeffect0=0
diff --git a/build/exports/Men in Black.dxw b/build/exports/Men in Black.dxw
new file mode 100644
index 0000000..c21f90b
--- /dev/null
+++ b/build/exports/Men in Black.dxw
@@ -0,0 +1,32 @@
+[target]
+title0=Men in Black
+path0=D:\Games\Men in Black\MiBd.exe
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+coord0=0
+flag0=136314914
+flagg0=1207959552
+flagh0=20
+flagi0=138412036
+flagj0=4224
+flagk0=67436544
+tflag0=0
+initx0=0
+inity0=0
+minx0=0
+miny0=0
+maxx0=0
+maxy0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=-1
+swapeffect0=0
diff --git a/build/exports/Take no Prisoners.dxw b/build/exports/Take no Prisoners.dxw
index 9040b3b..1f21887 100644
--- a/build/exports/Take no Prisoners.dxw
+++ b/build/exports/Take no Prisoners.dxw
@@ -27,3 +27,6 @@ notes0=
flagj0=128
winver0=0
maxres0=0
+registry0=
+flagk0=65536
+swapeffect0=0
diff --git a/build/exports/Virtua Fighter.dxw b/build/exports/Virtua Fighter.dxw
new file mode 100644
index 0000000..f6995fa
--- /dev/null
+++ b/build/exports/Virtua Fighter.dxw
@@ -0,0 +1,32 @@
+[target]
+title0=Virtua Fighter
+path0=D:\Games\Virtua Fighter\VFPC.EXE
+launchpath0=
+module0=
+opengllib0=
+notes0=
+registry0=
+ver0=0
+coord0=0
+flag0=136314914
+flagg0=1207959552
+flagh0=20
+flagi0=134217732
+flagj0=4224
+flagk0=327680
+tflag0=0
+initx0=0
+inity0=0
+minx0=0
+miny0=0
+maxx0=0
+maxy0=0
+posx0=50
+posy0=50
+sizx0=800
+sizy0=600
+maxfps0=0
+initts0=0
+winver0=0
+maxres0=-1
+swapeffect0=0
diff --git a/build/exports/dxwnd.ini b/build/exports/dxwnd.ini
deleted file mode 100644
index 33f790b..0000000
--- a/build/exports/dxwnd.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[window]
-posx=1363
-posy=191
-sizx=320
-sizy=542
diff --git a/build/redist/S3DTKW.DLL b/build/redist/S3DTKW.DLL
new file mode 100644
index 0000000..00a8e5d
Binary files /dev/null and b/build/redist/S3DTKW.DLL differ
diff --git a/build/registry/dxwnd.688IHK.reg b/build/registry/dxwnd.688IHK.reg
deleted file mode 100644
index 997c54f..0000000
--- a/build/registry/dxwnd.688IHK.reg
+++ /dev/null
@@ -1,15 +0,0 @@
-# 688I Hunter Killer: nocd patch
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Jane's Combat Simulations]
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Jane's Combat Simulations\688I Hunter-Killer]
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Jane's Combat Simulations\688I Hunter-Killer\1.0]
-"cdInstallPath"="d:\\games\\688\\"
-"sfxInstallPath"="d:\\games\\688\\sfx\\sfx.agg+"
-"midiInstallPath"="d:\\games\\688\\midi"
-"objectsInstallPath"="d:\\games\\688\\objects"
-"graphicsInstallPath"="d:\\games\\688\\graphics"
-"booksInstallPath"="d:\\games\\688\\books"
-"rootInstallPath"="d:\\games\\688\\"
-
diff --git a/build/registry/dxwnd.Die Hard Trilogy.REG b/build/registry/dxwnd.Die Hard Trilogy.REG
deleted file mode 100644
index 3b1826b..0000000
--- a/build/registry/dxwnd.Die Hard Trilogy.REG
+++ /dev/null
@@ -1,69 +0,0 @@
-
-[HKEY_LOCAL_MACHINE]
-[HKEY_LOCAL_MACHINE\SOFTWARE]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard]
-"Install Directory"="d:\\games\\Die Hard Trilogy"
-"FMV Installed"=dword:00000000
-"Data Installed"=dword:00000001
-"Abnormal Termination"=dword:00000000
-"StartupFolder"="Fox Interactive"
-"Version"="1.00"
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\Configuration]
-"complexity"=dword:00000000
-"cutoff"=dword:00000000
-"perspective"=dword:00000000
-"Quality"=dword:00000000
-"Use Hardware"=dword:00000000
-"Preferred Height"=dword:00000258
-"Preferred Width"=dword:00000320
-"lighting"=dword:00000001
-"texture quality"=dword:00000000
-"Language"=dword:00000000
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d1]
-"Input"=dword:00000000
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d1\Keyboard]
-"keyboard"=dword:00000001
-"speed"=dword:00000000
-"sensitivity"=dword:00000000
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d1\Joystick]
-"joystick"=dword:00000001
-"speed"=dword:00000000
-"sensitivity"=dword:00000000
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d1\Mouse]
-"mouse"=dword:00000001
-"speed"=dword:00000000
-"sensitivity"=dword:00000000
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d2]
-"Input"=dword:00000000
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d2\Keyboard]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d2\Keyboard\speed]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d2\Keyboard\sensitivity]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d2\Joystick]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d2\Joystick\speed]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d2\Joystick\sensitivity]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d2\Mouse]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d2\Mouse\speed]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d2\Mouse\sensitivity]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d3]
-"Input"=dword:00000000
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d3\Keyboard]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d3\Keyboard\speed]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d3\Keyboard\sensitivity]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d3\Joystick]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d3\Joystick\speed]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d3\Joystick\sensitivity]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d3\Mouse]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d3\Mouse\speed]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\d3\Mouse\sensitivity]
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Die Hard\Sound]
-"Music Volume"=dword:000000ff
-"Music Mute"=dword:00000000
-"SFX Volume"=dword:000000ff
-"SFX Mute"=dword:00000000
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Fox Interactive]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Fox Interactive\Die Hard Trilogy]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Fox Interactive\Die Hard Trilogy\1.0]
diff --git a/build/registry/dxwnd.Hercules.REG b/build/registry/dxwnd.Hercules.REG
deleted file mode 100644
index 0bcb9f8..0000000
--- a/build/registry/dxwnd.Hercules.REG
+++ /dev/null
@@ -1,14 +0,0 @@
-
-[HKEY_LOCAL_MACHINE\SOFTWARE]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Disney Interactive]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Disney Interactive\Hercules]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Disney Interactive\Hercules\1.00]
-"DATA"="DATA\\"
-"User Path"=".\\"
-"BitVersion"="32 Bit"
-"PATH"=".\\"
-"EntryPoint"=".\\Hercules.exe"
-"Help"=".\\hercules.hlp"
-"Uninstall"="C:\\WINDOWS\\uninst.exe -fC:\\Hercules\\DeIsL1.isu"
-"Config"=hex:05,ca,ab,07,01,01,01,00,03,01,01,00,01,01,01,00,ff,3f,00,00,01,00,ff,ff,03,00,00,00,26,00,28,00,25,00,27,00,58,00,5a,00,43,00,44,00,53,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
diff --git a/build/registry/dxwnd.Requiem.reg b/build/registry/dxwnd.Requiem.reg
deleted file mode 100644
index 71b12c0..0000000
--- a/build/registry/dxwnd.Requiem.reg
+++ /dev/null
@@ -1,10 +0,0 @@
-# Requiem Avenging Angel: DirectX version patch
-
-[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\DirectX]
-"Version"="4.07.00.0704"
-
-[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectX]
-"Version"="4.07.00.0704"
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX]
-"Version"="4.07.00.0704"
diff --git a/build/registry/dxwnd.Settlers 3.REG b/build/registry/dxwnd.Settlers 3.REG
deleted file mode 100644
index f478303..0000000
--- a/build/registry/dxwnd.Settlers 3.REG
+++ /dev/null
@@ -1,29 +0,0 @@
-REGEDIT4
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Bluebyte]
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Bluebyte\Siedler3]
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Bluebyte\Siedler3\1.0]
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Bluebyte\Siedler3\1.0\Patches]
-"convert"="0"
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Bluebyte\Siedler3\1.0\General]
-"Resolution"=dword:00000000
-"NoAlpha"=dword:00000000
-"FogSpeed"=dword:00000003
-"GDIMouse"=dword:00000000
-"WaitVBlank"=dword:00000001
-"ScrollMode"=dword:00000001
-"ScrollSpeed"=dword:00000005
-"BuildHelp"=dword:00000001
-"SoundFormat"=dword:00000001
-"CDAudio"=dword:00000000
-"VideoFormat"=dword:00000000
-"MessageLevel"=dword:00000009
-"Intro"=dword:00000000
-"SerialNumber"="6784-1136-5836-4351-2191"
-"Playername"="TP"
-"Language"=dword:00000000
-
diff --git a/build/registry/dxwnd.SimCity 2000.reg b/build/registry/dxwnd.SimCity 2000.reg
deleted file mode 100644
index 9728bbc..0000000
--- a/build/registry/dxwnd.SimCity 2000.reg
+++ /dev/null
@@ -1,47 +0,0 @@
-[HKEY_CURRENT_USER\SOFTWARE]
-[HKEY_CURRENT_USER\SOFTWARE\Maxis]
-[HKEY_CURRENT_USER\SOFTWARE\Maxis\SimCity 2000]
-[HKEY_CURRENT_USER\SOFTWARE\Maxis\SimCity 2000\Localize]
-"Language"="USA"
-
-[HKEY_CURRENT_USER\SOFTWARE\Maxis\SimCity 2000\Options]
-"AutoBudget"=dword:00000000
-"AutoGoto"=dword:00000001
-"AutoSave"=dword:00000000
-"Disasters"=dword:00000001
-"Music"=dword:00000001
-"Sound"=dword:00000001
-"Speed"=dword:00000001
-
-[HKEY_CURRENT_USER\SOFTWARE\Maxis\SimCity 2000\Paths]
-"Cities"="D:\\Games\\Simcity 2000\\Cities"
-"Data"="D:\\Games\\Simcity 2000\\Data"
-"Goodies"="D:\\Games\\Simcity 2000\\Goodies"
-"Graphics"="D:\\Games\\Simcity 2000\\Bitmaps"
-"Home"="D:\\Games\\Simcity 2000"
-"Music"="D:\\Games\\Simcity 2000\\Sounds"
-"SaveGame"="D:\\Games\\Simcity 2000\\Cities"
-"Folder"="Maxis"
-"Scenarios"="D:\\Games\\Simcity 2000\\Scenario"
-"TileSets"="D:\\Games\\Simcity 2000\\ScurkArt"
-
-[HKEY_CURRENT_USER\SOFTWARE\Maxis\SimCity 2000\Registration]
-"Company Name"="nameless mutual loan company"
-"Mayor Name"="Jane Doe"
-
-[HKEY_CURRENT_USER\SOFTWARE\Maxis\SimCity 2000\SCURK]
-"CycleColors"=dword:00000001
-"GridHeight"=dword:00000008
-"GridWidth"=dword:00000008
-"ShowClipRegion"=dword:00000000
-"ShowDrawGrid"=dword:00000000
-"SnapToGrid"=dword:00000000
-"Sound"=dword:00000001
-
-[HKEY_CURRENT_USER\SOFTWARE\Maxis\SimCity 2000\Version]
-"SimCity 2000"=dword:00000100
-"SCURK"=dword:00000100
-
-[HKEY_CURRENT_USER\SOFTWARE\Maxis\SimCity 2000\Windows]
-"Color Check"=dword:00000000
-"Display"="8 1"
diff --git a/build/registry/dxwnd.Street Fighters Zero.REG b/build/registry/dxwnd.Street Fighters Zero.REG
deleted file mode 100644
index f6fbd85..0000000
--- a/build/registry/dxwnd.Street Fighters Zero.REG
+++ /dev/null
@@ -1,7 +0,0 @@
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\CAPCOM]
-[HKEY_LOCAL_MACHINE\SOFTWARE\CAPCOM\STREETFIGHTERZERO]
-""="..\\bin"
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\CAPCOM\STREETFIGHTERZERO\1.0]
-
diff --git a/build/registry/dxwnd.chaos island.REG b/build/registry/dxwnd.chaos island.REG
deleted file mode 100644
index 678c936..0000000
--- a/build/registry/dxwnd.chaos island.REG
+++ /dev/null
@@ -1,16 +0,0 @@
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\]
-[HKEY_LOCAL_MACHINE\SOFTWARE\DreamWorks Interactive]
-[HKEY_LOCAL_MACHINE\SOFTWARE\DreamWorks Interactive\ChaosIsland]
-"Data Drive"=".\\"
-"PID"="71239-442-3367621-91206"
-"Installed Directory"=".\\"
-"Run File"=".\\"
-"InstallType"=dword:00000001
-"KBPS_OTHER"=dword:00000000
-"KBPS"=dword:00000000
-"Installed"=dword:00000001
-"NextTip"=dword:00000001
-"StartupTips"=dword:00000001
-"FPS"=dword:00000003
-
diff --git a/build/registry/dxwnd.close combat 2.REG b/build/registry/dxwnd.close combat 2.REG
deleted file mode 100644
index 9ded368..0000000
--- a/build/registry/dxwnd.close combat 2.REG
+++ /dev/null
@@ -1,28 +0,0 @@
-// Close Combat 2 a bridge too far
-
-[HKEY_LOCAL_MACHINE\SOFTWARE]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games\Close Combat]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games\Close Combat\2.00]
-"PID"="00000-000-0000000-00000"
-"InstalledTo"=".\\"
-"ScreenX"="800"
-"ScreenY"="600"
-"Version"="2.0"
-"IType"=hex:01,00,00,00
-"GameSpeed"=hex:01,00,00,00
-"ShowDSAlert"=hex:01,00,00,00
-"ShowQuickHelp"=hex:01,00,00,00
-"PlaySounds"=hex:01,00,00,00
-"PlayMusic"=hex:01,00,00,00
-"PlayVideos"=hex:00,00,00,00
-"FCopy"=hex:00,00,00,00
-"SMethod"=hex:00,00,00,00
-"Save"=hex:00,00,00,00
-"ShowTrees"=hex:01,00,00,00
-"StaticFPS"=hex:0a,00,00,00
-"InstalledFrom"=".\\"
-"Launched"="1"
-"VersionType"="RetailVersion"
-
diff --git a/build/registry/dxwnd.road rash.reg b/build/registry/dxwnd.road rash.reg
deleted file mode 100644
index 03f7ff3..0000000
--- a/build/registry/dxwnd.road rash.reg
+++ /dev/null
@@ -1,13 +0,0 @@
-[HKEY_LOCAL_MACHINE\SOFTWARE]
-
-; Road Rash
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\RoadRash 95]
-""=""
-"Path"="."
-"CheckDialup"=hex:00
-"ChatState"=hex:02
-"MiniDash"=hex:00
-"OpponentList"=hex:01
-
diff --git a/build/registry/dxwnd.tak.reg b/build/registry/dxwnd.tak.reg
deleted file mode 100644
index 2edbbea..0000000
--- a/build/registry/dxwnd.tak.reg
+++ /dev/null
@@ -1,15 +0,0 @@
-
-[HKEY_LOCAL_MACHINE\Software]
-[HKEY_LOCAL_MACHINE\Software\Cavedog Entertainment]
-[HKEY_LOCAL_MACHINE\Software\Cavedog Entertainment\Total Annihilation: Kingdoms]
-[HKEY_LOCAL_MACHINE\Software\Cavedog Entertainment\Total Annihilation: Kingdoms\1.00.000]
-
-[HKEY_CURRENT_USER\Software\Cavedog Entertainment]
-[HKEY_CURRENT_USER\Software\Cavedog Entertainment\Kingdoms]
-"InstallDirectX"=dword:00000001
-
-[HKEY_CURRENT_USER\Software\Cavedog Entertainment\Kingdoms\InterfaceOptions]
-"Language"="ENGLISH"
-
-[HKEY_CURRENT_USER\Software\Cavedog Entertainment\Cartographer]
-
diff --git a/build/registry/dxwnd.the Divide.REG b/build/registry/dxwnd.the Divide.REG
deleted file mode 100644
index 42406af..0000000
--- a/build/registry/dxwnd.the Divide.REG
+++ /dev/null
@@ -1,20 +0,0 @@
-[HKEY_LOCAL_MACHINE\SOFTWARE]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Viacom New Media]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Viacom New Media\The Divide]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Viacom New Media\The Divide\1.0]
-"Display Name"="\"The Divide\""
-"InstallDir"="."
-"InstallSrc"="."
-"CDROM"=".:"
-"ProgramDir"="."
-"LevelsDir"=".\\Levels\\"
-"MoviesDir"=".\\Movies\\"
-"SoundsDir"=".\\pc\\"
-
-
-[HKEY_CURRENT_USER\SOFTWARE\Viacom New Media\The Divide\Config]
-"Game Settings"=hex:20,03,00,00,58,02,00,00,20,03,00,00,58,02,00,00\
-00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,01,00,00,00,00\
-00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00\
-00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
diff --git a/build/registry/dxwnd.the Hive.reg b/build/registry/dxwnd.the Hive.reg
deleted file mode 100644
index 58b1a93..0000000
--- a/build/registry/dxwnd.the Hive.reg
+++ /dev/null
@@ -1,27 +0,0 @@
-# The Hive registry settings
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Rainbow]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Rainbow\TheHIVE]
-[HKEY_LOCAL_MACHINE\SOFTWARE\Rainbow\TheHIVE\GlobalInfo]
-"currentPlayer"="GHO"
-"workingGameDirectory"=".\\"
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\Rainbow\TheHIVE\GHO]
-"userInfo"=dword:4ac9fbcb
-"displayMode"=dword:000003fb
-"profile"=dword:00010020
-
-# displaymode = 3F7 (fair)
-# displaymode = 3F9 (good)
-# displaymode = 3Fa (better)
-# displaymode = 3Fb (best)
-
-# userInfo = 4ac9fbcb (1st level)
-# userInfo = 4B49fADB (2nd level)
-# userinfo = d249f6d6 (??)
-
-# profile = 0x00010020 (practice)
-# profile = 0x00010000 (normal)
-# profile = 0x00010010 (expert)
-
-# profile = 0x.......1 (flip joystick direction)
diff --git a/build/registry/dxwnd.the Industry Giant.reg b/build/registry/dxwnd.the Industry Giant.reg
deleted file mode 100644
index 718f49f..0000000
--- a/build/registry/dxwnd.the Industry Giant.reg
+++ /dev/null
@@ -1,9 +0,0 @@
-[HKEY_LOCAL_MACHINE\SOFTWARE]
-
-; the Industry Giant
-
-
-[HKEY_LOCAL_MACHINE\SOFTWARE\JoWooD]
-[HKEY_LOCAL_MACHINE\SOFTWARE\JoWooD\The IndustryGiant]
-"InstallPath"="."
-
diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp
index 560e7f9..d03599d 100644
--- a/dll/ddraw.cpp
+++ b/dll/ddraw.cpp
@@ -2321,6 +2321,18 @@ static HRESULT BuildPrimaryEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf
// "Hoyle Casino Empire" opens a primary surface and NOT a backbuffer ....
iBakBufferVersion=dxversion; // v2.03.01
+ // build a default System palette and apply it to primary surface
+ if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
+ (dxw.dwFlags6 & SYNCPALETTE)){
+ if(lpDDP == NULL){
+ res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
+ if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
+ }
+ // this must be done after hooking - who knows why?
+ res=(*pSetPalette)(*lplpdds, lpDDP);
+ if(res) OutTraceE("CreateSurface: SetPalette ERROR err=%x at %d\n", res, __LINE__);
+ }
+
// set a global capability value for surfaces that have to blit to primary
// DDSCAPS_OFFSCREENPLAIN seems required to support the palette in memory surfaces
// DDSCAPS_SYSTEMMEMORY makes operations faster, but it is not always good...
@@ -2386,6 +2398,18 @@ static HRESULT BuildPrimaryFlippable(LPDIRECTDRAW lpdd, CreateSurface_Type pCrea
// "Hoyle Casino Empire" opens a primary surface and NOT a backbuffer ....
iBakBufferVersion=dxversion; // v2.03.01
+ // build a default System palette and apply it to primary surface
+ if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
+ (dxw.dwFlags6 & SYNCPALETTE)){
+ if(lpDDP == NULL){
+ res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
+ if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
+ }
+ // this must be done after hooking - who knows why?
+ res=(*pSetPalette)(*lplpdds, lpDDP);
+ if(res) OutTraceE("CreateSurface: SetPalette ERROR err=%x at %d\n", res, __LINE__);
+ }
+
// set a global capability value for surfaces that have to blit to primary
dwBackBufferCaps = (DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY);
// on WinXP Fifa 99 doesn't like DDSCAPS_SYSTEMMEMORY cap, so better to leave a way to unset it....
@@ -2496,6 +2520,17 @@ static HRESULT BuildBackBufferEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateS
HookDDSurfaceGeneric(lplpdds, dxversion); // added !!!
iBakBufferVersion=dxversion; // v2.02.31
+ if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
+ (dxw.dwFlags6 & SYNCPALETTE)){
+ if(lpDDP == NULL){
+ res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
+ if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
+ }
+ // this must be done after hooking - who knows why?
+ res=(*pSetPalette)(*lplpdds, lpDDP);
+ if(res) OutTraceE("CreateSurface: SetPalette ERROR err=%x at %d\n", res, __LINE__);
+ }
+
// V2.1.85/V2.2.34: tricky !!!!
// When a real backbuffer is created, it has a reference to its frontbuffer.
// some games (Monopoly 3D) may depend on this setting - i.e. they could close
@@ -2541,6 +2576,17 @@ static HRESULT BuildBackBufferFlippable(LPDIRECTDRAW lpdd, CreateSurface_Type pC
HookDDSurfaceGeneric(lplpdds, dxversion); // added !!!
iBakBufferVersion=dxversion; // v2.02.31
+ if((ddsd.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) &&
+ (dxw.dwFlags6 & SYNCPALETTE)){
+ if(lpDDP == NULL){
+ res=(*pCreatePalette)(lpdd, DDPCAPS_8BIT|DDPCAPS_ALLOW256, DefaultSystemPalette, &lpDDP, NULL);
+ if(res) OutTrace("CreateSurface: CreatePalette ERROR err=%x at %d\n", res, __LINE__);
+ }
+ // this must be done after hooking - who knows why?
+ res=(*pSetPalette)(*lplpdds, lpDDP);
+ if(res) OutTraceE("CreateSurface: SetPalette ERROR err=%x at %d\n", res, __LINE__);
+ }
+
return DD_OK;
}
diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp
index b45ff20..b376ba1 100644
--- a/dll/dxhook.cpp
+++ b/dll/dxhook.cpp
@@ -113,7 +113,7 @@ static char *Flag6Names[32]={
"NOSYSMEMPRIMARY", "NOSYSMEMBACKBUF", "CONFIRMONCLOSE", "TERMINATEONCLOSE",
"FLIPEMULATION", "SETZBUFFERBITDEPTHS", "SHAREDDC", "WOW32REGISTRY",
"STRETCHMOVIES", "BYPASSMCI", "FIXPIXELZOOM", "REUSEEMULATEDDC",
- "CREATEDESKTOP", "NOWINDOWHOOKS", "--NOMOUSEPROC--", "",
+ "CREATEDESKTOP", "NOWINDOWHOOKS", "SYNCPALETTE", "",
"", "", "", "",
};
diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp
index dcbf3a9..fda1426 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.41"
+#define VERSION "2.03.42"
#define DDTHREADLOCK 1
//#define LOCKTHREADS
diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo
index f07b3d7..9f6c481 100644
Binary files a/dll/dxwnd.vs2008.suo and b/dll/dxwnd.vs2008.suo differ
diff --git a/dll/gdi32.cpp b/dll/gdi32.cpp
index 13f2c62..2e8e04a 100644
--- a/dll/gdi32.cpp
+++ b/dll/gdi32.cpp
@@ -231,6 +231,7 @@ extern HRESULT WINAPI sBlt(char *, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURF
extern GetDC_Type pGetDC;
extern ReleaseDC_Type pReleaseDC;
+#if 0
static COLORREF GetMatchingColor(COLORREF crColor)
{
int iDistance, iMinDistance;
@@ -306,6 +307,7 @@ static COLORREF GetMatchingColor(COLORREF crColor)
}
return crColor;
}
+#endif
//--------------------------------------------------------------------------------------------
//
@@ -564,17 +566,19 @@ HPALETTE WINAPI extSelectPalette(HDC hdc, HPALETTE hpal, BOOL bForceBackground)
OutTraceDW("GDI.SelectPalette: hdc=%x hpal=%x ForceBackground=%x\n", hdc, hpal, bForceBackground);
if(hdc==dxw.RealHDC) hdc= dxw.VirtualHDC;
- if(dxw.dwFlags1 & EMULATESURFACE){
+ if((dxw.dwFlags1 & EMULATESURFACE) && (dxw.dwFlags6 & SYNCPALETTE) && bFlippedDC){
hDesktopPalette=hpal;
- PALETTEENTRY lppe[256];
- int nEntries;
- if(bFlippedDC) hdc = hFlippedDC;
- ret=(*pGDISelectPalette)(hdc, hpal, bForceBackground);
- nEntries=(*pGetPaletteEntries)(hpal, 0, 256, lppe);
- //mySetPalette(0, nEntries, lppe);
- //OutTraceDW("GDI.SelectPalette: register desktop palette hpal=%x nEntries=%d\n", hpal, nEntries);
- OutTraceDW("GDI.SelectPalette: remapped hdc=%x hpal=%x nEntries=%d\n", hdc, hpal, nEntries);
- if(IsDebug && nEntries) dxw.DumpPalette(nEntries, lppe);
+ if(hFlippedDC){
+ hdc = hFlippedDC;
+ ret=(*pGDISelectPalette)(hdc, hpal, bForceBackground);
+ }
+ else{
+ LPDIRECTDRAWSURFACE lpDDSPrim;
+ lpDDSPrim = dxwss.GetPrimarySurface();
+ (*pGetDC)(lpDDSPrim, &hdc);
+ ret=(*pGDISelectPalette)(hdc, hpal, bForceBackground);
+ (*pReleaseDC)(lpDDSPrim, hdc);
+ }
}
else{
ret=(*pGDISelectPalette)(hdc, hpal, bForceBackground);
@@ -591,13 +595,13 @@ BOOL WINAPI extAnimatePalette(HPALETTE hpal, UINT iStartIndex, UINT cEntries, co
return TRUE;
}
-UINT WINAPI extRealizePalette(HDC hdc)
+UINT WINAPI extRealizePalette(HDC hdc)
{
UINT ret;
OutTraceDW("GDI.RealizePalette: hdc=%x\n", hdc);
- if(dxw.dwFlags1 & EMULATESURFACE){
+ if((dxw.dwFlags1 & EMULATESURFACE) && (dxw.dwFlags6 & SYNCPALETTE)){
PALETTEENTRY PalEntries[256];
UINT nEntries;
if(bFlippedDC) hdc = hFlippedDC;
@@ -608,6 +612,11 @@ UINT WINAPI extRealizePalette(HDC hdc)
mySetPalette(0, nEntries, PalEntries);
if(IsDebug && nEntries) dxw.DumpPalette(nEntries, PalEntries);
ret=nEntries;
+
+ HRESULT res;
+ extern LPDIRECTDRAWPALETTE lpDDP;
+ extern SetEntries_Type pSetEntries;
+ res=(*pSetEntries)(lpDDP, 0, 0, 256, PalEntries);
}
else
ret=(*pGDIRealizePalette)(hdc);
@@ -623,7 +632,7 @@ UINT WINAPI extGetSystemPaletteEntries(HDC hdc, UINT iStartIndex, UINT nEntries,
OutTraceDW("GetSystemPaletteEntries: hdc=%x start=%d num=%d\n", hdc, iStartIndex, nEntries);
ret=(*pGDIGetSystemPaletteEntries)(hdc, iStartIndex, nEntries, lppe);
OutTraceDW("GetSystemPaletteEntries: ret=%d\n", ret);
- if((ret == 0) && (dxw.dwFlags1 & EMULATESURFACE)) {
+ if((ret == 0) && (dxw.dwFlags1 & EMULATESURFACE) && (dxw.dwFlags6 & SYNCPALETTE)) {
// use static default data...
for(UINT idx=0; idx 256) ? nEntries : 256; // "M.I.B." patch ....
+ if((res < nEntries) && (dxw.dwFlags6 & SYNCPALETTE)) {
+ res = nEntries;
+ OutTraceDW("GDI.GetPaletteEntries: faking missing entries=%d\n", res);
}
if(IsDebug && res) dxw.DumpPalette(res, &lppe[iStartIndex]);
//mySetPalette(0, nEntries, lppe);
diff --git a/dll/msvfw.cpp b/dll/msvfw.cpp
index 49d9bdc..cda90b5 100644
--- a/dll/msvfw.cpp
+++ b/dll/msvfw.cpp
@@ -20,7 +20,7 @@ BOOL WINAPI extDrawDibDraw(HDRAWDIB, HDC, int, int, int, int, LPBITMAPINFOHEADER
static HookEntry_Type Hooks[]={
//{HOOK_HOT_CANDIDATE, "ICSendMessage", (FARPROC)NULL, (FARPROC *)&pICSendMessage, (FARPROC)extICSendMessage},
//{HOOK_HOT_CANDIDATE, "ICOpen", (FARPROC)NULL, (FARPROC *)&pICOpen, (FARPROC)extICOpen},
- //{HOOK_HOT_CANDIDATE, "MCIWndCreateA", (FARPROC)NULL, (FARPROC *)&pMCIWndCreateA, (FARPROC)extMCIWndCreateA}, // "Man in Black" - beware: this is NOT STDCALL!!!
+ {HOOK_HOT_CANDIDATE, "MCIWndCreateA", (FARPROC)NULL, (FARPROC *)&pMCIWndCreateA, (FARPROC)extMCIWndCreateA}, // "Man in Black" - beware: this is NOT STDCALL!!!
{HOOK_HOT_CANDIDATE, "ICGetDisplayFormat", (FARPROC)NULL, (FARPROC *)&pICGetDisplayFormat, (FARPROC)extICGetDisplayFormat}, // "Man in Black" - beware: this is NOT STDCALL!!!
{HOOK_HOT_CANDIDATE, "ICDrawBegin", (FARPROC)NULL, (FARPROC *)&pICDrawBegin, (FARPROC)extICDrawBegin},
{HOOK_HOT_CANDIDATE, "DrawDibDraw", (FARPROC)NULL, (FARPROC *)&pDrawDibDraw, (FARPROC)extDrawDibDraw},
@@ -172,17 +172,31 @@ HWND extMCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCTS
HWND g_hwndMCIWnd;
OutTraceDW("MCIWndCreateA: hwnd=%x hInst=%x style=%x(%s) file=%s\n",
hwndParent, hInstance, dwStyle, ExplainMCIWndCreateFlags(dwStyle), szFile);
- if(dxw.dwFlags6 & NOMOVIES) return NULL;
+ if(dxw.dwFlags6 & NOMOVIES) {
+ OutTraceDW("MCIWndCreateA: SUPPRESSED\n");
+ return NULL;
+ }
g_hwndMCIWnd = (*pMCIWndCreateA)(hwndParent, hInstance, dwStyle, szFile);
// look at https://msdn.microsoft.com/en-us/library/windows/desktop/dd757178%28v=vs.85%29.aspx
if(dxw.dwFlags5 & REMAPMCI){
- (*pSetWindowPos)(g_hwndMCIWnd, // window to resize
- NULL, // z-order: don't care
- (800-640)/2, (600-480)/2, 640, 480,
+ // since there seem to be no way to stretch the movie, we do an attempt to center
+ // the movie on the screen by shifting the video window.
+ // We assume (but we don't really know for sure ...) that the movie was to be rendered
+ // fulscreen using the size of the virtual desktop
+ RECT client;
+ OutTraceDW("MCIWndCreateA: CENTERED\n");
+ (*pGetClientRect)(dxw.GethWnd(), &client);
+ (*pSetWindowPos)(g_hwndMCIWnd, // window to resize
+ NULL, // z-order: don't care
+ (client.right - dxw.GetScreenWidth()) / 2, // X pos
+ (client.bottom - dxw.GetScreenHeight()) / 2, // Y pos
+ dxw.GetScreenWidth(), // width
+ dxw.GetScreenHeight(), // height
SWP_NOZORDER | SWP_NOACTIVATE);
+ //(*pUpdateWindow)(g_hwndMCIWnd);
}
return g_hwndMCIWnd;
diff --git a/dll/user32.cpp b/dll/user32.cpp
index a13b3f0..6653001 100644
--- a/dll/user32.cpp
+++ b/dll/user32.cpp
@@ -620,15 +620,19 @@ BOOL WINAPI extInvalidateRect(HWND hwnd, RECT *lpRect, BOOL bErase)
OutTraceDW("InvalidateRect: hwnd=%x rect=NULL erase=%x\n",
hwnd, bErase);
- if(dxw.IsFullScreen() && dxw.IsRealDesktop(hwnd)) {
- hwnd=dxw.GethWnd();
- dxw.MapClient(lpRect);
- return (*pInvalidateRect)(hwnd, lpRect, bErase);
- }
- else{
- // don't exagerate ...
- return (*pInvalidateRect)(hwnd, lpRect, bErase);
+
+ if(dxw.IsFullScreen()) {
+ switch(GDIEmulationMode){
+ case GDIMODE_STRETCHED:
+ if(lpRect) dxw.MapClient(lpRect);
+ break;
+ case GDIMODE_EMULATED:
+ default:
+ break;
+ }
}
+
+ return (*pInvalidateRect)(hwnd, lpRect, bErase);
}
BOOL WINAPI extShowWindow(HWND hwnd, int nCmdShow)
diff --git a/dll/winproc.cpp b/dll/winproc.cpp
index 7d3fbfc..ae87a21 100644
--- a/dll/winproc.cpp
+++ b/dll/winproc.cpp
@@ -407,18 +407,18 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
if(dxw.Windowize){
prev.x = LOWORD(lparam);
prev.y = HIWORD(lparam);
- if ((dxw.dwFlags1 & HIDEHWCURSOR) && dxw.IsFullScreen()){
- (*pGetClientRect)(hwnd, &rect);
- if(prev.x >= 0 && prev.x < rect.right && prev.y >= 0 && prev.y < rect.bottom)
- while((*pShowCursor)(0) >= 0);
- else
+ if(dxw.IsFullScreen()){
+ if (dxw.dwFlags1 & HIDEHWCURSOR){
+ (*pGetClientRect)(hwnd, &rect);
+ if(prev.x >= 0 && prev.x < rect.right && prev.y >= 0 && prev.y < rect.bottom)
+ while((*pShowCursor)(0) >= 0);
+ else
+ while((*pShowCursor)(1) < 0);
+ }
+ if (dxw.dwFlags1 & SHOWHWCURSOR){
while((*pShowCursor)(1) < 0);
+ }
}
- else {
- while((*pShowCursor)(1) < 0);
- }
- //if(dxw.dwFlags1 & MODIFYMOUSE){ // mouse processing
- //if((dxw.dwFlags1 & MODIFYMOUSE) && !(dxw.dwFlags6 & NOMOUSEPROC)){ // mouse processing
if((dxw.dwFlags1 & MODIFYMOUSE) && !(dxw.dwFlags1 & MESSAGEPROC)){ // mouse processing
// scale mouse coordinates
curr=dxw.FixCursorPos(prev); //v2.02.30
@@ -442,8 +442,6 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
case WM_MBUTTONDBLCLK:
if(dxw.Windowize){
if((dxw.dwFlags1 & CLIPCURSOR) && ClipCursorToggleState) dxw.SetClipCursor();
- //if(dxw.dwFlags1 & MODIFYMOUSE){ // mouse processing
- //if((dxw.dwFlags1 & MODIFYMOUSE) && !(dxw.dwFlags6 & NOMOUSEPROC)){ // mouse processing
if((dxw.dwFlags1 & MODIFYMOUSE) && !(dxw.dwFlags1 & MESSAGEPROC)){ // mouse processing
// scale mouse coordinates
prev.x = LOWORD(lparam);
diff --git a/host/TabSysLibs.cpp b/host/TabSysLibs.cpp
index 82482fc..1f3d310 100644
--- a/host/TabSysLibs.cpp
+++ b/host/TabSysLibs.cpp
@@ -35,6 +35,7 @@ void CTabSysLibs::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_NOFILLRECT, cTarget->m_NoFillRect);
DDX_Check(pDX, IDC_REUSEEMULATEDDC, cTarget->m_ReuseEmulatedDC);
DDX_Check(pDX, IDC_CREATEDESKTOP, cTarget->m_CreateDesktop);
+ DDX_Check(pDX, IDC_SYNCPALETTE, cTarget->m_SyncPalette);
// OpenGL
DDX_Check(pDX, IDC_HOOKOPENGL, cTarget->m_HookOpenGL); // duplicated
diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp
index 36738f6..b11eac2 100644
--- a/host/TargetDlg.cpp
+++ b/host/TargetDlg.cpp
@@ -197,6 +197,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
m_NoFillRect = FALSE;
m_ReuseEmulatedDC = FALSE; // ??
m_CreateDesktop = FALSE;
+ m_SyncPalette = FALSE;
m_AnalyticMode = FALSE;
m_NoPaletteUpdate = FALSE;
m_WireFrame = FALSE;
diff --git a/host/TargetDlg.h b/host/TargetDlg.h
index 3180262..ed76f55 100644
--- a/host/TargetDlg.h
+++ b/host/TargetDlg.h
@@ -163,6 +163,7 @@ public:
BOOL m_NoFillRect;
BOOL m_ReuseEmulatedDC;
BOOL m_CreateDesktop;
+ BOOL m_SyncPalette;
BOOL m_AnalyticMode;
BOOL m_NoPaletteUpdate;
BOOL m_LimitResources;
diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps
index 732034a..f5fd762 100644
Binary files a/host/dxwndhost.aps and b/host/dxwndhost.aps differ
diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc
index e3edc1d..5035f2f 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 4d106bb..c76dae1 100644
Binary files a/host/dxwndhost.vs2008.suo and b/host/dxwndhost.vs2008.suo differ
diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp
index bad4c01..cb749f4 100644
--- a/host/dxwndhostView.cpp
+++ b/host/dxwndhostView.cpp
@@ -401,6 +401,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
if(dlg->m_NoFillRect) t->flags4 |= NOFILLRECT;
if(dlg->m_ReuseEmulatedDC) t->flags6 |= REUSEEMULATEDDC;
if(dlg->m_CreateDesktop) t->flags6 |= CREATEDESKTOP;
+ if(dlg->m_SyncPalette) t->flags6 |= SYNCPALETTE;
if(dlg->m_AnalyticMode) t->flags3 |= ANALYTICMODE;
if(dlg->m_ReplacePrivOps) t->flags5 |= REPLACEPRIVOPS;
t->initx = dlg->m_InitX;
@@ -641,6 +642,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
dlg->m_NoFillRect = t->flags4 & NOFILLRECT ? 1 : 0;
dlg->m_ReuseEmulatedDC = t->flags6 & REUSEEMULATEDDC ? 1 : 0;
dlg->m_CreateDesktop = t->flags6 & CREATEDESKTOP ? 1 : 0;
+ dlg->m_SyncPalette = t->flags6 & SYNCPALETTE ? 1 : 0;
dlg->m_AnalyticMode = t->flags3 & ANALYTICMODE ? 1 : 0;
dlg->m_ReplacePrivOps = t->flags5 & REPLACEPRIVOPS ? 1 : 0;
dlg->m_InitX = t->initx;
diff --git a/host/host.aps b/host/host.aps
index b5dc05d..6500e13 100644
Binary files a/host/host.aps and b/host/host.aps differ
diff --git a/host/resource b/host/resource
index 4aed585..8de7c61 100644
Binary files a/host/resource and b/host/resource differ