From f09fae693b4b5aa7ed7416e01253a279a3009ee7 Mon Sep 17 00:00:00 2001 From: gho tik Date: Wed, 19 Feb 2014 11:38:50 -0500 Subject: [PATCH] v2_02_59_src Former-commit-id: 7c995e4183d2624e6676f290836d24c51334ef64 --- Include/dxwnd.h | 2 +- build/dxwnd.dll | 4 +- build/dxwnd.exe | 4 +- build/dxwnd.ini | 595 ++++++++++++++---- build/exports/Carnivores 3DFX.dxw | 26 + build/exports/Carnivores.dxw | 26 + build/exports/Catechumen (3DFX).dxw | 26 + build/exports/Darkened Skye.dxw | 26 + build/exports/Evolva.dxw | 26 + build/exports/Incoming (GOG).dxw | 26 + build/exports/Incoming Forces (GOG).dxw | 26 + build/exports/New York Race.dxw | 26 + build/exports/Star Wars Episode I Racer.dxw | 4 +- build/exports/Virtua Fighter PC.dxw | 26 + build/exports/Warhammer 40K Chaos Gate.dxw | 6 +- .../Warhammer 40K Final Liberation.dxw | 26 + build/readme-relnotes.txt | 4 + dll/ddraw.cpp | 12 +- dll/dxhook.cpp | 7 +- dll/dxwcore.cpp | 36 +- dll/dxwcore.hpp | 1 + dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 120320 -> 122880 bytes dll/kernel32.cpp | 13 +- dll/user32.cpp | 3 +- dll/winmm.cpp | 3 +- host/Resource.h | 1 + host/TabTiming.cpp | 1 + host/TargetDlg.cpp | 1 + host/TargetDlg.h | 1 + host/dxwndhost.rc | 1 + host/dxwndhost.vs2008.suo | Bin 102912 -> 102912 bytes host/dxwndhostView.cpp | 2 + 33 files changed, 833 insertions(+), 130 deletions(-) create mode 100644 build/exports/Carnivores 3DFX.dxw create mode 100644 build/exports/Carnivores.dxw create mode 100644 build/exports/Catechumen (3DFX).dxw create mode 100644 build/exports/Darkened Skye.dxw create mode 100644 build/exports/Evolva.dxw create mode 100644 build/exports/Incoming (GOG).dxw create mode 100644 build/exports/Incoming Forces (GOG).dxw create mode 100644 build/exports/New York Race.dxw create mode 100644 build/exports/Virtua Fighter PC.dxw create mode 100644 build/exports/Warhammer 40K Final Liberation.dxw diff --git a/Include/dxwnd.h b/Include/dxwnd.h index 15c7704..8bf3e55 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -20,7 +20,6 @@ #define HANDLEEXCEPTIONS 0x00000040 // Handles exceptions: Div by 0 .... #define SAVELOAD 0x00000080 #define EMULATEBUFFER 0x00000100 -//#define HANDLEDC 0x00000200 #define AUTOMATIC 0x00000200 #define BLITFROMBACKBUFFER 0x00000400 #define SUPPRESSCLIPPING 0x00000800 @@ -130,6 +129,7 @@ #define NOFILLRECT 0x00002000 // Suppress FillRect calls #define HOOKGLIDE 0x00004000 // Hook glide calls #define HIDEDESKTOP 0x00008000 // Hide desktop background +#define STRETCHTIMERS 0x00010000 // Enables timers stretching when TIMESTRETCH is on // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general diff --git a/build/dxwnd.dll b/build/dxwnd.dll index d1a1101..8850703 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6470041921d673a2f604bd9a646a2462aba707cab537c42a5770a9cc981dbb0a -size 458240 +oid sha256:7f096da2bcb539a443b930cc06ca3814a98394da357dcc2817a7ffa431bb5faa +size 459776 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index 8f9b3f1..56379f4 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9760719d7520e5a1b652d530fc2f32b8018842d333594f06241a692b3904652 -size 535040 +oid sha256:4ccfe97f2a4ee32296cfaae398fe767a22f26d620ba7065c0cbc7a078eb2d459 +size 535552 diff --git a/build/dxwnd.ini b/build/dxwnd.ini index 76b75c2..9af460b 100644 --- a/build/dxwnd.ini +++ b/build/dxwnd.ini @@ -1332,7 +1332,7 @@ ver53=1 coord53=0 flag53=679477282 flagg53=1744830480 -flagh53=65556 +flagh53=65540 flagi53=4 tflag53=258 initx53=0 @@ -2305,7 +2305,7 @@ module92=jgl opengllib92= ver92=0 coord92=0 -flag92=973352994 +flag92=973353504 flagg92=136462360 flagh92=2162708 flagi92=4100 @@ -2375,14 +2375,14 @@ initts94=0 winver94=0 maxres94=0 title95=StarCraft -path95=D:\Games\Starcraft\StarCraft.exe +path95=D:\Games\Starcraft\Starcraft\StarCraft.exe module95= opengllib95= ver95=0 coord95=0 flag95=134217762 flagg95=134283264 -flagh95=20 +flagh95=32788 flagi95=8 tflag95=64 initx95=0 @@ -2824,17 +2824,17 @@ maxfps112=0 initts112=0 winver112=0 maxres112=0 -title113=Virtua Fighter PC -path113=D:\Games\Virtua Fighter\VFPC.EXE +title113=Warcraft 2 Battlenet Ed +path113=D:\Games\Warcraft 2 Battlenet Ed\Warcraft II BNE.exe module113= opengllib113= ver113=0 coord113=0 -flag113=402653218 -flagg113=1224736784 -flagh113=33562644 -flagi113=0 -tflag113=290 +flag113=134217762 +flagg113=1210122240 +flagh113=148 +flagi113=12 +tflag113=0 initx113=0 inity113=0 minx113=0 @@ -2848,18 +2848,18 @@ sizy113=600 maxfps113=0 initts113=0 winver113=0 -maxres113=2 -title114=Warcraft 2 Battlenet Ed -path114=D:\Games\Warcraft 2 Battlenet Ed\Warcraft II BNE.exe +maxres113=0 +title114=Wargasm +path114=D:\Games\Wargasm\tank.exe module114= opengllib114= ver114=0 -coord114=0 -flag114=134217762 -flagg114=1210122240 -flagh114=148 -flagi114=12 -tflag114=0 +coord114=2 +flag114=671088672 +flagg114=1207959696 +flagh114=65556 +flagi114=0 +tflag114=6162 initx114=0 inity114=0 minx114=0 @@ -2874,17 +2874,17 @@ maxfps114=0 initts114=0 winver114=0 maxres114=0 -title115=Wargasm -path115=D:\Games\Wargasm\tank.exe +title115=Whiteout +path115=D:\Games\Whiteout\Whiteout.exe module115= opengllib115= ver115=0 -coord115=2 -flag115=671088672 -flagg115=1207959696 -flagh115=65556 +coord115=0 +flag115=402653217 +flagg115=1207959552 +flagh115=20 flagi115=0 -tflag115=6162 +tflag115=66 initx115=0 inity115=0 minx115=0 @@ -2893,23 +2893,23 @@ maxx115=0 maxy115=0 posx115=50 posy115=50 -sizx115=800 -sizy115=600 +sizx115=640 +sizy115=480 maxfps115=0 initts115=0 winver115=0 maxres115=0 -title116=Warlords Battlecry II (DEMO) -path116=D:\Games\Warlords Battlecry II Demo\Battlecry II Demo.exe +title116=Wildfire +path116=D:\Games\Wildfire\Wildfire.exe module116= opengllib116= ver116=0 -coord116=2 -flag116=134217762 -flagg116=1207959568 -flagh116=22 -flagi116=0 -tflag116=258 +coord116=0 +flag116=-1476392958 +flagg116=1210122240 +flagh116=20 +flagi116=12 +tflag116=0 initx116=0 inity116=0 minx116=0 @@ -2924,17 +2924,17 @@ maxfps116=0 initts116=0 winver116=0 maxres116=0 -title117=Whiteout -path117=D:\Games\Whiteout\Whiteout.exe +title117=Worms Pinball +path117=D:\Games\Worms Pinball\WPIB.exe module117= opengllib117= -ver117=0 +ver117=1 coord117=0 -flag117=402653217 -flagg117=1207959552 +flag117=134217762 +flagg117=1207959568 flagh117=20 -flagi117=0 -tflag117=66 +flagi117=4 +tflag117=0 initx117=0 inity117=0 minx117=0 @@ -2943,22 +2943,22 @@ maxx117=0 maxy117=0 posx117=50 posy117=50 -sizx117=640 -sizy117=480 +sizx117=800 +sizy117=600 maxfps117=0 initts117=0 winver117=0 maxres117=0 -title118=Wildfire -path118=D:\Games\Wildfire\Wildfire.exe +title118=Zanzarah +path118=D:\Games\Zanzarah\System\zanthp.exe module118= opengllib118= ver118=0 coord118=0 -flag118=-1476392958 -flagg118=1210122240 +flag118=679477280 +flagg118=1207959552 flagh118=20 -flagi118=12 +flagi118=0 tflag118=0 initx118=0 inity118=0 @@ -2974,14 +2974,14 @@ maxfps118=0 initts118=0 winver118=0 maxres118=0 -title119=Worms Pinball -path119=D:\Games\Worms Pinball\WPIB.exe +title119=ZPC Zero Population Count +path119=D:\Games\ZPC\ZPC.EXE module119= opengllib119= -ver119=1 +ver119=0 coord119=0 flag119=134217762 -flagg119=1207959568 +flagg119=1207959552 flagh119=20 flagi119=4 tflag119=0 @@ -2999,17 +2999,17 @@ maxfps119=0 initts119=0 winver119=0 maxres119=0 -title120=Zanzarah -path120=D:\Games\Zanzarah\System\zanthp.exe +title120=Black Thorn +path120=D:\Games\Black Thorn\BlackThorn.exe module120= opengllib120= ver120=0 coord120=0 -flag120=679477280 -flagg120=1207959552 -flagh120=20 -flagi120=0 -tflag120=0 +flag120=687886372 +flagg120=134217728 +flagh120=65556 +flagi120=4 +tflag120=6211 initx120=0 inity120=0 minx120=0 @@ -3023,18 +3023,18 @@ sizy120=600 maxfps120=0 initts120=0 winver120=0 -maxres120=0 -title121=Zax the Alien Hunter (DEMO) -path121=D:\Games\ZaxDemo\Zax.exe +maxres120=-1 +title121=Empire of the Ants +path121=D:\Games\Empire of the Ants\Game.exe module121= opengllib121= ver121=0 -coord121=2 -flag121=-2011168734 -flagg121=1209008144 +coord121=0 +flag121=1023426596 +flagg121=134217744 flagh121=20 -flagi121=0 -tflag121=258 +flagi121=4 +tflag121=6466 initx121=0 inity121=0 minx121=0 @@ -3048,18 +3048,18 @@ sizy121=600 maxfps121=0 initts121=0 winver121=0 -maxres121=0 -title122=ZPC Zero Population Count -path122=D:\Games\ZPC\ZPC.EXE +maxres121=-1 +title122=Populous 3 (GOG - D3D) +path122=D:\Games\Populous 3 (GOG)\D3DPopTB.exe module122= opengllib122= ver122=0 -coord122=0 -flag122=134217762 -flagg122=1207959552 -flagh122=20 +coord122=2 +flag122=738214436 +flagg122=134217744 +flagh122=65556 flagi122=4 -tflag122=0 +tflag122=6147 initx122=0 inity122=0 minx122=0 @@ -3073,18 +3073,18 @@ sizy122=600 maxfps122=0 initts122=0 winver122=0 -maxres122=0 -title123=Black Thorn -path123=D:\Games\Black Thorn\BlackThorn.exe +maxres122=-1 +title123=Populous 3 (GOG) +path123=D:\Games\Populous 3 (GOG)\popTB.exe module123= opengllib123= ver123=0 coord123=0 -flag123=692076580 -flagg123=1207959552 +flag123=671105572 +flagg123=1207959568 flagh123=20 flagi123=4 -tflag123=6211 +tflag123=0 initx123=0 inity123=0 minx123=0 @@ -3099,17 +3099,17 @@ maxfps123=0 initts123=0 winver123=0 maxres123=-1 -title124=Empire of the Ants -path124=D:\Games\Empire of the Ants\Game.exe +title124=Thief 2 (GOG) +path124=D:\Games\Thief 2 (GOG)\thief2_no_ddfix.exe module124= opengllib124= ver124=0 coord124=0 -flag124=1023426596 -flagg124=134217744 -flagh124=20 +flag124=671089184 +flagg124=1207959552 +flagh124=65556 flagi124=4 -tflag124=6466 +tflag124=0 initx124=0 inity124=0 minx124=0 @@ -3124,20 +3124,20 @@ maxfps124=0 initts124=0 winver124=0 maxres124=-1 -title125=Populous 3 (GOG - D3D) +title125=Freelancer module125= opengllib125= -title126=Populous 3 (GOG) +title126=Virtua Fighter PC module126= opengllib126= -path125=D:\Games\Populous 3 (GOG)\D3DPopTB.exe +path125=D:\Games\Freelancer\EXE\Freelancer.exe ver125=0 coord125=0 -flag125=671105572 -flagg125=134217744 +flag125=671089184 +flagg125=1207959552 flagh125=65556 flagi125=4 -tflag125=6146 +tflag125=1024 initx125=0 inity125=0 minx125=0 @@ -3152,14 +3152,14 @@ maxfps125=0 initts125=0 winver125=0 maxres125=-1 -path126=D:\Games\Populous 3 (GOG)\popTB.exe +path126=D:\Games\Virtua Fighter\VFPC.EXE ver126=0 coord126=0 -flag126=671105572 -flagg126=1207959568 +flag126=134218272 +flagg126=134217744 flagh126=20 flagi126=4 -tflag126=0 +tflag126=6147 initx126=0 inity126=0 minx126=0 @@ -3174,15 +3174,15 @@ maxfps126=0 initts126=0 winver126=0 maxres126=-1 -title127=Thief 2 (GOG) -path127=D:\Games\Thief 2 (GOG)\thief2_no_ddfix.exe +title127=Heroes of Might & Magic 2 +path127=D:\Games\Heroes of Might & Magic 2\HEROES2W.EXE module127= opengllib127= ver127=0 coord127=0 -flag127=687865888 +flag127=2 flagg127=1207959552 -flagh127=65556 +flagh127=20 flagi127=4 tflag127=0 initx127=0 @@ -3199,8 +3199,389 @@ maxfps127=0 initts127=0 winver127=0 maxres127=-1 +title128=Evolva +path128=D:\Games\Evolva\Evolva.exe +module128= +opengllib128= +ver128=0 +coord128=0 +flag128=134217760 +flagg128=1207959552 +flagh128=20 +flagi128=4 +tflag128=6146 +initx128=0 +inity128=0 +minx128=0 +miny128=0 +maxx128=0 +maxy128=0 +posx128=50 +posy128=50 +sizx128=800 +sizy128=600 +maxfps128=0 +initts128=0 +winver128=0 +maxres128=-1 +title129=Heroes of Might & Magic 2 (POL) +path129=D:\Games\HEROES2\HEROES2W.EXE +module129= +opengllib129= +ver129=0 +coord129=0 +flag129=134218240 +flagg129=1207959560 +flagh129=20 +flagi129=32772 +tflag129=1024 +initx129=0 +inity129=0 +minx129=0 +miny129=0 +maxx129=0 +maxy129=0 +posx129=50 +posy129=50 +sizx129=800 +sizy129=600 +maxfps129=0 +initts129=0 +winver129=0 +maxres129=-1 +title130=Castle Strike +path130=D:\Games\Castle Strike\Castlestrike.exe +module130= +opengllib130= +ver130=8 +coord130=0 +flag130=671089184 +flagg130=1208483840 +flagh130=20 +flagi130=4 +tflag130=6155 +initx130=0 +inity130=0 +minx130=0 +miny130=0 +maxx130=0 +maxy130=0 +posx130=50 +posy130=50 +sizx130=800 +sizy130=600 +maxfps130=0 +initts130=0 +winver130=0 +maxres130=-1 +title131=Carnivores 3DFX +path131=D:\Games\Carnivores\HUNT3DFX.EXE +module131= +opengllib131= +ver131=0 +coord131=0 +flag131=671089184 +flagg131=1207959552 +flagh131=20 +flagi131=4 +tflag131=0 +initx131=0 +inity131=0 +minx131=0 +miny131=0 +maxx131=0 +maxy131=0 +posx131=50 +posy131=50 +sizx131=800 +sizy131=600 +maxfps131=0 +initts131=0 +winver131=0 +maxres131=-1 +title132=Carnivores +path132=D:\Games\Carnivores\HUNTSOFT.EXE +module132= +opengllib132= +ver132=0 +coord132=0 +flag132=939524640 +flagg132=1209008128 +flagh132=20 +flagi132=4 +tflag132=0 +initx132=0 +inity132=0 +minx132=0 +miny132=0 +maxx132=0 +maxy132=0 +posx132=50 +posy132=50 +sizx132=800 +sizy132=600 +maxfps132=0 +initts132=0 +winver132=0 +maxres132=-1 +title133=Catechumen (3DFX) +path133=D:\Games\Catechumen\game\Catechumen.exe +module133= +opengllib133= +ver133=9 +coord133=0 +flag133=402653218 +flagg133=1207959552 +flagh133=65556 +flagi133=16388 +tflag133=0 +initx133=0 +inity133=0 +minx133=0 +miny133=0 +maxx133=0 +maxy133=0 +posx133=50 +posy133=50 +sizx133=800 +sizy133=600 +maxfps133=0 +initts133=0 +winver133=0 +maxres133=-1 +title134=Deus Ex +path134=D:\Games\Deus Ex\System\DeusEx.exe +module134= +opengllib134= +ver134=9 +coord134=0 +flag134=134218240 +flagg134=1207959552 +flagh134=65556 +flagi134=4 +tflag134=0 +initx134=0 +inity134=0 +minx134=0 +miny134=0 +maxx134=0 +maxy134=0 +posx134=50 +posy134=50 +sizx134=800 +sizy134=600 +maxfps134=0 +initts134=0 +winver134=0 +maxres134=-1 +title135=Warhammer 40K Chaos Gate +path135=D:\Games\Warhammer 40K Chaos Gate\game\WH40K.exe +module135= +opengllib135= +ver135=0 +coord135=0 +flag135=679494176 +flagg135=134217728 +flagh135=20 +flagi135=4 +tflag135=0 +initx135=0 +inity135=0 +minx135=0 +miny135=0 +maxx135=0 +maxy135=0 +posx135=50 +posy135=50 +sizx135=800 +sizy135=600 +maxfps135=0 +initts135=0 +winver135=0 +maxres135=-1 +title136=Warhammer 40K Final Liberation +path136=D:\Games\Warhammer 40K Final Liberation\EPIC40K.EXE +module136= +opengllib136= +ver136=0 +coord136=0 +flag136=134217762 +flagg136=134217744 +flagh136=98324 +flagi136=4 +tflag136=6147 +initx136=0 +inity136=0 +minx136=0 +miny136=0 +maxx136=0 +maxy136=0 +posx136=50 +posy136=50 +sizx136=640 +sizy136=480 +maxfps136=0 +initts136=0 +winver136=0 +maxres136=-1 +title137=Warhammer 40K Rites Of War +path137=D:\Games\Warhammer 40K Rites Of War\game\RoW.orig.exe +module137= +opengllib137= +ver137=1 +coord137=0 +flag137=1744846882 +flagg137=134217858 +flagh137=20 +flagi137=0 +tflag137=6403 +initx137=0 +inity137=0 +minx137=0 +miny137=0 +maxx137=0 +maxy137=0 +posx137=50 +posy137=50 +sizx137=800 +sizy137=600 +maxfps137=0 +initts137=0 +winver137=0 +maxres137=-1 +title138=Darkened Skye +path138=D:\Games\Darkened Skye\Skye.exe +module138= +opengllib138= +ver138=0 +coord138=0 +flag138=679493664 +flagg138=1208025088 +flagh138=65556 +flagi138=4 +tflag138=6147 +initx138=0 +inity138=0 +minx138=0 +miny138=0 +maxx138=0 +maxy138=0 +posx138=50 +posy138=50 +sizx138=800 +sizy138=600 +maxfps138=0 +initts138=-2 +winver138=0 +maxres138=-1 +title139=New York Race +path139=D:\Games\New York Race\NYR.exe +module139= +opengllib139= +ver139=8 +coord139=0 +flag139=687867937 +flagg139=1208025104 +flagh139=65556 +flagi139=12 +tflag139=4097 +initx139=0 +inity139=0 +minx139=0 +miny139=0 +maxx139=0 +maxy139=0 +posx139=50 +posy139=50 +sizx139=800 +sizy139=600 +maxfps139=0 +initts139=0 +winver139=0 +maxres139=-1 +title140=Incoming (GOG) +path140=D:\Games\Incoming and Incoming Forces\Incoming\incoming.exe +module140= +opengllib140= +ver140=7 +coord140=2 +flag140=150994976 +flagg140=1207959568 +flagh140=20 +flagi140=4 +tflag140=1024 +initx140=0 +inity140=0 +minx140=0 +miny140=0 +maxx140=0 +maxy140=0 +posx140=50 +posy140=50 +sizx140=800 +sizy140=600 +maxfps140=0 +initts140=0 +winver140=0 +maxres140=-1 +title141=Incoming Forces (GOG) +path141=D:\Games\Incoming and Incoming Forces\Incoming Forces\forces.exe +module141= +opengllib141= +ver141=0 +coord141=0 +flag141=134218272 +flagg141=1207959552 +flagh141=20 +flagi141=4 +tflag141=1024 +initx141=0 +inity141=0 +minx141=0 +miny141=0 +maxx141=0 +maxy141=0 +posx141=50 +posy141=50 +sizx141=800 +sizy141=600 +maxfps141=0 +initts141=0 +winver141=0 +maxres141=-1 +title142=CIsland.exe +path142=D:\Games\ChaosIsland\CIsland.exe +module142= +opengllib142= +ver142=0 +coord142=0 +flag142=134218272 +flagg142=1207959552 +flagh142=20 +flagi142=4 +tflag142=6147 +initx142=0 +inity142=0 +minx142=0 +miny142=0 +maxx142=0 +maxy142=0 +posx142=50 +posy142=50 +sizx142=800 +sizy142=600 +maxfps142=0 +initts142=0 +winver142=0 +maxres142=-1 +title143=Incoming (GOG) +module143= +opengllib143= +title144=Incoming Forces (GOG) +module144= +opengllib144= [window] -posx=1129 -posy=466 +posx=1161 +posy=364 sizx=638 -sizy=448 +sizy=618 diff --git a/build/exports/Carnivores 3DFX.dxw b/build/exports/Carnivores 3DFX.dxw new file mode 100644 index 0000000..ad91712 --- /dev/null +++ b/build/exports/Carnivores 3DFX.dxw @@ -0,0 +1,26 @@ +[target] +title0=Carnivores 3DFX +path0=D:\Games\Carnivores\HUNT3DFX.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671089184 +flagg0=1207959552 +flagh0=20 +flagi0=4 +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 diff --git a/build/exports/Carnivores.dxw b/build/exports/Carnivores.dxw new file mode 100644 index 0000000..ba8d91d --- /dev/null +++ b/build/exports/Carnivores.dxw @@ -0,0 +1,26 @@ +[target] +title0=Carnivores +path0=D:\Games\Carnivores\HUNTSOFT.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=939524640 +flagg0=1209008128 +flagh0=20 +flagi0=4 +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 diff --git a/build/exports/Catechumen (3DFX).dxw b/build/exports/Catechumen (3DFX).dxw new file mode 100644 index 0000000..efd3ca6 --- /dev/null +++ b/build/exports/Catechumen (3DFX).dxw @@ -0,0 +1,26 @@ +[target] +title0=Catechumen (3DFX) +path0=D:\Games\Catechumen\game\Catechumen.exe +module0= +opengllib0= +ver0=9 +coord0=0 +flag0=402653218 +flagg0=1207959552 +flagh0=65556 +flagi0=16388 +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 diff --git a/build/exports/Darkened Skye.dxw b/build/exports/Darkened Skye.dxw new file mode 100644 index 0000000..8aa2c65 --- /dev/null +++ b/build/exports/Darkened Skye.dxw @@ -0,0 +1,26 @@ +[target] +title0=Darkened Skye +path0=D:\Games\Darkened Skye\Skye.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=679493664 +flagg0=1207959552 +flagh0=65556 +flagi0=4 +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 diff --git a/build/exports/Evolva.dxw b/build/exports/Evolva.dxw new file mode 100644 index 0000000..1aa687b --- /dev/null +++ b/build/exports/Evolva.dxw @@ -0,0 +1,26 @@ +[target] +title0=Evolva +path0=D:\Games\Evolva\Evolva.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217760 +flagg0=1207959552 +flagh0=20 +flagi0=4 +tflag0=6146 +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 diff --git a/build/exports/Incoming (GOG).dxw b/build/exports/Incoming (GOG).dxw new file mode 100644 index 0000000..5d12196 --- /dev/null +++ b/build/exports/Incoming (GOG).dxw @@ -0,0 +1,26 @@ +[target] +title0=Incoming (GOG) +path0=D:\Games\Incoming and Incoming Forces\Incoming\incoming.exe +module0= +opengllib0= +ver0=7 +coord0=0 +flag0=150994976 +flagg0=1207959552 +flagh0=20 +flagi0=4 +tflag0=1024 +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 diff --git a/build/exports/Incoming Forces (GOG).dxw b/build/exports/Incoming Forces (GOG).dxw new file mode 100644 index 0000000..f340bff --- /dev/null +++ b/build/exports/Incoming Forces (GOG).dxw @@ -0,0 +1,26 @@ +[target] +title0=Incoming Forces (GOG) +path0=D:\Games\Incoming and Incoming Forces\Incoming Forces\forces.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134218272 +flagg0=1207959552 +flagh0=20 +flagi0=4 +tflag0=1024 +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 diff --git a/build/exports/New York Race.dxw b/build/exports/New York Race.dxw new file mode 100644 index 0000000..51801a6 --- /dev/null +++ b/build/exports/New York Race.dxw @@ -0,0 +1,26 @@ +[target] +title0=New York Race +path0=D:\Games\New York Race\NYR.exe +module0= +opengllib0= +ver0=8 +coord0=0 +flag0=687867937 +flagg0=1207959568 +flagh0=65556 +flagi0=4 +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 diff --git a/build/exports/Star Wars Episode I Racer.dxw b/build/exports/Star Wars Episode I Racer.dxw index 37ebbe2..b1a9c5a 100644 --- a/build/exports/Star Wars Episode I Racer.dxw +++ b/build/exports/Star Wars Episode I Racer.dxw @@ -9,7 +9,7 @@ flag0=679493669 flagg0=1210056720 flagh0=8212 flagi0=20 -tflag0=67 +tflag0=0 initx0=0 inity0=0 minx0=0 @@ -22,3 +22,5 @@ sizx0=800 sizy0=600 maxfps0=0 initts0=0 +winver0=0 +maxres0=0 diff --git a/build/exports/Virtua Fighter PC.dxw b/build/exports/Virtua Fighter PC.dxw new file mode 100644 index 0000000..efd27c1 --- /dev/null +++ b/build/exports/Virtua Fighter PC.dxw @@ -0,0 +1,26 @@ +[target] +title0=Virtua Fighter PC +path0=D:\Games\Virtua Fighter\VFPC.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134218272 +flagg0=134217744 +flagh0=20 +flagi0=4 +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 diff --git a/build/exports/Warhammer 40K Chaos Gate.dxw b/build/exports/Warhammer 40K Chaos Gate.dxw index 439ffb7..1d4db28 100644 --- a/build/exports/Warhammer 40K Chaos Gate.dxw +++ b/build/exports/Warhammer 40K Chaos Gate.dxw @@ -5,11 +5,11 @@ module0= opengllib0= ver0=0 coord0=0 -flag0=679493667 -flagg0=1207959552 +flag0=679494176 +flagg0=134217728 flagh0=20 flagi0=4 -tflag0=64 +tflag0=0 initx0=0 inity0=0 minx0=0 diff --git a/build/exports/Warhammer 40K Final Liberation.dxw b/build/exports/Warhammer 40K Final Liberation.dxw new file mode 100644 index 0000000..7e394c3 --- /dev/null +++ b/build/exports/Warhammer 40K Final Liberation.dxw @@ -0,0 +1,26 @@ +[target] +title0=Warhammer 40K Final Liberation +path0=D:\Games\Warhammer 40K Final Liberation\EPIC40K.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=134217744 +flagh0=98324 +flagi0=4 +tflag0=6147 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=640 +sizy0=480 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 6aaf2f4..34966fe 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -396,5 +396,9 @@ Automatic mode allows dynamic mode change depending on the situation: it is nece fixed BltFast operation with SRC color key (often used to draw cursor from texures) directly to primary surface: this makes the cursor visible in Populous 3. minor fixes on logging +v2.02.59 +fixed IDIrectDraw reference counter for ddraw release 1 session: fixes "Warhammer 40K Rites Of War" first screen +fixed QueryPerformanceCounter handling: fixes "New Yourk Racer" time stretching problems + diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index f8d8ea2..05180b0 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -317,8 +317,8 @@ static char *DumpPixelFormat(LPDDSURFACEDESC2 lpddsd) static char sBuf[512]; char sItem[256]; DWORD flags=lpddsd->ddpfPixelFormat.dwFlags; - sprintf(sBuf, " PixelFormat size=%d flags=%x(%s) BPP=%d", - lpddsd->dwSize, flags, ExplainPixelFormatFlags(flags), lpddsd->ddpfPixelFormat.dwRGBBitCount); + sprintf(sBuf, " PixelFormat flags=%x(%s) BPP=%d", + flags, ExplainPixelFormatFlags(flags), lpddsd->ddpfPixelFormat.dwRGBBitCount); if (flags & DDPF_RGB) { if (flags & DDPF_ALPHAPIXELS) { sprintf(sItem, " RGBA=(%x,%x,%x,%x)", @@ -1443,6 +1443,13 @@ HRESULT WINAPI extDirectDrawCreate(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, I HookDDSession(lplpdd, dxw.dwDDVersion); + // beware: old ddraw games seem to reuse a closed ddraw handle. The theory is that maybe whenever + // you created a ddraw session, you got more than one reference count, so that releasing it once + // did not destroy the object.... but why? when (I mean, in which situations? Maybe not always...) + // and for which releases? The fix here assumes that this fact is true and holds always for ddraw 1 + // sessions. + if(dxw.dwDDVersion==1) (*lplpdd)->AddRef(); // seems to fix problems in "Warhammer 40K Rites Of War" + if(IsDebug && (dxw.dwTFlags & OUTPROXYTRACE)){ DDCAPS DriverCaps, EmulCaps; memset(&DriverCaps, 0, sizeof(DriverCaps)); @@ -3438,6 +3445,7 @@ HRESULT WINAPI extSetClipper(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpdd // v2.1.84: SUPPRESSCLIPPING flag - improves "Monopoly Edition 3D" where continuous // clipping ON & OFF affects blitting on primary surface. + // Needed also to avoid "New Yourk Racer" intro movie clipping. if(dxw.dwFlags1 & SUPPRESSCLIPPING) return 0; if(dxw.dwFlags1 & (EMULATESURFACE|EMULATEBUFFER)){ diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index c3a0e36..6d670e0 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -72,7 +72,7 @@ static char *Flag4Names[32]={ "ZBUFFERCLEAN", "ZBUFFER0CLEAN", "ZBUFFERALWAYS", "DISABLEFOGGING", "NOPOWER2FIX", "NOPERFCOUNTER", "ADDPROXYLIBS", "INTERCEPTRDTSC", "LIMITSCREENRES", "NOFILLRECT", "HOOKGLIDE", "HIDEDESKTOP", - "", "", "", "", + "STRETCHTIMERS", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", @@ -787,8 +787,10 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp } } + if(dxw.dwFlags4 & STRETCHTIMERS){ if(LastTimeShift != dxw.TimeShift) dxw.RenewTimers(); LastTimeShift=dxw.TimeShift; + } switch(message){ // v2.02.13: added WM_GETMINMAXINFO/WM_NCCALCSIZE interception - (see Actua Soccer 3 problems...) @@ -1200,7 +1202,8 @@ LONG CALLBACK Int3Handler(PEXCEPTION_POINTERS ExceptionInfo) mov myPerfCount.HighPart, edx } #endif - myPerfCount = dxw.StretchCounter(myPerfCount); + //myPerfCount = dxw.StretchCounter(myPerfCount); + myPerfCount = dxw.StretchLargeCounter(myPerfCount); OutTraceDW("Int3Handler: INT3 at=%x tick=%x RDTSC=%x:%x\n", ExceptionInfo->ExceptionRecord->ExceptionAddress, (*pGetTickCount)(), myPerfCount.HighPart, myPerfCount.LowPart); diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp index b48d26f..9a1946c 100644 --- a/dll/dxwcore.cpp +++ b/dll/dxwcore.cpp @@ -1438,18 +1438,24 @@ void dxwCore::PopTimer(HWND hWnd, UINT_PTR nIDEvent) void dxwCore::RenewTimers() { + OutTraceE("DXWND: RenewTimers type=%x\n", TimerEvent.dwTimerType); switch(TimerEvent.dwTimerType){ case TIMER_TYPE_NONE: + OutTraceDW("DXWND: RenewTimers type=NONE\n"); break; case TIMER_TYPE_USER32: if(pSetTimer && pKillTimer){ UINT uElapse; UINT_PTR res; - (*pKillTimer)(TimerEvent.t.hWnd, TimerEvent.t.nIDEvent); + res=(*pKillTimer)(TimerEvent.t.hWnd, TimerEvent.t.nIDEvent); + if(!res) OutTraceE("DXWND: KillTimer ERROR hWnd=%x IDEvent=%x err=%d\n", TimerEvent.t.hWnd, TimerEvent.t.nIDEvent, GetLastError()); uElapse = dxw.StretchTime(TimerEvent.t.uElapse); res=(*pSetTimer)(TimerEvent.t.hWnd, TimerEvent.t.nIDEvent, uElapse, TimerEvent.t.lpTimerFunc); TimerEvent.t.nIDEvent = res; + if(res) OutTraceDW("DXWND: RenewTimers type=USER32 Elsapse=%d IDEvent=%x\n", uElapse, res); + else + OutTraceE("DXWND: SetTimer ERROR hWnd=%x Elapse=%d TimerFunc=%x err=%d\n", TimerEvent.t.hWnd, uElapse, TimerEvent.t.lpTimerFunc, GetLastError()); } break; case TIMER_TYPE_WINMM: @@ -1463,9 +1469,37 @@ void dxwCore::RenewTimers() OutTraceDW("DXWND: RenewTimers type=WINMM Delay=%d TimerId=%x\n", NewDelay, res); } break; + default: + OutTraceE("DXWND: RenewTimers type=%x(UNKNOWN)\n", TimerEvent.dwTimerType); + break; } } +LARGE_INTEGER dxwCore::StretchLargeCounter(LARGE_INTEGER CurrentInCount) +{ + LARGE_INTEGER CurrentOutPerfCount; + static LARGE_INTEGER LastInPerfCount; + static LARGE_INTEGER LastOutPerfCount; + static BOOL FirstTime = TRUE; + LARGE_INTEGER ElapsedCount; + + if(FirstTime){ + // first time through, initialize both inner and output per counters with real values + LastInPerfCount.QuadPart = CurrentInCount.QuadPart; + LastOutPerfCount.QuadPart = CurrentInCount.QuadPart; + FirstTime=FALSE; + } + + ElapsedCount.QuadPart = CurrentInCount.QuadPart - LastInPerfCount.QuadPart; + ElapsedCount = dxw.StretchCounter(ElapsedCount); + CurrentOutPerfCount.QuadPart = LastOutPerfCount.QuadPart + ElapsedCount.QuadPart; + LastInPerfCount = CurrentInCount; + LastOutPerfCount = CurrentOutPerfCount; + + OutTraceB("dxw::StretchCounter: Count=[%x-%x]\n", CurrentOutPerfCount.HighPart, CurrentOutPerfCount.LowPart); + return CurrentOutPerfCount; +} + BOOL dxwCore::CheckScreenResolution(unsigned int w, unsigned int h) { #define HUGE 100000 diff --git a/dll/dxwcore.hpp b/dll/dxwcore.hpp index b995bda..685218c 100644 --- a/dll/dxwcore.hpp +++ b/dll/dxwcore.hpp @@ -113,6 +113,7 @@ public: // methods void PopTimer(HWND, UINT_PTR); void RenewTimers(); BOOL CheckScreenResolution(unsigned int, unsigned int); + LARGE_INTEGER StretchLargeCounter(LARGE_INTEGER); public: // simple data variables DDPIXELFORMAT ActualPixelFormat; diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index de28892..f043e94 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.58" +#define VERSION "2.02.59" #define DDTHREADLOCK 1 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index b8f058b88ef1e96f1c4e3519d7aa36997ee661b3..68bd8e79dafc0ca594adfa8b20c72f8e300bfee0 100644 GIT binary patch delta 5347 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, lpPerformanceCount->LowPart); + + OutTraceB("QueryPerformanceCounter: ret=%x Count=[%x-%x]\n", ret, lpPerformanceCount->HighPart, lpPerformanceCount->LowPart); return ret; } diff --git a/dll/user32.cpp b/dll/user32.cpp index b721eaf..7e0ae39 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -149,7 +149,7 @@ FARPROC Remap_user32_ProcAddress(LPCSTR proc, HMODULE hModule) if (addr=RemapLibrary(proc, hModule, MouseHooks2)) return addr; if (dxw.dwFlags3 & PEEKALLMESSAGES) if (addr=RemapLibrary(proc, hModule, PeekAllHooks)) return addr; - if(dxw.dwFlags2 & TIMESTRETCH) + if((dxw.dwFlags2 & TIMESTRETCH) && (dxw.dwFlags4 & STRETCHTIMERS)) if (addr=RemapLibrary(proc, hModule, TimeHooks)) return addr; return NULL; @@ -2268,5 +2268,6 @@ BOOL WINAPI extKillTimer(HWND hWnd, UINT_PTR uIDEvent) OutTraceDW("KillTimer: hwnd=%x IDEvent=%x\n", hWnd, uIDEvent); ret = (*pKillTimer)(hWnd, uIDEvent); OutTraceDW("KillTimer: ret=%x\n", ret); + if(ret) dxw.PopTimer(hWnd, uIDEvent); return ret; } diff --git a/dll/winmm.cpp b/dll/winmm.cpp index 3ba6458..c573f76 100644 --- a/dll/winmm.cpp +++ b/dll/winmm.cpp @@ -51,7 +51,8 @@ MMRESULT WINAPI exttimeSetEvent(UINT uDelay, UINT uResolution, LPTIMECALLBACK lp MMRESULT res; UINT NewDelay; OutTraceDW("timeSetEvent: Delay=%d Resolution=%d Event=%x\n", uDelay, uResolution, fuEvent); - NewDelay = dxw.StretchTime(uDelay); + if(dxw.dwFlags4 & STRETCHTIMERS) NewDelay = dxw.StretchTime(uDelay); + else NewDelay = uDelay; res=(*ptimeSetEvent)(NewDelay, uResolution, lpTimeProc, dwUser, fuEvent); if(res) dxw.PushTimer(res, uDelay, uResolution, lpTimeProc, dwUser, fuEvent); OutTraceDW("timeSetEvent: ret=%x\n", res); diff --git a/host/Resource.h b/host/Resource.h index 73a9d8a..c0b4241 100644 --- a/host/Resource.h +++ b/host/Resource.h @@ -204,6 +204,7 @@ #define IDC_INTERCEPTRDTSC 1161 #define IDC_NOFILLRECT 1162 #define IDC_HIDEDESKTOP 1163 +#define IDC_STRETCHTIMERS 1164 #define ID_MODIFY 32771 #define ID_DELETE 32772 #define ID_ADD 32773 diff --git a/host/TabTiming.cpp b/host/TabTiming.cpp index 050d326..e0c5bc5 100644 --- a/host/TabTiming.cpp +++ b/host/TabTiming.cpp @@ -35,6 +35,7 @@ void CTabTiming::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_SHOWTIMESTRETCH, cTarget->m_ShowTimeStretch); DDX_Check(pDX, IDC_TIMESTRETCH, cTarget->m_TimeStretch); DDX_Check(pDX, IDC_INTERCEPTRDTSC, cTarget->m_InterceptRDTSC); + DDX_Check(pDX, IDC_STRETCHTIMERS, cTarget->m_StretchTimers); DDX_Text(pDX, IDC_MAXFPS, cTarget->m_MaxFPS); DDX_LBIndex(pDX, IDC_LISTTS, cTarget->m_InitTS); //{{AFX_DATA_MAP(CTabTiming) diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index c9532aa..50043fc 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -123,6 +123,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_ShowFPSOverlay = FALSE; m_ShowTimeStretch = FALSE; m_TimeStretch = FALSE; + m_StretchTimers = FALSE; m_InterceptRDTSC = FALSE; m_HookOpenGL = FALSE; m_ForceHookOpenGL = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index ee22b11..18ba2c4 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -104,6 +104,7 @@ public: BOOL m_ShowFPSOverlay; BOOL m_ShowTimeStretch; BOOL m_TimeStretch; + BOOL m_StretchTimers; BOOL m_InterceptRDTSC; BOOL m_HookOpenGL; BOOL m_ForceHookOpenGL; diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index 5060d65..9884c9d 100644 --- a/host/dxwndhost.rc +++ b/host/dxwndhost.rc @@ -401,6 +401,7 @@ BEGIN GROUPBOX "Time Stretching",IDC_STATIC,7,94,139,102 CONTROL "Show time stretch",IDC_SHOWTIMESTRETCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,134,84,10 CONTROL "Intercept RDTSC opcode",IDC_INTERCEPTRDTSC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,164,127,10 + CONTROL "Stretch timers",IDC_STRETCHTIMERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,176,127,10 END IDD_TAB_OUTPUT DIALOGEX 0, 0, 300, 240 diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index 2352abcdd3577016345e6aec763b22ef52b6fa02..cc73e27ffd9263b7629d09011b2a7fa3642d1e3b 100644 GIT binary patch delta 9189 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 BzJ~w+ delta 10534 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

-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 SXMY{_0RJW8f!c(4Qv44AebWg5 diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index ddcdda3..351a9b0 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -232,6 +232,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_ShowFPSOverlay) t->flags2 |= SHOWFPSOVERLAY; if(dlg->m_ShowTimeStretch) t->flags4 |= SHOWTIMESTRETCH; if(dlg->m_TimeStretch) t->flags2 |= TIMESTRETCH; + if(dlg->m_StretchTimers) t->flags4 |= STRETCHTIMERS; if(dlg->m_InterceptRDTSC) t->flags4 |= INTERCEPTRDTSC; if(dlg->m_HookOpenGL) t->flags2 |= HOOKOPENGL; if(dlg->m_ForceHookOpenGL) t->flags3 |= FORCEHOOKOPENGL; @@ -387,6 +388,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_ShowFPSOverlay = t->flags2 & SHOWFPSOVERLAY ? 1 : 0; dlg->m_ShowTimeStretch = t->flags4 & SHOWTIMESTRETCH ? 1 : 0; dlg->m_TimeStretch = t->flags2 & TIMESTRETCH ? 1 : 0; + dlg->m_StretchTimers = t->flags4 & STRETCHTIMERS ? 1 : 0; dlg->m_InterceptRDTSC = t->flags4 & INTERCEPTRDTSC ? 1 : 0; dlg->m_HookOpenGL = t->flags2 & HOOKOPENGL ? 1 : 0; dlg->m_ForceHookOpenGL = t->flags3 & FORCEHOOKOPENGL ? 1 : 0;