diff --git a/Include/dxwnd.h b/Include/dxwnd.h index b1cdc9f..aa7bac4 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -79,6 +79,7 @@ // third flags DWORD dxw.dwFlags3: #define FORCEHOOKOPENGL 0x00000001 // loads OpenGL32.dll and hooks it +#define MARKBLIT 0x00000002 // higlights the blit to primary surface operation by surroundig the rect in color // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general diff --git a/build/dxwnd.dll b/build/dxwnd.dll index c98171c..5872506 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4254ded87b12758c82865086e3af480673f216886af7b44d71477cc06be75705 -size 311296 +oid sha256:2d27bd94b95b7ca824b05b37e72626d7250273d4c55512eac260ea59ed8cb2cb +size 314880 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index bd40e8b..df79c93 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c299cf7d537a05c2aefa8e169e5b25abe44450db15171d2bf9a0f66dbb976df0 -size 501760 +oid sha256:c518035d2eea78a680be7ee136ab574ad087f8f346f923be2e43b1ba9fa5b3ee +size 502272 diff --git a/build/dxwnd.ini b/build/dxwnd.ini index ab52bad..f9aa226 100644 --- a/build/dxwnd.ini +++ b/build/dxwnd.ini @@ -1,11 +1,10 @@ [target] -title0=007 NightFire -path0=D:\Games\007_NightFire\Bond.exe +title0=1602 A.D. +path0=C:\Games\1602 A.D\1602.exe module0= -opengllib0= ver0=0 -flag0=16418 -flagg0=1207959552 +flag0=679608354 +flagg0=0 tflag0=0 initx0=0 inity0=0 @@ -17,15 +16,13 @@ posx0=50 posy0=50 sizx0=800 sizy0=600 -maxfps0=0 -title1=Age of Empires -path1=D:\Games\Age of Empires\EMPIRES.EXE +title1=7th Legion +path1=D:\Games\7th_Legion\LEGION.EXE module1= -opengllib1= ver1=0 -flag1=134217762 -flagg1=0 -tflag1=0 +flag1=402669607 +flagg1=539056144 +tflag1=12 initx1=0 inity1=0 minx1=0 @@ -36,15 +33,13 @@ posx1=50 posy1=50 sizx1=800 sizy1=600 -maxfps1=0 -title2=Age of Empires 2 -path2=D:\Games\Age of Empires 2\empires2.exe +title2=A10 Cuba +path2=D:\Games\A10\A10Cuba.exe module2= -opengllib2= ver2=0 -flag2=134219814 -flagg2=1744896000 -tflag2=3 +flag2=34 +flagg2=0 +tflag2=258 initx2=0 inity2=0 minx2=0 @@ -55,15 +50,13 @@ posx2=50 posy2=50 sizx2=800 sizy2=600 -maxfps2=0 -title3=Age of Wonders -path3=D:\Games\Age of Wonder\AoW.exe +title3=Achtung Spitfire +path3=D:\Games\Achtung Spitfire\ASP95.EXE module3= -opengllib3= -ver3=1 -flag3=-2013265888 -flagg3=537919489 -tflag3=259 +ver3=0 +flag3=536870946 +flagg3=0 +tflag3=70 initx3=0 inity3=0 minx3=0 @@ -74,15 +67,13 @@ posx3=50 posy3=50 sizx3=800 sizy3=600 -maxfps3=0 -title4=Age of Empires 3 -path4=D:\Games\Age of Empires III\age3.exe +title4=Actua Soccer 3 +path4=D:\Games\ActuaSoccer3\Soccer3.exe module4= -opengllib4= ver4=0 -flag4=679477248 -flagg4=134217728 -tflag4=0 +flag4=671088674 +flagg4=256 +tflag4=263 initx4=0 inity4=0 minx4=0 @@ -93,20 +84,13 @@ posx4=50 posy4=50 sizx4=800 sizy4=600 -maxfps4=0 -initts0=0 -initts1=0 -initts2=-2 -initts3=0 -initts4=0 -title5=Agent Armstrong -path5=D:\Games\Agent Armstrong\ARMSTRNG.EXE +title5=AfterLife +path5=d:\Games\ALIFE\ALIFE.EXE module5= -opengllib5= ver5=1 -flag5=134217730 -flagg5=4194304 -tflag5=275 +flag5=142606370 +flagg5=160 +tflag5=259 initx5=0 inity5=0 minx5=0 @@ -117,16 +101,13 @@ posx5=50 posy5=50 sizx5=800 sizy5=600 -maxfps5=0 -initts5=0 -title6=Bomber Babe -path6=D:\Games\Ludonic\Bomberbabe.exe +title6=Age of Empires +path6=D:\Games\Age of Empires\EMPIRES.EXE module6= -opengllib6= ver6=0 -flag6=536870912 -flagg6=8 -tflag6=0 +flag6=402655267 +flagg6=536940560 +tflag6=3 initx6=0 inity6=0 minx6=0 @@ -137,15 +118,12 @@ posx6=50 posy6=50 sizx6=800 sizy6=600 -maxfps6=0 -initts6=0 -title7=BomberMan.exe -path7=D:\Games\Bomber World\BomberMan.exe +title7=Age of Empires 2 +path7=D:\Games\Age of Empires 2\empires2.exe module7= -opengllib7= -ver7=7 -flag7=0 -flagg7=134217728 +ver7=0 +flag7=134217762 +flagg7=20480 tflag7=3 initx7=0 inity7=0 @@ -157,16 +135,13 @@ posx7=50 posy7=50 sizx7=800 sizy7=600 -maxfps7=0 -initts7=0 -title8=Chariots of War -path8=D:\Games\Chariots of War\CoW.exe +title8=Age of Empires the Rise of Rome +path8=D:\Games\Age of Empires\EMPIRESX.EXE module8= -opengllib8= ver8=0 -flag8=16417 -flagg8=134217793 -tflag8=3 +flag8=134217762 +flagg8=81920 +tflag8=0 initx8=0 inity8=0 minx8=0 @@ -177,16 +152,13 @@ posx8=50 posy8=50 sizx8=800 sizy8=600 -maxfps8=0 -initts8=0 -title9=Command & Conquer 3 -path9=D:\Games\Command & Conquer 3\RetailExe\1.0\cnc3game.dat -module9= -opengllib9= -ver9=9 -flag9=33 -flagg9=134217728 -tflag9=0 +title9=Age of Wonders +path9=D:\Games\Age of Wonders\AoW.exe +module9=VideoP.dpl vcl30.dpl +ver9=0 +flag9=813826050 +flagg9=537919505 +tflag9=3 initx9=0 inity9=0 minx9=0 @@ -197,16 +169,13 @@ posx9=50 posy9=50 sizx9=800 sizy9=600 -maxfps9=0 -initts9=0 -title10=Command & Conquer(tm) Tiberian Sun -path10=D:\Games\Command & Conquer The First Decade\Command & Conquer(tm) Tiberian Sun(tm)\SUN\Game.exe -module10=users32 kernel32 gdi32 -opengllib10= +title10=Airline Tycoon Evolution +path10=D:\Games\Airline.Tycoon.Evolution\AT.EXE +module10= ver10=0 -flag10=-1475338206 -flagg10=4194304 -tflag10=0 +flag10=402653217 +flagg10=5242880 +tflag10=259 initx10=0 inity10=0 minx10=0 @@ -217,15 +186,12 @@ posx10=50 posy10=50 sizx10=800 sizy10=600 -maxfps10=0 -initts10=0 -title11=Daikatana -path11=D:\Games\Daikatana_FullRip\daikatana.exe +title11=Alien Cabal 95 +path11=D:\Games\Alien_cabal\ACabal95.exe module11= -opengllib11= ver11=0 -flag11=838860802 -flagg11=671219712 +flag11=71303200 +flagg11=0 tflag11=3 initx11=0 inity11=0 @@ -237,16 +203,13 @@ posx11=50 posy11=50 sizx11=800 sizy11=600 -maxfps11=0 -initts11=0 -title12=Dark Judgement -path12=D:\Games\Dark Judgement\Dark Judgement.EXE +title12=Alien vs. Predator +path12=C:\Games\Alien vs Predator\AvP.exe module12= -opengllib12= ver12=0 -flag12=67 -flagg12=1744830464 -tflag12=3 +flag12=8224 +flagg12=0 +tflag12=130 initx12=0 inity12=0 minx12=0 @@ -257,36 +220,30 @@ posx12=50 posy12=50 sizx12=800 sizy12=600 -maxfps12=0 -initts12=0 -title13=Diablo -path13=D:\Games\Diablo\Diablo.exe +title13=Aliens Nations Demo +path13=C:\Games\aademo\Bin\AA.exe module13= -opengllib13= ver13=0 -flag13=1212153890 -flagg13=1073807360 -tflag13=7 +flag13=134217762 +flagg13=0 +tflag13=0 initx13=0 inity13=0 minx13=0 miny13=0 maxx13=0 maxy13=0 -posx13=50 -posy13=50 +posx13=0 +posy13=0 sizx13=800 sizy13=600 -maxfps13=0 -initts13=0 -title14=Doom3.exe -path14=D:\Games\Doom 3\Doom3.exe +title14=America +path14=D:\Games\America\america.exe module14= -opengllib14= ver14=0 -flag14=0 -flagg14=134217728 -tflag14=259 +flag14=134234150 +flagg14=16 +tflag14=0 initx14=0 inity14=0 minx14=0 @@ -297,15 +254,12 @@ posx14=50 posy14=50 sizx14=800 sizy14=600 -maxfps14=0 -initts14=0 -title15=Dream Aquarium -path15=D:\Program Files (x86)\Dream Aquarium\Dream_Aquarium.scr +title15=American McGee's Alice Demo +path15=D:\Games\American McGee's Alice Demo\alice.exe module15= -opengllib15= -ver15=9 -flag15=545259521 -flagg15=987136 +ver15=10 +flag15=268435458 +flagg15=-2147352576 tflag15=0 initx15=0 inity15=0 @@ -317,16 +271,13 @@ posx15=50 posy15=50 sizx15=800 sizy15=600 -maxfps15=200 -initts15=8 -title16=Dungeon Keeper 2 -path16=D:\Games\Dungeon Keeper 2\DKII.exe +title16=Ancient Conquest +path16=D:\Games\Ancient Conquest\ANCIENT.EXE module16= -opengllib16= ver16=0 -flag16=134217890 -flagg16=1648365568 -tflag16=3 +flag16=142606370 +flagg16=1048576 +tflag16=258 initx16=0 inity16=0 minx16=0 @@ -337,16 +288,13 @@ posx16=50 posy16=50 sizx16=800 sizy16=600 -maxfps16=50 -initts16=0 -title17=Dungeon Keeper 2 (GOG) -path17=D:\Games\Dungeon Keeper 2 (GOG)\DKII.EXE -module17= -opengllib17= -ver17=0 -flag17=134234146 +title17=Ancient Evil +path17=C:\Games\Ancient Evil\RPG.EXE +module17=DDW16.DLL +ver17=1 +flag17=-2013249497 flagg17=0 -tflag17=3 +tflag17=2 initx17=0 inity17=0 minx17=0 @@ -357,15 +305,12 @@ posx17=50 posy17=50 sizx17=800 sizy17=600 -maxfps17=0 -initts17=0 -title18=Evil Dead Hail to the King -path18=D:\Games\Evil Dead\EvilDead\EvilDead.exe +title18=Ancient Evil Demo +path18=C:\Games\Ancient Evil Curse of the Snake Cult\aecsc-demo.exe module18= -opengllib18= -ver18=0 -flag18=39 -flagg18=134217728 +ver18=1 +flag18=134242336 +flagg18=0 tflag18=0 initx18=0 inity18=0 @@ -377,15 +322,12 @@ posx18=50 posy18=50 sizx18=800 sizy18=600 -maxfps18=0 -initts18=0 -title19=Fighting Force -path19=D:\Games\Fighting Force\FFORCE.EXE +title19=Armymen +path19=C:\Games\armymen\Armymen.exe module19= -opengllib19= ver19=0 -flag19=18 -flagg19=671088640 +flag19=134218274 +flagg19=1 tflag19=0 initx19=0 inity19=0 @@ -397,14 +339,11 @@ posx19=50 posy19=50 sizx19=800 sizy19=600 -maxfps19=0 -initts19=0 -title20=ForsakenHW.exe -path20=D:\Games\Forsaken\ForsakenHW.exe +title20=ArmyMen 2 +path20=C:\Games\army2\ArmyMen2.exe module20= -opengllib20= ver20=0 -flag20=0 +flag20=402653730 flagg20=0 tflag20=0 initx20=0 @@ -417,15 +356,12 @@ posx20=50 posy20=50 sizx20=800 sizy20=600 -maxfps20=0 -initts20=0 -title21=ForsakenSW.exe -path21=D:\Games\Forsaken\ForsakenSW.exe +title21=Atomic Bomberman +path21=C:\Games\Atomic Bomberman\BM95.EXE module21= -opengllib21= ver21=0 -flag21=134217728 -flagg21=4 +flag21=2 +flagg21=0 tflag21=0 initx21=0 inity21=0 @@ -437,16 +373,13 @@ posx21=50 posy21=50 sizx21=800 sizy21=600 -maxfps21=0 -initts21=0 -title22=Garshasp -path22=D:\Games\Garshasp\distro\Garshasp.exe +title22=Axis & Allies Iron Blitz Edition +path22=C:\Games\Axis & Allies Iron Blitz Edition\Axis & Allies\AxisAllies.exe module22= -opengllib22= -ver22=9 -flag22=0 -flagg22=134348800 -tflag22=3 +ver22=0 +flag22=-2147483614 +flagg22=0 +tflag22=0 initx22=0 inity22=0 minx22=0 @@ -457,16 +390,13 @@ posx22=50 posy22=50 sizx22=800 sizy22=600 -maxfps22=0 -initts22=0 -title23=Grand Prix Legends (ITA) -path23=D:\Games\gpl\gpl.exe +title23=Baldies +path23=C:\Games\Baldies for Win95\baldies.exe module23= -opengllib23= -ver23=1 -flag23=1241513984 -flagg23=1207959624 -tflag23=11 +ver23=0 +flag23=537010210 +flagg23=0 +tflag23=0 initx23=0 inity23=0 minx23=0 @@ -475,18 +405,15 @@ maxx23=0 maxy23=0 posx23=50 posy23=50 -sizx23=0 -sizy23=0 -maxfps23=0 -initts23=0 -title24=Hexen 2 (OpenGL) -path24=D:\Games\Hexen 2\GLH2.EXE +sizx23=800 +sizy23=600 +title24=Battle Arena Toshinden 2 +path24=D:\Games\Battle Arena Toshinden 2\T2.EXE module24= -opengllib24= ver24=0 -flag24=2 -flagg24=1180160 -tflag24=131 +flag24=134217761 +flagg24=134217808 +tflag24=3 initx24=0 inity24=0 minx24=0 @@ -497,16 +424,13 @@ posx24=50 posy24=50 sizx24=800 sizy24=600 -maxfps24=0 -initts24=0 -title25=Hitman - Codename 47 -path25=D:\Games\Hitman - Codename 47\Hitman.Exe +title25=Beasts & Bumpkins +path25=C:\Games\Beasts and Bumpkins\BEASTS.EXE module25= -opengllib25= -ver25=7 -flag25=0 -flagg25=16 -tflag25=0 +ver25=0 +flag25=2105890 +flagg25=0 +tflag25=2 initx25=0 inity25=0 minx25=0 @@ -517,15 +441,12 @@ posx25=50 posy25=50 sizx25=800 sizy25=600 -maxfps25=0 -initts25=0 -title26=Hitman 2 Silent Assassin -path26=D:\Games\Hitman 2 Silent Assassin\hitman2.exe +title26=Beats of Rage +path26=C:\Games\BOR\BeatsOfRage.exe module26= -opengllib26= -ver26=8 -flag26=2 -flagg26=81920 +ver26=0 +flag26=537002018 +flagg26=0 tflag26=0 initx26=0 inity26=0 @@ -537,16 +458,13 @@ posx26=50 posy26=50 sizx26=800 sizy26=600 -maxfps26=0 -initts26=-2 -title27=Homeworld 2 -path27=D:\Games\Homeworld2\Bin\Release\Homeworld2.exe -module27=Platform Objects -opengllib27= -ver27=12 -flag27=536870915 -flagg27=134414336 -tflag27=3 +title27=Beyond Good & Evil Demo +path27=C:\Games\Beyond Good & Evil\BGE.exe +module27= +ver27=0 +flag27=0 +flagg27=0 +tflag27=0 initx27=0 inity27=0 minx27=0 @@ -557,16 +475,13 @@ posx27=50 posy27=50 sizx27=800 sizy27=600 -maxfps27=0 -initts27=-4 -title28=kingpin.exe -path28=D:\Games\Kingpin (GOG)\kingpin.exe +title28=Black Moon Lune Noire +path28=C:\Games\Black Moon\Lune noire\Engine.exe module28= -opengllib28= -ver28=1 -flag28=0 -flagg28=537001985 -tflag28=3 +ver28=0 +flag28=262179 +flagg28=0 +tflag28=0 initx28=0 inity28=0 minx28=0 @@ -577,36 +492,30 @@ posx28=50 posy28=50 sizx28=800 sizy28=600 -maxfps28=0 -initts28=0 -title29=Kohan II Kings of War -path29=D:\Games\Kohan II Kings of War\k2.exe +title29=Blood Omen Legacy of Kain +path29=C:\Games\Blood Omen\KAIN.EXE module29= -opengllib29= -ver29=9 -flag29=134217746 +ver29=0 +flag29=49190 flagg29=0 tflag29=0 initx29=0 inity29=0 minx29=0 miny29=0 -maxx29=800 -maxy29=600 +maxx29=0 +maxy29=0 posx29=50 posy29=50 sizx29=800 sizy29=600 -maxfps29=0 -initts29=0 -title30=Lord of Magic Special Edition -path30=D:\Games\LoM\SIERRA\LOMSE\lomse.exe +title30=Bonkheads +path30=C:\Games\Bonkheads\Bonkheads.exe module30= -opengllib30= ver30=0 -flag30=16546 -flagg30=0 -tflag30=0 +flag30=262690 +flagg30=16 +tflag30=78 initx30=0 inity30=0 minx30=0 @@ -617,16 +526,13 @@ posx30=50 posy30=50 sizx30=800 sizy30=600 -maxfps30=0 -initts30=0 -title31=Lords of Magic Special Edition (GOG) -path31=D:\Games\Lords of Magic Special Edition (GOG)\lomse.exe +title31=Bubble Bobble 2 +path31=C:\Games\bubble2\BOBO2.EXE module31= -opengllib31= ver31=0 -flag31=134234274 -flagg31=2117632 -tflag31=3 +flag31=34 +flagg31=0 +tflag31=0 initx31=0 inity31=0 minx31=0 @@ -637,56 +543,47 @@ posx31=50 posy31=50 sizx31=800 sizy31=600 -maxfps31=50 -initts31=0 -title32=MDK 2 -path32=D:\Games\mdk2\mdk2Main.exe +title32=Bug! +path32=C:\Games\Bug\BUG!.EXE module32= -opengllib32= ver32=0 -flag32=2 -flagg32=-1609433087 -tflag32=3 +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 -maxfps32=0 -initts32=0 -title33=MessiahD3D.exe -path33=D:\Games\Messiah (GOG)\MessiahD3D.exe +title33=Caesar III +path33=C:\Games\Caesar III\c3.exe module33= -opengllib33= ver33=0 -flag33=813694978 -flagg33=138543105 -tflag33=3 +flag33=-2147475422 +flagg33=0 +tflag33=0 initx33=0 inity33=0 minx33=0 miny33=0 maxx33=0 maxy33=0 -posx33=0 -posy33=0 +posx33=50 +posy33=50 sizx33=800 sizy33=600 -maxfps33=0 -initts33=0 -title34=Miracle Garden (hacked version) -path34=D:\Games\Miracle Garden\Ææ¼£»¨Ô°\MG.exe +title34=Championship Manager 99-00 +path34=C:\Games\CM9900\cm9900.exe module34= -opengllib34= ver34=0 -flag34=34 -flagg34=1207959552 -tflag34=11 +flag34=10306 +flagg34=0 +tflag34=0 initx34=0 inity34=0 minx34=0 @@ -697,16 +594,13 @@ posx34=50 posy34=50 sizx34=800 sizy34=600 -maxfps34=0 -initts34=0 -title35=Miracle Garden (ufficial version) -path35=D:\Games\Miracle Garden\Ææ¼£»¨Ô°\MG2.exe +title35=Civilization Call to Power +path35=C:\Games\civctp\Civilization_Call_To_Power\ctp_program\ctp\civctp.exe module35= -opengllib35= ver35=0 -flag35=0 -flagg35=134217729 -tflag35=399 +flag35=545267746 +flagg35=0 +tflag35=0 initx35=0 inity35=0 minx35=0 @@ -717,14 +611,11 @@ posx35=50 posy35=50 sizx35=800 sizy35=600 -maxfps35=0 -initts35=0 -title36=Mission Humanity -path36=D:\Games\Mission Humanity\Mission Humanity\mh.exe +title36=Claw +path36=C:\Games\claw\clawexe.exe module36= -opengllib36= ver36=0 -flag36=-2147483598 +flag36=24610 flagg36=0 tflag36=0 initx36=0 @@ -737,16 +628,13 @@ posx36=50 posy36=50 sizx36=800 sizy36=600 -maxfps36=0 -initts36=0 -title37=Myst.exe -path37=D:\Games\Myst (GOG)\Myst.exe +title37=Commando's Behind Enemy Lines Demo +path37=C:\Games\Commando's Behind Enemy Lines Demo\COMANDOS\Comandos.exe module37= -opengllib37= ver37=0 -flag37=537001984 +flag37=1744838944 flagg37=0 -tflag37=3 +tflag37=64 initx37=0 inity37=0 minx37=0 @@ -757,16 +645,13 @@ posx37=50 posy37=50 sizx37=800 sizy37=600 -maxfps37=0 -initts37=0 -title38=Project IGI -path38=D:\Games\Project IGI\pc\IGI.exe +title38=Commandos II: Men of Courage +path38=C:\Games\Commandos II\comm2.exe module38= -opengllib38= ver38=0 -flag38=603996164 -flagg38=134217728 -tflag38=3 +flag38=-1207951008 +flagg38=0 +tflag38=0 initx38=0 inity38=0 minx38=0 @@ -777,16 +662,13 @@ posx38=50 posy38=50 sizx38=800 sizy38=600 -maxfps38=0 -initts38=0 -title39=Quake 2 -path39=D:\Games\QUAKE2\quake2.exe +title39=Crazy Taxy +path39=C:\Games\Crazy_Taxi\Crazy Taxi PC Version\crazy_taxi_pc.exe module39= -opengllib39= -ver39=0 -flag39=671088640 -flagg39=671219712 -tflag39=3 +ver39=8 +flag39=536870945 +flagg39=0 +tflag39=0 initx39=0 inity39=0 minx39=0 @@ -797,16 +679,13 @@ posx39=50 posy39=50 sizx39=800 sizy39=600 -maxfps39=0 -initts39=0 -title40=Quake 3 Arena -path40=D:\Games\Q3A\quake3.exe +title40=Crush! Deluxe +path40=C:\Games\Crush! Deluxe\CRUSHD.EXE module40= -opengllib40= ver40=0 -flag40=0 -flagg40=671220224 -tflag40=3 +flag40=134492706 +flagg40=0 +tflag40=0 initx40=0 inity40=0 minx40=0 @@ -817,36 +696,30 @@ posx40=50 posy40=50 sizx40=800 sizy40=600 -maxfps40=0 -initts40=0 -title41=SeriousSam.exe -path41=D:\Games\Serious Sam Demo\Bin\SeriousSam.exe +title41=Cybermercs +path41=C:\Games\cybermercs\cybermercs.exe module41= -opengllib41= -ver41=9 -flag41=0 -flagg41=134348801 -tflag41=3 +ver41=0 +flag41=134234146 +flagg41=16 +tflag41=0 initx41=0 inity41=0 minx41=0 miny41=0 maxx41=0 maxy41=0 -posx41=0 -posy41=0 -sizx41=640 -sizy41=480 -maxfps41=0 -initts41=0 -title42=Shattered Galaxy -path42=D:\Games\Shattered Galaxy\SG.exe +posx41=50 +posy41=50 +sizx41=800 +sizy41=600 +title42=Daikatana +path42=D:\Games\Daikatana\daikatana.exe module42= -opengllib42= -ver42=0 -flag42=34 -flagg42=134217728 -tflag42=0 +ver42=10 +flag42=806486530 +flagg42=537002497 +tflag42=259 initx42=0 inity42=0 minx42=0 @@ -857,16 +730,13 @@ posx42=50 posy42=50 sizx42=800 sizy42=600 -maxfps42=0 -initts42=0 -title43=Shadow Company +title43=Darius Gaiden +path43=C:\Games\Darius_gaiden\DARIUS.EXE module43= -opengllib43= -path43=D:\Games\shadow_company\shadow.exe -ver43=1 -flag43=33554432 -flagg43=134217728 -tflag43=35 +ver43=0 +flag43=536870946 +flagg43=0 +tflag43=0 initx43=0 inity43=0 minx43=0 @@ -877,16 +747,13 @@ posx43=50 posy43=50 sizx43=800 sizy43=600 -maxfps43=0 -initts43=0 -title44=Stranded 2 -path44=D:\Games\Stranded 2\StrandedII.exe +title44=Dark Colony the Council Wars +path44=C:\Games\darkcolony_council\dc\DC16.EXE module44= -opengllib44= ver44=0 -flag44=256 -flagg44=142622720 -tflag44=3 +flag44=268435462 +flagg44=0 +tflag44=0 initx44=0 inity44=0 minx44=0 @@ -897,16 +764,13 @@ posx44=50 posy44=50 sizx44=800 sizy44=600 -maxfps44=0 -initts44=0 -title45=The Grinch -path45=D:\Games\The Grinch\bin\TheGrinch.exe +title45=Darkstone +path45=C:\Games\darkstone\Darkstone.exe module45= -opengllib45= ver45=0 -flag45=536870914 -flagg45=-1476263936 -tflag45=3 +flag45=134234148 +flagg45=0 +tflag45=0 initx45=0 inity45=0 minx45=0 @@ -917,16 +781,13 @@ posx45=50 posy45=50 sizx45=800 sizy45=600 -maxfps45=0 -initts45=0 -title46=Total Immersion Racing -path46=D:\Games\TIR\game\TiR.exe +title46=Dave Mirra Freestyle BMX Demo +path46=C:\Games\Dave Mirra Freestyle BMX\NgBMXDemo.exe module46= -opengllib46= -ver46=7 -flag46=545259521 -flagg46=-402522111 -tflag46=3 +ver46=0 +flag46=8224 +flagg46=0 +tflag46=0 initx46=0 inity46=0 minx46=0 @@ -937,16 +798,13 @@ posx46=50 posy46=50 sizx46=800 sizy46=600 -maxfps46=0 -initts46=0 -title47=Total Annihilation Kingdoms -path47=D:\Games\Total Annihilation Kingdoms\Kingdoms.exe +title47=Daytona USA Deluxe +path47=C:\Games\Daytona USA Deluxe\DAYTONA USA Deluxe.exe module47= -opengllib47= ver47=0 -flag47=34 -flagg47=1207959552 -tflag47=263 +flag47=402661410 +flagg47=0 +tflag47=0 initx47=0 inity47=0 minx47=0 @@ -957,16 +815,13 @@ posx47=50 posy47=50 sizx47=800 sizy47=600 -maxfps47=0 -initts47=0 -title48=Unreal 2 the Awakening -path48=D:\Games\Unreal II the Awakening (2003)\System\Unreal2.exe +title48=Deadlock 2 +path48=C:\Games\deadlock2\DEADLOCK.EXE module48= -opengllib48= -ver48=8 -flag48=8224 -flagg48=134348800 -tflag48=3 +ver48=0 +flag48=-2012995550 +flagg48=0 +tflag48=0 initx48=0 inity48=0 minx48=0 @@ -977,16 +832,13 @@ posx48=50 posy48=50 sizx48=800 sizy48=600 -maxfps48=0 -initts48=0 -title49=Urban Assault -path49=D:\Games\Urban Assault\UA.EXE +title49=Deeper Dungeons 95 +path49=C:\Games\Keeper95\Deeper95.exe module49= -opengllib49= -ver49=7 -flag49=671238242 -flagg49=8388864 -tflag49=3 +ver49=0 +flag49=268460070 +flagg49=0 +tflag49=0 initx49=0 inity49=0 minx49=0 @@ -997,15 +849,12 @@ posx49=50 posy49=50 sizx49=800 sizy49=600 -maxfps49=0 -initts49=0 -title50=Urban Assault RIP -path50=D:\Games\Urban Assault RIP\UA.EXE +title50=Delta Force +path50=C:\Games\Delta Force\Df.exe module50= -opengllib50= ver50=0 -flag50=671236130 -flagg50=256 +flag50=34 +flagg50=0 tflag50=0 initx50=0 inity50=0 @@ -1017,16 +866,13 @@ posx50=50 posy50=50 sizx50=800 sizy50=600 -maxfps50=0 -initts50=0 -title51=Urban Assault XP -path51=D:\Games\Urban Assault RIP\Ua_xp.exe +title51=Dementia +path51=C:\Games\dementia\program\CRUX.EXE -h module51= -opengllib51= ver51=0 -flag51=671105058 -flagg51=256 -tflag51=0 +flag51=536887330 +flagg51=0 +tflag51=2 initx51=0 inity51=0 minx51=0 @@ -1037,15 +883,12 @@ posx51=50 posy51=50 sizx51=800 sizy51=600 -maxfps51=0 -initts51=0 -title52=Wargames -path52=D:\Games\wargames\wargames.exe +title52=Dethkarz +path52=D:\Games\DethKarz\Dethkarz.exe module52= -opengllib52= ver52=0 -flag52=268435490 -flagg52=-939524096 +flag52=0 +flagg52=0 tflag52=0 initx52=0 inity52=0 @@ -1057,16 +900,13 @@ posx52=50 posy52=50 sizx52=800 sizy52=600 -maxfps52=0 -initts52=0 -title53=WarWind -path53=D:\Games\WarWind\WW.EXE +title53=Devil Inside +path53=C:\Games\Devil Inside\Devil.exe module53= -opengllib53= ver53=0 -flag53=134234146 +flag53=32 flagg53=0 -tflag53=33 +tflag53=0 initx53=0 inity53=0 minx53=0 @@ -1077,16 +917,13 @@ posx53=50 posy53=50 sizx53=800 sizy53=600 -maxfps53=0 -initts53=0 -title54=WarWind 2 -path54=D:\Games\Warwind 2\WARWIND2.EXE -module54= -opengllib54= +title54=Diablo +path54=D:\Games\Diablo\Diablo.exe +module54=diabloui storm haigu smackw32 ver54=1 -flag54=134217762 -flagg54=0 -tflag54=322 +flag54=138428450 +flagg54=101711872 +tflag54=259 initx54=0 inity54=0 minx54=0 @@ -1097,16 +934,13 @@ posx54=50 posy54=50 sizx54=800 sizy54=600 -maxfps54=0 -initts54=0 -title55=Worms 2 Armageddon -path55=D:\Games\Worms 2 Armageddon\wa.exe +title55=Dink Smallwood (BAD) +path55=C:\Games\Dink SmallWood\Dink.exe module55= -opengllib55= ver55=0 -flag55=134217762 +flag55=546 flagg55=0 -tflag55=0 +tflag55=258 initx55=0 inity55=0 minx55=0 @@ -1117,36 +951,30 @@ posx55=50 posy55=50 sizx55=800 sizy55=600 -maxfps55=0 -initts55=0 -title56=YS Origin -path56=D:\Games\Ys Origin\FALCOM\YSO_WIN\YSO_WIN.patched.exe +title56=Doom 64 Absolution +path56=D:\Games\Doom 64\Bin\Absolution.exe module56= -opengllib56= -ver56=0 -flag56=135266354 -flagg56=134217728 -tflag56=0 +ver56=8 +flag56=0 +flagg56=86016 +tflag56=259 initx56=0 inity56=0 minx56=0 miny56=0 -maxx56=800 -maxy56=600 +maxx56=0 +maxy56=0 posx56=50 posy56=50 sizx56=800 sizy56=600 -maxfps56=0 -initts56=0 -title57=Premier Manager 97 -path57=D:\Games\Premier_Manager_97\MANAGER.EXE +title57=Drakan +path57=C:\Games\Drakan\drakan.exe module57= -opengllib57= -ver57=1 -flag57=2 -flagg57=135266304 -tflag57=3 +ver57=0 +flag57=536887328 +flagg57=0 +tflag57=0 initx57=0 inity57=0 minx57=0 @@ -1157,8 +985,3481 @@ posx57=50 posy57=50 sizx57=800 sizy57=600 +title58=Dream Aquarium +path58=D:\Program Files\Dream Aquarium\Dream_Aquarium.scr +module58= +ver58=9 +flag58=679477249 +flagg58=303104 +tflag58=256 +initx58=0 +inity58=0 +minx58=0 +miny58=0 +maxx58=0 +maxy58=0 +posx58=50 +posy58=50 +sizx58=800 +sizy58=600 +title59=Dungeon Keeper 2 GOG release +path59=D:\Games\Dungeon Keeper 2 GOG release\DKII.EXE +module59= +ver59=0 +flag59=134217762 +flagg59=4276224 +tflag59=6 +initx59=0 +inity59=0 +minx59=0 +miny59=0 +maxx59=0 +maxy59=0 +posx59=50 +posy59=50 +sizx59=800 +sizy59=600 +title60=Dungeon Keeper 95 +path60=D:\Games\Keeper95\KEEPER95.EXE +module60= +ver60=0 +flag60=134234150 +flagg60=0 +tflag60=64 +initx60=0 +inity60=0 +minx60=0 +miny60=0 +maxx60=0 +maxy60=0 +posx60=50 +posy60=50 +sizx60=800 +sizy60=600 +title61=Dungeon Keeper II +path61=D:\Games\Dungeon Keeper 2\DKII.exe +module61= +ver61=0 +flag61=34 +flagg61=0 +tflag61=262 +initx61=0 +inity61=0 +minx61=0 +miny61=0 +maxx61=0 +maxy61=0 +posx61=150 +posy61=50 +sizx61=800 +sizy61=600 +title62=Emergency Fighters for life +path62=D:\Games\Emergency\EMERGY.EXE +module62= +ver62=0 +flag62=134545443 +flagg62=18 +tflag62=3 +initx62=0 +inity62=0 +minx62=0 +miny62=0 +maxx62=0 +maxy62=0 +posx62=50 +posy62=50 +sizx62=800 +sizy62=600 +title63=Enemy Infestation +path63=C:\Games\Enemy Infestation (1998)\Ei.exe +module63= +ver63=0 +flag63=38 +flagg63=0 +tflag63=0 +initx63=0 +inity63=0 +minx63=0 +miny63=0 +maxx63=0 +maxy63=0 +posx63=50 +posy63=50 +sizx63=800 +sizy63=600 +title64=Evil Genius +path64=D:\Games\Evil Genius\ReleaseExe\EvilGenius_Cracked.exe +module64= +ver64=9 +flag64=2053 +flagg64=80 +tflag64=0 +initx64=0 +inity64=0 +minx64=0 +miny64=0 +maxx64=0 +maxy64=0 +posx64=50 +posy64=50 +sizx64=800 +sizy64=600 +title65=Expendable +path65=C:\Games\eXpendable\go.exe -nocputest +module65= +ver65=0 +flag65=402653280 +flagg65=1 +tflag65=2 +initx65=0 +inity65=0 +minx65=0 +miny65=0 +maxx65=0 +maxy65=0 +posx65=50 +posy65=50 +sizx65=800 +sizy65=600 +title66=Fallen Heaven (BAD) +path66=C:\Games\falhaven\Exe\FALLEN.EXE +module66= +ver66=0 +flag66=679485962 +flagg66=32 +tflag66=0 +initx66=0 +inity66=0 +minx66=0 +miny66=0 +maxx66=0 +maxy66=0 +posx66=0 +posy66=0 +sizx66=800 +sizy66=600 +title67=Fallout +path67=D:\Games\Fallout\FALLOUTW.EXE +module67= +ver67=1 +flag67=134217734 +flagg67=16 +tflag67=0 +initx67=0 +inity67=0 +minx67=0 +miny67=0 +maxx67=0 +maxy67=0 +posx67=50 +posy67=50 +sizx67=800 +sizy67=600 +title68=FreakOut +path68=C:\Games\Freak Out - Extreme Freeride\FreakOut.exe +module68= +ver68=9 +flag68=0 +flagg68=0 +tflag68=2 +initx68=0 +inity68=0 +minx68=0 +miny68=0 +maxx68=0 +maxy68=0 +posx68=50 +posy68=50 +sizx68=800 +sizy68=600 +title69=Funtracks +path69=C:\Games\Funtracks\Fun_win.exe +module69= +ver69=1 +flag69=2 +flagg69=0 +tflag69=258 +initx69=0 +inity69=0 +minx69=0 +miny69=0 +maxx69=0 +maxy69=0 +posx69=50 +posy69=50 +sizx69=800 +sizy69=600 +title70=Galapagos +path70=C:\Games\Galapagos\GALA.EXE +module70= +ver70=0 +flag70=134217760 +flagg70=0 +tflag70=0 +initx70=0 +inity70=0 +minx70=0 +miny70=0 +maxx70=0 +maxy70=0 +posx70=50 +posy70=50 +sizx70=800 +sizy70=600 +title71=Gangsters +path71=C:\Games\Gangsters\gangsters.exe +module71= +ver71=0 +flag71=134217762 +flagg71=0 +tflag71=2 +initx71=0 +inity71=0 +minx71=0 +miny71=0 +maxx71=0 +maxy71=0 +posx71=100 +posy71=100 +sizx71=800 +sizy71=600 +title72=GeneRally +path72=C:\Games\generally105\GeneRally.exe +module72= +ver72=0 +flag72=34 +flagg72=0 +tflag72=0 +initx72=0 +inity72=0 +minx72=0 +miny72=0 +maxx72=0 +maxy72=0 +posx72=50 +posy72=50 +sizx72=800 +sizy72=600 +title73=Get Medieval +path73=C:\Games\Get Medieval\MEDIEVAL.EXE +module73= +ver73=0 +flag73=34 +flagg73=2 +tflag73=0 +initx73=0 +inity73=0 +minx73=0 +miny73=0 +maxx73=0 +maxy73=0 +posx73=0 +posy73=0 +sizx73=800 +sizy73=600 +title74=Gift +path74=C:\Games\Gift\Gift.exe +module74= +ver74=0 +flag74=4196384 +flagg74=0 +tflag74=34 +initx74=0 +inity74=0 +minx74=0 +miny74=0 +maxx74=0 +maxy74=0 +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=34 +flagg75=0 +tflag75=0 +initx75=0 +inity75=0 +minx75=0 +miny75=0 +maxx75=0 +maxy75=0 +posx75=50 +posy75=50 +sizx75=800 +sizy75=600 +title76=Gp500 for Win2K +path76=C:\Games\gp500\gp500_win2k.exe +module76= +ver76=1 +flag76=545677860 +flagg76=0 +tflag76=2 +initx76=0 +inity76=0 +minx76=0 +miny76=0 +maxx76=0 +maxy76=0 +posx76=50 +posy76=50 +sizx76=800 +sizy76=600 +title77=G-Police +path77=C:\Games\gpolice\GPOLICE.EXE +module77= +ver77=0 +flag77=67125286 +flagg77=0 +tflag77=2 +initx77=0 +inity77=0 +minx77=0 +miny77=0 +maxx77=0 +maxy77=0 +posx77=50 +posy77=50 +sizx77=800 +sizy77=600 +title78=Grand Prix Legends +path78=D:\Games\Grand Prix Legends\gpl\gpl.exe +module78= +ver78=0 +flag78=-1979678687 +flagg78=4 +tflag78=271 +initx78=0 +inity78=0 +minx78=0 +miny78=0 +maxx78=0 +maxy78=0 +posx78=50 +posy78=50 +sizx78=640 +sizy78=480 +title79=Grim Fandango Demo +path79=C:\Games\GrimWebDemo\grimdemo.exe +module79= +ver79=0 +flag79=34 +flagg79=0 +tflag79=258 +initx79=0 +inity79=0 +minx79=0 +miny79=0 +maxx79=0 +maxy79=0 +posx79=50 +posy79=50 +sizx79=800 +sizy79=600 +title80=Half-Life Blue-Shift (d3d) +path80=D:\Games\Half-Life Blue-Shift\bshift.exe +module80= +ver80=7 +flag80=1207959554 +flagg80=513 +tflag80=258 +initx80=0 +inity80=0 +minx80=0 +miny80=0 +maxx80=0 +maxy80=0 +posx80=50 +posy80=50 +sizx80=800 +sizy80=600 +title81=Half-Life Uplink Demo +path81=D:\Games\Half-Life Uplink\hldemo.exe +module81= +ver81=1 +flag81=1073741826 +flagg81=16384 +tflag81=2 +initx81=0 +inity81=0 +minx81=0 +miny81=0 +maxx81=0 +maxy81=0 +posx81=50 +posy81=50 +sizx81=640 +sizy81=480 +title82=Halo Combat Evolved +path82=D:\Games\Halo Combat Evolved\halo.exe +module82= +ver82=9 +flag82=570425377 +flagg82=-2147483648 +tflag82=478 +initx82=0 +inity82=0 +minx82=0 +miny82=0 +maxx82=0 +maxy82=0 +posx82=50 +posy82=50 +sizx82=800 +sizy82=600 +title83=Heart of Darkness +path83=d:\Games\Heart of Darkness\HODWin32.exe +module83= +ver83=0 +flag83=8226 +flagg83=2179072 +tflag83=0 +initx83=0 +inity83=0 +minx83=0 +miny83=0 +maxx83=0 +maxy83=0 +posx83=50 +posy83=50 +sizx83=800 +sizy83=600 +title84=Heavy Metal FAKK 2 +path84=C:\Games\Heavy Metal - FAKK2\fakk2.exe +module84= +ver84=0 +flag84=33554464 +flagg84=64 +tflag84=2 +initx84=0 +inity84=0 +minx84=0 +miny84=0 +maxx84=0 +maxy84=0 +posx84=50 +posy84=50 +sizx84=800 +sizy84=600 +title85=HellCopter +path85=C:\Games\hellcop\HCopter.exe +module85= +ver85=0 +flag85=-2013249500 +flagg85=256 +tflag85=0 +initx85=0 +inity85=0 +minx85=0 +miny85=0 +maxx85=0 +maxy85=0 +posx85=50 +posy85=50 +sizx85=800 +sizy85=600 +title86=Heroes of Might & Magic III Demo +path86=C:\Games\Heroes III Demo\h3demo.exe +module86= +ver86=1 +flag86=134234146 +flagg86=0 +tflag86=2 +initx86=0 +inity86=0 +minx86=0 +miny86=0 +maxx86=0 +maxy86=0 +posx86=50 +posy86=50 +sizx86=800 +sizy86=600 +title87=Hexen II (opengl) +path87=D:\Games\Hexen II\glh2.exe +module87= +ver87=10 +flag87=3 +flagg87=212993 +tflag87=387 +initx87=0 +inity87=0 +minx87=0 +miny87=0 +maxx87=0 +maxy87=0 +posx87=50 +posy87=50 +sizx87=800 +sizy87=600 +title88=Hexen II (software) +path88=D:\Games\Hexen II\h2.exe +module88= +ver88=10 +flag88=671088642 +flagg88=1130496 +tflag88=0 +initx88=0 +inity88=0 +minx88=0 +miny88=0 +maxx88=0 +maxy88=0 +posx88=50 +posy88=50 +sizx88=800 +sizy88=600 +title89=hover +path89=C:\Games\hover\hoverX.exe +module89= +ver89=0 +flag89=8224 +flagg89=0 +tflag89=0 +initx89=0 +inity89=0 +minx89=0 +miny89=0 +maxx89=0 +maxy89=0 +posx89=50 +posy89=50 +sizx89=800 +sizy89=600 +title90=Hyperblade +path90=D:\Games\Hyperblade\HYPERX.EXE +module90= +ver90=0 +flag90=134217891 +flagg90=3231762 +tflag90=2 +initx90=0 +inity90=0 +minx90=0 +miny90=0 +maxx90=0 +maxy90=0 +posx90=50 +posy90=50 +sizx90=800 +sizy90=600 +title91=Idinaloq +path91=C:\Games\idina101\idinaloq.exe +module91= +ver91=0 +flag91=32 +flagg91=0 +tflag91=0 +initx91=0 +inity91=0 +minx91=0 +miny91=0 +maxx91=0 +maxy91=0 +posx91=50 +posy91=50 +sizx91=800 +sizy91=600 +title92=Immanis +path92=C:\Games\Immanis CD release\immanis.exe +module92= +ver92=0 +flag92=24611 +flagg92=0 +tflag92=0 +initx92=0 +inity92=0 +minx92=0 +miny92=0 +maxx92=0 +maxy92=0 +posx92=50 +posy92=50 +sizx92=800 +sizy92=600 +title93=Immanis (v2) +path93=C:\Games\Immanis CD release\immanis_v2.exe +module93= +ver93=0 +flag93=268460067 +flagg93=0 +tflag93=0 +initx93=0 +inity93=0 +minx93=0 +miny93=0 +maxx93=0 +maxy93=0 +posx93=50 +posy93=50 +sizx93=800 +sizy93=600 +title94=In the Hunt +path94=C:\Games\In The Hunt\e8.exe +module94= +ver94=0 +flag94=2 +flagg94=0 +tflag94=0 +initx94=0 +inity94=0 +minx94=0 +miny94=0 +maxx94=0 +maxy94=0 +posx94=50 +posy94=50 +sizx94=800 +sizy94=600 +title95=Incoming Forces +path95=D:\Games\Incoming Forces\forces.exe +module95= +ver95=8 +flag95=134217760 +flagg95=0 +tflag95=2 +initx95=0 +inity95=0 +minx95=0 +miny95=0 +maxx95=0 +maxy95=0 +posx95=50 +posy95=50 +sizx95=800 +sizy95=600 +title96=International Superstar Soccer 3 +path96=C:\Games\ISS_3\iss3.exe +module96= +ver96=8 +flag96=545267715 +flagg96=0 +tflag96=0 +initx96=0 +inity96=0 +minx96=0 +miny96=0 +maxx96=0 +maxy96=0 +posx96=50 +posy96=50 +sizx96=800 +sizy96=600 +title97=Jacked +path97=D:\Games\Jacked\Jacked.exe +module97=winmm +ver97=9 +flag97=537010208 +flagg97=196608 +tflag97=258 +initx97=0 +inity97=0 +minx97=0 +miny97=0 +maxx97=0 +maxy97=0 +posx97=50 +posy97=50 +sizx97=800 +sizy97=600 +title98=Jedi Knight II Jedi Outcast +path98=D:\Games\Jedi Knight II Jedi Outcast\GameData\jk2sp.exe +module98= +ver98=0 +flag98=0 +flagg98=512 +tflag98=266 +initx98=0 +inity98=0 +minx98=0 +miny98=0 +maxx98=0 +maxy98=0 +posx98=50 +posy98=50 +sizx98=800 +sizy98=600 +title99=Jet Moto +path99=M:\JETMOTO.EXE +module99= +ver99=0 +flag99=139298 +flagg99=0 +tflag99=0 +initx99=0 +inity99=0 +minx99=0 +miny99=0 +maxx99=0 +maxy99=0 +posx99=50 +posy99=50 +sizx99=800 +sizy99=600 +title100=Kiss Psyco Cyrcus +path100=C:\Games\Psycho\client.exe +module100=d3d.ren +ver100=7 +flag100=537018404 +flagg100=0 +tflag100=0 +initx100=0 +inity100=0 +minx100=0 +miny100=0 +maxx100=0 +maxy100=0 +posx100=50 +posy100=50 +sizx100=800 +sizy100=600 +title101=Krazy Ivan +path101=C:\Games\Krazy Ivan\KRAZY.EXE +module101= +ver101=0 +flag101=536870914 +flagg101=0 +tflag101=0 +initx101=0 +inity101=0 +minx101=0 +miny101=0 +maxx101=0 +maxy101=0 +posx101=50 +posy101=50 +sizx101=800 +sizy101=600 +title102=Last Bronx +path102=C:\Games\Last_Bronx\LB.EXE +module102= +ver102=0 +flag102=40994 +flagg102=0 +tflag102=64 +initx102=0 +inity102=0 +minx102=0 +miny102=0 +maxx102=0 +maxy102=0 +posx102=50 +posy102=50 +sizx102=800 +sizy102=600 +title103=Lionheart +path103=C:\Games\Lionheart Demo\Lionheart.exe +module103= +ver103=0 +flag103=-2147483612 +flagg103=0 +tflag103=0 +initx103=0 +inity103=0 +minx103=0 +miny103=0 +maxx103=0 +maxy103=0 +posx103=50 +posy103=50 +sizx103=800 +sizy103=600 +title104=lithtech.exe +path104=D:\Games\NOLF Technology Demo\lithtech.exe +module104= +ver104=7 +flag104=0 +flagg104=512 +tflag104=258 +initx104=0 +inity104=0 +minx104=0 +miny104=0 +maxx104=0 +maxy104=0 +posx104=50 +posy104=50 +sizx104=800 +sizy104=600 +title105=Lords of the Realm 2 +path105=D:\Games\L2SIEGE\LORDS2.EXE +module105= +ver105=0 +flag105=38 +flagg105=65536 +tflag105=9 +initx105=0 +inity105=0 +minx105=0 +miny105=0 +maxx105=0 +maxy105=0 +posx105=50 +posy105=50 +sizx105=800 +sizy105=600 +title106=M.A.X. 2 +path106=C:\Games\MAX 2\MAX_2\MAX2\MAX2.EXE +module106= +ver106=0 +flag106=34 +flagg106=0 +tflag106=0 +initx106=0 +inity106=0 +minx106=0 +miny106=0 +maxx106=0 +maxy106=0 +posx106=50 +posy106=50 +sizx106=800 +sizy106=600 +title107=M1 Tank Platoon 2 +path107=C:\Games\M1 Tank Platoon 2\M1TP2.exe +module107= +ver107=8 +flag107=34 +flagg107=0 +tflag107=0 +initx107=0 +inity107=0 +minx107=0 +miny107=0 +maxx107=0 +maxy107=0 +posx107=50 +posy107=50 +sizx107=800 +sizy107=600 +title108=Mario Worlds (stripped PE) +path108=C:\Games\Mario Worlds\Mario Worlds.exe +module108= +ver108=1 +flag108=2 +flagg108=1 +tflag108=386 +initx108=0 +inity108=0 +minx108=0 +miny108=0 +maxx108=0 +maxy108=0 +posx108=50 +posy108=50 +sizx108=800 +sizy108=600 +title109=Masters of Orion 2 +path109=C:\Games\Orion2\Orion95.exe +module109= +ver109=0 +flag109=34 +flagg109=0 +tflag109=0 +initx109=0 +inity109=0 +minx109=0 +miny109=0 +maxx109=0 +maxy109=0 +posx109=50 +posy109=50 +sizx109=800 +sizy109=600 +title110=Microsoft Flight Simulator 98 +path110=C:\Games\Flight Simulator 98\FLTSIM98.EXE +module110= +ver110=0 +flag110=288 +flagg110=0 +tflag110=0 +initx110=0 +inity110=0 +minx110=0 +miny110=0 +maxx110=0 +maxy110=0 +posx110=50 +posy110=50 +sizx110=800 +sizy110=600 +title111=Microsoft Midtown Madness +path111=C:\Games\Midtown Madness\midtown.exe +module111= +ver111=0 +flag111=8192 +flagg111=0 +tflag111=2 +initx111=0 +inity111=0 +minx111=0 +miny111=0 +maxx111=0 +maxy111=0 +posx111=50 +posy111=50 +sizx111=800 +sizy111=600 +title112=Microsoft Midtown Madness Trial (BAD) +path112=C:\Games\Midtown Madness Trial\midtrial.exe +module112= +ver112=0 +flag112=2 +flagg112=0 +tflag112=0 +initx112=0 +inity112=0 +minx112=0 +miny112=0 +maxx112=0 +maxy112=0 +posx112=0 +posy112=0 +sizx112=800 +sizy112=600 +title113=Microsoft Motocross Madness 2 (BAD!!) +path113=C:\Games\Motocross Madness 2\MCM2.cracked.EXE +module113= +ver113=7 +flag113=201326664 +flagg113=1 +tflag113=82 +initx113=0 +inity113=0 +minx113=0 +miny113=0 +maxx113=0 +maxy113=0 +posx113=50 +posy113=50 +sizx113=800 +sizy113=600 +title114=Microsoft Motocross Madness Trial (BAD) +path114=C:\Games\Motocross Madness Trial\mcm.exe +module114= +ver114=1 +flag114=134225952 +flagg114=0 +tflag114=130 +initx114=0 +inity114=0 +minx114=0 +miny114=0 +maxx114=0 +maxy114=0 +posx114=50 +posy114=50 +sizx114=0 +sizy114=0 +title115=Mission Force Cyberstorm (BAD ?) +path115=C:\Games\SIERRA\CSTORM\CSTORM.EXE +module115= +ver115=0 +flag115=33562658 +flagg115=0 +tflag115=0 +initx115=0 +inity115=0 +minx115=0 +miny115=0 +maxx115=0 +maxy115=0 +posx115=50 +posy115=50 +sizx115=0 +sizy115=0 +title116=Monopoly 3D +path116=C:\Games\Monopoly (Edition 3D)\Monopoly.exe +module116= +ver116=0 +flag116=134244388 +flagg116=0 +tflag116=2 +initx116=0 +inity116=0 +minx116=0 +miny116=0 +maxx116=0 +maxy116=0 +posx116=50 +posy116=50 +sizx116=800 +sizy116=600 +title117=Monster Truck Madness 2 +path117=C:\Games\Monster Truck Madness 2\Monster.EXE +module117= +ver117=1 +flag117=34 +flagg117=1 +tflag117=0 +initx117=0 +inity117=0 +minx117=0 +miny117=0 +maxx117=0 +maxy117=0 +posx117=50 +posy117=50 +sizx117=800 +sizy117=600 +title118=Moto Racer Demo +path118=D:\Games\Moto Racer Demo\PlayDemo.exe +module118= +ver118=0 +flag118=167903267 +flagg118=192 +tflag118=14 +initx118=0 +inity118=0 +minx118=0 +miny118=0 +maxx118=0 +maxy118=0 +posx118=50 +posy118=50 +sizx118=800 +sizy118=600 +title119=Necrodrome +path119=C:\Games\Necrodome\NECRO95.EXE +module119= +ver119=0 +flag119=268435495 +flagg119=256 +tflag119=0 +initx119=0 +inity119=0 +minx119=0 +miny119=0 +maxx119=0 +maxy119=0 +posx119=50 +posy119=50 +sizx119=800 +sizy119=600 +title120=Need For Speed - Porsche 2000 +path120=C:\Games\Need For Speed - Porsche 2000\Porsche.exe +module120= +ver120=7 +flag120=0 +flagg120=0 +tflag120=258 +initx120=0 +inity120=0 +minx120=0 +miny120=0 +maxx120=0 +maxy120=0 +posx120=50 +posy120=50 +sizx120=800 +sizy120=600 +title121=Netstorm Islands at War +path121=C:\Games\Netstorm\Netstorm.exe +module121= +ver121=0 +flag121=2 +flagg121=0 +tflag121=0 +initx121=0 +inity121=0 +minx121=0 +miny121=0 +maxx121=0 +maxy121=0 +posx121=50 +posy121=50 +sizx121=800 +sizy121=600 +title122=Nox +path122=d:\Games\Nox\Game.exe +module122= +ver122=0 +flag122=939540515 +flagg122=0 +tflag122=386 +initx122=0 +inity122=0 +minx122=0 +miny122=0 +maxx122=0 +maxy122=0 +posx122=50 +posy122=50 +sizx122=800 +sizy122=600 +title123=Pacific General +path123=C:\Games\Pacific General\PACGEN.EXE +module123= +ver123=0 +flag123=8226 +flagg123=0 +tflag123=2 +initx123=0 +inity123=0 +minx123=0 +miny123=0 +maxx123=0 +maxy123=0 +posx123=50 +posy123=50 +sizx123=800 +sizy123=600 +title124=Project Nomads Demo (BAD) +path124=C:\Games\Project Nomads Demo\bin\win32\nomads.exe +module124= +ver124=8 +flag124=-1476394912 +flagg124=256 +tflag124=258 +initx124=0 +inity124=0 +minx124=0 +miny124=0 +maxx124=0 +maxy124=0 +posx124=50 +posy124=50 +sizx124=800 +sizy124=600 +title125=Puzzle Bubble +path125=C:\Games\Puzzle Bubble\PB.EXE +module125= +ver125=0 +flag125=34 +flagg125=0 +tflag125=0 +initx125=0 +inity125=0 +minx125=0 +miny125=0 +maxx125=0 +maxy125=0 +posx125=50 +posy125=50 +sizx125=800 +sizy125=600 +title126=Quake 2 +path126=D:\Games\QUAKE2\quake2.exe +module126= +ver126=10 +flag126=671089154 +flagg126=-1476263359 +tflag126=259 +initx126=0 +inity126=0 +minx126=0 +miny126=0 +maxx126=0 +maxy126=0 +posx126=50 +posy126=50 +sizx126=800 +sizy126=600 +title127=Quake 3 Arena +path127=D:\Games\Q3A\quake3.exe +module127= +ver127=10 +flag127=0 +flagg127=1180160 +tflag127=3 +initx127=0 +inity127=0 +minx127=0 +miny127=0 +maxx127=0 +maxy127=0 +posx127=50 +posy127=50 +sizx127=800 +sizy127=600 +title128=Raiden II +path128=C:\Games\Raiden II\Raiden II\RAIDENII.EXE +module128= +ver128=0 +flag128=34 +flagg128=0 +tflag128=0 +initx128=0 +inity128=0 +minx128=0 +miny128=0 +maxx128=0 +maxy128=0 +posx128=50 +posy128=50 +sizx128=800 +sizy128=600 +title129=Railroad Tycoon II +path129=C:\Games\Railroad.Tycoon.II\RT2.EXE +module129= +ver129=1 +flag129=134225954 +flagg129=0 +tflag129=0 +initx129=0 +inity129=0 +minx129=0 +miny129=0 +maxx129=0 +maxy129=0 +posx129=50 +posy129=50 +sizx129=800 +sizy129=600 +title130=Rally Championship 2000 +path130=C:\Games\Rally Championship 2000\RAL.EXE +module130= +ver130=0 +flag130=67108864 +flagg130=0 +tflag130=2 +initx130=0 +inity130=0 +minx130=0 +miny130=0 +maxx130=0 +maxy130=0 +posx130=50 +posy130=50 +sizx130=800 +sizy130=600 +title131=Rebel Moon Rising +path131=C:\Games\Rebel Moon Rising\Rmr.exe +module131= +ver131=0 +flag131=0 +flagg131=0 +tflag131=0 +initx131=0 +inity131=0 +minx131=0 +miny131=0 +maxx131=0 +maxy131=0 +posx131=50 +posy131=50 +sizx131=800 +sizy131=600 +title132=Redline - Gang Warfare 2066 +path132=C:\Games\Redline - Gang Warfare 2066\redline.exe +module132= +ver132=0 +flag132=32 +flagg132=0 +tflag132=386 +initx132=0 +inity132=0 +minx132=0 +miny132=0 +maxx132=0 +maxy132=0 +posx132=50 +posy132=50 +sizx132=800 +sizy132=600 +title133=Resident Evil +path133=D:\Games\Resident Evil\residentevil.patched.exe +module133= +ver133=1 +flag133=134217827 +flagg133=-2147483520 +tflag133=2 +initx133=0 +inity133=0 +minx133=0 +miny133=0 +maxx133=0 +maxy133=0 +posx133=50 +posy133=50 +sizx133=800 +sizy133=600 +title134=Return to Castle Wolfenstein +path134=D:\Games\Return to Castle Wolfenstein (2001)\Return to Castle Wolfenstein\WolfSP.exe +module134= +ver134=0 +flag134=134234114 +flagg134=-2147270656 +tflag134=256 +initx134=0 +inity134=0 +minx134=0 +miny134=0 +maxx134=0 +maxy134=0 +posx134=50 +posy134=50 +sizx134=800 +sizy134=600 +title135=Re-Volt +path135=C:\Games\Re-Volt\REVOLT.EXE +module135= +ver135=0 +flag135=134217792 +flagg135=0 +tflag135=0 +initx135=0 +inity135=0 +minx135=0 +miny135=0 +maxx135=0 +maxy135=0 +posx135=50 +posy135=50 +sizx135=800 +sizy135=600 +title136=Road Rash +path136=D:\Games\Road Rash\ROADRASH\ROADRASH.EXE +module136= +ver136=0 +flag136=134217730 +flagg136=0 +tflag136=386 +initx136=0 +inity136=0 +minx136=0 +miny136=0 +maxx136=0 +maxy136=0 +posx136=50 +posy136=50 +sizx136=800 +sizy136=600 +title137=Road Rash Demo +path137=D:\Games\RoadRash DEMO\DEMORASH.EXE +module137= +ver137=0 +flag137=134218242 +flagg137=0 +tflag137=258 +initx137=0 +inity137=0 +minx137=0 +miny137=0 +maxx137=0 +maxy137=0 +posx137=50 +posy137=50 +sizx137=800 +sizy137=600 +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=0 +posy138=0 +sizx138=800 +sizy138=600 +title139=Sega Rally 2 Championship +path139=C:\Games\Sega Rally 2 Championship\SEGA RALLY 2.exe +module139= +ver139=1 +flag139=268435488 +flagg139=2 +tflag139=0 +initx139=0 +inity139=0 +minx139=0 +miny139=0 +maxx139=0 +maxy139=0 +posx139=0 +posy139=0 +sizx139=800 +sizy139=600 +title140=Sentinel Returns +path140=D:\Games\Sentinel Returns\Sentinel.exe +module140= +ver140=1 +flag140=3 +flagg140=-2147483648 +tflag140=0 +initx140=0 +inity140=0 +minx140=0 +miny140=0 +maxx140=0 +maxy140=0 +posx140=50 +posy140=50 +sizx140=800 +sizy140=600 +title141=Shadow Master (TBD) +path141=C:\Games\Shadow Master\rmg.exe +module141= +ver141=1 +flag141=32 +flagg141=256 +tflag141=450 +initx141=0 +inity141=0 +minx141=0 +miny141=0 +maxx141=0 +maxy141=0 +posx141=50 +posy141=50 +sizx141=800 +sizy141=600 +title142=Sid Meier's SimGolf Demo +path142=C:\Games\Sid Meier's SimGolf Demo\golf.exe +module142=jgl.dll +ver142=0 +flag142=33554434 +flagg142=0 +tflag142=2 +initx142=0 +inity142=0 +minx142=0 +miny142=0 +maxx142=0 +maxy142=0 +posx142=50 +posy142=50 +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=513 +tflag143=386 +initx143=0 +inity143=0 +minx143=0 +miny143=0 +maxx143=0 +maxy143=0 +posx143=50 +posy143=50 +sizx143=800 +sizy143=600 +title144=SleepWalker +path144=C:\Games\SleepWalker\Sleepy.exe +module144= +ver144=0 +flag144=301989954 +flagg144=0 +tflag144=198 +initx144=0 +inity144=0 +minx144=0 +miny144=0 +maxx144=0 +maxy144=0 +posx144=50 +posy144=50 +sizx144=800 +sizy144=600 +title145=SnowBoard Racer +path145=C:\Games\Snowboard Racer\SnowBoard.exe +module145= +ver145=0 +flag145=268443681 +flagg145=0 +tflag145=0 +initx145=0 +inity145=0 +minx145=0 +miny145=0 +maxx145=0 +maxy145=0 +posx145=50 +posy145=50 +sizx145=800 +sizy145=600 +title146=Solaris (~BAD) +path146=c:\Games\Solaris\solaris.exe +module146= +ver146=7 +flag146=973078627 +flagg146=1 +tflag146=2 +initx146=0 +inity146=0 +minx146=0 +miny146=0 +maxx146=0 +maxy146=0 +posx146=50 +posy146=50 +sizx146=800 +sizy146=600 +title147=Soldiers at War +path147=D:\Games\Soldiers at War\SAW_Game.exe +module147= +ver147=0 +flag147=671359010 +flagg147=64 +tflag147=0 +initx147=0 +inity147=0 +minx147=0 +miny147=0 +maxx147=0 +maxy147=0 +posx147=50 +posy147=50 +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 +miny148=0 +maxx148=0 +maxy148=0 +posx148=50 +posy148=50 +sizx148=800 +sizy148=600 +title149=Sonic 3D Blast +path149=C:\Games\Sonic3D\pcsonic.exe +module149= +ver149=0 +flag149=134217762 +flagg149=0 +tflag149=0 +initx149=0 +inity149=0 +minx149=0 +miny149=0 +maxx149=0 +maxy149=0 +posx149=50 +posy149=50 +sizx149=800 +sizy149=600 +title150=Sonic R +path150=C:\Games\SonicR\sonicr.exe +module150= +ver150=0 +flag150=8288 +flagg150=0 +tflag150=0 +initx150=0 +inity150=0 +minx150=0 +miny150=0 +maxx150=0 +maxy150=0 +posx150=50 +posy150=50 +sizx150=800 +sizy150=600 +title151=Soulbringer +path151=C:\Games\SoulBringer\SoulbringeVCnoeax.exe +module151= +ver151=0 +flag151=143024174 +flagg151=0 +tflag151=0 +initx151=0 +inity151=0 +minx151=0 +miny151=0 +maxx151=0 +maxy151=0 +posx151=50 +posy151=50 +sizx151=800 +sizy151=600 +title152=Speedboat Attack (BAD) +path152=C:\Games\Speedboat Attack\SBOAT.EXE +module152= +ver152=0 +flag152=541073954 +flagg152=0 +tflag152=2 +initx152=0 +inity152=0 +minx152=0 +miny152=0 +maxx152=0 +maxy152=0 +posx152=50 +posy152=50 +sizx152=800 +sizy152=600 +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=131585 +tflag153=387 +initx153=0 +inity153=0 +minx153=0 +miny153=0 +maxx153=0 +maxy153=0 +posx153=50 +posy153=50 +sizx153=800 +sizy153=600 +title154=Star Wars Episode 1 Racer +path154=C:\Games\sw racer\SWEP1RCR.EXE +module154= +ver154=0 +flag154=142606368 +flagg154=0 +tflag154=0 +initx154=0 +inity154=0 +minx154=0 +miny154=0 +maxx154=0 +maxy154=0 +posx154=50 +posy154=50 +sizx154=800 +sizy154=600 +title155=Star Wars Jedi Knight Jedi Academy +path155=D:\Games\Star_Wars_Jedi_Knight_Jedi_Academy\GameData\jasp.exe +module155= +ver155=10 +flag155=0 +flagg155=65536 +tflag155=2 +initx155=0 +inity155=0 +minx155=0 +miny155=0 +maxx155=0 +maxy155=0 +posx155=50 +posy155=50 +sizx155=800 +sizy155=600 +title156=Star Wars: Jedi Knight +path156=C:\Games\Jedi Knight\Jedi Knight\JK.EXE +module156= +ver156=0 +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=Star Wars: the Gungan Frontier +path157=C:\Games\sw the gungan frontier\Gungan Frontier.exe +module157= +ver157=1 +flag157=402915362 +flagg157=512 +tflag157=0 +initx157=0 +inity157=0 +minx157=0 +miny157=0 +maxx157=0 +maxy157=0 +posx157=0 +posy157=0 +sizx157=800 +sizy157=600 +title158=Starship Troopers +path158=C:\Games\Starship Troopers - Terran Ascendancy\stta\StarshipTroopers.exe +module158= +ver158=1 +flag158=32 +flagg158=0 +tflag158=0 +initx158=0 +inity158=0 +minx158=0 +miny158=0 +maxx158=0 +maxy158=0 +posx158=50 +posy158=50 +sizx158=800 +sizy158=600 +title159=Starshot Space Circus +path159=D:\SpaceCircus.exe +module159= +ver159=0 +flag159=66 +flagg159=0 +tflag159=0 +initx159=0 +inity159=0 +minx159=0 +miny159=0 +maxx159=0 +maxy159=0 +posx159=50 +posy159=50 +sizx159=800 +sizy159=600 +title160=Stronghold Demo +path160=C:\Games\Firefly Studios' Stronghold - Demo\Stronghold Demo.exe +module160= +ver160=0 +flag160=98 +flagg160=0 +tflag160=0 +initx160=0 +inity160=0 +minx160=0 +miny160=0 +maxx160=0 +maxy160=0 +posx160=50 +posy160=50 +sizx160=800 +sizy160=600 +title161=Sub Culture +path161=C:\Games\Sub Culture\sc.exe +module161= +ver161=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=Superbike 2001 +path162=C:\Games\Superbike 2001\Sbk2001.exe +module162= +ver162=1 +flag162=536887332 +flagg162=0 +tflag162=0 +initx162=0 +inity162=0 +minx162=0 +miny162=0 +maxx162=0 +maxy162=0 +posx162=50 +posy162=50 +sizx162=800 +sizy162=600 +title163=Syberia 2 Demo +path163=C:\Games\Syberia 2 Demo\Syberia2Demo.exe +module163= +ver163=8 +flag163=536887332 +flagg163=0 +tflag163=0 +initx163=0 +inity163=0 +minx163=0 +miny163=0 +maxx163=0 +maxy163=0 +posx163=50 +posy163=50 +sizx163=800 +sizy163=600 +title164=Syberia Demo +path164=C:\Games\SyberiaDemo\SyberiaDemo.exe +module164= +ver164=1 +flag164=536887332 +flagg164=0 +tflag164=0 +initx164=0 +inity164=0 +minx164=0 +miny164=0 +maxx164=0 +maxy164=0 +posx164=50 +posy164=50 +sizx164=800 +sizy164=600 +title165=System Shock 2 (BAD!!!) +path165=C:\Games\Sys Shock II\Shock2.exe +module165= +ver165=1 +flag165=0 +flagg165=64 +tflag165=0 +initx165=0 +inity165=0 +minx165=0 +miny165=0 +maxx165=0 +maxy165=0 +posx165=50 +posy165=50 +sizx165=800 +sizy165=600 +title166=Test Drive 4 +path166=D:\Games\Test Drive 4\td4.EXE +module166= +ver166=0 +flag166=-2013265885 +flagg166=-2147418094 +tflag166=2 +initx166=0 +inity166=0 +minx166=0 +miny166=0 +maxx166=0 +maxy166=0 +posx166=50 +posy166=50 +sizx166=800 +sizy166=600 +title167=The Nations Demo +path167=C:\Games\The Nations Demo\bin\Game.exe +module167= +ver167=1 +flag167=402661920 +flagg167=256 +tflag167=0 +initx167=0 +inity167=0 +minx167=0 +miny167=0 +maxx167=0 +maxy167=0 +posx167=50 +posy167=50 +sizx167=800 +sizy167=600 +title168=The Sims +path168=D:\Games\sims\Sims.exe +module168= +ver168=0 +flag168=134226976 +flagg168=65536 +tflag168=2 +initx168=0 +inity168=0 +minx168=0 +miny168=0 +maxx168=0 +maxy168=0 +posx168=50 +posy168=50 +sizx168=800 +sizy168=600 +title169=Thief the Dark Project (FRE) +path169=C:\Games\thief\game\thieffixed.exe +module169= +ver169=1 +flag169=16390 +flagg169=0 +tflag169=0 +initx169=0 +inity169=0 +minx169=0 +miny169=0 +maxx169=0 +maxy169=0 +posx169=50 +posy169=50 +sizx169=800 +sizy169=600 +title170=TinTin: Prisoners of the Sun +path170=C:\Games\tintin\TINTINW.EXE +module170= +ver170=0 +flag170=34 +flagg170=0 +tflag170=2 +initx170=0 +inity170=0 +minx170=0 +miny170=0 +maxx170=0 +maxy170=0 +posx170=50 +posy170=50 +sizx170=800 +sizy170=600 +title171=Tintoy (BAD gfx) +path171=C:\Games\Tintoy\Tintoy.exe +module171= +ver171=0 +flag171=546 +flagg171=256 +tflag171=258 +initx171=0 +inity171=0 +minx171=0 +miny171=0 +maxx171=0 +maxy171=0 +posx171=50 +posy171=50 +sizx171=800 +sizy171=600 +title172=Tomb Raider - Anniversary +path172=C:\Games\Tomb Raider - Anniversary\tra.exe +module172= +ver172=9 +flag172=0 +flagg172=256 +tflag172=2 +initx172=0 +inity172=0 +minx172=0 +miny172=0 +maxx172=0 +maxy172=0 +posx172=50 +posy172=50 +sizx172=800 +sizy172=600 +title173=Tomb Raider 2 the Golden Mask +path173=D:\Games\TR2 Golden Mask\T2GOLD.EXE +module173= +ver173=0 +flag173=570425378 +flagg173=1064960 +tflag173=258 +initx173=0 +inity173=0 +minx173=0 +miny173=0 +maxx173=0 +maxy173=0 +posx173=50 +posy173=50 +sizx173=800 +sizy173=600 +title174=Tomb Raider 3 Demo +path174=C:\Games\Tomb Raider 3 - The Lost Artifact Demo\tr3gold.exe +module174= +ver174=1 +flag174=369098848 +flagg174=0 +tflag174=258 +initx174=0 +inity174=0 +minx174=0 +miny174=0 +maxx174=0 +maxy174=0 +posx174=50 +posy174=50 +sizx174=800 +sizy174=600 +title175=Tomb Raider 4 Demo +path175=C:\Games\Tomb Raider 4 - The Last Revelation (Demo)\tomb4.patched.exe +module175= +ver175=0 +flag175=234881056 +flagg175=16 +tflag175=258 +initx175=0 +inity175=0 +minx175=0 +miny175=0 +maxx175=0 +maxy175=0 +posx175=50 +posy175=50 +sizx175=800 +sizy175=600 +title176=Total Annihilation Kingdoms +path176=D:\Games\Total Annihilation Kingdoms\Kingdoms.exe +module176= +ver176=0 +flag176=134234146 +flagg176=0 +tflag176=0 +initx176=0 +inity176=0 +minx176=0 +miny176=0 +maxx176=0 +maxy176=0 +posx176=50 +posy176=50 +sizx176=800 +sizy176=600 +title177=Total Soccer 2000 +path177=D:\Games\Total Soccer 2000\Total Soccer 2000\SOCCERDX.EXE +module177= +ver177=1 +flag177=33554434 +flagg177=1069056 +tflag177=0 +initx177=0 +inity177=0 +minx177=0 +miny177=0 +maxx177=0 +maxy177=0 +posx177=50 +posy177=50 +sizx177=800 +sizy177=600 +title178=Ultim@te Race Pro +path178=C:\Games\Ultim@te race pro\Ultim@te Race Pro.exe +module178= +ver178=0 +flag178=570425440 +flagg178=256 +tflag178=0 +initx178=0 +inity178=0 +minx178=0 +miny178=0 +maxx178=0 +maxy178=0 +posx178=50 +posy178=50 +sizx178=800 +sizy178=600 +title179=Uprising - Join or Die +path179=D:\Games\Uprising\uprising.exe +module179= +ver179=0 +flag179=-2013265882 +flagg179=18 +tflag179=0 +initx179=0 +inity179=0 +minx179=0 +miny179=0 +maxx179=0 +maxy179=0 +posx179=50 +posy179=50 +sizx179=800 +sizy179=600 +title180=Urban Assault +path180=D:\Games\Urban Assault\UA.EXE +module180= +ver180=0 +flag180=671236130 +flagg180=256 +tflag180=258 +initx180=0 +inity180=0 +minx180=0 +miny180=0 +maxx180=0 +maxy180=0 +posx180=50 +posy180=50 +sizx180=800 +sizy180=600 +title181=Warcraft 2 Battlenet Edition +path181=D:\Games\Warcraft 2\Warcraft II BNE.exe +module181= +ver181=0 +flag181=268452003 +flagg181=16 +tflag181=258 +initx181=0 +inity181=0 +minx181=0 +miny181=0 +maxx181=0 +maxy181=0 +posx181=50 +posy181=50 +sizx181=800 +sizy181=600 +title182=WarHammer Rites of War +path182=C:\Games\Rites of War\RoW.exe +module182= +ver182=0 +flag182=134217760 +flagg182=128 +tflag182=0 +initx182=0 +inity182=0 +minx182=0 +miny182=0 +maxx182=0 +maxy182=0 +posx182=50 +posy182=50 +sizx182=800 +sizy182=600 +title183=Warlords 3 +path183=D:\Games\WARLORDS3\Darklord.exe +module183= +ver183=0 +flag183=-2013264350 +flagg183=286261280 +tflag183=259 +initx183=0 +inity183=0 +minx183=0 +miny183=0 +maxx183=0 +maxy183=0 +posx183=50 +posy183=50 +sizx183=0 +sizy183=0 +title184=WarTorn +path184=C:\Games\WarTorn\W.exe +module184= +ver184=0 +flag184=32 +flagg184=0 +tflag184=0 +initx184=0 +inity184=0 +minx184=0 +miny184=0 +maxx184=0 +maxy184=0 +posx184=50 +posy184=50 +sizx184=800 +sizy184=600 +title185=WarWind +path185=C:\Games\WarWind\WW.EXE +module185= +ver185=0 +flag185=16418 +flagg185=81936 +tflag185=0 +initx185=0 +inity185=0 +minx185=0 +miny185=0 +maxx185=0 +maxy185=0 +posx185=50 +posy185=50 +sizx185=800 +sizy185=600 +title186=Worms Armageddon Demo (BAD!!!) +path186=C:\Games\Worms Armageddon Demo\WaDemo.exe +module186= +ver186=1 +flag186=939524099 +flagg186=8 +tflag186=2 +initx186=0 +inity186=0 +minx186=0 +miny186=0 +maxx186=0 +maxy186=0 +posx186=0 +posy186=0 +sizx186=0 +sizy186=0 +title187=Worms World Party +path187=D:\Games\Worms World Party\wwp.exe +module187= +ver187=1 +flag187=8388610 +flagg187=0 +tflag187=0 +initx187=0 +inity187=0 +minx187=0 +miny187=0 +maxx187=0 +maxy187=0 +posx187=50 +posy187=50 +sizx187=800 +sizy187=600 +maxfps0=0 +maxfps1=40 +maxfps2=0 +maxfps3=0 +maxfps4=0 +maxfps5=0 +maxfps6=10 +maxfps7=40 +maxfps8=0 +maxfps9=0 +maxfps10=0 +maxfps11=0 +maxfps12=0 +maxfps13=0 +maxfps14=0 +maxfps15=0 +maxfps16=0 +maxfps17=0 +maxfps18=0 +maxfps19=0 +maxfps20=0 +maxfps21=0 +maxfps22=0 +maxfps23=0 +maxfps24=0 +maxfps25=0 +maxfps26=0 +maxfps27=0 +maxfps28=0 +maxfps29=0 +maxfps30=0 +maxfps31=0 +maxfps32=0 +maxfps33=0 +maxfps34=0 +maxfps35=0 +maxfps36=0 +maxfps37=0 +maxfps38=0 +maxfps39=0 +maxfps40=0 +maxfps41=0 +maxfps42=0 +maxfps43=0 +maxfps44=0 +maxfps45=0 +maxfps46=0 +maxfps47=0 +maxfps48=0 +maxfps49=0 +maxfps50=0 +maxfps51=0 +maxfps52=0 +maxfps53=0 +maxfps54=0 +maxfps55=0 +maxfps56=100 maxfps57=0 +maxfps58=500 +maxfps59=0 +maxfps60=0 +maxfps61=0 +maxfps62=0 +maxfps63=0 +maxfps64=0 +maxfps65=0 +maxfps66=0 +maxfps67=0 +maxfps68=0 +maxfps69=0 +maxfps70=0 +maxfps71=0 +maxfps72=0 +maxfps73=0 +maxfps74=0 +maxfps75=0 +maxfps76=0 +maxfps77=0 +maxfps78=0 +maxfps79=0 +maxfps80=0 +maxfps81=0 +maxfps82=0 +maxfps83=0 +maxfps84=0 +maxfps85=0 +maxfps86=0 +maxfps87=50 +maxfps88=0 +maxfps89=0 +maxfps90=25 +maxfps91=0 +maxfps92=0 +maxfps93=0 +maxfps94=0 +maxfps95=0 +maxfps96=0 +maxfps97=100 +maxfps98=0 +maxfps99=0 +maxfps100=0 +maxfps101=0 +maxfps102=0 +maxfps103=0 +maxfps104=0 +maxfps105=0 +maxfps106=0 +maxfps107=0 +maxfps108=0 +maxfps109=0 +maxfps110=0 +maxfps111=0 +maxfps112=0 +maxfps113=0 +maxfps114=0 +maxfps115=0 +maxfps116=0 +maxfps117=0 +maxfps118=0 +maxfps119=0 +maxfps120=0 +maxfps121=0 +maxfps122=0 +maxfps123=0 +maxfps124=0 +maxfps125=0 +maxfps126=0 +maxfps127=0 +maxfps128=0 +maxfps129=0 +maxfps130=0 +maxfps131=0 +maxfps132=0 +maxfps133=0 +maxfps134=50 +maxfps135=0 +maxfps136=0 +maxfps137=0 +maxfps138=0 +maxfps139=0 +maxfps140=0 +maxfps141=0 +maxfps142=0 +maxfps143=0 +maxfps144=0 +maxfps145=0 +maxfps146=0 +maxfps147=0 +maxfps148=0 +maxfps149=0 +maxfps150=0 +maxfps151=0 +maxfps152=0 +maxfps153=0 +maxfps154=0 +maxfps155=0 +maxfps156=0 +maxfps157=0 +maxfps158=0 +maxfps159=0 +maxfps160=0 +maxfps161=0 +maxfps162=0 +maxfps163=0 +maxfps164=0 +maxfps165=0 +maxfps166=0 +maxfps167=0 +maxfps168=0 +maxfps169=0 +maxfps170=0 +maxfps171=0 +maxfps172=0 +maxfps173=0 +maxfps174=0 +maxfps175=0 +maxfps176=0 +maxfps177=200 +maxfps178=0 +maxfps179=0 +maxfps180=0 +maxfps181=40 +maxfps182=0 +maxfps183=0 +maxfps184=0 +maxfps185=0 +maxfps186=0 +maxfps187=0 +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=2 +initx188=0 +inity188=0 +minx188=0 +miny188=0 +maxx188=0 +maxy188=0 +posx188=0 +posy188=0 +sizx188=0 +maxfps188=0 +opengllib0= +initts0=-8 +opengllib1= +initts1=-7 +opengllib2= +initts2=-7 +opengllib3= +initts3=0 +opengllib4= +initts4=0 +opengllib5= +initts5=0 +opengllib6= +initts6=0 +opengllib7= +initts7=0 +opengllib8= +initts8=0 +opengllib9= +initts9=0 +opengllib10= +initts10=0 +opengllib11= +initts11=0 +opengllib12= +initts12=0 +opengllib13= +initts13=0 +opengllib14= +initts14=0 +opengllib15= +initts15=0 +opengllib16= +initts16=0 +opengllib17= +initts17=0 +opengllib18= +initts18=0 +opengllib19= +initts19=0 +opengllib20= +initts20=0 +opengllib21= +initts21=0 +opengllib22= +initts22=0 +opengllib23= +initts23=0 +opengllib24= +initts24=0 +opengllib25= +initts25=0 +opengllib26= +initts26=0 +opengllib27= +initts27=0 +opengllib28= +initts28=0 +opengllib29= +initts29=0 +opengllib30= +initts30=0 +opengllib31= +initts31=0 +opengllib32= +initts32=0 +opengllib33= +initts33=0 +opengllib34= +initts34=0 +opengllib35= +initts35=0 +opengllib36= +initts36=0 +opengllib37= +initts37=0 +opengllib38= +initts38=0 +opengllib39= +initts39=0 +opengllib40= +initts40=0 +opengllib41= +initts41=0 +opengllib42= +initts42=0 +opengllib43= +initts43=0 +opengllib44= +initts44=0 +opengllib45= +initts45=0 +opengllib46= +initts46=0 +opengllib47= +initts47=0 +opengllib48= +initts48=0 +opengllib49= +initts49=0 +opengllib50= +initts50=0 +opengllib51= +initts51=0 +opengllib52= +initts52=0 +opengllib53= +initts53=0 +opengllib54= +initts54=0 +opengllib55= +initts55=0 +opengllib56= +initts56=-5 +opengllib57= initts57=0 +opengllib58= +initts58=0 +opengllib59= +initts59=0 +opengllib60= +initts60=0 +opengllib61= +initts61=0 +opengllib62= +initts62=0 +opengllib63= +initts63=0 +opengllib64= +initts64=0 +opengllib65= +initts65=0 +opengllib66= +initts66=0 +opengllib67= +initts67=0 +opengllib68= +initts68=0 +opengllib69= +initts69=0 +opengllib70= +initts70=0 +opengllib71= +initts71=0 +opengllib72= +initts72=0 +opengllib73= +initts73=0 +opengllib74= +initts74=0 +opengllib75= +initts75=0 +opengllib76= +initts76=0 +opengllib77= +initts77=0 +opengllib78= +initts78=0 +opengllib79= +initts79=0 +opengllib80= +initts80=0 +opengllib81= +initts81=0 +opengllib82= +initts82=0 +opengllib83= +initts83=4 +opengllib84= +initts84=0 +opengllib85= +initts85=0 +opengllib86= +initts86=0 +opengllib87= +initts87=8 +opengllib88= +initts88=8 +opengllib89= +initts89=0 +opengllib90= +initts90=1 +opengllib91= +initts91=0 +opengllib92= +initts92=0 +opengllib93= +initts93=0 +opengllib94= +initts94=0 +opengllib95= +initts95=0 +opengllib96= +initts96=0 +opengllib97= +initts97=3 +opengllib98= +initts98=0 +opengllib99= +initts99=0 +opengllib100= +initts100=0 +opengllib101= +initts101=0 +opengllib102= +initts102=0 +opengllib103= +initts103=0 +opengllib104= +initts104=0 +opengllib105= +initts105=0 +opengllib106= +initts106=0 +opengllib107= +initts107=0 +opengllib108= +initts108=0 +opengllib109= +initts109=0 +opengllib110= +initts110=0 +opengllib111= +initts111=0 +opengllib112= +initts112=0 +opengllib113= +initts113=0 +opengllib114= +initts114=0 +opengllib115= +initts115=0 +opengllib116= +initts116=0 +opengllib117= +initts117=0 +opengllib118= +initts118=0 +opengllib119= +initts119=0 +opengllib120= +initts120=0 +opengllib121= +initts121=0 +opengllib122= +initts122=0 +opengllib123= +initts123=0 +opengllib124= +initts124=0 +opengllib125= +initts125=0 +opengllib126= +initts126=0 +opengllib127= +initts127=0 +opengllib128= +initts128=0 +opengllib129= +initts129=0 +opengllib130= +initts130=0 +opengllib131= +initts131=0 +opengllib132= +initts132=0 +opengllib133= +initts133=0 +opengllib134= +initts134=-4 +opengllib135= +initts135=0 +opengllib136= +initts136=0 +opengllib137= +initts137=0 +opengllib138= +initts138=0 +opengllib139= +initts139=0 +opengllib140= +initts140=0 +opengllib141= +initts141=0 +opengllib142= +initts142=0 +opengllib143= +initts143=0 +opengllib144= +initts144=0 +opengllib145= +initts145=0 +opengllib146= +initts146=0 +opengllib147= +initts147=0 +opengllib148= +initts148=0 +opengllib149= +initts149=0 +opengllib150= +initts150=0 +opengllib151= +initts151=0 +opengllib152= +initts152=0 +opengllib153= +initts153=0 +opengllib154= +initts154=0 +opengllib155= +initts155=0 +opengllib156= +initts156=0 +opengllib157= +initts157=0 +opengllib158= +initts158=0 +opengllib159= +initts159=0 +opengllib160= +initts160=0 +opengllib161= +initts161=0 +opengllib162= +initts162=0 +opengllib163= +initts163=0 +opengllib164= +initts164=0 +opengllib165= +initts165=0 +opengllib166= +initts166=-2 +opengllib167= +initts167=0 +opengllib168= +initts168=0 +opengllib169= +initts169=0 +opengllib170= +initts170=0 +opengllib171= +initts171=0 +opengllib172= +initts172=8 +opengllib173= +initts173=8 +opengllib174= +initts174=0 +opengllib175= +initts175=0 +opengllib176= +initts176=0 +opengllib177= +initts177=0 +opengllib178= +initts178=0 +opengllib179= +initts179=0 +opengllib180= +initts180=0 +opengllib181= +initts181=0 +opengllib182= +initts182=0 +opengllib183= +initts183=0 +opengllib184= +initts184=0 +opengllib185= +initts185=0 +opengllib186= +initts186=0 +opengllib187= +initts187=0 +opengllib188= +sizy188=0 +initts188=0 +title189=X-Com Enforcer +path189=C:\Games\X-Com Enforcer\System\xcom.exe +module189= +opengllib189= +ver189=1 +flag189=32 +flagg189=0 +tflag189=0 +initx189=0 +inity189=0 +minx189=0 +miny189=0 +maxx189=0 +maxy189=0 +posx189=0 +posy189=0 +sizx189=800 +sizy189=600 +maxfps189=0 +initts189=0 +title190=X-Com Interceptor +module190= +opengllib190= +path190=C:\Games\X-Com_Interceptor\X-COM Interceptor\Interceptor.exe +ver190=0 +flag190=16418 +flagg190=0 +tflag190=0 +initx190=0 +inity190=0 +minx190=0 +miny190=0 +maxx190=0 +maxy190=0 +posx190=50 +posy190=50 +sizx190=800 +sizy190=600 +maxfps190=0 +initts190=0 +title191=Z Steel Soldiers +path191=C:\Games\ZSteelSoldiers\Bin\z2.exe +module191= +opengllib191= +ver191=8 +flag191=805462020 +flagg191=0 +tflag191=0 +initx191=0 +inity191=0 +minx191=0 +miny191=0 +maxx191=0 +maxy191=0 +posx191=50 +posy191=50 +sizx191=800 +sizy191=600 +maxfps191=0 +initts191=0 +title192=Zax Alien Hunter +path192=C:\Games\ZaxDemo\Zax.exe +module192= +opengllib192= +ver192=0 +flag192=-1476386784 +flagg192=0 +tflag192=0 +initx192=0 +inity192=0 +minx192=0 +miny192=0 +maxx192=0 +maxy192=0 +posx192=50 +posy192=50 +sizx192=800 +sizy192=600 +maxfps192=0 +initts192=0 +title193=Zero Critical (BAD) +path193=C:\Games\zero_critical_-_satin_rift\ZEROCR.EXE +module193= +opengllib193= +ver193=0 +flag193=679477858 +flagg193=8 +tflag193=0 +initx193=0 +inity193=0 +minx193=0 +miny193=0 +maxx193=0 +maxy193=0 +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 +title198=Doom 95 +path198=D:\Games\Doom95\DOOM95.EXE +module198= +opengllib198= +ver198=0 +flag198=134217762 +flagg198=2113536 +tflag198=258 +initx198=0 +inity198=0 +minx198=0 +miny198=0 +maxx198=0 +maxy198=0 +posx198=50 +posy198=50 +sizx198=800 +sizy198=600 +maxfps198=20 +initts198=-9 +title199=Urban Assault CD +path199=D:\Games\Urban Assault CD\UA.EXE +module199= +opengllib199= +ver199=0 +flag199=671236130 +flagg199=33024 +tflag199=258 +initx199=0 +inity199=0 +minx199=0 +miny199=0 +maxx199=0 +maxy199=0 +posx199=50 +posy199=50 +sizx199=800 +sizy199=600 +maxfps199=0 +initts199=0 +title200=Starcraft +path200=D:\Games\Starcraft\StarCraft.exe +module200= +opengllib200= +ver200=0 +flag200=134234115 +flagg200=2179088 +tflag200=258 +initx200=0 +inity200=0 +minx200=0 +miny200=0 +maxx200=0 +maxy200=0 +posx200=50 +posy200=50 +sizx200=800 +sizy200=600 +maxfps200=0 +initts200=0 +title201=Battle Commander +path201=D:\Games\Battle Commander\bcommand.exe +module201= +opengllib201= +ver201=0 +flag201=134217794 +flagg201=0 +tflag201=2 +initx201=0 +inity201=0 +minx201=0 +miny201=0 +maxx201=0 +maxy201=0 +posx201=50 +posy201=50 +sizx201=800 +sizy201=600 +maxfps201=0 +initts201=0 +title202=Pandemonium 2 +path202=D:\Games\Pandemonium 2\pandy.exe +module202= +opengllib202= +ver202=0 +flag202=671219714 +flagg202=1 +tflag202=0 +initx202=0 +inity202=0 +minx202=0 +miny202=0 +maxx202=0 +maxy202=0 +posx202=50 +posy202=50 +sizx202=800 +sizy202=600 +maxfps202=0 +initts202=0 +title203=Pharaoh +path203=D:\Games\Pharaoh\Pharaoh.exe +module203= +opengllib203= +ver203=0 +flag203=1208483874 +flagg203=1048576 +tflag203=0 +initx203=0 +inity203=0 +minx203=0 +miny203=0 +maxx203=0 +maxy203=0 +posx203=50 +posy203=50 +sizx203=800 +sizy203=600 +maxfps203=0 +initts203=0 +title204=Postal +path204=D:\Games\Postal\POSTAL.EXE +module204= +opengllib204= +ver204=1 +flag204=537133059 +flagg204=65600 +tflag204=266 +initx204=0 +inity204=0 +minx204=0 +miny204=0 +maxx204=0 +maxy204=0 +posx204=50 +posy204=50 +sizx204=800 +sizy204=600 +maxfps204=0 +initts204=-3 +title205=Test Drive 5 (D3D) +path205=D:\Games\Test Drive 5\TD5_D3D.exe +module205= +opengllib205= +ver205=0 +flag205=536870944 +flagg205=-2147483648 +tflag205=263 +initx205=0 +inity205=0 +minx205=0 +miny205=0 +maxx205=0 +maxy205=0 +posx205=50 +posy205=50 +sizx205=800 +sizy205=600 +maxfps205=0 +initts205=0 +title206=Take no Prisoners +path206=D:\Games\Take no Prisoners\TNP.EXE +module206= +opengllib206= +ver206=0 +flag206=2 +flagg206=16777248 +tflag206=0 +initx206=0 +inity206=0 +minx206=0 +miny206=0 +maxx206=0 +maxy206=0 +posx206=50 +posy206=50 +sizx206=800 +sizy206=600 +maxfps206=0 +initts206=0 +title207=Fallen Heaven +path207=D:\Games\Fallen haven\Exe\FALLEN.EXE +module207=MFC42.dll MSVCRT.DLL mciavi32.dll +opengllib207= +ver207=1 +flag207=135004674 +flagg207=1049120 +tflag207=259 +initx207=0 +inity207=0 +minx207=0 +miny207=0 +maxx207=0 +maxy207=0 +posx207=50 +posy207=50 +sizx207=800 +sizy207=600 +maxfps207=0 +initts207=0 +title208=Grand Theft Auto 2 +path208=D:\Games\GTA2\gta2.exe +module208=binkw32 d3ddll +opengllib208= +ver208=0 +flag208=671096866 +flagg208=1048576 +tflag208=3 +initx208=0 +inity208=0 +minx208=0 +miny208=0 +maxx208=0 +maxy208=0 +posx208=50 +posy208=50 +sizx208=400 +sizy208=300 +maxfps208=0 +initts208=0 +title209=Grand Prix Legends MAX +module209= +opengllib209= +path209=D:\Games\Grand Prix Legends MAX\gpl.exe +ver209=7 +flag209=537001986 +flagg209=134217729 +tflag209=3 +initx209=0 +inity209=0 +minx209=0 +miny209=0 +maxx209=0 +maxy209=0 +posx209=50 +posy209=50 +sizx209=800 +sizy209=600 +maxfps209=0 +initts209=0 +title210=688I Hunter Killer +path210=D:\Games\688\688I_HK.EXE +module210= +opengllib210= +ver210=0 +flag210=134479906 +flagg210=134217728 +tflag210=3 +initx210=0 +inity210=0 +minx210=0 +miny210=0 +maxx210=0 +maxy210=0 +posx210=50 +posy210=50 +sizx210=640 +sizy210=480 +maxfps210=0 +initts210=0 +title211=Gruntz +path211=D:\Games\gruntz\GRUNTZ.EXE +module211= +opengllib211= +ver211=0 +flag211=34 +flagg211=134217728 +tflag211=0 +initx211=0 +inity211=0 +minx211=0 +miny211=0 +maxx211=0 +maxy211=0 +posx211=50 +posy211=50 +sizx211=800 +sizy211=600 +maxfps211=0 +initts211=0 +title212=Grand Touring +path212=D:\Games\Grand Touring\gt.exe +module212= +opengllib212= +ver212=0 +flag212=16388 +flagg212=134283264 +tflag212=275 +initx212=0 +inity212=0 +minx212=0 +miny212=0 +maxx212=0 +maxy212=0 +posx212=50 +posy212=50 +sizx212=400 +sizy212=300 +maxfps212=0 +initts212=8 +title213=Gunman Chronicles +path213=D:\Games\Gunman\gunman.exe +module213= +opengllib213= +ver213=0 +flag213=0 +flagg213=-2013134848 +tflag213=0 +initx213=0 +inity213=0 +minx213=0 +miny213=0 +maxx213=0 +maxy213=0 +posx213=0 +posy213=0 +sizx213=400 +sizy213=300 +maxfps213=0 +initts213=0 +title214=Nocturne +path214=D:\Games\Nocturne\nocturne.exe +module214= +opengllib214= +ver214=0 +flag214=2 +flagg214=402653264 +tflag214=387 +initx214=0 +inity214=0 +minx214=0 +miny214=0 +maxx214=0 +maxy214=0 +posx214=50 +posy214=50 +sizx214=400 +sizy214=300 +maxfps214=0 +initts214=0 +title215=Koplio +path215=D:\Games\Koplio\KOPLIO.exe +module215= +opengllib215= +ver215=0 +flag215=545259520 +flagg215=134217729 +tflag215=0 +initx215=0 +inity215=0 +minx215=0 +miny215=0 +maxx215=0 +maxy215=0 +posx215=50 +posy215=50 +sizx215=800 +sizy215=600 +maxfps215=0 +initts215=0 +title216=Nightmare Ned +path216=D:\Games\Ned\NITENED.EXE +module216= +opengllib216= +ver216=0 +flag216=537395202 +flagg216=135266305 +tflag216=0 +initx216=0 +inity216=0 +minx216=0 +miny216=0 +maxx216=0 +maxy216=0 +posx216=0 +posy216=0 +sizx216=800 +sizy216=600 +maxfps216=0 +initts216=0 +title217=Rollcage +path217=D:\Games\Rollcage\Direct3D\Rollcage.exe +module217= +opengllib217= +ver217=0 +flag217=268698112 +flagg217=-2013200384 +tflag217=387 +initx217=0 +inity217=0 +minx217=0 +miny217=0 +maxx217=0 +maxy217=0 +posx217=50 +posy217=50 +sizx217=800 +sizy217=600 +maxfps217=0 +initts217=3 +title218=Rogue Spear (BAD) +module218= +opengllib218= +path218=D:\Games\Rogue Spear\RogueSpear.exe +ver218=1 +flag218=16388 +flagg218=134217984 +tflag218=2 +initx218=0 +inity218=0 +minx218=0 +miny218=0 +maxx218=0 +maxy218=0 +posx218=50 +posy218=50 +sizx218=400 +sizy218=300 +maxfps218=0 +initts218=0 +title219=Black Thorn +path219=D:\Games\BlackThorn\BlackThorn.exe +module219= +opengllib219= +ver219=0 +flag219=0 +flagg219=-2013265664 +tflag219=66 +initx219=0 +inity219=0 +minx219=0 +miny219=0 +maxx219=0 +maxy219=0 +posx219=50 +posy219=50 +sizx219=800 +sizy219=600 +maxfps219=0 +initts219=0 +title220=Wargames (demo) +path220=D:\Games\Wargames\wargames.exe +module220= +opengllib220= +ver220=0 +flag220=268436642 +flagg220=134217728 +tflag220=3 +initx220=0 +inity220=0 +minx220=0 +miny220=0 +maxx220=0 +maxy220=0 +posx220=50 +posy220=50 +sizx220=800 +sizy220=600 +maxfps220=0 +initts220=0 +title221=Silent Storm Demo +path221=D:\Games\Silent Storm Demo\SilentStormDemo.exe +module221= +opengllib221= +ver221=0 +flag221=536870913 +flagg221=-2013265664 +tflag221=3 +initx221=0 +inity221=0 +minx221=0 +miny221=0 +maxx221=0 +maxy221=0 +posx221=50 +posy221=50 +sizx221=800 +sizy221=600 +maxfps221=0 +initts221=0 +title222=glsample.exe +path222=D:\DxWnd\code examples\glsample\Debug\glsample.exe +module222= +opengllib222= +ver222=0 +flag222=0 +flagg222=134348800 +tflag222=3 +initx222=0 +inity222=0 +minx222=0 +miny222=0 +maxx222=0 +maxy222=0 +posx222=0 +posy222=0 +sizx222=800 +sizy222=600 +maxfps222=0 +initts222=0 flagh0=0 flagi0=0 flagh1=0 @@ -1179,7 +4480,7 @@ flagh8=0 flagi8=0 flagh9=0 flagi9=0 -flagh10=0 +flagh10=2 flagi10=0 flagh11=0 flagi11=0 @@ -1273,8 +4574,384 @@ flagh55=0 flagi55=0 flagh56=0 flagi56=0 -flagh57=1 +flagh57=0 flagi57=0 -title58=Premier Manager 97 -module58= -opengllib58= +flagh58=0 +flagi58=0 +flagh59=0 +flagi59=0 +flagh60=2 +flagi60=0 +flagh61=0 +flagi61=0 +flagh62=0 +flagi62=0 +flagh63=0 +flagi63=0 +flagh64=0 +flagi64=0 +flagh65=0 +flagi65=0 +flagh66=0 +flagi66=0 +flagh67=0 +flagi67=0 +flagh68=0 +flagi68=0 +flagh69=0 +flagi69=0 +flagh70=0 +flagi70=0 +flagh71=0 +flagi71=0 +flagh72=0 +flagi72=0 +flagh73=0 +flagi73=0 +flagh74=0 +flagi74=0 +flagh75=0 +flagi75=0 +flagh76=0 +flagi76=0 +flagh77=0 +flagi77=0 +flagh78=0 +flagi78=0 +flagh79=0 +flagi79=0 +flagh80=0 +flagi80=0 +flagh81=0 +flagi81=0 +flagh82=0 +flagi82=0 +flagh83=0 +flagi83=0 +flagh84=0 +flagi84=0 +flagh85=0 +flagi85=0 +flagh86=0 +flagi86=0 +flagh87=0 +flagi87=0 +flagh88=0 +flagi88=0 +flagh89=0 +flagi89=0 +flagh90=0 +flagi90=0 +flagh91=0 +flagi91=0 +flagh92=0 +flagi92=0 +flagh93=0 +flagi93=0 +flagh94=0 +flagi94=0 +flagh95=0 +flagi95=0 +flagh96=0 +flagi96=0 +flagh97=0 +flagi97=0 +flagh98=0 +flagi98=0 +flagh99=0 +flagi99=0 +flagh100=0 +flagi100=0 +flagh101=0 +flagi101=0 +flagh102=0 +flagi102=0 +flagh103=0 +flagi103=0 +flagh104=0 +flagi104=0 +flagh105=0 +flagi105=0 +flagh106=0 +flagi106=0 +flagh107=0 +flagi107=0 +flagh108=0 +flagi108=0 +flagh109=0 +flagi109=0 +flagh110=0 +flagi110=0 +flagh111=0 +flagi111=0 +flagh112=0 +flagi112=0 +flagh113=0 +flagi113=0 +flagh114=0 +flagi114=0 +flagh115=0 +flagi115=0 +flagh116=0 +flagi116=0 +flagh117=0 +flagi117=0 +flagh118=0 +flagi118=0 +flagh119=0 +flagi119=0 +flagh120=0 +flagi120=0 +flagh121=0 +flagi121=0 +flagh122=0 +flagi122=0 +flagh123=0 +flagi123=0 +flagh124=0 +flagi124=0 +flagh125=0 +flagi125=0 +flagh126=0 +flagi126=0 +flagh127=0 +flagi127=0 +flagh128=0 +flagi128=0 +flagh129=0 +flagi129=0 +flagh130=0 +flagi130=0 +flagh131=0 +flagi131=0 +flagh132=0 +flagi132=0 +flagh133=0 +flagi133=0 +flagh134=0 +flagi134=0 +flagh135=0 +flagi135=0 +flagh136=0 +flagi136=0 +flagh137=0 +flagi137=0 +flagh138=0 +flagi138=0 +flagh139=0 +flagi139=0 +flagh140=0 +flagi140=0 +flagh141=0 +flagi141=0 +flagh142=0 +flagi142=0 +flagh143=0 +flagi143=0 +flagh144=0 +flagi144=0 +flagh145=0 +flagi145=0 +flagh146=0 +flagi146=0 +flagh147=0 +flagi147=0 +flagh148=0 +flagi148=0 +flagh149=0 +flagi149=0 +flagh150=0 +flagi150=0 +flagh151=0 +flagi151=0 +flagh152=0 +flagi152=0 +flagh153=0 +flagi153=0 +flagh154=0 +flagi154=0 +flagh155=0 +flagi155=0 +flagh156=0 +flagi156=0 +flagh157=0 +flagi157=0 +flagh158=0 +flagi158=0 +flagh159=0 +flagi159=0 +flagh160=0 +flagi160=0 +flagh161=0 +flagi161=0 +flagh162=0 +flagi162=0 +flagh163=0 +flagi163=0 +flagh164=0 +flagi164=0 +flagh165=0 +flagi165=0 +flagh166=0 +flagi166=0 +flagh167=0 +flagi167=0 +flagh168=0 +flagi168=0 +flagh169=0 +flagi169=0 +flagh170=0 +flagi170=0 +flagh171=0 +flagi171=0 +flagh172=0 +flagi172=0 +flagh173=0 +flagi173=0 +flagh174=0 +flagi174=0 +flagh175=0 +flagi175=0 +flagh176=2 +flagi176=0 +flagh177=0 +flagi177=0 +flagh178=0 +flagi178=0 +flagh179=0 +flagi179=0 +flagh180=0 +flagi180=0 +flagh181=0 +flagi181=0 +flagh182=0 +flagi182=0 +flagh183=0 +flagi183=0 +flagh184=0 +flagi184=0 +flagh185=0 +flagi185=0 +flagh186=0 +flagi186=0 +flagh187=0 +flagi187=0 +flagh188=0 +flagi188=0 +flagh189=0 +flagi189=0 +flagh190=0 +flagi190=0 +flagh191=0 +flagi191=0 +flagh192=0 +flagi192=0 +flagh193=0 +flagi193=0 +flagh194=0 +flagi194=0 +flagh195=0 +flagi195=0 +flagh196=0 +flagi196=0 +flagh197=0 +flagi197=0 +flagh198=0 +flagi198=0 +flagh199=0 +flagi199=0 +flagh200=0 +flagi200=0 +flagh201=0 +flagi201=0 +flagh202=0 +flagi202=0 +flagh203=0 +flagi203=0 +flagh204=0 +flagi204=0 +flagh205=2 +flagi205=0 +flagh206=0 +flagi206=0 +flagh207=0 +flagi207=0 +flagh208=0 +flagi208=0 +flagh209=0 +flagi209=0 +flagh210=0 +flagi210=0 +flagh211=0 +flagi211=0 +flagh212=0 +flagi212=0 +flagh213=0 +flagi213=0 +flagh214=0 +flagi214=0 +flagh215=0 +flagi215=0 +flagh216=0 +flagi216=0 +flagh217=0 +flagi217=0 +flagh218=0 +flagi218=0 +flagh219=0 +flagi219=0 +flagh220=0 +flagi220=0 +flagh221=0 +flagi221=0 +flagh222=0 +flagi222=0 +title223=Dungeon Keeper D3D +path223=D:\Games\Keeper95\keepd3d.exe +module223= +opengllib223= +ver223=0 +flag223=134217760 +flagg223=134217728 +flagh223=1 +flagi223=0 +tflag223=3 +initx223=0 +inity223=0 +minx223=0 +miny223=0 +maxx223=0 +maxy223=0 +posx223=50 +posy223=50 +sizx223=800 +sizy223=600 +maxfps223=0 +initts223=0 +title224=Gangsters +path224=D:\Games\Gangsters\gangsters.exe +module224= +opengllib224= +ver224=0 +flag224=134217730 +flagg224=135266304 +flagh224=0 +flagi224=0 +tflag224=0 +initx224=0 +inity224=0 +minx224=0 +miny224=0 +maxx224=0 +maxy224=0 +posx224=50 +posy224=50 +sizx224=800 +sizy224=600 +maxfps224=0 +initts224=0 +[window] +posx=1443 +posy=162 +sizx=320 +sizy=527 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 5a691cc..a04251d 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -97,3 +97,21 @@ D3D hooking: Added Wireframe option for D3D games Added hooking of CLSID_DxDiagProvider through CoCreateInstance Fixed (further simplified) clipping handling of primary/backbuffer surfaces ChangeDisplaySettings hook: fixed x,y coordinate inversion in log message + +v2.02.19 +Saves GUI coordinates +Fixed "Remap client rect" option for Diablo's windows and Premier Manager 98 mouse movements +Added "Highlight blit to primary" option to draw a yellow bounding box around blits to primary surface +Fixed some exception conditions when closing the programs +Fixed CreateSurface handling to allow Premier Manager 98 start in emulated mode +Fixed ONEPIXELFIX handling +Fixed BIG WIN handling for Diablo's windows +Fixed FillRect hook to prevent filling outside virtual desktop +Disabled hooking of system libraries +Fixed a nasty bug that caused your desktop to freeze until shutdown !!! +Fixed GetWindowRect handling for windows not created by the task: Diablo queries the explorer window size! Now the retrieved RECT can't be larger than the virtual desktop + + + + + diff --git a/dll/dxemublt.cpp b/dll/dxemublt.cpp index 19482b1..ccab3dd 100644 --- a/dll/dxemublt.cpp +++ b/dll/dxemublt.cpp @@ -21,6 +21,8 @@ extern int Set_dwSize_From_Surface(LPDIRECTDRAWSURFACE); #define SwitchdwSize(s) s.dwSize=(s.dwSize==sizeof(DDSURFACEDESC))?sizeof(DDSURFACEDESC2):sizeof(DDSURFACEDESC) #define DXWNDDIRECTBLITTING 1 +#define MARKBLITCOLOR32 0x00FFFF00 +#define MARKBLITCOLOR16 0x0FF0 extern Blt_Type pBlt; EmuBlt_Type pEmuBlt; RevBlt_Type pRevBlt; @@ -29,12 +31,44 @@ RevBlt_Type pRevBlt; // Emulated blitting procedures: fills a 32BPP surface from the content of 8BPP or 16BPP ones. //--------------------------------------------------------------------------------------------// +static void MarkRect32(DWORD *dest, int w, int h, int destpitch) +{ + int x, y; + + for(x = 0; x < w; x ++) *(dest ++) = MARKBLITCOLOR32; + dest += destpitch; + for(y = 0; y < h-2; y ++){ + *dest = MARKBLITCOLOR32; + dest += w-1; + *dest = MARKBLITCOLOR32; + dest += destpitch + 1; + } + for(x = 0; x < w; x ++) *(dest ++) = MARKBLITCOLOR32; + return; +} + +static void MarkRect16(SHORT *dest, int w, int h, int destpitch) +{ + int x, y; + + for(x = 0; x < w; x ++) *(dest ++) = MARKBLITCOLOR16; + dest += destpitch; + for(y = 0; y < h-2; y ++){ + *dest = MARKBLITCOLOR16; + dest += w-1; + *dest = MARKBLITCOLOR16; + dest += destpitch + 1; + } + for(x = 0; x < w; x ++) *(dest ++) = MARKBLITCOLOR16; + return; +} + static HRESULT WINAPI EmuBlt_8_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdestrect, LPDIRECTDRAWSURFACE lpddssrc, LPRECT lpsrcrect, DWORD dwflags, LPVOID lpsurface) { HRESULT res; BYTE *src8; - DWORD *dest; + DWORD *dest, *dest0; DDSURFACEDESC2 ddsd_src, ddsd_dst; long srcpitch, destpitch; DWORD x, y, w, h; @@ -75,6 +109,7 @@ static HRESULT WINAPI EmuBlt_8_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest dest += lpdestrect->top*ddsd_dst.lPitch; dest += lpdestrect->left; destpitch = ddsd_dst.lPitch - w; + dest0 = dest; src8 = (BYTE *)lpsurface; src8 += lpsrcrect->top*ddsd_src.lPitch; @@ -90,6 +125,8 @@ static HRESULT WINAPI EmuBlt_8_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest src8 += srcpitch; } + if(dxw.dwFlags3 & MARKBLIT) MarkRect32(dest0, w, h, destpitch); + res=(*pUnlockMethod(lpddsdst))(lpddsdst, lpdestrect); if (res) OutTraceE("EmuBlt8_32: Unlock ERROR dds=%x res=%x(%s) at %d\n", lpddsdst, res, ExplainDDError(res), __LINE__); res=(*pUnlockMethod(lpddssrc))(lpddssrc, lpsrcrect); @@ -103,7 +140,7 @@ static HRESULT WINAPI EmuBlt_16_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes { HRESULT res; WORD *src16; - DWORD *dest; + DWORD *dest, *dest0; DDSURFACEDESC2 ddsd_src, ddsd_dst; long srcpitch, destpitch; DWORD x, y, w, h; @@ -144,6 +181,7 @@ static HRESULT WINAPI EmuBlt_16_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes dest += lpdestrect->top*ddsd_dst.lPitch; dest += lpdestrect->left; destpitch = ddsd_dst.lPitch - w; + dest0 = dest; ddsd_src.lPitch >>= 1; src16 = (WORD *)(lpsurface ? lpsurface:ddsd_src.lpSurface); @@ -187,6 +225,8 @@ static HRESULT WINAPI EmuBlt_16_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes src16 += srcpitch; } + if(dxw.dwFlags3 & MARKBLIT) MarkRect32(dest0, w, h, destpitch); + res=(*pUnlockMethod(lpddsdst))(lpddsdst, lpdestrect); if (res) OutTraceE("EmuBlt16_32: Unlock ERROR dds=%x res=%x(%s) at %d\n", lpddsdst, res, ExplainDDError(res), __LINE__); res=(*pUnlockMethod(lpddssrc))(lpddssrc, lpsrcrect); @@ -199,7 +239,7 @@ static HRESULT WINAPI EmuBlt_24_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes { HRESULT res; BYTE *src24; - DWORD *dest; + DWORD *dest, *dest0; DDSURFACEDESC2 ddsd_src, ddsd_dst; long srcpitch, destpitch; DWORD x, y, w, h; @@ -240,6 +280,7 @@ static HRESULT WINAPI EmuBlt_24_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes dest += lpdestrect->top*ddsd_dst.lPitch; dest += lpdestrect->left; destpitch = ddsd_dst.lPitch - w; + dest0 = dest; src24 = (BYTE *)lpsurface; src24 += lpsrcrect->top*ddsd_src.lPitch; @@ -258,6 +299,8 @@ static HRESULT WINAPI EmuBlt_24_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes src24 += srcpitch; } + if(dxw.dwFlags3 & MARKBLIT) MarkRect32(dest0, w, h, destpitch); + res=(*pUnlockMethod(lpddsdst))(lpddsdst, lpdestrect); if (res) OutTraceE("EmuBlt24_32: Unlock ERROR dds=%x res=%x(%s) at %d\n", lpddsdst, res, ExplainDDError(res), __LINE__); res=(*pUnlockMethod(lpddssrc))(lpddssrc, lpsrcrect); @@ -276,7 +319,7 @@ static HRESULT WINAPI EmuBlt_32_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes long srcpitch, destpitch; HRESULT res; DWORD *src32; - DWORD *dest; + DWORD *dest, dest0; DDSURFACEDESC2 ddsd_src, ddsd_dst; w = lpdestrect->right - lpdestrect->left; @@ -315,6 +358,7 @@ static HRESULT WINAPI EmuBlt_32_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes dest += lpdestrect->top*ddsd_dst.lPitch; dest += lpdestrect->left; destpitch = ddsd_dst.lPitch - w; + dest0 = dest; ddsd_src.lPitch >>= 2; src32 = (DWORD *)(lpsurface ? lpsurface:ddsd_src.lpSurface); @@ -330,6 +374,8 @@ static HRESULT WINAPI EmuBlt_32_to_32(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes src32 += srcpitch; } + if(dxw.dwFlags3 & MARKBLIT) MarkRect32(dest0, w, h, destpitch); + res=(*pUnlockMethod(lpddsdst))(lpddsdst,lpdestrect); if (res) OutTraceE("EmuBlt32_32: Unlock ERROR dds=%x res=%x(%s) at %d\n", lpddsdst, res, ExplainDDError(res), __LINE__); res=(*pUnlockMethod(lpddssrc))(lpddssrc, lpsrcrect); @@ -343,7 +389,7 @@ static HRESULT WINAPI EmuBlt_8_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest { HRESULT res; BYTE *src8; - SHORT *dest; + SHORT *dest, *dest0; DDSURFACEDESC2 ddsd_src, ddsd_dst; long srcpitch, destpitch; DWORD x, y, w, h; @@ -384,6 +430,7 @@ static HRESULT WINAPI EmuBlt_8_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest dest += lpdestrect->top*ddsd_dst.lPitch; dest += lpdestrect->left; destpitch = ddsd_dst.lPitch - w; + dest0 = dest; src8 = (BYTE *)lpsurface; src8 += lpsrcrect->top*ddsd_src.lPitch; @@ -393,15 +440,14 @@ static HRESULT WINAPI EmuBlt_8_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdest // OutTraceD("DEBUG: h=%d w=%d src=%x dst=%x spitch=%d dpitch=%d\n",h,w,src8,dest,srcpitch,destpitch); for(y = 0; y < h; y ++){ for(x = 0; x < w; x ++){ - //DWORD pixel; - //pixel = PaletteEntries[*(src8 ++)]; - //*(dest ++) = ((pixel&0x0000FF)>>3) | ((pixel&0x00FF00)>>7) | ((pixel&0xFF0000)>>19); *(dest ++) = (SHORT)PaletteEntries[*(src8 ++)]; } dest += destpitch; src8 += srcpitch; } + if(dxw.dwFlags3 & MARKBLIT) MarkRect16(dest0, w, h, destpitch); + res=(*pUnlockMethod(lpddsdst))(lpddsdst, lpdestrect); if (res) OutTraceE("EmuBlt8_16: Unlock ERROR dds=%x res=%x(%s) at %d\n", lpddsdst, res, ExplainDDError(res), __LINE__); res=(*pUnlockMethod(lpddssrc))(lpddssrc, lpsrcrect); @@ -426,7 +472,7 @@ static HRESULT WINAPI EmuBlt_24_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes { HRESULT res; BYTE *src24; - SHORT *dest; + SHORT *dest, *dest0; DDSURFACEDESC2 ddsd_src, ddsd_dst; long srcpitch, destpitch; DWORD x, y, w, h; @@ -467,6 +513,7 @@ static HRESULT WINAPI EmuBlt_24_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes dest += lpdestrect->top*ddsd_dst.lPitch; dest += lpdestrect->left; destpitch = ddsd_dst.lPitch - w; + dest0 = dest; src24 = (BYTE *)lpsurface; src24 += lpsrcrect->top*ddsd_src.lPitch; @@ -482,6 +529,8 @@ static HRESULT WINAPI EmuBlt_24_to_16(LPDIRECTDRAWSURFACE lpddsdst, LPRECT lpdes src24 += srcpitch; } + if(dxw.dwFlags3 & MARKBLIT) MarkRect16(dest0, w, h, destpitch); + res=(*pUnlockMethod(lpddsdst))(lpddsdst, lpdestrect); if (res) OutTraceE("EmuBlt24_16: Unlock ERROR dds=%x res=%x(%s) at %d\n", lpddsdst, res, ExplainDDError(res), __LINE__); res=(*pUnlockMethod(lpddssrc))(lpddssrc, lpsrcrect); diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index b5316ee..1f4adb6 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -727,8 +727,8 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp lparam = MAKELPARAM(curr.x, curr.y); OutTraceC("WindowProc: hwnd=%x pos XY=(%d,%d)->(%d,%d)\n", hwnd, prev.x, prev.y, curr.x, curr.y); } - GetHookInfo()->CursorX=(short)curr.x; - GetHookInfo()->CursorY=(short)curr.y; + GetHookInfo()->CursorX=LOWORD(lparam); + GetHookInfo()->CursorY=HIWORD(lparam); break; // fall through cases: case WM_MOUSEWHEEL: @@ -750,8 +750,8 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp lparam = MAKELPARAM(curr.x, curr.y); OutTraceC("WindowProc: hwnd=%x pos XY=(%d,%d)->(%d,%d)\n", hwnd, prev.x, prev.y, curr.x, curr.y); } - GetHookInfo()->CursorX=(short)curr.x; - GetHookInfo()->CursorY=(short)curr.y; + GetHookInfo()->CursorX=LOWORD(lparam); + GetHookInfo()->CursorY=HIWORD(lparam); break; case WM_SETFOCUS: if (dxw.dwFlags1 & ENABLECLIPPING) extClipCursor(lpClipRegion); @@ -1279,6 +1279,7 @@ int HookInit(TARGETMAP *target, HWND hwnd) WINDOWPOS wp; HMODULE base; char *sModule; + char sModuleBuf[60+1]; static char *dxversions[14]={ "Automatic", "DirectX1~6", "", "", "", "", "", "DirectX7", "DirectX8", "DirectX9", "DirectX10", "DirectX11", "None", "" @@ -1291,8 +1292,8 @@ int HookInit(TARGETMAP *target, HWND hwnd) dxw.hParentWnd=GetParent(hwnd); dxw.hChildWnd=hwnd; - OutTraceD("HookInit: path=\"%s\" module=\"%s\" dxversion=%s hWnd=%x dxw.hParentWnd=%x\n", - target->path, target->module, dxversions[dxw.dwTargetDDVersion], hwnd, dxw.hParentWnd); + OutTraceD("HookInit: path=\"%s\" module=\"%s\" dxversion=%s hWnd=%x dxw.hParentWnd=%x desktop=%x\n", + target->path, target->module, dxversions[dxw.dwTargetDDVersion], hwnd, dxw.hParentWnd, GetDesktopWindow()); if (IsDebug){ DWORD dwStyle, dwExStyle; dwStyle=GetWindowLong(dxw.GethWnd(), GWL_STYLE); @@ -1327,17 +1328,19 @@ int HookInit(TARGETMAP *target, HWND hwnd) // extern BOOL ListProcessModules(BOOL); // ListProcessModules(true); //} - sModule=strtok(dxw.gsModules," "); + strncpy(sModuleBuf, dxw.gsModules, 60); + sModule=strtok(sModuleBuf," ;"); while (sModule) { base=(*pLoadLibraryA)(sModule); if(!base){ OutTraceE("HookInit: LoadLibrary ERROR module=%s err=%d\n", sModule, GetLastError()); - continue; } - OutTraceD("HookInit: hooking additional module=%s base=%x\n", sModule, base); - if (dxw.dwTFlags & OUTIMPORTTABLE) DumpImportTable(base); - HookModule(base, dxw.dwTargetDDVersion); - sModule=strtok(NULL," "); + else { + OutTraceD("HookInit: hooking additional module=%s base=%x\n", sModule, base); + if (dxw.dwTFlags & OUTIMPORTTABLE) DumpImportTable(base); + HookModule(base, dxw.dwTargetDDVersion); + } + sModule=strtok(NULL," ;"); } diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp index 8fda53b..d71c6b9 100644 --- a/dll/dxwcore.cpp +++ b/dll/dxwcore.cpp @@ -141,6 +141,17 @@ RECT dxwCore::GetScreenRect() return Screen; } +BOOL dxwCore::IsDesktop(HWND hwnd) +{ + return ( + (hwnd == 0) + || + (hwnd == (*pGetDesktopWindow)()) + || + (hwnd == hWnd) + ); +} + // v2.1.93: FixCursorPos completely revised to introduce a clipping tolerance in // clipping regions as well as in normal operations @@ -264,14 +275,6 @@ void dxwCore::EraseClipCursor() (*pClipCursor)(NULL); } -// MapWindow Rect: returns a rectangle in the real coordinate system from the virtual coordinates -// of an emulated fullscreen window. NULL or void returns the rectangle of the whole client area. - -RECT dxwCore::MapWindowRect(void) -{ - return MapWindowRect(NULL); -} - RECT dxwCore::MapWindowRect(LPRECT lpRect) { POINT UpLeft={0,0}; @@ -298,7 +301,17 @@ RECT dxwCore::MapWindowRect(LPRECT lpRect) return RetRect; } -void dxwCore::MapRect(int *nXDest, int *nYDest, int *nWDest, int *nHDest) +void dxwCore::MapClient(LPRECT rect) +{ + RECT client; + (*pGetClientRect)(hWnd, &client); + rect->left= rect->left * client.right / dwScreenWidth; + rect->top= rect->top * client.bottom / dwScreenHeight; + rect->right= rect->right * client.right / dwScreenWidth; + rect->bottom= rect->bottom * client.bottom / dwScreenHeight; +} + +void dxwCore::MapClient(int *nXDest, int *nYDest, int *nWDest, int *nHDest) { RECT client; (*pGetClientRect)(hWnd, &client); @@ -308,7 +321,7 @@ void dxwCore::MapRect(int *nXDest, int *nYDest, int *nWDest, int *nHDest) *nHDest= *nHDest * client.bottom / dwScreenHeight; } -void dxwCore::MapPoint(LPPOINT lppoint) +void dxwCore::MapClient(LPPOINT lppoint) { RECT client; (*pGetClientRect)(hWnd, &client); @@ -316,12 +329,109 @@ void dxwCore::MapPoint(LPPOINT lppoint) lppoint->y = (lppoint->y * client.bottom) / dwScreenHeight; } -void dxwCore::UnmapPoint(LPPOINT lppoint) +void dxwCore::MapWindow(LPRECT rect) { RECT client; + POINT upleft = {0,0}; (*pGetClientRect)(hWnd, &client); - if (client.right) lppoint->x = (lppoint->x * dwScreenWidth) / client.right; - if (client.bottom) lppoint->y = (lppoint->y * dwScreenHeight) / client.bottom; + (*pClientToScreen)(hWnd, &upleft); + rect->left= upleft.x + ((rect->left * client.right) / dwScreenWidth); + rect->top= upleft.y + ((rect->top * client.bottom) / dwScreenHeight); + rect->right= upleft.x + ((rect->right * client.right) / dwScreenWidth); + rect->bottom= upleft.y + ((rect->bottom * client.bottom) / dwScreenHeight); +} + +void dxwCore::MapWindow(int *nXDest, int *nYDest, int *nWDest, int *nHDest) +{ + RECT client; + POINT upleft = {0,0}; + (*pGetClientRect)(hWnd, &client); + (*pClientToScreen)(hWnd, &upleft); + *nXDest= upleft.x + ((*nXDest * client.right) / dwScreenWidth); + *nYDest= upleft.y + ((*nYDest * client.bottom) / dwScreenHeight); + *nWDest= (*nWDest * client.right) / dwScreenWidth; + *nHDest= (*nHDest * client.bottom) / dwScreenHeight; +} + +void dxwCore::MapWindow(LPPOINT lppoint) +{ + RECT client; + POINT upleft = {0,0}; + (*pGetClientRect)(hWnd, &client); + (*pClientToScreen)(hWnd, &upleft); + lppoint->x = upleft.x + ((lppoint->x * client.right) / dwScreenWidth); + lppoint->y = upleft.y + ((lppoint->y * client.bottom) / dwScreenHeight); +} + +POINT dxwCore::ClientOffset(HWND hwnd) +{ + RECT desktop; + POINT upleft, win0, desk0, ret; + ret.x = ret.y = 0; + + (*pGetClientRect)(hWnd,&desktop); + if(!desktop.right || !desktop.bottom) return ret; + + upleft.x = upleft.y = 0; + (*pClientToScreen)(hwnd, &upleft); + win0 = upleft; + upleft.x = upleft.y = 0; + (*pClientToScreen)(hWnd, &upleft); + desk0 = upleft; + if (desktop.right) ret.x = ((win0.x - desk0.x) * (LONG)dwScreenWidth) / desktop.right; + if (desktop.bottom) ret.y = ((win0.y - desk0.y) * (LONG)dwScreenHeight) / desktop.bottom; + OutTraceB("ClientOffset: hwnd=%x offset=(%d,%d)\n", hwnd, ret.x, ret.y); + return ret; +} + +RECT dxwCore::GetWindowRect(RECT win) +{ + RECT desktop; + POINT desk0; + desk0.x = desk0.y = 0; + + (*pGetClientRect)(hWnd, &desktop); + (*pClientToScreen)(hWnd,&desk0); + + if(!desktop.right || !desktop.bottom) return win; + + win.left = ((win.left - desk0.x) * (LONG)dwScreenWidth) / desktop.right; + win.top = ((win.top - desk0.y) * (LONG)dwScreenHeight) / desktop.bottom; + win.right = ((win.right - desk0.x) * (LONG)dwScreenWidth) / desktop.right; + win.bottom = ((win.bottom - desk0.y) * (LONG)dwScreenWidth) / desktop.right; + + return win; +} + +RECT dxwCore::GetClientRect(RECT win) +{ + RECT desktop; + (*pGetClientRect)(hWnd, &desktop); + + if(!desktop.right || !desktop.bottom) return win; + + win.left = (win.left * dwScreenWidth) / desktop.right; + win.top = (win.top * dwScreenHeight) / desktop.bottom; + win.right = (win.right * dwScreenWidth) / desktop.right; + win.bottom = (win.bottom * dwScreenHeight) / desktop.bottom; + + return win; +} + +POINT dxwCore::AddCoordinates(POINT p1, POINT p2) +{ + POINT ps; + ps.x = p1.x + p2.x; + ps.y = p1.y + p2.y; + return ps; +} + +POINT dxwCore::SubCoordinates(POINT p1, POINT p2) +{ + POINT ps; + ps.x = p1.x - p2.x; + ps.y = p1.y - p2.y; + return ps; } void dxwCore::ScreenRefresh(void) @@ -331,7 +441,6 @@ void dxwCore::ScreenRefresh(void) #define DXWREFRESHINTERVAL 20 LPDIRECTDRAWSURFACE lpDDSPrim; -// extern LPDIRECTDRAWSURFACE GetPrimarySurface(); extern HRESULT WINAPI extBlt(LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, LPDIRECTDRAWSURFACE lpddssrc, LPRECT lpsrcrect, DWORD dwflags, LPDDBLTFX lpddbltfx); static int t = -1; @@ -376,7 +485,7 @@ static void CountFPS(HWND hwnd) DWORD tmp; tmp = (*pGetTickCount)(); if((tmp - time) > 1000) { - char sBuf[80+12+1]; // title + fps string + terminator + char sBuf[80+15+1]; // title + fps string + terminator char *fpss; // log fps count OutTrace("FPS: Delta=%x FPSCount=%d\n", (tmp-time), FPSCount); @@ -387,7 +496,7 @@ static void CountFPS(HWND hwnd) GetWindowText(hwnd, sBuf, 80); fpss=strstr(sBuf," ~ ("); if(fpss==NULL) fpss=&sBuf[strlen(sBuf)]; - sprintf(fpss, " ~ (%d FPS)", FPSCount); + sprintf_s(fpss, 15, " ~ (%d FPS)", FPSCount); SetWindowText(hwnd, sBuf); } // reset @@ -396,7 +505,7 @@ static void CountFPS(HWND hwnd) } else { FPSCount++; - OutTrace("FPS: Delta=%x FPSCount++=%d\n", (tmp-time), FPSCount); + OutTraceB("FPS: Delta=%x FPSCount++=%d\n", (tmp-time), FPSCount); } } @@ -573,7 +682,7 @@ void dxwCore::ShowFPS(HDC xdc) SetTextColor(xdc,color); //SetBkMode(xdc, TRANSPARENT); SetBkMode(xdc, OPAQUE); - sprintf(sBuf, "FPS: %d", GetHookInfo()->FPSCount); + sprintf_s(sBuf, 80, "FPS: %d", GetHookInfo()->FPSCount); TextOut(xdc, x, y, sBuf, strlen(sBuf)); } @@ -602,7 +711,7 @@ void dxwCore::ShowFPS(LPDIRECTDRAWSURFACE lpdds) SetTextColor(xdc,color); //SetBkMode(xdc, TRANSPARENT); SetBkMode(xdc, OPAQUE); - sprintf(sBuf, "FPS: %d", GetHookInfo()->FPSCount); + sprintf_s(sBuf, 80, "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 a7577ea..66da8bf 100644 --- a/dll/dxwcore.hpp +++ b/dll/dxwcore.hpp @@ -20,10 +20,9 @@ public: // methods void SetScreenSize(int x, int y) {if(x)dwScreenWidth=x; if(y)dwScreenHeight=y;} DWORD GetScreenWidth(void) {return dwScreenWidth;} DWORD GetScreenHeight(void) {return dwScreenHeight;} - RECT GetScreenRect(void); - void MapRect(int *, int *, int *, int *); void SetFullScreen(BOOL fs) {FullScreen=fs;} BOOL IsFullScreen() {return FullScreen;} + BOOL IsDesktop(HWND); POINT FixCursorPos(POINT); POINT FixCursorPos(HWND, POINT); void FixNCHITCursorPos(LPPOINT); @@ -31,8 +30,18 @@ public: // methods void EraseClipCursor(void); RECT MapWindowRect(LPRECT lpRect); RECT MapWindowRect(void); - void MapPoint(LPPOINT); - void UnmapPoint(LPPOINT); + void MapClient(LPPOINT); + void MapClient(LPRECT); + void MapClient(int *, int *, int *, int *); + void MapWindow(LPPOINT); + void MapWindow(LPRECT); + void MapWindow(int *, int *, int *, int *); + RECT GetScreenRect(void); + RECT GetWindowRect(RECT); + RECT GetClientRect(RECT); + POINT AddCoordinates(POINT, POINT); + POINT SubCoordinates(POINT, POINT); + POINT ClientOffset(HWND); void ScreenRefresh(void); BOOL HandleFPS(void); DWORD GetTickCount(void); diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index 4ec646a..a7a6cc6 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -24,7 +24,7 @@ along with this program. If not, see . #include "dxwnd.h" #include "dxwcore.hpp" -#define VERSION "2.02.18" +#define VERSION "2.02.19" LRESULT CALLBACK HookProc(int ncode, WPARAM wparam, LPARAM lparam); diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 5cbd7d1..399e480 100644 Binary files a/dll/dxwnd.vs2008.suo and b/dll/dxwnd.vs2008.suo differ diff --git a/dll/dxwnd.vs2008.vcproj.User-PC.User.user b/dll/dxwnd.vs2008.vcproj.User-PC.User.user new file mode 100644 index 0000000..21df666 --- /dev/null +++ b/dll/dxwnd.vs2008.vcproj.User-PC.User.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/dll/hd3d.cpp b/dll/hd3d.cpp index 7b44a29..7a108ab 100644 --- a/dll/hd3d.cpp +++ b/dll/hd3d.cpp @@ -361,6 +361,10 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, param[2] = mode.Format; OutTraceD(" Current Format = 0x%x\n", mode.Format); + // useless ... + //param[0] = 0; //defaulting to window width + //param[1] = 0; //defaulting to window height + //param[2] = D3DFMT_UNKNOWN; // try if(dwD3DVersion == 9){ param[7] = 0; //hDeviceWindow diff --git a/dll/hddraw.cpp b/dll/hddraw.cpp index 9b5641a..207a068 100644 --- a/dll/hddraw.cpp +++ b/dll/hddraw.cpp @@ -671,7 +671,12 @@ int lpddsHookedVersion(LPDIRECTDRAWSURFACE lpdds) char sMsg[81]; void * extGetCaps; + __try{ extGetCaps=(void *)*(DWORD *)(*(DWORD *)lpdds + 56); + } + __except (EXCEPTION_EXECUTE_HANDLER){ + extGetCaps=NULL; + }; if(extGetCaps==(void *)extGetCaps1S) return 1; if(extGetCaps==(void *)extGetCaps2S) return 2; if(extGetCaps==(void *)extGetCaps3S) return 3; @@ -688,7 +693,12 @@ int lpddHookedVersion(LPDIRECTDRAW lpdd) char sMsg[81]; void * extCreateSurface; + __try{ extCreateSurface=(void *)*(DWORD *)(*(DWORD *)lpdd + 24); + } + __except (EXCEPTION_EXECUTE_HANDLER){ + extCreateSurface=NULL; + }; if(extCreateSurface==(void *)extCreateSurface1) return 1; if(extCreateSurface==(void *)extCreateSurface2) return 2; if(extCreateSurface==(void *)extCreateSurface4) return 4; @@ -1788,7 +1798,7 @@ HRESULT WINAPI extCreateSurfaceEmu(int dxversion, CreateSurface_Type pCreateSurf // some games (Monopoly 3D) may depend on this setting - i.e. they could close // the exceeding references - so this is better be replicated adding an initial // reference to the zero count. - lpDDSBack->AddRef(); // should it be repeated BBCount times???? + if (lpDDSBack) lpDDSBack->AddRef(); // should it be repeated BBCount times???? // rebuild emulated primary surface @@ -1847,28 +1857,19 @@ HRESULT WINAPI extCreateSurfaceEmu(int dxversion, CreateSurface_Type pCreateSurf OutTraceD("CreateSurface: created DDSEmu_Prim=%x DDSEmu_Back=%x DDSPrim=%x DDSBack=%x\n", lpDDSEmu_Prim, lpDDSEmu_Back, lpDDSPrim, lpDDSBack); - // creation of lpDDSHDC service surfae moved to GetDC method + // creation of lpDDSHDC service surface moved to GetDC method if(dxw.dwFlags1 & CLIPCURSOR) dxw.SetClipCursor(); return 0; } - // not primary emulated surface .... - // try begin - //if((ddsd.dwFlags && DDSD_CAPS) && (ddsd.ddsCaps.dwCaps && DDSCAPS_ZBUFFER)){ - // pfmt="untouched"; - //} - //else - //end try if(((ddsd.dwFlags & DDSD_WIDTH) && !(ddsd.dwFlags & DDSD_HEIGHT)) || (ddsd.dwFlags & DDSD_ZBUFFERBITDEPTH) || - //(ddsd.dwFlags & DDSD_PIXELFORMAT) || - ((ddsd.dwFlags & DDSD_PIXELFORMAT) && !(ddsd.dwFlags & DDSD_PITCH)) || // fix good for "Wargames" - //((ddsd.dwFlags & DDSD_CAPS) && (ddsd.ddsCaps.dwCaps & DDSCAPS_TEXTURE)) || - ((ddsd.dwFlags & DDSD_CAPS) && (ddsd.ddsCaps.dwCaps & DDSCAPS_3DDEVICE))){ + ((ddsd.dwFlags & DDSD_PIXELFORMAT) && !(ddsd.dwFlags & DDSD_PITCH) && !(ddsd.ddsCaps.dwCaps & DDSCAPS_3DDEVICE)) || // fix good for "Wargames" + ((ddsd.dwFlags & DDSD_CAPS) && (ddsd.ddsCaps.dwCaps & DDSCAPS_3DDEVICE) && !(ddsd.dwFlags & DDSD_PIXELFORMAT)) // fix good for Premier Manager 98 + ){ // don't alter pixel format - //ddsd.dwFlags &= ~DDSD_PIXELFORMAT; // Warhammer Dark Omen - ddsd.dwFlags &= ~DDSD_PIXELFORMAT; // Wargames ??? + ddsd.dwFlags &= ~DDSD_PIXELFORMAT; // Wargames, Warhammer Dark Omen pfmt="(none)"; } else { @@ -2261,6 +2262,21 @@ static void BlitError(HRESULT res, LPRECT lps, LPRECT lpd, int line) return; } +static void BlitTrace(char *label, LPRECT lps, LPRECT lpd, int line) +{ + OutTrace("Blt: %s", label); + if (lps) + OutTrace(" src=(%d,%d)-(%d,%d)",lps->left, lps->top, lps->right, lps->bottom); + else + OutTrace(" src=(NULL)"); + if (lpd) + OutTrace(" dest=(%d,%d)-(%d,%d)",lpd->left, lpd->top, lpd->right, lpd->bottom); + else + OutTrace(" dest=(NULL)"); + OutTrace(" at %d\n", __LINE__); + return; +} + HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, LPDIRECTDRAWSURFACE lpddssrc, LPRECT lpsrcrect, DWORD dwflags, LPDDBLTFX lpddbltfx, BOOL isFlipping) { @@ -2299,22 +2315,24 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, OutTrace("\n"); } -#define ONEPIXELFIXFlag 1 +#ifdef ONEPIXELFIX + if (lpdestrect){ + if ((lpdestrect->top == 0) && (lpdestrect->bottom == dxw.GetScreenHeight() -1)) lpdestrect->bottom = dxw.GetScreenHeight(); + if ((lpdestrect->left == 0) && (lpdestrect->right == dxw.GetScreenWidth() -1)) lpdestrect->right = dxw.GetScreenWidth(); + } + if (lpsrcrect){ + if ((lpsrcrect->top == 0) && (lpsrcrect->bottom == dxw.GetScreenHeight() -1)) lpsrcrect->bottom = dxw.GetScreenHeight(); + if ((lpsrcrect->left == 0) && (lpsrcrect->right == dxw.GetScreenWidth() -1)) lpsrcrect->right = dxw.GetScreenWidth(); + } +#endif + #define FIXBIGGERRECT 1 - - if (ONEPIXELFIXFlag){ - if (lpdestrect){ - if (lpdestrect->bottom == dxw.GetScreenHeight() -1) lpdestrect->bottom = dxw.GetScreenHeight(); - if (lpdestrect->right == dxw.GetScreenWidth() -1) lpdestrect->right = dxw.GetScreenWidth(); - } - } - - if(FIXBIGGERRECT){ - if(ToPrim && lpdestrect){ - if((DWORD)lpdestrect->bottom > dxw.GetScreenHeight()) lpdestrect->bottom = dxw.GetScreenHeight(); - if((DWORD)lpdestrect->right > dxw.GetScreenWidth()) lpdestrect->right = dxw.GetScreenWidth(); - } +#ifdef FIXBIGGERRECT + if(ToPrim && lpdestrect){ + if((DWORD)lpdestrect->bottom > dxw.GetScreenHeight()) lpdestrect->bottom = dxw.GetScreenHeight(); + if((DWORD)lpdestrect->right > dxw.GetScreenWidth()) lpdestrect->right = dxw.GetScreenWidth(); } +#endif if((dxw.dwFlags1 & EMULATESURFACE) && (dwflags==DDBLT_COLORFILL)){ OutTraceD("Debug: dwFillDepth=%d, EmuBPP=%d, dwFillColor=%x\n", @@ -2370,18 +2388,22 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, srcrect=dxw.MapWindowRect(lpsrcrect); } } + + if (IsDebug) BlitTrace("NOPRIM", lpsrcrect, lpdestrect, __LINE__); res= (*pBlt)(lpdds, lpdestrect, lpddssrc, lpsrcrect ? &srcrect : NULL, dwflags, lpddbltfx); // Blitting compressed data may work to screen surfaces only. In this case, it may be worth // trying blitting directly to lpDDSEmu_Prim: it makes DK2 intro movies working. switch(res){ case DDERR_UNSUPPORTED: if (dxw.dwFlags1 & EMULATESURFACE){ + if (IsDebug) BlitTrace("UNSUPP", lpsrcrect ? &srcrect : NULL, lpdestrect, __LINE__); res=(*pBlt)(lpDDSEmu_Prim, lpdestrect, lpddssrc, lpsrcrect ? &srcrect : NULL, dwflags, lpddbltfx); } break; case DDERR_SURFACEBUSY: (*pUnlockMethod(lpdds))(lpdds, NULL); - if (lpddssrc) (*pUnlockMethod(lpddssrc))(lpddssrc, NULL); + if (lpddssrc) (*pUnlockMethod(lpddssrc))(lpddssrc, NULL); + if (IsDebug) BlitTrace("BUSY", lpsrcrect ? &srcrect : NULL, lpdestrect, __LINE__); res=(*pBlt)(lpdds, lpdestrect, lpddssrc, lpsrcrect ? &srcrect : NULL, dwflags|DDBLT_WAIT, lpddbltfx); break; default: @@ -2402,8 +2424,7 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, res=0; // blit only when source and dest surface are different. Should make ScreenRefresh faster. if (lpdds != lpddssrc) { - //OutTrace("DEBUG: lpdds=%x lpddssrc=%x destrect=(%d,%d)-(%d,%d) lpsrcrect=%x flags=%x lpddbltfx=%x\n", - // lpdds, lpddssrc, destrect.left, destrect.top, destrect.right, destrect.bottom, lpsrcrect, dwflags, lpddbltfx); + if (IsDebug) BlitTrace("PRIM-NOEMU", lpsrcrect, &destrect, __LINE__); res= (*pBlt)(lpdds, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx); } if(res){ @@ -2411,6 +2432,7 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, // Try to handle HDC lock concurrency.... if(res==DDERR_SURFACEBUSY){ (*pUnlockMethod(lpdds))(lpdds, NULL); + if (IsDebug) BlitTrace("BUSY", lpsrcrect, &destrect, __LINE__); res= (*pBlt)(lpdds, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx); if (res) BlitError(res, lpsrcrect, &destrect, __LINE__); } @@ -2445,8 +2467,10 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, res=0; // blit only when source and dest surface are different. Should make ScreenRefresh faster. - if (lpdds != lpddssrc) + if (lpdds != lpddssrc){ + if (IsDebug) BlitTrace("SRC2EMU", &emurect, &destrect, __LINE__); res=(*pBlt)(lpdds, &emurect, lpddssrc, lpsrcrect, dwflags, lpddbltfx); + } if (res) { BlitError(res, lpsrcrect, &emurect, __LINE__); @@ -2458,6 +2482,7 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, */ if(res==DDERR_UNSUPPORTED){ if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(lpddssrc); + if (IsDebug) BlitTrace("UNSUPP", &emurect, &destrect, __LINE__); res=(*pBlt)(lpDDSEmu_Prim, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx); if (res) BlitError(res, lpsrcrect, &destrect, __LINE__); } @@ -2466,6 +2491,7 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, if(res==DDERR_SURFACEBUSY){ res=(*pUnlockMethod(lpddssrc))(lpddssrc, NULL); if(res) OutTraceE("Unlock ERROR: err=%x(%s)\n", res, ExplainDDError(res)); + if (IsDebug) BlitTrace("BUSY", &emurect, &destrect, __LINE__); res=(*pBlt)(lpdds, &emurect, lpddssrc, lpsrcrect, dwflags, lpddbltfx); if (res) BlitError(res, lpsrcrect, &destrect, __LINE__); } @@ -2494,14 +2520,17 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, } if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(lpDDSSource); + if (IsDebug) BlitTrace("BACK2PRIM", &emurect, &destrect, __LINE__); res=(*pBlt)(lpDDSEmu_Prim, &destrect, lpDDSSource, &emurect, DDBLT_WAIT, 0); if (res==DDERR_NOCLIPLIST){ RenewClipper(lpDD, lpDDSEmu_Prim); + if (IsDebug) BlitTrace("NOCLIP", &emurect, &destrect, __LINE__); res=(*pBlt)(lpDDSEmu_Prim, &destrect, lpDDSSource, &emurect, DDBLT_WAIT, 0); } if (res) BlitError(res, &emurect, &destrect, __LINE__); if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=0; + if (IsDebug) OutTrace("%s: done ret=%x at %d\n", api, res, __LINE__); return res; } @@ -2739,35 +2768,10 @@ HRESULT WINAPI extSetPalette(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpdd isPrim=dxw.IsAPrimarySurface(lpdds); OutTraceD("SetPalette: lpdds=%x%s lpddp=%x\n", lpdds, isPrim?"(PRIM)":"", lpddp); -#if 0 - if(!(dxw.dwFlags1 & EMULATESURFACE) || !isPrim) { - res=(*pSetPalette)(lpdds, lpddp); - if(res)OutTraceE("SetPalette: ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); - return res; - } - - OutTraceD("SetPalette: DEBUG emulating palette\n"); - lpDDP = lpddp; - //if (lpDDSBack) { GHOGHO - // res=(*pSetPalette)(lpDDSBack, lpddp); - // if(res) OutTraceE("SetPalette: ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); - //} - // add a reference to simulate what would happen in reality.... - lpdds->AddRef(); - - if(lpddp){ - lpentries = (LPPALETTEENTRY)PaletteEntries; - res=lpddp->GetEntries(0, 0, 256, lpentries); - if(res) OutTraceE("SetPalette: GetEntries ERROR res=%x(%s)\n", res, ExplainDDError(res)); - mySetPalette(0, 256, lpentries); - } - - return 0; -#else res=(*pSetPalette)(lpdds, lpddp); if(res)OutTraceE("SetPalette: ERROR res=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); - if((dxw.dwFlags1 & EMULATESURFACE) && (res==DD_OK)){ + if(dxw.dwFlags1 & EMULATESURFACE){ OutTraceD("SetPalette: DEBUG emulating palette\n"); lpDDP = lpddp; @@ -2778,10 +2782,10 @@ HRESULT WINAPI extSetPalette(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpdd if(res2) OutTraceE("SetPalette: GetEntries ERROR res=%x(%s)\n", res2, ExplainDDError(res2)); mySetPalette(0, 256, lpentries); } + res=0; } return res; -#endif } HRESULT WINAPI extSetEntries(LPDIRECTDRAWPALETTE lpddp, DWORD dwflags, DWORD dwstart, DWORD dwcount, LPPALETTEENTRY lpentries) diff --git a/dll/syslibs.cpp b/dll/syslibs.cpp index fcc37fd..0525b66 100644 --- a/dll/syslibs.cpp +++ b/dll/syslibs.cpp @@ -192,6 +192,10 @@ HWND WINAPI extCreateWindowExA( ) && (((DWORD)nWidth>=dxw.GetScreenWidth())&&((DWORD)nHeight>=dxw.GetScreenHeight())) + && + !(dwExStyle & WS_EX_CONTROLPARENT) // Diablo fix + && + !(dwStyle & WS_CHILD) // Diablo fix ){ RECT screen; POINT upleft = {0,0}; @@ -240,32 +244,19 @@ HWND WINAPI extCreateWindowExA( // tested on Gangsters: coordinates must be window-relative!!! // Age of Empires.... if (dwStyle & WS_CHILD){ - RECT screen; - (*pGetClientRect)(dxw.GethWnd(),&screen); - x=x*screen.right/dxw.GetScreenWidth(); - y=y*screen.bottom/dxw.GetScreenHeight(); - nWidth=nWidth*screen.right/dxw.GetScreenWidth(); - nHeight=nHeight*screen.bottom/dxw.GetScreenHeight(); + dxw.MapClient(&x, &y, &nWidth, &nHeight); OutTraceD("CreateWindowEx: fixed WS_CHILD pos=(%d,%d) size=(%d,%d)\n", x, y, nWidth, nHeight); } // needed for Diablo, that creates a new control parent window that must be // overlapped to the directdraw surface. else if (dwExStyle & WS_EX_CONTROLPARENT){ - RECT screen; - POINT upleft = {0,0}; - (*pGetClientRect)(dxw.GethWnd(),&screen); - (*pClientToScreen)(dxw.GethWnd(),&upleft); - x=upleft.x; - y=upleft.y; - nWidth=screen.right; - nHeight=screen.bottom; - OutTraceD("CreateWindowEx: fixed WS_EX_CONTROLPARENT win=(%d,%d)-(%d,%d)\n", - x, y, x+nWidth, y+nHeight); + dxw.MapWindow(&x, &y, &nWidth, &nHeight); + OutTraceD("CreateWindowEx: fixed WS_EX_CONTROLPARENT pos=(%d,%d) size=(%d,%d)\n", + x, y, nWidth, nHeight); } - if(IsDebug) - OutTrace("CreateWindowEx: fixed pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n", + OutTraceB("CreateWindowEx: fixed pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n", x, y, nWidth, nHeight, dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle)); wndh= (*pCreateWindowExA)(dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, @@ -281,7 +272,6 @@ HWND WINAPI extCreateWindowExA( extern void AdjustWindowPos(HWND, DWORD, DWORD); (*pSetWindowLong)(wndh, GWL_STYLE, (dxw.dwFlags2 & MODALSTYLE) ? 0 : WS_OVERLAPPEDWINDOW); (*pSetWindowLong)(wndh, GWL_EXSTYLE, 0); - //(*pShowWindow)(wndh, SW_SHOWNORMAL); OutTraceD("CreateWindow: hwnd=%x, set style=WS_OVERLAPPEDWINDOW extstyle=0\n", wndh); AdjustWindowPos(wndh, nWidth, nHeight); (*pShowWindow)(wndh, SW_SHOWNORMAL); @@ -536,10 +526,26 @@ BOOL WINAPI extRectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, i int WINAPI extFillRect(HDC hdc, const RECT *lprc, HBRUSH hbr) { - RECT rc; + RECT rc, trim; + HWND hWnd; OutTraceD("FillRect: hdc=%x xy=(%d,%d)-(%d,%d)\n", hdc, lprc->left, lprc->top, lprc->right, lprc->bottom); memcpy(&rc, lprc, sizeof(rc)); + hWnd = WindowFromDC(hdc); + if((hWnd == dxw.GethWnd()) || + (hWnd == 0) || + (hWnd == GetDesktopWindow())){ + // trim: some games (Player Manager 98) clear the screen by filling an exagerated rect + (*pGetClientRect)(dxw.GethWnd(), &trim); + hdc=GetDC(dxw.GethWnd()); + dxw.MapWindowRect(&rc); + if(rc.left < trim.left) rc.left = trim.left; + if(rc.top < trim.top) rc.top = trim.top; + if(rc.right > trim.right) rc.right = trim.right; + if(rc.bottom > trim.bottom) rc.bottom = trim.bottom; + OutTraceD("FillRect: hwnd=%x hdc=%x fixed xy=(%d,%d)-(%d,%d)\n", hWnd, hdc, rc.left, rc.top, rc.right, rc.bottom); + } if (dxw.dwFlags1 & FIXTEXTOUT) { + // to be verified: why shifting and not scaling? POINT anchor; anchor.x=rc.left; anchor.y=rc.top; @@ -1274,10 +1280,11 @@ BOOL WINAPI extClientToScreen(HWND hwnd, LPPOINT lppoint) { // v2.02.10: fully revised to handle scaled windows BOOL res; + OutTraceB("ClientToScreen: hwnd=%x hWnd=%x FullScreen=%x point=(%d,%d)\n", hwnd, dxw.GethWnd(), dxw.IsFullScreen(), lppoint->x, lppoint->y); if (lppoint && dxw.IsFullScreen()){ - dxw.MapPoint(lppoint); + *lppoint = dxw.AddCoordinates(*lppoint, dxw.ClientOffset(hwnd)); OutTraceB("ClientToScreen: FIXED point=(%d,%d)\n", lppoint->x, lppoint->y); res=TRUE; } @@ -1293,8 +1300,11 @@ BOOL WINAPI extScreenToClient(HWND hwnd, LPPOINT lppoint) BOOL res; OutTraceB("ScreenToClient: hwnd=%x hWnd=%x FullScreen=%x point=(%d,%d)\n", hwnd, dxw.GethWnd(), dxw.IsFullScreen(), lppoint->x, lppoint->y); + + if (lppoint && (lppoint->x == -32000) && (lppoint->y == -32000)) return 1; + if (lppoint && dxw.IsFullScreen()){ - dxw.UnmapPoint(lppoint); + *lppoint = dxw.SubCoordinates(*lppoint, dxw.ClientOffset(hwnd)); OutTraceB("ScreenToClient: FIXED point=(%d,%d)\n", lppoint->x, lppoint->y); res=TRUE; } @@ -1307,72 +1317,62 @@ BOOL WINAPI extScreenToClient(HWND hwnd, LPPOINT lppoint) BOOL WINAPI extGetClientRect(HWND hwnd, LPRECT lpRect) { BOOL ret; - OutTraceD("GetClientRect: whnd=%x FullScreen=%x\n", hwnd, dxw.IsFullScreen()); - if (lpRect && dxw.IsFullScreen() && (hwnd == dxw.GethWnd())){ - lpRect->left=0; - lpRect->top=0; - lpRect->right=dxw.GetScreenWidth(); - lpRect->bottom=dxw.GetScreenHeight(); - OutTraceD("GetClientRect: fixed rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); - return 1; - } + OutTraceB("GetClientRect: whnd=%x FullScreen=%x\n", hwnd, dxw.IsFullScreen()); + + if(!lpRect) return 0; - // v2.1.75: in PREVENTMAXIMIZE mode, prevent the application to know the actual size of the desktop - // by calling GetClientRect on it!! Used to windowize "AfterLife". - // should I do the same with hwnd==0 ?? - if ((hwnd==(*pGetDesktopWindow)()) || (hwnd==0)){ - lpRect->left=0; - lpRect->top=0; - lpRect->right=dxw.GetScreenWidth(); - lpRect->bottom=dxw.GetScreenHeight(); - OutTraceD("GetClientRect: fixed rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); - return 1; - } - // proxed call ret=(*pGetClientRect)(hwnd, lpRect); - OutTraceB("GetClientRect: rect=(%d,%d)-(%d,%d) ret=%d\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom, ret); - return ret; + if(!ret) { + OutTraceE("GetClientRect: ERROR hwnd=%x err=%d at %d\n", hwnd, GetLastError(), __LINE__); + return ret; } + OutTraceB("GetClientRect: actual rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); + + if (dxw.IsDesktop(hwnd)){ + *lpRect = dxw.GetScreenRect(); + OutTraceB("GetClientRect: desktop rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); + } + else + if (dxw.IsFullScreen()){ + *lpRect=dxw.GetClientRect(*lpRect); + OutTraceB("GetClientRect: fixed rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); + } + return ret; +} BOOL WINAPI extGetWindowRect(HWND hwnd, LPRECT lpRect) { BOOL ret; - - OutTraceD("GetWindowRect: hwnd=%x hWnd=%x FullScreen=%x\n", hwnd, dxw.GethWnd(), dxw.IsFullScreen()); - if (lpRect && dxw.IsFullScreen() && (hwnd == dxw.GethWnd())){ - // a fullscreen window should have NO BORDERS! - lpRect->left = 0; - lpRect->top = 0; - lpRect->right = dxw.GetScreenWidth(); - lpRect->bottom = dxw.GetScreenHeight(); - OutTraceD("GetWindowRect: fixed rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); - return 1; - } - - if (dxw.IsFullScreen() && ((*pGetWindowLong)(hwnd, GWL_STYLE) & WS_CHILD)){ - // a child win should return the original supposed size - // so you basically revert here the coordinates compensation. - // Used by "Road Rash" to blit graphic on top of child windows - POINT upleft={0,0}; - RECT client; - (*pClientToScreen)(dxw.GethWnd(),&upleft); - (*pGetClientRect)(dxw.GethWnd(),&client); - - // using GetWindowRect and compensate for displacement..... - ret=(*pGetWindowRect)(hwnd, lpRect); - if (client.right && client.bottom){ // avoid divide by 0 - lpRect->left = ((lpRect->left - upleft.x) * dxw.GetScreenWidth()) / client.right; - lpRect->top = ((lpRect->top - upleft.y) * dxw.GetScreenHeight()) / client.bottom; - lpRect->right = ((lpRect->right - upleft.x) * dxw.GetScreenWidth()) / client.right; - lpRect->bottom = ((lpRect->bottom - upleft.y) * dxw.GetScreenHeight()) / client.bottom; - OutTraceD("GetWindowRect: fixed CHILD rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); - } + OutTraceB("GetWindowRect: hwnd=%x hWnd=%x FullScreen=%x\n", hwnd, dxw.GethWnd(), dxw.IsFullScreen()); + ret=(*pGetWindowRect)(hwnd, lpRect); + if(!ret) { + OutTraceE("GetWindowRect: GetWindowRect hwnd=%x error %d at %d\n", hwnd, GetLastError(), __LINE__); return ret; } + OutTraceB("GetWindowRect: rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); + + // minimized windows behaviour + if((lpRect->left == -32000)||(lpRect->top == -32000)) return ret; + + if (dxw.IsDesktop(hwnd)){ + // to avoid keeping track of window frame + *lpRect = dxw.GetScreenRect(); + OutTraceB("GetWindowRect: desktop rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); + } + else + if (dxw.IsFullScreen()){ + *lpRect=dxw.GetWindowRect(*lpRect); + + // Diablo fix: it retrieves coordinates for the explorer window, that are as big as the real desktop!!! + if(lpRect->left < 0) lpRect->left=0; + if(lpRect->right > (LONG)dxw.GetScreenWidth()) lpRect->right=dxw.GetScreenWidth(); + if(lpRect->top < 0) lpRect->top=0; + if(lpRect->bottom > (LONG)dxw.GetScreenHeight()) lpRect->bottom=dxw.GetScreenHeight(); + + OutTraceB("GetWindowRect: fixed rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); + } - ret=(*pGetWindowRect)(hwnd, lpRect); - OutTraceD("GetWindowRect: rect=(%d,%d)-(%d,%d)\n", lpRect->left, lpRect->top, lpRect->right, lpRect->bottom); return ret; } @@ -1429,6 +1429,8 @@ BOOL WINAPI extPeekMessage(LPMSG lpMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsg if((MsgCopy.message <= WM_MOUSELAST) && (MsgCopy.message >= WM_MOUSEFIRST)) MsgCopy.lParam = MAKELPARAM(MsgCopy.pt.x, MsgCopy.pt.y); OutTraceC("PeekMessage: fixed lparam/pt=(%d,%d)\n", MsgCopy.pt.x, MsgCopy.pt.y); lpMsg=&MsgCopy; + GetHookInfo()->CursorX=(short)MsgCopy.pt.x; + GetHookInfo()->CursorY=(short)MsgCopy.pt.y; } return res; @@ -1455,6 +1457,8 @@ BOOL WINAPI extGetMessage(LPMSG lpMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgF lpMsg->pt=FixMessagePt(FixedHwnd, lpMsg->pt); lpMsg->lParam = MAKELPARAM(lpMsg->pt.x, lpMsg->pt.y); OutTraceC("PeekMessage: fixed lparam/pt=(%d,%d)\n", lpMsg->pt.x, lpMsg->pt.y); + GetHookInfo()->CursorX=(short)lpMsg->pt.x; + GetHookInfo()->CursorY=(short)lpMsg->pt.y; } return res; } @@ -1469,6 +1473,7 @@ BOOL WINAPI extGetMessage(LPMSG lpMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgF #define SYSLIBIDX_DIRECTDRAW 4 #define SYSLIBIDX_OPENGL 5 #define SYSLIBIDX_MSVFW 6 +//#define SYSLIBIDX_SMACK 7 #define SYSLIBIDX_MAX 7 // array size HMODULE SysLibs[SYSLIBIDX_MAX]; char *SysNames[SYSLIBIDX_MAX]={ @@ -1478,7 +1483,8 @@ char *SysNames[SYSLIBIDX_MAX]={ "ole32.dll", "ddraw.dll", "opengl32.dll", - "msvfw32.dll" + //"msvfw32.dll", + "smackw32.dll" }; char *SysNames2[SYSLIBIDX_MAX]={ "kernel32", @@ -1487,7 +1493,8 @@ char *SysNames2[SYSLIBIDX_MAX]={ "ole32", "ddraw", "opengl32", - "msvfw32" + //"msvfw32", + "smackw32" }; extern void HookModule(HMODULE, int); extern void HookSysLibs(HMODULE); @@ -1525,7 +1532,7 @@ HMODULE WINAPI LoadLibraryExWrapper(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFl idx=SYSLIBIDX_OPENGL; SysLibs[idx]=libhandle; } - HookModule(libhandle, 0); + if (idx == SYSLIBIDX_MAX) HookModule(libhandle, 0); return libhandle; } @@ -1537,7 +1544,7 @@ HMODULE WINAPI extLoadLibraryA(LPCTSTR lpFileName) HMODULE WINAPI extLoadLibraryW(LPCWSTR lpFileName) { char sFileName[256+1]; - wcstombs(sFileName, lpFileName, 80); + wcstombs_s(NULL, sFileName, lpFileName, 80); return LoadLibraryExWrapper(sFileName, NULL, 0, "LoadLibraryW");; } @@ -1549,7 +1556,7 @@ HMODULE WINAPI extLoadLibraryExA(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFlags HMODULE WINAPI extLoadLibraryExW(LPCWSTR lpFileName, HANDLE hFile, DWORD dwFlags) { char sFileName[256+1]; - wcstombs(sFileName, lpFileName, 80); + wcstombs_s(NULL, sFileName, lpFileName, 80); return LoadLibraryExWrapper(sFileName, hFile, dwFlags, "LoadLibraryExW");; } @@ -1829,7 +1836,7 @@ BOOL WINAPI extGDIBitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH int nWDest, nHDest; nWDest= nWidth; nHDest= nHeight; - dxw.MapRect(&nXDest, &nYDest, &nWDest, &nHDest); + dxw.MapClient(&nXDest, &nYDest, &nWDest, &nHDest); if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(hdcDest); res=(*pGDIStretchBlt)(hdcDest, nXDest, nYDest, nWDest, nHDest, hdcSrc, nXSrc, nYSrc, nWidth, nHeight, dwRop); } @@ -1852,7 +1859,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); + dxw.MapClient(&nXDest, &nYDest, &nWDest, &nHDest); if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(hdcDest); res=(*pGDIPatBlt)(hdcDest, nXDest, nYDest, nWDest, nHDest, dwRop); } diff --git a/host/Resource.h b/host/Resource.h index f220f6f..0823b97 100644 --- a/host/Resource.h +++ b/host/Resource.h @@ -82,6 +82,8 @@ #define IDC_USERGB565 1033 #define IDC_SUPPRESSDXERRORS 1034 #define IDC_PREVENTMAXIMIZE 1035 +#define IDC_SUPPRESSDXERRORS2 1035 +#define IDC_MARKBLIT 1035 #define IDC_OUTWINMESSAGES 1036 #define IDC_OUTDXTRACE 1037 #define IDC_MODEXEMULATION 1038 diff --git a/host/TabDirectX.cpp b/host/TabDirectX.cpp index 67adfa2..fc26bc0 100644 --- a/host/TabDirectX.cpp +++ b/host/TabDirectX.cpp @@ -38,6 +38,7 @@ void CTabDirectX::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_VIDEOTOSYSTEMMEM, cTarget->m_VideoToSystemMem); DDX_Check(pDX, IDC_USERGB565, cTarget->m_UseRGB565); DDX_Check(pDX, IDC_SUPPRESSDXERRORS, cTarget->m_SuppressDXErrors); + DDX_Check(pDX, IDC_MARKBLIT, cTarget->m_MarkBlit); DDX_Check(pDX, IDC_MAPGDITOPRIMARY, cTarget->m_MapGDIToPrimary); DDX_Check(pDX, IDC_BACKBUFATTACH, cTarget->m_BackBufAttach); DDX_Check(pDX, IDC_FULLRECTBLT, cTarget->m_FullRectBlt); diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index 54f9508..7c4290c 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -60,6 +60,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_KeepCursorFixed = FALSE; m_UseRGB565 = FALSE; m_SuppressDXErrors = FALSE; + m_MarkBlit = FALSE; m_PreventMaximize = FALSE; m_ClientRemapping = FALSE; m_MapGDIToPrimary = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 689afd7..c3c1c9b 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -64,6 +64,7 @@ public: BOOL m_KeepCursorFixed; BOOL m_UseRGB565; BOOL m_SuppressDXErrors; + BOOL m_MarkBlit; BOOL m_PreventMaximize; BOOL m_ClientRemapping; BOOL m_MapGDIToPrimary; diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index 2ce2eab..b0ac20a 100644 Binary files a/host/dxwndhost.aps and b/host/dxwndhost.aps differ diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index 6ac0c69..9bcfa59 100644 --- a/host/dxwndhost.rc +++ b/host/dxwndhost.rc @@ -326,6 +326,7 @@ BEGIN CONTROL "DirectInput Hooking",IDC_HOOKDI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,182,97,12 GROUPBOX "DirectInput",IDC_STATIC,7,172,286,61 CONTROL "Set AERO compatible mode",IDC_SETCOMPATIBILITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,153,109,12 + CONTROL "Highlight blit to primary",IDC_MARKBLIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,84,127,10 END IDD_TAB_MOUSE DIALOGEX 0, 0, 300, 240 diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index c46af5b..7967bc4 100644 Binary files a/host/dxwndhost.vs2008.suo and b/host/dxwndhost.vs2008.suo differ diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index dbfc057..4570906 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -98,6 +98,25 @@ CDxwndhostView::CDxwndhostView() EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &this->InitDevMode); } +void CDxwndhostView::SaveWinPos() +{ + char val[32]; + RECT rect; + + // save window rect + //::GetWindowRect(::GetActiveWindow(), &rect); + this->GetActiveWindow()->GetWindowRect(&rect); + if((rect.top < 0) || (rect.bottom < 0) || (rect.left < 0) || (rect.right < 0)) return; + sprintf_s(val, sizeof(val), "%i", rect.left); + WritePrivateProfileString("window", "posx", val, InitPath); + sprintf_s(val, sizeof(val), "%i", rect.top); + WritePrivateProfileString("window", "posy", val, InitPath); + sprintf_s(val, sizeof(val), "%i", rect.right-rect.left); + WritePrivateProfileString("window", "sizx", val, InitPath); + sprintf_s(val, sizeof(val), "%i", rect.bottom-rect.top); + WritePrivateProfileString("window", "sizy", val, InitPath); +} + void CDxwndhostView::SaveConfigFile() { int i; @@ -234,6 +253,7 @@ CDxwndhostView::~CDxwndhostView() void CDxwndhostView::OnExit() { // check for running apps .... + this->SaveWinPos(); if (GetHookStatus(NULL)==DXW_RUNNING){ if (MessageBoxEx(0, "A hooked task is still running.\n" @@ -267,6 +287,7 @@ void CDxwndhostView::OnInitialUpdate() LV_ITEM listitem; int i; char key[32]; + RECT rect; listcol.mask = LVCF_WIDTH; listcol.cx = 100; @@ -275,6 +296,17 @@ void CDxwndhostView::OnInitialUpdate() GetCurrentDirectory(MAX_PATH, InitPath); strcat_s(InitPath, sizeof(InitPath), "\\"); strcat_s(InitPath, sizeof(InitPath), m_ConfigFileName); + + // restore last window pos + AfxGetApp()->m_pMainWnd->GetWindowRect(&rect); + rect.left = GetPrivateProfileInt("window", "posx", 50, InitPath); + rect.top = GetPrivateProfileInt("window", "posy", 50, InitPath); + rect.right = rect.left + GetPrivateProfileInt("window", "sizx", 320, InitPath); + rect.bottom = rect.top + GetPrivateProfileInt("window", "sizy", 200, InitPath); + AfxGetApp()->m_pMainWnd->MoveWindow(&rect, TRUE); + AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW); + AfxGetApp()->m_pMainWnd->UpdateWindow(); + for(i = 0; i < MAXTARGETS; i ++){ sprintf_s(key, sizeof(key), "path%i", i); GetPrivateProfileString("target", key, "", TargetMaps[i].path, MAX_PATH, InitPath); @@ -427,6 +459,7 @@ void CDxwndhostView::OnModify() dlg.m_KeepCursorFixed = TargetMaps[i].flags2 & KEEPCURSORFIXED ? 1 : 0; dlg.m_UseRGB565 = TargetMaps[i].flags & USERGB565 ? 1 : 0; dlg.m_SuppressDXErrors = TargetMaps[i].flags & SUPPRESSDXERRORS ? 1 : 0; + dlg.m_MarkBlit = TargetMaps[i].flags3 & MARKBLIT ? 1 : 0; dlg.m_PreventMaximize = TargetMaps[i].flags & PREVENTMAXIMIZE ? 1 : 0; dlg.m_ClientRemapping = TargetMaps[i].flags & CLIENTREMAPPING ? 1 : 0; dlg.m_MapGDIToPrimary = TargetMaps[i].flags & MAPGDITOPRIMARY ? 1 : 0; @@ -538,6 +571,7 @@ void CDxwndhostView::OnModify() if(dlg.m_KeepCursorFixed) TargetMaps[i].flags2 |= KEEPCURSORFIXED; if(dlg.m_UseRGB565) TargetMaps[i].flags |= USERGB565; if(dlg.m_SuppressDXErrors) TargetMaps[i].flags |= SUPPRESSDXERRORS; + if(dlg.m_MarkBlit) TargetMaps[i].flags3 |= MARKBLIT; if(dlg.m_PreventMaximize) TargetMaps[i].flags |= PREVENTMAXIMIZE; if(dlg.m_ClientRemapping) TargetMaps[i].flags |= CLIENTREMAPPING; if(dlg.m_MapGDIToPrimary) TargetMaps[i].flags |= MAPGDITOPRIMARY; @@ -840,6 +874,7 @@ void CDxwndhostView::OnAdd() if(dlg.m_KeepCursorFixed) TargetMaps[i].flags2 |= KEEPCURSORFIXED; if(dlg.m_UseRGB565) TargetMaps[i].flags |= USERGB565; if(dlg.m_SuppressDXErrors) TargetMaps[i].flags |= SUPPRESSDXERRORS; + if(dlg.m_MarkBlit) TargetMaps[i].flags3 |= MARKBLIT; if(dlg.m_PreventMaximize) TargetMaps[i].flags |= PREVENTMAXIMIZE; if(dlg.m_ClientRemapping) TargetMaps[i].flags |= CLIENTREMAPPING; if(dlg.m_MapGDIToPrimary) TargetMaps[i].flags |= MAPGDITOPRIMARY; @@ -1093,6 +1128,7 @@ void CDxwndhostView::OnGoToTrayIcon() void CDxwndhostView::OnSaveFile() { + this->SaveWinPos(); if (this->isUpdated) if (MessageBoxEx(0, "Task list has changed.\n" diff --git a/host/dxwndhostView.h b/host/dxwndhostView.h index 281e7d8..3dfa6e3 100644 --- a/host/dxwndhostView.h +++ b/host/dxwndhostView.h @@ -20,6 +20,7 @@ protected: // Create from serialization only features. private: void Resize(void); void SaveConfigFile(); + void SaveWinPos(); TARGETMAP TargetMaps[MAXTARGETS]; PRIVATEMAP TitleMaps[MAXTARGETS]; char InitPath[MAX_PATH];