From fceaa16fbdebe9c24fd8a5812e4e635184d2f4b0 Mon Sep 17 00:00:00 2001 From: gho tik Date: Mon, 12 Aug 2013 12:38:35 -0400 Subject: [PATCH] v2_02_48_src Former-commit-id: 19f43f4c12b744296ce9f3a14cbb21b3e51b7fd9 --- Include/dxwnd.h | 2 + build/dxwnd.dll | 4 +- build/dxwnd.exe | 2 +- build/dxwnd.ini | 377 ++++++++++++++++--------------- build/exports/Crimson Skies.dxw | 6 +- build/exports/Panzer Dragoon.dxw | 24 ++ build/readme-relnotes.txt | 6 +- dll/ddraw.cpp | 2 +- dll/dxhook.cpp | 4 +- dll/dxwcore.cpp | 76 ++++--- dll/dxwcore.hpp | 12 +- dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 448512 -> 448512 bytes dll/hd3d7.cpp | 105 ++++++--- dll/ole32.cpp | 8 +- host/Resource.h | 4 +- host/TabCompat.cpp | 1 + host/TabWindow.cpp | 5 +- host/TargetDlg.cpp | 2 + host/TargetDlg.h | 2 + host/dxwndhost.aps | Bin 167736 -> 168012 bytes host/dxwndhost.rc | 2 + host/dxwndhost.vs2008.suo | Bin 372736 -> 374272 bytes host/dxwndhostView.cpp | 4 + 24 files changed, 386 insertions(+), 264 deletions(-) create mode 100644 build/exports/Panzer Dragoon.dxw diff --git a/Include/dxwnd.h b/Include/dxwnd.h index a34a3fd..4c9c641 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -120,6 +120,8 @@ #define ZBUFFERCLEAN 0x00000010 // Clean ZBUFFER upon (fix for "Star Wars Ep. I - Racer") #define ZBUFFER0CLEAN 0x00000020 // Clean ZBUFFER upon (fix for "Star Wars Ep. I - Racer") #define ZBUFFERALWAYS 0x00000040 // Forces ZBUFFER D3DCMP_ALWAYS condition to show all planes.... +#define DISABLEFOGGING 0x00000080 // Disable D3D fogging +#define NOPOWER2FIX 0x00000100 // Handle textures whose size is not a power of 2 (32, 64, 128 ...) // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 90c719f..96ef9a7 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:404c01ee20ad1832dc37c27ab836098886b2f3363181e6976a52457ecd82d59e -size 430592 +oid sha256:57ef9c7d9946325fb6dd60e4af9dc304c495324ecae9a692cf86f91992cebbfb +size 431616 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index c837a02..e721987 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5c2c347ab9be31f30206cc590f69d6d24bbd4e63aca63bea0f46931ef7afcb1 +oid sha256:0a4a4d772a6ec7426fd16e1891cfb4b0bc0f853cbb5a6cdcaa080f131bdd340e size 531968 diff --git a/build/dxwnd.ini b/build/dxwnd.ini index 10cc6bc..c3fe53f 100644 --- a/build/dxwnd.ini +++ b/build/dxwnd.ini @@ -281,10 +281,10 @@ module12= opengllib12= ver12=7 coord12=0 -flag12=134234148 -flagg12=1207959552 +flag12=155205668 +flagg12=1207959568 flagh12=20 -flagi12=36 +flagi12=292 tflag12=258 initx12=0 inity12=0 @@ -919,17 +919,17 @@ sizx39=800 sizy39=600 maxfps39=0 initts39=0 -title40=Magic & Mayhem -path40=D:\Games\Magic_&_Mayhem\Chaos.exe +title40=Mageslayer +path40=D:\Games\MAGE\MAGESLAY.EXE module40= opengllib40= ver40=0 coord40=0 flag40=134217762 -flagg40=1207959552 +flagg40=1207959584 flagh40=20 -flagi40=4 -tflag40=0 +flagi40=0 +tflag40=67 initx40=0 inity40=0 minx40=0 @@ -942,16 +942,16 @@ sizx40=800 sizy40=600 maxfps40=0 initts40=0 -title41=Motocross Madness (DEMO) -path41=D:\Games\Motocross Madness Trial\mcm.exe +title41=Magic & Mayhem +path41=D:\Games\Magic_&_Mayhem\Chaos.exe module41= opengllib41= ver41=0 coord41=0 -flag41=134217760 +flag41=134217762 flagg41=1207959552 flagh41=20 -flagi41=0 +flagi41=4 tflag41=0 initx41=0 inity41=0 @@ -965,16 +965,16 @@ sizx41=800 sizy41=600 maxfps41=0 initts41=0 -title42=Pandemonium 2 (GLIDE) -path42=D:\Games\Pandemonium 2\pandy.exe +title42=Motocross Madness (DEMO) +path42=D:\Games\Motocross Madness Trial\mcm.exe module42= opengllib42= ver42=0 coord42=0 -flag42=134217762 +flag42=134217760 flagg42=1207959552 flagh42=20 -flagi42=4 +flagi42=0 tflag42=0 initx42=0 inity42=0 @@ -988,17 +988,17 @@ sizx42=800 sizy42=600 maxfps42=0 initts42=0 -title43=Praetorians -path43=D:\games\Praetorians\Praetorians.exe +title43=Pandemonium 2 (GLIDE) +path43=D:\Games\Pandemonium 2\pandy.exe module43= opengllib43= ver43=0 -coord43=2 -flag43=134217760 -flagg43=1209008144 -flagh43=22 +coord43=0 +flag43=134217762 +flagg43=1207959552 +flagh43=20 flagi43=4 -tflag43=2 +tflag43=0 initx43=0 inity43=0 minx43=0 @@ -1011,17 +1011,17 @@ sizx43=800 sizy43=600 maxfps43=0 initts43=0 -title44=Praetorians (DEMO) -path44=D:\Games\Praetorians Demo\Praetorians.exe +title44=Panzer Dragoon +path44=D:\Games\Panzer Dragoon\game\PANZERDG.EXE module44= opengllib44= ver44=0 coord44=0 -flag44=134217760 +flag44=134217762 flagg44=1207959552 -flagh44=65556 +flagh44=20 flagi44=4 -tflag44=2 +tflag44=67 initx44=0 inity44=0 minx44=0 @@ -1034,17 +1034,17 @@ sizx44=800 sizy44=600 maxfps44=0 initts44=0 -title45=Project Nomads (DEMO) -path45=D:\Games\Project Nomads Demo\bin\win32\nomads.exe +title45=Praetorians +path45=D:\games\Praetorians\Praetorians.exe module45= opengllib45= -ver45=8 -coord45=0 -flag45=-1476394974 -flagg45=1207959808 -flagh45=4 -flagi45=0 -tflag45=274 +ver45=0 +coord45=2 +flag45=134217760 +flagg45=1209008144 +flagh45=22 +flagi45=4 +tflag45=2 initx45=0 inity45=0 minx45=0 @@ -1057,17 +1057,17 @@ sizx45=800 sizy45=600 maxfps45=0 initts45=0 -title46=Rayman 2 Demo -path46=D:\Games\Rayman2Demo\Rayman2Demo.exe +title46=Praetorians (DEMO) +path46=D:\Games\Praetorians Demo\Praetorians.exe module46= opengllib46= -ver46=7 +ver46=0 coord46=0 -flag46=402653219 -flagg46=1208025088 -flagh46=2097172 -flagi46=0 -tflag46=258 +flag46=134217760 +flagg46=1207959552 +flagh46=65556 +flagi46=4 +tflag46=2 initx46=0 inity46=0 minx46=0 @@ -1079,16 +1079,16 @@ posy46=50 sizx46=800 sizy46=600 maxfps46=0 -initts46=4 -title47=Shadows of the Empire (DEMO) -path47=D:\Games\Shadows of the Empire\shadows.exe +initts46=0 +title47=Project Nomads (DEMO) +path47=D:\Games\Project Nomads Demo\bin\win32\nomads.exe module47= opengllib47= -ver47=0 -coord47=2 -flag47=134479906 -flagg47=1207959568 -flagh47=33554452 +ver47=8 +coord47=0 +flag47=-1476394974 +flagg47=1207959808 +flagh47=4 flagi47=0 tflag47=274 initx47=0 @@ -1103,17 +1103,17 @@ sizx47=800 sizy47=600 maxfps47=0 initts47=0 -title48=StarCraft -path48=D:\Games\Starcraft\StarCraft.exe +title48=Rayman 2 Demo +path48=D:\Games\Rayman2Demo\Rayman2Demo.exe module48= opengllib48= -ver48=0 +ver48=7 coord48=0 -flag48=134217762 -flagg48=134283264 -flagh48=20 -flagi48=8 -tflag48=64 +flag48=402653219 +flagg48=1208025088 +flagh48=2097172 +flagi48=0 +tflag48=258 initx48=0 inity48=0 minx48=0 @@ -1125,18 +1125,18 @@ posy48=50 sizx48=800 sizy48=600 maxfps48=0 -initts48=0 -title49=Tomb Raider 4 (DEMO) -path49=D:\Games\Tomb Raider - The Last Revelation (Demo)\tomb4.exe +initts48=4 +title49=Shadows of the Empire (DEMO) +path49=D:\Games\Shadows of the Empire\shadows.exe module49= opengllib49= -ver49=7 -coord49=0 -flag49=134217760 -flagg49=1207959552 -flagh49=20 +ver49=0 +coord49=2 +flag49=134479906 +flagg49=1207959568 +flagh49=33554452 flagi49=0 -tflag49=258 +tflag49=274 initx49=0 inity49=0 minx49=0 @@ -1149,17 +1149,17 @@ sizx49=800 sizy49=600 maxfps49=0 initts49=0 -title50=Tomb Raider II -path50=D:\Games\Tomb Raider II\Tomb2.exe +title50=Star Wars Episode I Racer +path50=D:\Games\Star Wars Episode 1 racer\SWEP1RCR.EXE module50= opengllib50= ver50=0 coord50=0 -flag50=671088674 -flagg50=1207959552 -flagh50=20 -flagi50=0 -tflag50=0 +flag50=679493669 +flagg50=1210056720 +flagh50=8212 +flagi50=20 +tflag50=67 initx50=0 inity50=0 minx50=0 @@ -1172,20 +1172,20 @@ sizx50=800 sizy50=600 maxfps50=0 initts50=0 -title51=Tomb Raider II Gold (DEMO) +title51=StarCraft module51= opengllib51= -title52=Tomb Raider III +title52=Tomb Raider 4 (DEMO) module52= opengllib52= -path51=D:\Games\Tomb Raider II Gold (Demo)\Tomb2.exe +path51=D:\Games\Starcraft\StarCraft.exe ver51=0 -coord51=2 -flag51=671088674 -flagg51=1224736784 +coord51=0 +flag51=134217762 +flagg51=134283264 flagh51=20 -flagi51=0 -tflag51=258 +flagi51=8 +tflag51=64 initx51=0 inity51=0 minx51=0 @@ -1198,14 +1198,14 @@ sizx51=800 sizy51=600 maxfps51=0 initts51=0 -path52=D:\Games\Tomb Raider III\tomb3.exe -ver52=0 -coord52=2 +path52=D:\Games\Tomb Raider - The Last Revelation (Demo)\tomb4.exe +ver52=7 +coord52=0 flag52=134217760 -flagg52=1241514000 +flagg52=1207959552 flagh52=20 flagi52=0 -tflag52=322 +tflag52=258 initx52=0 inity52=0 minx52=0 @@ -1218,14 +1218,14 @@ sizx52=800 sizy52=600 maxfps52=0 initts52=0 -title53=Virtua Fighter 2 (DEMO) -path53=D:\Games\vf2_demo\VF2DEMO.EXE +title53=Tomb Raider II +path53=D:\Games\Tomb Raider II\Tomb2.exe module53= opengllib53= ver53=0 coord53=0 -flag53=939524131 -flagg53=1207959664 +flag53=671088674 +flagg53=1207959552 flagh53=20 flagi53=0 tflag53=0 @@ -1241,15 +1241,15 @@ sizx53=800 sizy53=600 maxfps53=0 initts53=0 -title54=Virtua Fighter PC -path54=D:\Games\Virtua Fighter\VFPC.EXE +title54=Tomb Raider II Gold (DEMO) +path54=D:\Games\Tomb Raider II Gold (Demo)\Tomb2.exe module54= opengllib54= ver54=0 -coord54=0 -flag54=402653218 +coord54=2 +flag54=671088674 flagg54=1224736784 -flagh54=33562644 +flagh54=20 flagi54=0 tflag54=258 initx54=0 @@ -1264,17 +1264,17 @@ sizx54=800 sizy54=600 maxfps54=0 initts54=0 -title55=Warcraft 2 Battlenet Ed -path55=D:\Games\Warcraft 2 Battlenet Ed\Warcraft II BNE.exe +title55=Tomb Raider III +path55=D:\Games\Tomb Raider III\tomb3.exe module55= opengllib55= ver55=0 -coord55=0 -flag55=134217762 -flagg55=1210122240 -flagh55=148 -flagi55=12 -tflag55=0 +coord55=2 +flag55=134217760 +flagg55=1241514000 +flagh55=20 +flagi55=0 +tflag55=322 initx55=0 inity55=0 minx55=0 @@ -1287,17 +1287,17 @@ sizx55=800 sizy55=600 maxfps55=0 initts55=0 -title56=Wargasm -path56=D:\Games\Wargasm\tank.exe +title56=Virtua Fighter 2 (DEMO) +path56=D:\Games\vf2_demo\VF2DEMO.EXE module56= opengllib56= ver56=0 -coord56=2 -flag56=671088672 -flagg56=1207959696 -flagh56=65556 +coord56=0 +flag56=939524131 +flagg56=1207959664 +flagh56=20 flagi56=0 -tflag56=3 +tflag56=0 initx56=0 inity56=0 minx56=0 @@ -1310,15 +1310,15 @@ sizx56=800 sizy56=600 maxfps56=0 initts56=0 -title57=Warlords Battlecry II (DEMO) -path57=D:\Games\Warlords Battlecry II Demo\Battlecry II Demo.exe +title57=Virtua Fighter PC +path57=D:\Games\Virtua Fighter\VFPC.EXE module57= opengllib57= ver57=0 -coord57=2 -flag57=134217762 -flagg57=1207959568 -flagh57=22 +coord57=0 +flag57=402653218 +flagg57=1224736784 +flagh57=33562644 flagi57=0 tflag57=258 initx57=0 @@ -1333,17 +1333,17 @@ sizx57=800 sizy57=600 maxfps57=0 initts57=0 -title58=Whiteout -path58=D:\Games\Whiteout\Whiteout.exe +title58=Warcraft 2 Battlenet Ed +path58=D:\Games\Warcraft 2 Battlenet Ed\Warcraft II BNE.exe module58= opengllib58= ver58=0 coord58=0 -flag58=402653217 -flagg58=1207959552 -flagh58=20 -flagi58=0 -tflag58=66 +flag58=134217762 +flagg58=1210122240 +flagh58=148 +flagi58=12 +tflag58=0 initx58=0 inity58=0 minx58=0 @@ -1352,21 +1352,21 @@ maxx58=0 maxy58=0 posx58=50 posy58=50 -sizx58=640 -sizy58=480 +sizx58=800 +sizy58=600 maxfps58=0 initts58=0 -title59=Wildfire -path59=D:\Games\Wildfire\Wildfire.exe +title59=Wargasm +path59=D:\Games\Wargasm\tank.exe module59= opengllib59= ver59=0 -coord59=0 -flag59=-1476392958 -flagg59=1210122240 -flagh59=20 -flagi59=12 -tflag59=0 +coord59=2 +flag59=671088672 +flagg59=1207959696 +flagh59=65556 +flagi59=0 +tflag59=3 initx59=0 inity59=0 minx59=0 @@ -1379,16 +1379,16 @@ sizx59=800 sizy59=600 maxfps59=0 initts59=0 -title60=Worms Pinball -path60=D:\Games\Worms Pinball\WPIB.exe +title60=Warlords Battlecry II (DEMO) +path60=D:\Games\Warlords Battlecry II Demo\Battlecry II Demo.exe module60= opengllib60= ver60=0 coord60=2 -flag60=679477282 -flagg60=1744830480 -flagh60=20 -flagi60=4 +flag60=134217762 +flagg60=1207959568 +flagh60=22 +flagi60=0 tflag60=258 initx60=0 inity60=0 @@ -1402,17 +1402,17 @@ sizx60=800 sizy60=600 maxfps60=0 initts60=0 -title61=Zanzarah -path61=D:\Games\Zanzarah\System\zanthp.exe +title61=Whiteout +path61=D:\Games\Whiteout\Whiteout.exe module61= opengllib61= ver61=0 coord61=0 -flag61=679477280 +flag61=402653217 flagg61=1207959552 flagh61=20 flagi61=0 -tflag61=0 +tflag61=66 initx61=0 inity61=0 minx61=0 @@ -1421,21 +1421,21 @@ maxx61=0 maxy61=0 posx61=50 posy61=50 -sizx61=800 -sizy61=600 +sizx61=640 +sizy61=480 maxfps61=0 initts61=0 -title62=Zax the Alien Hunter (DEMO) -path62=D:\Games\ZaxDemo\Zax.exe +title62=Wildfire +path62=D:\Games\Wildfire\Wildfire.exe module62= opengllib62= ver62=0 -coord62=2 -flag62=-2011168734 -flagg62=1209008144 +coord62=0 +flag62=-1476392958 +flagg62=1210122240 flagh62=20 -flagi62=0 -tflag62=258 +flagi62=12 +tflag62=0 initx62=0 inity62=0 minx62=0 @@ -1448,17 +1448,17 @@ sizx62=800 sizy62=600 maxfps62=0 initts62=0 -title63=ZPC Zero Population Count -path63=D:\Games\ZPC\ZPC.EXE +title63=Worms Pinball +path63=D:\Games\Worms Pinball\WPIB.exe module63= opengllib63= ver63=0 -coord63=0 -flag63=134217762 -flagg63=1207959552 +coord63=2 +flag63=679477282 +flagg63=1744830480 flagh63=20 flagi63=4 -tflag63=0 +tflag63=258 initx63=0 inity63=0 minx63=0 @@ -1471,17 +1471,17 @@ sizx63=800 sizy63=600 maxfps63=0 initts63=0 -title64=Star Wars Episode I Racer -path64=D:\Games\Star Wars Episode 1 racer\SWEP1RCR.EXE +title64=Zanzarah +path64=D:\Games\Zanzarah\System\zanthp.exe module64= opengllib64= ver64=0 coord64=0 -flag64=679493669 -flagg64=1210056720 -flagh64=8212 -flagi64=20 -tflag64=67 +flag64=679477280 +flagg64=1207959552 +flagh64=20 +flagi64=0 +tflag64=0 initx64=0 inity64=0 minx64=0 @@ -1494,17 +1494,17 @@ sizx64=800 sizy64=600 maxfps64=0 initts64=0 -title65=Mageslayer -path65=D:\Games\MAGE\MAGESLAY.EXE +title65=Zax the Alien Hunter (DEMO) +path65=D:\Games\ZaxDemo\Zax.exe module65= opengllib65= ver65=0 -coord65=0 -flag65=134217762 -flagg65=1207959552 +coord65=2 +flag65=-2011168734 +flagg65=1209008144 flagh65=20 flagi65=0 -tflag65=67 +tflag65=258 initx65=0 inity65=0 minx65=0 @@ -1517,8 +1517,31 @@ sizx65=800 sizy65=600 maxfps65=0 initts65=0 +title66=ZPC Zero Population Count +path66=D:\Games\ZPC\ZPC.EXE +module66= +opengllib66= +ver66=0 +coord66=0 +flag66=134217762 +flagg66=1207959552 +flagh66=20 +flagi66=4 +tflag66=0 +initx66=0 +inity66=0 +minx66=0 +miny66=0 +maxx66=0 +maxy66=0 +posx66=50 +posy66=50 +sizx66=800 +sizy66=600 +maxfps66=0 +initts66=0 [window] -posx=1056 -posy=200 +posx=953 +posy=245 sizx=638 sizy=670 diff --git a/build/exports/Crimson Skies.dxw b/build/exports/Crimson Skies.dxw index 741addf..b617446 100644 --- a/build/exports/Crimson Skies.dxw +++ b/build/exports/Crimson Skies.dxw @@ -5,10 +5,10 @@ module0= opengllib0= ver0=7 coord0=0 -flag0=134234148 -flagg0=1207959552 +flag0=155205668 +flagg0=1207959568 flagh0=20 -flagi0=36 +flagi0=292 tflag0=258 initx0=0 inity0=0 diff --git a/build/exports/Panzer Dragoon.dxw b/build/exports/Panzer Dragoon.dxw new file mode 100644 index 0000000..f8d0ef4 --- /dev/null +++ b/build/exports/Panzer Dragoon.dxw @@ -0,0 +1,24 @@ +[target] +title0=Panzer Dragoon +path0=D:\Games\Panzer Dragoon\game\PANZERDG.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1207959552 +flagh0=20 +flagi0=4 +tflag0=67 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 9a15f7f..4829097 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -319,4 +319,8 @@ Configuration tabs reorganization: now some tabs have merged making it easier to core: improved d3d wrapping and sdded ZBUFFER cleanup flags to fix some d3d games. In particular: Clean ZBUFFER @1.0 fix: to fix "Star Wars Episode I Racer" -Clean ZBUFFER @0.0 fix: to fix "Crimson Skies" black blocks bug on ATI cards \ No newline at end of file +Clean ZBUFFER @0.0 fix: to fix "Crimson Skies" black blocks bug on ATI cards + +v2.02.48 +New options: "Disable fogging", "Textures not power of 2 fix" +A few fix to prevent game crashes \ No newline at end of file diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 49ddff8..ff6737f 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -3609,7 +3609,7 @@ HRESULT WINAPI extUnlockDir(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSUR res=(*pUnlock)(lpdds, lprect); if (res) OutTraceE("Unlock ERROR res=%x(%s) at %d\n",res, ExplainDDError(res), __LINE__); if (IsPrim && res==DD_OK) sBlt("Unlock", lpdds, NULL, lpdds, NULL, NULL, 0, FALSE); - if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=0; + if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK; return res; } diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index 9780100..88e3f42 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -66,8 +66,8 @@ static char *Flag3Names[32]={ static char *Flag4Names[32]={ "NOALPHACHANNEL", "SUPPRESSCHILD", "FIXREFCOUNTER", "SHOWTIMESTRETCH", - "", "", "", "", - "", "", "", "", + "ZBUFFERCLEAN", "ZBUFFER0CLEAN", "ZBUFFERALWAYS", "DISABLEFOGGING", + "NOPOWER2FIX", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp index 1026b3c..b3131b9 100644 --- a/dll/dxwcore.cpp +++ b/dll/dxwcore.cpp @@ -28,6 +28,7 @@ dxwCore::dxwCore() //IsGDIPalette = FALSE; memset(PrimSurfaces, 0, sizeof(PrimSurfaces)); ResetEmulatedDC(); + MustShowOverlay=FALSE; } dxwCore::~dxwCore() @@ -73,6 +74,7 @@ void dxwCore::InitTarget(TARGETMAP *target) if(TimeShift > 8) TimeShift = 8; FakeVersionId = target->FakeVersionId; Coordinates = target->coordinates; + MustShowOverlay=((dwFlags2 & SHOWFPSOVERLAY) || (dwFlags4 & SHOWTIMESTRETCH)); } /* ------------------------------------------------------------------ */ @@ -919,35 +921,39 @@ void dxwCore::GetSystemTime(LPSYSTEMTIME lpSystemTime) void dxwCore::ShowOverlay() { - this->ShowOverlay(GetDC(hWnd)); + if (MustShowOverlay) this->ShowOverlay(GetDC(hWnd)); } void dxwCore::ShowOverlay(LPDIRECTDRAWSURFACE lpdds) { HDC hdc; // the working dc - if (FAILED(lpdds->GetDC(&hdc))) return; - this->ShowOverlay(hdc); - lpdds->ReleaseDC(hdc); + if (MustShowOverlay) { + if(!lpdds) return; + if (FAILED(lpdds->GetDC(&hdc))) return; + this->ShowOverlay(hdc); + lpdds->ReleaseDC(hdc); + } } void dxwCore::ShowOverlay(HDC hdc) { + if(!hdc) return; if (dwFlags2 & SHOWFPSOVERLAY) ShowFPS(hdc); if (dwFlags4 & SHOWTIMESTRETCH) ShowTimeStretching(hdc); } -void dxwCore::ShowFPS() -{ - this->ShowFPS(GetDC(hWnd)); -} - -void dxwCore::ShowFPS(LPDIRECTDRAWSURFACE lpdds) -{ - HDC hdc; // the working dc - if (FAILED(lpdds->GetDC(&hdc))) return; - this->ShowFPS(hdc); - lpdds->ReleaseDC(hdc); -} +//void dxwCore::ShowFPS() +//{ +// this->ShowFPS(GetDC(hWnd)); +//} +// +//void dxwCore::ShowFPS(LPDIRECTDRAWSURFACE lpdds) +//{ +// HDC hdc; // the working dc +// if (FAILED(lpdds->GetDC(&hdc))) return; +// this->ShowFPS(hdc); +// lpdds->ReleaseDC(hdc); +//} void dxwCore::ShowFPS(HDC xdc) { @@ -978,25 +984,25 @@ void dxwCore::ShowFPS(HDC xdc) TextOut(xdc, x, y, sBuf, strlen(sBuf)); } -void dxwCore::ShowTimeStretching() -{ - HDC hdc; - hdc=GetDC(hWnd); - if(hdc)this->ShowTimeStretching(hdc); -} - -void dxwCore::ShowTimeStretching(LPDIRECTDRAWSURFACE lpdds) -{ - HDC hdc; // the working dc - __try { - if (FAILED(lpdds->GetDC(&hdc))) return; - } - __except(EXCEPTION_EXECUTE_HANDLER){ - return; - } - if(hdc)this->ShowTimeStretching(hdc); - lpdds->ReleaseDC(hdc); -} +//void dxwCore::ShowTimeStretching() +//{ +// HDC hdc; +// hdc=GetDC(hWnd); +// if(hdc)this->ShowTimeStretching(hdc); +//} +// +//void dxwCore::ShowTimeStretching(LPDIRECTDRAWSURFACE lpdds) +//{ +// HDC hdc; // the working dc +// __try { +// if (FAILED(lpdds->GetDC(&hdc))) return; +// } +// __except(EXCEPTION_EXECUTE_HANDLER){ +// return; +// } +// if(hdc)this->ShowTimeStretching(hdc); +// lpdds->ReleaseDC(hdc); +//} void dxwCore::ShowTimeStretching(HDC xdc) { diff --git a/dll/dxwcore.hpp b/dll/dxwcore.hpp index b6b8801..eb25a1e 100644 --- a/dll/dxwcore.hpp +++ b/dll/dxwcore.hpp @@ -65,12 +65,6 @@ public: // methods void GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime); DWORD StretchTime(DWORD); DWORD StretchCounter(DWORD); - void ShowFPS(LPDIRECTDRAWSURFACE); - void ShowTimeStretching(LPDIRECTDRAWSURFACE); - void ShowFPS(void); - void ShowTimeStretching(void); - void ShowFPS(HDC); - void ShowTimeStretching(HDC); void ShowOverlay(); void ShowOverlay(HDC); void ShowOverlay(LPDIRECTDRAWSURFACE); @@ -112,8 +106,6 @@ public: // simple data variables short iPosY; short iSizX; short iSizY; - //BOOL IsWithinDDraw; // flag to avoid double intervention at ddraw & GDI level - //BOOL IsGDIPalette; char *CustomOpenGLLib; WORD palVersion; WORD palNumEntries; @@ -135,7 +127,9 @@ protected: private: void UnmarkPrimarySurface(LPDIRECTDRAWSURFACE); void UnmarkBackBufferSurface(LPDIRECTDRAWSURFACE); - + BOOL MustShowOverlay; + void ShowFPS(HDC); + void ShowTimeStretching(HDC); }; extern dxwCore dxw; diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index 8d838cd..ddf12ff 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -24,7 +24,7 @@ along with this program. If not, see . #include "dxwnd.h" #include "dxwcore.hpp" -#define VERSION "2.02.47" +#define VERSION "2.02.48" #define DDTHREADLOCK 1 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index f162989207dc1f3df07695dcc354cdfe6e5387f6..6509a8b63d23b994ac3164c98752e865a8dd80aa 100644 GIT binary patch delta 5185 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 AcK`qY diff --git a/dll/hd3d7.cpp b/dll/hd3d7.cpp index be0164c..4b69d10 100644 --- a/dll/hd3d7.cpp +++ b/dll/hd3d7.cpp @@ -42,6 +42,7 @@ typedef HRESULT (WINAPI *D3DGetCaps_Type)(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDE typedef HRESULT (WINAPI *SetRenderState3_Type)(void *, D3DRENDERSTATETYPE, DWORD); typedef HRESULT (WINAPI *Scene3_Type)(void *); +typedef HRESULT (WINAPI *GetCaps3_Type)(void *, LPD3DDEVICEDESC, LPD3DDEVICEDESC); Initialize_Type pInitialize = NULL; @@ -67,6 +68,8 @@ Scene3_Type pEndScene1 = NULL; Scene3_Type pEndScene2 = NULL; Scene3_Type pEndScene3 = NULL; +GetCaps3_Type pGetCaps3 = NULL; + D3DInitialize_Type pD3DInitialize = NULL; D3DGetCaps_Type pD3DGetCaps = NULL; @@ -95,6 +98,7 @@ HRESULT WINAPI extEndScene2(void *); HRESULT WINAPI extSetRenderState3(void *, D3DRENDERSTATETYPE, DWORD); HRESULT WINAPI extBeginScene3(void *); HRESULT WINAPI extEndScene3(void *); +HRESULT WINAPI extGetCaps3(void *, LPD3DDEVICEDESC, LPD3DDEVICEDESC); extern char *ExplainDDError(DWORD); @@ -215,23 +219,28 @@ void HookDirect3DDevice(void **lpd3ddev, int dxversion) switch(dxversion){ case 1: + //SetHook((void *)(**(DWORD **)lpd3ddev + 16), extGetCaps1, (void **)&pGetCaps1, "GetCaps(1)"); SetHook((void *)(**(DWORD **)lpd3ddev + 76), extBeginScene1, (void **)&pBeginScene1, "BeginScene(1)"); SetHook((void *)(**(DWORD **)lpd3ddev + 80), extEndScene1, (void **)&pEndScene1, "EndScene(1)"); break; case 2: + //SetHook((void *)(**(DWORD **)lpd3ddev + 12), extGetCaps2, (void **)&pGetCaps2, "GetCaps(2)"); SetHook((void *)(**(DWORD **)lpd3ddev + 40), extBeginScene2, (void **)&pBeginScene2, "BeginScene(2)"); SetHook((void *)(**(DWORD **)lpd3ddev + 44), extEndScene2, (void **)&pEndScene2, "EndScene(2)"); SetHook((void *)(**(DWORD **)lpd3ddev + 92), extSetRenderState2, (void **)&pSetRenderState2, "SetRenderState(2)"); - if(dxw.dwFlags2 & WIREFRAME){ - (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); + if(pSetRenderState2){ + if(dxw.dwFlags2 & WIREFRAME)(*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); + if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_FOGENABLE, FALSE); } break; case 3: + SetHook((void *)(**(DWORD **)lpd3ddev + 12), extGetCaps3, (void **)&pGetCaps3, "GetCaps(3)"); SetHook((void *)(**(DWORD **)lpd3ddev + 36), extBeginScene3, (void **)&pBeginScene3, "BeginScene(3)"); SetHook((void *)(**(DWORD **)lpd3ddev + 40), extEndScene3, (void **)&pEndScene3, "EndScene(3)"); SetHook((void *)(**(DWORD **)lpd3ddev + 88), extSetRenderState3, (void **)&pSetRenderState3, "SetRenderState(3)"); - if(dxw.dwFlags2 & WIREFRAME){ - (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); + if(pSetRenderState3){ + if(dxw.dwFlags2 & WIREFRAME)(*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); + if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_FOGENABLE, FALSE); } break; } @@ -347,7 +356,19 @@ HRESULT WINAPI extDeviceProxy(GUID FAR *lpGuid, LPSTR lpDeviceDescription, LPSTR OutTraceD("EnumDevices: CALLBACK GUID=%x(%s) DeviceDescription=\"%s\", DeviceName=\"%s\", arg=%x\n", lpGuid->Data1, ExplainGUID(lpGuid), lpDeviceDescription, lpDeviceName, ((CallbackArg *)arg)->arg); DumpD3DDevideDesc(lpd3ddd1, "HWDEV"); DumpD3DDevideDesc(lpd3ddd2, "SWDEV"); - res = (*(((CallbackArg *)arg)->cb))(lpGuid, lpDeviceDescription, lpDeviceName, lpd3ddd1, lpd3ddd2, ((CallbackArg *)arg)->arg); + if(dxw.dwFlags4 & NOPOWER2FIX){ + D3DDEVICEDESC lpd3ddd1fix, lpd3ddd2fix; + if(lpd3ddd1) memcpy(&lpd3ddd1fix, lpd3ddd1, sizeof(D3DDEVICEDESC)); + if(lpd3ddd2) memcpy(&lpd3ddd2fix, lpd3ddd2, sizeof(D3DDEVICEDESC)); + lpd3ddd1fix.dpcLineCaps.dwTextureCaps|=D3DPTEXTURECAPS_NONPOW2CONDITIONAL|D3DPTEXTURECAPS_POW2; + lpd3ddd1fix.dpcTriCaps.dwTextureCaps|=D3DPTEXTURECAPS_NONPOW2CONDITIONAL|D3DPTEXTURECAPS_POW2; + lpd3ddd2fix.dpcLineCaps.dwTextureCaps|=D3DPTEXTURECAPS_NONPOW2CONDITIONAL|D3DPTEXTURECAPS_POW2; + lpd3ddd2fix.dpcTriCaps.dwTextureCaps|=D3DPTEXTURECAPS_NONPOW2CONDITIONAL|D3DPTEXTURECAPS_POW2; + res = (*(((CallbackArg *)arg)->cb))(lpGuid, lpDeviceDescription, lpDeviceName, lpd3ddd1?&lpd3ddd1fix:NULL, lpd3ddd2?&lpd3ddd2fix:NULL, ((CallbackArg *)arg)->arg); + } + else { + res = (*(((CallbackArg *)arg)->cb))(lpGuid, lpDeviceDescription, lpDeviceName, lpd3ddd1, lpd3ddd2, ((CallbackArg *)arg)->arg); + } OutTraceD("EnumDevices: CALLBACK ret=%x\n", res); return res; } @@ -595,6 +616,10 @@ HRESULT WINAPI extSetRenderState3(void *d3dd, D3DRENDERSTATETYPE State, DWORD Va Value = D3DFILL_WIREFRAME; OutTraceD("SetRenderState: FIXED State=FILLMODE Value=D3DFILL_WIREFRAME\n"); } + if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRENDERSTATE_FOGENABLE)){ + OutTraceD("SetRenderState: FIXED State=FOGENABLE Value=FALSE\n"); + Value = FALSE; + } res=(*pSetRenderState3)(d3dd, State, Value); if(res) OutTraceE("SetRenderState(3): res=%x(%s)\n", res, ExplainDDError(res)); return res; @@ -614,18 +639,21 @@ HRESULT WINAPI extBeginScene2(void *d3dd) HRESULT res; OutTraceD("BeginScene(2): d3dd=%x\n", d3dd); if(dxw.dwFlags4 & ZBUFFERCLEAN){ + HRESULT res2; LPDIRECT3DVIEWPORT2 vp; D3DVIEWPORT vpd; - ((LPDIRECT3DDEVICE2)d3dd)->GetCurrentViewport(&vp); - D3DRECT d3dRect; - vpd.dwSize=sizeof(D3DVIEWPORT); - vp->GetViewport(&vpd); - d3dRect.x1 = vpd.dwX; - d3dRect.y1 = vpd.dwY; - d3dRect.x2 = vpd.dwX + vpd.dwWidth; - d3dRect.y2 = vpd.dwY + vpd.dwHeight; - OutTraceD("d3dRect=(%d,%d)-(%d,%d)\n", d3dRect.x1, d3dRect.y1, d3dRect.x2, d3dRect.y2); - vp->Clear(1, &d3dRect, D3DCLEAR_ZBUFFER); + res2=((LPDIRECT3DDEVICE2)d3dd)->GetCurrentViewport(&vp); + if(!res2){ + D3DRECT d3dRect; + vpd.dwSize=sizeof(D3DVIEWPORT); + vp->GetViewport(&vpd); + d3dRect.x1 = vpd.dwX; + d3dRect.y1 = vpd.dwY; + d3dRect.x2 = vpd.dwX + vpd.dwWidth; + d3dRect.y2 = vpd.dwY + vpd.dwHeight; + OutTraceD("d3dRect=(%d,%d)-(%d,%d)\n", d3dRect.x1, d3dRect.y1, d3dRect.x2, d3dRect.y2); + vp->Clear(1, &d3dRect, D3DCLEAR_ZBUFFER); + } } res=(*pBeginScene2)(d3dd); if(res) OutTraceE("BeginScene(2): res=%x(%s)\n", res, ExplainDDError(res)); @@ -637,19 +665,22 @@ HRESULT WINAPI extBeginScene3(void *d3dd) HRESULT res; OutTraceD("BeginScene(3): d3dd=%x\n", d3dd); if(dxw.dwFlags4 & (ZBUFFERCLEAN|ZBUFFER0CLEAN)){ + HRESULT res2; LPDIRECT3DVIEWPORT3 vp; D3DVIEWPORT vpd; - ((LPDIRECT3DDEVICE3)d3dd)->GetCurrentViewport(&vp); - D3DRECT d3dRect; - vpd.dwSize=sizeof(D3DVIEWPORT); - vp->GetViewport(&vpd); - d3dRect.x1 = vpd.dwX; - d3dRect.y1 = vpd.dwY; - d3dRect.x2 = vpd.dwX + vpd.dwWidth; - d3dRect.y2 = vpd.dwY + vpd.dwHeight; - OutTraceD("d3dRect=(%d,%d)-(%d,%d)\n", d3dRect.x1, d3dRect.y1, d3dRect.x2, d3dRect.y2); - if(dxw.dwFlags4 & ZBUFFERCLEAN )vp->Clear2(1, &d3dRect, D3DCLEAR_ZBUFFER, 0, 1.0, 0); - if(dxw.dwFlags4 & ZBUFFER0CLEAN)vp->Clear2(1, &d3dRect, D3DCLEAR_ZBUFFER, 0, 0.0, 0); + res2=((LPDIRECT3DDEVICE3)d3dd)->GetCurrentViewport(&vp); + if(!res2){ + D3DRECT d3dRect; + vpd.dwSize=sizeof(D3DVIEWPORT); + vp->GetViewport(&vpd); + d3dRect.x1 = vpd.dwX; + d3dRect.y1 = vpd.dwY; + d3dRect.x2 = vpd.dwX + vpd.dwWidth; + d3dRect.y2 = vpd.dwY + vpd.dwHeight; + OutTraceD("d3dRect=(%d,%d)-(%d,%d)\n", d3dRect.x1, d3dRect.y1, d3dRect.x2, d3dRect.y2); + if(dxw.dwFlags4 & ZBUFFERCLEAN )vp->Clear2(1, &d3dRect, D3DCLEAR_ZBUFFER, 0, 1.0, 0); + if(dxw.dwFlags4 & ZBUFFER0CLEAN)vp->Clear2(1, &d3dRect, D3DCLEAR_ZBUFFER, 0, 0.0, 0); + } } res=(*pBeginScene3)(d3dd); if(res) OutTraceE("BeginScene(3): res=%x(%s)\n", res, ExplainDDError(res)); @@ -685,3 +716,25 @@ HRESULT WINAPI extEndScene3(void *d3dd) if(res) OutTraceE("EndScene(3): res=%x(%s)\n", res, ExplainDDError(res)); return res; } + +HRESULT WINAPI extGetCaps3(void *d3dd, LPD3DDEVICEDESC hd, LPD3DDEVICEDESC sd) +{ + HRESULT res; + OutTraceD("GetCaps(3): d3dd=%x hd=%x sd=%x\n", d3dd, hd, sd); + res=(*pGetCaps3)(d3dd, hd, sd); + if(res) { + OutTraceE("GetCaps(3): res=%x(%s)\n", res, ExplainDDError(res)); + return res; + } + if(dxw.dwFlags4 & NOPOWER2FIX){ + if(hd) { + hd->dpcLineCaps.dwTextureCaps|=D3DPTEXTURECAPS_NONPOW2CONDITIONAL|D3DPTEXTURECAPS_POW2; + hd->dpcTriCaps.dwTextureCaps|=D3DPTEXTURECAPS_NONPOW2CONDITIONAL|D3DPTEXTURECAPS_POW2; + } + if(sd) { + sd->dpcLineCaps.dwTextureCaps|=D3DPTEXTURECAPS_NONPOW2CONDITIONAL|D3DPTEXTURECAPS_POW2; + sd->dpcTriCaps.dwTextureCaps|=D3DPTEXTURECAPS_NONPOW2CONDITIONAL|D3DPTEXTURECAPS_POW2; + } + } + return res; +} diff --git a/dll/ole32.cpp b/dll/ole32.cpp index a967f07..dd0c95c 100644 --- a/dll/ole32.cpp +++ b/dll/ole32.cpp @@ -46,14 +46,14 @@ struct { static void HookAdditionalModules() { for(int i=0; im_BufferedIOFix); DDX_Check(pDX, IDC_ZBUFFERCLEAN, cTarget->m_ZBufferClean); DDX_Check(pDX, IDC_ZBUFFER0CLEAN, cTarget->m_ZBuffer0Clean); + DDX_Check(pDX, IDC_NOPOWER2FIX, cTarget->m_NoPower2Fix); } BEGIN_MESSAGE_MAP(CTabCompat, CDialog) diff --git a/host/TabWindow.cpp b/host/TabWindow.cpp index a595c26..af3e130 100644 --- a/host/TabWindow.cpp +++ b/host/TabWindow.cpp @@ -50,10 +50,13 @@ void CTabWindow::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_INIT16BPP, cTarget->m_Init16BPP); DDX_Check(pDX, IDC_DISABLEGAMMARAMP, cTarget->m_DisableGammaRamp); DDX_Check(pDX, IDC_FORCE16BPP, cTarget->m_Force16BPP); - DDX_Check(pDX, IDC_WIREFRAME, cTarget->m_WireFrame); DDX_Check(pDX, IDC_BLACKWHITE, cTarget->m_BlackWhite); DDX_Check(pDX, IDC_USERGB565, cTarget->m_UseRGB565); DDX_Check(pDX, IDC_LOCKSYSCOLORS, cTarget->m_LockSysColors); + + // 3D management + DDX_Check(pDX, IDC_WIREFRAME, cTarget->m_WireFrame); + DDX_Check(pDX, IDC_DISABLEFOGGING, cTarget->m_DisableFogging); } BOOL CTabWindow::OnInitDialog() diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index c208288..3ea2c6c 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -56,6 +56,8 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_ZBufferClean = FALSE; m_ZBuffer0Clean = FALSE; m_ZBufferAlways = FALSE; + m_DisableFogging = FALSE; + m_NoPower2Fix = FALSE; m_UnNotify = FALSE; m_Windowize = TRUE; // default true !! m_HookDLLs = TRUE; // default true !! diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 1edded0..7b6605f 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -119,6 +119,8 @@ public: BOOL m_ZBufferClean; BOOL m_ZBuffer0Clean; BOOL m_ZBufferAlways; + BOOL m_NoPower2Fix; + BOOL m_DisableFogging; BOOL m_SuppressIME; BOOL m_SetCompatibility; BOOL m_DisableHAL; diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index 41cb995f81f9887164fdb5bc0df565a44b027b72..c0832924cc68477b5aa6ca5524ce96e4b639835a 100644 GIT binary patch delta 2295 zcmZ9NeN@wB6vyxL1113y>R^m;T3Vh+Ya14WIOy~@a5~w9Ex?e`$&qyw6bt7|$jLX% zUZ|_*R^)m)RQ^$xXT92q-ZP5~6B7wZd&RP&m6l?%p6A&Q^theO zE&_{rYA$>L;8gu{-Kw*&0Nk9RD1r%O%xZ=nyI%DKp@-(K_WTz>3yP!#-&(bh;e=S#I|nVa=Ti zUt>#a8tcTzMyKAsUpn~WelbKEa^ag{ad^u%vl$LZnIFfn*=Dvt*G2Ubw-pW|8|1cc>IoXr&q`p zGkhoIQu}QV@xC;%7w2u)z4J}z6DZiZuM z(We=IkY#bO{t`#2Z*Fu#4*ZDK`c(E4c5XMYpYajBVa6}g=`2z#;4b0veRKq zwNDEl@cI;1jMtZKX7Ups{-W$r77cM(#dBJeHUCvD`g8v8T6FsM3M~p$&eEb!EAzF; zxL|KI3J)xpt!QFp^+8Q^-jSz?;nq7p8ydJW(52M_HSe>lo$5?^@0>Fs5)sK|-$El! zSaf}~fxU!*MOj+>N_fYj>$El5hxqH=+E&>9@ZNiF87dsd^u+~Q$G=#&xKN9q!+nc~ zR(c*sEt#b06LH>>Aw3tj4(oZ?H56k@Z6ca#Gou~2k7o;NuhO!lx?7%##9@umqCe{#f9SCh$T4f^aY2V?B?S z!+5@A9nZ(ZQqC1ztLJeY)bOj7ziRlyIR!lK%!0_vcafFGVPb_2G zZem7V8{du^N2_>UiI1nJ1id3^x8SLf)FarPLIcgp3?(*|3O4iHl}lBETkX^+*sD@V zFnt!a3m)}SpWulA4GO+qPo@VsKUhZvg3Vj0N^t87)F@c_CWQni?xA+U{BG(Kytj`A z1)ENiX$xok87dIe>!?aF#XyaMPh?U^ux$#p3-)GHpJ2aAgMzR5$n+3ru!af*e=4FX z!5sl=6kM~8LV}(bs9o^HA?g#%KS_gvopEG(n6o#H3IwaCP?cbtN{xckS5Qc>Wd*eh z<_D=y@QEM|3Z}0l(<7WstEfQm<<(Rr*wILhg6r2(ND!K+U2+}u3AU}HLCzT028G70 HSB(Dyi96wX delta 2791 zcmZuzdr*{B6hHR@i^)TRU2#bfO$Cc;Srk@d$calxaWR5 zvqw9I9@sIo#b!9rK%sPMv8|@4qO`c$teDKoq-<8QAd%$0yZl64tuoVPbL7v1OmlX2 z1{?%%*c6-HY4_PBWQLC=WVP93oC%-E*gn_oba{fBN${z}JhNv>O*R~ov0DQy@L3SJ zqt_HTEU+<(`*t^r2|f=B)pnK)=-d*oH+&({ISzY~(^VjPShC?u*1Xj~j$CKDW& zFdlnAY%yiP*SArr&JsJZn9OiO68R3NUGZ7HGbEY`CnYKX#ciGK4T>kjDdtERm2^5t zdaUylkKOAF?$=_nz!_GTkmxuoY1>?@+pXB=I>gB=87BBf!d~kfyJ)6@-%3y%O7S^n z+PzMP&F+z027JfPC+NxdY~S{gy4=wCF{mFMq|uyDTry6%$d;3h+#zH zuKAp@>3lVLRJXKq6Z`GYM-|0>&T7)k#0?=@H-^Y{CFl%z9z zQ4^7Gw*O*LGYPtEkqpJWuuNiwjlnLUE4jO@8`|pywYxe>#n$KD)qF7?(eL;qGVKjRnimr@eY#^GBQICw4SB_=Fs?;1}_2*SRuVV+Q zZCK=1^@GI5Ca%~jznlECY8Hj*uKEDR0q`Hxt+1VcPp1wW>;HQ-DPom3v#HJF-+gm6p?R}e+O7FX6{Vm) zkpS*C2!|GU5ds0M&~fWITKT+R|L-C~eO9(A;GqsD>ki~nM_yYT8IE1r(#XiR2C^Ws zGYlXFfLAtABb(M6M`G9$z1iG7gy@Eb!3LOyB?E!|#e`IaHI9oQ`^QDl{yLJ&4QpvC zz2W1zc(91{(Ev_fvXwY{WQOfmZb2Qb#yeU9uj6Q zpD7IRWx^Emjl#J39yIjOCEm3TGdr&E%fcSK&SRTslFo)ZYq-H5ZlcLyy#e4ZJiSh= zq7Zlmg47hwHwk-9$M*_5Et+=;`&~4@EbO6SJa#>OJgh%~@Za<#X~GZyi-q8_D1Nrd zn=xq@gf{d-1rPc|sh9A0lOOara<};Ilg#AiRL^Kmjop?2ZFC>ea+p z2A{jdXG%3bJe0@$j^%`JeGWT|VsEd}#JWMnFEGL@TZu7Ji0gLZ%)8Xg!uPbydj`#n zJ4|@g=O`Y5mD5gZ;;2Ez3%)1(sdFeUivTFUtcha=6<_<4@GIBUnIMAln-Mga`Hw*? zT}eGY^r#hPZJvk6_+lg zTv>!|^hkH-6Mh8mE^;get)+xFFC@lV5tPZ@$Ktf>Wf{{Qw=VdconjAye=USJA#&!F z#%~JYMShyxqsVW*n=b<)_#j-ILkL>#7JwMNQ?66+n?rb!?@ZV7w+za+;Lim diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index c4f757d..e819ac9 100644 --- a/host/dxwndhost.rc +++ b/host/dxwndhost.rc @@ -417,6 +417,7 @@ BEGIN CONTROL "Set 16BPP RGB565 encoding",IDC_USERGB565,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,64,126,9 CONTROL "Lock Sys Colors",IDC_LOCKSYSCOLORS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,76,126,9 GROUPBOX "3D effects",IDC_STATIC,149,122,144,111 + CONTROL "Disable Fogging",IDC_DISABLEFOGGING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,147,96,10 END IDD_TAB_EMPTY DIALOGEX 0, 0, 300, 240 @@ -443,6 +444,7 @@ BEGIN CONTROL "Fix buffered IO after Win98",IDC_BUFFEREDIOFIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,128,109,12 CONTROL "Clean ZBUFFER @1.0 fix",IDC_ZBUFFERCLEAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,116,109,12 CONTROL "Clean ZBUFFER @0.0 fix",IDC_ZBUFFER0CLEAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,104,109,12 + CONTROL "Textures not power of 2 fix",IDC_NOPOWER2FIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,92,109,12 END IDD_TAB_SYSLIBS DIALOGEX 0, 0, 300, 240 diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index f78b449f02ca3c669acf047984ebcb54063f578b..9e726045e659c6d6d6cef803809cf72077cab7e6 100644 GIT binary patch delta 4403 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 delta 3940 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 VE|DopXyA>}iKdm_ZBufferClean) t->flags4 |= ZBUFFERCLEAN; if(dlg->m_ZBuffer0Clean) t->flags4 |= ZBUFFER0CLEAN; if(dlg->m_ZBufferAlways) t->flags4 |= ZBUFFERALWAYS; + if(dlg->m_NoPower2Fix) t->flags4 |= NOPOWER2FIX; + if(dlg->m_DisableFogging) t->flags4 |= DISABLEFOGGING; if(dlg->m_SuppressIME) t->flags2 |= SUPPRESSIME; if(dlg->m_SuppressD3DExt) t->flags3 |= SUPPRESSD3DEXT; if(dlg->m_SetCompatibility) t->flags2 |= SETCOMPATIBILITY; @@ -314,6 +316,8 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_ZBufferClean = t->flags4 & ZBUFFERCLEAN ? 1 : 0; dlg->m_ZBuffer0Clean = t->flags4 & ZBUFFER0CLEAN ? 1 : 0; dlg->m_ZBufferAlways = t->flags4 & ZBUFFERALWAYS ? 1 : 0; + dlg->m_NoPower2Fix = t->flags4 & NOPOWER2FIX ? 1 : 0; + dlg->m_DisableFogging = t->flags4 & DISABLEFOGGING ? 1 : 0; dlg->m_SaveLoad = t->flags & SAVELOAD ? 1 : 0; dlg->m_SlowDown = t->flags & SLOWDOWN ? 1 : 0; dlg->m_BlitFromBackBuffer = t->flags & BLITFROMBACKBUFFER ? 1 : 0;