From ef5a5afd7a1b3afc84788b156e0e9b6ace194fca Mon Sep 17 00:00:00 2001 From: gho tik Date: Fri, 25 Jan 2013 11:17:02 -0500 Subject: [PATCH] v2_02_07_src Former-commit-id: fb4c995685e09cdec938622ea9e024cd87add506 --- Include/dxwnd.h | 9 +- build/dxwnd.dll | 4 +- build/dxwnd.exe | 4 +- build/readme-relnotes.txt | 5 +- debug/dxwnd.ini | 1983 +++++++++++++++++++------------------ dll/dxhook.cpp | 10 +- dll/dxwcore.cpp | 137 ++- dll/dxwcore.hpp | 5 + dll/dxwnd.cpp | 10 +- dll/dxwnd.def | 2 +- dll/dxwnd.vs2008.suo | Bin 11264 -> 34304 bytes dll/glhook.cpp | 103 +- dll/glhook.h | 28 +- dll/hd3d.cpp | 29 +- dll/hddraw.cpp | 56 +- dll/syslibs.cpp | 52 +- dll/syslibs.h | 3 + host/Resource.h | 8 +- host/StatusDialog.cpp | 18 +- host/TargetDlg.cpp | 38 +- host/TargetDlg.h | 3 + host/TimeSliderDlg.cpp | 22 +- host/dxwndhost.aps | Bin 141640 -> 141880 bytes host/dxwndhost.rc | 19 +- host/dxwndhost.vs2008.suo | Bin 45568 -> 73728 bytes host/dxwndhostView.cpp | 13 +- 26 files changed, 1407 insertions(+), 1154 deletions(-) diff --git a/Include/dxwnd.h b/Include/dxwnd.h index e2270d4..6885161 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -58,13 +58,14 @@ #define FIXNCHITTEST 0x00000800 // fixes WM_NCHITTEST message X,Y coordinates #define LIMITFPS 0x00001000 // delays primary blit operations to limit FPS #define SKIPFPS 0x00002000 // skips primary blit operations up to limit -#define SHOWFPS 0x00004000 // shows FPS value to status win / log +#define SHOWFPS 0x00004000 // shows FPS value to status win / log / title bar #define HIDEMULTIMONITOR 0x00008000 // hide multimonitor configurations: GetAdapterCount returns 1. #define TIMESTRETCH 0x00010000 // make system time stretchable #define HOOKOPENGL 0x00020000 // Hook OpenGL calls #define WALLPAPERMODE 0x00040000 // mouse events are discarded (good for screensaver-like) #define SHOWHWCURSOR 0x00080000 // mouse events are discarded (good for screensaver-like) #define HOOKGDI 0x00100000 // Hook GDI functions +#define SHOWFPSOVERLAY 0x00200000 // shows FPS value to status win / log / screen overlay // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general @@ -78,6 +79,7 @@ #define OUTDEBUG 0x00000100 // detailed debugging indormation #define EMULATEFLAGS (EMULATEBUFFER | EMULATESURFACE) +#define HANDLEFPS (SHOWFPS | SHOWFPSOVERLAY | LIMITFPS | SKIPFPS) // DxWnd host app data to be passed to the hook callback typedef struct TARGETMAP @@ -115,7 +117,7 @@ typedef struct DWORD dwPid; BOOL isLogging; DWORD FPSCount; - int iTimeShift; + int TimeShift; } DXWNDSTATUS; extern DXWNDSTATUS DxWndStatus; @@ -125,8 +127,7 @@ int StartHook(void); int EndHook(void); void GetDllVersion(char *); int GetHookStatus(DXWNDSTATUS *); -void SetHookStatus(DXWNDSTATUS *); -int GetTimeShift(); +DXWNDSTATUS *GetHookInfo(); int HookInit(TARGETMAP *, HWND); void *SetHook(void *, void *); diff --git a/build/dxwnd.dll b/build/dxwnd.dll index abc0e71..9c149ac 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19d29414d50135080a863b7865dfe2c8685150e1df359c9a5e528a65d5f9a46d -size 263168 +oid sha256:b0ffe0f3143b439d28c1b4d7f195991b383f36ed919ba89aab0abf2de7c9481e +size 271360 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index bffbd32..537cac2 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fcaebaa1f5eaffeb624d13fdb6f6058db5383fcaeadf22df4a641a766127c8d5 -size 488448 +oid sha256:3d43f746689ac5abcadcfbbb0dbd302cc3d4186ce2df7aa8bd9c24eb1b8694d4 +size 488960 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 997044a..4a6d2b2 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -22,4 +22,7 @@ added status and time stretching view panels to tray icon menu v2.02.06: preliminary FPS counter overlapped on game screen, Alt-F7 to toggle display on/off. fixed buf on time stretch logging (and possible game crash). -revised GetDC handling with 8BPP paletized surfaces: avoided need to emulate reverse-blitting and got an impressive speed improvement for games such as Age of Empires I & II and Hyperblade. \ No newline at end of file +revised GetDC handling with 8BPP paletized surfaces: avoided need to emulate reverse-blitting and got an impressive speed improvement for games such as Age of Empires I & II and Hyperblade. + +v2.02.07: +many fixes on the FPS and time control features. \ No newline at end of file diff --git a/debug/dxwnd.ini b/debug/dxwnd.ini index b47adbd..abdbcd2 100644 --- a/debug/dxwnd.ini +++ b/debug/dxwnd.ini @@ -21,8 +21,8 @@ path1=D:\Games\7th_Legion\LEGION.EXE module1= ver1=0 flag1=402669607 -flagg1=2064 -tflag1=13 +flagg1=67600 +tflag1=12 initx1=0 inity1=0 minx1=0 @@ -105,8 +105,8 @@ title6=Age of Empires path6=D:\Games\Age of Empires\EMPIRES.EXE module6= ver6=0 -flag6=268435619 -flagg6=65552 +flag6=402653347 +flagg6=2179088 tflag6=3 initx6=0 inity6=0 @@ -259,7 +259,7 @@ path15=D:\Games\American McGee's Alice Demo\alice.exe module15= ver15=10 flag15=268435458 -flagg15=0 +flagg15=131072 tflag15=0 initx15=0 inity15=0 @@ -271,13 +271,13 @@ posx15=50 posy15=50 sizx15=800 sizy15=600 -title16=Ancient Evil -path16=C:\Games\Ancient Evil\RPG.EXE -module16=DDW16.DLL -ver16=1 -flag16=-2013249497 -flagg16=0 -tflag16=2 +title16=Ancient Conquest +path16=D:\Games\Ancient Conquest\ANCIENT.EXE +module16= +ver16=0 +flag16=142606370 +flagg16=1048576 +tflag16=3 initx16=0 inity16=0 minx16=0 @@ -288,13 +288,13 @@ posx16=50 posy16=50 sizx16=800 sizy16=600 -title17=Ancient Evil Demo -path17=C:\Games\Ancient Evil Curse of the Snake Cult\aecsc-demo.exe -module17= +title17=Ancient Evil +path17=C:\Games\Ancient Evil\RPG.EXE +module17=DDW16.DLL ver17=1 -flag17=134242336 +flag17=-2013249497 flagg17=0 -tflag17=0 +tflag17=2 initx17=0 inity17=0 minx17=0 @@ -305,12 +305,12 @@ posx17=50 posy17=50 sizx17=800 sizy17=600 -title18=Armymen -path18=C:\Games\armymen\Armymen.exe +title18=Ancient Evil Demo +path18=C:\Games\Ancient Evil Curse of the Snake Cult\aecsc-demo.exe module18= -ver18=0 -flag18=134218274 -flagg18=1 +ver18=1 +flag18=134242336 +flagg18=0 tflag18=0 initx18=0 inity18=0 @@ -322,12 +322,12 @@ posx18=50 posy18=50 sizx18=800 sizy18=600 -title19=ArmyMen 2 -path19=C:\Games\army2\ArmyMen2.exe +title19=Armymen +path19=C:\Games\armymen\Armymen.exe module19= ver19=0 -flag19=402653730 -flagg19=0 +flag19=134218274 +flagg19=1 tflag19=0 initx19=0 inity19=0 @@ -339,11 +339,11 @@ posx19=50 posy19=50 sizx19=800 sizy19=600 -title20=Atomic Bomberman -path20=C:\Games\Atomic Bomberman\BM95.EXE +title20=ArmyMen 2 +path20=C:\Games\army2\ArmyMen2.exe module20= ver20=0 -flag20=2 +flag20=402653730 flagg20=0 tflag20=0 initx20=0 @@ -356,11 +356,11 @@ posx20=50 posy20=50 sizx20=800 sizy20=600 -title21=Axis & Allies Iron Blitz Edition -path21=C:\Games\Axis & Allies Iron Blitz Edition\Axis & Allies\AxisAllies.exe +title21=Atomic Bomberman +path21=C:\Games\Atomic Bomberman\BM95.EXE module21= ver21=0 -flag21=-2147483614 +flag21=2 flagg21=0 tflag21=0 initx21=0 @@ -373,11 +373,11 @@ posx21=50 posy21=50 sizx21=800 sizy21=600 -title22=Baldies -path22=C:\Games\Baldies for Win95\baldies.exe +title22=Axis & Allies Iron Blitz Edition +path22=C:\Games\Axis & Allies Iron Blitz Edition\Axis & Allies\AxisAllies.exe module22= ver22=0 -flag22=537010210 +flag22=-2147483614 flagg22=0 tflag22=0 initx22=0 @@ -390,13 +390,13 @@ posx22=50 posy22=50 sizx22=800 sizy22=600 -title23=Battle Arena Toshinden 2 (BAD!!) -path23=C:\Games\Battle Arena Toshinden 2\tsd2\T2.EXE +title23=Baldies +path23=C:\Games\Baldies for Win95\baldies.exe module23= -ver23=1 -flag23=8388640 +ver23=0 +flag23=537010210 flagg23=0 -tflag23=258 +tflag23=0 initx23=0 inity23=0 minx23=0 @@ -407,13 +407,13 @@ posx23=50 posy23=50 sizx23=800 sizy23=600 -title24=Beasts & Bumpkins -path24=C:\Games\Beasts and Bumpkins\BEASTS.EXE +title24=Battle Arena Toshinden 2 (BAD!!) +path24=C:\Games\Battle Arena Toshinden 2\tsd2\T2.EXE module24= -ver24=0 -flag24=2105890 +ver24=1 +flag24=8388640 flagg24=0 -tflag24=2 +tflag24=258 initx24=0 inity24=0 minx24=0 @@ -424,13 +424,13 @@ posx24=50 posy24=50 sizx24=800 sizy24=600 -title25=Beats of Rage -path25=C:\Games\BOR\BeatsOfRage.exe +title25=Beasts & Bumpkins +path25=C:\Games\Beasts and Bumpkins\BEASTS.EXE module25= ver25=0 -flag25=537002018 +flag25=2105890 flagg25=0 -tflag25=0 +tflag25=2 initx25=0 inity25=0 minx25=0 @@ -441,11 +441,11 @@ posx25=50 posy25=50 sizx25=800 sizy25=600 -title26=Beyond Good & Evil Demo -path26=C:\Games\Beyond Good & Evil\BGE.exe +title26=Beats of Rage +path26=C:\Games\BOR\BeatsOfRage.exe module26= ver26=0 -flag26=0 +flag26=537002018 flagg26=0 tflag26=0 initx26=0 @@ -458,11 +458,11 @@ posx26=50 posy26=50 sizx26=800 sizy26=600 -title27=Black Moon Lune Noire -path27=C:\Games\Black Moon\Lune noire\Engine.exe +title27=Beyond Good & Evil Demo +path27=C:\Games\Beyond Good & Evil\BGE.exe module27= ver27=0 -flag27=262179 +flag27=0 flagg27=0 tflag27=0 initx27=0 @@ -475,11 +475,11 @@ posx27=50 posy27=50 sizx27=800 sizy27=600 -title28=Blood Omen Legacy of Kain -path28=C:\Games\Blood Omen\KAIN.EXE +title28=Black Moon Lune Noire +path28=C:\Games\Black Moon\Lune noire\Engine.exe module28= ver28=0 -flag28=49190 +flag28=262179 flagg28=0 tflag28=0 initx28=0 @@ -492,13 +492,13 @@ posx28=50 posy28=50 sizx28=800 sizy28=600 -title29=Bonkheads -path29=C:\Games\Bonkheads\Bonkheads.exe +title29=Blood Omen Legacy of Kain +path29=C:\Games\Blood Omen\KAIN.EXE module29= ver29=0 -flag29=262690 -flagg29=16 -tflag29=78 +flag29=49190 +flagg29=0 +tflag29=0 initx29=0 inity29=0 minx29=0 @@ -509,13 +509,13 @@ posx29=50 posy29=50 sizx29=800 sizy29=600 -title30=Bubble Bobble 2 -path30=C:\Games\bubble2\BOBO2.EXE +title30=Bonkheads +path30=C:\Games\Bonkheads\Bonkheads.exe module30= ver30=0 -flag30=34 -flagg30=0 -tflag30=0 +flag30=262690 +flagg30=16 +tflag30=78 initx30=0 inity30=0 minx30=0 @@ -526,45 +526,45 @@ posx30=50 posy30=50 sizx30=800 sizy30=600 -title31=Bug! -path31=C:\Games\Bug\BUG!.EXE +title31=Bubble Bobble 2 +path31=C:\Games\bubble2\BOBO2.EXE module31= ver31=0 -flag31=134225954 -flagg31=32 -tflag31=2 +flag31=34 +flagg31=0 +tflag31=0 initx31=0 inity31=0 minx31=0 miny31=0 maxx31=0 maxy31=0 -posx31=0 -posy31=0 +posx31=50 +posy31=50 sizx31=800 sizy31=600 -title32=Caesar III -path32=C:\Games\Caesar III\c3.exe +title32=Bug! +path32=C:\Games\Bug\BUG!.EXE module32= ver32=0 -flag32=-2147475422 -flagg32=0 -tflag32=0 +flag32=134225954 +flagg32=32 +tflag32=2 initx32=0 inity32=0 minx32=0 miny32=0 maxx32=0 maxy32=0 -posx32=50 -posy32=50 +posx32=0 +posy32=0 sizx32=800 sizy32=600 -title33=Championship Manager 99-00 -path33=C:\Games\CM9900\cm9900.exe +title33=Caesar III +path33=C:\Games\Caesar III\c3.exe module33= ver33=0 -flag33=10306 +flag33=-2147475422 flagg33=0 tflag33=0 initx33=0 @@ -577,11 +577,11 @@ posx33=50 posy33=50 sizx33=800 sizy33=600 -title34=Civilization Call to Power -path34=C:\Games\civctp\Civilization_Call_To_Power\ctp_program\ctp\civctp.exe +title34=Championship Manager 99-00 +path34=C:\Games\CM9900\cm9900.exe module34= ver34=0 -flag34=545267746 +flag34=10306 flagg34=0 tflag34=0 initx34=0 @@ -594,11 +594,11 @@ posx34=50 posy34=50 sizx34=800 sizy34=600 -title35=Claw -path35=C:\Games\claw\clawexe.exe +title35=Civilization Call to Power +path35=C:\Games\civctp\Civilization_Call_To_Power\ctp_program\ctp\civctp.exe module35= ver35=0 -flag35=24610 +flag35=545267746 flagg35=0 tflag35=0 initx35=0 @@ -611,13 +611,13 @@ posx35=50 posy35=50 sizx35=800 sizy35=600 -title36=Commando's Behind Enemy Lines Demo -path36=C:\Games\Commando's Behind Enemy Lines Demo\COMANDOS\Comandos.exe +title36=Claw +path36=C:\Games\claw\clawexe.exe module36= ver36=0 -flag36=1744838944 +flag36=24610 flagg36=0 -tflag36=64 +tflag36=0 initx36=0 inity36=0 minx36=0 @@ -628,13 +628,13 @@ posx36=50 posy36=50 sizx36=800 sizy36=600 -title37=Commandos II: Men of Courage -path37=C:\Games\Commandos II\comm2.exe +title37=Commando's Behind Enemy Lines Demo +path37=C:\Games\Commando's Behind Enemy Lines Demo\COMANDOS\Comandos.exe module37= ver37=0 -flag37=-1207951008 +flag37=1744838944 flagg37=0 -tflag37=0 +tflag37=64 initx37=0 inity37=0 minx37=0 @@ -645,11 +645,11 @@ posx37=50 posy37=50 sizx37=800 sizy37=600 -title38=Crazy Taxy -path38=C:\Games\Crazy_Taxi\Crazy Taxi PC Version\crazy_taxi_pc.exe +title38=Commandos II: Men of Courage +path38=C:\Games\Commandos II\comm2.exe module38= -ver38=8 -flag38=536870945 +ver38=0 +flag38=-1207951008 flagg38=0 tflag38=0 initx38=0 @@ -662,11 +662,11 @@ posx38=50 posy38=50 sizx38=800 sizy38=600 -title39=Crush! Deluxe -path39=C:\Games\Crush! Deluxe\CRUSHD.EXE +title39=Crazy Taxy +path39=C:\Games\Crazy_Taxi\Crazy Taxi PC Version\crazy_taxi_pc.exe module39= -ver39=0 -flag39=134492706 +ver39=8 +flag39=536870945 flagg39=0 tflag39=0 initx39=0 @@ -679,12 +679,12 @@ posx39=50 posy39=50 sizx39=800 sizy39=600 -title40=Cybermercs -path40=C:\Games\cybermercs\cybermercs.exe +title40=Crush! Deluxe +path40=C:\Games\Crush! Deluxe\CRUSHD.EXE module40= ver40=0 -flag40=134234146 -flagg40=16 +flag40=134492706 +flagg40=0 tflag40=0 initx40=0 inity40=0 @@ -696,13 +696,13 @@ posx40=50 posy40=50 sizx40=800 sizy40=600 -title41=Daikatana -path41=D:\Games\Daikatana\daikatana.exe -module41=OpenGL32.dll -ver41=9 -flag41=514 -flagg41=513 -tflag41=387 +title41=Cybermercs +path41=C:\Games\cybermercs\cybermercs.exe +module41= +ver41=0 +flag41=134234146 +flagg41=16 +tflag41=0 initx41=0 inity41=0 minx41=0 @@ -713,13 +713,13 @@ posx41=50 posy41=50 sizx41=800 sizy41=600 -title42=Darius Gaiden -path42=C:\Games\Darius_gaiden\DARIUS.EXE -module42= -ver42=0 -flag42=536870946 -flagg42=0 -tflag42=0 +title42=Daikatana +path42=D:\Games\Daikatana\daikatana.exe +module42=OpenGL32.dll +ver42=9 +flag42=514 +flagg42=513 +tflag42=387 initx42=0 inity42=0 minx42=0 @@ -730,11 +730,11 @@ posx42=50 posy42=50 sizx42=800 sizy42=600 -title43=Dark Colony the Council Wars -path43=C:\Games\darkcolony_council\dc\DC16.EXE +title43=Darius Gaiden +path43=C:\Games\Darius_gaiden\DARIUS.EXE module43= ver43=0 -flag43=268435462 +flag43=536870946 flagg43=0 tflag43=0 initx43=0 @@ -747,11 +747,11 @@ posx43=50 posy43=50 sizx43=800 sizy43=600 -title44=Darkstone -path44=C:\Games\darkstone\Darkstone.exe +title44=Dark Colony the Council Wars +path44=C:\Games\darkcolony_council\dc\DC16.EXE module44= ver44=0 -flag44=134234148 +flag44=268435462 flagg44=0 tflag44=0 initx44=0 @@ -764,11 +764,11 @@ posx44=50 posy44=50 sizx44=800 sizy44=600 -title45=Dave Mirra Freestyle BMX Demo -path45=C:\Games\Dave Mirra Freestyle BMX\NgBMXDemo.exe +title45=Darkstone +path45=C:\Games\darkstone\Darkstone.exe module45= ver45=0 -flag45=8224 +flag45=134234148 flagg45=0 tflag45=0 initx45=0 @@ -781,11 +781,11 @@ posx45=50 posy45=50 sizx45=800 sizy45=600 -title46=Daytona USA Deluxe -path46=C:\Games\Daytona USA Deluxe\DAYTONA USA Deluxe.exe +title46=Dave Mirra Freestyle BMX Demo +path46=C:\Games\Dave Mirra Freestyle BMX\NgBMXDemo.exe module46= ver46=0 -flag46=402661410 +flag46=8224 flagg46=0 tflag46=0 initx46=0 @@ -798,11 +798,11 @@ posx46=50 posy46=50 sizx46=800 sizy46=600 -title47=Deadlock 2 -path47=C:\Games\deadlock2\DEADLOCK.EXE +title47=Daytona USA Deluxe +path47=C:\Games\Daytona USA Deluxe\DAYTONA USA Deluxe.exe module47= ver47=0 -flag47=-2012995550 +flag47=402661410 flagg47=0 tflag47=0 initx47=0 @@ -815,11 +815,11 @@ posx47=50 posy47=50 sizx47=800 sizy47=600 -title48=Deeper Dungeons 95 -path48=C:\Games\Keeper95\Deeper95.exe +title48=Deadlock 2 +path48=C:\Games\deadlock2\DEADLOCK.EXE module48= ver48=0 -flag48=268460070 +flag48=-2012995550 flagg48=0 tflag48=0 initx48=0 @@ -832,11 +832,11 @@ posx48=50 posy48=50 sizx48=800 sizy48=600 -title49=Delta Force -path49=C:\Games\Delta Force\Df.exe +title49=Deeper Dungeons 95 +path49=C:\Games\Keeper95\Deeper95.exe module49= ver49=0 -flag49=34 +flag49=268460070 flagg49=0 tflag49=0 initx49=0 @@ -849,13 +849,13 @@ posx49=50 posy49=50 sizx49=800 sizy49=600 -title50=Dementia -path50=C:\Games\dementia\program\CRUX.EXE -h +title50=Delta Force +path50=C:\Games\Delta Force\Df.exe module50= ver50=0 -flag50=536887330 +flag50=34 flagg50=0 -tflag50=2 +tflag50=0 initx50=0 inity50=0 minx50=0 @@ -866,13 +866,13 @@ posx50=50 posy50=50 sizx50=800 sizy50=600 -title51=Dethkarz -path51=D:\Games\DethKarz\Dethkarz.exe +title51=Dementia +path51=C:\Games\dementia\program\CRUX.EXE -h module51= ver51=0 -flag51=0 +flag51=536887330 flagg51=0 -tflag51=0 +tflag51=2 initx51=0 inity51=0 minx51=0 @@ -883,11 +883,11 @@ posx51=50 posy51=50 sizx51=800 sizy51=600 -title52=Devil Inside -path52=C:\Games\Devil Inside\Devil.exe +title52=Dethkarz +path52=D:\Games\DethKarz\Dethkarz.exe module52= ver52=0 -flag52=32 +flag52=0 flagg52=0 tflag52=0 initx52=0 @@ -900,13 +900,13 @@ posx52=50 posy52=50 sizx52=800 sizy52=600 -title53=Diablo -path53=D:\Games\Diablo\Diablo.exe +title53=Devil Inside +path53=C:\Games\Devil Inside\Devil.exe module53= -ver53=1 -flag53=134234150 -flagg53=65552 -tflag53=3 +ver53=0 +flag53=32 +flagg53=0 +tflag53=0 initx53=0 inity53=0 minx53=0 @@ -917,13 +917,13 @@ posx53=50 posy53=50 sizx53=800 sizy53=600 -title54=Dink Smallwood (BAD) -path54=C:\Games\Dink SmallWood\Dink.exe +title54=Diablo +path54=D:\Games\Diablo\Diablo.exe module54= -ver54=0 -flag54=546 -flagg54=0 -tflag54=258 +ver54=1 +flag54=134234150 +flagg54=16 +tflag54=3 initx54=0 inity54=0 minx54=0 @@ -934,13 +934,13 @@ posx54=50 posy54=50 sizx54=800 sizy54=600 -title55=Doom 64 Absolution -path55=D:\Games\Doom 64\Bin\Absolution.exe +title55=Dink Smallwood (BAD) +path55=C:\Games\Dink SmallWood\Dink.exe module55= -ver55=8 -flag55=0 +ver55=0 +flag55=546 flagg55=0 -tflag55=259 +tflag55=258 initx55=0 inity55=0 minx55=0 @@ -951,13 +951,13 @@ posx55=50 posy55=50 sizx55=800 sizy55=600 -title56=Drakan -path56=C:\Games\Drakan\drakan.exe +title56=Doom 64 Absolution +path56=D:\Games\Doom 64\Bin\Absolution.exe module56= -ver56=0 -flag56=536887328 -flagg56=0 -tflag56=0 +ver56=8 +flag56=0 +flagg56=20480 +tflag56=259 initx56=0 inity56=0 minx56=0 @@ -968,12 +968,12 @@ posx56=50 posy56=50 sizx56=800 sizy56=600 -title57=Dungeon Keeper 2 GOG release -path57=D:\Games\Dungeon Keeper 2 GOG release\DKII.EXE +title57=Drakan +path57=C:\Games\Drakan\drakan.exe module57= ver57=0 -flag57=134217762 -flagg57=81920 +flag57=536887328 +flagg57=0 tflag57=0 initx57=0 inity57=0 @@ -985,13 +985,13 @@ posx57=50 posy57=50 sizx57=800 sizy57=600 -title58=Dungeon Keeper 95 -path58=D:\Games\Keeper95\KEEPER95.EXE +title58=Dream Aquarium +path58=D:\Program Files\Dream Aquarium\Dream_Aquarium.scr module58= -ver58=0 -flag58=24614 -flagg58=0 -tflag58=64 +ver58=9 +flag58=679477249 +flagg58=303104 +tflag58=257 initx58=0 inity58=0 minx58=0 @@ -1002,13 +1002,13 @@ posx58=50 posy58=50 sizx58=800 sizy58=600 -title59=Dungeon Keeper II -path59=C:\Games\Dungeon Keeper II\DKII.exe +title59=Dungeon Keeper 2 GOG release +path59=D:\Games\Dungeon Keeper 2 GOG release\DKII.EXE module59= ver59=0 -flag59=34 -flagg59=0 -tflag59=82 +flag59=134217762 +flagg59=81920 +tflag59=0 initx59=0 inity59=0 minx59=0 @@ -1019,13 +1019,13 @@ posx59=50 posy59=50 sizx59=800 sizy59=600 -title60=Emergency Fighters for life -path60=D:\Games\Emergency\EMERGY.EXE +title60=Dungeon Keeper 95 +path60=D:\Games\Keeper95\KEEPER95.EXE module60= ver60=0 -flag60=134283811 -flagg60=18 -tflag60=3 +flag60=24614 +flagg60=0 +tflag60=64 initx60=0 inity60=0 minx60=0 @@ -1036,13 +1036,13 @@ posx60=50 posy60=50 sizx60=800 sizy60=600 -title61=Enemy Infestation -path61=C:\Games\Enemy Infestation (1998)\Ei.exe +title61=Dungeon Keeper II +path61=C:\Games\Dungeon Keeper II\DKII.exe module61= ver61=0 -flag61=38 +flag61=34 flagg61=0 -tflag61=0 +tflag61=82 initx61=0 inity61=0 minx61=0 @@ -1053,13 +1053,13 @@ posx61=50 posy61=50 sizx61=800 sizy61=600 -title62=Evil Genius -path62=D:\Games\Evil Genius\ReleaseExe\EvilGenius_Cracked.exe +title62=Emergency Fighters for life +path62=D:\Games\Emergency\EMERGY.EXE module62= -ver62=9 -flag62=2053 -flagg62=80 -tflag62=0 +ver62=0 +flag62=134283811 +flagg62=18 +tflag62=3 initx62=0 inity62=0 minx62=0 @@ -1070,13 +1070,13 @@ posx62=50 posy62=50 sizx62=800 sizy62=600 -title63=Expendable -path63=C:\Games\eXpendable\go.exe -nocputest +title63=Enemy Infestation +path63=C:\Games\Enemy Infestation (1998)\Ei.exe module63= ver63=0 -flag63=402653280 -flagg63=1 -tflag63=2 +flag63=38 +flagg63=0 +tflag63=0 initx63=0 inity63=0 minx63=0 @@ -1087,12 +1087,12 @@ posx63=50 posy63=50 sizx63=800 sizy63=600 -title64=Fallen Heaven (BAD) -path64=C:\Games\falhaven\Exe\FALLEN.EXE +title64=Evil Genius +path64=D:\Games\Evil Genius\ReleaseExe\EvilGenius_Cracked.exe module64= -ver64=0 -flag64=679485962 -flagg64=32 +ver64=9 +flag64=2053 +flagg64=80 tflag64=0 initx64=0 inity64=0 @@ -1100,17 +1100,17 @@ minx64=0 miny64=0 maxx64=0 maxy64=0 -posx64=0 -posy64=0 +posx64=50 +posy64=50 sizx64=800 sizy64=600 -title65=Fallout -path65=D:\Games\Fallout\FALLOUTW.EXE +title65=Expendable +path65=C:\Games\eXpendable\go.exe -nocputest module65= -ver65=1 -flag65=134217734 -flagg65=16 -tflag65=0 +ver65=0 +flag65=402653280 +flagg65=1 +tflag65=2 initx65=0 inity65=0 minx65=0 @@ -1121,30 +1121,30 @@ posx65=50 posy65=50 sizx65=800 sizy65=600 -title66=FreakOut -path66=C:\Games\Freak Out - Extreme Freeride\FreakOut.exe +title66=Fallen Heaven (BAD) +path66=C:\Games\falhaven\Exe\FALLEN.EXE module66= -ver66=9 -flag66=0 -flagg66=0 -tflag66=2 +ver66=0 +flag66=679485962 +flagg66=32 +tflag66=0 initx66=0 inity66=0 minx66=0 miny66=0 maxx66=0 maxy66=0 -posx66=50 -posy66=50 +posx66=0 +posy66=0 sizx66=800 sizy66=600 -title67=Funtracks -path67=C:\Games\Funtracks\Fun_win.exe +title67=Fallout +path67=D:\Games\Fallout\FALLOUTW.EXE module67= ver67=1 -flag67=2 -flagg67=0 -tflag67=258 +flag67=134217734 +flagg67=16 +tflag67=0 initx67=0 inity67=0 minx67=0 @@ -1155,13 +1155,13 @@ posx67=50 posy67=50 sizx67=800 sizy67=600 -title68=Galapagos -path68=C:\Games\Galapagos\GALA.EXE +title68=FreakOut +path68=C:\Games\Freak Out - Extreme Freeride\FreakOut.exe module68= -ver68=0 -flag68=134217760 +ver68=9 +flag68=0 flagg68=0 -tflag68=0 +tflag68=2 initx68=0 inity68=0 minx68=0 @@ -1172,28 +1172,28 @@ posx68=50 posy68=50 sizx68=800 sizy68=600 -title69=Gangsters -path69=C:\Games\Gangsters\gangsters.exe +title69=Funtracks +path69=C:\Games\Funtracks\Fun_win.exe module69= -ver69=0 -flag69=134217762 +ver69=1 +flag69=2 flagg69=0 -tflag69=2 +tflag69=258 initx69=0 inity69=0 minx69=0 miny69=0 maxx69=0 maxy69=0 -posx69=100 -posy69=100 +posx69=50 +posy69=50 sizx69=800 sizy69=600 -title70=GeneRally -path70=C:\Games\generally105\GeneRally.exe +title70=Galapagos +path70=C:\Games\Galapagos\GALA.EXE module70= ver70=0 -flag70=34 +flag70=134217760 flagg70=0 tflag70=0 initx70=0 @@ -1206,46 +1206,46 @@ posx70=50 posy70=50 sizx70=800 sizy70=600 -title71=Get Medieval -path71=C:\Games\Get Medieval\MEDIEVAL.EXE +title71=Gangsters +path71=C:\Games\Gangsters\gangsters.exe module71= ver71=0 -flag71=34 -flagg71=2 -tflag71=0 +flag71=134217762 +flagg71=0 +tflag71=2 initx71=0 inity71=0 minx71=0 miny71=0 maxx71=0 maxy71=0 -posx71=0 -posy71=0 +posx71=100 +posy71=100 sizx71=800 sizy71=600 -title72=Gift -path72=C:\Games\Gift\Gift.exe +title72=GeneRally +path72=C:\Games\generally105\GeneRally.exe module72= ver72=0 -flag72=4196384 +flag72=34 flagg72=0 -tflag72=34 +tflag72=0 initx72=0 inity72=0 minx72=0 miny72=0 maxx72=0 maxy72=0 -posx72=0 -posy72=0 -sizx72=0 -sizy72=0 -title73=Golden Age of Racing -path73=C:\Games\Golden Age of Racing\GAOR.exe +posx72=50 +posy72=50 +sizx72=800 +sizy72=600 +title73=Get Medieval +path73=C:\Games\Get Medieval\MEDIEVAL.EXE module73= ver73=0 flag73=34 -flagg73=0 +flagg73=2 tflag73=0 initx73=0 inity73=0 @@ -1253,34 +1253,34 @@ minx73=0 miny73=0 maxx73=0 maxy73=0 -posx73=50 -posy73=50 +posx73=0 +posy73=0 sizx73=800 sizy73=600 -title74=Gp500 for Win2K -path74=C:\Games\gp500\gp500_win2k.exe +title74=Gift +path74=C:\Games\Gift\Gift.exe module74= -ver74=1 -flag74=545677860 +ver74=0 +flag74=4196384 flagg74=0 -tflag74=2 +tflag74=34 initx74=0 inity74=0 minx74=0 miny74=0 maxx74=0 maxy74=0 -posx74=50 -posy74=50 -sizx74=800 -sizy74=600 -title75=G-Police -path75=C:\Games\gpolice\GPOLICE.EXE +posx74=0 +posy74=0 +sizx74=0 +sizy74=0 +title75=Golden Age of Racing +path75=C:\Games\Golden Age of Racing\GAOR.exe module75= ver75=0 -flag75=67125286 +flag75=34 flagg75=0 -tflag75=2 +tflag75=0 initx75=0 inity75=0 minx75=0 @@ -1291,13 +1291,13 @@ posx75=50 posy75=50 sizx75=800 sizy75=600 -title76=Grand Prix Legends -path76=C:\Games\grand prix legends\gpl\gpl.exe +title76=Gp500 for Win2K +path76=C:\Games\gp500\gp500_win2k.exe module76= -ver76=7 -flag76=134217760 -flagg76=4 -tflag76=0 +ver76=1 +flag76=545677860 +flagg76=0 +tflag76=2 initx76=0 inity76=0 minx76=0 @@ -1306,15 +1306,15 @@ maxx76=0 maxy76=0 posx76=50 posy76=50 -sizx76=0 -sizy76=0 -title77=Grim Fandango Demo -path77=C:\Games\GrimWebDemo\grimdemo.exe +sizx76=800 +sizy76=600 +title77=G-Police +path77=C:\Games\gpolice\GPOLICE.EXE module77= ver77=0 -flag77=34 +flag77=67125286 flagg77=0 -tflag77=258 +tflag77=2 initx77=0 inity77=0 minx77=0 @@ -1325,13 +1325,13 @@ posx77=50 posy77=50 sizx77=800 sizy77=600 -title78=Half-Life Blue-Shift (d3d) -path78=D:\Games\Half-Life Blue-Shift\bshift.exe +title78=Grand Prix Legends +path78=C:\Games\grand prix legends\gpl\gpl.exe module78= -ver78=10 -flag78=1073741826 -flagg78=513 -tflag78=259 +ver78=7 +flag78=134217760 +flagg78=4 +tflag78=0 initx78=0 inity78=0 minx78=0 @@ -1340,15 +1340,15 @@ maxx78=0 maxy78=0 posx78=50 posy78=50 -sizx78=640 -sizy78=480 -title79=Half-Life Uplink Demo -path79=D:\Games\Half-Life Uplink\hldemo.exe +sizx78=0 +sizy78=0 +title79=Grim Fandango Demo +path79=C:\Games\GrimWebDemo\grimdemo.exe module79= -ver79=1 -flag79=1073741826 -flagg79=512 -tflag79=3 +ver79=0 +flag79=34 +flagg79=0 +tflag79=258 initx79=0 inity79=0 minx79=0 @@ -1357,15 +1357,15 @@ maxx79=0 maxy79=0 posx79=50 posy79=50 -sizx79=640 -sizy79=480 -title80=Halo Combat Evolved -path80=D:\Games\Halo Combat Evolved\halo.exe +sizx79=800 +sizy79=600 +title80=Half-Life Blue-Shift (d3d) +path80=D:\Games\Half-Life Blue-Shift\bshift.exe module80= -ver80=9 -flag80=570425377 -flagg80=0 -tflag80=479 +ver80=10 +flag80=1073741826 +flagg80=513 +tflag80=259 initx80=0 inity80=0 minx80=0 @@ -1374,15 +1374,15 @@ maxx80=0 maxy80=0 posx80=50 posy80=50 -sizx80=800 -sizy80=600 -title81=Heart of Darkness -path81=C:\Games\Heart_of_Darkness\HODWin32.exe +sizx80=640 +sizy80=480 +title81=Half-Life Uplink Demo +path81=D:\Games\Half-Life Uplink\hldemo.exe module81= -ver81=0 -flag81=8226 -flagg81=0 -tflag81=0 +ver81=1 +flag81=1073741826 +flagg81=16384 +tflag81=3 initx81=0 inity81=0 minx81=0 @@ -1391,15 +1391,15 @@ maxx81=0 maxy81=0 posx81=50 posy81=50 -sizx81=800 -sizy81=600 -title82=Heavy Metal FAKK 2 -path82=C:\Games\Heavy Metal - FAKK2\fakk2.exe +sizx81=640 +sizy81=480 +title82=Halo Combat Evolved +path82=D:\Games\Halo Combat Evolved\halo.exe module82= -ver82=0 -flag82=33554464 -flagg82=64 -tflag82=2 +ver82=9 +flag82=570425377 +flagg82=0 +tflag82=479 initx82=0 inity82=0 minx82=0 @@ -1410,12 +1410,12 @@ posx82=50 posy82=50 sizx82=800 sizy82=600 -title83=HellCopter -path83=C:\Games\hellcop\HCopter.exe +title83=Heart of Darkness +path83=C:\Games\Heart_of_Darkness\HODWin32.exe module83= ver83=0 -flag83=-2013249500 -flagg83=256 +flag83=8226 +flagg83=0 tflag83=0 initx83=0 inity83=0 @@ -1427,12 +1427,12 @@ posx83=50 posy83=50 sizx83=800 sizy83=600 -title84=Heroes of Might & Magic III Demo -path84=C:\Games\Heroes III Demo\h3demo.exe +title84=Heavy Metal FAKK 2 +path84=C:\Games\Heavy Metal - FAKK2\fakk2.exe module84= -ver84=1 -flag84=134234146 -flagg84=0 +ver84=0 +flag84=33554464 +flagg84=64 tflag84=2 initx84=0 inity84=0 @@ -1444,13 +1444,13 @@ posx84=50 posy84=50 sizx84=800 sizy84=600 -title85=Hexen II (opengl) -path85=D:\Games\Hexen II\glh2.exe +title85=HellCopter +path85=C:\Games\hellcop\HCopter.exe module85= -ver85=10 -flag85=3 -flagg85=212993 -tflag85=387 +ver85=0 +flag85=-2013249500 +flagg85=256 +tflag85=0 initx85=0 inity85=0 minx85=0 @@ -1461,13 +1461,13 @@ posx85=50 posy85=50 sizx85=800 sizy85=600 -title86=Hexen II (software) -path86=D:\Games\Hexen II\h2.exe +title86=Heroes of Might & Magic III Demo +path86=C:\Games\Heroes III Demo\h3demo.exe module86= -ver86=10 -flag86=671088642 -flagg86=1052672 -tflag86=0 +ver86=1 +flag86=134234146 +flagg86=0 +tflag86=2 initx86=0 inity86=0 minx86=0 @@ -1478,13 +1478,13 @@ posx86=50 posy86=50 sizx86=800 sizy86=600 -title87=hover -path87=C:\Games\hover\hoverX.exe +title87=Hexen II (opengl) +path87=D:\Games\Hexen II\glh2.exe module87= -ver87=0 -flag87=8224 -flagg87=0 -tflag87=0 +ver87=10 +flag87=3 +flagg87=2310145 +tflag87=387 initx87=0 inity87=0 minx87=0 @@ -1495,13 +1495,13 @@ posx87=50 posy87=50 sizx87=800 sizy87=600 -title88=Hyperblade -path88=D:\Games\Hyperblade\HYPERX.EXE +title88=Hexen II (software) +path88=D:\Games\Hexen II\h2.exe module88= -ver88=0 -flag88=163 -flagg88=1052690 -tflag88=3 +ver88=10 +flag88=671088770 +flagg88=1064960 +tflag88=0 initx88=0 inity88=0 minx88=0 @@ -1512,11 +1512,11 @@ posx88=50 posy88=50 sizx88=800 sizy88=600 -title89=Idinaloq -path89=C:\Games\idina101\idinaloq.exe +title89=hover +path89=C:\Games\hover\hoverX.exe module89= ver89=0 -flag89=32 +flag89=8224 flagg89=0 tflag89=0 initx89=0 @@ -1529,13 +1529,13 @@ posx89=50 posy89=50 sizx89=800 sizy89=600 -title90=Immanis -path90=C:\Games\Immanis CD release\immanis.exe +title90=Hyperblade +path90=D:\Games\Hyperblade\HYPERX.EXE module90= ver90=0 -flag90=24611 -flagg90=0 -tflag90=0 +flag90=163 +flagg90=3231762 +tflag90=3 initx90=0 inity90=0 minx90=0 @@ -1546,11 +1546,11 @@ posx90=50 posy90=50 sizx90=800 sizy90=600 -title91=Immanis (v2) -path91=C:\Games\Immanis CD release\immanis_v2.exe +title91=Idinaloq +path91=C:\Games\idina101\idinaloq.exe module91= ver91=0 -flag91=268460067 +flag91=32 flagg91=0 tflag91=0 initx91=0 @@ -1563,11 +1563,11 @@ posx91=50 posy91=50 sizx91=800 sizy91=600 -title92=In the Hunt -path92=C:\Games\In The Hunt\e8.exe +title92=Immanis +path92=C:\Games\Immanis CD release\immanis.exe module92= ver92=0 -flag92=2 +flag92=24611 flagg92=0 tflag92=0 initx92=0 @@ -1580,13 +1580,13 @@ posx92=50 posy92=50 sizx92=800 sizy92=600 -title93=Incoming Forces -path93=D:\Games\Incoming Forces\forces.exe +title93=Immanis (v2) +path93=C:\Games\Immanis CD release\immanis_v2.exe module93= -ver93=8 -flag93=134217760 +ver93=0 +flag93=268460067 flagg93=0 -tflag93=3 +tflag93=0 initx93=0 inity93=0 minx93=0 @@ -1597,11 +1597,11 @@ posx93=50 posy93=50 sizx93=800 sizy93=600 -title94=International Superstar Soccer 3 -path94=C:\Games\ISS_3\iss3.exe +title94=In the Hunt +path94=C:\Games\In The Hunt\e8.exe module94= -ver94=8 -flag94=545267715 +ver94=0 +flag94=2 flagg94=0 tflag94=0 initx94=0 @@ -1614,13 +1614,13 @@ posx94=50 posy94=50 sizx94=800 sizy94=600 -title95=Jedi Knight II Jedi Outcast -path95=D:\Games\Jedi Knight II Jedi Outcast\GameData\jk2sp.exe +title95=Incoming Forces +path95=D:\Games\Incoming Forces\forces.exe module95= -ver95=0 -flag95=0 -flagg95=512 -tflag95=267 +ver95=8 +flag95=134217760 +flagg95=0 +tflag95=3 initx95=0 inity95=0 minx95=0 @@ -1631,11 +1631,11 @@ posx95=50 posy95=50 sizx95=800 sizy95=600 -title96=Jet Moto -path96=M:\JETMOTO.EXE +title96=International Superstar Soccer 3 +path96=C:\Games\ISS_3\iss3.exe module96= -ver96=0 -flag96=139298 +ver96=8 +flag96=545267715 flagg96=0 tflag96=0 initx96=0 @@ -1648,13 +1648,13 @@ posx96=50 posy96=50 sizx96=800 sizy96=600 -title97=Kiss Psyco Cyrcus -path97=C:\Games\Psycho\client.exe -module97=d3d.ren -ver97=7 -flag97=537018404 -flagg97=0 -tflag97=0 +title97=Jacked +path97=D:\Games\Jacked\Jacked.exe +module97=winmm +ver97=9 +flag97=537010208 +flagg97=196608 +tflag97=259 initx97=0 inity97=0 minx97=0 @@ -1665,13 +1665,13 @@ posx97=50 posy97=50 sizx97=800 sizy97=600 -title98=Krazy Ivan -path98=C:\Games\Krazy Ivan\KRAZY.EXE +title98=Jedi Knight II Jedi Outcast +path98=D:\Games\Jedi Knight II Jedi Outcast\GameData\jk2sp.exe module98= ver98=0 -flag98=536870914 -flagg98=0 -tflag98=0 +flag98=0 +flagg98=512 +tflag98=267 initx98=0 inity98=0 minx98=0 @@ -1682,13 +1682,13 @@ posx98=50 posy98=50 sizx98=800 sizy98=600 -title99=Last Bronx -path99=C:\Games\Last_Bronx\LB.EXE +title99=Jet Moto +path99=M:\JETMOTO.EXE module99= ver99=0 -flag99=40994 +flag99=139298 flagg99=0 -tflag99=64 +tflag99=0 initx99=0 inity99=0 minx99=0 @@ -1699,11 +1699,11 @@ posx99=50 posy99=50 sizx99=800 sizy99=600 -title100=Lionheart -path100=C:\Games\Lionheart Demo\Lionheart.exe -module100= -ver100=0 -flag100=-2147483612 +title100=Kiss Psyco Cyrcus +path100=C:\Games\Psycho\client.exe +module100=d3d.ren +ver100=7 +flag100=537018404 flagg100=0 tflag100=0 initx100=0 @@ -1716,13 +1716,13 @@ posx100=50 posy100=50 sizx100=800 sizy100=600 -title101=lithtech.exe -path101=D:\Games\NOLF Technology Demo\lithtech.exe +title101=Krazy Ivan +path101=C:\Games\Krazy Ivan\KRAZY.EXE module101= -ver101=7 -flag101=0 -flagg101=512 -tflag101=259 +ver101=0 +flag101=536870914 +flagg101=0 +tflag101=0 initx101=0 inity101=0 minx101=0 @@ -1733,13 +1733,13 @@ posx101=50 posy101=50 sizx101=800 sizy101=600 -title102=M.A.X. 2 -path102=C:\Games\MAX 2\MAX_2\MAX2\MAX2.EXE +title102=Last Bronx +path102=C:\Games\Last_Bronx\LB.EXE module102= ver102=0 -flag102=34 +flag102=40994 flagg102=0 -tflag102=0 +tflag102=64 initx102=0 inity102=0 minx102=0 @@ -1750,11 +1750,11 @@ posx102=50 posy102=50 sizx102=800 sizy102=600 -title103=M1 Tank Platoon 2 -path103=C:\Games\M1 Tank Platoon 2\M1TP2.exe +title103=Lionheart +path103=C:\Games\Lionheart Demo\Lionheart.exe module103= -ver103=8 -flag103=34 +ver103=0 +flag103=-2147483612 flagg103=0 tflag103=0 initx103=0 @@ -1767,13 +1767,13 @@ posx103=50 posy103=50 sizx103=800 sizy103=600 -title104=Mario Worlds (stripped PE) -path104=C:\Games\Mario Worlds\Mario Worlds.exe +title104=lithtech.exe +path104=D:\Games\NOLF Technology Demo\lithtech.exe module104= -ver104=1 -flag104=2 -flagg104=1 -tflag104=386 +ver104=7 +flag104=0 +flagg104=512 +tflag104=259 initx104=0 inity104=0 minx104=0 @@ -1784,12 +1784,12 @@ posx104=50 posy104=50 sizx104=800 sizy104=600 -title105=Masters of Orion 2 -path105=C:\Games\Orion2\Orion95.exe +title105=Lords of the Realm 2 +path105=D:\Games\L2SIEGE\LORDS2.EXE module105= ver105=0 flag105=34 -flagg105=0 +flagg105=65536 tflag105=0 initx105=0 inity105=0 @@ -1801,11 +1801,11 @@ posx105=50 posy105=50 sizx105=800 sizy105=600 -title106=Microsoft Flight Simulator 98 -path106=C:\Games\Flight Simulator 98\FLTSIM98.EXE +title106=M.A.X. 2 +path106=C:\Games\MAX 2\MAX_2\MAX2\MAX2.EXE module106= ver106=0 -flag106=288 +flag106=34 flagg106=0 tflag106=0 initx106=0 @@ -1818,13 +1818,13 @@ posx106=50 posy106=50 sizx106=800 sizy106=600 -title107=Microsoft Midtown Madness -path107=C:\Games\Midtown Madness\midtown.exe +title107=M1 Tank Platoon 2 +path107=C:\Games\M1 Tank Platoon 2\M1TP2.exe module107= -ver107=0 -flag107=8192 +ver107=8 +flag107=34 flagg107=0 -tflag107=2 +tflag107=0 initx107=0 inity107=0 minx107=0 @@ -1835,30 +1835,30 @@ posx107=50 posy107=50 sizx107=800 sizy107=600 -title108=Microsoft Midtown Madness Trial (BAD) -path108=C:\Games\Midtown Madness Trial\midtrial.exe +title108=Mario Worlds (stripped PE) +path108=C:\Games\Mario Worlds\Mario Worlds.exe module108= -ver108=0 +ver108=1 flag108=2 -flagg108=0 -tflag108=0 +flagg108=1 +tflag108=386 initx108=0 inity108=0 minx108=0 miny108=0 maxx108=0 maxy108=0 -posx108=0 -posy108=0 +posx108=50 +posy108=50 sizx108=800 sizy108=600 -title109=Microsoft Motocross Madness 2 (BAD!!) -path109=C:\Games\Motocross Madness 2\MCM2.cracked.EXE +title109=Masters of Orion 2 +path109=C:\Games\Orion2\Orion95.exe module109= -ver109=7 -flag109=201326664 -flagg109=1 -tflag109=82 +ver109=0 +flag109=34 +flagg109=0 +tflag109=0 initx109=0 inity109=0 minx109=0 @@ -1869,13 +1869,13 @@ posx109=50 posy109=50 sizx109=800 sizy109=600 -title110=Microsoft Motocross Madness Trial (BAD) -path110=C:\Games\Motocross Madness Trial\mcm.exe +title110=Microsoft Flight Simulator 98 +path110=C:\Games\Flight Simulator 98\FLTSIM98.EXE module110= -ver110=1 -flag110=134225952 +ver110=0 +flag110=288 flagg110=0 -tflag110=130 +tflag110=0 initx110=0 inity110=0 minx110=0 @@ -1884,15 +1884,15 @@ maxx110=0 maxy110=0 posx110=50 posy110=50 -sizx110=0 -sizy110=0 -title111=Mission Force Cyberstorm (BAD ?) -path111=C:\Games\SIERRA\CSTORM\CSTORM.EXE +sizx110=800 +sizy110=600 +title111=Microsoft Midtown Madness +path111=C:\Games\Midtown Madness\midtown.exe module111= ver111=0 -flag111=33562658 +flag111=8192 flagg111=0 -tflag111=0 +tflag111=2 initx111=0 inity111=0 minx111=0 @@ -1901,32 +1901,32 @@ maxx111=0 maxy111=0 posx111=50 posy111=50 -sizx111=0 -sizy111=0 -title112=Monopoly 3D -path112=C:\Games\Monopoly (Edition 3D)\Monopoly.exe +sizx111=800 +sizy111=600 +title112=Microsoft Midtown Madness Trial (BAD) +path112=C:\Games\Midtown Madness Trial\midtrial.exe module112= ver112=0 -flag112=134244388 +flag112=2 flagg112=0 -tflag112=2 +tflag112=0 initx112=0 inity112=0 minx112=0 miny112=0 maxx112=0 maxy112=0 -posx112=50 -posy112=50 +posx112=0 +posy112=0 sizx112=800 sizy112=600 -title113=Monster Truck Madness 2 -path113=C:\Games\Monster Truck Madness 2\Monster.EXE +title113=Microsoft Motocross Madness 2 (BAD!!) +path113=C:\Games\Motocross Madness 2\MCM2.cracked.EXE module113= -ver113=1 -flag113=34 +ver113=7 +flag113=201326664 flagg113=1 -tflag113=0 +tflag113=82 initx113=0 inity113=0 minx113=0 @@ -1937,13 +1937,13 @@ posx113=50 posy113=50 sizx113=800 sizy113=600 -title114=Moto Racer Demo -path114=D:\Games\Moto Racer Demo\PlayDemo.exe +title114=Microsoft Motocross Madness Trial (BAD) +path114=C:\Games\Motocross Madness Trial\mcm.exe module114= -ver114=0 -flag114=167903267 -flagg114=192 -tflag114=14 +ver114=1 +flag114=134225952 +flagg114=0 +tflag114=130 initx114=0 inity114=0 minx114=0 @@ -1952,14 +1952,14 @@ maxx114=0 maxy114=0 posx114=50 posy114=50 -sizx114=800 -sizy114=600 -title115=Necrodrome -path115=C:\Games\Necrodome\NECRO95.EXE +sizx114=0 +sizy114=0 +title115=Mission Force Cyberstorm (BAD ?) +path115=C:\Games\SIERRA\CSTORM\CSTORM.EXE module115= ver115=0 -flag115=268435495 -flagg115=256 +flag115=33562658 +flagg115=0 tflag115=0 initx115=0 inity115=0 @@ -1969,15 +1969,15 @@ maxx115=0 maxy115=0 posx115=50 posy115=50 -sizx115=800 -sizy115=600 -title116=Need For Speed - Porsche 2000 -path116=C:\Games\Need For Speed - Porsche 2000\Porsche.exe +sizx115=0 +sizy115=0 +title116=Monopoly 3D +path116=C:\Games\Monopoly (Edition 3D)\Monopoly.exe module116= -ver116=7 -flag116=0 +ver116=0 +flag116=134244388 flagg116=0 -tflag116=258 +tflag116=2 initx116=0 inity116=0 minx116=0 @@ -1988,12 +1988,12 @@ posx116=50 posy116=50 sizx116=800 sizy116=600 -title117=Netstorm Islands at War -path117=C:\Games\Netstorm\Netstorm.exe +title117=Monster Truck Madness 2 +path117=C:\Games\Monster Truck Madness 2\Monster.EXE module117= -ver117=0 -flag117=2 -flagg117=0 +ver117=1 +flag117=34 +flagg117=1 tflag117=0 initx117=0 inity117=0 @@ -2005,13 +2005,13 @@ posx117=50 posy117=50 sizx117=800 sizy117=600 -title118=Nox -path118=C:\Games\Nox2\Game.exe +title118=Moto Racer Demo +path118=D:\Games\Moto Racer Demo\PlayDemo.exe module118= ver118=0 -flag118=939540515 -flagg118=0 -tflag118=386 +flag118=167903267 +flagg118=192 +tflag118=14 initx118=0 inity118=0 minx118=0 @@ -2022,13 +2022,13 @@ posx118=50 posy118=50 sizx118=800 sizy118=600 -title119=Pacific General -path119=C:\Games\Pacific General\PACGEN.EXE +title119=Necrodrome +path119=C:\Games\Necrodome\NECRO95.EXE module119= ver119=0 -flag119=8226 -flagg119=0 -tflag119=2 +flag119=268435495 +flagg119=256 +tflag119=0 initx119=0 inity119=0 minx119=0 @@ -2039,12 +2039,12 @@ posx119=50 posy119=50 sizx119=800 sizy119=600 -title120=Project Nomads Demo (BAD) -path120=C:\Games\Project Nomads Demo\bin\win32\nomads.exe +title120=Need For Speed - Porsche 2000 +path120=C:\Games\Need For Speed - Porsche 2000\Porsche.exe module120= -ver120=8 -flag120=-1476394912 -flagg120=256 +ver120=7 +flag120=0 +flagg120=0 tflag120=258 initx120=0 inity120=0 @@ -2056,11 +2056,11 @@ posx120=50 posy120=50 sizx120=800 sizy120=600 -title121=Puzzle Bubble -path121=C:\Games\Puzzle Bubble\PB.EXE +title121=Netstorm Islands at War +path121=C:\Games\Netstorm\Netstorm.exe module121= ver121=0 -flag121=34 +flag121=2 flagg121=0 tflag121=0 initx121=0 @@ -2073,13 +2073,13 @@ posx121=50 posy121=50 sizx121=800 sizy121=600 -title122=Quake 2 -path122=D:\Games\QUAKE2\quake2.exe +title122=Nox +path122=C:\Games\Nox2\Game.exe module122= -ver122=10 -flag122=167772672 -flagg122=1 -tflag122=387 +ver122=0 +flag122=939540515 +flagg122=0 +tflag122=386 initx122=0 inity122=0 minx122=0 @@ -2090,13 +2090,13 @@ posx122=50 posy122=50 sizx122=800 sizy122=600 -title123=Quake 3 Arena -path123=D:\Games\Q3A\quake3.exe +title123=Pacific General +path123=C:\Games\Pacific General\PACGEN.EXE module123= -ver123=10 -flag123=0 -flagg123=513 -tflag123=0 +ver123=0 +flag123=8226 +flagg123=0 +tflag123=2 initx123=0 inity123=0 minx123=0 @@ -2107,13 +2107,13 @@ posx123=50 posy123=50 sizx123=800 sizy123=600 -title124=Raiden II -path124=C:\Games\Raiden II\Raiden II\RAIDENII.EXE +title124=Project Nomads Demo (BAD) +path124=C:\Games\Project Nomads Demo\bin\win32\nomads.exe module124= -ver124=0 -flag124=34 -flagg124=0 -tflag124=0 +ver124=8 +flag124=-1476394912 +flagg124=256 +tflag124=258 initx124=0 inity124=0 minx124=0 @@ -2124,11 +2124,11 @@ posx124=50 posy124=50 sizx124=800 sizy124=600 -title125=Railroad Tycoon II -path125=C:\Games\Railroad.Tycoon.II\RT2.EXE +title125=Puzzle Bubble +path125=C:\Games\Puzzle Bubble\PB.EXE module125= -ver125=1 -flag125=134225954 +ver125=0 +flag125=34 flagg125=0 tflag125=0 initx125=0 @@ -2141,13 +2141,13 @@ posx125=50 posy125=50 sizx125=800 sizy125=600 -title126=Rally Championship 2000 -path126=C:\Games\Rally Championship 2000\RAL.EXE +title126=Quake 2 +path126=D:\Games\QUAKE2\quake2.exe module126= -ver126=0 -flag126=67108864 -flagg126=0 -tflag126=2 +ver126=10 +flag126=167772672 +flagg126=1 +tflag126=387 initx126=0 inity126=0 minx126=0 @@ -2158,12 +2158,12 @@ posx126=50 posy126=50 sizx126=800 sizy126=600 -title127=Rebel Moon Rising -path127=C:\Games\Rebel Moon Rising\Rmr.exe +title127=Quake 3 Arena +path127=D:\Games\Q3A\quake3.exe module127= -ver127=0 +ver127=10 flag127=0 -flagg127=0 +flagg127=513 tflag127=0 initx127=0 inity127=0 @@ -2175,13 +2175,13 @@ posx127=50 posy127=50 sizx127=800 sizy127=600 -title128=Redline - Gang Warfare 2066 -path128=C:\Games\Redline - Gang Warfare 2066\redline.exe +title128=Raiden II +path128=C:\Games\Raiden II\Raiden II\RAIDENII.EXE module128= ver128=0 -flag128=32 +flag128=34 flagg128=0 -tflag128=386 +tflag128=0 initx128=0 inity128=0 minx128=0 @@ -2192,13 +2192,13 @@ posx128=50 posy128=50 sizx128=800 sizy128=600 -title129=Resident Evil -path129=D:\Games\Resident Evil\residentevil.patched.exe +title129=Railroad Tycoon II +path129=C:\Games\Railroad.Tycoon.II\RT2.EXE module129= ver129=1 -flag129=134217827 -flagg129=128 -tflag129=2 +flag129=134225954 +flagg129=0 +tflag129=0 initx129=0 inity129=0 minx129=0 @@ -2209,13 +2209,13 @@ posx129=50 posy129=50 sizx129=800 sizy129=600 -title130=Re-Volt -path130=C:\Games\Re-Volt\REVOLT.EXE +title130=Rally Championship 2000 +path130=C:\Games\Rally Championship 2000\RAL.EXE module130= ver130=0 -flag130=134217792 +flag130=67108864 flagg130=0 -tflag130=0 +tflag130=2 initx130=0 inity130=0 minx130=0 @@ -2226,13 +2226,13 @@ posx130=50 posy130=50 sizx130=800 sizy130=600 -title131=Road Rash -path131=D:\Games\Road Rash\ROADRASH\ROADRASH.EXE +title131=Rebel Moon Rising +path131=C:\Games\Rebel Moon Rising\Rmr.exe module131= ver131=0 -flag131=134217730 +flag131=0 flagg131=0 -tflag131=387 +tflag131=0 initx131=0 inity131=0 minx131=0 @@ -2243,13 +2243,13 @@ posx131=50 posy131=50 sizx131=800 sizy131=600 -title132=Road Rash Demo -path132=D:\Games\RoadRash DEMO\DEMORASH.EXE +title132=Redline - Gang Warfare 2066 +path132=C:\Games\Redline - Gang Warfare 2066\redline.exe module132= ver132=0 -flag132=134218242 +flag132=32 flagg132=0 -tflag132=259 +tflag132=386 initx132=0 inity132=0 minx132=0 @@ -2260,45 +2260,45 @@ posx132=50 posy132=50 sizx132=800 sizy132=600 -title133=RollerCoaster Tycoon 2 Mini Game -path133=C:\Games\RollerCoaster Tycoon 2 Mini Game\rct2.exe +title133=Resident Evil +path133=D:\Games\Resident Evil\residentevil.patched.exe module133= ver133=1 -flag133=536870946 -flagg133=0 -tflag133=0 +flag133=134217827 +flagg133=128 +tflag133=2 initx133=0 inity133=0 minx133=0 miny133=0 maxx133=0 maxy133=0 -posx133=0 -posy133=0 +posx133=50 +posy133=50 sizx133=800 sizy133=600 -title134=Sega Rally 2 Championship -path134=C:\Games\Sega Rally 2 Championship\SEGA RALLY 2.exe +title134=Return to Castle Wolfenstein +path134=D:\Games\Return to Castle Wolfenstein (2001)\Return to Castle Wolfenstein\WolfSP.exe module134= -ver134=1 -flag134=268435488 -flagg134=2 -tflag134=0 +ver134=0 +flag134=134234114 +flagg134=212992 +tflag134=257 initx134=0 inity134=0 minx134=0 miny134=0 maxx134=0 maxy134=0 -posx134=0 -posy134=0 +posx134=50 +posy134=50 sizx134=800 sizy134=600 -title135=Sentinel Returns -path135=D:\Games\Sentinel Returns\Sentinel.exe +title135=Re-Volt +path135=C:\Games\Re-Volt\REVOLT.EXE module135= -ver135=1 -flag135=3 +ver135=0 +flag135=134217792 flagg135=0 tflag135=0 initx135=0 @@ -2311,13 +2311,13 @@ posx135=50 posy135=50 sizx135=800 sizy135=600 -title136=Shadow Master (TBD) -path136=C:\Games\Shadow Master\rmg.exe +title136=Road Rash +path136=D:\Games\Road Rash\ROADRASH\ROADRASH.EXE module136= -ver136=1 -flag136=32 -flagg136=256 -tflag136=450 +ver136=0 +flag136=134217730 +flagg136=0 +tflag136=387 initx136=0 inity136=0 minx136=0 @@ -2328,13 +2328,13 @@ posx136=50 posy136=50 sizx136=800 sizy136=600 -title137=Sid Meier's SimGolf Demo -path137=C:\Games\Sid Meier's SimGolf Demo\golf.exe -module137=jgl.dll +title137=Road Rash Demo +path137=D:\Games\RoadRash DEMO\DEMORASH.EXE +module137= ver137=0 -flag137=33554434 +flag137=134218242 flagg137=0 -tflag137=2 +tflag137=259 initx137=0 inity137=0 minx137=0 @@ -2345,45 +2345,45 @@ posx137=50 posy137=50 sizx137=800 sizy137=600 -title138=Sin, Wages of (sw renderer) -path138=D:\Games\sin\sin.exe -module138=ref_gl.dll ref_soft.dll -ver138=10 -flag138=402670082 -flagg138=769 -tflag138=387 +title138=RollerCoaster Tycoon 2 Mini Game +path138=C:\Games\RollerCoaster Tycoon 2 Mini Game\rct2.exe +module138= +ver138=1 +flag138=536870946 +flagg138=0 +tflag138=0 initx138=0 inity138=0 minx138=0 miny138=0 maxx138=0 maxy138=0 -posx138=50 -posy138=50 +posx138=0 +posy138=0 sizx138=800 sizy138=600 -title139=SleepWalker -path139=C:\Games\SleepWalker\Sleepy.exe +title139=Sega Rally 2 Championship +path139=C:\Games\Sega Rally 2 Championship\SEGA RALLY 2.exe module139= -ver139=0 -flag139=301989954 -flagg139=0 -tflag139=198 +ver139=1 +flag139=268435488 +flagg139=2 +tflag139=0 initx139=0 inity139=0 minx139=0 miny139=0 maxx139=0 maxy139=0 -posx139=50 -posy139=50 +posx139=0 +posy139=0 sizx139=800 sizy139=600 -title140=SnowBoard Racer -path140=C:\Games\Snowboard Racer\SnowBoard.exe +title140=Sentinel Returns +path140=D:\Games\Sentinel Returns\Sentinel.exe module140= -ver140=0 -flag140=268443681 +ver140=1 +flag140=3 flagg140=0 tflag140=0 initx140=0 @@ -2396,13 +2396,13 @@ posx140=50 posy140=50 sizx140=800 sizy140=600 -title141=Solaris (~BAD) -path141=c:\Games\Solaris\solaris.exe +title141=Shadow Master (TBD) +path141=C:\Games\Shadow Master\rmg.exe module141= -ver141=7 -flag141=973078627 -flagg141=1 -tflag141=2 +ver141=1 +flag141=32 +flagg141=256 +tflag141=450 initx141=0 inity141=0 minx141=0 @@ -2413,13 +2413,13 @@ posx141=50 posy141=50 sizx141=800 sizy141=600 -title142=Soldiers at War -path142=D:\Games\Soldiers at War\SAW_Game.exe -module142= +title142=Sid Meier's SimGolf Demo +path142=C:\Games\Sid Meier's SimGolf Demo\golf.exe +module142=jgl.dll ver142=0 -flag142=671359010 -flagg142=64 -tflag142=0 +flag142=33554434 +flagg142=0 +tflag142=2 initx142=0 inity142=0 minx142=0 @@ -2428,15 +2428,15 @@ maxx142=0 maxy142=0 posx142=50 posy142=50 -sizx142=640 -sizy142=480 -title143=Sonic 3 -path143=C:\Games\Sonic 3 + Sonic et Knuckles\Sonic 3\SONIC3K.EXE -module143= -ver143=1 -flag143=546 -flagg143=0 -tflag143=0 +sizx142=800 +sizy142=600 +title143=Sin, Wages of (sw renderer) +path143=D:\Games\sin\sin.exe +module143=ref_gl.dll ref_soft.dll +ver143=10 +flag143=402670082 +flagg143=769 +tflag143=387 initx143=0 inity143=0 minx143=0 @@ -2447,13 +2447,13 @@ posx143=50 posy143=50 sizx143=800 sizy143=600 -title144=Sonic 3D Blast -path144=C:\Games\Sonic3D\pcsonic.exe +title144=SleepWalker +path144=C:\Games\SleepWalker\Sleepy.exe module144= ver144=0 -flag144=134217762 +flag144=301989954 flagg144=0 -tflag144=0 +tflag144=198 initx144=0 inity144=0 minx144=0 @@ -2464,11 +2464,11 @@ posx144=50 posy144=50 sizx144=800 sizy144=600 -title145=Sonic R -path145=C:\Games\SonicR\sonicr.exe +title145=SnowBoard Racer +path145=C:\Games\Snowboard Racer\SnowBoard.exe module145= ver145=0 -flag145=8288 +flag145=268443681 flagg145=0 tflag145=0 initx145=0 @@ -2481,13 +2481,13 @@ posx145=50 posy145=50 sizx145=800 sizy145=600 -title146=Soulbringer -path146=C:\Games\SoulBringer\SoulbringeVCnoeax.exe +title146=Solaris (~BAD) +path146=c:\Games\Solaris\solaris.exe module146= -ver146=0 -flag146=143024174 -flagg146=0 -tflag146=0 +ver146=7 +flag146=973078627 +flagg146=1 +tflag146=2 initx146=0 inity146=0 minx146=0 @@ -2498,13 +2498,13 @@ posx146=50 posy146=50 sizx146=800 sizy146=600 -title147=Speedboat Attack (BAD) -path147=C:\Games\Speedboat Attack\SBOAT.EXE +title147=Soldiers at War +path147=D:\Games\Soldiers at War\SAW_Game.exe module147= ver147=0 -flag147=541073954 -flagg147=0 -tflag147=2 +flag147=671359010 +flagg147=64 +tflag147=0 initx147=0 inity147=0 minx147=0 @@ -2513,15 +2513,15 @@ maxx147=0 maxy147=0 posx147=50 posy147=50 -sizx147=800 -sizy147=600 -title148=Star trek Klingon Honor Guard -path148=D:\Games\Star trek Klingon Honor Guard\System\Khg.exe -module148=OGIDrv.dll -ver148=10 -flag148=0 -flagg148=513 -tflag148=386 +sizx147=640 +sizy147=480 +title148=Sonic 3 +path148=C:\Games\Sonic 3 + Sonic et Knuckles\Sonic 3\SONIC3K.EXE +module148= +ver148=1 +flag148=546 +flagg148=0 +tflag148=0 initx148=0 inity148=0 minx148=0 @@ -2532,11 +2532,11 @@ posx148=50 posy148=50 sizx148=800 sizy148=600 -title149=Star Wars Episode 1 Racer -path149=C:\Games\sw racer\SWEP1RCR.EXE +title149=Sonic 3D Blast +path149=C:\Games\Sonic3D\pcsonic.exe module149= ver149=0 -flag149=142606368 +flag149=134217762 flagg149=0 tflag149=0 initx149=0 @@ -2549,13 +2549,13 @@ posx149=50 posy149=50 sizx149=800 sizy149=600 -title150=Star Wars Jedi Knight Jedi Academy -path150=D:\Games\Star_Wars_Jedi_Knight_Jedi_Academy\GameData\jasp.exe +title150=Sonic R +path150=C:\Games\SonicR\sonicr.exe module150= -ver150=10 -flag150=0 -flagg150=65536 -tflag150=3 +ver150=0 +flag150=8288 +flagg150=0 +tflag150=0 initx150=0 inity150=0 minx150=0 @@ -2566,11 +2566,11 @@ posx150=50 posy150=50 sizx150=800 sizy150=600 -title151=Star Wars: Jedi Knight -path151=C:\Games\Jedi Knight\Jedi Knight\JK.EXE +title151=Soulbringer +path151=C:\Games\SoulBringer\SoulbringeVCnoeax.exe module151= ver151=0 -flag151=8226 +flag151=143024174 flagg151=0 tflag151=0 initx151=0 @@ -2583,30 +2583,30 @@ posx151=50 posy151=50 sizx151=800 sizy151=600 -title152=Star Wars: the Gungan Frontier -path152=C:\Games\sw the gungan frontier\Gungan Frontier.exe +title152=Speedboat Attack (BAD) +path152=C:\Games\Speedboat Attack\SBOAT.EXE module152= -ver152=1 -flag152=402915362 -flagg152=512 -tflag152=0 +ver152=0 +flag152=541073954 +flagg152=0 +tflag152=2 initx152=0 inity152=0 minx152=0 miny152=0 maxx152=0 maxy152=0 -posx152=0 -posy152=0 +posx152=50 +posy152=50 sizx152=800 sizy152=600 -title153=Starship Troopers -path153=C:\Games\Starship Troopers - Terran Ascendancy\stta\StarshipTroopers.exe -module153= -ver153=1 -flag153=32 -flagg153=0 -tflag153=0 +title153=Star trek Klingon Honor Guard +path153=D:\Games\Star trek Klingon Honor Guard\System\Khg.exe +module153=OGIDrv.dll +ver153=10 +flag153=0 +flagg153=513 +tflag153=386 initx153=0 inity153=0 minx153=0 @@ -2617,11 +2617,11 @@ posx153=50 posy153=50 sizx153=800 sizy153=600 -title154=Starshot Space Circus -path154=D:\SpaceCircus.exe +title154=Star Wars Episode 1 Racer +path154=C:\Games\sw racer\SWEP1RCR.EXE module154= ver154=0 -flag154=66 +flag154=142606368 flagg154=0 tflag154=0 initx154=0 @@ -2634,13 +2634,13 @@ posx154=50 posy154=50 sizx154=800 sizy154=600 -title155=Stronghold Demo -path155=C:\Games\Firefly Studios' Stronghold - Demo\Stronghold Demo.exe +title155=Star Wars Jedi Knight Jedi Academy +path155=D:\Games\Star_Wars_Jedi_Knight_Jedi_Academy\GameData\jasp.exe module155= -ver155=0 -flag155=98 -flagg155=0 -tflag155=0 +ver155=10 +flag155=0 +flagg155=65536 +tflag155=3 initx155=0 inity155=0 minx155=0 @@ -2651,29 +2651,29 @@ posx155=50 posy155=50 sizx155=800 sizy155=600 -title156=Sub Culture -path156=C:\Games\Sub Culture\sc.exe +title156=Star Wars: Jedi Knight +path156=C:\Games\Jedi Knight\Jedi Knight\JK.EXE module156= ver156=0 -flag156=66 -flagg156=256 -tflag156=10 -initx156=50 -inity156=50 -minx156=50 -miny156=50 -maxx156=800 -maxy156=600 +flag156=8226 +flagg156=0 +tflag156=0 +initx156=0 +inity156=0 +minx156=0 +miny156=0 +maxx156=0 +maxy156=0 posx156=50 posy156=50 sizx156=800 sizy156=600 -title157=Superbike 2001 -path157=C:\Games\Superbike 2001\Sbk2001.exe +title157=Star Wars: the Gungan Frontier +path157=C:\Games\sw the gungan frontier\Gungan Frontier.exe module157= ver157=1 -flag157=536887332 -flagg157=0 +flag157=402915362 +flagg157=512 tflag157=0 initx157=0 inity157=0 @@ -2681,15 +2681,15 @@ minx157=0 miny157=0 maxx157=0 maxy157=0 -posx157=50 -posy157=50 +posx157=0 +posy157=0 sizx157=800 sizy157=600 -title158=Syberia 2 Demo -path158=C:\Games\Syberia 2 Demo\Syberia2Demo.exe +title158=Starship Troopers +path158=C:\Games\Starship Troopers - Terran Ascendancy\stta\StarshipTroopers.exe module158= -ver158=8 -flag158=536887332 +ver158=1 +flag158=32 flagg158=0 tflag158=0 initx158=0 @@ -2702,11 +2702,11 @@ posx158=50 posy158=50 sizx158=800 sizy158=600 -title159=Syberia Demo -path159=C:\Games\SyberiaDemo\SyberiaDemo.exe +title159=Starshot Space Circus +path159=D:\SpaceCircus.exe module159= -ver159=1 -flag159=536887332 +ver159=0 +flag159=66 flagg159=0 tflag159=0 initx159=0 @@ -2719,12 +2719,12 @@ posx159=50 posy159=50 sizx159=800 sizy159=600 -title160=System Shock 2 (BAD!!!) -path160=C:\Games\Sys Shock II\Shock2.exe +title160=Stronghold Demo +path160=C:\Games\Firefly Studios' Stronghold - Demo\Stronghold Demo.exe module160= -ver160=1 -flag160=0 -flagg160=64 +ver160=0 +flag160=98 +flagg160=0 tflag160=0 initx160=0 inity160=0 @@ -2736,29 +2736,29 @@ posx160=50 posy160=50 sizx160=800 sizy160=600 -title161=Test Drive 4 -path161=D:\Games\Test Drive 4\td4.EXE +title161=Sub Culture +path161=C:\Games\Sub Culture\sc.exe module161= ver161=0 -flag161=-2013265886 -flagg161=16 -tflag161=3 -initx161=0 -inity161=0 -minx161=0 -miny161=0 -maxx161=0 -maxy161=0 +flag161=66 +flagg161=256 +tflag161=10 +initx161=50 +inity161=50 +minx161=50 +miny161=50 +maxx161=800 +maxy161=600 posx161=50 posy161=50 sizx161=800 sizy161=600 -title162=The Nations Demo -path162=C:\Games\The Nations Demo\bin\Game.exe +title162=Superbike 2001 +path162=C:\Games\Superbike 2001\Sbk2001.exe module162= ver162=1 -flag162=402661920 -flagg162=256 +flag162=536887332 +flagg162=0 tflag162=0 initx162=0 inity162=0 @@ -2770,13 +2770,13 @@ posx162=50 posy162=50 sizx162=800 sizy162=600 -title163=The Sims -path163=C:\Games\The Sims\Sims.exe +title163=Syberia 2 Demo +path163=C:\Games\Syberia 2 Demo\Syberia2Demo.exe module163= -ver163=0 -flag163=134226976 +ver163=8 +flag163=536887332 flagg163=0 -tflag163=2 +tflag163=0 initx163=0 inity163=0 minx163=0 @@ -2787,11 +2787,11 @@ posx163=50 posy163=50 sizx163=800 sizy163=600 -title164=Thief the Dark Project (FRE) -path164=C:\Games\thief\game\thieffixed.exe +title164=Syberia Demo +path164=C:\Games\SyberiaDemo\SyberiaDemo.exe module164= ver164=1 -flag164=16390 +flag164=536887332 flagg164=0 tflag164=0 initx164=0 @@ -2804,13 +2804,13 @@ posx164=50 posy164=50 sizx164=800 sizy164=600 -title165=TinTin: Prisoners of the Sun -path165=C:\Games\tintin\TINTINW.EXE +title165=System Shock 2 (BAD!!!) +path165=C:\Games\Sys Shock II\Shock2.exe module165= -ver165=0 -flag165=34 -flagg165=0 -tflag165=2 +ver165=1 +flag165=0 +flagg165=64 +tflag165=0 initx165=0 inity165=0 minx165=0 @@ -2821,13 +2821,13 @@ posx165=50 posy165=50 sizx165=800 sizy165=600 -title166=Tintoy (BAD gfx) -path166=C:\Games\Tintoy\Tintoy.exe +title166=Test Drive 4 +path166=D:\Games\Test Drive 4\td4.EXE module166= ver166=0 -flag166=546 -flagg166=256 -tflag166=258 +flag166=-2013265886 +flagg166=16 +tflag166=3 initx166=0 inity166=0 minx166=0 @@ -2838,13 +2838,13 @@ posx166=50 posy166=50 sizx166=800 sizy166=600 -title167=Tomb Raider - Anniversary -path167=C:\Games\Tomb Raider - Anniversary\tra.exe +title167=The Nations Demo +path167=C:\Games\The Nations Demo\bin\Game.exe module167= -ver167=9 -flag167=0 +ver167=1 +flag167=402661920 flagg167=256 -tflag167=2 +tflag167=0 initx167=0 inity167=0 minx167=0 @@ -2855,13 +2855,13 @@ posx167=50 posy167=50 sizx167=800 sizy167=600 -title168=Tomb Raider 2 the Golden Mask -path168=D:\Games\TR2 Golden Mask\T2GOLD.EXE +title168=The Sims +path168=C:\Games\The Sims\Sims.exe module168= ver168=0 -flag168=570688034 +flag168=134226976 flagg168=0 -tflag168=258 +tflag168=2 initx168=0 inity168=0 minx168=0 @@ -2872,13 +2872,13 @@ posx168=50 posy168=50 sizx168=800 sizy168=600 -title169=Tomb Raider 3 Demo -path169=C:\Games\Tomb Raider 3 - The Lost Artifact Demo\tr3gold.exe +title169=Thief the Dark Project (FRE) +path169=C:\Games\thief\game\thieffixed.exe module169= ver169=1 -flag169=369098848 +flag169=16390 flagg169=0 -tflag169=258 +tflag169=0 initx169=0 inity169=0 minx169=0 @@ -2889,13 +2889,13 @@ posx169=50 posy169=50 sizx169=800 sizy169=600 -title170=Tomb Raider 4 Demo -path170=C:\Games\Tomb Raider 4 - The Last Revelation (Demo)\tomb4.patched.exe +title170=TinTin: Prisoners of the Sun +path170=C:\Games\tintin\TINTINW.EXE module170= ver170=0 -flag170=234881056 -flagg170=16 -tflag170=258 +flag170=34 +flagg170=0 +tflag170=2 initx170=0 inity170=0 minx170=0 @@ -2906,13 +2906,13 @@ posx170=50 posy170=50 sizx170=800 sizy170=600 -title171=Total Annihilation Kingdoms -path171=D:\Games\Total Annihilation Kingdoms\Kingdoms.exe +title171=Tintoy (BAD gfx) +path171=C:\Games\Tintoy\Tintoy.exe module171= ver171=0 -flag171=134234146 -flagg171=0 -tflag171=0 +flag171=546 +flagg171=256 +tflag171=258 initx171=0 inity171=0 minx171=0 @@ -2923,13 +2923,13 @@ posx171=50 posy171=50 sizx171=800 sizy171=600 -title172=Total Soccer 2000 -path172=D:\Games\Total Soccer 2000\Total Soccer 2000\SOCCERDX.EXE +title172=Tomb Raider - Anniversary +path172=C:\Games\Tomb Raider - Anniversary\tra.exe module172= -ver172=1 -flag172=33554434 -flagg172=1134592 -tflag172=1 +ver172=9 +flag172=0 +flagg172=256 +tflag172=2 initx172=0 inity172=0 minx172=0 @@ -2940,13 +2940,13 @@ posx172=50 posy172=50 sizx172=800 sizy172=600 -title173=Ultim@te Race Pro -path173=C:\Games\Ultim@te race pro\Ultim@te Race Pro.exe +title173=Tomb Raider 2 the Golden Mask +path173=D:\Games\TR2 Golden Mask\T2GOLD.EXE module173= ver173=0 -flag173=570425440 -flagg173=256 -tflag173=0 +flag173=570688034 +flagg173=0 +tflag173=258 initx173=0 inity173=0 minx173=0 @@ -2957,13 +2957,13 @@ posx173=50 posy173=50 sizx173=800 sizy173=600 -title174=Uprising - Join or Die -path174=D:\Games\Uprising\uprising.exe +title174=Tomb Raider 3 Demo +path174=C:\Games\Tomb Raider 3 - The Lost Artifact Demo\tr3gold.exe module174= -ver174=0 -flag174=-2013265882 -flagg174=18 -tflag174=0 +ver174=1 +flag174=369098848 +flagg174=0 +tflag174=258 initx174=0 inity174=0 minx174=0 @@ -2974,13 +2974,13 @@ posx174=50 posy174=50 sizx174=800 sizy174=600 -title175=Urban Assault -path175=D:\Games\Urban Assault\UA.EXE +title175=Tomb Raider 4 Demo +path175=C:\Games\Tomb Raider 4 - The Last Revelation (Demo)\tomb4.patched.exe module175= ver175=0 -flag175=671236130 -flagg175=256 -tflag175=3 +flag175=234881056 +flagg175=16 +tflag175=258 initx175=0 inity175=0 minx175=0 @@ -2991,12 +2991,12 @@ posx175=50 posy175=50 sizx175=800 sizy175=600 -title176=Warcraft 2 Battlenet Edition -path176=D:\Games\Warcraft 2\Warcraft II BNE.exe +title176=Total Annihilation Kingdoms +path176=D:\Games\Total Annihilation Kingdoms\Kingdoms.exe module176= ver176=0 -flag176=24611 -flagg176=65552 +flag176=134234146 +flagg176=0 tflag176=0 initx176=0 inity176=0 @@ -3008,13 +3008,13 @@ posx176=50 posy176=50 sizx176=800 sizy176=600 -title177=WarHammer Rites of War -path177=C:\Games\Rites of War\RoW.exe +title177=Total Soccer 2000 +path177=D:\Games\Total Soccer 2000\Total Soccer 2000\SOCCERDX.EXE module177= -ver177=0 -flag177=134217760 -flagg177=128 -tflag177=0 +ver177=1 +flag177=33554434 +flagg177=1069056 +tflag177=1 initx177=0 inity177=0 minx177=0 @@ -3025,13 +3025,13 @@ posx177=50 posy177=50 sizx177=800 sizy177=600 -title178=Warlords 3 -path178=D:\Games\WARLORDS3\Darklord.exe +title178=Ultim@te Race Pro +path178=C:\Games\Ultim@te race pro\Ultim@te Race Pro.exe module178= ver178=0 -flag178=-2013265374 -flagg178=1048608 -tflag178=2 +flag178=570425440 +flagg178=256 +tflag178=0 initx178=0 inity178=0 minx178=0 @@ -3042,12 +3042,12 @@ posx178=50 posy178=50 sizx178=800 sizy178=600 -title179=WarTorn -path179=C:\Games\WarTorn\W.exe +title179=Uprising - Join or Die +path179=D:\Games\Uprising\uprising.exe module179= ver179=0 -flag179=32 -flagg179=0 +flag179=-2013265882 +flagg179=18 tflag179=0 initx179=0 inity179=0 @@ -3059,13 +3059,13 @@ posx179=50 posy179=50 sizx179=800 sizy179=600 -title180=WarWind -path180=C:\Games\WarWind\WW.EXE +title180=Urban Assault +path180=D:\Games\Urban Assault\UA.EXE module180= ver180=0 -flag180=16418 -flagg180=81936 -tflag180=0 +flag180=-1610465246 +flagg180=256 +tflag180=3 initx180=0 inity180=0 minx180=0 @@ -3076,29 +3076,29 @@ posx180=50 posy180=50 sizx180=800 sizy180=600 -title181=Worms Armageddon Demo (BAD!!!) -path181=C:\Games\Worms Armageddon Demo\WaDemo.exe +title181=Warcraft 2 Battlenet Edition +path181=D:\Games\Warcraft 2\Warcraft II BNE.exe module181= -ver181=1 -flag181=939524099 -flagg181=8 -tflag181=2 +ver181=0 +flag181=24739 +flagg181=2166800 +tflag181=0 initx181=0 inity181=0 minx181=0 miny181=0 maxx181=0 maxy181=0 -posx181=0 -posy181=0 -sizx181=0 -sizy181=0 -title182=Worms World Party -path182=D:\Games\Worms World Party\wwp.exe +posx181=50 +posy181=50 +sizx181=800 +sizy181=600 +title182=WarHammer Rites of War +path182=C:\Games\Rites of War\RoW.exe module182= -ver182=1 -flag182=8388610 -flagg182=0 +ver182=0 +flag182=134217760 +flagg182=128 tflag182=0 initx182=0 inity182=0 @@ -3110,12 +3110,12 @@ posx182=50 posy182=50 sizx182=800 sizy182=600 -title183=Worms World Party Demo (BAD) -path183=C:\Games\WWP Demo\wwp.exe -module183=MFC42.DLL ltkrn10N.dll -ver183=1 -flag183=406847491 -flagg183=8 +title183=Warlords 3 +path183=D:\Games\WARLORDS3\Darklord.exe +module183= +ver183=0 +flag183=-2013265374 +flagg183=1048608 tflag183=2 initx183=0 inity183=0 @@ -3123,14 +3123,14 @@ minx183=0 miny183=0 maxx183=0 maxy183=0 -posx183=0 -posy183=0 -sizx183=0 -sizy183=0 -title184=X-Com Enforcer -path184=C:\Games\X-Com Enforcer\System\xcom.exe +posx183=50 +posy183=50 +sizx183=800 +sizy183=600 +title184=WarTorn +path184=C:\Games\WarTorn\W.exe module184= -ver184=1 +ver184=0 flag184=32 flagg184=0 tflag184=0 @@ -3140,16 +3140,16 @@ minx184=0 miny184=0 maxx184=0 maxy184=0 -posx184=0 -posy184=0 +posx184=50 +posy184=50 sizx184=800 sizy184=600 -title185=X-Com Interceptor -path185=C:\Games\X-Com_Interceptor\X-COM Interceptor\Interceptor.exe +title185=WarWind +path185=C:\Games\WarWind\WW.EXE module185= ver185=0 flag185=16418 -flagg185=0 +flagg185=81936 tflag185=0 initx185=0 inity185=0 @@ -3161,28 +3161,28 @@ posx185=50 posy185=50 sizx185=800 sizy185=600 -title186=Z Steel Soldiers -path186=C:\Games\ZSteelSoldiers\Bin\z2.exe +title186=Worms Armageddon Demo (BAD!!!) +path186=C:\Games\Worms Armageddon Demo\WaDemo.exe module186= -ver186=8 -flag186=805462020 -flagg186=0 -tflag186=0 +ver186=1 +flag186=939524099 +flagg186=8 +tflag186=2 initx186=0 inity186=0 minx186=0 miny186=0 maxx186=0 maxy186=0 -posx186=50 -posy186=50 -sizx186=800 -sizy186=600 -title187=Zax Alien Hunter -path187=C:\Games\ZaxDemo\Zax.exe +posx186=0 +posy186=0 +sizx186=0 +sizy186=0 +title187=Worms World Party +path187=D:\Games\Worms World Party\wwp.exe module187= -ver187=0 -flag187=-1476386784 +ver187=1 +flag187=8388610 flagg187=0 tflag187=0 initx187=0 @@ -3251,9 +3251,9 @@ maxfps52=0 maxfps53=0 maxfps54=0 maxfps55=0 -maxfps56=0 +maxfps56=100 maxfps57=0 -maxfps58=0 +maxfps58=500 maxfps59=0 maxfps60=0 maxfps61=0 @@ -3281,18 +3281,18 @@ maxfps82=0 maxfps83=0 maxfps84=0 maxfps85=0 -maxfps86=200 -maxfps87=0 -maxfps88=40 +maxfps86=0 +maxfps87=100 +maxfps88=0 maxfps89=0 -maxfps90=0 +maxfps90=40 maxfps91=0 maxfps92=0 maxfps93=0 maxfps94=0 maxfps95=0 maxfps96=0 -maxfps97=0 +maxfps97=100 maxfps98=0 maxfps99=0 maxfps100=0 @@ -3329,7 +3329,7 @@ maxfps130=0 maxfps131=0 maxfps132=0 maxfps133=0 -maxfps134=0 +maxfps134=50 maxfps135=0 maxfps136=0 maxfps137=0 @@ -3367,29 +3367,29 @@ maxfps168=0 maxfps169=0 maxfps170=0 maxfps171=0 -maxfps172=20 +maxfps172=0 maxfps173=0 maxfps174=0 maxfps175=0 maxfps176=0 -maxfps177=0 +maxfps177=200 maxfps178=0 maxfps179=0 maxfps180=0 -maxfps181=0 +maxfps181=40 maxfps182=0 maxfps183=0 maxfps184=0 maxfps185=0 maxfps186=0 maxfps187=0 -title188=Zero Critical (BAD) -path188=C:\Games\zero_critical_-_satin_rift\ZEROCR.EXE -module188= -ver188=0 -flag188=679477858 +title188=Worms World Party Demo (BAD) +path188=C:\Games\WWP Demo\wwp.exe +module188=MFC42.DLL ltkrn10N.dll +ver188=1 +flag188=406847491 flagg188=8 -tflag188=0 +tflag188=2 initx188=0 inity188=0 minx188=0 @@ -3398,14 +3398,14 @@ maxx188=0 maxy188=0 posx188=0 posy188=0 -sizx188=800 +sizx188=0 maxfps188=0 opengllib0= -initts0=0 +initts0=-8 opengllib1= -initts1=0 +initts1=-7 opengllib2= -initts2=0 +initts2=-7 opengllib3= initts3=0 opengllib4= @@ -3413,7 +3413,7 @@ initts4=0 opengllib5= initts5=0 opengllib6= -initts6=0 +initts6=-2 opengllib7= initts7=0 opengllib8= @@ -3575,13 +3575,13 @@ initts85=0 opengllib86= initts86=0 opengllib87= -initts87=0 +initts87=2 opengllib88= initts88=0 opengllib89= initts89=0 opengllib90= -initts90=0 +initts90=2 opengllib91= initts91=0 opengllib92= @@ -3595,7 +3595,7 @@ initts95=0 opengllib96= initts96=0 opengllib97= -initts97=0 +initts97=3 opengllib98= initts98=0 opengllib99= @@ -3669,7 +3669,7 @@ initts132=0 opengllib133= initts133=0 opengllib134= -initts134=0 +initts134=-4 opengllib135= initts135=0 opengllib136= @@ -3777,14 +3777,14 @@ initts186=0 opengllib187= initts187=0 opengllib188= -sizy188=600 +sizy188=0 initts188=0 -title189=Zero Population Count -path189=C:\Games\ZPC\ZPC.EXE +title189=X-Com Enforcer +path189=C:\Games\X-Com Enforcer\System\xcom.exe module189= opengllib189= -ver189=0 -flag189=1073741859 +ver189=1 +flag189=32 flagg189=0 tflag189=0 initx189=0 @@ -3799,12 +3799,12 @@ sizx189=800 sizy189=600 maxfps189=0 initts189=0 -title190=Zero Zone +title190=X-Com Interceptor module190= opengllib190= -path190=D:\ZZone\ZeroZone.exe +path190=C:\Games\X-Com_Interceptor\X-COM Interceptor\Interceptor.exe ver190=0 -flag190=34 +flag190=16418 flagg190=0 tflag190=0 initx190=0 @@ -3819,12 +3819,12 @@ sizx190=800 sizy190=600 maxfps190=0 initts190=0 -title191=Zeus Poseidon -path191=C:\Games\Zeus-Poseidon\Zeus.exe +title191=Z Steel Soldiers +path191=C:\Games\ZSteelSoldiers\Bin\z2.exe module191= opengllib191= -ver191=0 -flag191=34 +ver191=8 +flag191=805462020 flagg191=0 tflag191=0 initx191=0 @@ -3839,12 +3839,12 @@ sizx191=800 sizy191=600 maxfps191=0 initts191=0 -title192=Zoo Tycoon -path192=C:\Games\Zoo Tycoon\zoo.exe +title192=Zax Alien Hunter +path192=C:\Games\ZaxDemo\Zax.exe module192= opengllib192= ver192=0 -flag192=-2013265886 +flag192=-1476386784 flagg192=0 tflag192=0 initx192=0 @@ -3859,13 +3859,13 @@ sizx192=800 sizy192=600 maxfps192=0 initts192=0 -title193=Return to Castle Wolfenstein -path193=D:\Games\Return to Castle Wolfenstein (2001)\Return to Castle Wolfenstein\WolfSP.exe +title193=Zero Critical (BAD) +path193=C:\Games\zero_critical_-_satin_rift\ZEROCR.EXE module193= opengllib193= ver193=0 -flag193=134234114 -flagg193=131072 +flag193=679477858 +flagg193=8 tflag193=0 initx193=0 inity193=0 @@ -3873,9 +3873,90 @@ minx193=0 miny193=0 maxx193=0 maxy193=0 -posx193=50 -posy193=50 +posx193=0 +posy193=0 sizx193=800 sizy193=600 maxfps193=0 initts193=0 +title194=Zero Population Count +path194=C:\Games\ZPC\ZPC.EXE +module194= +opengllib194= +ver194=0 +flag194=1073741859 +flagg194=0 +tflag194=0 +initx194=0 +inity194=0 +minx194=0 +miny194=0 +maxx194=0 +maxy194=0 +posx194=0 +posy194=0 +sizx194=800 +sizy194=600 +maxfps194=0 +initts194=0 +title195=Zero Zone +path195=D:\ZZone\ZeroZone.exe +module195= +opengllib195= +ver195=0 +flag195=34 +flagg195=0 +tflag195=0 +initx195=0 +inity195=0 +minx195=0 +miny195=0 +maxx195=0 +maxy195=0 +posx195=50 +posy195=50 +sizx195=800 +sizy195=600 +maxfps195=0 +initts195=0 +title196=Zeus Poseidon +path196=C:\Games\Zeus-Poseidon\Zeus.exe +module196= +opengllib196= +ver196=0 +flag196=34 +flagg196=0 +tflag196=0 +initx196=0 +inity196=0 +minx196=0 +miny196=0 +maxx196=0 +maxy196=0 +posx196=50 +posy196=50 +sizx196=800 +sizy196=600 +maxfps196=0 +initts196=0 + +title197=Zoo Tycoon +path197=C:\Games\Zoo Tycoon\zoo.exe +module197= +opengllib197= +ver197=0 +flag197=-2013265886 +flagg197=0 +tflag197=0 +initx197=0 +inity197=0 +minx197=0 +miny197=0 +maxx197=0 +maxy197=0 +posx197=50 +posy197=50 +sizx197=800 +sizy197=600 +maxfps197=0 +initts197=0 diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index dc45232..2b96283 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -117,8 +117,7 @@ static void dx_ToggleLogging() dxw.dwTFlags |= OUTTRACE; OutTraceD("Toggle logging ON\n"); } - DxWndStatus.isLogging=(dxw.dwTFlags & OUTTRACE); - SetHookStatus(&DxWndStatus); + GetHookInfo()->isLogging=(dxw.dwTFlags & OUTTRACE); } void DumpImportTable(char *module) @@ -300,7 +299,7 @@ void *HookAPI(const char *module, char *dll, void *apiproc, const char *apiname, OutTraceD("HookAPI: FlushInstructionCache error %d at %d\n", GetLastError(), __LINE__); return 0; } - //OutTraceD("HookAPI hook=%s.%s address=%x->%x\n", module, apiname, org, hookproc); + if(IsDebug) OutTrace("HookAPI hook=%s.%s address=%x->%x\n", module, apiname, org, hookproc); } __except(EXCEPTION_EXECUTE_HANDLER) { @@ -706,8 +705,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp if (wparam == VK_F5 && (dxw.TimeShift < 8)) dxw.TimeShift++; if (wparam == VK_F6 && (dxw.TimeShift > -8)) dxw.TimeShift--; OutTrace("Time Stretch: shift=%d speed=%s\n", dxw.TimeShift, dxw.GetTSCaption()); - DxWndStatus.iTimeShift=dxw.TimeShift; - SetHookStatus(&DxWndStatus); + GetHookInfo()->TimeShift=dxw.TimeShift; } break; case VK_F4: @@ -1026,6 +1024,8 @@ void HookSysLibs(char *module) if(tmp) pGetLocalTime = (GetLocalTime_Type)tmp; tmp = HookAPI(module, "kernel32.dll", GetSystemTime, "GetSystemTime", extGetSystemTime); if(tmp) pGetSystemTime = (GetSystemTime_Type)tmp; + tmp = HookAPI(module, "kernel32.dll", GetSystemTimeAsFileTime, "GetSystemTimeAsFileTime", extGetSystemTimeAsFileTime); + if(tmp) pGetSystemTimeAsFileTime = (GetSystemTimeAsFileTime_Type)tmp; tmp = HookAPI(module, "kernel32.dll", Sleep, "Sleep", extSleep); if(tmp) pSleep = (Sleep_Type)tmp; tmp = HookAPI(module, "kernel32.dll", SleepEx, "SleepEx", extSleepEx); diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp index 26588db..2cda394 100644 --- a/dll/dxwcore.cpp +++ b/dll/dxwcore.cpp @@ -324,19 +324,29 @@ void dxwCore::ScreenRefresh(void) } -static void CountFPS() +static void CountFPS(HWND hwnd) { static DWORD time = 0xFFFFFFFF; static DWORD FPSCount = 0; + extern void SetFPS(int); + //DXWNDSTATUS Status; DWORD tmp; tmp = GetTickCount(); if((tmp - time) > 1000) { + char sBuf[80+12+1]; // title + fps string + terminator + char *fpss; // log fps count OutTrace("FPSCount=%d\n", FPSCount); // show fps count on status win - GetHookStatus(&DxWndStatus); - DxWndStatus.FPSCount = FPSCount; - SetHookStatus(&DxWndStatus); + GetHookInfo()->FPSCount = FPSCount; // for overlay display + // show fps on win title bar + if (dxw.dwFlags2 & SHOWFPS){ + GetWindowText(hwnd, sBuf, 80); + fpss=strstr(sBuf," ~ ("); + if(fpss==NULL) fpss=&sBuf[strlen(sBuf)]; + sprintf(fpss, " ~ (%d FPS)", FPSCount); + SetWindowText(hwnd, sBuf); + } // reset FPSCount=0; time = tmp; @@ -346,35 +356,32 @@ static void CountFPS() } } -static void LimitFrameCount(int delay) + +static void LimitFrameCount(DWORD delay) { - static DWORD time = 0xFFFFFFFF; - extern void do_slow(int); - DWORD tmp; - tmp = GetTickCount(); - if((tmp - time) > (DWORD)delay) { - time = tmp; - } - else - Sleep(tmp - time); - //do_sslow(tmp - time); + static DWORD oldtime=(*pGetTickCount)(); + DWORD newtime; + newtime = (*pGetTickCount)(); + // use '<' and not '<=' to avoid the risk of sleeping forever.... + if(newtime < oldtime+delay) (*pSleep)(oldtime+delay-newtime); + oldtime = newtime; } -static BOOL SkipFrameCount(int delay) +static BOOL SkipFrameCount(DWORD delay) { - static DWORD time = 0xFFFFFFFF; - DWORD tmp; - tmp = GetTickCount(); - if((tmp - time) > (DWORD)delay) { - time = tmp; - return FALSE; - } - return TRUE; + static DWORD oldtime=(*pGetTickCount)(); + DWORD newtime; + newtime = (*pGetTickCount)(); + // use '<' and not '<=' to avoid the risk of sleeping forever.... + if(newtime < oldtime+delay) return TRUE; + oldtime = newtime; + return FALSE; + } BOOL dxwCore::HandleFPS() { - if(dwFlags2 & SHOWFPS) CountFPS(); + if(dwFlags2 & (SHOWFPS|SHOWFPSOVERLAY)) CountFPS(hWnd); if(dwFlags2 & LIMITFPS) LimitFrameCount(dxw.MaxFPS); if(dwFlags2 & SKIPFPS) if(SkipFrameCount(dxw.MaxFPS)) return TRUE; return FALSE; @@ -407,7 +414,7 @@ DWORD dxwCore::GetTickCount(void) dwNextRealTick=(*pGetTickCount)(); dwTick=(dwNextRealTick-dwLastRealTick); - TimeShift=GetTimeShift(); + TimeShift=GetHookInfo()->TimeShift; dwTick = TimeShifter(dwTick, TimeShift); dwLastFakeTick += dwTick; dwLastRealTick = dwNextRealTick; @@ -416,11 +423,46 @@ DWORD dxwCore::GetTickCount(void) DWORD dxwCore::StretchTime(DWORD dwTimer) { - TimeShift=GetTimeShift(); + TimeShift=GetHookInfo()->TimeShift; dwTimer = TimeShifter(dwTimer, -TimeShift); return dwTimer; } +void dxwCore::GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime) +{ + DWORD dwTick; + DWORD dwCurrentTick; + FILETIME CurrFileTime; + static DWORD dwStartTick=0; + static DWORD dwUpdateTick=0; + static FILETIME StartFileTime; + extern DXWNDSTATUS *pStatus; + + if(dwStartTick==0) { + SYSTEMTIME StartingTime; + // first time through, initialize & return true time + dwStartTick = (*pGetTickCount)(); + (*pGetSystemTime)(&StartingTime); + SystemTimeToFileTime(&StartingTime, &StartFileTime); + *lpSystemTimeAsFileTime = StartFileTime; + } + else { + dwCurrentTick=(*pGetTickCount)(); + dwTick=(dwCurrentTick-dwStartTick); + TimeShift=GetHookInfo()->TimeShift; + dwTick = TimeShifter(dwTick, TimeShift); + // From MSDN: Contains a 64-bit value representing the number of + // 100-nanosecond intervals since January 1, 1601 (UTC). + // So, since 1mSec = 10.000 * 100nSec, you still have to multiply by 10.000. + CurrFileTime.dwHighDateTime = StartFileTime.dwHighDateTime; // wrong !!!! + CurrFileTime.dwLowDateTime = StartFileTime.dwLowDateTime + (10000 * dwTick); // wrong !!!! + *lpSystemTimeAsFileTime=CurrFileTime; + // reset to avoid time jumps on TimeShift changes... + StartFileTime = CurrFileTime; + dwStartTick = dwCurrentTick; + } +} + void dxwCore::GetSystemTime(LPSYSTEMTIME lpSystemTime) { DWORD dwTick; @@ -442,7 +484,7 @@ void dxwCore::GetSystemTime(LPSYSTEMTIME lpSystemTime) else { dwCurrentTick=(*pGetTickCount)(); dwTick=(dwCurrentTick-dwStartTick); - TimeShift=GetTimeShift(); + TimeShift=GetHookInfo()->TimeShift; dwTick = TimeShifter(dwTick, TimeShift); // From MSDN: Contains a 64-bit value representing the number of // 100-nanosecond intervals since January 1, 1601 (UTC). @@ -456,6 +498,35 @@ void dxwCore::GetSystemTime(LPSYSTEMTIME lpSystemTime) } } +void dxwCore::ShowFPS(HDC xdc) +{ + char sBuf[81]; + static DWORD dwTimer = 0; + static int corner = 0; + static int x, y; + static DWORD color; + + if((*pGetTickCount)()-dwTimer > 4000){ + RECT rect; + dwTimer = (*pGetTickCount)(); + corner = dwTimer % 4; + color=0xFF0000; // blue + (*pGetClientRect)(hWnd, &rect); + switch (corner) { + case 0: x=10; y=10; break; + case 1: x=rect.right-60; y=10; break; + case 2: x=rect.right-60; y=rect.bottom-20; break; + case 3: x=10; y=rect.bottom-20; break; + } + } + + SetTextColor(xdc,color); + //SetBkMode(xdc, TRANSPARENT); + SetBkMode(xdc, OPAQUE); + sprintf(sBuf, "FPS: %d", GetHookInfo()->FPSCount); + TextOut(xdc, x, y, sBuf, strlen(sBuf)); +} + void dxwCore::ShowFPS(LPDIRECTDRAWSURFACE lpdds) { HDC xdc; // the working dc @@ -466,16 +537,8 @@ void dxwCore::ShowFPS(LPDIRECTDRAWSURFACE lpdds) static DWORD color; if((*pGetTickCount)()-dwTimer > 4000){ - if(!dwTimer) srand ((*pGetTickCount)()); dwTimer = (*pGetTickCount)(); - //corner = rand() % 4; corner = dwTimer % 4; - //color = ((0x80 + (rand() % 0x80))) + - // ((0x80 + (rand() % 0x80))<<8) + - // ((0x80 + (rand() % 0x80))<<16); - // color = rand() % 0x1000000; - //color = RGB(rand()%0x100, rand()%0x100, rand()%0x100); - //color = RGB(dwTimer%0x100, dwTimer%0x100, dwTimer%0x100); color=0xFF0000; // blue switch (corner) { case 0: x=10; y=10; break; @@ -489,7 +552,7 @@ void dxwCore::ShowFPS(LPDIRECTDRAWSURFACE lpdds) SetTextColor(xdc,color); //SetBkMode(xdc, TRANSPARENT); SetBkMode(xdc, OPAQUE); - sprintf(sBuf, "FPS: %d", DxWndStatus.FPSCount); + sprintf(sBuf, "FPS: %d", GetHookInfo()->FPSCount); TextOut(xdc, x, y, sBuf, strlen(sBuf)); lpdds->ReleaseDC(xdc); } diff --git a/dll/dxwcore.hpp b/dll/dxwcore.hpp index c051c12..1e31358 100644 --- a/dll/dxwcore.hpp +++ b/dll/dxwcore.hpp @@ -41,8 +41,10 @@ public: // methods void SetPrimarySurface(void); void ResetPrimarySurface(void); void GetSystemTime(LPSYSTEMTIME lpSystemTime); + void GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime); DWORD StretchTime(DWORD); void ShowFPS(LPDIRECTDRAWSURFACE); + void ShowFPS(HDC); char *GetTSCaption(int); char *GetTSCaption(void); @@ -72,6 +74,9 @@ public: // simple data variables //BOOL IsWithinDDraw; // flag to avoid double intervention at ddraw & GDI level BOOL IsGDIPalette; char *CustomOpenGLLib; + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY palPalEntry[256]; // Implementation protected: diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index 5a61ec7..13d227a 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -120,14 +120,14 @@ int GetHookStatus(DXWNDSTATUS *s) return HookStatus; } -void SetHookStatus(DXWNDSTATUS *s) +DXWNDSTATUS *GetHookInfo() { - *pStatus=*s; + return pStatus; } -int GetTimeShift() +void SetFPS(int fps) { - return pStatus->iTimeShift; + pStatus->FPSCount=fps; } LRESULT CALLBACK HookProc(int ncode, WPARAM wparam, LPARAM lparam) @@ -171,7 +171,7 @@ LRESULT CALLBACK HookProc(int ncode, WPARAM wparam, LPARAM lparam) pStatus->IsFullScreen=FALSE; pStatus->hWnd=hwnd; pStatus->dwPid=GetProcessId(GetCurrentProcess()); - pStatus->iTimeShift=pMapping[i].InitTS; + pStatus->TimeShift=pMapping[i].InitTS; DxWndStatus = *pStatus; HookInit(&pMapping[i], hwnd); } diff --git a/dll/dxwnd.def b/dll/dxwnd.def index c8da73a..2b4fd5a 100644 --- a/dll/dxwnd.def +++ b/dll/dxwnd.def @@ -5,4 +5,4 @@ EXPORTS EndHook @3 GetDllVersion @4 GetHookStatus @5 - SetHookStatus @6 + GetHookInfo @6 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index ed13ce260509d5fed1b5cf39b4396d2f7868ea82..d0414af9a258b7958ca01499e2dce21d8be2a2cb 100644 GIT binary patch literal 34304 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 keep the original call address return NULL; } @@ -76,7 +47,63 @@ void HookOpenGLLibs(char *module, char *customlib) if(tmp) pglScissor = (glScissor_Type)tmp; tmp = HookAPI(module, customlib, NULL, "glGetIntegerv", extglGetIntegerv); if(tmp) pglGetIntegerv = (glGetIntegerv_Type)tmp; + tmp = HookAPI(module, customlib, NULL, "glDrawBuffer", extglDrawBuffer); + if(tmp) pglDrawBuffer = (glDrawBuffer_Type)tmp; return; } +void WINAPI extglViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + RECT client; + //if (dxw.dwFlags2 & HANDLEFPS) if(dxw.HandleFPS()) return; + (*pGetClientRect)(dxw.GethWnd(), &client); + OutTraceD("glViewport: declared pos=(%d,%d) size=(%d,%d)\n", x, y, width, height); + if(IsDebug) OutTrace("glViewport: DEBUG win=(%d,%d) screen=(%d,%d)\n", + client.right, client.bottom, dxw.GetScreenWidth(), dxw.GetScreenHeight()); + x = (x * (GLint)client.right) / (GLint)dxw.GetScreenWidth(); + y = (y * (GLint)client.bottom) / (GLint)dxw.GetScreenHeight(); + width = (width * (GLint)client.right) / (GLint)dxw.GetScreenWidth(); + height = (height * (GLint)client.bottom) / (GLint)dxw.GetScreenHeight(); + OutTraceD("glViewport: remapped pos=(%d,%d) size=(%d,%d)\n", x, y, width, height); + (*pglViewport)(x, y, width, height); +} + +void WINAPI extglScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + RECT client; + //if (dxw.dwFlags2 & HANDLEFPS) if(dxw.HandleFPS()) return; + (*pGetClientRect)(dxw.GethWnd(), &client); + OutTraceD("glScissor: declared pos=(%d,%d) size=(%d,%d)\n", x, y, width, height); + x = (x * (GLint)client.right) / (GLint)dxw.GetScreenWidth(); + y = (y * (GLint)client.bottom) / (GLint)dxw.GetScreenHeight(); + width = (width * (GLint)client.right) / (GLint)dxw.GetScreenWidth(); + height = (height * (GLint)client.bottom) / (GLint)dxw.GetScreenHeight(); + OutTraceD("glScissor: remapped pos=(%d,%d) size=(%d,%d)\n", x, y, width, height); + (*pglScissor)(x, y, width, height); +} + +void WINAPI extglGetIntegerv(GLenum pname, GLint *params) +{ + (*pglGetIntegerv)(pname, params); + OutTraceD("glGetIntegerv: pname=%d\n", pname); +} + +void WINAPI extglDrawBuffer(GLenum mode) +{ + if (IsDebug) OutTrace("glDrawBuffer: mode=%x\n", mode); + // handle FPS only to backbuffer updates (if stereo, on left backbuffer...) + // using the frontbuffer seems less reliable: Return to Castle Wolfenstein doesn't use it at all! + if (dxw.dwFlags2 & HANDLEFPS){ + switch (mode){ + //case GL_FRONT_LEFT: + case GL_BACK_LEFT: + //case GL_FRONT: + case GL_BACK: + case GL_LEFT: + case GL_FRONT_AND_BACK: + if(dxw.HandleFPS()) return; + } + } + (*pglDrawBuffer)(mode); +} diff --git a/dll/glhook.h b/dll/glhook.h index 304a081..7373db5 100644 --- a/dll/glhook.h +++ b/dll/glhook.h @@ -6,11 +6,33 @@ extern void HookOpenGLLibs(char *, char *); typedef void (WINAPI *glViewport_Type)(GLint, GLint, GLsizei, GLsizei); typedef void (WINAPI *glScissor_Type)(GLint, GLint, GLsizei, GLsizei); typedef void (WINAPI *glGetIntegerv_Type)(GLenum, GLint *); +typedef void (WINAPI *glFinish_Type)(void); +typedef void (WINAPI *glFlush_Type)(void); +typedef void (WINAPI *glDrawBuffer_Type)(GLenum); extern void WINAPI extglViewport(GLint, GLint, GLsizei, GLsizei); extern void WINAPI extglScissor(GLint, GLint, GLsizei, GLsizei); extern void WINAPI extglGetIntegerv(GLenum, GLint *); +extern void WINAPI extglFinish(void); +extern void WINAPI extglFlush(void); +extern void WINAPI extglDrawBuffer(GLenum); -extern glViewport_Type pglViewport; -extern glScissor_Type pglScissor; -extern glGetIntegerv_Type pglGetIntegerv; \ No newline at end of file +#ifdef DXWDECLARATIONS +#undef DXWEXTERN +#undef DXWINITIALIZED +#define DXWEXTERN +#define DXWINITIALIZED = NULL +#else +#undef DXWEXTERN +#undef DXWINITIALIZED +#define DXWEXTERN extern +#define DXWINITIALIZED +#endif + +// GDI32.dll: +DXWEXTERN glViewport_Type pglViewport; +DXWEXTERN glScissor_Type pglScissor; +DXWEXTERN glGetIntegerv_Type pglGetIntegerv; +//DXWEXTERN glFinish_Type pglFinish; +//DXWEXTERN glFlush_Type pglFlush; +DXWEXTERN glDrawBuffer_Type pglDrawBuffer; \ No newline at end of file diff --git a/dll/hd3d.cpp b/dll/hd3d.cpp index 485bd9c..f4126d3 100644 --- a/dll/hd3d.cpp +++ b/dll/hd3d.cpp @@ -11,6 +11,7 @@ typedef HRESULT (WINAPI *EnumAdapterModes8_Type)(void *, UINT, UINT, D3DDISPLAYM typedef HRESULT (WINAPI *EnumAdapterModes9_Type)(void *, UINT, D3DFORMAT ,UINT, D3DDISPLAYMODE *); typedef HRESULT (WINAPI *GetAdapterDisplayMode_Type)(void *, UINT, D3DDISPLAYMODE *); typedef HRESULT (WINAPI *GetDisplayMode_Type)(void *, D3DDISPLAYMODE *); +typedef HRESULT (WINAPI *Present_Type)(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *); void* WINAPI extDirect3DCreate8(UINT); void* WINAPI extDirect3DCreate9(UINT); @@ -20,6 +21,7 @@ HRESULT WINAPI extEnumAdapterModes8(void *, UINT, UINT , D3DDISPLAYMODE *); HRESULT WINAPI extEnumAdapterModes9(void *, UINT, D3DFORMAT, UINT , D3DDISPLAYMODE *); HRESULT WINAPI extGetAdapterDisplayMode(void *, UINT, D3DDISPLAYMODE *); HRESULT WINAPI extGetDisplayMode(void *, D3DDISPLAYMODE *); +HRESULT WINAPI extPresent(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *); extern char *ExplainDDError(DWORD); @@ -31,6 +33,8 @@ EnumAdapterModes8_Type pEnumAdapterModes8; EnumAdapterModes9_Type pEnumAdapterModes9; GetAdapterDisplayMode_Type pGetAdapterDisplayMode; GetDisplayMode_Type pGetDisplayMode; +Present_Type pPresent; + DWORD dwD3DVersion; int HookDirect3D(char *module, int version){ @@ -123,6 +127,15 @@ HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresentationParamet return D3D_OK; } +HRESULT WINAPI extPresent(void *pd3dd, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion) +{ + if (IsDebug) OutTrace("Present\n"); + // frame counter handling.... + if (dxw.HandleFPS()) return D3D_OK; + // proxy .... + return (*pPresent)(pd3dd, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion); +} + HRESULT WINAPI extGetDisplayMode(void *lpd3d, D3DDISPLAYMODE *pMode) { HRESULT res; @@ -243,21 +256,25 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, pReset=NULL; // to avoid assert condition SetHook((void *)(*(DWORD *)lpd3d + 32), extGetDisplayMode, (void **)&pGetDisplayMode, "GetDisplayMode(D8)"); SetHook((void *)(**(DWORD **)ppd3dd + 56), extReset, (void **)&pReset, "Reset(D8)"); + SetHook((void *)(**(DWORD **)ppd3dd + 60), extPresent, (void **)&pPresent, "Present(D8)"); } else { void *pReset; pReset=NULL; // to avoid assert condition SetHook((void *)(*(DWORD *)lpd3d + 32), extGetDisplayMode, (void **)&pGetDisplayMode, "GetDisplayMode(D9)"); SetHook((void *)(**(DWORD **)ppd3dd + 64), extReset, (void **)&pReset, "Reset(D9)"); + SetHook((void *)(**(DWORD **)ppd3dd + 68), extPresent, (void **)&pPresent, "Present(D9)"); } - DxWndStatus.IsFullScreen = dxw.IsFullScreen(); - DxWndStatus.DXVersion=(short)dwD3DVersion; - DxWndStatus.Height=(short)dxw.GetScreenHeight(); - DxWndStatus.Width=(short)dxw.GetScreenWidth(); - DxWndStatus.ColorDepth=(short)dxw.VirtualPixelFormat.dwRGBBitCount; - SetHookStatus(&DxWndStatus); + GetHookInfo()->IsFullScreen = dxw.IsFullScreen(); + GetHookInfo()->DXVersion=(short)dwD3DVersion; + GetHookInfo()->Height=(short)dxw.GetScreenHeight(); + GetHookInfo()->Width=(short)dxw.GetScreenWidth(); + GetHookInfo()->ColorDepth=(short)dxw.VirtualPixelFormat.dwRGBBitCount; return 0; } +// to do: +// hook IDirect3DDevice9::CreateAdditionalSwapChain to intercept Present method on further Swap Chains +// hook SetCursorPosition ShowCursor to handle cursor diff --git a/dll/hddraw.cpp b/dll/hddraw.cpp index c3cb504..83331ed 100644 --- a/dll/hddraw.cpp +++ b/dll/hddraw.cpp @@ -398,12 +398,11 @@ void InitScreenParameters() // set default VGA mode 800x600 // should I make it configurable ? (640x480, 800x600, 1024x768) dxw.SetScreenSize(); // 800 x 600 by default - DxWndStatus.Height=(short)dxw.GetScreenHeight(); - DxWndStatus.Width=(short)dxw.GetScreenWidth(); - DxWndStatus.ColorDepth=0; // unknown - DxWndStatus.DXVersion=0; // unknown - DxWndStatus.isLogging=(dxw.dwTFlags & OUTTRACE); - SetHookStatus(&DxWndStatus); + GetHookInfo()->Height=(short)dxw.GetScreenHeight(); + GetHookInfo()->Width=(short)dxw.GetScreenWidth(); + GetHookInfo()->ColorDepth=0; // unknown + GetHookInfo()->DXVersion=0; // unknown + GetHookInfo()->isLogging=(dxw.dwTFlags & OUTTRACE); if(!EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &CurrDevMode)){ OutTraceE("EnumDisplaySettings: ERROR err=%d at %d\n", GetLastError(), __LINE__); @@ -679,7 +678,7 @@ void do_slow(int delay) TranslateMessage (&uMsg); DispatchMessage (&uMsg); } - Sleep(1); + (*pSleep)(1); } } @@ -1492,9 +1491,8 @@ HRESULT WINAPI extSetDisplayMode(int version, LPDIRECTDRAW lpdd, } dxw.SetScreenSize(dwwidth, dwheight); - DxWndStatus.Height=(short)dxw.GetScreenHeight(); - DxWndStatus.Width=(short)dxw.GetScreenWidth(); - SetHookStatus(&DxWndStatus); + GetHookInfo()->Height=(short)dxw.GetScreenHeight(); + GetHookInfo()->Width=(short)dxw.GetScreenWidth(); AdjustWindowFrame(dxw.GethWnd(), dwwidth, dwheight); if(dxw.dwFlags1 & EMULATESURFACE){ @@ -1632,8 +1630,7 @@ HRESULT WINAPI extSetCooperativeLevel(void *lpdd, HWND hwnd, DWORD dwflags) if(res) OutTraceE("SetCooperativeLevel: ERROR err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); - DxWndStatus.IsFullScreen=dxw.IsFullScreen(); - SetHookStatus(&DxWndStatus); + GetHookInfo()->IsFullScreen=dxw.IsFullScreen(); // WARN: GP500 was setting cooperative level against the desktop! This can be partially // intercepted by hooking the GetDesktopWindow() call, but in windowed mode this can't be @@ -1646,9 +1643,6 @@ HRESULT WINAPI extSetCooperativeLevel(void *lpdd, HWND hwnd, DWORD dwflags) else dxw.SethWnd(hwnd); // save the good one } - - DxWndStatus.IsFullScreen=dxw.IsFullScreen(); - SetHookStatus(&DxWndStatus); return res; } @@ -1676,11 +1670,10 @@ HRESULT WINAPI extCreateSurfaceEmu(int dxversion, CreateSurface_Type pCreateSurf ddsd.dwSize = CurSize; if(ddsd.dwFlags & DDSD_CAPS && ddsd.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE){ - DxWndStatus.Height=(short)dxw.GetScreenHeight(); - DxWndStatus.Width=(short)dxw.GetScreenWidth(); - DxWndStatus.ColorDepth=(short)dxw.VirtualPixelFormat.dwRGBBitCount; - DxWndStatus.DXVersion=dxversion; - SetHookStatus(&DxWndStatus); + GetHookInfo()->Height=(short)dxw.GetScreenHeight(); + GetHookInfo()->Width=(short)dxw.GetScreenWidth(); + GetHookInfo()->ColorDepth=(short)dxw.VirtualPixelFormat.dwRGBBitCount; + GetHookInfo()->DXVersion=dxversion; lpServiceDD = lpdd; // v2.1.87 dxw.dwPrimarySurfaceCaps = ddsd.ddsCaps.dwCaps; @@ -1875,10 +1868,8 @@ HRESULT WINAPI extCreateSurfaceEmu(int dxversion, CreateSurface_Type pCreateSurf if(ddsd.ddpfPixelFormat.dwRGBBitCount==8){ // use a better condition here.... if(lpDDP==NULL){ // should link here to the GDI palette? See Hyperblade.... - //static PALETTEENTRY Palette[256]; - extern PALETTEENTRY *GDIPalette; - //res=(*pCreatePalette)(lpdd, DDPCAPS_ALLOW256|DDPCAPS_8BIT|DDPCAPS_INITIALIZE, Palette, &lpDDP, NULL); - res=(*pCreatePalette)(lpdd, DDPCAPS_ALLOW256|DDPCAPS_8BIT|DDPCAPS_INITIALIZE, GDIPalette, &lpDDP, NULL); + dxw.palNumEntries=256; + res=(*pCreatePalette)(lpdd, DDPCAPS_ALLOW256|DDPCAPS_8BIT|DDPCAPS_INITIALIZE, dxw.palPalEntry, &lpDDP, NULL); if (res) { OutTraceE("CreateSurface: CreatePalette ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); return res; @@ -1914,11 +1905,10 @@ HRESULT WINAPI extCreateSurfaceDir(int dxversion, CreateSurface_Type pCreateSurf ddsd.dwSize = dwSize; if(ddsd.dwFlags & DDSD_CAPS && ddsd.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE){ - DxWndStatus.Height=(short)dxw.GetScreenHeight(); - DxWndStatus.Width=(short)dxw.GetScreenWidth(); - DxWndStatus.ColorDepth=(short)dxw.VirtualPixelFormat.dwRGBBitCount; - DxWndStatus.DXVersion=dxversion; - SetHookStatus(&DxWndStatus); + GetHookInfo()->Height=(short)dxw.GetScreenHeight(); + GetHookInfo()->Width=(short)dxw.GetScreenWidth(); + GetHookInfo()->ColorDepth=(short)dxw.VirtualPixelFormat.dwRGBBitCount; + GetHookInfo()->DXVersion=dxversion; dxw.dwPrimarySurfaceCaps = ddsd.ddsCaps.dwCaps; dxw.dwBackBufferCount = (ddsd.dwFlags & DDSD_BACKBUFFERCOUNT) ? ddsd.dwBackBufferCount : 0; lpServiceDD = lpdd; // v2.1.87 @@ -2446,7 +2436,7 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, work on my PC. */ if(res==DDERR_UNSUPPORTED){ - if (dxw.dwFlags2 & SHOWFPS) dxw.ShowFPS(lpddssrc); + if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(lpddssrc); res=(*pBlt)(lpDDSEmu_Prim, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx); if (res) BlitError(res, lpsrcrect, &destrect, __LINE__); } @@ -2481,7 +2471,7 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, lpDDSSource = lpdds; } - if (dxw.dwFlags2 & SHOWFPS) dxw.ShowFPS(lpDDSSource); + if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(lpDDSSource); res=(*pBlt)(lpDDSEmu_Prim, &destrect, lpDDSSource, &emurect, DDBLT_WAIT, 0); if (res==DDERR_NOCLIPLIST){ RenewClipper(lpDD, lpDDSEmu_Prim); @@ -2677,7 +2667,7 @@ HRESULT WINAPI extWaitForVerticalBlank(LPDIRECTDRAW lpdd, DWORD dwflags, HANDLE if(!(dxw.dwFlags1 & SAVELOAD)) return (*pWaitForVerticalBlank)(lpdd, dwflags, hevent); tmp = GetTickCount(); if((time - tmp) > 32) time = tmp; - Sleep(time - tmp); + (*pSleep)(time - tmp); if(step) time += 16; else time += 17; step ^= 1; @@ -2900,7 +2890,7 @@ HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFAC lpDDSSource=lpdds; } - if (dxw.dwFlags2 & SHOWFPS) dxw.ShowFPS(lpDDSSource); + if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(lpDDSSource); res=(*pBlt)(lpDDSEmu_Prim, &screen, lpDDSSource, &rect, DDBLT_WAIT, 0); if (res==DDERR_NOCLIPLIST) { RenewClipper(lpDD, lpDDSEmu_Prim); diff --git a/dll/syslibs.cpp b/dll/syslibs.cpp index 9bdccb9..e3f130c 100644 --- a/dll/syslibs.cpp +++ b/dll/syslibs.cpp @@ -1825,6 +1825,7 @@ BOOL WINAPI extGDIBitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH nWDest= nWidth; nHDest= nHeight; dxw.MapRect(&nXDest, &nYDest, &nWDest, &nHDest); + if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(hdcDest); res=(*pGDIStretchBlt)(hdcDest, nXDest, nYDest, nWDest, nHDest, hdcSrc, nXSrc, nYSrc, nWidth, nHeight, dwRop); } else { @@ -1847,6 +1848,7 @@ BOOL WINAPI extGDIPatBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH if (dxw.IsFullScreen() && (OBJ_DC == GetObjectType(hdcDest))){ int nWDest, nHDest; dxw.MapRect(&nXDest, &nYDest, &nWDest, &nHDest); + if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(hdcDest); res=(*pGDIPatBlt)(hdcDest, nXDest, nYDest, nWDest, nHDest, dwRop); } else { @@ -1869,6 +1871,7 @@ BOOL WINAPI extGDIStretchBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, in // to do: what happend if StretchBlt is applied on screen DC ? + if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(hdcDest); res=(*pGDIStretchBlt)(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, nWSrc, nHSrc, dwRop); if(!res) OutTraceE("GDI.StretchBlt: ERROR err=%d at %d\n", GetLastError(), __LINE__); return res; @@ -1888,7 +1891,7 @@ static DWORD dwThrdId; void AutoRefresh(HDC hdc) { while(1){ - Sleep(10); + (*pSleep)(10); (*pInvalidateRect)(dxw.GethWnd(), 0, FALSE); } } @@ -2257,17 +2260,6 @@ BOOL WINAPI extInvalidateRect(HWND hwnd, RECT *lpRect, BOOL bErase) // maps the GDI palette to the buffered DirectDraw one. This fixes the screen // output for "Dementia" (a.k.a. "Armed & Delirious"). -typedef struct tagDxWndLOGPALETTE - { - WORD palVersion; - WORD palNumEntries; - PALETTEENTRY palPalEntry[ 256 ]; - } DxWndLOGPALETTE; - -DxWndLOGPALETTE MyPal; -PALETTEENTRY *GDIPalette = MyPal.palPalEntry; -//BOOL G_bForceBackground; - HPALETTE WINAPI extGDICreatePalette(CONST LOGPALETTE *plpal) { HPALETTE ret; @@ -2277,14 +2269,14 @@ HPALETTE WINAPI extGDICreatePalette(CONST LOGPALETTE *plpal) OutTraceD("GDI.CreatePalette: plpal=%x version=%x NumEntries=%x\n", plpal, plpal->palVersion, plpal->palNumEntries); ret=(*pGDICreatePalette)(plpal); if(IsDebug){ - OutTraceD("PalEntry[%x]= ", MyPal.palNumEntries); - for(idx=0; idxpalPalEntry[idx]); + OutTraceD("PalEntry[%x]= ", plpal->palNumEntries); + for(idx=0; idxpalNumEntries; idx++) OutTraceD("(%x)", plpal->palPalEntry[idx]); OutTraceD("\n"); } - MyPal.palVersion=plpal->palVersion; - MyPal.palNumEntries=plpal->palNumEntries; - if(MyPal.palNumEntries>256) MyPal.palNumEntries=256; - for(idx=0; idxpalPalEntry[idx]; + dxw.palVersion=plpal->palVersion; + dxw.palNumEntries=plpal->palNumEntries; + if(dxw.palNumEntries>256) dxw.palNumEntries=256; + for(idx=0; idxpalPalEntry[idx]; OutTraceD("GDI.CreatePalette: hPalette=%x\n", ret); return ret; } @@ -2314,12 +2306,12 @@ UINT WINAPI extRealizePalette(HDC hdc) // should be cleaned up a little.... // maybe not: now both Diablo & Dementia colors are working... if(dxw.dwFlags1 & EMULATESURFACE) - mySetPalette(0, MyPal.palNumEntries, MyPal.palPalEntry); + mySetPalette(0, dxw.palNumEntries, dxw.palPalEntry); // DEBUGGING if(IsDebug){ int idx; - OutTraceD("PaletteEntries[%x]= ", MyPal.palNumEntries); - for(idx=0; idxwHour, lpSystemTime->wMinute, lpSystemTime->wSecond, lpSystemTime->wMilliseconds); } @@ -2522,7 +2514,7 @@ void WINAPI extGetLocalTime(LPSYSTEMTIME lpLocalTime) SYSTEMTIME SystemTime; dxw.GetSystemTime(&SystemTime); SystemTimeToTzSpecificLocalTime(NULL, &SystemTime, lpLocalTime); - OutTrace("GetLocalTime: %02d:%02d:%02d.%03d\n", + if (IsDebug) OutTrace("GetLocalTime: %02d:%02d:%02d.%03d\n", lpLocalTime->wHour, lpLocalTime->wMinute, lpLocalTime->wSecond, lpLocalTime->wMilliseconds); } @@ -2533,7 +2525,7 @@ UINT_PTR WINAPI extSetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPRO // and the lesser the pauses must be lasting! Shift operations are reverted in // GetSystemTime vs. Sleep or SetTimer uShiftedElapse = dxw.StretchTime(uElapse); - OutTrace("SetTimer: elapse=%d->%d timeshift=%d\n", uElapse, uShiftedElapse, dxw.TimeShift); + if (IsDebug) OutTrace("SetTimer: elapse=%d->%d timeshift=%d\n", uElapse, uShiftedElapse, dxw.TimeShift); return (*pSetTimer)(hWnd, nIDEvent, uShiftedElapse, lpTimerFunc); } @@ -2548,7 +2540,7 @@ VOID WINAPI extSleep(DWORD dwMilliseconds) else dwNewDelay = INFINITE-1; // maximum allowed !!! } } - OutTrace("Sleep: msec=%d->%d timeshift=%d\n", dwMilliseconds, dwNewDelay, dxw.TimeShift); + if (IsDebug) OutTrace("Sleep: msec=%d->%d timeshift=%d\n", dwMilliseconds, dwNewDelay, dxw.TimeShift); (*pSleep)(dwNewDelay); } @@ -2563,16 +2555,22 @@ DWORD WINAPI extSleepEx(DWORD dwMilliseconds, BOOL bAlertable) else dwNewDelay = INFINITE-1; // maximum allowed !!! } } - OutTrace("SleepEx: msec=%d->%d alertable=%x, timeshift=%d\n", dwMilliseconds, dwNewDelay, bAlertable, dxw.TimeShift); + if (IsDebug) OutTrace("SleepEx: msec=%d->%d alertable=%x, timeshift=%d\n", dwMilliseconds, dwNewDelay, bAlertable, dxw.TimeShift); return (*pSleepEx)(dwNewDelay, bAlertable); } DWORD WINAPI exttimeGetTime(void) { - OutTrace("timeGetTime\n"); + if (IsDebug) OutTrace("timeGetTime\n"); return dxw.GetTickCount(); } +void WINAPI extGetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime) +{ + if (IsDebug) OutTrace("GetSystemTimeAsFileTime\n"); + dxw.GetSystemTimeAsFileTime(lpSystemTimeAsFileTime); +} + int WINAPI extShowCursor(BOOL bShow) { static int iFakeCounter; diff --git a/dll/syslibs.h b/dll/syslibs.h index a922808..64efc04 100644 --- a/dll/syslibs.h +++ b/dll/syslibs.h @@ -43,6 +43,7 @@ typedef BOOL (WINAPI *GetDiskFreeSpaceA_Type)(LPCSTR, LPDWORD, LPDWORD, LPDWORD, typedef void (WINAPI *GetLocalTime_Type)(LPSYSTEMTIME); typedef FARPROC (WINAPI *GetProcAddress_Type)(HMODULE, LPCSTR); typedef void (WINAPI *GetSystemTime_Type)(LPSYSTEMTIME); +typedef void (WINAPI *GetSystemTimeAsFileTime_Type)(LPFILETIME); typedef DWORD (WINAPI *GetTickCount_Type)(void); typedef HMODULE (WINAPI *LoadLibraryA_Type)(LPCTSTR); typedef HMODULE (WINAPI *LoadLibraryExA_Type)(LPCTSTR, HANDLE, DWORD); @@ -142,6 +143,7 @@ DXWEXTERN GetDiskFreeSpaceA_Type pGetDiskFreeSpaceA DXWINITIALIZED; DXWEXTERN GetLocalTime_Type pGetLocalTime DXWINITIALIZED; DXWEXTERN GetProcAddress_Type pGetProcAddress DXWINITIALIZED; DXWEXTERN GetSystemTime_Type pGetSystemTime DXWINITIALIZED; +DXWEXTERN GetSystemTimeAsFileTime_Type pGetSystemTimeAsFileTime DXWINITIALIZED; DXWEXTERN GetTickCount_Type pGetTickCount DXWINITIALIZED; DXWEXTERN LoadLibraryA_Type pLoadLibraryA DXWINITIALIZED; DXWEXTERN LoadLibraryExA_Type pLoadLibraryExA DXWINITIALIZED; @@ -234,6 +236,7 @@ extern BOOL WINAPI extGetDiskFreeSpaceA(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWO extern void WINAPI extGetLocalTime(LPSYSTEMTIME); extern FARPROC WINAPI extGetProcAddress(HMODULE, LPCSTR); extern void WINAPI extGetSystemTime(LPSYSTEMTIME); +extern void WINAPI extGetSystemTimeAsFileTime(LPFILETIME); extern DWORD WINAPI extGetTickCount(void); extern HMODULE WINAPI extLoadLibraryA(LPCTSTR); extern HMODULE WINAPI extLoadLibraryExA(LPCTSTR, HANDLE, DWORD); diff --git a/host/Resource.h b/host/Resource.h index 5a7b00c..4199552 100644 --- a/host/Resource.h +++ b/host/Resource.h @@ -119,6 +119,10 @@ #define IDC_HOOKOPENGL 1080 #define IDC_WALLPAPERMODE 1081 #define IDC_HOOKGDI 1082 +#define IDC_SHOWFPSOVERLAY 1083 +#define IDC_COMBOTS 1085 +#define IDC_LIST2 1088 +#define IDC_LISTTS 1088 #define ID_MODIFY 32771 #define ID_DELETE 32772 #define ID_ADD 32773 @@ -158,9 +162,9 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 -#define _APS_NEXT_RESOURCE_VALUE 151 +#define _APS_NEXT_RESOURCE_VALUE 152 #define _APS_NEXT_COMMAND_VALUE 32816 -#define _APS_NEXT_CONTROL_VALUE 1080 +#define _APS_NEXT_CONTROL_VALUE 1089 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/host/StatusDialog.cpp b/host/StatusDialog.cpp index 0722c99..98bb27e 100644 --- a/host/StatusDialog.cpp +++ b/host/StatusDialog.cpp @@ -28,7 +28,7 @@ BEGIN_MESSAGE_MAP(CStatusDialog, CDialog) ON_WM_TIMER() END_MESSAGE_MAP() -#define IDTIMER 1 +#define IDStatusTIMER 1 // CStatusDialog message handlers @@ -47,17 +47,17 @@ void CStatusDialog::OnTimer(UINT_PTR nIDEvent) extern char *GetTSCaption(int); CDialog::OnTimer(nIDEvent); - DxStatus=GetHookStatus(NULL); + DxStatus=GetHookStatus(&DxWndStatus); switch (DxStatus){ case DXW_IDLE: IconId=IDI_DXIDLE; Status="DISABLED"; break; case DXW_ACTIVE: IconId=IDI_DXWAIT; Status="READY"; break; case DXW_RUNNING: IconId=IDI_DXRUN; Status="RUNNING"; break; + default: IconId=IDI_DXIDLE; Status="???"; break; } GetDllVersion(DllVersion); - DxWndStatus.Status=DxStatus; if(DxStatus==DXW_RUNNING){ - GetHookStatus(&DxWndStatus); + Target=&pTargets[DxWndStatus.TaskIdx]; sprintf_s(sMsg, 1024, @@ -70,13 +70,13 @@ void CStatusDialog::OnTimer(UINT_PTR nIDEvent) DxWndStatus.Width, DxWndStatus.Height, DxWndStatus.ColorDepth, DxWndStatus.IsFullScreen ? "Yes":"No", DxWndStatus.DXVersion, DxWndStatus.isLogging?"ON":"OFF"); - if(Target->flags2 & SHOWFPS){ + if(Target->flags2 & (SHOWFPS|SHOWFPSOVERLAY)){ sprintf(sMsgBuf, "\nFPS = %d", DxWndStatus.FPSCount); strcat(sMsg, sMsgBuf); } if(Target->flags2 & TIMESTRETCH){ - if(DxWndStatus.iTimeShift>=-8 && DxWndStatus.iTimeShift<=8){ - sprintf(sMsgBuf, "\nTime speed: %s", GetTSCaption(DxWndStatus.iTimeShift)); + if(DxWndStatus.TimeShift>=-8 && DxWndStatus.TimeShift<=8){ + sprintf(sMsgBuf, "\nTime speed %s", GetTSCaption(DxWndStatus.TimeShift)); strcat(sMsg, sMsgBuf); } } @@ -91,7 +91,7 @@ BOOL CStatusDialog::OnInitDialog() { CDialog::OnInitDialog(); - SetTimer(IDTIMER, 1000, NULL); + SetTimer(IDStatusTIMER, 1000, NULL); // TODO: Add extra initialization here @@ -103,7 +103,7 @@ void CStatusDialog::OnOK() { // TODO: Add your specialized code here and/or call the base class - KillTimer(IDTIMER); + KillTimer(IDStatusTIMER); // stop timer CDialog::OnOK(); diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index 95b46f1..d0e25d7 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -79,6 +79,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_LimitFPS = FALSE; m_SkipFPS = FALSE; m_ShowFPS = FALSE; + m_ShowFPSOverlay = FALSE; m_TimeStretch = FALSE; m_HookOpenGL = FALSE; m_InitX = 0; @@ -92,11 +93,42 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_SizX = 800; m_SizY = 600; m_MaxFPS = 0; - m_InitTS = 0; + m_InitTS = 8; //}}AFX_DATA_INIT + } + +//void TSCombo::OnEnable(BOOL bEnable) +//{ +// CComboBox::OnEnable(bEnable); +// +// // Get edit control which happens to be the first child window +// CEdit* pEdit = (CEdit*)GetWindow(GW_CHILD); +// +// // Always have the edit box enabled +// pEdit->EnableWindow(TRUE); +// +// // Set read only is combo box is disabled +// pEdit->SetReadOnly(!bEnable); +//} + +BOOL CTargetDlg::OnInitDialog() +{ + + CListBox *TSList; + CDialog::OnInitDialog(); + int i; + extern char *GetTSCaption(int); + //MessageBoxEx(0, "Init Dialog", "Warning", MB_OK | MB_ICONEXCLAMATION, NULL); + TSList=(CListBox *)this->GetDlgItem(IDC_LISTTS); + TSList->ResetContent(); + for(i=-8; i<=8; i++) TSList->AddString(GetTSCaption(i)); + TSList->SetCurSel(m_InitTS); + return TRUE; +} + void CTargetDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); @@ -164,6 +196,7 @@ void CTargetDlg::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_LIMITFPS, m_LimitFPS); DDX_Check(pDX, IDC_SKIPFPS, m_SkipFPS); DDX_Check(pDX, IDC_SHOWFPS, m_ShowFPS); + DDX_Check(pDX, IDC_SHOWFPSOVERLAY, m_ShowFPSOverlay); DDX_Check(pDX, IDC_TIMESTRETCH, m_TimeStretch); DDX_Check(pDX, IDC_HOOKOPENGL, m_HookOpenGL); DDX_Text(pDX, IDC_INITX, m_InitX); @@ -177,7 +210,8 @@ void CTargetDlg::DoDataExchange(CDataExchange* pDX) DDX_Text(pDX, IDC_SIZX, m_SizX); DDX_Text(pDX, IDC_SIZY, m_SizY); DDX_Text(pDX, IDC_MAXFPS, m_MaxFPS); - DDX_Text(pDX, IDC_INITTS, m_InitTS); + //DDX_Text(pDX, IDC_INITTS, m_InitTS); + DDX_LBIndex(pDX, IDC_LISTTS, m_InitTS); //}}AFX_DATA_MAP } diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 3f07ecd..c027c2d 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -84,6 +84,7 @@ public: BOOL m_SkipFPS; BOOL m_LimitFPS; BOOL m_ShowFPS; + BOOL m_ShowFPSOverlay; BOOL m_TimeStretch; BOOL m_HookOpenGL; int m_InitX; @@ -151,6 +152,8 @@ public: afx_msg void OnBnClickedHandleExceptions(); afx_msg void OnEnChangeMaxx(); afx_msg void OnEnChangeInitx(); +public: + virtual BOOL OnInitDialog(); }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ Will insert additional declarations immediately before the previous line. diff --git a/host/TimeSliderDlg.cpp b/host/TimeSliderDlg.cpp index e88546e..172938a 100644 --- a/host/TimeSliderDlg.cpp +++ b/host/TimeSliderDlg.cpp @@ -33,13 +33,12 @@ BEGIN_MESSAGE_MAP(CTimeSliderDialog, CDialog) ON_WM_TIMER() END_MESSAGE_MAP() -#define IDTIMER 1 +#define IDTimeSiderTIMER 2 // CTimeSliderDialog message handlers void CTimeSliderDialog::OnTimer(UINT_PTR nIDEvent) { - DXWNDSTATUS Status; CSliderCtrl *Slider; CStatic *Text; char sMsg[81]; @@ -51,22 +50,21 @@ void CTimeSliderDialog::OnTimer(UINT_PTR nIDEvent) CDialog::OnTimer(nIDEvent); i_TimeSlider=Slider->GetPos(); - if(GetHookStatus(&Status)!=DXW_RUNNING) { + if(GetHookStatus(NULL)!=DXW_RUNNING) { Slider->SetPos(0); Text->SetWindowTextA("idle"); return; } if(i_TimeSlider==iLastPos){ // no change, check for keyboard input changes - i_TimeSlider=Status.iTimeShift; + i_TimeSlider=GetHookInfo()->TimeShift; if(i_TimeSlider != iLastPos) Slider->SetPos(i_TimeSlider); } else { // slider position changed, set the new value if (i_TimeSlider < -8) i_TimeSlider=-8; if (i_TimeSlider > 8) i_TimeSlider= 8; - Status.iTimeShift=i_TimeSlider; - SetHookStatus(&Status); + GetHookInfo()->TimeShift=i_TimeSlider; } iLastPos = i_TimeSlider; sprintf(sMsg, "Time speed %s", GetTSCaption(i_TimeSlider)); @@ -77,14 +75,12 @@ BOOL CTimeSliderDialog::OnInitDialog() { CSliderCtrl *Slider; CDialog::OnInitDialog(); - DXWNDSTATUS Status; - GetHookStatus(&Status); Slider=(CSliderCtrl *)this->GetDlgItem(IDC_TIMESLIDER); Slider->SetRange(-8, +8, 0); Slider->SetTicFreq(1); - Slider->SetPos(Status.iTimeShift); - SetTimer(IDTIMER, 1000, NULL); + Slider->SetPos(GetHookInfo()->TimeShift); + SetTimer(IDTimeSiderTIMER, 1000, NULL); // TODO: Add extra initialization here @@ -97,12 +93,10 @@ void CTimeSliderDialog::OnOK() // stop timer // MessageBoxEx(0, "Stopping Time Slider dialog", "Warning", MB_OK | MB_ICONEXCLAMATION, NULL); - KillTimer(IDTIMER); + KillTimer(IDTimeSiderTIMER); DXWNDSTATUS Status; - GetHookStatus(&Status); - Status.iTimeShift=i_TimeSlider; - SetHookStatus(&Status); + GetHookInfo()->TimeShift=i_TimeSlider; CDialog::OnOK(); } diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index c912e6bccc2a259acc08a844c0e76ee2c95adf06..8b1afcf68ea16ef81549a2b3142c3c7e4de9ec50 100644 GIT binary patch delta 2823 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 diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index 78c9950..35460fc 100644 --- a/host/dxwndhost.rc +++ b/host/dxwndhost.rc @@ -298,15 +298,15 @@ BEGIN CONTROL "Limit available resources",IDC_LIMITRESOURCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,184,93,10 CONTROL "Force win resize",IDC_FORCEWINRESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,134,98,9 CONTROL "fix WM_NCHITTEST",IDC_FIXNCHITTEST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,94,98,9 - CONTROL "Limit",IDC_LIMITFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,123,28,9 - EDITTEXT IDC_MAXFPS,635,126,26,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - CONTROL "Skip",IDC_SKIPFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,133,27,9 - LTEXT "delay (msec)",IDC_STATIC,591,128,43,8 - GROUPBOX "Frame per Second",IDC_STATIC,549,111,120,58 - CONTROL "Show FPS",IDC_SHOWFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,145,52,9 - GROUPBOX "",IDC_STATIC,555,119,110,24 + CONTROL "Limit",IDC_LIMITFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,98,28,9 + EDITTEXT IDC_MAXFPS,635,101,26,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + CONTROL "Skip",IDC_SKIPFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,108,27,9 + LTEXT "delay (msec)",IDC_STATIC,591,103,43,8 + GROUPBOX "Frame per Second",IDC_STATIC,549,84,120,86 + CONTROL "Show FPS on title",IDC_SHOWFPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,120,72,9 + GROUPBOX "",IDC_STATIC,555,94,110,24 CONTROL "Hide multi-monitor config.",IDC_HIDEMULTIMONITOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,433,144,98,9 - CONTROL "Time Stretch - init val:",IDC_TIMESTRETCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,155,75,9 + CONTROL "Time Stretch - initial:",IDC_TIMESTRETCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,140,75,9 GROUPBOX "OpenGL",IDC_STATIC,549,3,120,50 CONTROL "Hook OpenGL",IDC_HOOKOPENGL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,14,98,9 EDITTEXT IDC_OPENGLLIB,554,36,108,12,ES_AUTOHSCROLL @@ -316,7 +316,8 @@ BEGIN GROUPBOX "GDI Handling",IDC_STATIC,172,144,120,62 CONTROL "Hook GDI",IDC_HOOKGDI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,154,102,9 CONTROL "Disable setting gamma ramp",IDC_DISABLEGAMMARAMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,174,102,9 - EDITTEXT IDC_INITTS,635,152,14,12,ES_AUTOHSCROLL,WS_EX_RIGHT + CONTROL "Show FPS overlay",IDC_SHOWFPSOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,557,130,72,9 + LISTBOX IDC_LISTTS,635,131,26,27,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP END IDD_STATUS DIALOGEX 0, 0, 186, 95 diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index 4bb561051134fc0e4f883a17ec24a745c0e72163..9d72990d994b56864e1df5576ed0097d43169536 100644 GIT binary patch delta 17668 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 delta 2394 zcmZ9N4NOy46vyvvUmp)BQVWy2vRKw0&a*n1^iryQ)E~e!!P_obh!CZ8E))b zImWy#F4Y|FAZU8)kNbpKmg*X||1ckes*ynF9C z=bm%jUdjE7W`B;2GsXmg$H15d9SMy1{r-UL*wWAWfz48%W&s~7go0%lc|s^1X!xjG zY8g{z{o$KWhp%!iWZouvR=TV!MOP+UZUP;xOdyA(Bd;P+yKYD`mQ$6Sy}SVm>A(ua zoEd26U?*9@Zy}q6z8y>k*K0f;#Xd zs0XWn3p4_;(o<-gz|)`^tfqt73F<&p3-=7_xk-H_dLNhhOpL@v80CvuEVBZLqr$~% zTkK*jeJM>N-x#;<42Cbzj`(UN4m~X9r$dz!gimBI1kP9*V|a|p4CN&X`)lNep9kZS zg25Q)bcm(`M2iQmFWdtJ_?mdjyI};S*Aud5JO?(r~jr z@|n3TcKT{O-Aj3vXVSLRJ$xeFPTdo;8^(2D2=N(NYNbPIjnr`>o38g+==u?femR{% zt|KNI&Niu4J|kCqZ!hEYp|6%|(|_&ma#QQQQ3cm2Be@5Rs>SxPLLFU+^xob6;NN<> z;jnVOXRnMkdrzBa_nl1A-^&U_l6LoH(dHAi)N?#T2<+q@mzl;`35&s=X0xYQ8(Yh^ z;~>nzL0HY0dg;_v?&*|y2JJsDj>+#@Xs`sff$mpZwcpK0%1Mbdsqr9P&x;BMx?ftqlkH^Bv6*ZJ zQlyYoz)mNUCYL>iw3&@}F3ZO$o(^d)D?&=mfHW6hLURTy$4EKa0!WZ~hW7+wC42_|t3NLKQ%@JoIjV2v6;7>cGc{XMF=C0`gd|+Y z;^6-ZntdcCe*I;BvE}k;5`+wTW8vXY^fGDfqGYvIn&OlEDrG)0XoO~YbaBWha56bAK%PxsQvNYKF>om6^&nixL=xGS* zg}y~gZ#I-3XtK+DFy`izU4JZiwgwFJQ>Cr@6KAwDzhK70NXdciYC?*_MH%#cXAS+f zDut|hhEODVChcGNerT>3+S)X)ySYra7^WuDElYx382u;+uLa^Dj{!=UTy-~}*YGK$ zIUy1(m_O-4sRpI580E2vwXD1})S4^aS>k|6P>>yw3kWQ5IqKHx7 z)`j$UeE?08^BqT38I6YgVV99ciY!#t-=w`szb?SQ`G-*TC zZz>Hn_ja!-!6o4NAdZ)aRFzsMe&0l{cT1^m`I01YQHuG;0~Zj_f0GU=Dde7#DYk|i zrC+9NQ%p&31(d|SGI|E*A}$rG{}ay1eyhS$k;VrqMSgW)UeR`<-3ML(FM=-c5_lQB z0$v5L0ipXwuswjbTl7_a@&qo3%5)l1Y}9zCDEeVNA=|BTO0JK4m`v7CGG)`ZowfhZ zHCnxP1s%?t7w%`7c5R$PWeel=0c(OU;=_5=KGW>^Bas&)!u3?&+xT%3>~q{I`xmpf B=-8 && dlg.m_InitTS<=8) + TargetMaps[i].InitTS = dlg.m_InitTS-8; + else + MessageBoxEx(0, "Bad InitTS", "Warning", MB_OK, NULL); CListCtrl& listctrl = GetListCtrl(); listitem.mask = LVIF_TEXT; listitem.iItem = i; @@ -959,6 +965,7 @@ DWORD WINAPI TrayIconUpdate(CSystemTray *Tray) case DXW_IDLE: IconId=IDI_DXIDLE; Status="DISABLED"; break; case DXW_ACTIVE: IconId=IDI_DXWAIT; Status="READY"; break; case DXW_RUNNING: IconId=IDI_DXRUN; Status="RUNNING"; break; + default: IconId=IDI_DXIDLE; Status="???"; break; } if (DxStatus != DXW_RUNNING){ TickCount=0;