From 547623861d39610fa8b4f4f25a3fe76a4427fe76 Mon Sep 17 00:00:00 2001 From: gho tik Date: Mon, 21 Oct 2013 12:38:23 -0400 Subject: [PATCH] v2_02_38_src Former-commit-id: 6c8bf8b2fbaa063c52aa1cdf7dcc135ac12f4795 --- Include/dxwnd.h | 1 + build/dxwnd.1.ini | 5848 ----------------- build/dxwnd.2.ini | 1133 ---- build/dxwnd.3.ini | 167 - build/dxwnd.4.ini | 2214 ------- build/dxwnd.dll | 4 +- build/dxwnd.exe | 2 +- build/dxwnd.ini | 5 + build/readme-relnotes.txt | 10 + dll/analytic.cpp | 2 + dll/ddraw.cpp | 209 +- dll/dxhelper.cpp | 59 +- dll/dxhelper.h | 3 +- dll/dxwcore.cpp | 6 +- dll/dxwnd.cpp | 4 +- dll/dxwnd.vs2008.suo | Bin 263168 -> 273920 bytes dll/dxwnd.vs2008.vcproj | 4 + dll/gdi32.cpp | 14 +- dll/hd3d.cpp | 39 +- dll/hd3d7.cpp | 36 +- dll/hddproxy.cpp | 49 +- dll/hddproxy.h | 2 +- dll/syslibs.h | 6 + dll/user32 - Copia.cpp | 1888 ++++++ dll/user32.cpp | 77 +- dll/winmm.cpp | 24 + exports/007 NightFire.dxw | 24 + .../101 The Airborne Invasion of Normandy.dxw | 24 + exports/Age of Empires III.dxw | 24 + ...Akuma Demon Spawn - Lamentation Sword.dxw | 24 + exports/Ancient Evil demo.dxw | 24 + exports/Army Men RTS.dxw | 24 + exports/Attack of the Saucerman.dxw | 24 + exports/Beyond Divinity.dxw | 24 + exports/Daikatana.dxw | 24 + exports/Devastation.dxw | 24 + exports/Diablo.dxw | 24 + exports/Doom Shareware for Windows 95.dxw | 24 + exports/Dungeon Keeper II.dxw | 24 + exports/Dungeon Lords MMXII.dxw | 24 + exports/GTA 3.dxw | 24 + exports/Grand Prix Legends.dxw | Bin 0 -> 295 bytes exports/Grand Prix World.dxw | 24 + exports/Hamsterball.dxw | 24 + exports/Heroes of Might and Magic IV.dxw | 24 + exports/Homeworld 2.dxw | 24 + exports/JetMoto.dxw | 24 + exports/Kiss Psycho Circus.dxw | 24 + exports/L'Elefante a Strisce.dxw | 24 + exports/Land of the Dead.dxw | 24 + exports/Last Bronx.dxw | 24 + exports/Mageslayer.dxw | 24 + exports/Magic & Mayhem.dxw | 24 + exports/Mirror's Edge.dxw | 24 + exports/Praetorians.dxw | 24 + exports/Premier Manager 98.dxw | 24 + exports/Primitive Wars.dxw | 24 + exports/Railroad Tycoon II.dxw | 24 + exports/Rayman 2 Demo.dxw | 24 + exports/Space Rangers.dxw | 24 + .../Star Wars Shadow of the Empire (DEMO).dxw | 24 + exports/Star Wars Shadow of the Empire.dxw | 24 + exports/StarCraft.dxw | 24 + exports/Talis Gear.dxw | 24 + exports/Theseus.dxw | 24 + exports/Total Annihilation Kingdoms.dxw | 24 + exports/Vangers.dxw | 24 + exports/Wargames.dxw | 24 + exports/Warlords 3.dxw | 24 + exports/deadrising2otr1.dxw | 24 + host/Release/BuildLog.htm | Bin 11660 -> 0 bytes host/Release/Inject.obj | Bin 3879 -> 0 bytes host/Release/KillProc.obj | Bin 4979 -> 0 bytes host/Release/MainFrm.obj | Bin 21549 -> 0 bytes host/Release/StatusDialog.obj | Bin 19689 -> 0 bytes host/Release/StdAfx.obj | Bin 16552 -> 0 bytes host/Release/SystemTray.obj | Bin 76694 -> 0 bytes host/Release/TabColor.obj | Bin 15067 -> 0 bytes host/Release/TabCompat.obj | Bin 18184 -> 0 bytes host/Release/TabDebug.obj | Bin 15039 -> 0 bytes host/Release/TabDirectX.obj | Bin 15500 -> 0 bytes host/Release/TabGDI.obj | Bin 14923 -> 0 bytes host/Release/TabLogs.obj | Bin 15078 -> 0 bytes host/Release/TabMouse.obj | Bin 15123 -> 0 bytes host/Release/TabOpenGL.obj | Bin 15407 -> 0 bytes host/Release/TabProgram.obj | Bin 20153 -> 0 bytes host/Release/TabTiming.obj | Bin 16617 -> 0 bytes host/Release/TabWindow.obj | Bin 15600 -> 0 bytes host/Release/TargetDlg.obj | Bin 33644 -> 0 bytes host/Release/TimeSliderDlg.obj | Bin 19548 -> 0 bytes host/Release/dxTabCtrl.obj | Bin 22966 -> 0 bytes host/Release/dxwnd.exe.intermediate.manifest | 10 - host/Release/dxwndhost.obj | Bin 57801 -> 0 bytes host/Release/dxwndhost.pch | Bin 28377088 -> 0 bytes host/Release/dxwndhost.res | Bin 118944 -> 0 bytes host/Release/dxwndhostDoc.obj | Bin 12358 -> 0 bytes host/Release/dxwndhostView.obj | Bin 127403 -> 0 bytes host/Release/getfname.obj | Bin 4158 -> 0 bytes host/Release/mt.dep | 1 - host/Release/vc90.idb | Bin 625664 -> 0 bytes host/Resource.h | 2 + host/TabDebug.cpp | 4 +- host/TabDebug.h | 1 + host/TargetDlg.cpp | 1 + host/TargetDlg.h | 1 + host/dxwndhost.aps | Bin 164452 -> 164720 bytes host/dxwndhost.rc | 3 +- host/dxwndhost.vs2008.ncb | Bin 10546176 -> 0 bytes host/dxwndhost.vs2008.suo | Bin 318976 -> 321536 bytes .../dxwndhost.vs2008.vcproj.User-PC.User.user | 65 - host/dxwndhostView.cpp | 2 + 111 files changed, 3358 insertions(+), 9570 deletions(-) delete mode 100644 build/dxwnd.1.ini delete mode 100644 build/dxwnd.2.ini delete mode 100644 build/dxwnd.3.ini delete mode 100644 build/dxwnd.4.ini create mode 100644 build/dxwnd.ini create mode 100644 dll/analytic.cpp create mode 100644 dll/user32 - Copia.cpp create mode 100644 exports/007 NightFire.dxw create mode 100644 exports/101 The Airborne Invasion of Normandy.dxw create mode 100644 exports/Age of Empires III.dxw create mode 100644 exports/Akuma Demon Spawn - Lamentation Sword.dxw create mode 100644 exports/Ancient Evil demo.dxw create mode 100644 exports/Army Men RTS.dxw create mode 100644 exports/Attack of the Saucerman.dxw create mode 100644 exports/Beyond Divinity.dxw create mode 100644 exports/Daikatana.dxw create mode 100644 exports/Devastation.dxw create mode 100644 exports/Diablo.dxw create mode 100644 exports/Doom Shareware for Windows 95.dxw create mode 100644 exports/Dungeon Keeper II.dxw create mode 100644 exports/Dungeon Lords MMXII.dxw create mode 100644 exports/GTA 3.dxw create mode 100644 exports/Grand Prix Legends.dxw create mode 100644 exports/Grand Prix World.dxw create mode 100644 exports/Hamsterball.dxw create mode 100644 exports/Heroes of Might and Magic IV.dxw create mode 100644 exports/Homeworld 2.dxw create mode 100644 exports/JetMoto.dxw create mode 100644 exports/Kiss Psycho Circus.dxw create mode 100644 exports/L'Elefante a Strisce.dxw create mode 100644 exports/Land of the Dead.dxw create mode 100644 exports/Last Bronx.dxw create mode 100644 exports/Mageslayer.dxw create mode 100644 exports/Magic & Mayhem.dxw create mode 100644 exports/Mirror's Edge.dxw create mode 100644 exports/Praetorians.dxw create mode 100644 exports/Premier Manager 98.dxw create mode 100644 exports/Primitive Wars.dxw create mode 100644 exports/Railroad Tycoon II.dxw create mode 100644 exports/Rayman 2 Demo.dxw create mode 100644 exports/Space Rangers.dxw create mode 100644 exports/Star Wars Shadow of the Empire (DEMO).dxw create mode 100644 exports/Star Wars Shadow of the Empire.dxw create mode 100644 exports/StarCraft.dxw create mode 100644 exports/Talis Gear.dxw create mode 100644 exports/Theseus.dxw create mode 100644 exports/Total Annihilation Kingdoms.dxw create mode 100644 exports/Vangers.dxw create mode 100644 exports/Wargames.dxw create mode 100644 exports/Warlords 3.dxw create mode 100644 exports/deadrising2otr1.dxw delete mode 100644 host/Release/BuildLog.htm delete mode 100644 host/Release/Inject.obj delete mode 100644 host/Release/KillProc.obj delete mode 100644 host/Release/MainFrm.obj delete mode 100644 host/Release/StatusDialog.obj delete mode 100644 host/Release/StdAfx.obj delete mode 100644 host/Release/SystemTray.obj delete mode 100644 host/Release/TabColor.obj delete mode 100644 host/Release/TabCompat.obj delete mode 100644 host/Release/TabDebug.obj delete mode 100644 host/Release/TabDirectX.obj delete mode 100644 host/Release/TabGDI.obj delete mode 100644 host/Release/TabLogs.obj delete mode 100644 host/Release/TabMouse.obj delete mode 100644 host/Release/TabOpenGL.obj delete mode 100644 host/Release/TabProgram.obj delete mode 100644 host/Release/TabTiming.obj delete mode 100644 host/Release/TabWindow.obj delete mode 100644 host/Release/TargetDlg.obj delete mode 100644 host/Release/TimeSliderDlg.obj delete mode 100644 host/Release/dxTabCtrl.obj delete mode 100644 host/Release/dxwnd.exe.intermediate.manifest delete mode 100644 host/Release/dxwndhost.obj delete mode 100644 host/Release/dxwndhost.pch delete mode 100644 host/Release/dxwndhost.res delete mode 100644 host/Release/dxwndhostDoc.obj delete mode 100644 host/Release/dxwndhostView.obj delete mode 100644 host/Release/getfname.obj delete mode 100644 host/Release/mt.dep delete mode 100644 host/Release/vc90.idb delete mode 100644 host/dxwndhost.vs2008.ncb delete mode 100644 host/dxwndhost.vs2008.vcproj.User-PC.User.user diff --git a/Include/dxwnd.h b/Include/dxwnd.h index 4482ee8..a2fa91e 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -103,6 +103,7 @@ #define FILTERMESSAGES 0x00200000 // ignore offending messages that are typical of a window and are hot handled by a fullscreeen app #define PEEKALLMESSAGES 0x00400000 // force Peek-ing all sort of messages to avoid Win7 message queue saturation that leads to program halt #define SURFACEWARN 0x00800000 // warn when a unclassified surface capability is met (debug only!) +#define ANALYTICMODE 0x01000000 // activate analytic mode (debug only!) // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general diff --git a/build/dxwnd.1.ini b/build/dxwnd.1.ini deleted file mode 100644 index ca2a645..0000000 --- a/build/dxwnd.1.ini +++ /dev/null @@ -1,5848 +0,0 @@ -[target] -title0=007 NightFire -path0=D:\Games\007_NightFire\Bond.exe -module0= -opengllib0= -ver0=0 -coord0=0 -flag0=134217730 -flagg0=134348800 -flagh0=20 -flagi0=0 -tflag0=0 -initx0=0 -inity0=0 -minx0=0 -miny0=0 -maxx0=0 -maxy0=0 -posx0=50 -posy0=50 -sizx0=800 -sizy0=600 -maxfps0=0 -initts0=0 -title1=1602 A.D. -path1=C:\Games\1602 A.D\1602.exe -module1= -opengllib1= -ver1=0 -coord1=0 -flag1=679608354 -flagg1=0 -flagh1=0 -flagi1=0 -tflag1=0 -initx1=0 -inity1=0 -minx1=0 -miny1=0 -maxx1=0 -maxy1=0 -posx1=50 -posy1=50 -sizx1=800 -sizy1=600 -maxfps1=0 -initts1=-8 -title2=688I Hunter Killer -path2=D:\Games\688\688I_HK.EXE -module2= -opengllib2= -ver2=0 -coord2=0 -flag2=1744830626 -flagg2=135266304 -flagh2=20 -flagi2=0 -tflag2=3 -initx2=0 -inity2=0 -minx2=0 -miny2=0 -maxx2=0 -maxy2=0 -posx2=50 -posy2=50 -sizx2=0 -sizy2=0 -maxfps2=0 -initts2=0 -title3=7th Legion -path3=D:\Games\7th_Legion\LEGION.EXE -module3= -opengllib3= -ver3=0 -coord3=0 -flag3=402669607 -flagg3=539056144 -flagh3=0 -flagi3=0 -tflag3=64 -initx3=0 -inity3=0 -minx3=0 -miny3=0 -maxx3=0 -maxy3=0 -posx3=50 -posy3=50 -sizx3=800 -sizy3=600 -maxfps3=40 -initts3=-7 -title4=A10 Cuba -path4=D:\Games\A10\A10Cuba.exe -module4= -opengllib4= -ver4=0 -coord4=1 -flag4=162 -flagg4=1074003984 -flagh4=48 -flagi4=0 -tflag4=0 -initx4=0 -inity4=0 -minx4=0 -miny4=0 -maxx4=0 -maxy4=0 -posx4=50 -posy4=50 -sizx4=800 -sizy4=600 -maxfps4=0 -initts4=-7 -title5=Achtung Spitfire -path5=D:\Games\Achtung Spitfire\ASP95.EXE -module5= -opengllib5= -ver5=0 -coord5=0 -flag5=536870946 -flagg5=0 -flagh5=16 -flagi5=0 -tflag5=70 -initx5=0 -inity5=0 -minx5=0 -miny5=0 -maxx5=0 -maxy5=0 -posx5=50 -posy5=50 -sizx5=800 -sizy5=600 -maxfps5=0 -initts5=0 -title6=Actua Soccer 3 -path6=D:\Games\ActuaSoccer3\Soccer3.exe -module6= -opengllib6= -ver6=0 -coord6=0 -flag6=671088674 -flagg6=256 -flagh6=0 -flagi6=0 -tflag6=262 -initx6=0 -inity6=0 -minx6=0 -miny6=0 -maxx6=0 -maxy6=0 -posx6=50 -posy6=50 -sizx6=800 -sizy6=600 -maxfps6=0 -initts6=0 -title7=AfterLife -path7=d:\Games\ALIFE\ALIFE.EXE -module7= -opengllib7= -ver7=1 -coord7=0 -flag7=142606370 -flagg7=1048736 -flagh7=16 -flagi7=0 -tflag7=0 -initx7=0 -inity7=0 -minx7=0 -miny7=0 -maxx7=0 -maxy7=0 -posx7=50 -posy7=50 -sizx7=800 -sizy7=600 -maxfps7=0 -initts7=0 -title8=Age of Empires -path8=D:\Games\Age of Empires\EMPIRES.EXE -module8= -opengllib8= -ver8=0 -coord8=0 -flag8=402655267 -flagg8=69632 -flagh8=16 -flagi8=0 -tflag8=3 -initx8=0 -inity8=0 -minx8=0 -miny8=0 -maxx8=0 -maxy8=0 -posx8=50 -posy8=50 -sizx8=800 -sizy8=600 -maxfps8=10 -initts8=0 -title9=Age of Empires 2 -path9=D:\Games\Age of Empires 2\empires2.exe -module9= -opengllib9= -ver9=0 -coord9=1 -flag9=134217762 -flagg9=1073762320 -flagh9=48 -flagi9=0 -tflag9=0 -initx9=0 -inity9=0 -minx9=0 -miny9=0 -maxx9=0 -maxy9=0 -posx9=50 -posy9=50 -sizx9=800 -sizy9=600 -maxfps9=40 -initts9=0 -title10=Age of Empires III -path10=D:\Games\Age of Empires III\age3.exe -module10= -opengllib10= -ver10=0 -coord10=1 -flag10=-1342169053 -flagg10=1243611136 -flagh10=56 -flagi10=0 -tflag10=2 -initx10=0 -inity10=0 -minx10=0 -miny10=0 -maxx10=0 -maxy10=0 -posx10=50 -posy10=50 -sizx10=800 -sizy10=600 -maxfps10=0 -initts10=0 -title11=Age of Empires the Rise of Rome -path11=D:\Games\Age of Empires\EMPIRESX.EXE -module11= -opengllib11= -ver11=0 -coord11=0 -flag11=134217762 -flagg11=1073823744 -flagh11=16 -flagi11=0 -tflag11=0 -initx11=0 -inity11=0 -minx11=0 -miny11=0 -maxx11=0 -maxy11=0 -posx11=50 -posy11=50 -sizx11=800 -sizy11=600 -maxfps11=0 -initts11=0 -title12=Age of Wonders -path12=D:\Games\Age of Wonders\AoW.exe -module12= -opengllib12= -ver12=7 -coord12=0 -flag12=268435458 -flagg12=1048576 -flagh12=20 -flagi12=0 -tflag12=259 -initx12=0 -inity12=0 -minx12=0 -miny12=0 -maxx12=0 -maxy12=0 -posx12=50 -posy12=50 -sizx12=800 -sizy12=600 -maxfps12=0 -initts12=0 -title13=Airline Tycoon Evolution -path13=D:\Games\Airline.Tycoon.Evolution\AT.EXE -module13= -opengllib13= -ver13=0 -coord13=0 -flag13=1493172257 -flagg13=1048576 -flagh13=148 -flagi13=0 -tflag13=323 -initx13=0 -inity13=0 -minx13=0 -miny13=0 -maxx13=0 -maxy13=0 -posx13=50 -posy13=50 -sizx13=800 -sizy13=600 -maxfps13=0 -initts13=0 -title14=Alien Cabal 95 -path14=D:\Games\Alien_cabal\ACabal95.exe -module14= -opengllib14= -ver14=0 -coord14=0 -flag14=67108896 -flagg14=0 -flagh14=16 -flagi14=0 -tflag14=0 -initx14=0 -inity14=0 -minx14=0 -miny14=0 -maxx14=0 -maxy14=0 -posx14=0 -posy14=0 -sizx14=800 -sizy14=600 -maxfps14=0 -initts14=0 -title15=Alien vs. Predator -path15=C:\Games\Alien vs Predator\AvP.exe -module15= -opengllib15= -ver15=0 -coord15=0 -flag15=8224 -flagg15=0 -flagh15=0 -flagi15=0 -tflag15=130 -initx15=0 -inity15=0 -minx15=0 -miny15=0 -maxx15=0 -maxy15=0 -posx15=50 -posy15=50 -sizx15=800 -sizy15=600 -maxfps15=0 -initts15=0 -title16=Aliens Nations Demo -path16=C:\Games\aademo\Bin\AA.exe -module16= -opengllib16= -ver16=0 -coord16=0 -flag16=134217762 -flagg16=0 -flagh16=0 -flagi16=0 -tflag16=0 -initx16=0 -inity16=0 -minx16=0 -miny16=0 -maxx16=0 -maxy16=0 -posx16=0 -posy16=0 -sizx16=800 -sizy16=600 -maxfps16=0 -initts16=0 -title17=America -path17=D:\Games\America\america.exe -module17= -opengllib17= -ver17=0 -coord17=0 -flag17=134234150 -flagg17=16 -flagh17=20 -flagi17=0 -tflag17=0 -initx17=0 -inity17=0 -minx17=0 -miny17=0 -maxx17=0 -maxy17=0 -posx17=50 -posy17=50 -sizx17=800 -sizy17=600 -maxfps17=0 -initts17=0 -title18=American McGee's Alice Demo -path18=D:\Games\American McGee's Alice Demo\alice.exe -module18= -opengllib18= -ver18=10 -coord18=0 -flag18=268435458 -flagg18=131072 -flagh18=16 -flagi18=0 -tflag18=0 -initx18=0 -inity18=0 -minx18=0 -miny18=0 -maxx18=0 -maxy18=0 -posx18=50 -posy18=50 -sizx18=800 -sizy18=600 -maxfps18=0 -initts18=0 -title19=Ancient Conquest -path19=D:\Games\Ancient Conquest\ANCIENT.EXE -module19= -opengllib19= -ver19=0 -coord19=0 -flag19=142606370 -flagg19=1048576 -flagh19=16 -flagi19=0 -tflag19=258 -initx19=0 -inity19=0 -minx19=0 -miny19=0 -maxx19=0 -maxy19=0 -posx19=50 -posy19=50 -sizx19=800 -sizy19=600 -maxfps19=0 -initts19=0 -title20=Ancient Evil -path20=C:\Games\Ancient Evil\RPG.EXE -module20=DDW16.DLL -opengllib20= -ver20=1 -coord20=0 -flag20=-2013249497 -flagg20=0 -flagh20=0 -flagi20=0 -tflag20=2 -initx20=0 -inity20=0 -minx20=0 -miny20=0 -maxx20=0 -maxy20=0 -posx20=50 -posy20=50 -sizx20=800 -sizy20=600 -maxfps20=0 -initts20=0 -title21=Ancient Evil Demo -path21=C:\Games\Ancient Evil Curse of the Snake Cult\aecsc-demo.exe -module21= -opengllib21= -ver21=1 -coord21=0 -flag21=134242336 -flagg21=0 -flagh21=0 -flagi21=0 -tflag21=0 -initx21=0 -inity21=0 -minx21=0 -miny21=0 -maxx21=0 -maxy21=0 -posx21=50 -posy21=50 -sizx21=800 -sizy21=600 -maxfps21=0 -initts21=0 -title22=Armymen -path22=C:\Games\armymen\Armymen.exe -module22= -opengllib22= -ver22=0 -coord22=0 -flag22=134218274 -flagg22=1 -flagh22=0 -flagi22=0 -tflag22=0 -initx22=0 -inity22=0 -minx22=0 -miny22=0 -maxx22=0 -maxy22=0 -posx22=50 -posy22=50 -sizx22=800 -sizy22=600 -maxfps22=0 -initts22=0 -title23=ArmyMen 2 -path23=C:\Games\army2\ArmyMen2.exe -module23= -opengllib23= -ver23=0 -coord23=0 -flag23=402653730 -flagg23=0 -flagh23=0 -flagi23=0 -tflag23=0 -initx23=0 -inity23=0 -minx23=0 -miny23=0 -maxx23=0 -maxy23=0 -posx23=50 -posy23=50 -sizx23=800 -sizy23=600 -maxfps23=0 -initts23=0 -title24=Atomic Bomberman -path24=C:\Games\Atomic Bomberman\BM95.EXE -module24= -opengllib24= -ver24=0 -coord24=0 -flag24=2 -flagg24=0 -flagh24=0 -flagi24=0 -tflag24=0 -initx24=0 -inity24=0 -minx24=0 -miny24=0 -maxx24=0 -maxy24=0 -posx24=50 -posy24=50 -sizx24=800 -sizy24=600 -maxfps24=0 -initts24=0 -title25=Axis & Allies Iron Blitz Edition -path25=C:\Games\Axis & Allies Iron Blitz Edition\Axis & Allies\AxisAllies.exe -module25= -opengllib25= -ver25=0 -coord25=0 -flag25=-2147483614 -flagg25=0 -flagh25=0 -flagi25=0 -tflag25=0 -initx25=0 -inity25=0 -minx25=0 -miny25=0 -maxx25=0 -maxy25=0 -posx25=50 -posy25=50 -sizx25=800 -sizy25=600 -maxfps25=0 -initts25=0 -title26=Baldies -path26=C:\Games\Baldies for Win95\baldies.exe -module26= -opengllib26= -ver26=0 -coord26=0 -flag26=537010210 -flagg26=0 -flagh26=0 -flagi26=0 -tflag26=0 -initx26=0 -inity26=0 -minx26=0 -miny26=0 -maxx26=0 -maxy26=0 -posx26=50 -posy26=50 -sizx26=800 -sizy26=600 -maxfps26=0 -initts26=0 -title27=Battle Arena Toshinden 2 -path27=D:\Games\Battle Arena Toshinden 2\T2.EXE -module27= -opengllib27= -ver27=0 -coord27=0 -flag27=134217761 -flagg27=134217808 -flagh27=16 -flagi27=0 -tflag27=2 -initx27=0 -inity27=0 -minx27=0 -miny27=0 -maxx27=0 -maxy27=0 -posx27=50 -posy27=50 -sizx27=800 -sizy27=600 -maxfps27=0 -initts27=0 -title28=Battle Commander -path28=D:\Games\Battle Commander\bcommand.exe -module28= -opengllib28= -ver28=0 -coord28=0 -flag28=134217794 -flagg28=0 -flagh28=0 -flagi28=0 -tflag28=2 -initx28=0 -inity28=0 -minx28=0 -miny28=0 -maxx28=0 -maxy28=0 -posx28=50 -posy28=50 -sizx28=800 -sizy28=600 -maxfps28=0 -initts28=0 -title29=Beasts & Bumpkins -path29=C:\Games\Beasts and Bumpkins\BEASTS.EXE -module29= -opengllib29= -ver29=0 -coord29=0 -flag29=2105890 -flagg29=0 -flagh29=0 -flagi29=0 -tflag29=2 -initx29=0 -inity29=0 -minx29=0 -miny29=0 -maxx29=0 -maxy29=0 -posx29=50 -posy29=50 -sizx29=800 -sizy29=600 -maxfps29=0 -initts29=0 -title30=Beats of Rage -path30=C:\Games\BOR\BeatsOfRage.exe -module30= -opengllib30= -ver30=0 -coord30=0 -flag30=537002018 -flagg30=0 -flagh30=0 -flagi30=0 -tflag30=0 -initx30=0 -inity30=0 -minx30=0 -miny30=0 -maxx30=0 -maxy30=0 -posx30=50 -posy30=50 -sizx30=800 -sizy30=600 -maxfps30=0 -initts30=0 -title31=Beyond Divinity -path31=D:\Games\Beyond Divinity\Div.exe -module31= -opengllib31= -ver31=0 -coord31=0 -flag31=134217728 -flagg31=671088640 -flagh31=61 -flagi31=0 -tflag31=3 -initx31=0 -inity31=0 -minx31=0 -miny31=0 -maxx31=0 -maxy31=0 -posx31=50 -posy31=50 -sizx31=0 -sizy31=0 -maxfps31=0 -initts31=0 -title32=Beyond Good & Evil Demo -path32=C:\Games\Beyond Good & Evil\BGE.exe -module32= -opengllib32= -ver32=0 -coord32=0 -flag32=0 -flagg32=0 -flagh32=0 -flagi32=0 -tflag32=0 -initx32=0 -inity32=0 -minx32=0 -miny32=0 -maxx32=0 -maxy32=0 -posx32=50 -posy32=50 -sizx32=800 -sizy32=600 -maxfps32=0 -initts32=0 -title33=Black & White -path33=D:\Games\Black & White\runblack.exe -module33= -opengllib33= -ver33=0 -coord33=0 -flag33=0 -flagg33=134217728 -flagh33=29 -flagi33=0 -tflag33=0 -initx33=0 -inity33=0 -minx33=0 -miny33=0 -maxx33=0 -maxy33=0 -posx33=50 -posy33=50 -sizx33=800 -sizy33=600 -maxfps33=0 -initts33=0 -title34=Black Moon Lune Noire -path34=C:\Games\Black Moon\Lune noire\Engine.exe -module34= -opengllib34= -ver34=0 -coord34=0 -flag34=262179 -flagg34=0 -flagh34=0 -flagi34=0 -tflag34=0 -initx34=0 -inity34=0 -minx34=0 -miny34=0 -maxx34=0 -maxy34=0 -posx34=50 -posy34=50 -sizx34=800 -sizy34=600 -maxfps34=0 -initts34=0 -title35=Black Thorn -path35=D:\Games\BlackThorn\BlackThorn.exe -module35= -opengllib35= -ver35=0 -coord35=0 -flag35=0 -flagg35=134217984 -flagh35=48 -flagi35=0 -tflag35=66 -initx35=0 -inity35=0 -minx35=0 -miny35=0 -maxx35=0 -maxy35=0 -posx35=50 -posy35=50 -sizx35=800 -sizy35=600 -maxfps35=0 -initts35=0 -title36=Blood Omen Legacy of Kain -path36=C:\Games\Blood Omen\KAIN.EXE -module36= -opengllib36= -ver36=0 -coord36=0 -flag36=49190 -flagg36=0 -flagh36=0 -flagi36=0 -tflag36=0 -initx36=0 -inity36=0 -minx36=0 -miny36=0 -maxx36=0 -maxy36=0 -posx36=50 -posy36=50 -sizx36=800 -sizy36=600 -maxfps36=0 -initts36=0 -title37=Bonkheads -path37=C:\Games\Bonkheads\Bonkheads.exe -module37= -opengllib37= -ver37=0 -coord37=0 -flag37=262690 -flagg37=16 -flagh37=0 -flagi37=0 -tflag37=78 -initx37=0 -inity37=0 -minx37=0 -miny37=0 -maxx37=0 -maxy37=0 -posx37=50 -posy37=50 -sizx37=800 -sizy37=600 -maxfps37=0 -initts37=0 -title38=Bubble Bobble 2 -path38=C:\Games\bubble2\BOBO2.EXE -module38= -opengllib38= -ver38=0 -coord38=0 -flag38=34 -flagg38=0 -flagh38=0 -flagi38=0 -tflag38=0 -initx38=0 -inity38=0 -minx38=0 -miny38=0 -maxx38=0 -maxy38=0 -posx38=50 -posy38=50 -sizx38=800 -sizy38=600 -maxfps38=0 -initts38=0 -title39=Bug! -path39=C:\Games\Bug\BUG!.EXE -module39= -opengllib39= -ver39=0 -coord39=0 -flag39=134225954 -flagg39=32 -flagh39=0 -flagi39=0 -tflag39=2 -initx39=0 -inity39=0 -minx39=0 -miny39=0 -maxx39=0 -maxy39=0 -posx39=0 -posy39=0 -sizx39=800 -sizy39=600 -maxfps39=0 -initts39=0 -title40=BW2Demo.exe -path40=D:\Games\Black & White 2 Demo\BW2Demo.exe -module40= -opengllib40= -ver40=0 -coord40=0 -flag40=0 -flagg40=134217728 -flagh40=221 -flagi40=0 -tflag40=0 -initx40=0 -inity40=0 -minx40=0 -miny40=0 -maxx40=0 -maxy40=0 -posx40=50 -posy40=50 -sizx40=800 -sizy40=600 -maxfps40=0 -initts40=0 -title41=Caesar III -path41=C:\Games\Caesar III\c3.exe -module41= -opengllib41= -ver41=0 -coord41=0 -flag41=-2147475422 -flagg41=0 -flagh41=0 -flagi41=0 -tflag41=0 -initx41=0 -inity41=0 -minx41=0 -miny41=0 -maxx41=0 -maxy41=0 -posx41=50 -posy41=50 -sizx41=800 -sizy41=600 -maxfps41=0 -initts41=0 -title42=Championship Manager 99-00 -path42=C:\Games\CM9900\cm9900.exe -module42= -opengllib42= -ver42=0 -coord42=0 -flag42=10306 -flagg42=0 -flagh42=0 -flagi42=0 -tflag42=0 -initx42=0 -inity42=0 -minx42=0 -miny42=0 -maxx42=0 -maxy42=0 -posx42=50 -posy42=50 -sizx42=800 -sizy42=600 -maxfps42=0 -initts42=0 -title43=Chariots of War -path43=D:\Games\Chariots of War\CoW.exe -module43= -opengllib43= -ver43=0 -coord43=0 -flag43=134217730 -flagg43=134217728 -flagh43=28 -flagi43=0 -tflag43=0 -initx43=0 -inity43=0 -minx43=0 -miny43=0 -maxx43=0 -maxy43=0 -posx43=50 -posy43=50 -sizx43=800 -sizy43=600 -maxfps43=0 -initts43=0 -title44=Civilization Call to Power -path44=C:\Games\civctp\Civilization_Call_To_Power\ctp_program\ctp\civctp.exe -module44= -opengllib44= -ver44=0 -coord44=0 -flag44=545267746 -flagg44=0 -flagh44=0 -flagi44=0 -tflag44=0 -initx44=0 -inity44=0 -minx44=0 -miny44=0 -maxx44=0 -maxy44=0 -posx44=50 -posy44=50 -sizx44=800 -sizy44=600 -maxfps44=0 -initts44=0 -title45=Claw -path45=C:\Games\claw\clawexe.exe -module45= -opengllib45= -ver45=0 -coord45=0 -flag45=24610 -flagg45=0 -flagh45=0 -flagi45=0 -tflag45=0 -initx45=0 -inity45=0 -minx45=0 -miny45=0 -maxx45=0 -maxy45=0 -posx45=50 -posy45=50 -sizx45=800 -sizy45=600 -maxfps45=0 -initts45=0 -title46=Commando's Behind Enemy Lines Demo -path46=C:\Games\Commando's Behind Enemy Lines Demo\COMANDOS\Comandos.exe -module46= -opengllib46= -ver46=0 -coord46=0 -flag46=1744838944 -flagg46=0 -flagh46=0 -flagi46=0 -tflag46=64 -initx46=0 -inity46=0 -minx46=0 -miny46=0 -maxx46=0 -maxy46=0 -posx46=50 -posy46=50 -sizx46=800 -sizy46=600 -maxfps46=0 -initts46=0 -title47=Commandos II: Men of Courage -path47=D:\Games\Commandos II\comm2.exe -module47= -opengllib47= -ver47=7 -coord47=0 -flag47=2013276256 -flagg47=0 -flagh47=20 -flagi47=0 -tflag47=0 -initx47=0 -inity47=0 -minx47=0 -miny47=0 -maxx47=0 -maxy47=0 -posx47=50 -posy47=50 -sizx47=800 -sizy47=600 -maxfps47=0 -initts47=0 -title48=Crazy Taxy -path48=C:\Games\Crazy_Taxi\Crazy Taxi PC Version\crazy_taxi_pc.exe -module48= -opengllib48= -ver48=8 -coord48=0 -flag48=536870945 -flagg48=0 -flagh48=0 -flagi48=0 -tflag48=0 -initx48=0 -inity48=0 -minx48=0 -miny48=0 -maxx48=0 -maxy48=0 -posx48=50 -posy48=50 -sizx48=800 -sizy48=600 -maxfps48=0 -initts48=0 -title49=Crush! Deluxe -path49=C:\Games\Crush! Deluxe\CRUSHD.EXE -module49= -opengllib49= -ver49=0 -coord49=0 -flag49=134492706 -flagg49=0 -flagh49=0 -flagi49=0 -tflag49=0 -initx49=0 -inity49=0 -minx49=0 -miny49=0 -maxx49=0 -maxy49=0 -posx49=50 -posy49=50 -sizx49=800 -sizy49=600 -maxfps49=0 -initts49=0 -title50=Cybermercs -path50=C:\Games\cybermercs\cybermercs.exe -module50= -opengllib50= -ver50=0 -coord50=0 -flag50=134234146 -flagg50=16 -flagh50=0 -flagi50=0 -tflag50=0 -initx50=0 -inity50=0 -minx50=0 -miny50=0 -maxx50=0 -maxy50=0 -posx50=50 -posy50=50 -sizx50=800 -sizy50=600 -maxfps50=0 -initts50=0 -title51=Daikatana -path51=D:\Games\Daikatana\daikatana.exe -module51= -opengllib51= -ver51=12 -coord51=0 -flag51=269492738 -flagg51=537002497 -flagh51=20 -flagi51=0 -tflag51=2 -initx51=0 -inity51=0 -minx51=0 -miny51=0 -maxx51=0 -maxy51=0 -posx51=50 -posy51=50 -sizx51=800 -sizy51=600 -maxfps51=0 -initts51=0 -title52=Darius Gaiden -path52=C:\Games\Darius_gaiden\DARIUS.EXE -module52= -opengllib52= -ver52=0 -coord52=0 -flag52=536870946 -flagg52=0 -flagh52=0 -flagi52=0 -tflag52=0 -initx52=0 -inity52=0 -minx52=0 -miny52=0 -maxx52=0 -maxy52=0 -posx52=50 -posy52=50 -sizx52=800 -sizy52=600 -maxfps52=0 -initts52=0 -title53=Dark Colony the Council Wars -path53=C:\Games\darkcolony_council\dc\DC16.EXE -module53= -opengllib53= -ver53=0 -coord53=0 -flag53=268435462 -flagg53=0 -flagh53=0 -flagi53=0 -tflag53=0 -initx53=0 -inity53=0 -minx53=0 -miny53=0 -maxx53=0 -maxy53=0 -posx53=50 -posy53=50 -sizx53=800 -sizy53=600 -maxfps53=0 -initts53=0 -title54=Darkstone -path54=C:\Games\darkstone\Darkstone.exe -module54= -opengllib54= -ver54=0 -coord54=0 -flag54=134234148 -flagg54=0 -flagh54=0 -flagi54=0 -tflag54=0 -initx54=0 -inity54=0 -minx54=0 -miny54=0 -maxx54=0 -maxy54=0 -posx54=50 -posy54=50 -sizx54=800 -sizy54=600 -maxfps54=0 -initts54=0 -title55=Dave Mirra Freestyle BMX Demo -path55=C:\Games\Dave Mirra Freestyle BMX\NgBMXDemo.exe -module55= -opengllib55= -ver55=0 -coord55=0 -flag55=8224 -flagg55=0 -flagh55=0 -flagi55=0 -tflag55=0 -initx55=0 -inity55=0 -minx55=0 -miny55=0 -maxx55=0 -maxy55=0 -posx55=50 -posy55=50 -sizx55=800 -sizy55=600 -maxfps55=0 -initts55=0 -title56=Daytona USA Deluxe -path56=C:\Games\Daytona USA Deluxe\DAYTONA USA Deluxe.exe -module56= -opengllib56= -ver56=0 -coord56=0 -flag56=402661410 -flagg56=0 -flagh56=0 -flagi56=0 -tflag56=0 -initx56=0 -inity56=0 -minx56=0 -miny56=0 -maxx56=0 -maxy56=0 -posx56=50 -posy56=50 -sizx56=800 -sizy56=600 -maxfps56=0 -initts56=0 -title57=Deadlock 2 -path57=C:\Games\deadlock2\DEADLOCK.EXE -module57= -opengllib57= -ver57=0 -coord57=0 -flag57=-2012995550 -flagg57=0 -flagh57=0 -flagi57=0 -tflag57=0 -initx57=0 -inity57=0 -minx57=0 -miny57=0 -maxx57=0 -maxy57=0 -posx57=50 -posy57=50 -sizx57=800 -sizy57=600 -maxfps57=0 -initts57=0 -title58=Deeper Dungeons 95 -path58=C:\Games\Keeper95\Deeper95.exe -module58= -opengllib58= -ver58=0 -coord58=0 -flag58=268460070 -flagg58=0 -flagh58=0 -flagi58=0 -tflag58=0 -initx58=0 -inity58=0 -minx58=0 -miny58=0 -maxx58=0 -maxy58=0 -posx58=50 -posy58=50 -sizx58=800 -sizy58=600 -maxfps58=0 -initts58=0 -title59=Delta Force -path59=C:\Games\Delta Force\Df.exe -module59= -opengllib59= -ver59=0 -coord59=0 -flag59=34 -flagg59=0 -flagh59=0 -flagi59=0 -tflag59=0 -initx59=0 -inity59=0 -minx59=0 -miny59=0 -maxx59=0 -maxy59=0 -posx59=50 -posy59=50 -sizx59=800 -sizy59=600 -maxfps59=0 -initts59=0 -title60=Dementia -path60=C:\Games\dementia\program\CRUX.EXE -h -module60= -opengllib60= -ver60=0 -coord60=0 -flag60=536887330 -flagg60=0 -flagh60=0 -flagi60=0 -tflag60=2 -initx60=0 -inity60=0 -minx60=0 -miny60=0 -maxx60=0 -maxy60=0 -posx60=50 -posy60=50 -sizx60=800 -sizy60=600 -maxfps60=0 -initts60=0 -title61=Dethkarz -path61=D:\Games\DethKarz\Dethkarz.exe -module61= -opengllib61= -ver61=0 -coord61=0 -flag61=0 -flagg61=0 -flagh61=16 -flagi61=0 -tflag61=3 -initx61=0 -inity61=0 -minx61=0 -miny61=0 -maxx61=0 -maxy61=0 -posx61=50 -posy61=50 -sizx61=800 -sizy61=600 -maxfps61=0 -initts61=0 -title62=Devil Inside -path62=C:\Games\Devil Inside\Devil.exe -module62= -opengllib62= -ver62=0 -coord62=0 -flag62=32 -flagg62=0 -flagh62=0 -flagi62=0 -tflag62=0 -initx62=0 -inity62=0 -minx62=0 -miny62=0 -maxx62=0 -maxy62=0 -posx62=50 -posy62=50 -sizx62=800 -sizy62=600 -maxfps62=0 -initts62=0 -title63=Diablo -path63=D:\Games\Diablo\Diablo.exe -module63= -opengllib63= -ver63=1 -coord63=0 -flag63=138690594 -flagg63=1108344848 -flagh63=20 -flagi63=0 -tflag63=3 -initx63=0 -inity63=0 -minx63=0 -miny63=0 -maxx63=0 -maxy63=0 -posx63=50 -posy63=50 -sizx63=800 -sizy63=600 -maxfps63=0 -initts63=0 -title64=Dink Smallwood (BAD) -path64=C:\Games\Dink SmallWood\Dink.exe -module64= -opengllib64= -ver64=0 -coord64=0 -flag64=546 -flagg64=0 -flagh64=0 -flagi64=0 -tflag64=258 -initx64=0 -inity64=0 -minx64=0 -miny64=0 -maxx64=0 -maxy64=0 -posx64=50 -posy64=50 -sizx64=800 -sizy64=600 -maxfps64=0 -initts64=0 -title65=Doom 64 Absolution -path65=D:\Games\Doom 64 - Absolution (Win32 Port)\Bin\Absolution.exe -module65= -opengllib65= -ver65=8 -coord65=0 -flag65=134217728 -flagg65=86016 -flagh65=20 -flagi65=0 -tflag65=2 -initx65=0 -inity65=0 -minx65=0 -miny65=0 -maxx65=0 -maxy65=0 -posx65=50 -posy65=50 -sizx65=800 -sizy65=600 -maxfps65=100 -initts65=-5 -title66=Doom 95 -path66=D:\Games\Doom95\DOOM95.EXE -module66= -opengllib66= -ver66=0 -coord66=0 -flag66=134217762 -flagg66=2113536 -flagh66=16 -flagi66=0 -tflag66=258 -initx66=0 -inity66=0 -minx66=0 -miny66=0 -maxx66=0 -maxy66=0 -posx66=50 -posy66=50 -sizx66=800 -sizy66=600 -maxfps66=20 -initts66=-9 -title67=Drakan -path67=C:\Games\Drakan\drakan.exe -module67= -opengllib67= -ver67=0 -coord67=0 -flag67=536887328 -flagg67=0 -flagh67=0 -flagi67=0 -tflag67=0 -initx67=0 -inity67=0 -minx67=0 -miny67=0 -maxx67=0 -maxy67=0 -posx67=50 -posy67=50 -sizx67=800 -sizy67=600 -maxfps67=0 -initts67=0 -title68=Dream Aquarium -path68=D:\Program Files\Dream Aquarium\Dream_Aquarium.scr -module68= -opengllib68= -ver68=9 -coord68=0 -flag68=679477249 -flagg68=303104 -flagh68=0 -flagi68=0 -tflag68=256 -initx68=0 -inity68=0 -minx68=0 -miny68=0 -maxx68=0 -maxy68=0 -posx68=50 -posy68=50 -sizx68=800 -sizy68=600 -maxfps68=500 -initts68=0 -title69=Dungeon Keeper 2 GOG release -path69=D:\Games\Dungeon Keeper 2 GOG release\DKII.EXE -module69= -opengllib69= -ver69=0 -coord69=0 -flag69=134217762 -flagg69=4276224 -flagh69=0 -flagi69=0 -tflag69=6 -initx69=0 -inity69=0 -minx69=0 -miny69=0 -maxx69=0 -maxy69=0 -posx69=50 -posy69=50 -sizx69=800 -sizy69=600 -maxfps69=0 -initts69=0 -title70=Dungeon Keeper 95 -path70=D:\Games\Keeper95\KEEPER95.EXE -module70= -opengllib70= -ver70=0 -coord70=0 -flag70=134299686 -flagg70=0 -flagh70=16 -flagi70=0 -tflag70=0 -initx70=0 -inity70=0 -minx70=0 -miny70=0 -maxx70=0 -maxy70=0 -posx70=50 -posy70=50 -sizx70=800 -sizy70=600 -maxfps70=0 -initts70=0 -title71=Dungeon Keeper D3D -path71=D:\Games\Keeper95\keepd3d.exe -module71= -opengllib71= -ver71=0 -coord71=0 -flag71=134217762 -flagg71=134217728 -flagh71=17 -flagi71=0 -tflag71=259 -initx71=0 -inity71=0 -minx71=0 -miny71=0 -maxx71=0 -maxy71=0 -posx71=50 -posy71=50 -sizx71=800 -sizy71=600 -maxfps71=0 -initts71=0 -title72=Dungeon Keeper II -path72=D:\Games\Dungeon Keeper 2\DKII.exe -module72= -opengllib72= -ver72=0 -coord72=0 -flag72=34 -flagg72=574619648 -flagh72=20 -flagi72=0 -tflag72=263 -initx72=0 -inity72=0 -minx72=0 -miny72=0 -maxx72=0 -maxy72=0 -posx72=150 -posy72=50 -sizx72=800 -sizy72=600 -maxfps72=0 -initts72=0 -title73=Emergency Fighters for life -path73=D:\Games\Emergency\EMERGY.EXE -module73= -opengllib73= -ver73=0 -coord73=0 -flag73=402718947 -flagg73=65554 -flagh73=20 -flagi73=0 -tflag73=3 -initx73=0 -inity73=0 -minx73=0 -miny73=0 -maxx73=0 -maxy73=0 -posx73=50 -posy73=50 -sizx73=800 -sizy73=600 -maxfps73=0 -initts73=0 -title74=Enemy Infestation -path74=C:\Games\Enemy Infestation (1998)\Ei.exe -module74= -opengllib74= -ver74=0 -coord74=0 -flag74=38 -flagg74=0 -flagh74=0 -flagi74=0 -tflag74=0 -initx74=0 -inity74=0 -minx74=0 -miny74=0 -maxx74=0 -maxy74=0 -posx74=50 -posy74=50 -sizx74=800 -sizy74=600 -maxfps74=0 -initts74=0 -title75=Evany La chiave per mondi sconosciuti -path75=D:\Games\Evany La chiave per mondi sconosciuti\Evany.exe -module75= -opengllib75= -ver75=0 -coord75=0 -flag75=134348864 -flagg75=0 -flagh75=277 -flagi75=0 -tflag75=0 -initx75=0 -inity75=0 -minx75=0 -miny75=0 -maxx75=0 -maxy75=0 -posx75=50 -posy75=50 -sizx75=800 -sizy75=600 -maxfps75=0 -initts75=0 -title76=Evil Genius -path76=D:\Games\Evil Genius\ReleaseExe\EvilGenius_Cracked.exe -module76= -opengllib76= -ver76=9 -coord76=0 -flag76=2053 -flagg76=80 -flagh76=0 -flagi76=0 -tflag76=0 -initx76=0 -inity76=0 -minx76=0 -miny76=0 -maxx76=0 -maxy76=0 -posx76=50 -posy76=50 -sizx76=800 -sizy76=600 -maxfps76=0 -initts76=0 -title77=Expendable -path77=C:\Games\eXpendable\go.exe -nocputest -module77= -opengllib77= -ver77=0 -coord77=0 -flag77=402653280 -flagg77=1 -flagh77=0 -flagi77=0 -tflag77=2 -initx77=0 -inity77=0 -minx77=0 -miny77=0 -maxx77=0 -maxy77=0 -posx77=50 -posy77=50 -sizx77=800 -sizy77=600 -maxfps77=0 -initts77=0 -title78=Fallen Heaven -path78=D:\Games\Fallen haven\Exe\FALLEN.EXE -module78=MFC42.dll MSVCRT.DLL mciavi32.dll -opengllib78= -ver78=1 -coord78=0 -flag78=135004674 -flagg78=1049120 -flagh78=0 -flagi78=0 -tflag78=258 -initx78=0 -inity78=0 -minx78=0 -miny78=0 -maxx78=0 -maxy78=0 -posx78=50 -posy78=50 -sizx78=800 -sizy78=600 -maxfps78=0 -initts78=0 -title79=Fallen Heaven (BAD) -path79=C:\Games\falhaven\Exe\FALLEN.EXE -module79= -opengllib79= -ver79=0 -coord79=0 -flag79=679485962 -flagg79=32 -flagh79=0 -flagi79=0 -tflag79=0 -initx79=0 -inity79=0 -minx79=0 -miny79=0 -maxx79=0 -maxy79=0 -posx79=0 -posy79=0 -sizx79=800 -sizy79=600 -maxfps79=0 -initts79=0 -title80=Fallout -path80=D:\Games\Fallout\FALLOUTW.EXE -module80= -opengllib80= -ver80=0 -coord80=0 -flag80=134217734 -flagg80=16 -flagh80=16 -flagi80=0 -tflag80=0 -initx80=0 -inity80=0 -minx80=0 -miny80=0 -maxx80=0 -maxy80=0 -posx80=50 -posy80=50 -sizx80=800 -sizy80=600 -maxfps80=0 -initts80=0 -title81=Fighting Force -path81=D:\Games\Fighting Force\FFORCE.EXE -module81= -opengllib81= -ver81=0 -coord81=0 -flag81=134217730 -flagg81=134217728 -flagh81=477 -flagi81=0 -tflag81=0 -initx81=0 -inity81=0 -minx81=0 -miny81=0 -maxx81=0 -maxy81=0 -posx81=50 -posy81=50 -sizx81=800 -sizy81=600 -maxfps81=0 -initts81=0 -title82=FreakOut -path82=C:\Games\Freak Out - Extreme Freeride\FreakOut.exe -module82= -opengllib82= -ver82=9 -coord82=0 -flag82=0 -flagg82=0 -flagh82=0 -flagi82=0 -tflag82=2 -initx82=0 -inity82=0 -minx82=0 -miny82=0 -maxx82=0 -maxy82=0 -posx82=50 -posy82=50 -sizx82=800 -sizy82=600 -maxfps82=0 -initts82=0 -title83=Funtracks -path83=C:\Games\Funtracks\Fun_win.exe -module83= -opengllib83= -ver83=1 -coord83=0 -flag83=2 -flagg83=0 -flagh83=0 -flagi83=0 -tflag83=258 -initx83=0 -inity83=0 -minx83=0 -miny83=0 -maxx83=0 -maxy83=0 -posx83=50 -posy83=50 -sizx83=800 -sizy83=600 -maxfps83=0 -initts83=0 -title84=Galapagos -path84=C:\Games\Galapagos\GALA.EXE -module84= -opengllib84= -ver84=0 -coord84=0 -flag84=134217760 -flagg84=0 -flagh84=0 -flagi84=0 -tflag84=0 -initx84=0 -inity84=0 -minx84=0 -miny84=0 -maxx84=0 -maxy84=0 -posx84=50 -posy84=50 -sizx84=800 -sizy84=600 -maxfps84=0 -initts84=0 -title85=Gangsters -path85=D:\Games\Gangsters\gangsters.exe -module85= -opengllib85= -ver85=0 -coord85=0 -flag85=134217730 -flagg85=135266304 -flagh85=16 -flagi85=0 -tflag85=0 -initx85=0 -inity85=0 -minx85=0 -miny85=0 -maxx85=0 -maxy85=0 -posx85=50 -posy85=50 -sizx85=800 -sizy85=600 -maxfps85=0 -initts85=0 -title86=Garshasp -path86=D:\Games\Garshasp\distro\Garshasp.exe -module86= -opengllib86= -ver86=0 -coord86=0 -flag86=402653184 -flagg86=134217728 -flagh86=477 -flagi86=0 -tflag86=0 -initx86=0 -inity86=0 -minx86=0 -miny86=0 -maxx86=0 -maxy86=0 -posx86=50 -posy86=50 -sizx86=800 -sizy86=600 -maxfps86=0 -initts86=0 -title87=GeneRally -path87=C:\Games\generally105\GeneRally.exe -module87= -opengllib87= -ver87=0 -coord87=0 -flag87=34 -flagg87=0 -flagh87=0 -flagi87=0 -tflag87=0 -initx87=0 -inity87=0 -minx87=0 -miny87=0 -maxx87=0 -maxy87=0 -posx87=50 -posy87=50 -sizx87=800 -sizy87=600 -maxfps87=0 -initts87=0 -title88=Get Medieval -path88=C:\Games\Get Medieval\MEDIEVAL.EXE -module88= -opengllib88= -ver88=0 -coord88=0 -flag88=34 -flagg88=2 -flagh88=0 -flagi88=0 -tflag88=0 -initx88=0 -inity88=0 -minx88=0 -miny88=0 -maxx88=0 -maxy88=0 -posx88=0 -posy88=0 -sizx88=800 -sizy88=600 -maxfps88=0 -initts88=0 -title89=Gift -path89=C:\Games\Gift\Gift.exe -module89= -opengllib89= -ver89=0 -coord89=0 -flag89=4196384 -flagg89=0 -flagh89=0 -flagi89=0 -tflag89=34 -initx89=0 -inity89=0 -minx89=0 -miny89=0 -maxx89=0 -maxy89=0 -posx89=0 -posy89=0 -sizx89=0 -sizy89=0 -maxfps89=0 -initts89=0 -title90=glsample.exe -path90=D:\DxWnd\code examples\glsample\Debug\glsample.exe -module90= -opengllib90= -ver90=0 -coord90=0 -flag90=0 -flagg90=134348800 -flagh90=0 -flagi90=0 -tflag90=2 -initx90=0 -inity90=0 -minx90=0 -miny90=0 -maxx90=0 -maxy90=0 -posx90=0 -posy90=0 -sizx90=800 -sizy90=600 -maxfps90=0 -initts90=0 -title91=Golden Age of Racing -path91=C:\Games\Golden Age of Racing\GAOR.exe -module91= -opengllib91= -ver91=0 -coord91=0 -flag91=34 -flagg91=0 -flagh91=0 -flagi91=0 -tflag91=0 -initx91=0 -inity91=0 -minx91=0 -miny91=0 -maxx91=0 -maxy91=0 -posx91=50 -posy91=50 -sizx91=800 -sizy91=600 -maxfps91=0 -initts91=0 -title92=Gp500 for Win2K -path92=C:\Games\gp500\gp500_win2k.exe -module92= -opengllib92= -ver92=1 -coord92=0 -flag92=545677860 -flagg92=0 -flagh92=0 -flagi92=0 -tflag92=2 -initx92=0 -inity92=0 -minx92=0 -miny92=0 -maxx92=0 -maxy92=0 -posx92=50 -posy92=50 -sizx92=800 -sizy92=600 -maxfps92=0 -initts92=0 -title93=G-Police -path93=C:\Games\gpolice\GPOLICE.EXE -module93= -opengllib93= -ver93=0 -coord93=0 -flag93=67125286 -flagg93=0 -flagh93=0 -flagi93=0 -tflag93=2 -initx93=0 -inity93=0 -minx93=0 -miny93=0 -maxx93=0 -maxy93=0 -posx93=50 -posy93=50 -sizx93=800 -sizy93=600 -maxfps93=0 -initts93=0 -title94=Grand Prix Legends -path94=D:\Games\Grand Prix Legends\gpl\gpl.exe -module94= -opengllib94= -ver94=0 -coord94=0 -flag94=-2013233117 -flagg94=0 -flagh94=20 -flagi94=0 -tflag94=3 -initx94=0 -inity94=0 -minx94=0 -miny94=0 -maxx94=0 -maxy94=0 -posx94=50 -posy94=50 -sizx94=800 -sizy94=600 -maxfps94=0 -initts94=0 -title95=Grand Prix Legends MAX -path95=D:\Games\Grand Prix Legends MAX\gpl.exe -module95= -opengllib95= -ver95=7 -coord95=0 -flag95=537001986 -flagg95=134217729 -flagh95=0 -flagi95=0 -tflag95=2 -initx95=0 -inity95=0 -minx95=0 -miny95=0 -maxx95=0 -maxy95=0 -posx95=50 -posy95=50 -sizx95=800 -sizy95=600 -maxfps95=0 -initts95=0 -title96=Grand Prix World -path96=D:\Games\Grand Prix World\gpwxp2.exe -module96= -opengllib96= -ver96=0 -coord96=0 -flag96=2097314 -flagg96=134217856 -flagh96=80 -flagi96=0 -tflag96=35 -initx96=0 -inity96=0 -minx96=0 -miny96=0 -maxx96=0 -maxy96=0 -posx96=50 -posy96=50 -sizx96=800 -sizy96=600 -maxfps96=0 -initts96=0 -title97=Grand Theft Auto 2 -path97=D:\Games\GTA2\gta2.exe -module97=binkw32 d3ddll -opengllib97= -ver97=0 -coord97=0 -flag97=671096866 -flagg97=1048576 -flagh97=0 -flagi97=0 -tflag97=2 -initx97=0 -inity97=0 -minx97=0 -miny97=0 -maxx97=0 -maxy97=0 -posx97=50 -posy97=50 -sizx97=400 -sizy97=300 -maxfps97=0 -initts97=0 -title98=Grand Touring -path98=D:\Games\Grand Touring\gt.exe -module98= -opengllib98= -ver98=0 -coord98=0 -flag98=16390 -flagg98=134283264 -flagh98=16 -flagi98=0 -tflag98=275 -initx98=0 -inity98=0 -minx98=0 -miny98=0 -maxx98=0 -maxy98=0 -posx98=50 -posy98=50 -sizx98=800 -sizy98=600 -maxfps98=0 -initts98=8 -title99=Grim Fandango Demo -path99=C:\Games\GrimWebDemo\grimdemo.exe -module99= -opengllib99= -ver99=0 -coord99=0 -flag99=34 -flagg99=0 -flagh99=0 -flagi99=0 -tflag99=258 -initx99=0 -inity99=0 -minx99=0 -miny99=0 -maxx99=0 -maxy99=0 -posx99=50 -posy99=50 -sizx99=800 -sizy99=600 -maxfps99=0 -initts99=0 -title100=Gruntz -path100=D:\Games\gruntz\GRUNTZ.EXE -module100= -opengllib100= -ver100=0 -coord100=0 -flag100=34 -flagg100=134217728 -flagh100=16 -flagi100=0 -tflag100=0 -initx100=0 -inity100=0 -minx100=0 -miny100=0 -maxx100=0 -maxy100=0 -posx100=50 -posy100=50 -sizx100=800 -sizy100=600 -maxfps100=0 -initts100=0 -title101=GTA 3 -path101=D:\Games\GTA3\gta3.exe -module101= -opengllib101= -ver101=0 -coord101=0 -flag101=134234150 -flagg101=1207975952 -flagh101=176 -flagi101=0 -tflag101=2 -initx101=0 -inity101=0 -minx101=0 -miny101=0 -maxx101=0 -maxy101=0 -posx101=50 -posy101=50 -sizx101=800 -sizy101=600 -maxfps101=0 -initts101=0 -title102=Gunman Chronicles -path102=D:\Games\Gunman\gunman.exe -module102= -opengllib102= -ver102=0 -coord102=0 -flag102=0 -flagg102=-2013134848 -flagh102=0 -flagi102=0 -tflag102=0 -initx102=0 -inity102=0 -minx102=0 -miny102=0 -maxx102=0 -maxy102=0 -posx102=0 -posy102=0 -sizx102=400 -sizy102=300 -maxfps102=0 -initts102=0 -title103=Half-Life Blue-Shift (d3d) -path103=D:\Games\Half-Life Blue-Shift\bshift.exe -module103= -opengllib103= -ver103=7 -coord103=0 -flag103=1207959554 -flagg103=513 -flagh103=0 -flagi103=0 -tflag103=258 -initx103=0 -inity103=0 -minx103=0 -miny103=0 -maxx103=0 -maxy103=0 -posx103=50 -posy103=50 -sizx103=800 -sizy103=600 -maxfps103=0 -initts103=0 -title104=Half-Life Uplink Demo -path104=D:\Games\Half-Life Uplink\hldemo.exe -module104= -opengllib104= -ver104=1 -coord104=0 -flag104=1073741826 -flagg104=16384 -flagh104=0 -flagi104=0 -tflag104=2 -initx104=0 -inity104=0 -minx104=0 -miny104=0 -maxx104=0 -maxy104=0 -posx104=50 -posy104=50 -sizx104=640 -sizy104=480 -maxfps104=0 -initts104=0 -title105=Halo Combat Evolved -path105=D:\Games\Halo Combat Evolved\halo.exe -module105= -opengllib105= -ver105=9 -coord105=0 -flag105=570425377 -flagg105=-2147483648 -flagh105=0 -flagi105=0 -tflag105=478 -initx105=0 -inity105=0 -minx105=0 -miny105=0 -maxx105=0 -maxy105=0 -posx105=50 -posy105=50 -sizx105=800 -sizy105=600 -maxfps105=0 -initts105=0 -title106=Heart of Darkness -path106=d:\Games\Heart of Darkness\HODWin32.exe -module106= -opengllib106= -ver106=0 -coord106=0 -flag106=8226 -flagg106=2179072 -flagh106=16 -flagi106=0 -tflag106=0 -initx106=0 -inity106=0 -minx106=0 -miny106=0 -maxx106=0 -maxy106=0 -posx106=50 -posy106=50 -sizx106=800 -sizy106=600 -maxfps106=0 -initts106=4 -title107=Heavy Metal - FAKK2 Demo -path107=D:\Games\Heavy Metal - FAKK2 Demo\fakk2.exe -module107= -opengllib107= -ver107=0 -coord107=0 -flag107=4 -flagg107=134348800 -flagh107=284 -flagi107=0 -tflag107=0 -initx107=0 -inity107=0 -minx107=0 -miny107=0 -maxx107=0 -maxy107=0 -posx107=50 -posy107=50 -sizx107=800 -sizy107=600 -maxfps107=0 -initts107=0 -title108=Heavy Metal FAKK 2 -path108=C:\Games\Heavy Metal - FAKK2\fakk2.exe -module108= -opengllib108= -ver108=0 -coord108=0 -flag108=33554464 -flagg108=64 -flagh108=0 -flagi108=0 -tflag108=2 -initx108=0 -inity108=0 -minx108=0 -miny108=0 -maxx108=0 -maxy108=0 -posx108=50 -posy108=50 -sizx108=800 -sizy108=600 -maxfps108=0 -initts108=0 -title109=HellCopter -path109=C:\Games\hellcop\HCopter.exe -module109= -opengllib109= -ver109=0 -coord109=0 -flag109=-2013249500 -flagg109=256 -flagh109=0 -flagi109=0 -tflag109=0 -initx109=0 -inity109=0 -minx109=0 -miny109=0 -maxx109=0 -maxy109=0 -posx109=50 -posy109=50 -sizx109=800 -sizy109=600 -maxfps109=0 -initts109=0 -title110=Heretic 2 -path110=D:\Games\Heretic 2\Heretic2.exe -module110= -opengllib110= -ver110=0 -coord110=0 -flag110=0 -flagg110=134348800 -flagh110=29 -flagi110=0 -tflag110=258 -initx110=0 -inity110=0 -minx110=0 -miny110=0 -maxx110=0 -maxy110=0 -posx110=50 -posy110=50 -sizx110=800 -sizy110=600 -maxfps110=0 -initts110=0 -title111=Heroes of Might & Magic III Demo -path111=C:\Games\Heroes III Demo\h3demo.exe -module111= -opengllib111= -ver111=1 -coord111=0 -flag111=134234146 -flagg111=0 -flagh111=0 -flagi111=0 -tflag111=2 -initx111=0 -inity111=0 -minx111=0 -miny111=0 -maxx111=0 -maxy111=0 -posx111=50 -posy111=50 -sizx111=800 -sizy111=600 -maxfps111=0 -initts111=0 -title112=Hexen II (opengl) -path112=D:\Games\Hexen II\glh2.exe -module112= -opengllib112= -ver112=10 -coord112=1 -flag112=3 -flagg112=213009 -flagh112=16 -flagi112=0 -tflag112=386 -initx112=0 -inity112=0 -minx112=0 -miny112=0 -maxx112=0 -maxy112=0 -posx112=50 -posy112=50 -sizx112=800 -sizy112=600 -maxfps112=50 -initts112=8 -title113=Hexen II (software) -path113=D:\Games\Hexen II\h2.exe -module113= -opengllib113= -ver113=0 -coord113=0 -flag113=671088642 -flagg113=1130496 -flagh113=16 -flagi113=0 -tflag113=0 -initx113=0 -inity113=0 -minx113=0 -miny113=0 -maxx113=0 -maxy113=0 -posx113=50 -posy113=50 -sizx113=800 -sizy113=600 -maxfps113=0 -initts113=8 -title114=Hitman - Codename 47 -path114=D:\Games\Hitman - Codename 47\Hitman.Exe -module114= -opengllib114= -ver114=0 -coord114=0 -flag114=134217728 -flagg114=671088640 -flagh114=28 -flagi114=0 -tflag114=3 -initx114=0 -inity114=0 -minx114=0 -miny114=0 -maxx114=0 -maxy114=0 -posx114=50 -posy114=50 -sizx114=800 -sizy114=600 -maxfps114=0 -initts114=0 -title115=Homeworld 2 -path115=D:\Games\Homeworld2\Bin\Release\Homeworld2.exe -module115= -opengllib115= -ver115=0 -coord115=0 -flag115=671088642 -flagg115=134217728 -flagh115=477 -flagi115=0 -tflag115=0 -initx115=0 -inity115=0 -minx115=0 -miny115=0 -maxx115=0 -maxy115=0 -posx115=50 -posy115=50 -sizx115=800 -sizy115=600 -maxfps115=0 -initts115=0 -title116=hover -path116=C:\Games\hover\hoverX.exe -module116= -opengllib116= -ver116=0 -coord116=0 -flag116=8224 -flagg116=0 -flagh116=0 -flagi116=0 -tflag116=0 -initx116=0 -inity116=0 -minx116=0 -miny116=0 -maxx116=0 -maxy116=0 -posx116=50 -posy116=50 -sizx116=800 -sizy116=600 -maxfps116=0 -initts116=0 -title117=Hyperblade -path117=D:\Games\Hyperblade\HYPERX.EXE -module117= -opengllib117= -ver117=0 -coord117=0 -flag117=134217891 -flagg117=3231762 -flagh117=16 -flagi117=0 -tflag117=2 -initx117=0 -inity117=0 -minx117=0 -miny117=0 -maxx117=0 -maxy117=0 -posx117=50 -posy117=50 -sizx117=800 -sizy117=600 -maxfps117=25 -initts117=1 -title118=Idinaloq -path118=C:\Games\idina101\idinaloq.exe -module118= -opengllib118= -ver118=0 -coord118=0 -flag118=32 -flagg118=0 -flagh118=0 -flagi118=0 -tflag118=0 -initx118=0 -inity118=0 -minx118=0 -miny118=0 -maxx118=0 -maxy118=0 -posx118=50 -posy118=50 -sizx118=800 -sizy118=600 -maxfps118=0 -initts118=0 -title119=Immanis -path119=C:\Games\Immanis CD release\immanis.exe -module119= -opengllib119= -ver119=0 -coord119=0 -flag119=24611 -flagg119=0 -flagh119=0 -flagi119=0 -tflag119=0 -initx119=0 -inity119=0 -minx119=0 -miny119=0 -maxx119=0 -maxy119=0 -posx119=50 -posy119=50 -sizx119=800 -sizy119=600 -maxfps119=0 -initts119=0 -title120=Immanis (v2) -path120=C:\Games\Immanis CD release\immanis_v2.exe -module120= -opengllib120= -ver120=0 -coord120=0 -flag120=268460067 -flagg120=0 -flagh120=0 -flagi120=0 -tflag120=0 -initx120=0 -inity120=0 -minx120=0 -miny120=0 -maxx120=0 -maxy120=0 -posx120=50 -posy120=50 -sizx120=800 -sizy120=600 -maxfps120=0 -initts120=0 -title121=In the Hunt -path121=C:\Games\In The Hunt\e8.exe -module121= -opengllib121= -ver121=0 -coord121=0 -flag121=2 -flagg121=0 -flagh121=0 -flagi121=0 -tflag121=0 -initx121=0 -inity121=0 -minx121=0 -miny121=0 -maxx121=0 -maxy121=0 -posx121=50 -posy121=50 -sizx121=800 -sizy121=600 -maxfps121=0 -initts121=0 -title122=Incoming Forces -path122=D:\Games\Incoming Forces\forces.exe -module122= -opengllib122= -ver122=8 -coord122=0 -flag122=134217760 -flagg122=0 -flagh122=0 -flagi122=0 -tflag122=2 -initx122=0 -inity122=0 -minx122=0 -miny122=0 -maxx122=0 -maxy122=0 -posx122=50 -posy122=50 -sizx122=800 -sizy122=600 -maxfps122=0 -initts122=0 -title123=International Superstar Soccer 3 -path123=C:\Games\ISS_3\iss3.exe -module123= -opengllib123= -ver123=8 -coord123=0 -flag123=545267715 -flagg123=0 -flagh123=0 -flagi123=0 -tflag123=0 -initx123=0 -inity123=0 -minx123=0 -miny123=0 -maxx123=0 -maxy123=0 -posx123=50 -posy123=50 -sizx123=800 -sizy123=600 -maxfps123=0 -initts123=0 -title124=Jacked -path124=D:\Games\Jacked\Jacked.exe -module124=winmm -opengllib124= -ver124=9 -coord124=0 -flag124=537010208 -flagg124=196608 -flagh124=0 -flagi124=0 -tflag124=258 -initx124=0 -inity124=0 -minx124=0 -miny124=0 -maxx124=0 -maxy124=0 -posx124=50 -posy124=50 -sizx124=800 -sizy124=600 -maxfps124=100 -initts124=3 -title125=Jedi Knight II Jedi Outcast -path125=D:\Games\Jedi Knight II Jedi Outcast\GameData\jk2sp.exe -module125= -opengllib125= -ver125=0 -coord125=0 -flag125=2 -flagg125=1180161 -flagh125=16 -flagi125=0 -tflag125=2 -initx125=0 -inity125=0 -minx125=0 -miny125=0 -maxx125=0 -maxy125=0 -posx125=50 -posy125=50 -sizx125=800 -sizy125=600 -maxfps125=0 -initts125=0 -title126=Jet Moto -path126=M:\JETMOTO.EXE -module126= -opengllib126= -ver126=0 -coord126=0 -flag126=139298 -flagg126=0 -flagh126=0 -flagi126=0 -tflag126=0 -initx126=0 -inity126=0 -minx126=0 -miny126=0 -maxx126=0 -maxy126=0 -posx126=50 -posy126=50 -sizx126=800 -sizy126=600 -maxfps126=0 -initts126=0 -title127=Kiss Psyco Cyrcus -path127=C:\Games\Psycho\client.exe -module127=d3d.ren -opengllib127= -ver127=7 -coord127=0 -flag127=537018404 -flagg127=0 -flagh127=0 -flagi127=0 -tflag127=0 -initx127=0 -inity127=0 -minx127=0 -miny127=0 -maxx127=0 -maxy127=0 -posx127=50 -posy127=50 -sizx127=800 -sizy127=600 -maxfps127=0 -initts127=0 -title128=Kohan II Kings of War -path128=D:\Games\Kohan II Kings of War\k2.exe -module128= -opengllib128= -ver128=0 -coord128=0 -flag128=134217728 -flagg128=134217728 -flagh128=-842150435 -flagi128=-842150451 -tflag128=0 -initx128=0 -inity128=0 -minx128=0 -miny128=0 -maxx128=0 -maxy128=0 -posx128=50 -posy128=50 -sizx128=800 -sizy128=600 -maxfps128=0 -initts128=0 -title129=Koplio -path129=D:\Games\Koplio\KOPLIO.exe -module129= -opengllib129= -ver129=1 -coord129=0 -flag129=545390720 -flagg129=134217729 -flagh129=20 -flagi129=0 -tflag129=3 -initx129=0 -inity129=0 -minx129=0 -miny129=0 -maxx129=0 -maxy129=0 -posx129=50 -posy129=50 -sizx129=800 -sizy129=600 -maxfps129=0 -initts129=0 -title130=Krazy Ivan -path130=C:\Games\Krazy Ivan\KRAZY.EXE -module130= -opengllib130= -ver130=0 -coord130=0 -flag130=536870914 -flagg130=0 -flagh130=0 -flagi130=0 -tflag130=0 -initx130=0 -inity130=0 -minx130=0 -miny130=0 -maxx130=0 -maxy130=0 -posx130=50 -posy130=50 -sizx130=800 -sizy130=600 -maxfps130=0 -initts130=0 -title131=Last Bronx -path131=C:\Games\Last_Bronx\LB.EXE -module131= -opengllib131= -ver131=0 -coord131=0 -flag131=40994 -flagg131=0 -flagh131=0 -flagi131=0 -tflag131=64 -initx131=0 -inity131=0 -minx131=0 -miny131=0 -maxx131=0 -maxy131=0 -posx131=50 -posy131=50 -sizx131=800 -sizy131=600 -maxfps131=0 -initts131=0 -title132=Lionheart -path132=C:\Games\Lionheart Demo\Lionheart.exe -module132= -opengllib132= -ver132=0 -coord132=0 -flag132=-2147483612 -flagg132=0 -flagh132=0 -flagi132=0 -tflag132=0 -initx132=0 -inity132=0 -minx132=0 -miny132=0 -maxx132=0 -maxy132=0 -posx132=50 -posy132=50 -sizx132=800 -sizy132=600 -maxfps132=0 -initts132=0 -title133=lithtech.exe -path133=D:\Games\NOLF Technology Demo\lithtech.exe -module133= -opengllib133= -ver133=7 -coord133=0 -flag133=0 -flagg133=512 -flagh133=0 -flagi133=0 -tflag133=258 -initx133=0 -inity133=0 -minx133=0 -miny133=0 -maxx133=0 -maxy133=0 -posx133=50 -posy133=50 -sizx133=800 -sizy133=600 -maxfps133=0 -initts133=0 -title134=Lords of the Realm 2 -path134=D:\Games\L2SIEGE\LORDS2.EXE -module134= -opengllib134= -ver134=0 -coord134=0 -flag134=38 -flagg134=65536 -flagh134=16 -flagi134=0 -tflag134=8 -initx134=0 -inity134=0 -minx134=0 -miny134=0 -maxx134=0 -maxy134=0 -posx134=50 -posy134=50 -sizx134=800 -sizy134=600 -maxfps134=0 -initts134=0 -title135=M.A.X. 2 -path135=C:\Games\MAX 2\MAX_2\MAX2\MAX2.EXE -module135= -opengllib135= -ver135=0 -coord135=0 -flag135=34 -flagg135=0 -flagh135=0 -flagi135=0 -tflag135=0 -initx135=0 -inity135=0 -minx135=0 -miny135=0 -maxx135=0 -maxy135=0 -posx135=50 -posy135=50 -sizx135=800 -sizy135=600 -maxfps135=0 -initts135=0 -title136=M1 Tank Platoon 2 -path136=C:\Games\M1 Tank Platoon 2\M1TP2.exe -module136= -opengllib136= -ver136=8 -coord136=0 -flag136=34 -flagg136=0 -flagh136=0 -flagi136=0 -tflag136=0 -initx136=0 -inity136=0 -minx136=0 -miny136=0 -maxx136=0 -maxy136=0 -posx136=50 -posy136=50 -sizx136=800 -sizy136=600 -maxfps136=0 -initts136=0 -title137=Mario Worlds (stripped PE) -path137=C:\Games\Mario Worlds\Mario Worlds.exe -module137= -opengllib137= -ver137=1 -coord137=0 -flag137=2 -flagg137=1 -flagh137=0 -flagi137=0 -tflag137=386 -initx137=0 -inity137=0 -minx137=0 -miny137=0 -maxx137=0 -maxy137=0 -posx137=50 -posy137=50 -sizx137=800 -sizy137=600 -maxfps137=0 -initts137=0 -title138=Masters of Orion 2 -path138=C:\Games\Orion2\Orion95.exe -module138= -opengllib138= -ver138=0 -coord138=0 -flag138=34 -flagg138=0 -flagh138=0 -flagi138=0 -tflag138=0 -initx138=0 -inity138=0 -minx138=0 -miny138=0 -maxx138=0 -maxy138=0 -posx138=50 -posy138=50 -sizx138=800 -sizy138=600 -maxfps138=0 -initts138=0 -title139=Microsoft Flight Simulator 98 -path139=C:\Games\Flight Simulator 98\FLTSIM98.EXE -module139= -opengllib139= -ver139=0 -coord139=0 -flag139=288 -flagg139=0 -flagh139=0 -flagi139=0 -tflag139=0 -initx139=0 -inity139=0 -minx139=0 -miny139=0 -maxx139=0 -maxy139=0 -posx139=50 -posy139=50 -sizx139=800 -sizy139=600 -maxfps139=0 -initts139=0 -title140=Microsoft Midtown Madness -path140=C:\Games\Midtown Madness\midtown.exe -module140= -opengllib140= -ver140=0 -coord140=0 -flag140=8192 -flagg140=0 -flagh140=0 -flagi140=0 -tflag140=2 -initx140=0 -inity140=0 -minx140=0 -miny140=0 -maxx140=0 -maxy140=0 -posx140=50 -posy140=50 -sizx140=800 -sizy140=600 -maxfps140=0 -initts140=0 -title141=Microsoft Midtown Madness Trial (BAD) -path141=C:\Games\Midtown Madness Trial\midtrial.exe -module141= -opengllib141= -ver141=0 -coord141=0 -flag141=2 -flagg141=0 -flagh141=0 -flagi141=0 -tflag141=0 -initx141=0 -inity141=0 -minx141=0 -miny141=0 -maxx141=0 -maxy141=0 -posx141=0 -posy141=0 -sizx141=800 -sizy141=600 -maxfps141=0 -initts141=0 -title142=Microsoft Motocross Madness 2 (BAD!!) -path142=C:\Games\Motocross Madness 2\MCM2.cracked.EXE -module142= -opengllib142= -ver142=7 -coord142=0 -flag142=201326664 -flagg142=1 -flagh142=0 -flagi142=0 -tflag142=82 -initx142=0 -inity142=0 -minx142=0 -miny142=0 -maxx142=0 -maxy142=0 -posx142=50 -posy142=50 -sizx142=800 -sizy142=600 -maxfps142=0 -initts142=0 -title143=Microsoft Motocross Madness Trial (BAD) -path143=C:\Games\Motocross Madness Trial\mcm.exe -module143= -opengllib143= -ver143=1 -coord143=0 -flag143=134225952 -flagg143=0 -flagh143=0 -flagi143=0 -tflag143=130 -initx143=0 -inity143=0 -minx143=0 -miny143=0 -maxx143=0 -maxy143=0 -posx143=50 -posy143=50 -sizx143=0 -sizy143=0 -maxfps143=0 -initts143=0 -title144=Mission Force Cyberstorm (BAD ?) -path144=C:\Games\SIERRA\CSTORM\CSTORM.EXE -module144= -opengllib144= -ver144=0 -coord144=0 -flag144=33562658 -flagg144=0 -flagh144=0 -flagi144=0 -tflag144=0 -initx144=0 -inity144=0 -minx144=0 -miny144=0 -maxx144=0 -maxy144=0 -posx144=50 -posy144=50 -sizx144=0 -sizy144=0 -maxfps144=0 -initts144=0 -title145=Monopoly 3D -path145=C:\Games\Monopoly (Edition 3D)\Monopoly.exe -module145= -opengllib145= -ver145=0 -coord145=0 -flag145=134244388 -flagg145=0 -flagh145=0 -flagi145=0 -tflag145=2 -initx145=0 -inity145=0 -minx145=0 -miny145=0 -maxx145=0 -maxy145=0 -posx145=50 -posy145=50 -sizx145=800 -sizy145=600 -maxfps145=0 -initts145=0 -title146=Monster Truck Madness 2 -path146=C:\Games\Monster Truck Madness 2\Monster.EXE -module146= -opengllib146= -ver146=1 -coord146=0 -flag146=34 -flagg146=1 -flagh146=0 -flagi146=0 -tflag146=0 -initx146=0 -inity146=0 -minx146=0 -miny146=0 -maxx146=0 -maxy146=0 -posx146=50 -posy146=50 -sizx146=800 -sizy146=600 -maxfps146=0 -initts146=0 -title147=Moto Racer Demo -path147=D:\Games\Moto Racer Demo\PlayDemo.exe -module147= -opengllib147= -ver147=0 -coord147=0 -flag147=167903267 -flagg147=192 -flagh147=16 -flagi147=0 -tflag147=14 -initx147=0 -inity147=0 -minx147=0 -miny147=0 -maxx147=0 -maxy147=0 -posx147=50 -posy147=50 -sizx147=800 -sizy147=600 -maxfps147=0 -initts147=0 -title148=MTV Music Generator -path148=D:\games\MTV Music Generator\mtvmusic.exe -module148= -opengllib148= -ver148=0 -coord148=0 -flag148=136314914 -flagg148=1209008128 -flagh148=797 -flagi148=0 -tflag148=3 -initx148=0 -inity148=0 -minx148=0 -miny148=0 -maxx148=0 -maxy148=0 -posx148=50 -posy148=50 -sizx148=800 -sizy148=600 -maxfps148=0 -initts148=0 -title149=Necrodrome -path149=C:\Games\Necrodome\NECRO95.EXE -module149= -opengllib149= -ver149=0 -coord149=0 -flag149=268435495 -flagg149=256 -flagh149=16 -flagi149=0 -tflag149=0 -initx149=0 -inity149=0 -minx149=0 -miny149=0 -maxx149=0 -maxy149=0 -posx149=50 -posy149=50 -sizx149=800 -sizy149=600 -maxfps149=0 -initts149=0 -title150=Need For Speed - Porsche 2000 -path150=C:\Games\Need For Speed - Porsche 2000\Porsche.exe -module150= -opengllib150= -ver150=7 -coord150=0 -flag150=0 -flagg150=0 -flagh150=0 -flagi150=0 -tflag150=258 -initx150=0 -inity150=0 -minx150=0 -miny150=0 -maxx150=0 -maxy150=0 -posx150=50 -posy150=50 -sizx150=800 -sizy150=600 -maxfps150=0 -initts150=0 -title151=Need For Speed Underground -path151=D:\Games\Need For Speed Underground\speed.exe -module151= -opengllib151= -ver151=0 -coord151=0 -flag151=671088674 -flagg151=1815101441 -flagh151=60 -flagi151=0 -tflag151=322 -initx151=0 -inity151=0 -minx151=0 -miny151=0 -maxx151=0 -maxy151=0 -posx151=50 -posy151=50 -sizx151=800 -sizy151=600 -maxfps151=0 -initts151=6 -title152=Need for Speed Underground 2 -path152=D:\Games\Need for Speed Underground 2\SPEED2.EXE -module152= -opengllib152= -ver152=0 -coord152=0 -flag152=671105026 -flagg152=136331264 -flagh152=61 -flagi152=0 -tflag152=6 -initx152=0 -inity152=0 -minx152=0 -miny152=0 -maxx152=0 -maxy152=0 -posx152=50 -posy152=50 -sizx152=800 -sizy152=600 -maxfps152=0 -initts152=0 -title153=Need For Speed Underground Demo -path153=D:\Games\Need For Speed Underground Demo\speeddemo.exe -module153= -opengllib153= -ver153=9 -coord153=0 -flag153=0 -flagg153=673202192 -flagh153=61 -flagi153=0 -tflag153=2 -initx153=0 -inity153=0 -minx153=0 -miny153=0 -maxx153=0 -maxy153=0 -posx153=50 -posy153=50 -sizx153=800 -sizy153=600 -maxfps153=0 -initts153=0 -title154=Netstorm Islands at War -path154=C:\Games\Netstorm\Netstorm.exe -module154= -opengllib154= -ver154=0 -coord154=0 -flag154=2 -flagg154=0 -flagh154=0 -flagi154=0 -tflag154=0 -initx154=0 -inity154=0 -minx154=0 -miny154=0 -maxx154=0 -maxy154=0 -posx154=50 -posy154=50 -sizx154=800 -sizy154=600 -maxfps154=0 -initts154=0 -title155=Nightmare Ned -path155=D:\Games\Ned\NITENED.EXE -module155= -opengllib155= -ver155=0 -coord155=0 -flag155=537395202 -flagg155=135266305 -flagh155=0 -flagi155=0 -tflag155=0 -initx155=0 -inity155=0 -minx155=0 -miny155=0 -maxx155=0 -maxy155=0 -posx155=0 -posy155=0 -sizx155=800 -sizy155=600 -maxfps155=0 -initts155=0 -title156=Nocturne -path156=D:\Games\Nocturne\nocturne.exe -module156= -opengllib156= -ver156=0 -coord156=0 -flag156=134217730 -flagg156=402653264 -flagh156=144 -flagi156=0 -tflag156=3 -initx156=0 -inity156=0 -minx156=0 -miny156=0 -maxx156=0 -maxy156=0 -posx156=50 -posy156=50 -sizx156=800 -sizy156=600 -maxfps156=0 -initts156=0 -title157=Nox -path157=d:\Games\Nox\Game.exe -module157= -opengllib157= -ver157=0 -coord157=0 -flag157=939540515 -flagg157=0 -flagh157=0 -flagi157=0 -tflag157=386 -initx157=0 -inity157=0 -minx157=0 -miny157=0 -maxx157=0 -maxy157=0 -posx157=50 -posy157=50 -sizx157=800 -sizy157=600 -maxfps157=0 -initts157=0 -title158=Pacific General -path158=C:\Games\Pacific General\PACGEN.EXE -module158= -opengllib158= -ver158=0 -coord158=0 -flag158=8226 -flagg158=0 -flagh158=0 -flagi158=0 -tflag158=2 -initx158=0 -inity158=0 -minx158=0 -miny158=0 -maxx158=0 -maxy158=0 -posx158=50 -posy158=50 -sizx158=800 -sizy158=600 -maxfps158=0 -initts158=0 -title159=Pandemonium 2 -path159=D:\Games\Pandemonium 2\pandy.exe -module159= -opengllib159= -ver159=0 -coord159=0 -flag159=201326594 -flagg159=1 -flagh159=20 -flagi159=0 -tflag159=0 -initx159=0 -inity159=0 -minx159=0 -miny159=0 -maxx159=0 -maxy159=0 -posx159=50 -posy159=50 -sizx159=800 -sizy159=600 -maxfps159=0 -initts159=0 -title160=Pharaoh -path160=D:\Games\Pharaoh\Pharaoh.exe -module160= -opengllib160= -ver160=0 -coord160=0 -flag160=1207959586 -flagg160=1048576 -flagh160=16 -flagi160=0 -tflag160=3 -initx160=0 -inity160=0 -minx160=0 -miny160=0 -maxx160=0 -maxy160=0 -posx160=50 -posy160=50 -sizx160=800 -sizy160=600 -maxfps160=0 -initts160=0 -title161=Postal -path161=D:\Games\Postal\POSTAL.EXE -module161= -opengllib161= -ver161=1 -coord161=0 -flag161=671352835 -flagg161=1114112 -flagh161=20 -flagi161=0 -tflag161=0 -initx161=0 -inity161=0 -minx161=0 -miny161=0 -maxx161=0 -maxy161=0 -posx161=50 -posy161=50 -sizx161=800 -sizy161=600 -maxfps161=0 -initts161=-3 -title162=Premier Manager 98 -path162=D:\Games\Premier Manager 98\MANAGER.EXE -module162= -opengllib162= -ver162=0 -coord162=0 -flag162=671088674 -flagg162=1207959552 -flagh162=16 -flagi162=0 -tflag162=0 -initx162=0 -inity162=0 -minx162=0 -miny162=0 -maxx162=0 -maxy162=0 -posx162=50 -posy162=50 -sizx162=800 -sizy162=600 -maxfps162=0 -initts162=0 -title163=Project Nomads Demo (BAD) -path163=C:\Games\Project Nomads Demo\bin\win32\nomads.exe -module163= -opengllib163= -ver163=8 -coord163=0 -flag163=-1476394912 -flagg163=256 -flagh163=0 -flagi163=0 -tflag163=258 -initx163=0 -inity163=0 -minx163=0 -miny163=0 -maxx163=0 -maxy163=0 -posx163=50 -posy163=50 -sizx163=800 -sizy163=600 -maxfps163=0 -initts163=0 -title164=Puzzle Bubble -path164=C:\Games\Puzzle Bubble\PB.EXE -module164= -opengllib164= -ver164=0 -coord164=0 -flag164=34 -flagg164=0 -flagh164=0 -flagi164=0 -tflag164=0 -initx164=0 -inity164=0 -minx164=0 -miny164=0 -maxx164=0 -maxy164=0 -posx164=50 -posy164=50 -sizx164=800 -sizy164=600 -maxfps164=0 -initts164=0 -title165=Quake 2 -path165=D:\Games\QUAKE2\quake2.exe -module165= -opengllib165= -ver165=10 -coord165=0 -flag165=671089154 -flagg165=671220289 -flagh165=16 -flagi165=0 -tflag165=258 -initx165=0 -inity165=0 -minx165=0 -miny165=0 -maxx165=0 -maxy165=0 -posx165=50 -posy165=50 -sizx165=800 -sizy165=600 -maxfps165=0 -initts165=0 -title166=Quake 3 Arena -path166=D:\Games\Q3A\quake3.exe -module166= -opengllib166= -ver166=0 -coord166=0 -flag166=536870914 -flagg166=1180161 -flagh166=16 -flagi166=0 -tflag166=3 -initx166=0 -inity166=0 -minx166=0 -miny166=0 -maxx166=0 -maxy166=0 -posx166=50 -posy166=50 -sizx166=800 -sizy166=600 -maxfps166=0 -initts166=0 -title167=Raiden II -path167=C:\Games\Raiden II\Raiden II\RAIDENII.EXE -module167= -opengllib167= -ver167=0 -coord167=0 -flag167=34 -flagg167=0 -flagh167=0 -flagi167=0 -tflag167=0 -initx167=0 -inity167=0 -minx167=0 -miny167=0 -maxx167=0 -maxy167=0 -posx167=50 -posy167=50 -sizx167=800 -sizy167=600 -maxfps167=0 -initts167=0 -title168=Railroad Tycoon II -path168=C:\Games\Railroad.Tycoon.II\RT2.EXE -module168= -opengllib168= -ver168=1 -coord168=0 -flag168=134225954 -flagg168=0 -flagh168=0 -flagi168=0 -tflag168=0 -initx168=0 -inity168=0 -minx168=0 -miny168=0 -maxx168=0 -maxy168=0 -posx168=50 -posy168=50 -sizx168=800 -sizy168=600 -maxfps168=0 -initts168=0 -title169=Rally Championship 2000 -path169=C:\Games\Rally Championship 2000\RAL.EXE -module169= -opengllib169= -ver169=0 -coord169=0 -flag169=67108864 -flagg169=0 -flagh169=0 -flagi169=0 -tflag169=2 -initx169=0 -inity169=0 -minx169=0 -miny169=0 -maxx169=0 -maxy169=0 -posx169=50 -posy169=50 -sizx169=800 -sizy169=600 -maxfps169=0 -initts169=0 -title170=Rebel Moon Rising -path170=C:\Games\Rebel Moon Rising\Rmr.exe -module170= -opengllib170= -ver170=0 -coord170=0 -flag170=0 -flagg170=0 -flagh170=0 -flagi170=0 -tflag170=0 -initx170=0 -inity170=0 -minx170=0 -miny170=0 -maxx170=0 -maxy170=0 -posx170=50 -posy170=50 -sizx170=800 -sizy170=600 -maxfps170=0 -initts170=0 -title171=Redline - Gang Warfare 2066 -path171=C:\Games\Redline - Gang Warfare 2066\redline.exe -module171= -opengllib171= -ver171=0 -coord171=0 -flag171=32 -flagg171=0 -flagh171=0 -flagi171=0 -tflag171=386 -initx171=0 -inity171=0 -minx171=0 -miny171=0 -maxx171=0 -maxy171=0 -posx171=50 -posy171=50 -sizx171=800 -sizy171=600 -maxfps171=0 -initts171=0 -title172=Resident Evil -path172=D:\Games\Resident Evil\residentevil.patched.exe -module172= -opengllib172= -ver172=1 -coord172=0 -flag172=134217827 -flagg172=128 -flagh172=16 -flagi172=0 -tflag172=2 -initx172=0 -inity172=0 -minx172=0 -miny172=0 -maxx172=0 -maxy172=0 -posx172=50 -posy172=50 -sizx172=800 -sizy172=600 -maxfps172=0 -initts172=0 -title173=Resurrection -path173=D:\Games\Resurrection Il Ritorno del Drago Nero\Resurrection.exe -module173= -opengllib173= -ver173=7 -coord173=0 -flag173=136314882 -flagg173=134217728 -flagh173=29 -flagi173=0 -tflag173=3 -initx173=0 -inity173=0 -minx173=0 -miny173=0 -maxx173=0 -maxy173=0 -posx173=50 -posy173=50 -sizx173=800 -sizy173=600 -maxfps173=0 -initts173=0 -title174=Return to Castle Wolfenstein -path174=D:\Games\Return to Castle Wolfenstein (2001)\Return to Castle Wolfenstein\WolfSP.exe -module174= -opengllib174= -ver174=0 -coord174=0 -flag174=134234114 -flagg174=-2147270656 -flagh174=0 -flagi174=0 -tflag174=256 -initx174=0 -inity174=0 -minx174=0 -miny174=0 -maxx174=0 -maxy174=0 -posx174=50 -posy174=50 -sizx174=800 -sizy174=600 -maxfps174=50 -initts174=-4 -title175=Re-Volt -path175=C:\Games\Re-Volt\REVOLT.EXE -module175= -opengllib175= -ver175=0 -coord175=0 -flag175=134217792 -flagg175=0 -flagh175=0 -flagi175=0 -tflag175=0 -initx175=0 -inity175=0 -minx175=0 -miny175=0 -maxx175=0 -maxy175=0 -posx175=50 -posy175=50 -sizx175=800 -sizy175=600 -maxfps175=0 -initts175=0 -title176=Road Rash -path176=D:\Games\Road Rash\ROADRASH\ROADRASH.EXE -module176= -opengllib176= -ver176=0 -coord176=0 -flag176=134217730 -flagg176=0 -flagh176=0 -flagi176=0 -tflag176=386 -initx176=0 -inity176=0 -minx176=0 -miny176=0 -maxx176=0 -maxy176=0 -posx176=50 -posy176=50 -sizx176=800 -sizy176=600 -maxfps176=0 -initts176=0 -title177=Road Rash Demo -path177=D:\Games\RoadRash DEMO\DEMORASH.EXE -module177= -opengllib177= -ver177=0 -coord177=0 -flag177=134218242 -flagg177=0 -flagh177=0 -flagi177=0 -tflag177=258 -initx177=0 -inity177=0 -minx177=0 -miny177=0 -maxx177=0 -maxy177=0 -posx177=50 -posy177=50 -sizx177=800 -sizy177=600 -maxfps177=0 -initts177=0 -title178=Rogue Spear (BAD) -path178=D:\Games\Rogue Spear\RogueSpear.exe -module178= -opengllib178= -ver178=1 -coord178=0 -flag178=134234116 -flagg178=134217984 -flagh178=20 -flagi178=0 -tflag178=2 -initx178=0 -inity178=0 -minx178=0 -miny178=0 -maxx178=0 -maxy178=0 -posx178=50 -posy178=50 -sizx178=800 -sizy178=600 -maxfps178=0 -initts178=0 -title179=Rollcage -path179=D:\Games\Rollcage\Direct3D\Rollcage.exe -module179= -opengllib179= -ver179=0 -coord179=1 -flag179=520093712 -flagg179=135331840 -flagh179=20 -flagi179=0 -tflag179=3 -initx179=0 -inity179=0 -minx179=0 -miny179=0 -maxx179=0 -maxy179=0 -posx179=50 -posy179=50 -sizx179=800 -sizy179=600 -maxfps179=0 -initts179=0 -title180=RollerCoaster Tycoon 2 Mini Game -path180=C:\Games\RollerCoaster Tycoon 2 Mini Game\rct2.exe -module180= -opengllib180= -ver180=1 -coord180=0 -flag180=536870946 -flagg180=0 -flagh180=0 -flagi180=0 -tflag180=0 -initx180=0 -inity180=0 -minx180=0 -miny180=0 -maxx180=0 -maxy180=0 -posx180=0 -posy180=0 -sizx180=800 -sizy180=600 -maxfps180=0 -initts180=0 -title181=Sega Rally 2 Championship -path181=C:\Games\Sega Rally 2 Championship\SEGA RALLY 2.exe -module181= -opengllib181= -ver181=1 -coord181=0 -flag181=268435488 -flagg181=2 -flagh181=0 -flagi181=0 -tflag181=0 -initx181=0 -inity181=0 -minx181=0 -miny181=0 -maxx181=0 -maxy181=0 -posx181=0 -posy181=0 -sizx181=800 -sizy181=600 -maxfps181=0 -initts181=0 -title182=Sentinel Returns -path182=D:\Games\Sentinel Returns\Sentinel.exe -module182= -opengllib182= -ver182=1 -coord182=0 -flag182=3 -flagg182=-2147483648 -flagh182=0 -flagi182=0 -tflag182=0 -initx182=0 -inity182=0 -minx182=0 -miny182=0 -maxx182=0 -maxy182=0 -posx182=50 -posy182=50 -sizx182=800 -sizy182=600 -maxfps182=0 -initts182=0 -title183=Shadow Master (TBD) -path183=C:\Games\Shadow Master\rmg.exe -module183= -opengllib183= -ver183=1 -coord183=0 -flag183=32 -flagg183=256 -flagh183=0 -flagi183=0 -tflag183=450 -initx183=0 -inity183=0 -minx183=0 -miny183=0 -maxx183=0 -maxy183=0 -posx183=50 -posy183=50 -sizx183=800 -sizy183=600 -maxfps183=0 -initts183=0 -title184=Sid Meier's SimGolf Demo -path184=C:\Games\Sid Meier's SimGolf Demo\golf.exe -module184=jgl.dll -opengllib184= -ver184=0 -coord184=0 -flag184=33554434 -flagg184=0 -flagh184=0 -flagi184=0 -tflag184=2 -initx184=0 -inity184=0 -minx184=0 -miny184=0 -maxx184=0 -maxy184=0 -posx184=50 -posy184=50 -sizx184=800 -sizy184=600 -maxfps184=0 -initts184=0 -title185=Silent Storm Demo -path185=D:\Games\Silent Storm Demo\SilentStormDemo.exe -module185= -opengllib185= -ver185=0 -coord185=0 -flag185=536870913 -flagg185=-2013265664 -flagh185=0 -flagi185=0 -tflag185=2 -initx185=0 -inity185=0 -minx185=0 -miny185=0 -maxx185=0 -maxy185=0 -posx185=50 -posy185=50 -sizx185=800 -sizy185=600 -maxfps185=0 -initts185=0 -title186=Sin, Wages of (sw renderer) -path186=D:\Games\sin\sin.exe -module186= -opengllib186= -ver186=10 -coord186=0 -flag186=402670082 -flagg186=131585 -flagh186=20 -flagi186=0 -tflag186=386 -initx186=0 -inity186=0 -minx186=0 -miny186=0 -maxx186=0 -maxy186=0 -posx186=50 -posy186=50 -sizx186=800 -sizy186=600 -maxfps186=0 -initts186=0 -title187=SleepWalker -path187=C:\Games\SleepWalker\Sleepy.exe -module187= -opengllib187= -ver187=0 -coord187=0 -flag187=301989954 -flagg187=0 -flagh187=0 -flagi187=0 -tflag187=198 -initx187=0 -inity187=0 -minx187=0 -miny187=0 -maxx187=0 -maxy187=0 -posx187=50 -posy187=50 -sizx187=800 -sizy187=600 -maxfps187=0 -initts187=0 -title188=SnowBoard Racer -path188=C:\Games\Snowboard Racer\SnowBoard.exe -module188= -opengllib188= -ver188=0 -coord188=0 -flag188=268443681 -flagg188=0 -flagh188=0 -flagi188=0 -tflag188=0 -initx188=0 -inity188=0 -minx188=0 -miny188=0 -maxx188=0 -maxy188=0 -posx188=50 -posy188=50 -sizx188=800 -sizy188=600 -maxfps188=0 -initts188=0 -title189=Solaris (~BAD) -path189=c:\Games\Solaris\solaris.exe -module189= -opengllib189= -ver189=7 -coord189=0 -flag189=973078627 -flagg189=1 -flagh189=0 -flagi189=0 -tflag189=2 -initx189=0 -inity189=0 -minx189=0 -miny189=0 -maxx189=0 -maxy189=0 -posx189=50 -posy189=50 -sizx189=800 -sizy189=600 -maxfps189=0 -initts189=0 -title190=Soldiers at War -path190=D:\Games\Soldiers at War\SAW_Game.exe -module190= -opengllib190= -ver190=0 -coord190=0 -flag190=671359010 -flagg190=64 -flagh190=0 -flagi190=0 -tflag190=0 -initx190=0 -inity190=0 -minx190=0 -miny190=0 -maxx190=0 -maxy190=0 -posx190=50 -posy190=50 -sizx190=640 -sizy190=480 -maxfps190=0 -initts190=0 -title191=Sonic 3 -path191=C:\Games\Sonic 3 + Sonic et Knuckles\Sonic 3\SONIC3K.EXE -module191= -opengllib191= -ver191=1 -coord191=0 -flag191=546 -flagg191=0 -flagh191=0 -flagi191=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=Sonic 3D Blast -path192=C:\Games\Sonic3D\pcsonic.exe -module192= -opengllib192= -ver192=0 -coord192=0 -flag192=134217762 -flagg192=0 -flagh192=0 -flagi192=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=Sonic R -path193=C:\Games\SonicR\sonicr.exe -module193= -opengllib193= -ver193=0 -coord193=0 -flag193=8288 -flagg193=0 -flagh193=0 -flagi193=0 -tflag193=0 -initx193=0 -inity193=0 -minx193=0 -miny193=0 -maxx193=0 -maxy193=0 -posx193=50 -posy193=50 -sizx193=800 -sizy193=600 -maxfps193=0 -initts193=0 -title194=Soulbringer -path194=C:\Games\SoulBringer\SoulbringeVCnoeax.exe -module194= -opengllib194= -ver194=0 -coord194=0 -flag194=143024174 -flagg194=0 -flagh194=0 -flagi194=0 -tflag194=0 -initx194=0 -inity194=0 -minx194=0 -miny194=0 -maxx194=0 -maxy194=0 -posx194=50 -posy194=50 -sizx194=800 -sizy194=600 -maxfps194=0 -initts194=0 -title195=Speedboat Attack (BAD) -path195=C:\Games\Speedboat Attack\SBOAT.EXE -module195= -opengllib195= -ver195=0 -coord195=0 -flag195=541073954 -flagg195=0 -flagh195=0 -flagi195=0 -tflag195=2 -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=Star trek Klingon Honor Guard -path196=D:\Games\Star trek Klingon Honor Guard\System\Khg.exe -module196=OGIDrv.dll -opengllib196= -ver196=10 -coord196=0 -flag196=0 -flagg196=537002497 -flagh196=16 -flagi196=0 -tflag196=386 -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=Star Wars Episode 1 Racer -path197=C:\Games\sw racer\SWEP1RCR.EXE -module197= -opengllib197= -ver197=0 -coord197=0 -flag197=142606368 -flagg197=0 -flagh197=0 -flagi197=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=Star Wars Jedi Knight Jedi Academy -path198=D:\Games\Star_Wars_Jedi_Knight_Jedi_Academy\GameData\jasp.exe -module198= -opengllib198= -ver198=0 -coord198=0 -flag198=2 -flagg198=196608 -flagh198=20 -flagi198=0 -tflag198=2 -initx198=0 -inity198=0 -minx198=0 -miny198=0 -maxx198=0 -maxy198=0 -posx198=50 -posy198=50 -sizx198=800 -sizy198=600 -maxfps198=0 -initts198=0 -title199=Star Wars: Jedi Knight -path199=C:\Games\Jedi Knight\Jedi Knight\JK.EXE -module199= -opengllib199= -ver199=0 -coord199=0 -flag199=8226 -flagg199=0 -flagh199=0 -flagi199=0 -tflag199=0 -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=Star Wars: the Gungan Frontier -path200=C:\Games\sw the gungan frontier\Gungan Frontier.exe -module200= -opengllib200= -ver200=1 -coord200=0 -flag200=402915362 -flagg200=512 -flagh200=0 -flagi200=0 -tflag200=0 -initx200=0 -inity200=0 -minx200=0 -miny200=0 -maxx200=0 -maxy200=0 -posx200=0 -posy200=0 -sizx200=800 -sizy200=600 -maxfps200=0 -initts200=0 -title201=Starcraft -path201=D:\Games\Starcraft\StarCraft.exe -module201= -opengllib201= -ver201=0 -coord201=1 -flag201=134234115 -flagg201=2179088 -flagh201=48 -flagi201=0 -tflag201=258 -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=Starship Troopers -path202=C:\Games\Starship Troopers - Terran Ascendancy\stta\StarshipTroopers.exe -module202= -opengllib202= -ver202=1 -coord202=0 -flag202=32 -flagg202=0 -flagh202=0 -flagi202=0 -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=Starshot Space Circus -path203=D:\SpaceCircus.exe -module203= -opengllib203= -ver203=0 -coord203=0 -flag203=66 -flagg203=0 -flagh203=0 -flagi203=0 -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=Stronghold Demo -path204=C:\Games\Firefly Studios' Stronghold - Demo\Stronghold Demo.exe -module204= -opengllib204= -ver204=0 -coord204=0 -flag204=98 -flagg204=0 -flagh204=0 -flagi204=0 -tflag204=0 -initx204=0 -inity204=0 -minx204=0 -miny204=0 -maxx204=0 -maxy204=0 -posx204=50 -posy204=50 -sizx204=800 -sizy204=600 -maxfps204=0 -initts204=0 -title205=Sub Culture -path205=C:\Games\Sub Culture\sc.exe -module205= -opengllib205= -ver205=0 -coord205=0 -flag205=66 -flagg205=256 -flagh205=0 -flagi205=0 -tflag205=10 -initx205=50 -inity205=50 -minx205=50 -miny205=50 -maxx205=800 -maxy205=600 -posx205=50 -posy205=50 -sizx205=800 -sizy205=600 -maxfps205=0 -initts205=0 -title206=Superbike 2001 -path206=C:\Games\Superbike 2001\Sbk2001.exe -module206= -opengllib206= -ver206=1 -coord206=0 -flag206=536887332 -flagg206=0 -flagh206=0 -flagi206=0 -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=Syberia 2 Demo -path207=C:\Games\Syberia 2 Demo\Syberia2Demo.exe -module207= -opengllib207= -ver207=8 -coord207=0 -flag207=536887332 -flagg207=0 -flagh207=0 -flagi207=0 -tflag207=0 -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=Syberia Demo -path208=C:\Games\SyberiaDemo\SyberiaDemo.exe -module208= -opengllib208= -ver208=1 -coord208=0 -flag208=536887332 -flagg208=0 -flagh208=0 -flagi208=0 -tflag208=0 -initx208=0 -inity208=0 -minx208=0 -miny208=0 -maxx208=0 -maxy208=0 -posx208=50 -posy208=50 -sizx208=800 -sizy208=600 -maxfps208=0 -initts208=0 -title209=System Shock 2 (BAD!!!) -path209=C:\Games\Sys Shock II\Shock2.exe -module209= -opengllib209= -ver209=1 -coord209=0 -flag209=0 -flagg209=64 -flagh209=0 -flagi209=0 -tflag209=0 -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=Take no Prisoners -path210=D:\Games\Take no Prisoners\TNP.EXE -module210= -opengllib210= -ver210=0 -coord210=0 -flag210=134217730 -flagg210=16777248 -flagh210=20 -flagi210=0 -tflag210=0 -initx210=0 -inity210=0 -minx210=0 -miny210=0 -maxx210=0 -maxy210=0 -posx210=50 -posy210=50 -sizx210=800 -sizy210=600 -maxfps210=0 -initts210=0 -title211=Test Drive 4 -path211=D:\Games\Test Drive 4\td4.EXE -module211= -opengllib211= -ver211=0 -coord211=0 -flag211=-2013265885 -flagg211=-2147418110 -flagh211=20 -flagi211=0 -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=-8 -title212=Test Drive 5 (D3D) -path212=D:\Games\Test Drive 5\TD5_D3D.exe -module212= -opengllib212= -ver212=0 -coord212=0 -flag212=671088640 -flagg212=0 -flagh212=20 -flagi212=0 -tflag212=258 -initx212=0 -inity212=0 -minx212=0 -miny212=0 -maxx212=0 -maxy212=0 -posx212=50 -posy212=50 -sizx212=800 -sizy212=600 -maxfps212=0 -initts212=0 -title213=The Nations Demo -path213=C:\Games\The Nations Demo\bin\Game.exe -module213= -opengllib213= -ver213=1 -coord213=0 -flag213=402661920 -flagg213=256 -flagh213=0 -flagi213=0 -tflag213=0 -initx213=0 -inity213=0 -minx213=0 -miny213=0 -maxx213=0 -maxy213=0 -posx213=50 -posy213=50 -sizx213=800 -sizy213=600 -maxfps213=0 -initts213=0 -title214=The Sims -path214=D:\Games\sims\Sims.exe -module214= -opengllib214= -ver214=0 -coord214=0 -flag214=134225952 -flagg214=65536 -flagh214=16 -flagi214=0 -tflag214=3 -initx214=0 -inity214=0 -minx214=0 -miny214=0 -maxx214=0 -maxy214=0 -posx214=50 -posy214=50 -sizx214=800 -sizy214=600 -maxfps214=0 -initts214=0 -title215=Thief the Dark Project (FRE) -path215=C:\Games\thief\game\thieffixed.exe -module215= -opengllib215= -ver215=1 -coord215=0 -flag215=16390 -flagg215=0 -flagh215=0 -flagi215=0 -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=TinTin: Prisoners of the Sun -path216=C:\Games\tintin\TINTINW.EXE -module216= -opengllib216= -ver216=0 -coord216=0 -flag216=34 -flagg216=0 -flagh216=0 -flagi216=0 -tflag216=2 -initx216=0 -inity216=0 -minx216=0 -miny216=0 -maxx216=0 -maxy216=0 -posx216=50 -posy216=50 -sizx216=800 -sizy216=600 -maxfps216=0 -initts216=0 -title217=Tintoy (BAD gfx) -path217=C:\Games\Tintoy\Tintoy.exe -module217= -opengllib217= -ver217=0 -coord217=0 -flag217=546 -flagg217=256 -flagh217=0 -flagi217=0 -tflag217=258 -initx217=0 -inity217=0 -minx217=0 -miny217=0 -maxx217=0 -maxy217=0 -posx217=50 -posy217=50 -sizx217=800 -sizy217=600 -maxfps217=0 -initts217=0 -title218=Tomb Raider - Anniversary -path218=C:\Games\Tomb Raider - Anniversary\tra.exe -module218= -opengllib218= -ver218=9 -coord218=0 -flag218=0 -flagg218=256 -flagh218=0 -flagi218=0 -tflag218=2 -initx218=0 -inity218=0 -minx218=0 -miny218=0 -maxx218=0 -maxy218=0 -posx218=50 -posy218=50 -sizx218=800 -sizy218=600 -maxfps218=0 -initts218=8 -title219=Tomb Raider 2 the Golden Mask -path219=D:\Games\TR2 Golden Mask\T2GOLD.EXE -module219= -opengllib219= -ver219=0 -coord219=0 -flag219=704643106 -flagg219=554713088 -flagh219=20 -flagi219=0 -tflag219=0 -initx219=0 -inity219=0 -minx219=0 -miny219=0 -maxx219=0 -maxy219=0 -posx219=50 -posy219=50 -sizx219=800 -sizy219=600 -maxfps219=0 -initts219=8 -title220=Tomb Raider 3 Demo -path220=C:\Games\Tomb Raider 3 - The Lost Artifact Demo\tr3gold.exe -module220= -opengllib220= -ver220=1 -coord220=0 -flag220=369098848 -flagg220=0 -flagh220=0 -flagi220=0 -tflag220=258 -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=Tomb Raider 4 Demo -path221=C:\Games\Tomb Raider 4 - The Last Revelation (Demo)\tomb4.patched.exe -module221= -opengllib221= -ver221=0 -coord221=0 -flag221=234881056 -flagg221=16 -flagh221=0 -flagi221=0 -tflag221=258 -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=Total Annihilation Kingdoms -path222=D:\Games\Total Annihilation Kingdoms\Kingdoms.exe -module222= -opengllib222= -ver222=0 -coord222=0 -flag222=134234146 -flagg222=1073741840 -flagh222=16 -flagi222=0 -tflag222=0 -initx222=0 -inity222=0 -minx222=0 -miny222=0 -maxx222=0 -maxy222=0 -posx222=50 -posy222=50 -sizx222=800 -sizy222=600 -maxfps222=0 -initts222=0 -title223=Total Soccer 2000 -path223=D:\Games\Total Soccer 2000\Total Soccer 2000\SOCCERdx.EXE -module223= -opengllib223= -ver223=1 -coord223=0 -flag223=167772226 -flagg223=1069056 -flagh223=20 -flagi223=0 -tflag223=0 -initx223=0 -inity223=0 -minx223=0 -miny223=0 -maxx223=0 -maxy223=0 -posx223=50 -posy223=50 -sizx223=800 -sizy223=600 -maxfps223=200 -initts223=0 -title224=Ultim@te Race Pro -path224=C:\Games\Ultim@te race pro\Ultim@te Race Pro.exe -module224= -opengllib224= -ver224=0 -coord224=0 -flag224=570425440 -flagg224=256 -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 -title225=Uprising - Join or Die -path225=D:\Games\Uprising\uprising.exe -module225= -opengllib225= -ver225=0 -coord225=0 -flag225=-2013265882 -flagg225=18 -flagh225=16 -flagi225=0 -tflag225=0 -initx225=0 -inity225=0 -minx225=0 -miny225=0 -maxx225=0 -maxy225=0 -posx225=50 -posy225=50 -sizx225=800 -sizy225=600 -maxfps225=0 -initts225=0 -title226=Urban Assault -path226=D:\Games\Urban Assault\UA.EXE -module226= -opengllib226= -ver226=0 -coord226=0 -flag226=671236130 -flagg226=256 -flagh226=16 -flagi226=0 -tflag226=258 -initx226=0 -inity226=0 -minx226=0 -miny226=0 -maxx226=0 -maxy226=0 -posx226=50 -posy226=50 -sizx226=800 -sizy226=600 -maxfps226=0 -initts226=0 -title227=Urban Assault CD -path227=D:\Games\Urban Assault CD\UA.EXE -module227= -opengllib227= -ver227=0 -coord227=0 -flag227=671236130 -flagg227=33024 -flagh227=0 -flagi227=0 -tflag227=258 -initx227=0 -inity227=0 -minx227=0 -miny227=0 -maxx227=0 -maxy227=0 -posx227=50 -posy227=50 -sizx227=800 -sizy227=600 -maxfps227=0 -initts227=0 -title228=wa[cracked].exe -path228=D:\Games\Worms 2 Armageddon\wa[cracked].exe -module228= -opengllib228= -ver228=0 -coord228=0 -flag228=134217730 -flagg228=171966464 -flagh228=16 -flagi228=0 -tflag228=0 -initx228=0 -inity228=0 -minx228=0 -miny228=0 -maxx228=0 -maxy228=0 -posx228=50 -posy228=50 -sizx228=800 -sizy228=600 -maxfps228=0 -initts228=0 -title229=Warcraft 2 Battlenet Edition -path229=D:\Games\Warcraft 2\Warcraft II BNE.exe -module229= -opengllib229= -ver229=0 -coord229=0 -flag229=268452003 -flagg229=16 -flagh229=16 -flagi229=0 -tflag229=258 -initx229=0 -inity229=0 -minx229=0 -miny229=0 -maxx229=0 -maxy229=0 -posx229=50 -posy229=50 -sizx229=800 -sizy229=600 -maxfps229=40 -initts229=0 -title230=Wargames (demo) -path230=D:\Games\Wargames\wargames.exe -module230= -opengllib230= -ver230=0 -coord230=0 -flag230=268435618 -flagg230=1207959552 -flagh230=20 -flagi230=0 -tflag230=3 -initx230=0 -inity230=0 -minx230=0 -miny230=0 -maxx230=0 -maxy230=0 -posx230=50 -posy230=50 -sizx230=800 -sizy230=600 -maxfps230=0 -initts230=0 -title231=Warhammer 40K Final Liberation -path231=D:\Games\Warhammer 40K Final Liberation\EPIC40K.EXE -module231= -opengllib231= -ver231=1 -coord231=0 -flag231=134479874 -flagg231=135266304 -flagh231=31 -flagi231=0 -tflag231=0 -initx231=0 -inity231=0 -minx231=0 -miny231=0 -maxx231=0 -maxy231=0 -posx231=50 -posy231=50 -sizx231=800 -sizy231=600 -maxfps231=0 -initts231=0 -title232=WarHammer Rites of War -path232=C:\Games\Rites of War\RoW.exe -module232= -opengllib232= -ver232=0 -coord232=0 -flag232=134217760 -flagg232=128 -flagh232=0 -flagi232=0 -tflag232=0 -initx232=0 -inity232=0 -minx232=0 -miny232=0 -maxx232=0 -maxy232=0 -posx232=50 -posy232=50 -sizx232=800 -sizy232=600 -maxfps232=0 -initts232=0 -title233=Warlords 3 -path233=D:\Games\WARLORDS3\Darklord.exe -module233= -opengllib233= -ver233=0 -coord233=0 -flag233=-2147483102 -flagg233=268435488 -flagh233=532 -flagi233=0 -tflag233=259 -initx233=0 -inity233=0 -minx233=0 -miny233=0 -maxx233=0 -maxy233=0 -posx233=50 -posy233=50 -sizx233=0 -sizy233=0 -maxfps233=0 -initts233=0 -title234=WarTorn -path234=C:\Games\WarTorn\W.exe -module234= -opengllib234= -ver234=0 -coord234=0 -flag234=32 -flagg234=0 -flagh234=0 -flagi234=0 -tflag234=0 -initx234=0 -inity234=0 -minx234=0 -miny234=0 -maxx234=0 -maxy234=0 -posx234=50 -posy234=50 -sizx234=800 -sizy234=600 -maxfps234=0 -initts234=0 -title235=WarWind -path235=C:\Games\WarWind\WW.EXE -module235= -opengllib235= -ver235=0 -coord235=0 -flag235=16418 -flagg235=81936 -flagh235=0 -flagi235=0 -tflag235=0 -initx235=0 -inity235=0 -minx235=0 -miny235=0 -maxx235=0 -maxy235=0 -posx235=50 -posy235=50 -sizx235=800 -sizy235=600 -maxfps235=0 -initts235=0 -title236=Worms Armageddon Demo (BAD!!!) -path236=C:\Games\Worms Armageddon Demo\WaDemo.exe -module236= -opengllib236= -ver236=1 -coord236=0 -flag236=939524099 -flagg236=8 -flagh236=0 -flagi236=0 -tflag236=2 -initx236=0 -inity236=0 -minx236=0 -miny236=0 -maxx236=0 -maxy236=0 -posx236=0 -posy236=0 -sizx236=0 -sizy236=0 -maxfps236=0 -initts236=0 -title237=Worms World Party -path237=D:\Games\Worms World Party\wwp.exe -module237= -opengllib237= -ver237=1 -coord237=0 -flag237=8388610 -flagg237=0 -flagh237=0 -flagi237=0 -tflag237=0 -initx237=0 -inity237=0 -minx237=0 -miny237=0 -maxx237=0 -maxy237=0 -posx237=50 -posy237=50 -sizx237=800 -sizy237=600 -maxfps237=0 -initts237=0 -title238=Worms World Party Demo (BAD) -path238=C:\Games\WWP Demo\wwp.exe -module238=MFC42.DLL ltkrn10N.dll -opengllib238= -ver238=1 -coord238=0 -flag238=406847491 -flagg238=8 -flagh238=0 -flagi238=0 -tflag238=2 -initx238=0 -inity238=0 -minx238=0 -miny238=0 -maxx238=0 -maxy238=0 -posx238=0 -posy238=0 -sizx238=0 -sizy238=0 -maxfps238=0 -initts238=0 -title239=X-Com Enforcer -path239=C:\Games\X-Com Enforcer\System\xcom.exe -module239= -opengllib239= -ver239=1 -coord239=0 -flag239=32 -flagg239=0 -flagh239=0 -flagi239=0 -tflag239=0 -initx239=0 -inity239=0 -minx239=0 -miny239=0 -maxx239=0 -maxy239=0 -posx239=0 -posy239=0 -sizx239=800 -sizy239=600 -maxfps239=0 -initts239=0 -title240=X-Com Interceptor -path240=C:\Games\X-Com_Interceptor\X-COM Interceptor\Interceptor.exe -module240= -opengllib240= -ver240=0 -coord240=0 -flag240=16418 -flagg240=0 -flagh240=0 -flagi240=0 -tflag240=0 -initx240=0 -inity240=0 -minx240=0 -miny240=0 -maxx240=0 -maxy240=0 -posx240=50 -posy240=50 -sizx240=800 -sizy240=600 -maxfps240=0 -initts240=0 -title241=Z Steel Soldiers -path241=C:\Games\ZSteelSoldiers\Bin\z2.exe -module241= -opengllib241= -ver241=8 -coord241=0 -flag241=805462020 -flagg241=0 -flagh241=0 -flagi241=0 -tflag241=0 -initx241=0 -inity241=0 -minx241=0 -miny241=0 -maxx241=0 -maxy241=0 -posx241=50 -posy241=50 -sizx241=800 -sizy241=600 -maxfps241=0 -initts241=0 -title242=Zax Alien Hunter -path242=C:\Games\ZaxDemo\Zax.exe -module242= -opengllib242= -ver242=0 -coord242=0 -flag242=-1476386784 -flagg242=0 -flagh242=0 -flagi242=0 -tflag242=0 -initx242=0 -inity242=0 -minx242=0 -miny242=0 -maxx242=0 -maxy242=0 -posx242=50 -posy242=50 -sizx242=800 -sizy242=600 -maxfps242=0 -initts242=0 -title243=Zero Critical (BAD) -path243=C:\Games\zero_critical_-_satin_rift\ZEROCR.EXE -module243= -opengllib243= -ver243=0 -coord243=0 -flag243=679477858 -flagg243=8 -flagh243=0 -flagi243=0 -tflag243=0 -initx243=0 -inity243=0 -minx243=0 -miny243=0 -maxx243=0 -maxy243=0 -posx243=0 -posy243=0 -sizx243=800 -sizy243=600 -maxfps243=0 -initts243=0 -title244=Zero Population Count -path244=C:\Games\ZPC\ZPC.EXE -module244= -opengllib244= -ver244=0 -coord244=0 -flag244=1073741859 -flagg244=0 -flagh244=0 -flagi244=0 -tflag244=0 -initx244=0 -inity244=0 -minx244=0 -miny244=0 -maxx244=0 -maxy244=0 -posx244=0 -posy244=0 -sizx244=800 -sizy244=600 -maxfps244=0 -initts244=0 -title245=Zero Zone -path245=D:\ZZone\ZeroZone.exe -module245= -opengllib245= -ver245=0 -coord245=0 -flag245=34 -flagg245=0 -flagh245=0 -flagi245=0 -tflag245=0 -initx245=0 -inity245=0 -minx245=0 -miny245=0 -maxx245=0 -maxy245=0 -posx245=50 -posy245=50 -sizx245=800 -sizy245=600 -maxfps245=0 -initts245=0 -title246=Zeus Poseidon -path246=C:\Games\Zeus-Poseidon\Zeus.exe -module246= -opengllib246= -ver246=0 -coord246=0 -flag246=34 -flagg246=0 -flagh246=0 -flagi246=0 -tflag246=0 -initx246=0 -inity246=0 -minx246=0 -miny246=0 -maxx246=0 -maxy246=0 -posx246=50 -posy246=50 -sizx246=800 -sizy246=600 -maxfps246=0 -initts246=0 -title247=Zoo Tycoon -path247=C:\Games\Zoo Tycoon\zoo.exe -module247= -opengllib247= -ver247=0 -coord247=0 -flag247=-2013265886 -flagg247=0 -flagh247=0 -flagi247=0 -tflag247=0 -initx247=0 -inity247=0 -minx247=0 -miny247=0 -maxx247=0 -maxy247=0 -posx247=50 -posy247=50 -sizx247=800 -sizy247=600 -maxfps247=0 -initts247=0 -title248=Mortal Kombat 4 -path248=D:\Games\mk4\Mortal Kombat 4.exe -module248= -opengllib248= -ver248=0 -coord248=0 -flag248=536879107 -flagg248=135266308 -flagh248=276 -flagi248=0 -tflag248=3 -initx248=0 -inity248=0 -minx248=0 -miny248=0 -maxx248=0 -maxy248=0 -posx248=50 -posy248=50 -sizx248=800 -sizy248=600 -maxfps248=0 -initts248=0 -title249=Railroad Tycoon II -path249=D:\Games\Railroad.Tycoon.II\RT2.EXE -module249= -opengllib249= -ver249=0 -coord249=0 -flag249=2080 -flagg249=143654912 -flagh249=16 -flagi249=0 -tflag249=0 -initx249=0 -inity249=0 -minx249=0 -miny249=0 -maxx249=0 -maxy249=0 -posx249=50 -posy249=50 -sizx249=800 -sizy249=600 -maxfps249=0 -initts249=0 -title250=Space Hack -path250=D:\Games\Space Hack\main.exe -module250= -opengllib250= -ver250=0 -coord250=0 -flag250=134234144 -flagg250=134217728 -flagh250=20 -flagi250=0 -tflag250=3 -initx250=0 -inity250=0 -minx250=0 -miny250=0 -maxx250=0 -maxy250=0 -posx250=50 -posy250=50 -sizx250=800 -sizy250=600 -maxfps250=0 -initts250=0 -title251=Abomination - The Nemesis Project Demo -path251=D:\Games\Abomination - The Nemesis Project Demo\Abomb.exe -module251= -opengllib251= -ver251=0 -coord251=0 -flag251=134217826 -flagg251=134217728 -flagh251=20 -flagi251=0 -tflag251=64 -initx251=0 -inity251=0 -minx251=0 -miny251=0 -maxx251=0 -maxy251=0 -posx251=50 -posy251=50 -sizx251=800 -sizy251=600 -maxfps251=0 -initts251=0 -title252=Alien Nations DEMO -path252=D:\Games\Amazon & Aliens DEMO\Bin\AA.exe -module252= -opengllib252= -ver252=0 -coord252=0 -flag252=1207959654 -flagg252=135266306 -flagh252=20 -flagi252=0 -tflag252=259 -initx252=0 -inity252=0 -minx252=0 -miny252=0 -maxx252=0 -maxy252=0 -posx252=50 -posy252=50 -sizx252=800 -sizy252=600 -maxfps252=0 -initts252=0 -title253=Duckman -path253=D:\Games\duckman\DUCKMAN.EXE -module253= -opengllib253= -ver253=0 -coord253=0 -flag253=402653186 -flagg253=201326592 -flagh253=20 -flagi253=0 -tflag253=259 -initx253=0 -inity253=0 -minx253=0 -miny253=0 -maxx253=0 -maxy253=0 -posx253=50 -posy253=50 -sizx253=800 -sizy253=600 -maxfps253=0 -initts253=0 -[window] -posx=928 -posy=224 -sizx=320 -sizy=455 diff --git a/build/dxwnd.2.ini b/build/dxwnd.2.ini deleted file mode 100644 index 2ff451e..0000000 --- a/build/dxwnd.2.ini +++ /dev/null @@ -1,1133 +0,0 @@ -[target] -title0=101 Airborne Invasion -path0=D:\Games\101air\101.exe -module0= -opengllib0= -ver0=0 -coord0=0 -flag0=134217762 -flagg0=134217728 -flagh0=20 -flagi0=0 -tflag0=64 -initx0=0 -inity0=0 -minx0=0 -miny0=0 -maxx0=0 -maxy0=0 -posx0=50 -posy0=50 -sizx0=800 -sizy0=600 -maxfps0=0 -initts0=0 -title1=688I Hunter Killer -path1=D:\Games\688\688I_HK.EXE -module1= -opengllib1= -ver1=0 -coord1=0 -flag1=-937950686 -flagg1=134217728 -flagh1=32788 -flagi1=0 -tflag1=3 -initx1=0 -inity1=0 -minx1=0 -miny1=0 -maxx1=0 -maxy1=0 -posx1=50 -posy1=50 -sizx1=1200 -sizy1=900 -maxfps1=0 -initts1=0 -title2=Abomination the Nemesis Project -path2=D:\Games\Abomination\Abomb.exe -module2= -opengllib2= -ver2=0 -coord2=0 -flag2=134217762 -flagg2=134217728 -flagh2=20 -flagi2=0 -tflag2=67 -initx2=0 -inity2=0 -minx2=0 -miny2=0 -maxx2=0 -maxy2=0 -posx2=50 -posy2=50 -sizx2=800 -sizy2=600 -maxfps2=0 -initts2=0 -title3=Balls of Steel -path3=D:\Games\Balls of Steel\bos.exe -module3=duke.ddp mutation.ddp -opengllib3= -ver3=0 -coord3=0 -flag3=167772192 -flagg3=202375169 -flagh3=20 -flagi3=0 -tflag3=263 -initx3=0 -inity3=0 -minx3=0 -miny3=0 -maxx3=0 -maxy3=0 -posx3=50 -posy3=50 -sizx3=800 -sizy3=600 -maxfps3=0 -initts3=0 -title4=Barrage -path4=D:\Games\Barrage\SRC\BARRAGE.EXE -module4= -opengllib4= -ver4=0 -coord4=0 -flag4=142606368 -flagg4=134217728 -flagh4=8212 -flagi4=0 -tflag4=7 -initx4=0 -inity4=0 -minx4=0 -miny4=0 -maxx4=0 -maxy4=0 -posx4=50 -posy4=50 -sizx4=800 -sizy4=600 -maxfps4=0 -initts4=0 -title5=Carnivores -path5=D:\Games\Carnivores\HUNTSOFT.EXE -module5= -opengllib5= -ver5=0 -coord5=0 -flag5=671088674 -flagg5=135266304 -flagh5=20 -flagi5=0 -tflag5=64 -initx5=0 -inity5=0 -minx5=0 -miny5=0 -maxx5=0 -maxy5=0 -posx5=50 -posy5=50 -sizx5=800 -sizy5=600 -maxfps5=0 -initts5=0 -title6=Crazy Frog Racer -path6=D:\Games\CrazyFrog\CRAZY.EXE -module6= -opengllib6= -ver6=8 -coord6=0 -flag6=134217762 -flagg6=134217729 -flagh6=20 -flagi6=0 -tflag6=64 -initx6=0 -inity6=0 -minx6=0 -miny6=0 -maxx6=0 -maxy6=0 -posx6=50 -posy6=50 -sizx6=800 -sizy6=600 -maxfps6=0 -initts6=0 -title7=Crazy Taxy -path7=D:\Games\Crazy_Taxi\Crazy Taxi PC Version\crazy_taxi_pc.exe -module7= -opengllib7= -ver7=0 -coord7=0 -flag7=671219744 -flagg7=134217728 -flagh7=20 -flagi7=0 -tflag7=66 -initx7=0 -inity7=0 -minx7=0 -miny7=0 -maxx7=0 -maxy7=0 -posx7=50 -posy7=50 -sizx7=800 -sizy7=600 -maxfps7=0 -initts7=0 -title8=Dark Angael -path8=D:\Games\Dark Angael\GAME.EXE -module8= -opengllib8= -ver8=0 -coord8=0 -flag8=134217762 -flagg8=134217728 -flagh8=20 -flagi8=0 -tflag8=0 -initx8=0 -inity8=0 -minx8=0 -miny8=0 -maxx8=0 -maxy8=0 -posx8=50 -posy8=50 -sizx8=800 -sizy8=600 -maxfps8=0 -initts8=0 -title9=Dark Colony -path9=D:\Games\Dark Colony\DCOLONY\DC.EXE -module9= -opengllib9= -ver9=0 -coord9=0 -flag9=134217762 -flagg9=134217728 -flagh9=20 -flagi9=0 -tflag9=0 -initx9=0 -inity9=0 -minx9=0 -miny9=0 -maxx9=0 -maxy9=0 -posx9=50 -posy9=50 -sizx9=800 -sizy9=600 -maxfps9=0 -initts9=0 -title10=Dark Judgement -path10=D:\Games\Dark Judgement\Dark Judgement.EXE -module10= -opengllib10= -ver10=0 -coord10=0 -flag10=134217826 -flagg10=134217728 -flagh10=20 -flagi10=0 -tflag10=3 -initx10=0 -inity10=0 -minx10=0 -miny10=0 -maxx10=0 -maxy10=0 -posx10=50 -posy10=50 -sizx10=800 -sizy10=600 -maxfps10=0 -initts10=0 -title11=Dark Vengeance -path11=D:\Games\dark_vengeance\dv.exe -module11= -opengllib11= -ver11=0 -coord11=0 -flag11=142606386 -flagg11=134217728 -flagh11=8212 -flagi11=0 -tflag11=3 -initx11=0 -inity11=0 -minx11=0 -miny11=0 -maxx11=800 -maxy11=600 -posx11=50 -posy11=50 -sizx11=800 -sizy11=600 -maxfps11=0 -initts11=0 -title12=Descent 3 -path12=D:\Games\Descent_3\Descent 3.exe -module12= -opengllib12= -ver12=0 -coord12=0 -flag12=134217760 -flagg12=134348801 -flagh12=4 -flagi12=0 -tflag12=0 -initx12=0 -inity12=0 -minx12=0 -miny12=0 -maxx12=0 -maxy12=0 -posx12=50 -posy12=50 -sizx12=800 -sizy12=600 -maxfps12=0 -initts12=0 -title13=Descent 3 main -path13=D:\Games\Descent_3\main.exe -module13= -opengllib13= -ver13=0 -coord13=0 -flag13=771891234 -flagg13=201457664 -flagh13=8212 -flagi13=0 -tflag13=3 -initx13=0 -inity13=0 -minx13=0 -miny13=0 -maxx13=0 -maxy13=0 -posx13=50 -posy13=50 -sizx13=800 -sizy13=600 -maxfps13=0 -initts13=0 -title14=Duckman -path14=D:\Games\duckman\DUCKMAN.EXE -module14= -opengllib14= -ver14=0 -coord14=0 -flag14=402653218 -flagg14=134217728 -flagh14=1044 -flagi14=0 -tflag14=259 -initx14=0 -inity14=0 -minx14=0 -miny14=0 -maxx14=0 -maxy14=0 -posx14=50 -posy14=50 -sizx14=800 -sizy14=600 -maxfps14=0 -initts14=0 -title15=Dweep -path15=D:\Games\dweep\Dweep.exe -module15= -opengllib15= -ver15=0 -coord15=0 -flag15=134234146 -flagg15=134283264 -flagh15=20 -flagi15=0 -tflag15=0 -initx15=0 -inity15=0 -minx15=0 -miny15=0 -maxx15=0 -maxy15=0 -posx15=50 -posy15=50 -sizx15=800 -sizy15=600 -maxfps15=0 -initts15=2 -title16=Eliminator -path16=D:\Games\eliminat\Eliminator.exe -module16= -opengllib16= -ver16=0 -coord16=0 -flag16=134217760 -flagg16=134217728 -flagh16=1044 -flagi16=0 -tflag16=3 -initx16=0 -inity16=0 -minx16=0 -miny16=0 -maxx16=0 -maxy16=0 -posx16=800 -posy16=600 -sizx16=400 -sizy16=300 -maxfps16=0 -initts16=0 -title17=EMPIRES.EXE -path17=D:\Games\Age of Empires\EMPIRES.EXE -module17= -opengllib17= -ver17=0 -coord17=0 -flag17=134217762 -flagg17=134217728 -flagh17=20 -flagi17=0 -tflag17=64 -initx17=0 -inity17=0 -minx17=0 -miny17=0 -maxx17=0 -maxy17=0 -posx17=50 -posy17=50 -sizx17=800 -sizy17=600 -maxfps17=0 -initts17=0 -title18=EPIC40K.EXE -path18=D:\Games\war_hammer_final_liberation\EPIC40K.EXE -module18= -opengllib18= -ver18=0 -coord18=0 -flag18=134217762 -flagg18=135266304 -flagh18=20 -flagi18=0 -tflag18=3 -initx18=0 -inity18=0 -minx18=0 -miny18=0 -maxx18=0 -maxy18=0 -posx18=50 -posy18=50 -sizx18=800 -sizy18=600 -maxfps18=0 -initts18=0 -title19=Fable - The Lost Chapters -path19=D:\Games\Fable - The Lost Chapters\Fable.exe -module19= -opengllib19= -ver19=9 -coord19=1 -flag19=134217760 -flagg19=201457672 -flagh19=20 -flagi19=0 -tflag19=258 -initx19=0 -inity19=0 -minx19=0 -miny19=0 -maxx19=0 -maxy19=0 -posx19=50 -posy19=50 -sizx19=800 -sizy19=600 -maxfps19=0 -initts19=0 -title20=Fighting Forces -path20=D:\Games\Fighting Forces\FFORCE.EXE -module20= -opengllib20= -ver20=0 -coord20=0 -flag20=134217760 -flagg20=671088640 -flagh20=3092 -flagi20=0 -tflag20=514 -initx20=0 -inity20=0 -minx20=0 -miny20=0 -maxx20=0 -maxy20=0 -posx20=50 -posy20=50 -sizx20=800 -sizy20=600 -maxfps20=0 -initts20=0 -title21=Final Fighter -path21=D:\Games\Final Fighter\FinalFighter.exe -module21= -opengllib21= -ver21=0 -coord21=0 -flag21=939524128 -flagg21=135266305 -flagh21=4 -flagi21=0 -tflag21=512 -initx21=0 -inity21=0 -minx21=0 -miny21=0 -maxx21=0 -maxy21=0 -posx21=50 -posy21=50 -sizx21=800 -sizy21=600 -maxfps21=0 -initts21=0 -title22=Final Odyssey -path22=D:\Games\Final odyssey\FinalOdy.exe -module22= -opengllib22= -ver22=0 -coord22=0 -flag22=134217760 -flagg22=134217728 -flagh22=4 -flagi22=0 -tflag22=64 -initx22=0 -inity22=0 -minx22=0 -miny22=0 -maxx22=0 -maxy22=0 -posx22=50 -posy22=50 -sizx22=800 -sizy22=600 -maxfps22=0 -initts22=0 -title23=Gangsters 2 -path23=D:\Games\Gangsters 2\Gangsters2.exe -module23= -opengllib23= -ver23=0 -coord23=0 -flag23=134217762 -flagg23=134217728 -flagh23=20 -flagi23=0 -tflag23=2 -initx23=0 -inity23=0 -minx23=0 -miny23=0 -maxx23=0 -maxy23=0 -posx23=50 -posy23=50 -sizx23=800 -sizy23=600 -maxfps23=0 -initts23=0 -title24=Gex -path24=D:\Games\gex\GEX.EXE -module24= -opengllib24= -ver24=0 -coord24=0 -flag24=134217761 -flagg24=134217728 -flagh24=20 -flagi24=0 -tflag24=66 -initx24=0 -inity24=0 -minx24=0 -miny24=0 -maxx24=0 -maxy24=0 -posx24=50 -posy24=50 -sizx24=800 -sizy24=600 -maxfps24=0 -initts24=0 -title25=Hard Truck - Road to Victory -path25=C:\Hard Truck\HTruck.exe -module25= -opengllib25= -ver25=0 -coord25=0 -flag25=134217760 -flagg25=134217728 -flagh25=2068 -flagi25=0 -tflag25=0 -initx25=0 -inity25=0 -minx25=0 -miny25=0 -maxx25=0 -maxy25=0 -posx25=50 -posy25=50 -sizx25=800 -sizy25=600 -maxfps25=0 -initts25=0 -title26=Hellcopter -path26=D:\Games\Hellcopter\HCopter.exe -module26= -opengllib26= -ver26=0 -coord26=0 -flag26=134217760 -flagg26=134217728 -flagh26=1044 -flagi26=0 -tflag26=512 -initx26=0 -inity26=0 -minx26=0 -miny26=0 -maxx26=0 -maxy26=0 -posx26=50 -posy26=50 -sizx26=800 -sizy26=600 -maxfps26=0 -initts26=0 -title27=Heroes of Might & Magic 2 Gold -path27=D:\Games\heroes2gold\HEROES2W.EXE -module27= -opengllib27= -ver27=0 -coord27=0 -flag27=134217730 -flagg27=143654912 -flagh27=20 -flagi27=0 -tflag27=770 -initx27=0 -inity27=0 -minx27=0 -miny27=0 -maxx27=0 -maxy27=0 -posx27=50 -posy27=50 -sizx27=800 -sizy27=600 -maxfps27=0 -initts27=0 -title28=Hooligans Storm over Europe -path28=D:\Games\Hooligans\Hooligans.exe -module28= -opengllib28= -ver28=0 -coord28=0 -flag28=134742048 -flagg28=202375168 -flagh28=20 -flagi28=0 -tflag28=259 -initx28=0 -inity28=0 -minx28=0 -miny28=0 -maxx28=0 -maxy28=0 -posx28=50 -posy28=50 -sizx28=800 -sizy28=600 -maxfps28=0 -initts28=0 -title29=Imperialism -path29=D:\Games\Imperialism\Imperialism.exe -module29= -opengllib29= -ver29=0 -coord29=0 -flag29=679485474 -flagg29=134217728 -flagh29=32788 -flagi29=0 -tflag29=3 -initx29=0 -inity29=0 -minx29=0 -miny29=0 -maxx29=0 -maxy29=0 -posx29=50 -posy29=50 -sizx29=1200 -sizy29=900 -maxfps29=0 -initts29=0 -title30=Mechwarrior 3 -path30=D:\Games\Mechwarrior 3 (full)\Mech3.exe -module30= -opengllib30= -ver30=0 -coord30=0 -flag30=671096866 -flagg30=134217728 -flagh30=20 -flagi30=0 -tflag30=0 -initx30=0 -inity30=0 -minx30=0 -miny30=0 -maxx30=0 -maxy30=0 -posx30=50 -posy30=50 -sizx30=800 -sizy30=600 -maxfps30=0 -initts30=0 -title31=Raiden II -path31=D:\Games\raiden2\RAIDENII.EXE -module31= -opengllib31= -ver31=0 -coord31=1 -flag31=134217762 -flagg31=134217728 -flagh31=20 -flagi31=0 -tflag31=0 -initx31=0 -inity31=0 -minx31=0 -miny31=0 -maxx31=0 -maxy31=0 -posx31=50 -posy31=50 -sizx31=800 -sizy31=600 -maxfps31=0 -initts31=0 -title32=Rapanui -path32=D:\Games\Rapanui\Rapanui.exe -module32= -opengllib32= -ver32=0 -coord32=0 -flag32=134217762 -flagg32=134217728 -flagh32=20 -flagi32=0 -tflag32=0 -initx32=0 -inity32=0 -minx32=0 -miny32=0 -maxx32=0 -maxy32=0 -posx32=50 -posy32=50 -sizx32=800 -sizy32=600 -maxfps32=0 -initts32=0 -title33=Silent Hunter II (shell) -path33=D:\Games\Silent Hunter II\Shell\Shell.exe -module33= -opengllib33= -ver33=0 -coord33=0 -flag33=402653221 -flagg33=135266304 -flagh33=20 -flagi33=0 -tflag33=3 -initx33=0 -inity33=0 -minx33=0 -miny33=0 -maxx33=800 -maxy33=600 -posx33=50 -posy33=50 -sizx33=800 -sizy33=600 -maxfps33=0 -initts33=0 -title34=Silent Hunter II (sim) -path34=D:\Games\Silent Hunter II\Sim\Sim.exe -module34= -opengllib34= -ver34=0 -coord34=0 -flag34=134217780 -flagg34=134217728 -flagh34=20 -flagi34=0 -tflag34=0 -initx34=400 -inity34=300 -minx34=0 -miny34=0 -maxx34=800 -maxy34=600 -posx34=50 -posy34=50 -sizx34=800 -sizy34=600 -maxfps34=0 -initts34=0 -title35=The Sims -path35=D:\Games\sims\Sims.exe -module35= -opengllib35= -ver35=0 -coord35=0 -flag35=679616546 -flagg35=134217728 -flagh35=84 -flagi35=0 -tflag35=67 -initx35=0 -inity35=0 -minx35=0 -miny35=0 -maxx35=0 -maxy35=0 -posx35=50 -posy35=50 -sizx35=800 -sizy35=600 -maxfps35=0 -initts35=0 -title36=Tomb Raider - The Last Revelation -path36=D:\Games\Tomb Raider - The Last Revelation\tomb4.exe -module36= -opengllib36= -ver36=0 -coord36=0 -flag36=134217826 -flagg36=134217728 -flagh36=20 -flagi36=0 -tflag36=3 -initx36=0 -inity36=0 -minx36=0 -miny36=0 -maxx36=0 -maxy36=0 -posx36=50 -posy36=50 -sizx36=800 -sizy36=600 -maxfps36=0 -initts36=0 -title37=TOMB2.EXE -path37=D:\Games\Tomb Raider 2\TOMB2.EXE -module37= -opengllib37= -ver37=0 -coord37=0 -flag37=134217760 -flagg37=201326592 -flagh37=2068 -flagi37=0 -tflag37=0 -initx37=0 -inity37=0 -minx37=0 -miny37=0 -maxx37=0 -maxy37=0 -posx37=50 -posy37=50 -sizx37=800 -sizy37=600 -maxfps37=0 -initts37=0 -title38=wa.exe -path38=D:\Games\worms_arma\Worms_2_Armageddon\wa.exe -module38= -opengllib38= -ver38=0 -coord38=0 -flag38=713031712 -flagg38=142606336 -flagh38=20 -flagi38=0 -tflag38=3 -initx38=0 -inity38=0 -minx38=0 -miny38=0 -maxx38=0 -maxy38=0 -posx38=50 -posy38=50 -sizx38=800 -sizy38=600 -maxfps38=0 -initts38=0 -title39=Western Front -path39=D:\Games\Western Front\wf.exe -module39= -opengllib39= -ver39=0 -coord39=0 -flag39=679477282 -flagg39=135266304 -flagh39=16404 -flagi39=0 -tflag39=0 -initx39=0 -inity39=0 -minx39=0 -miny39=0 -maxx39=0 -maxy39=0 -posx39=50 -posy39=50 -sizx39=800 -sizy39=600 -maxfps39=0 -initts39=0 -title40=G-Nome -path40=D:\Games\G-Nome\G-NOME.EXE -module40= -opengllib40= -ver40=0 -coord40=0 -flag40=-1433399262 -flagg40=201326592 -flagh40=33300 -flagi40=0 -tflag40=3 -initx40=0 -inity40=0 -minx40=0 -miny40=0 -maxx40=0 -maxy40=0 -posx40=250 -posy40=250 -sizx40=800 -sizy40=600 -maxfps40=0 -initts40=0 -title41=GeneRally -path41=D:\Games\generally105\GeneRally.exe -module41= -opengllib41= -ver41=7 -coord41=0 -flag41=134234146 -flagg41=135266305 -flagh41=20 -flagi41=0 -tflag41=0 -initx41=0 -inity41=0 -minx41=0 -miny41=0 -maxx41=0 -maxy41=0 -posx41=50 -posy41=50 -sizx41=800 -sizy41=600 -maxfps41=0 -initts41=0 -title42=Warlords 3 -path42=D:\Games\Warlords3\Darklord.exe -module42= -opengllib42= -ver42=0 -coord42=0 -flag42=-2013249502 -flagg42=135266304 -flagh42=20 -flagi42=0 -tflag42=0 -initx42=0 -inity42=0 -minx42=0 -miny42=0 -maxx42=0 -maxy42=0 -posx42=50 -posy42=50 -sizx42=800 -sizy42=600 -maxfps42=0 -initts42=0 -title43=Tachyon The Fringe -path43=D:\Games\TachyonTheFringe\space.exe -module43= -opengllib43= -ver43=0 -coord43=0 -flag43=151011364 -flagg43=134217728 -flagh43=20 -flagi43=0 -tflag43=3 -initx43=0 -inity43=0 -minx43=0 -miny43=0 -maxx43=0 -maxy43=0 -posx43=50 -posy43=50 -sizx43=800 -sizy43=600 -maxfps43=0 -initts43=0 -title44=Tanktics -path44=D:\Games\Tanktics\tanktics.exe -module44= -opengllib44= -ver44=0 -coord44=1 -flag44=671088674 -flagg44=134217728 -flagh44=20 -flagi44=0 -tflag44=259 -initx44=0 -inity44=0 -minx44=0 -miny44=0 -maxx44=0 -maxy44=0 -posx44=50 -posy44=50 -sizx44=800 -sizy44=600 -maxfps44=0 -initts44=0 -title45=Nightmare Ned -path45=D:\Games\Ned\NITENED.EXE -module45= -opengllib45= -ver45=0 -coord45=0 -flag45=134217762 -flagg45=134217728 -flagh45=20 -flagi45=0 -tflag45=3 -initx45=0 -inity45=0 -minx45=0 -miny45=0 -maxx45=0 -maxy45=0 -posx45=50 -posy45=50 -sizx45=800 -sizy45=600 -maxfps45=0 -initts45=0 -title46=Imperialism II -path46=D:\Games\imperialism_2\imperialism II.exe -module46= -opengllib46= -ver46=0 -coord46=0 -flag46=142614562 -flagg46=470810688 -flagh46=20 -flagi46=0 -tflag46=67 -initx46=0 -inity46=0 -minx46=0 -miny46=0 -maxx46=0 -maxy46=0 -posx46=50 -posy46=50 -sizx46=800 -sizy46=600 -maxfps46=0 -initts46=0 -title47=age3.exe -path47=D:\Games\Age of Empires III\age3.exe -module47= -opengllib47= -ver47=0 -coord47=0 -flag47=-394125278 -flagg47=134217728 -flagh47=20 -flagi47=0 -tflag47=64 -initx47=0 -inity47=0 -minx47=0 -miny47=0 -maxx47=0 -maxy47=0 -posx47=50 -posy47=50 -sizx47=800 -sizy47=600 -maxfps47=0 -initts47=0 -title48=road.exe -path48=D:\Games\Vangers\road.exe -module48= -opengllib48= -ver48=1 -coord48=0 -flag48=134217762 -flagg48=134217728 -flagh48=20 -flagi48=0 -tflag48=323 -initx48=0 -inity48=0 -minx48=0 -miny48=0 -maxx48=0 -maxy48=0 -posx48=50 -posy48=50 -sizx48=800 -sizy48=600 -maxfps48=0 -initts48=0 -[window] -posx=1435 -posy=210 -sizx=320 -sizy=420 diff --git a/build/dxwnd.3.ini b/build/dxwnd.3.ini deleted file mode 100644 index 00c9d6c..0000000 --- a/build/dxwnd.3.ini +++ /dev/null @@ -1,167 +0,0 @@ -[window] -posx=1452 -posy=365 -sizx=320 -sizy=514 -[target] -title0=Rayman 2 Demo -path0=D:\Games\Rayman2Demo\Rayman2Demo.exe -module0= -opengllib0= -ver0=1 -coord0=0 -flag0=402653217 -flagg0=1210056704 -flagh0=2097172 -flagi0=0 -tflag0=64 -initx0=0 -inity0=0 -minx0=0 -miny0=0 -maxx0=0 -maxy0=0 -posx0=50 -posy0=50 -sizx0=800 -sizy0=600 -maxfps0=0 -initts0=0 -title1=Mirror's Edge -path1=D:\Games\Mirror's Edge\Binaries\MirrorsEdge.exe -module1= -opengllib1= -ver1=0 -coord1=0 -flag1=-2013265882 -flagg1=1207959552 -flagh1=2097172 -flagi1=0 -tflag1=5 -initx1=0 -inity1=0 -minx1=0 -miny1=0 -maxx1=0 -maxy1=0 -posx1=50 -posy1=50 -sizx1=800 -sizy1=600 -maxfps1=0 -initts1=6 -title2=LastHalfWin.exe -path2=D:\Games\Last Half Of Darkness\LastHalfWin.exe -module2= -opengllib2= -ver2=1 -coord2=0 -flag2=134217760 -flagg2=1207959552 -flagh2=4 -flagi2=0 -tflag2=512 -initx2=0 -inity2=0 -minx2=0 -miny2=0 -maxx2=0 -maxy2=0 -posx2=50 -posy2=50 -sizx2=800 -sizy2=600 -maxfps2=0 -initts2=0 -title3=DOOM95.EXE -path3=D:\Games\Doom95i\DOOM95.EXE -module3= -opengllib3= -ver3=0 -coord3=0 -flag3=134217762 -flagg3=1207959552 -flagh3=20 -flagi3=0 -tflag3=512 -initx3=0 -inity3=0 -minx3=0 -miny3=0 -maxx3=0 -maxy3=0 -posx3=50 -posy3=50 -sizx3=800 -sizy3=600 -maxfps3=0 -initts3=0 -title4=CNC3.exe -path4=D:\Games\Command & Conquer 3\CNC3.exe -module4= -opengllib4= -ver4=9 -coord4=0 -flag4=134217762 -flagg4=1207959552 -flagh4=20 -flagi4=0 -tflag4=512 -initx4=0 -inity4=0 -minx4=0 -miny4=0 -maxx4=0 -maxy4=0 -posx4=50 -posy4=50 -sizx4=800 -sizy4=600 -maxfps4=0 -initts4=0 -title5=Div.exe -path5=D:\Games\Beyond Divinity\Div.exe -module5= -opengllib5= -ver5=0 -coord5=0 -flag5=134217762 -flagg5=1207959552 -flagh5=20 -flagi5=0 -tflag5=512 -initx5=0 -inity5=0 -minx5=0 -miny5=0 -maxx5=0 -maxy5=0 -posx5=50 -posy5=50 -sizx5=800 -sizy5=600 -maxfps5=0 -initts5=0 -title6=martian gothic.exe -path6=D:\Games\Martian Gothic\martian gothic.exe -module6= -opengllib6= -ver6=7 -coord6=0 -flag6=201326626 -flagg6=1208090624 -flagh6=276 -flagi6=0 -tflag6=263 -initx6=0 -inity6=0 -minx6=0 -miny6=0 -maxx6=0 -maxy6=0 -posx6=50 -posy6=50 -sizx6=800 -sizy6=600 -maxfps6=0 -initts6=0 diff --git a/build/dxwnd.4.ini b/build/dxwnd.4.ini deleted file mode 100644 index 3ac8a3b..0000000 --- a/build/dxwnd.4.ini +++ /dev/null @@ -1,2214 +0,0 @@ -[target] -title0=101 Airborne Invasion -path0=D:\Games\101air\101.exe -module0= -opengllib0= -ver0=0 -coord0=0 -flag0=134217762 -flagg0=134217728 -flagh0=20 -flagi0=0 -tflag0=0 -initx0=0 -inity0=0 -minx0=0 -miny0=0 -maxx0=0 -maxy0=0 -posx0=50 -posy0=50 -sizx0=800 -sizy0=600 -maxfps0=0 -initts0=0 -title1=688I Hunter Killer -path1=D:\Games\688\688I_HK.EXE -module1= -opengllib1= -ver1=0 -coord1=1 -flag1=1209532962 -flagg1=135266304 -flagh1=20 -flagi1=0 -tflag1=0 -initx1=0 -inity1=0 -minx1=0 -miny1=0 -maxx1=0 -maxy1=0 -posx1=50 -posy1=50 -sizx1=800 -sizy1=600 -maxfps1=0 -initts1=0 -title2=A10 Cuba -path2=D:\Games\A10\A10Cuba.exe -module2= -opengllib2= -ver2=0 -coord2=0 -flag2=134217762 -flagg2=1207959552 -flagh2=20 -flagi2=0 -tflag2=0 -initx2=0 -inity2=0 -minx2=0 -miny2=0 -maxx2=0 -maxy2=0 -posx2=50 -posy2=50 -sizx2=800 -sizy2=600 -maxfps2=0 -initts2=0 -title3=Abomination the Nemesis Project -path3=D:\Games\Abomination\Abomb.exe -module3= -opengllib3= -ver3=0 -coord3=0 -flag3=134217762 -flagg3=1207959552 -flagh3=20 -flagi3=0 -tflag3=66 -initx3=0 -inity3=0 -minx3=0 -miny3=0 -maxx3=0 -maxy3=0 -posx3=50 -posy3=50 -sizx3=800 -sizy3=600 -maxfps3=0 -initts3=0 -title4=ACabal95.exe -path4=D:\Games\Alien_cabal\ACabal95.exe -module4= -opengllib4= -ver4=0 -coord4=0 -flag4=671088674 -flagg4=1209008128 -flagh4=20 -flagi4=0 -tflag4=258 -initx4=0 -inity4=0 -minx4=0 -miny4=0 -maxx4=0 -maxy4=0 -posx4=50 -posy4=50 -sizx4=800 -sizy4=600 -maxfps4=0 -initts4=0 -title5=Actua Soccer 3 -path5=D:\Games\ActuaSoccer3\Soccer3.exe -module5= -opengllib5= -ver5=0 -coord5=0 -flag5=671088674 -flagg5=134217728 -flagh5=20 -flagi5=0 -tflag5=67 -initx5=0 -inity5=0 -minx5=0 -miny5=0 -maxx5=0 -maxy5=0 -posx5=50 -posy5=50 -sizx5=800 -sizy5=600 -maxfps5=0 -initts5=0 -title6=Akuma Demon Spawn - Lamentation Sword -path6=D:\Games\Akuma Demon Spawn - Lamentation Sword (1999)\Akuma\Akuma.EXE -module6= -opengllib6= -ver6=0 -coord6=0 -flag6=134217762 -flagg6=1207959554 -flagh6=20 -flagi6=0 -tflag6=0 -initx6=0 -inity6=0 -minx6=0 -miny6=0 -maxx6=0 -maxy6=0 -posx6=50 -posy6=50 -sizx6=800 -sizy6=600 -maxfps6=0 -initts6=0 -title7=Ancient Conquest -path7=D:\Games\Ancient Conquest\ANCIENT.EXE -module7= -opengllib7= -ver7=0 -coord7=0 -flag7=671088674 -flagg7=1207959552 -flagh7=20 -flagi7=0 -tflag7=338 -initx7=0 -inity7=0 -minx7=0 -miny7=0 -maxx7=0 -maxy7=0 -posx7=50 -posy7=50 -sizx7=800 -sizy7=600 -maxfps7=0 -initts7=0 -title8=Army Men RTS -path8=D:\Games\Army Men RTS\amrts.exe -module8= -opengllib8= -ver8=0 -coord8=0 -flag8=134217762 -flagg8=1207959552 -flagh8=20 -flagi8=0 -tflag8=0 -initx8=0 -inity8=0 -minx8=0 -miny8=0 -maxx8=0 -maxy8=0 -posx8=50 -posy8=50 -sizx8=800 -sizy8=600 -maxfps8=0 -initts8=0 -title9=Balls of Steel -path9=D:\Games\Balls of Steel\bos.exe -module9=duke.ddp mutation.ddp -opengllib9= -ver9=0 -coord9=0 -flag9=167772192 -flagg9=202375169 -flagh9=20 -flagi9=0 -tflag9=262 -initx9=0 -inity9=0 -minx9=0 -miny9=0 -maxx9=0 -maxy9=0 -posx9=50 -posy9=50 -sizx9=800 -sizy9=600 -maxfps9=0 -initts9=0 -title10=Barrage -path10=D:\Games\Barrage\SRC\BARRAGE.EXE -module10= -opengllib10= -ver10=0 -coord10=0 -flag10=142606368 -flagg10=134217728 -flagh10=8212 -flagi10=0 -tflag10=6 -initx10=0 -inity10=0 -minx10=0 -miny10=0 -maxx10=0 -maxy10=0 -posx10=50 -posy10=50 -sizx10=800 -sizy10=600 -maxfps10=0 -initts10=0 -title11=Beavis & ButtHead do U. -path11=D:\Games\B_b\BEAVIS.EXE -module11= -opengllib11= -ver11=0 -coord11=0 -flag11=134217762 -flagg11=1207959552 -flagh11=20 -flagi11=0 -tflag11=3 -initx11=0 -inity11=0 -minx11=0 -miny11=0 -maxx11=0 -maxy11=0 -posx11=50 -posy11=50 -sizx11=800 -sizy11=600 -maxfps11=0 -initts11=0 -title12=Beyond Divinity -path12=D:\Games\Beyond Divinity\Div.exe -module12= -opengllib12= -ver12=0 -coord12=0 -flag12=134217762 -flagg12=1207959552 -flagh12=20 -flagi12=0 -tflag12=0 -initx12=0 -inity12=0 -minx12=0 -miny12=0 -maxx12=0 -maxy12=0 -posx12=50 -posy12=50 -sizx12=800 -sizy12=600 -maxfps12=0 -initts12=0 -title13=Black & White -path13=D:\Games\Black & White\runblack.exe -module13= -opengllib13= -ver13=0 -coord13=0 -flag13=679477280 -flagg13=1207959552 -flagh13=20 -flagi13=0 -tflag13=3 -initx13=0 -inity13=0 -minx13=0 -miny13=0 -maxx13=0 -maxy13=0 -posx13=50 -posy13=50 -sizx13=800 -sizy13=600 -maxfps13=0 -initts13=0 -title14=Black & White 2 Demo -path14=D:\Games\Black & White 2 Demo\BW2Demo.exe -module14= -opengllib14= -ver14=0 -coord14=0 -flag14=134217762 -flagg14=1208090624 -flagh14=20 -flagi14=0 -tflag14=1 -initx14=0 -inity14=0 -minx14=0 -miny14=0 -maxx14=0 -maxy14=0 -posx14=50 -posy14=50 -sizx14=800 -sizy14=600 -maxfps14=0 -initts14=0 -title15=Carnivores -path15=D:\Games\Carnivores\HUNTSOFT.EXE -module15= -opengllib15= -ver15=0 -coord15=1 -flag15=939524130 -flagg15=135266320 -flagh15=20 -flagi15=0 -tflag15=66 -initx15=0 -inity15=0 -minx15=0 -miny15=0 -maxx15=0 -maxy15=0 -posx15=50 -posy15=50 -sizx15=800 -sizy15=600 -maxfps15=0 -initts15=0 -title16=Cave Story (ITA) -path16=D:\Games\Cave Story\Doukutsu.exe -module16= -opengllib16= -ver16=0 -coord16=0 -flag16=134221858 -flagg16=1207959552 -flagh16=32790 -flagi16=0 -tflag16=2 -initx16=0 -inity16=0 -minx16=0 -miny16=0 -maxx16=0 -maxy16=0 -posx16=50 -posy16=50 -sizx16=800 -sizy16=600 -maxfps16=0 -initts16=0 -title17=Chariots of War -path17=D:\Games\Chariots of War\CoW.exe -module17= -opengllib17= -ver17=0 -coord17=0 -flag17=134217762 -flagg17=1207959552 -flagh17=20 -flagi17=0 -tflag17=0 -initx17=0 -inity17=0 -minx17=0 -miny17=0 -maxx17=0 -maxy17=0 -posx17=50 -posy17=50 -sizx17=800 -sizy17=600 -maxfps17=0 -initts17=0 -title18=Command & Conquer 3 -path18=D:\Games\Command & Conquer 3\CNC3.exe -module18= -opengllib18= -ver18=0 -coord18=0 -flag18=134217762 -flagg18=1207959552 -flagh18=20 -flagi18=0 -tflag18=0 -initx18=0 -inity18=0 -minx18=0 -miny18=0 -maxx18=0 -maxy18=0 -posx18=50 -posy18=50 -sizx18=800 -sizy18=600 -maxfps18=0 -initts18=0 -title19=Commandos II -path19=D:\Games\Commandos II\comm2.exe -module19= -opengllib19= -ver19=0 -coord19=0 -flag19=134217762 -flagg19=134217728 -flagh19=20 -flagi19=0 -tflag19=64 -initx19=0 -inity19=0 -minx19=0 -miny19=0 -maxx19=0 -maxy19=0 -posx19=50 -posy19=50 -sizx19=800 -sizy19=600 -maxfps19=0 -initts19=0 -title20=Crazy Frog Racer -path20=D:\Games\CrazyFrog\CRAZY.EXE -module20= -opengllib20= -ver20=8 -coord20=0 -flag20=134217762 -flagg20=134217729 -flagh20=20 -flagi20=0 -tflag20=64 -initx20=0 -inity20=0 -minx20=0 -miny20=0 -maxx20=0 -maxy20=0 -posx20=50 -posy20=50 -sizx20=800 -sizy20=600 -maxfps20=0 -initts20=0 -title21=Crazy Taxy -path21=D:\Games\Crazy_Taxi\Crazy Taxi PC Version\crazy_taxi_pc.exe -module21= -opengllib21= -ver21=0 -coord21=0 -flag21=671219744 -flagg21=134217728 -flagh21=20 -flagi21=0 -tflag21=66 -initx21=0 -inity21=0 -minx21=0 -miny21=0 -maxx21=0 -maxy21=0 -posx21=50 -posy21=50 -sizx21=800 -sizy21=600 -maxfps21=0 -initts21=0 -title22=Dark Angael -path22=D:\Games\Dark Angael\GAME.EXE -module22= -opengllib22= -ver22=0 -coord22=0 -flag22=134217762 -flagg22=134217728 -flagh22=20 -flagi22=0 -tflag22=0 -initx22=0 -inity22=0 -minx22=0 -miny22=0 -maxx22=0 -maxy22=0 -posx22=50 -posy22=50 -sizx22=800 -sizy22=600 -maxfps22=0 -initts22=0 -title23=Dark Colony -path23=D:\Games\Dark Colony\DCOLONY\DC.EXE -module23= -opengllib23= -ver23=0 -coord23=0 -flag23=134217762 -flagg23=135266304 -flagh23=20 -flagi23=0 -tflag23=2 -initx23=0 -inity23=0 -minx23=0 -miny23=0 -maxx23=0 -maxy23=0 -posx23=50 -posy23=50 -sizx23=800 -sizy23=600 -maxfps23=0 -initts23=0 -title24=Dark Judgement -path24=D:\Games\Dark Judgement\Dark Judgement.EXE -module24= -opengllib24= -ver24=0 -coord24=0 -flag24=134217826 -flagg24=134217728 -flagh24=20 -flagi24=0 -tflag24=2 -initx24=0 -inity24=0 -minx24=0 -miny24=0 -maxx24=0 -maxy24=0 -posx24=50 -posy24=50 -sizx24=800 -sizy24=600 -maxfps24=0 -initts24=0 -title25=Dark Vengeance -path25=D:\Games\dark_vengeance\dv.exe -module25= -opengllib25= -ver25=0 -coord25=0 -flag25=142606386 -flagg25=134217728 -flagh25=6299668 -flagi25=0 -tflag25=258 -initx25=0 -inity25=0 -minx25=0 -miny25=0 -maxx25=800 -maxy25=600 -posx25=50 -posy25=50 -sizx25=800 -sizy25=600 -maxfps25=0 -initts25=0 -title26=Descent 3 -path26=D:\Games\Descent_3\Descent 3.exe -module26= -opengllib26= -ver26=0 -coord26=0 -flag26=134217760 -flagg26=134348801 -flagh26=4 -flagi26=0 -tflag26=0 -initx26=0 -inity26=0 -minx26=0 -miny26=0 -maxx26=0 -maxy26=0 -posx26=50 -posy26=50 -sizx26=800 -sizy26=600 -maxfps26=0 -initts26=0 -title27=Descent 3 main -path27=D:\Games\Descent_3\main.exe -module27= -opengllib27= -ver27=0 -coord27=0 -flag27=771891234 -flagg27=-1946025984 -flagh27=8212 -flagi27=0 -tflag27=2 -initx27=0 -inity27=0 -minx27=0 -miny27=0 -maxx27=0 -maxy27=0 -posx27=50 -posy27=50 -sizx27=800 -sizy27=600 -maxfps27=0 -initts27=0 -title28=Dethkarz.exe -path28=D:\Games\DethKarz\Dethkarz.exe -module28= -opengllib28= -ver28=0 -coord28=0 -flag28=671088672 -flagg28=134217728 -flagh28=276 -flagi28=0 -tflag28=258 -initx28=0 -inity28=0 -minx28=0 -miny28=0 -maxx28=0 -maxy28=0 -posx28=50 -posy28=50 -sizx28=800 -sizy28=600 -maxfps28=0 -initts28=0 -title29=Diablo -path29=D:\Games\Diablo\Diablo.exe -module29= -opengllib29= -ver29=0 -coord29=1 -flag29=134217762 -flagg29=134217728 -flagh29=20 -flagi29=0 -tflag29=322 -initx29=0 -inity29=0 -minx29=0 -miny29=0 -maxx29=0 -maxy29=0 -posx29=50 -posy29=50 -sizx29=0 -sizy29=0 -maxfps29=0 -initts29=0 -title30=Doom 3 -path30=D:\Games\Doom 3\Doom3.exe -module30= -opengllib30= -ver30=0 -coord30=0 -flag30=134217762 -flagg30=1207959552 -flagh30=20 -flagi30=0 -tflag30=0 -initx30=0 -inity30=0 -minx30=0 -miny30=0 -maxx30=0 -maxy30=0 -posx30=50 -posy30=50 -sizx30=800 -sizy30=600 -maxfps30=0 -initts30=0 -title31=Duckman -path31=D:\Games\duckman\DUCKMAN.EXE -module31= -opengllib31= -ver31=0 -coord31=0 -flag31=402653218 -flagg31=134217744 -flagh31=1049620 -flagi31=0 -tflag31=2 -initx31=0 -inity31=0 -minx31=0 -miny31=0 -maxx31=0 -maxy31=0 -posx31=50 -posy31=50 -sizx31=800 -sizy31=600 -maxfps31=0 -initts31=0 -title32=Dungeon Keeper 2 -path32=D:\Games\Dungeon Keeper 2\DKII.exe -module32= -opengllib32= -ver32=0 -coord32=0 -flag32=134217762 -flagg32=1241513984 -flagh32=20 -flagi32=0 -tflag32=3 -initx32=0 -inity32=0 -minx32=0 -miny32=0 -maxx32=0 -maxy32=0 -posx32=50 -posy32=50 -sizx32=800 -sizy32=600 -maxfps32=0 -initts32=0 -title33=Dweep -path33=D:\Games\dweep\Dweep.exe -module33= -opengllib33= -ver33=0 -coord33=0 -flag33=134234146 -flagg33=134283264 -flagh33=1048596 -flagi33=0 -tflag33=0 -initx33=0 -inity33=0 -minx33=0 -miny33=0 -maxx33=0 -maxy33=0 -posx33=50 -posy33=50 -sizx33=800 -sizy33=600 -maxfps33=0 -initts33=2 -title34=Dylan Dog Horror Luna Park -path34=D:\Games\Dylan Dog\hlp.exe -module34= -opengllib34= -ver34=1 -coord34=0 -flag34=134217762 -flagg34=135266304 -flagh34=1048596 -flagi34=0 -tflag34=0 -initx34=0 -inity34=0 -minx34=0 -miny34=0 -maxx34=0 -maxy34=0 -posx34=50 -posy34=50 -sizx34=0 -sizy34=0 -maxfps34=0 -initts34=0 -title35=Eliminator -path35=D:\Games\eliminat\Eliminator.exe -module35= -opengllib35= -ver35=1 -coord35=0 -flag35=134217762 -flagg35=134217728 -flagh35=1044 -flagi35=0 -tflag35=2 -initx35=0 -inity35=0 -minx35=0 -miny35=0 -maxx35=0 -maxy35=0 -posx35=800 -posy35=600 -sizx35=400 -sizy35=300 -maxfps35=0 -initts35=0 -title36=EMERGY.EXE -path36=D:\Games\Emergency\EMERGY.EXE -module36= -opengllib36= -ver36=0 -coord36=0 -flag36=134283298 -flagg36=134217728 -flagh36=20 -flagi36=0 -tflag36=0 -initx36=0 -inity36=0 -minx36=0 -miny36=0 -maxx36=0 -maxy36=0 -posx36=50 -posy36=50 -sizx36=800 -sizy36=600 -maxfps36=0 -initts36=0 -title37=EMPIRES.EXE -path37=D:\Games\Age of Empires\EMPIRES.EXE -module37= -opengllib37= -ver37=0 -coord37=0 -flag37=134217762 -flagg37=134217728 -flagh37=1048596 -flagi37=0 -tflag37=64 -initx37=0 -inity37=0 -minx37=0 -miny37=0 -maxx37=0 -maxy37=0 -posx37=50 -posy37=50 -sizx37=800 -sizy37=600 -maxfps37=0 -initts37=0 -title38=EPIC40K.EXE -path38=D:\Games\war_hammer_final_liberation\EPIC40K.EXE -module38= -opengllib38= -ver38=0 -coord38=0 -flag38=-1476263902 -flagg38=135266304 -flagh38=2097172 -flagi38=0 -tflag38=0 -initx38=0 -inity38=0 -minx38=0 -miny38=0 -maxx38=0 -maxy38=0 -posx38=50 -posy38=50 -sizx38=800 -sizy38=600 -maxfps38=0 -initts38=0 -title39=Evany.exe -path39=D:\Games\Evany La chiave per mondi sconosciuti\Evany.exe -module39= -opengllib39= -ver39=0 -coord39=0 -flag39=738197538 -flagg39=1207959552 -flagh39=20 -flagi39=0 -tflag39=274 -initx39=0 -inity39=0 -minx39=0 -miny39=0 -maxx39=0 -maxy39=0 -posx39=50 -posy39=50 -sizx39=800 -sizy39=600 -maxfps39=0 -initts39=0 -title40=Evil Dead -path40=D:\Games\Evil Dead\EvilDead.exe -module40= -opengllib40= -ver40=0 -coord40=0 -flag40=-2013265888 -flagg40=1207959552 -flagh40=4 -flagi40=0 -tflag40=0 -initx40=0 -inity40=0 -minx40=0 -miny40=0 -maxx40=0 -maxy40=0 -posx40=50 -posy40=50 -sizx40=800 -sizy40=600 -maxfps40=0 -initts40=0 -title41=Fable - The Lost Chapters -path41=D:\Games\Fable - The Lost Chapters\Fable.exe -module41= -opengllib41= -ver41=9 -coord41=1 -flag41=134217760 -flagg41=201457672 -flagh41=20 -flagi41=0 -tflag41=258 -initx41=0 -inity41=0 -minx41=0 -miny41=0 -maxx41=0 -maxy41=0 -posx41=50 -posy41=50 -sizx41=800 -sizy41=600 -maxfps41=0 -initts41=0 -title42=Fallout -path42=D:\Games\Fallout\FALLOUTW.EXE -module42= -opengllib42= -ver42=1 -coord42=3 -flag42=134217762 -flagg42=134217728 -flagh42=1048596 -flagi42=0 -tflag42=66 -initx42=0 -inity42=0 -minx42=0 -miny42=0 -maxx42=0 -maxy42=0 -posx42=50 -posy42=50 -sizx42=800 -sizy42=600 -maxfps42=0 -initts42=0 -title43=Fighting Forces -path43=D:\Games\Fighting Forces\FFORCE.EXE -module43= -opengllib43= -ver43=0 -coord43=0 -flag43=134217762 -flagg43=671088640 -flagh43=3092 -flagi43=0 -tflag43=258 -initx43=0 -inity43=0 -minx43=0 -miny43=0 -maxx43=0 -maxy43=0 -posx43=50 -posy43=50 -sizx43=800 -sizy43=600 -maxfps43=0 -initts43=0 -title44=Final Fighter -path44=D:\Games\Final Fighter\FinalFighter.exe -module44= -opengllib44= -ver44=0 -coord44=0 -flag44=939524128 -flagg44=135266305 -flagh44=4 -flagi44=0 -tflag44=512 -initx44=0 -inity44=0 -minx44=0 -miny44=0 -maxx44=0 -maxy44=0 -posx44=50 -posy44=50 -sizx44=800 -sizy44=600 -maxfps44=0 -initts44=0 -title45=Final Odyssey -path45=D:\Games\Final odyssey\FinalOdy.exe -module45= -opengllib45= -ver45=0 -coord45=0 -flag45=134217760 -flagg45=134217728 -flagh45=4 -flagi45=0 -tflag45=64 -initx45=0 -inity45=0 -minx45=0 -miny45=0 -maxx45=0 -maxy45=0 -posx45=50 -posy45=50 -sizx45=800 -sizy45=600 -maxfps45=0 -initts45=0 -title46=Forsaken HW -path46=D:\Games\Forsaken\ForsakenHW.exe -module46= -opengllib46= -ver46=0 -coord46=0 -flag46=134217760 -flagg46=1207959552 -flagh46=20 -flagi46=0 -tflag46=0 -initx46=0 -inity46=0 -minx46=0 -miny46=0 -maxx46=0 -maxy46=0 -posx46=50 -posy46=50 -sizx46=800 -sizy46=600 -maxfps46=0 -initts46=0 -title47=Forsaken SW -path47=D:\Games\Forsaken\ForsakenSW.exe -module47= -opengllib47= -ver47=0 -coord47=0 -flag47=134217760 -flagg47=1207959552 -flagh47=65556 -flagi47=0 -tflag47=258 -initx47=0 -inity47=0 -minx47=0 -miny47=0 -maxx47=0 -maxy47=0 -posx47=50 -posy47=50 -sizx47=800 -sizy47=600 -maxfps47=0 -initts47=0 -title48=Fuel -path48=D:\Games\Codemasters\FUEL\FUEL.exe -module48= -opengllib48= -ver48=0 -coord48=0 -flag48=134217762 -flagg48=1207959552 -flagh48=20 -flagi48=0 -tflag48=0 -initx48=0 -inity48=0 -minx48=0 -miny48=0 -maxx48=0 -maxy48=0 -posx48=50 -posy48=50 -sizx48=800 -sizy48=600 -maxfps48=0 -initts48=0 -title49=Gangsters 2 -path49=D:\Games\Gangsters 2\Gangsters2.exe -module49= -opengllib49= -ver49=0 -coord49=0 -flag49=134217762 -flagg49=134217728 -flagh49=20 -flagi49=0 -tflag49=2 -initx49=0 -inity49=0 -minx49=0 -miny49=0 -maxx49=0 -maxy49=0 -posx49=50 -posy49=50 -sizx49=800 -sizy49=600 -maxfps49=0 -initts49=0 -title50=GeneRally -path50=D:\Games\generally105\GeneRally.exe -module50= -opengllib50= -ver50=7 -coord50=0 -flag50=134234146 -flagg50=135266305 -flagh50=20 -flagi50=0 -tflag50=0 -initx50=0 -inity50=0 -minx50=0 -miny50=0 -maxx50=0 -maxy50=0 -posx50=50 -posy50=50 -sizx50=800 -sizy50=600 -maxfps50=0 -initts50=0 -title51=Gex -path51=D:\Games\gex\GEX.EXE -module51= -opengllib51= -ver51=0 -coord51=0 -flag51=134217763 -flagg51=134217728 -flagh51=20 -flagi51=0 -tflag51=66 -initx51=0 -inity51=0 -minx51=0 -miny51=0 -maxx51=0 -maxy51=0 -posx51=50 -posy51=50 -sizx51=800 -sizy51=600 -maxfps51=0 -initts51=0 -title52=G-Nome -path52=D:\Games\G-Nome\G-NOME.EXE -module52= -opengllib52= -ver52=0 -coord52=0 -flag52=714084386 -flagg52=201326592 -flagh52=33300 -flagi52=0 -tflag52=0 -initx52=0 -inity52=0 -minx52=0 -miny52=0 -maxx52=0 -maxy52=0 -posx52=250 -posy52=250 -sizx52=800 -sizy52=600 -maxfps52=0 -initts52=0 -title53=gpl.exe -path53=D:\Games\Grand Prix Legends\gpl\gpl.exe -module53= -opengllib53= -ver53=0 -coord53=0 -flag53=-1467875294 -flagg53=135266304 -flagh53=20 -flagi53=0 -tflag53=322 -initx53=0 -inity53=0 -minx53=0 -miny53=0 -maxx53=0 -maxy53=0 -posx53=50 -posy53=50 -sizx53=800 -sizy53=600 -maxfps53=0 -initts53=0 -title54=Hard Truck - Road to Victory -path54=C:\Hard Truck\HTruck.exe -module54= -opengllib54= -ver54=0 -coord54=0 -flag54=134217760 -flagg54=134217728 -flagh54=2068 -flagi54=0 -tflag54=0 -initx54=0 -inity54=0 -minx54=0 -miny54=0 -maxx54=0 -maxy54=0 -posx54=50 -posy54=50 -sizx54=800 -sizy54=600 -maxfps54=0 -initts54=0 -title55=Hellcopter -path55=D:\Games\Hellcopter\HCopter.exe -module55= -opengllib55= -ver55=0 -coord55=0 -flag55=134217762 -flagg55=134217728 -flagh55=1044 -flagi55=0 -tflag55=258 -initx55=0 -inity55=0 -minx55=0 -miny55=0 -maxx55=0 -maxy55=0 -posx55=50 -posy55=50 -sizx55=800 -sizy55=600 -maxfps55=0 -initts55=0 -title56=Heroes of Might & Magic 2 Gold -path56=D:\Games\heroes2gold\HEROES2W.EXE -module56= -opengllib56= -ver56=0 -coord56=0 -flag56=134217730 -flagg56=143654912 -flagh56=20 -flagi56=0 -tflag56=770 -initx56=0 -inity56=0 -minx56=0 -miny56=0 -maxx56=0 -maxy56=0 -posx56=50 -posy56=50 -sizx56=800 -sizy56=600 -maxfps56=0 -initts56=0 -title57=Heroes of Might and Magic 3 CD -path57=D:\Games\Heroes of Might & Magic III\HEROES3.EXE -module57= -opengllib57= -ver57=0 -coord57=0 -flag57=134217762 -flagg57=1207959552 -flagh57=20 -flagi57=0 -tflag57=0 -initx57=0 -inity57=0 -minx57=0 -miny57=0 -maxx57=0 -maxy57=0 -posx57=50 -posy57=50 -sizx57=800 -sizy57=600 -maxfps57=0 -initts57=0 -title58=Heroes of Might and Magic 3 Complete -path58=D:\Games\Heroes of Might and Magic 3 Complete\Heroes3.exe -module58= -opengllib58= -ver58=0 -coord58=0 -flag58=134217762 -flagg58=1207959552 -flagh58=20 -flagi58=0 -tflag58=3 -initx58=0 -inity58=0 -minx58=0 -miny58=0 -maxx58=0 -maxy58=0 -posx58=50 -posy58=50 -sizx58=800 -sizy58=600 -maxfps58=0 -initts58=0 -title59=Heroes of Might and Magic 4 Complete -path59=D:\Games\Heroes of Might and Magic 4 Complete\heroes4.exe -module59= -opengllib59= -ver59=0 -coord59=2 -flag59=134283298 -flagg59=1207959552 -flagh59=65558 -flagi59=0 -tflag59=274 -initx59=0 -inity59=0 -minx59=0 -miny59=0 -maxx59=0 -maxy59=0 -posx59=50 -posy59=50 -sizx59=800 -sizy59=600 -maxfps59=0 -initts59=0 -title60=Heroes of Might and Magic IV -path60=D:\Games\Heroes of Might and Magic IV\heroes4i.exe -module60= -opengllib60= -ver60=0 -coord60=1 -flag60=134283298 -flagg60=1211121728 -flagh60=65556 -flagi60=0 -tflag60=3 -initx60=0 -inity60=0 -minx60=0 -miny60=0 -maxx60=0 -maxy60=0 -posx60=50 -posy60=50 -sizx60=1200 -sizy60=900 -maxfps60=0 -initts60=0 -title61=HoI2.exe -path61=D:\Games\HoI2 Doomsday\HoI2.exe -module61= -opengllib61= -ver61=0 -coord61=0 -flag61=150994976 -flagg61=134217728 -flagh61=20 -flagi61=0 -tflag61=258 -initx61=0 -inity61=0 -minx61=0 -miny61=0 -maxx61=0 -maxy61=0 -posx61=50 -posy61=50 -sizx61=800 -sizy61=600 -maxfps61=0 -initts61=0 -title62=Hooligans Storm over Europe -path62=D:\Games\Hooligans\Hooligans.exe -module62= -opengllib62= -ver62=0 -coord62=0 -flag62=134742048 -flagg62=202375168 -flagh62=20 -flagi62=0 -tflag62=258 -initx62=0 -inity62=0 -minx62=0 -miny62=0 -maxx62=0 -maxy62=0 -posx62=50 -posy62=50 -sizx62=800 -sizy62=600 -maxfps62=0 -initts62=0 -title63=Imperialism -path63=D:\Games\Imperialism\Imperialism.exe -module63= -opengllib63= -ver63=0 -coord63=0 -flag63=679485474 -flagg63=134217728 -flagh63=32788 -flagi63=0 -tflag63=2 -initx63=0 -inity63=0 -minx63=0 -miny63=0 -maxx63=0 -maxy63=0 -posx63=50 -posy63=50 -sizx63=1200 -sizy63=900 -maxfps63=0 -initts63=0 -title64=Imperialism II -path64=D:\Games\imperialism_2\imperialism II.exe -module64= -opengllib64= -ver64=0 -coord64=0 -flag64=671096866 -flagg64=470810688 -flagh64=20 -flagi64=0 -tflag64=66 -initx64=0 -inity64=0 -minx64=0 -miny64=0 -maxx64=0 -maxy64=0 -posx64=50 -posy64=50 -sizx64=800 -sizy64=600 -maxfps64=0 -initts64=0 -title65=Kohan II Kings of War -path65=D:\Games\Kohan II Kings of War\k2.exe -module65= -opengllib65= -ver65=0 -coord65=0 -flag65=134217762 -flagg65=1207959552 -flagh65=20 -flagi65=0 -tflag65=0 -initx65=0 -inity65=0 -minx65=0 -miny65=0 -maxx65=0 -maxy65=0 -posx65=50 -posy65=50 -sizx65=800 -sizy65=600 -maxfps65=0 -initts65=0 -title66=Martian Gothic Unification -path66=D:\Games\Martian Gothic\martian gothic.exe -module66= -opengllib66= -ver66=0 -coord66=0 -flag66=402653217 -flagg66=134217728 -flagh66=20 -flagi66=0 -tflag66=3 -initx66=0 -inity66=0 -minx66=0 -miny66=0 -maxx66=0 -maxy66=0 -posx66=50 -posy66=100 -sizx66=400 -sizy66=300 -maxfps66=0 -initts66=0 -title67=Mechwarrior 3 -path67=D:\Games\Mechwarrior 3 (full)\Mech3.exe -module67= -opengllib67= -ver67=0 -coord67=0 -flag67=671096866 -flagg67=-2012086272 -flagh67=20 -flagi67=0 -tflag67=258 -initx67=0 -inity67=0 -minx67=0 -miny67=0 -maxx67=0 -maxy67=0 -posx67=50 -posy67=50 -sizx67=800 -sizy67=600 -maxfps67=0 -initts67=0 -title68=Messiah GOG -path68=D:\Games\Messiah (GOG)\MessiahD3D.exe -module68= -opengllib68= -ver68=7 -coord68=0 -flag68=947912738 -flagg68=1207959552 -flagh68=20 -flagi68=0 -tflag68=3 -initx68=0 -inity68=0 -minx68=0 -miny68=0 -maxx68=0 -maxy68=0 -posx68=50 -posy68=50 -sizx68=800 -sizy68=600 -maxfps68=0 -initts68=0 -title69=Nightmare Ned -path69=D:\Games\Ned\NITENED.EXE -module69= -opengllib69= -ver69=0 -coord69=0 -flag69=134217762 -flagg69=134217728 -flagh69=1048596 -flagi69=0 -tflag69=2 -initx69=0 -inity69=0 -minx69=0 -miny69=0 -maxx69=0 -maxy69=0 -posx69=50 -posy69=50 -sizx69=800 -sizy69=600 -maxfps69=0 -initts69=0 -title70=Premier Manager 98 -path70=D:\Games\Premier Manager 98\MANAGER.EXE -module70= -opengllib70= -ver70=1 -coord70=0 -flag70=671088674 -flagg70=1207959552 -flagh70=20 -flagi70=0 -tflag70=0 -initx70=0 -inity70=0 -minx70=0 -miny70=0 -maxx70=0 -maxy70=0 -posx70=50 -posy70=50 -sizx70=800 -sizy70=600 -maxfps70=0 -initts70=0 -title71=Raiden II -path71=D:\Games\raiden2\RAIDENII.EXE -module71= -opengllib71= -ver71=0 -coord71=1 -flag71=134217762 -flagg71=134217728 -flagh71=20 -flagi71=0 -tflag71=0 -initx71=0 -inity71=0 -minx71=0 -miny71=0 -maxx71=0 -maxy71=0 -posx71=50 -posy71=50 -sizx71=800 -sizy71=600 -maxfps71=0 -initts71=0 -title72=Rapanui -path72=D:\Games\Rapanui\Rapanui.exe -module72= -opengllib72= -ver72=0 -coord72=0 -flag72=134217762 -flagg72=134217728 -flagh72=20 -flagi72=0 -tflag72=0 -initx72=0 -inity72=0 -minx72=0 -miny72=0 -maxx72=0 -maxy72=0 -posx72=50 -posy72=50 -sizx72=800 -sizy72=600 -maxfps72=0 -initts72=0 -title73=Rayman 2 (GOG) -path73=D:\Games\GOG.com\Rayman 2\Rayman2.exe -module73= -opengllib73= -ver73=1 -coord73=0 -flag73=134217762 -flagg73=1208025088 -flagh73=20 -flagi73=0 -tflag73=274 -initx73=0 -inity73=0 -minx73=0 -miny73=0 -maxx73=0 -maxy73=0 -posx73=50 -posy73=50 -sizx73=800 -sizy73=600 -maxfps73=0 -initts73=8 -title74=Rayman2.exe -path74=C:\Program Files\GOG.com\Rayman 2\Rayman2.exe -module74= -opengllib74= -ver74=1 -coord74=0 -flag74=134217763 -flagg74=1208029184 -flagh74=2097172 -flagi74=0 -tflag74=18 -initx74=0 -inity74=0 -minx74=0 -miny74=0 -maxx74=0 -maxy74=0 -posx74=50 -posy74=50 -sizx74=800 -sizy74=600 -maxfps74=50 -initts74=8 -title75=Rayman2Demo.exe -path75=D:\Games\Rayman2Demo\Rayman2Demo.exe -module75= -opengllib75= -ver75=1 -coord75=0 -flag75=134217760 -flagg75=1207959552 -flagh75=20 -flagi75=0 -tflag75=0 -initx75=0 -inity75=0 -minx75=0 -miny75=0 -maxx75=0 -maxy75=0 -posx75=50 -posy75=50 -sizx75=800 -sizy75=600 -maxfps75=0 -initts75=0 -title76=Silent Hunter II (shell) -path76=D:\Games\Silent Hunter II\Shell\Shell.exe -module76= -opengllib76= -ver76=0 -coord76=0 -flag76=402653221 -flagg76=135266304 -flagh76=20 -flagi76=0 -tflag76=2 -initx76=0 -inity76=0 -minx76=0 -miny76=0 -maxx76=800 -maxy76=600 -posx76=50 -posy76=50 -sizx76=800 -sizy76=600 -maxfps76=0 -initts76=0 -title77=Silent Hunter II (sim) -path77=D:\Games\Silent Hunter II\Sim\Sim.exe -module77= -opengllib77= -ver77=0 -coord77=0 -flag77=134217780 -flagg77=134217728 -flagh77=20 -flagi77=0 -tflag77=0 -initx77=400 -inity77=300 -minx77=0 -miny77=0 -maxx77=800 -maxy77=600 -posx77=50 -posy77=50 -sizx77=800 -sizy77=600 -maxfps77=0 -initts77=0 -title78=Space Hack -path78=D:\Games\Space Hack\main.exe -module78= -opengllib78= -ver78=0 -coord78=0 -flag78=671105058 -flagg78=134217728 -flagh78=20 -flagi78=0 -tflag78=258 -initx78=0 -inity78=0 -minx78=0 -miny78=0 -maxx78=0 -maxy78=0 -posx78=50 -posy78=50 -sizx78=800 -sizy78=600 -maxfps78=0 -initts78=0 -title79=Tachyon The Fringe -path79=D:\Games\TachyonTheFringe\space.exe -module79= -opengllib79= -ver79=0 -coord79=0 -flag79=134234148 -flagg79=134217728 -flagh79=20 -flagi79=0 -tflag79=258 -initx79=0 -inity79=0 -minx79=0 -miny79=0 -maxx79=0 -maxy79=0 -posx79=50 -posy79=50 -sizx79=800 -sizy79=600 -maxfps79=0 -initts79=0 -title80=Tanktics -path80=D:\Games\Tanktics\tanktics.exe -module80= -opengllib80= -ver80=0 -coord80=0 -flag80=671088674 -flagg80=134217728 -flagh80=20 -flagi80=0 -tflag80=258 -initx80=0 -inity80=0 -minx80=0 -miny80=0 -maxx80=0 -maxy80=0 -posx80=50 -posy80=50 -sizx80=800 -sizy80=600 -maxfps80=0 -initts80=0 -title81=TD5_D3D.exe -path81=D:\Games\Test Drive 5\TD5_D3D.exe -module81= -opengllib81= -ver81=0 -coord81=0 -flag81=134217760 -flagg81=1207959552 -flagh81=20 -flagi81=0 -tflag81=64 -initx81=0 -inity81=0 -minx81=0 -miny81=0 -maxx81=0 -maxy81=0 -posx81=50 -posy81=50 -sizx81=800 -sizy81=600 -maxfps81=0 -initts81=0 -title82=The Sims -path82=D:\Games\sims\Sims.exe -module82= -opengllib82= -ver82=0 -coord82=0 -flag82=671096866 -flagg82=134217728 -flagh82=20 -flagi82=0 -tflag82=66 -initx82=0 -inity82=0 -minx82=0 -miny82=0 -maxx82=0 -maxy82=0 -posx82=50 -posy82=50 -sizx82=800 -sizy82=600 -maxfps82=0 -initts82=0 -title83=Tomb Raider - The Last Revelation -path83=D:\Games\Tomb Raider - The Last Revelation\tomb4.exe -module83= -opengllib83= -ver83=0 -coord83=0 -flag83=134217826 -flagg83=134217728 -flagh83=20 -flagi83=0 -tflag83=2 -initx83=0 -inity83=0 -minx83=0 -miny83=0 -maxx83=0 -maxy83=0 -posx83=50 -posy83=50 -sizx83=800 -sizy83=600 -maxfps83=0 -initts83=0 -title84=TOMB2.EXE -path84=D:\Games\Tomb Raider 2\TOMB2.EXE -module84= -opengllib84= -ver84=0 -coord84=0 -flag84=134217760 -flagg84=201326592 -flagh84=2068 -flagi84=0 -tflag84=0 -initx84=0 -inity84=0 -minx84=0 -miny84=0 -maxx84=0 -maxy84=0 -posx84=50 -posy84=50 -sizx84=800 -sizy84=600 -maxfps84=0 -initts84=0 -title85=Vangers one of the Road -path85=D:\Games\Vangers\road.exe -module85= -opengllib85= -ver85=1 -coord85=0 -flag85=406847650 -flagg85=671088640 -flagh85=262164 -flagi85=0 -tflag85=258 -initx85=0 -inity85=0 -minx85=0 -miny85=0 -maxx85=0 -maxy85=0 -posx85=50 -posy85=50 -sizx85=800 -sizy85=600 -maxfps85=0 -initts85=0 -title86=wa.exe -path86=D:\Games\worms_arma\Worms_2_Armageddon\wa.exe -module86= -opengllib86= -ver86=0 -coord86=0 -flag86=713031712 -flagg86=142606336 -flagh86=20 -flagi86=0 -tflag86=2 -initx86=0 -inity86=0 -minx86=0 -miny86=0 -maxx86=0 -maxy86=0 -posx86=50 -posy86=50 -sizx86=800 -sizy86=600 -maxfps86=0 -initts86=0 -title87=Wargames -path87=D:\Games\WarGames\wargames.exe -module87= -opengllib87= -ver87=0 -coord87=0 -flag87=134217762 -flagg87=1207959552 -flagh87=20 -flagi87=0 -tflag87=67 -initx87=0 -inity87=0 -minx87=0 -miny87=0 -maxx87=0 -maxy87=0 -posx87=50 -posy87=50 -sizx87=800 -sizy87=600 -maxfps87=0 -initts87=0 -title88=Warlords 3 -path88=D:\Games\Warlords3\Darklord.exe -module88= -opengllib88= -ver88=0 -coord88=0 -flag88=-2013249502 -flagg88=135266304 -flagh88=20 -flagi88=0 -tflag88=2 -initx88=0 -inity88=0 -minx88=0 -miny88=0 -maxx88=0 -maxy88=0 -posx88=50 -posy88=50 -sizx88=800 -sizy88=600 -maxfps88=0 -initts88=0 -title89=Western Front -path89=D:\Games\Western Front\wf.exe -module89= -opengllib89= -ver89=0 -coord89=0 -flag89=679477282 -flagg89=135266304 -flagh89=16404 -flagi89=0 -tflag89=0 -initx89=0 -inity89=0 -minx89=0 -miny89=0 -maxx89=0 -maxy89=0 -posx89=50 -posy89=50 -sizx89=800 -sizy89=600 -maxfps89=0 -initts89=0 -title90=dw.exe -path90=D:\Games\Devil.Whiskey\dw.exe -module90= -opengllib90= -ver90=7 -coord90=0 -flag90=671088674 -flagg90=1208090624 -flagh90=5 -flagi90=0 -tflag90=64 -initx90=0 -inity90=0 -minx90=0 -miny90=0 -maxx90=0 -maxy90=0 -posx90=50 -posy90=50 -sizx90=800 -sizy90=600 -maxfps90=0 -initts90=0 -title91=Dungeon Lords MMXII -path91=D:\Games\Dungeon Lords MMXII\dlords2012.exe -module91= -opengllib91= -ver91=0 -coord91=2 -flag91=-2013265886 -flagg91=1207959552 -flagh91=20 -flagi91=0 -tflag91=0 -initx91=0 -inity91=0 -minx91=0 -miny91=0 -maxx91=0 -maxy91=0 -posx91=50 -posy91=50 -sizx91=800 -sizy91=600 -maxfps91=0 -initts91=0 -title92=Bunnies must die -path92=D:\Games\Bunnies must die\bmd.exe -module92= -opengllib92= -ver92=7 -coord92=0 -flag92=671088674 -flagg92=1209008128 -flagh92=4 -flagi92=0 -tflag92=3 -initx92=0 -inity92=0 -minx92=0 -miny92=0 -maxx92=0 -maxy92=0 -posx92=50 -posy92=50 -sizx92=800 -sizy92=600 -maxfps92=0 -initts92=0 -title93=Magic & Mayhem -path93=D:\Games\Magic_&_Mayhem\Chaos.exe -module93= -opengllib93= -ver93=0 -coord93=0 -flag93=138412066 -flagg93=1275068416 -flagh93=8388628 -flagi93=0 -tflag93=259 -initx93=0 -inity93=0 -minx93=0 -miny93=0 -maxx93=0 -maxy93=0 -posx93=50 -posy93=50 -sizx93=800 -sizy93=600 -maxfps93=0 -initts93=0 -title94=Submarine Titans Demo -path94=D:\Games\Submarine Titans Demo\st.exe -module94= -opengllib94= -ver94=0 -coord94=0 -flag94=675282978 -flagg94=1207959552 -flagh94=20 -flagi94=0 -tflag94=3 -initx94=0 -inity94=0 -minx94=0 -miny94=0 -maxx94=0 -maxy94=0 -posx94=50 -posy94=50 -sizx94=800 -sizy94=600 -maxfps94=0 -initts94=0 -title95=Fate -path95=D:\Games\Fate\Fate.exe -module95= -opengllib95= -ver95=0 -coord95=2 -flag95=134217762 -flagg95=1207959552 -flagh95=20 -flagi95=0 -tflag95=64 -initx95=0 -inity95=0 -minx95=0 -miny95=0 -maxx95=0 -maxy95=0 -posx95=50 -posy95=50 -sizx95=800 -sizy95=600 -maxfps95=0 -initts95=0 -[window] -posx=1210 -posy=149 -sizx=360 -sizy=420 diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 9f7cbd0..863ff0a 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c14a21ce803c1f48696c754cbdb5368e40439fab6b64b9af7188331c159cba9 -size 414720 +oid sha256:d388e96ad41d9c1eafc912aecd8968fbd61f7f293a1f1a1cd69df02309c64344 +size 419328 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index c3cbae6..1bd0b4a 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12cba4b1f36d3b9f0ed76b365035ee75fb22df7f464e0f05f05339a829c9586c +oid sha256:376135e3ce4f0be506edbfb44720a7c762f120258e1b24c11ccd6fe11cc6d375 size 526336 diff --git a/build/dxwnd.ini b/build/dxwnd.ini new file mode 100644 index 0000000..262883f --- /dev/null +++ b/build/dxwnd.ini @@ -0,0 +1,5 @@ +[window] +posx=1127 +posy=417 +sizx=320 +sizy=200 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index c74180a..1b2454c 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -272,3 +272,13 @@ code reorganization GUI: removed useless flags and moved debug options in a hidden tab +v2.02.37 +CORE: +fix: now saves ZBUFFER capabilities to restore them on queries. This eliminates one possible d3d error when attempting use surface emulated mode. +fixed surface caps for "Ancient Evil", "Star Wars Shadows of the Empire", "Star Force Deluxe". +fixed surface handling in "Star Force Deluxe" that rely on a implicit PRIMARY surface created with 0 flags & 0 capabilities. +fixed handling of Flip operations when BACKBUFFER surface no longer exists, but there's a QueryInterface clone. +attempt to fix GetSystemPaletteEntries in windowed mode by using CreateHalftonePalette +d3d8/9 GetDisplayMode method duplicated to take in account the different prototype!! +added tentative wrapper for GetDCEx() call +initial coding for timers wrapping for time stretching \ No newline at end of file diff --git a/dll/analytic.cpp b/dll/analytic.cpp new file mode 100644 index 0000000..139597f --- /dev/null +++ b/dll/analytic.cpp @@ -0,0 +1,2 @@ + + diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index a3b8bf2..428b997 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -244,6 +244,7 @@ DDSURFACEDESC2 DDSD_Prim; DDSURFACEDESC2 DDSD_Back; DDSURFACEDESC2 DDSD_ZBuffer; +DWORD DDZBufferCaps; DWORD PaletteEntries[256]; DWORD *Palette16BPP = NULL; void *EmuScreenBuffer = NULL; // to implement pitch bug fix @@ -1658,6 +1659,15 @@ HRESULT WINAPI extQueryInterfaceS(void *lpdds, REFIID riid, LPVOID *obp) return DDERR_GENERIC; } break; + case 0xA4665C60: // IID_IDirect3DRGBDevice + OutTraceD("QueryInterface: IID_IDirect3DRGBDevice\n"); + break; + case 0xF2086B20: // IID_IDirect3DRampDevice + OutTraceD("QueryInterface: IID_IDirect3DRampDevice\n"); + break; + case 0x881949a1: // IID_IDirect3DMMXDevice + OutTraceD("QueryInterface: IID_IDirect3DMMXDevice\n"); + break; case 0x4B9F0EE0: OutTraceD("QueryInterface: IID_IDirectDrawColorControl\n"); break; @@ -1909,34 +1919,42 @@ HRESULT WINAPI extSetCooperativeLevel(void *lpdd, HWND hwnd, DWORD dwflags) return res; } -#define FIX_FLAGSMASK (DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PITCH|DDSD_PIXELFORMAT|DDSD_ZBUFFERBITDEPTH) -//#define FIXCAPS_ANALITICAL +#define FIX_FLAGSMASK (DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PITCH|DDSD_PIXELFORMAT|DDSD_ZBUFFERBITDEPTH|DDSD_TEXTURESTAGE) -static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion) -{ - // To do: fix Dungeon Keeper II - - // rules of thumb: - // 1) always get rid of DDSCAPS_VIDEOMEMORY caps - // 2) always add DDSCAPS_SYSTEMMEMORY caps - // 3) DDSCAPS_SYSTEMMEMORY is supported from dxversion 4 - // 4) if DDSD_CAPS is not set, ignore caps - // 5) ignore DDSD_CKSRCBLT, .... - // 6) setting a different pixel format in memory requires DDSCAPS_OFFSCREENPLAIN capability - - if(!(lpddsd->dwFlags & DDSD_CAPS)) lpddsd->ddsCaps.dwCaps = 0; - - OutTraceD("FixSurfaceCaps: Flags=%x(%s) Caps=%x(%s)\n", - lpddsd->dwFlags, ExplainFlags(lpddsd->dwFlags), lpddsd->ddsCaps.dwCaps, ExplainDDSCaps(lpddsd->ddsCaps.dwCaps)); - -#ifdef FIXCAPS_ANALITICAL +void FixSurfaceCapsAnalytic(LPDDSURFACEDESC2 lpddsd, int dxversion) +{ switch (lpddsd->dwFlags & FIX_FLAGSMASK){ + //case 0: + // switch (lpddsd->ddsCaps.dwCaps){ + // case 0: + // // Star Force Deluxe + // lpddsd->dwFlags = DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PIXELFORMAT; + // lpddsd->ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY; + // lpddsd->dwHeight = dxw.GetScreenHeight(); + // lpddsd->dwWidth = dxw.GetScreenWidth(); + // SetPixFmt(lpddsd); + // return; + // break; + // } + // break; + case DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE: + // Ancient Evil: + // dwFlags: DDSD_CAPS+HEIGHT+WIDTH+PIXELFORMAT+TEXTURESTAGE + // dwCaps1: DDSCAPS_OFFSCREENPLAIN+SYSTEMMEMORY+TEXTURE + // dwCaps2: DDSCAPS2_TEXTUREMANAGE + SetPixFmt(lpddsd); + return; + break; case DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_ZBUFFERBITDEPTH: switch (lpddsd->ddsCaps.dwCaps){ case DDSCAPS_VIDEOMEMORY|DDSCAPS_ZBUFFER: // Dungeon Keeper II return; break; + case DDSCAPS_SYSTEMMEMORY|DDSCAPS_ZBUFFER: + // "Star Wars Shadows of the Empire" through d3d + return; + break; } break; case DDSD_CAPS|DDSD_WIDTH: @@ -1955,6 +1973,10 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion) // Martian Gothic return; break; + case DDSCAPS_VIDEOMEMORY|DDSCAPS_WRITEONLY|DDSCAPS_RESERVED2: + // Empire Earth + return; + break; } break; case DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH: @@ -2036,7 +2058,14 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion) break; case DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PIXELFORMAT: switch (lpddsd->ddsCaps.dwCaps){ - case DDSCAPS_OFFSCREENPLAIN: + case DDSCAPS_OFFSCREENPLAIN|DDSCAPS_3DDEVICE|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM: + // Empire Earth + // tbd + // try + lpddsd->ddsCaps.dwCaps = (DDSCAPS_OFFSCREENPLAIN|DDSCAPS_3DDEVICE|DDSCAPS_SYSTEMMEMORY); + // eotry + return; + break; case DDSCAPS_OFFSCREENPLAIN: // Submarine titans (8BPP) lpddsd->ddsCaps.dwCaps = (DDSCAPS_SYSTEMMEMORY|DDSCAPS_OFFSCREENPLAIN); SetPixFmt(lpddsd); @@ -2054,6 +2083,10 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion) // Wargames Direct3D hw acceleration return; break; + case DDSCAPS_TEXTURE: + // Empire Earth + return; + break; case DDSCAPS_VIDEOMEMORY|DDSCAPS_ZBUFFER: // Martian Gothic lpddsd->ddsCaps.dwCaps = (DDSCAPS_SYSTEMMEMORY|DDSCAPS_ZBUFFER); // working ???? @@ -2074,6 +2107,20 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion) lpddsd->ddsCaps.dwCaps = DDSCAPS_OVERLAY|DDSCAPS_SYSTEMMEMORY; return; break; + case DDSCAPS_SYSTEMMEMORY: + // Star Force Deluxe + lpddsd->ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY; + // SetPixFmt(lpddsd); + return; + break; + case DDSCAPS_TEXTURE|DDSCAPS_VIDEOMEMORY|DDSCAPS_ALLOCONLOAD: + // Star Wars Shadows of the Empire + // seems to work both with/without SetPixFmt, but doesn't like DDSCAPS_SYSTEMMEMORY textures. + // Setting SetPixFmt makes bad alpha transparencies! + //lpddsd->ddsCaps.dwCaps = (DDSCAPS_TEXTURE|DDSCAPS_SYSTEMMEMORY|DDSCAPS_ALLOCONLOAD); + //SetPixFmt(lpddsd); + return; + break; } break; case DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PITCH|DDSD_PIXELFORMAT: @@ -2100,9 +2147,35 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion) sprintf(sMsg, "Flags=%x(%s) Caps=%x(%s)", lpddsd->dwFlags, ExplainFlags(lpddsd->dwFlags), lpddsd->ddsCaps.dwCaps, ExplainDDSCaps(lpddsd->ddsCaps.dwCaps)); MessageBox(0, sMsg, "FixSurfaceCaps unmanaged setting", MB_OK | MB_ICONEXCLAMATION); } -#endif +} - if((lpddsd->dwFlags & (DDSD_WIDTH|DDSD_HEIGHT)) == DDSD_WIDTH) { // buffer surface - no changes +static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion) +{ + // To do: fix Dungeon Keeper II + + // rules of thumb: + // 1) always get rid of DDSCAPS_VIDEOMEMORY caps + // 2) always add DDSCAPS_SYSTEMMEMORY caps + // 3) DDSCAPS_SYSTEMMEMORY is supported from dxversion 4 + // 4) if DDSD_CAPS is not set, ignore caps + // 5) ignore DDSD_CKSRCBLT, .... + // 6) setting a different pixel format in memory requires DDSCAPS_OFFSCREENPLAIN capability + // 7) DDSD_TEXTURESTAGE surfaces may need to adjust fixel format (....???) + + if(!(lpddsd->dwFlags & DDSD_CAPS)) lpddsd->ddsCaps.dwCaps = 0; + + OutTraceD("FixSurfaceCaps: Flags=%x(%s) Caps=%x(%s)\n", + lpddsd->dwFlags, ExplainFlags(lpddsd->dwFlags), lpddsd->ddsCaps.dwCaps, ExplainDDSCaps(lpddsd->ddsCaps.dwCaps)); + + if(dxw.dwFlags3 & ANALYTICMODE) return FixSurfaceCapsAnalytic(lpddsd, dxversion); + + if((lpddsd->dwFlags & (DDSD_WIDTH|DDSD_HEIGHT)) == DDSD_WIDTH) { + // buffer surface - no changes + return; + } + if((lpddsd->dwFlags & (DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE)) == (DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE)){ + // textures, set proper color depth and make no further changes + SetPixFmt(lpddsd); return; } if((lpddsd->dwFlags & DDSD_CAPS) && (lpddsd->ddsCaps.dwCaps & DDSCAPS_ZBUFFER)) { // z-buffer surface - set to memory @@ -2394,8 +2467,6 @@ static HRESULT BuildGenericEmu(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf return res; } - if(ddsd.ddsCaps.dwCaps & DDSCAPS_ZBUFFER) lpDDZBuffer=*lplpdds; - OutTraceD("CreateSurface: created Emu_Generic dds=%x\n", *lplpdds); if(IsDebug) DescribeSurface(*lplpdds, dxversion, "DDSEmu_Generic", __LINE__); // diagnostic hooks .... @@ -2409,6 +2480,7 @@ static HRESULT BuildGenericDir(LPDIRECTDRAW lpdd, CreateSurface_Type pCreateSurf HRESULT res; DumpSurfaceAttributes((LPDDSURFACEDESC)lpddsd, "[Dir Generic]" , __LINE__); + res = (*pCreateSurface)(lpdd, lpddsd, lplpdds, 0); if(res){ if ((dxw.dwFlags1 & SWITCHVIDEOMEMORY) && (res==DDERR_OUTOFVIDEOMEMORY)){ @@ -2483,6 +2555,14 @@ static HRESULT WINAPI extCreateSurface(int dxversion, CreateSurface_Type pCreate memcpy(&ddsd, lpddsd, lpddsd->dwSize); // Copy + // v2.02.38: this is odd: in "Star Force Deluxe" there is no PRIMARY surface, but a surface with + // 0 flags and 0 capabilities serves for this purpose. Is it a side-effect of old ddraw releases? + if((dxversion == 1) && (ddsd.dwFlags == 0)){ // Star Force Deluxe + ddsd.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH; + ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; + if(dxw.VirtualPixelFormat.dwRGBBitCount == 8) ddsd.ddsCaps.dwCaps |= DDSCAPS_PALETTE; + } + // creation of the primary surface.... if(ddsd.dwFlags & DDSD_CAPS && ddsd.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE){ GetHookInfo()->Height=(short)dxw.GetScreenHeight(); @@ -2497,7 +2577,7 @@ static HRESULT WINAPI extCreateSurface(int dxversion, CreateSurface_Type pCreate if (lpDDC) while(lpDDC->Release()); if (lpDDSEmu_Back) while(lpDDSEmu_Back->Release()); if (lpDDSEmu_Prim) while(lpDDSEmu_Prim->Release()); - if (ddsd.dwFlags & DDSD_BACKBUFFERCOUNT) { + if (ddsd.dwFlags & DDSD_BACKBUFFERCOUNT) { // Praetorians !!!! if (lpDDSBack) while(lpDDSBack->Release()); lpBackBufferDD = NULL; } @@ -2574,7 +2654,14 @@ static HRESULT WINAPI extCreateSurface(int dxversion, CreateSurface_Type pCreate return res; } - // if nothing else, it's a generic surface + // if nothing else, it's a generic/zbuffer surface + + if(lpddsd->ddsCaps.dwCaps & DDSCAPS_ZBUFFER) { + lpDDZBuffer=*lplpdds; + DDZBufferCaps = lpddsd->ddsCaps.dwCaps; + OutTraceD("CreateSurface: lpDDZBuffer=%x save ZBUFFER caps=%x(%s)\n", lpDDZBuffer, DDZBufferCaps, ExplainDDSCaps(DDZBufferCaps)); + } + res=BuildGeneric(lpdd, pCreateSurface, lpddsd, dxversion, lplpdds, pu); if(!res) dxw.MarkRegularSurface(*lplpdds); @@ -2617,7 +2704,7 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet dxversion, lpdds, (IsPrim?"(PRIM)":(IsBack ? "(BACK)":"")), lpddsc->dwCaps, ExplainDDSCaps(lpddsc->dwCaps)); #if 0 - if(0 && (lpddsc->dwCaps & DDSCAPS_MIPMAP)){ + if(lpddsc->dwCaps & DDSCAPS_MIPMAP){ OutTraceD("GetAttachedSurface: emulate MIPMAP capability\n"); lpddsc->dwCaps &= ~DDSCAPS_MIPMAP; } @@ -2785,6 +2872,10 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, sprintf(sInfo, " ddbltfx.ROP=%x", lpddbltfx->dwROP); strcat(sLog, sInfo); } + if (dwflags & DDBLT_DEPTHFILL){ + sprintf(sInfo, " ddbltfx.FillDepth=%x", lpddbltfx->dwFillDepth); + strcat(sLog, sInfo); + } } strcat(sLog,"\n"); OutTrace(sLog); @@ -3041,6 +3132,12 @@ HRESULT WINAPI extFlip(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWSURFACE lpddssrc, res=sBlt("Flip", lpdds, NULL, lpddssrc, NULL, DDBLT_WAIT, 0, TRUE); } else{ + //v2.02.38: look for a valid BackBuffer surface + if(!lpDDSBack) lpDDSBack=dxw.GetBackBufferSurface(); + if(!lpDDSBack){ + OutTraceE("Flip: no backbuffer\n"); + return DDERR_INVALIDPARAMS; + } if (dxw.dwFlags2 & BACKBUFATTACH){ RECT NullArea; NullArea.left=NullArea.top=0; @@ -3139,6 +3236,8 @@ HRESULT WINAPI extBltFast(LPDIRECTDRAWSURFACE lpdds, DWORD dwx, DWORD dwy, return ret; } +#define DDPCAPS_INITIALIZE_LEGACY 0x00000008l + HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY lpddpa, LPDIRECTDRAWPALETTE *lplpddp, IUnknown *pu) { @@ -3157,6 +3256,8 @@ HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY return res; } + if (dwflags & ~(DDPCAPS_PRIMARYSURFACE|DDPCAPS_8BIT|DDPCAPS_ALLOW256|DDPCAPS_INITIALIZE_LEGACY)) STOPPER("Palette flags"); + res = (*pCreatePalette)(lpdd, dwflags & ~DDPCAPS_PRIMARYSURFACE, lpddpa, lplpddp, pu); if(res) { if (res) OutTraceD("CreatePalette: res=%x(%s)\n", res, ExplainDDError(res)); @@ -3165,7 +3266,8 @@ HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY HookDDPalette(lplpddp); - if(dwflags & DDPCAPS_PRIMARYSURFACE){ + //if(dwflags & DDPCAPS_PRIMARYSURFACE){ + if(dwflags & DDPCAPS_8BIT){ // v2.02.38 mySetPalette(0, 256, lpddpa); lpDDP = *lplpddp; } @@ -3251,8 +3353,8 @@ HRESULT WINAPI extSetEntries(LPDIRECTDRAWPALETTE lpddp, DWORD dwflags, DWORD dws HRESULT res; dxw.IsGDIPalette=FALSE; - OutTraceD("SetEntries: dwFlags=%x, start=%d, count=%d\n", //GHO: added trace infos - dwflags, dwstart, dwcount); + OutTraceD("SetEntries: lpddp=%x dwFlags=%x, start=%d, count=%d entries=%x\n", //GHO: added trace infos + lpddp, dwflags, dwstart, dwcount, lpentries); res = (*pSetEntries)(lpddp, dwflags, dwstart, dwcount, lpentries); if(res) OutTraceE("SetEntries: ERROR res=%x(%s)\n", res, ExplainDDError(res)); @@ -3831,6 +3933,10 @@ HRESULT WINAPI extReleaseS(LPDIRECTDRAWSURFACE lpdds) dxw.ResetPrimarySurface(); } } + if(lpdds==lpDDSBack) { // v2.02.38 + OutTraceD("Release(S): Clearing lpDDSBack pointer\n"); + lpDDSBack = NULL; + } } return res; } @@ -4016,8 +4122,14 @@ HRESULT WINAPI extGetCapsS(int dxInterface, GetCapsS_Type pGetCapsS, LPDIRECTDRA if ((caps->dwCaps & DDSCAPS_ZBUFFER) || (lpdds == lpDDZBuffer)){ OutTraceD("GetCaps(S%d): fixing ZBUFFER surface\n", dxInterface); IsFixed=TRUE; - caps->dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); - caps->dwCaps &= ~DDSCAPS_SYSTEMMEMORY; // zbuffer surfaces can't be this way (beware: it can be OFFSCREENPLAIN!) + if (DDZBufferCaps & DDSCAPS_SYSTEMMEMORY){ + caps->dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_SYSTEMMEMORY); + caps->dwCaps &= ~(DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); + } + else { + caps->dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); + caps->dwCaps &= ~DDSCAPS_SYSTEMMEMORY; + } } if(IsFixed) OutTraceD("GetCaps(S%d): lpdds=%x FIXED caps=%x(%s)\n", dxInterface, lpdds, caps->dwCaps, ExplainDDSCaps(caps->dwCaps)); @@ -4149,12 +4261,37 @@ HRESULT WINAPI extGetSurfaceDesc(GetSurfaceDesc_Type pGetSurfaceDesc, LPDIRECTDR if (lpddsd->ddsCaps.dwCaps & DDSCAPS_ZBUFFER) { OutTraceD("GetSurfaceDesc: fixing ZBUFFER surface\n"); IsFixed=TRUE; - lpddsd->ddsCaps.dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); - //lpddsd->ddsCaps.dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_VIDEOMEMORY); - lpddsd->ddsCaps.dwCaps &= ~DDSCAPS_SYSTEMMEMORY; // zbuffer surfaces can't be this way + if (DDZBufferCaps & DDSCAPS_SYSTEMMEMORY){ + lpddsd->ddsCaps.dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_SYSTEMMEMORY); + lpddsd->ddsCaps.dwCaps &= ~(DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); + } + else { + lpddsd->ddsCaps.dwCaps |= (DDSCAPS_ZBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); + lpddsd->ddsCaps.dwCaps &= ~DDSCAPS_SYSTEMMEMORY; + } } +#ifdef EXPERIMENTAL_1 + if(1) { + IsFixed=TRUE; + if(lpddsd->ddsCaps.dwCaps & DDSCAPS_BACKBUFFER){ + lpddsd->dwSize = sizeof(DDSURFACEDESC2); + lpddsd->ddsCaps.dwCaps |= DDSCAPS_RESERVED2; + ((LPDDSURFACEDESC2)lpddsd)->ddsCaps.dwCaps2 = DDSCAPS2_RESERVED2; + ((LPDDSURFACEDESC2)lpddsd)->ddsCaps.dwCaps3 = 0; + } + else + if(lpddsd->ddsCaps.dwCaps & DDSCAPS_BACKBUFFER){ + } + else { + lpddsd->ddsCaps.dwCaps |= DDSCAPS_RESERVED2; + ((LPDDSURFACEDESC2)lpddsd)->ddsCaps.dwCaps2 |= DDSCAPS2_RESERVED2; + } + } +#endif + if(IsFixed) LogSurfaceAttributes(lpddsd, "GetSurfaceDesc [FIXED]", __LINE__); + return DD_OK; } diff --git a/dll/dxhelper.cpp b/dll/dxhelper.cpp index e55436d..51f8b05 100644 --- a/dll/dxhelper.cpp +++ b/dll/dxhelper.cpp @@ -401,17 +401,6 @@ char *ExplainFlipFlags(DWORD c) return(eb); } -char *ExplainFlipStatusFlags(DWORD c) -{ - char *ep; - switch(c){ - case DDGFS_CANFLIP: ep="DDGFS_CANFLIP"; break; - case DDGFS_ISFLIPDONE: ep="DDGFS_ISFLIPDONE"; break; - default: ep="unknown"; break; - } - return ep; -} - char *ExplainBltFlags(DWORD c) { static char eb[512]; @@ -467,6 +456,8 @@ char *ExplainBltFastFlags(DWORD c) return(eb); } +#define DDPCAPS_INITIALIZE_LEGACY 0x00000008l + char *ExplainCreatePaletteFlags(DWORD c) { static char eb[256]; @@ -475,7 +466,9 @@ char *ExplainCreatePaletteFlags(DWORD c) if (c & DDPCAPS_4BIT) strcat(eb, "4BIT+"); if (c & DDPCAPS_8BITENTRIES) strcat(eb, "8BITENTRIES+"); if (c & DDPCAPS_8BIT) strcat(eb, "8BIT+"); - if (c & DDPCAPS_INITIALIZE) strcat(eb, "INITIALIZE+"); + //if (c & DDPCAPS_INITIALIZE) strcat(eb, "INITIALIZE+"); + // DDPCAPS_INITIALIZE is obsolete and redefined to 0x0, but that is not the legacy value embedded in assembly! + if (c & DDPCAPS_INITIALIZE_LEGACY) strcat(eb, "INITIALIZE+"); if (c & DDPCAPS_PRIMARYSURFACE) strcat(eb, "PRIMARYSURFACE+"); if (c & DDPCAPS_PRIMARYSURFACELEFT) strcat(eb, "PRIMARYSURFACELEFT+"); if (c & DDPCAPS_ALLOW256) strcat(eb, "ALLOW256+"); @@ -637,6 +630,18 @@ char *ExplainBltStatus(DWORD c) return(eb); } +char *ExplainFlipStatus(DWORD c) +{ + static char *eb; + switch(c) + { + case DDGFS_CANFLIP: eb="DDGFS_CANFLIP"; break; + case DDGFS_ISFLIPDONE: eb="DDGFS_ISFLIPDONE"; break; + default: eb="invalid"; break; + } + return(eb); +} + char *ExplainDDError(DWORD c) { static char *eb; @@ -1492,4 +1497,32 @@ char *ExplainPeekRemoveMsg(DWORD c) if(c & QS_SENDMESSAGE) strcat(eb, "+SENDMESSAGE"); if(c & QS_ALLPOSTMESSAGE) strcat(eb, "+ALLPOSTMESSAGE"); return(eb); -} \ No newline at end of file +} + +char *ExplainGetDCExFlags(DWORD c) +{ + static char eb[128]; + unsigned int l; + strcpy(eb,"DCX_"); + if(c & DCX_WINDOW) strcat(eb, "WINDOW+"); + if(c & DCX_CACHE) strcat(eb, "CACHE+"); + if(c & DCX_PARENTCLIP) strcat(eb, "PARENTCLIP+"); + if(c & DCX_CLIPSIBLINGS) strcat(eb, "CLIPSIBLINGS+"); + if(c & DCX_CLIPCHILDREN) strcat(eb, "CLIPCHILDREN+"); + if(c & DCX_NORESETATTRS) strcat(eb, "NORESETATTRS+"); + if(c & DCX_EXCLUDERGN) strcat(eb, "EXCLUDERGN+"); + if(c & DCX_EXCLUDEUPDATE) strcat(eb, "EXCLUDEUPDATE+"); + if(c & DCX_INTERSECTRGN) strcat(eb, "INTERSECTRGN+"); + if(c & DCX_INTERSECTUPDATE) strcat(eb, "INTERSECTUPDATE+"); + if(c & DCX_VALIDATE) strcat(eb, "VALIDATE+"); + l=strlen(eb); + if (l>strlen("DCX_")) eb[l-1]=0; // delete last '+' if any + else strcpy(eb,"NULL"); + return(eb); +} + + + + + + diff --git a/dll/dxhelper.h b/dll/dxhelper.h index a1b4121..fe9e0c3 100644 --- a/dll/dxhelper.h +++ b/dll/dxhelper.h @@ -13,7 +13,6 @@ extern char *ExplainDDCKeyCaps(DWORD); extern char *ExplainCoopFlags(DWORD); extern char *ExplainPixelFormatFlags(DWORD); extern char *ExplainFlipFlags(DWORD); -extern char *ExplainFlipStatusFlags(DWORD); extern char *ExplainBltFlags(DWORD); extern char *ExplainBltFastFlags(DWORD); extern char *ExplainCreatePaletteFlags(DWORD); @@ -22,6 +21,7 @@ extern char *ExplainStyle(DWORD); extern char *ExplainExStyle(DWORD); extern char *ExplainShowCmd(int); extern char *ExplainBltStatus(DWORD); +extern char *ExplainFlipStatus(DWORD); extern char *ExplainDDError(DWORD); extern char *ExplainWinMessage(DWORD); extern char *ExplainResizing(DWORD); @@ -42,3 +42,4 @@ extern char *ExplainMCIFlags(DWORD, DWORD); extern char *ExplainRegType(DWORD); extern char *ExplainDCType(DWORD); extern char *ExplainPeekRemoveMsg(DWORD); +extern char *ExplainGetDCExFlags(DWORD); diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp index 12a5498..2acefb4 100644 --- a/dll/dxwcore.cpp +++ b/dll/dxwcore.cpp @@ -15,7 +15,6 @@ dxwCore::dxwCore() { // initialization stuff .... FullScreen=FALSE; - if(dxw.dwFlags3 & FULLSCREENONLY) FullScreen=TRUE; SethWnd(NULL); SetScreenSize(); dwMaxDDVersion=7; @@ -60,6 +59,7 @@ void dxwCore::InitTarget(TARGETMAP *target) dwFlags3 = target->flags3; dwFlags4 = target->flags4; dwTFlags = target->tflags; + if(dxw.dwFlags3 & FULLSCREENONLY) FullScreen=TRUE; gsModules = target->module; MaxFPS = target->MaxFPS; CustomOpenGLLib = target->OpenGLLib; @@ -156,8 +156,8 @@ BOOL dxwCore::IsAPrimarySurface(LPDIRECTDRAWSURFACE ps) // treat NULL surface ptr as a non primary if(!ps) return FALSE; for (i=0;i. #include "dxwnd.h" #include "dxwcore.hpp" -#define VERSION "2.02.37" +#define VERSION "2.02.38" #define DDTHREADLOCK 1 @@ -160,7 +160,7 @@ LRESULT CALLBACK HookProc(int ncode, WPARAM wparam, LPARAM lparam) GetModuleFileName(0, name, MAX_PATH); for(i = 0; name[i]; i ++) name[i] = tolower(name[i]); WaitForSingleObject(hMutex, INFINITE); - for(i = 0; pMapping[i].path[0]; i ++){ + for(i = 0; pMapping[i].path[0] && (ifJV6jq(E~inhyv0C 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 yVKd1Z%v%8r_fz})y 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 + + diff --git a/dll/gdi32.cpp b/dll/gdi32.cpp index 4b650f9..c6f5aad 100644 --- a/dll/gdi32.cpp +++ b/dll/gdi32.cpp @@ -530,8 +530,20 @@ UINT WINAPI extGetSystemPaletteEntries(HDC hdc, UINT iStartIndex, UINT nEntries, ret=(*pGDIGetSystemPaletteEntries)(hdc, iStartIndex, nEntries, lppe); OutTraceD("GetSystemPaletteEntries: ret=%d\n", ret); if((ret == 0) && (dxw.dwFlags1 & EMULATESURFACE)) { - OutTraceD("GetSystemPaletteEntries: fixing ret=%d\n", nEntries); + //OutTraceD("GetSystemPaletteEntries: fixing ret=%d\n", nEntries); + //ret = nEntries; + // this seems to build a more reasonable system palette .... + HPALETTE hpal; + hpal=CreateHalftonePalette(NULL); + GetPaletteEntries(hpal, iStartIndex, nEntries, lppe); ret = nEntries; + OutTraceD("GetSystemPaletteEntries: fixing ret=%d\n", ret); + if(IsDebug){ + UINT idx; + OutTraceD("PaletteEntries[%x]= ", nEntries); + for(idx=0; idxWidth, pMode->Height, pMode->RefreshRate, pMode->Format); if(dxw.dwFlags2 & KEEPASPECTRATIO){ pMode->Width=dxw.iSizX; pMode->Height=dxw.iSizY; - OutTraceD("DEBUG: GetDisplayMode: fixed size=(%dx%d)\n", pMode->Width, pMode->Height); + OutTraceD("DEBUG: GetDisplayMode(8): fixed size=(%dx%d)\n", pMode->Width, pMode->Height); + } + return res; +} + +HRESULT WINAPI extGetDisplayMode9(void *lpd3d, UINT iSwapChain, D3DDISPLAYMODE *pMode) +{ + HRESULT res; + res=(*pGetDisplayMode9)(lpd3d, iSwapChain, pMode); + OutTraceD("DEBUG: GetDisplayMode(9): SwapChain=%d size=(%dx%d) RefreshRate=%d Format=%d\n", + iSwapChain, pMode->Width, pMode->Height, pMode->RefreshRate, pMode->Format); + if(dxw.dwFlags2 & KEEPASPECTRATIO){ + pMode->Width=dxw.iSizX; + pMode->Height=dxw.iSizY; + OutTraceD("DEBUG: GetDisplayMode(9): fixed size=(%dx%d)\n", pMode->Width, pMode->Height); } return res; } @@ -703,7 +720,7 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, pReset=NULL; // to avoid assert condition SetHook((void *)(**(DWORD **)ppd3dd + 0), extQueryInterfaceDev8, (void **)&pQueryInterfaceDev8, "QueryInterface(D8)"); SetHook((void *)(**(DWORD **)ppd3dd + 24), extGetDirect3D, (void **)&pGetDirect3D, "GetDirect3D(D8)"); - //SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode, (void **)&pGetDisplayMode, "GetDisplayMode(D8)"); + SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode8, (void **)&pGetDisplayMode8, "GetDisplayMode(D8)"); SetHook((void *)(**(DWORD **)ppd3dd + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D8)"); SetHook((void *)(**(DWORD **)ppd3dd + 56), extReset, (void **)&pReset, "Reset(D8)"); SetHook((void *)(**(DWORD **)ppd3dd + 60), extPresent, (void **)&pPresent, "Present(D8)"); @@ -722,7 +739,7 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, pReset=NULL; // to avoid assert condition SetHook((void *)(**(DWORD **)ppd3dd + 0), extQueryInterfaceDev9, (void **)&pQueryInterfaceDev9, "QueryInterface(D9)"); SetHook((void *)(**(DWORD **)ppd3dd + 24), extGetDirect3D, (void **)&pGetDirect3D, "GetDirect3D(D9)"); - //SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode, (void **)&pGetDisplayMode, "GetDisplayMode(D9)"); + SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)"); SetHook((void *)(**(DWORD **)ppd3dd + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D9)"); SetHook((void *)(**(DWORD **)ppd3dd + 64), extReset, (void **)&pReset, "Reset(D9)"); SetHook((void *)(**(DWORD **)ppd3dd + 68), extPresent, (void **)&pPresent, "Present(D9)"); @@ -810,7 +827,7 @@ HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetyp void *pReset; pReset=NULL; // to avoid assert condition SetHook((void *)(**(DWORD **)ppd3dd + 0), extQueryInterfaceDev9, (void **)&pQueryInterfaceDev9, "QueryInterface(D9)"); - SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode, (void **)&pGetDisplayMode, "GetDisplayMode(D9)"); + SetHook((void *)(**(DWORD **)ppd3dd + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)"); SetHook((void *)(**(DWORD **)ppd3dd + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D9)"); SetHook((void *)(**(DWORD **)ppd3dd + 64), extReset, (void **)&pReset, "Reset(D9)"); SetHook((void *)(**(DWORD **)ppd3dd + 68), extPresent, (void **)&pPresent, "Present(D9)"); @@ -1117,7 +1134,7 @@ HRESULT WINAPI extQueryInterfaceDev9(void *obj, REFIID riid, void** ppvObj) OutTraceD("Device hook for IID_IDirect3DDevice9 interface\n"); pReset=NULL; // to avoid assert condition SetHook((void *)(**(DWORD **)ppvObj + 0), extQueryInterfaceDev9, (void **)&pQueryInterfaceDev9, "QueryInterface(D9)"); - SetHook((void *)(**(DWORD **)ppvObj + 32), extGetDisplayMode, (void **)&pGetDisplayMode, "GetDisplayMode(D9)"); + SetHook((void *)(**(DWORD **)ppvObj + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)"); SetHook((void *)(**(DWORD **)ppvObj + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D9)"); SetHook((void *)(**(DWORD **)ppvObj + 64), extReset, (void **)&pReset, "Reset(D9)"); SetHook((void *)(**(DWORD **)ppvObj + 68), extPresent, (void **)&pPresent, "Present(D9)"); diff --git a/dll/hd3d7.cpp b/dll/hd3d7.cpp index 72f48d5..6960319 100644 --- a/dll/hd3d7.cpp +++ b/dll/hd3d7.cpp @@ -37,6 +37,9 @@ typedef HRESULT (WINAPI *SetViewport_Type)(void *, LPD3DVIEWPORT); typedef HRESULT (WINAPI *GetViewport_Type)(void *, LPD3DVIEWPORT); typedef HRESULT (WINAPI *QueryInterfaceD3_Type)(void *, REFIID, LPVOID *); +typedef HRESULT (WINAPI *D3DInitialize_Type)(void *, LPDIRECT3D , LPGUID, LPD3DDEVICEDESC); +typedef HRESULT (WINAPI *D3DGetCaps_Type)(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDESC); + Initialize_Type pInitialize = NULL; EnumDevices_Type pEnumDevices = NULL; CreateLight_Type pCreateLight = NULL; @@ -51,6 +54,9 @@ SetViewport_Type pSetViewport = NULL; GetViewport_Type pGetViewport = NULL; QueryInterfaceD3_Type pQueryInterfaceD3 = NULL; +D3DInitialize_Type pD3DInitialize = NULL; +D3DGetCaps_Type pD3DGetCaps = NULL; + HRESULT WINAPI extInitialize(void *); HRESULT WINAPI extEnumDevices(void *, LPD3DENUMDEVICESCALLBACK, LPVOID); HRESULT WINAPI extCreateLight(void *, LPDIRECT3DLIGHT *, IUnknown *); @@ -65,6 +71,9 @@ HRESULT WINAPI extSetViewport(void *, LPD3DVIEWPORT); HRESULT WINAPI extGetViewport(void *, LPD3DVIEWPORT); HRESULT WINAPI extQueryInterfaceD3(void *, REFIID, LPVOID *); +HRESULT WINAPI extD3DInitialize(void *, LPDIRECT3D , LPGUID, LPD3DDEVICEDESC); +HRESULT WINAPI extD3DGetCaps(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDESC); + extern char *ExplainDDError(DWORD); int HookDirect3D7(HMODULE module, int version){ @@ -309,7 +318,6 @@ HRESULT WINAPI extDeviceProxy(GUID FAR *lpGuid, LPSTR lpDeviceDescription, LPSTR OutTraceD("EnumDevices: CALLBACK GUID=%x(%s) DeviceDescription=\"%s\", DeviceName=\"%s\", arg=%x\n", lpGuid->Data1, ExplainGUID(lpGuid), lpDeviceDescription, lpDeviceName, ((CallbackArg *)arg)->arg); DumpD3DDevideDesc(lpd3ddd1, "HWDEV"); DumpD3DDevideDesc(lpd3ddd2, "SWDEV"); - HookDirect3DDevice((LPDIRECTDRAW *)lpGuid, 0); res = (*(((CallbackArg *)arg)->cb))(lpGuid, lpDeviceDescription, lpDeviceName, lpd3ddd1, lpd3ddd2, ((CallbackArg *)arg)->arg); OutTraceD("EnumDevices: CALLBACK ret=%x\n", res); return res; @@ -426,8 +434,12 @@ HRESULT WINAPI extCreateDevice2(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE OutTraceE("CreateDevice(D3D2) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); return res; } + else + OutTraceD("CreateDevice(D3D2): lpd3dd=%x\n", lpd3d, *lplpd3dd); // Hook device here ...! + SetHook((void *)(**(DWORD **)lplpd3dd + 12), extD3DInitialize, (void **)&pD3DInitialize, "Initialize(D3D)"); + SetHook((void *)(**(DWORD **)lplpd3dd + 16), extD3DGetCaps, (void **)&pD3DGetCaps, "GetCaps(D3D)"); return res; } @@ -466,16 +478,28 @@ HRESULT WINAPI extCreateDevice3(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE4 return res; } -#if 0 -HRESULT WINAPI extInitialize(void *d3dd, LPDIRECT3D lpd3d, LPGUID lpGuid, LPD3DDEVICEDESC lpd3ddd) +HRESULT WINAPI extD3DInitialize(void *d3dd, LPDIRECT3D lpd3d, LPGUID lpGuid, LPD3DDEVICEDESC lpd3dd) { HRESULT res; - OutTrace("Initialize: d3dd=%x lpd3d=%x GUID=%x lpd3ddd=%x\n", d3dd, lpd3d, lpGuid->Data1, lpd3ddd); - res=(*pInitialize)(d3dd, lpd3d, lpGuid, lpd3ddd); + OutTrace("Initialize: d3dd=%x lpd3d=%x GUID=%x lpd3ddd=%x\n", d3dd, lpd3d, lpGuid->Data1, lpd3dd); + res=(*pD3DInitialize)(d3dd, lpd3d, lpGuid, lpd3dd); if(res) OutTraceE("Initialize ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); + DumpD3DDevideDesc(lpd3dd, "INIT"); return res; } -HRESULT WINAPI extGetCaps(void *d3dd, LPD3DDEVICEDESC,LPD3DDEVICEDESC) + +HRESULT WINAPI extD3DGetCaps(void *d3dd, LPD3DDEVICEDESC lpd3dd ,LPD3DDEVICEDESC lpd3dd2) +{ + HRESULT res; + OutTrace("GetCaps(D3D): d3dd=%x lpd3dd=%x lpd3dd2=%x \n", d3dd, lpd3dd, lpd3dd2); + res=(*pD3DGetCaps)(d3dd, lpd3dd, lpd3dd2); + if(res) OutTraceE("GetCaps(D3D) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); + DumpD3DDevideDesc(lpd3dd, "HWDEV"); + DumpD3DDevideDesc(lpd3dd2, "SWDEV"); + return res; +} + +#if 0 //HRESULT WINAPI extSwapTextureHandles(void *d3dd, LPDIRECT3DTEXTURE,LPDIRECT3DTEXTURE) //HRESULT WINAPI extCreateExecuteBuffer(void *d3dd, LPD3DEXECUTEBUFFERDESC,LPDIRECT3DEXECUTEBUFFER*,IUnknown*) //HRESULT WINAPI extGetStats(void *d3dd, LPD3DSTATS) diff --git a/dll/hddproxy.cpp b/dll/hddproxy.cpp index 3d1ac93..5d20a51 100644 --- a/dll/hddproxy.cpp +++ b/dll/hddproxy.cpp @@ -694,22 +694,22 @@ HRESULT WINAPI extCreatePaletteProxy(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTE -HRESULT WINAPI extGetCapsDProxy(LPDIRECTDRAW lpdd, LPDDCAPS c1, LPDDCAPS c2) -{ - HRESULT res; - OutTraceP("GetCaps(D): PROXED lpdd=%x c1=%x c2=%x\n", lpdd, c1, c2); - res=(*pGetCapsD)(lpdd, c1, c2); - if(res) - OutTraceP("GetCaps(D): ERROR res=%x(%s)\n", res, ExplainDDError(res)); - else { - // to do: a full Caps dump! - OutTraceP("GetCaps(D): "); - if (c1) OutTraceP("hwcaps size=%x ", c1->dwSize); - if (c2) OutTraceP("swcaps size=%x ", c2->dwSize); - OutTraceP("\n"); - } - return res; -} +//HRESULT WINAPI extGetCapsDProxy(LPDIRECTDRAW lpdd, LPDDCAPS c1, LPDDCAPS c2) +//{ +// HRESULT res; +// OutTraceP("GetCaps(D): PROXED lpdd=%x c1=%x c2=%x\n", lpdd, c1, c2); +// res=(*pGetCapsD)(lpdd, c1, c2); +// if(res) +// OutTraceP("GetCaps(D): ERROR res=%x(%s)\n", res, ExplainDDError(res)); +// else { +// // to do: a full Caps dump! +// OutTraceP("GetCaps(D): "); +// if (c1) OutTraceP("hwcaps size=%x ", c1->dwSize); +// if (c2) OutTraceP("swcaps size=%x ", c2->dwSize); +// OutTraceP("\n"); +// } +// return res; +//} HRESULT WINAPI extGetSurfaceFromDCProxy(LPDIRECTDRAW lpdd, HDC hdc, LPDIRECTDRAWSURFACE* lpDDS) { @@ -1186,26 +1186,13 @@ HRESULT WINAPI extGetClipperProxy(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER HRESULT WINAPI extGetFlipStatusProxy(LPDIRECTDRAWSURFACE lpdds, DWORD flags) { -#if 0 HRESULT res; - OutTraceP("GetFlipStatus(S): PROXED lpdds=%x flags=%x(%s)\n", lpdds, flags, ExplainFlipStatusFlags(flags)); + OutTraceP("GetFlipStatus(S): PROXED lpdds=%x flags=%x(%s)\n", lpdds, flags, ExplainFlipStatus(flags)); res=(*pGetFlipStatus)(lpdds, flags); if(res==DDERR_WASSTILLDRAWING) OutTraceP("GetFlipStatus(S): res=%x(%s)\n", res, ExplainDDError(res)); else if(res) OutTraceP("GetFlipStatus(S): ERROR err=%x(%s)\n", res, ExplainDDError(res)); return res; -#else - HRESULT res; - static int DeMux=0; - OutTraceP("GetFlipStatus(S): DELAYED lpdds=%x flags=%x(%s)\n", lpdds, flags, ExplainFlipStatusFlags(flags)); - DeMux = (DeMux + 1) % 10; - res=(*pGetFlipStatus)(lpdds, flags); - if(res==DDERR_WASSTILLDRAWING) OutTraceP("GetFlipStatus(S): res=%x(%s)\n", res, ExplainDDError(res)); - else - if(res) OutTraceP("GetFlipStatus(S): ERROR err=%x(%s)\n", res, ExplainDDError(res)); - if(DeMux) res=DDERR_WASSTILLDRAWING; - return res; -#endif } HRESULT WINAPI extGetOverlayPositionProxy(LPDIRECTDRAWSURFACE lpdds, LPLONG lpl1, LPLONG lpl2) @@ -1710,7 +1697,7 @@ static void HookDDSessionProxy(LPDIRECTDRAW *lplpdd, int dxVersion) // IDIrectDraw::FlipToGDISurface SetHook((void *)(**(DWORD **)lplpdd + 40), extFlipToGDISurfaceProxy, (void **)&pFlipToGDISurface, "FlipToGDISurface(D)"); // IDIrectDraw::GetCaps - SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCapsDProxy, (void **)&pGetCapsD, "GetCaps(D)"); + SetHook((void *)(**(DWORD **)lplpdd + 44), extGetCapsD, (void **)&pGetCapsD, "GetCaps(D)"); // IDIrectDraw::GetDisplayMode SetHook((void *)(**(DWORD **)lplpdd + 48), extGetDisplayModeProxy, (void **)&pGetDisplayMode, "GetDisplayMode(D)"); // IDIrectDraw::GetFourCCCodes diff --git a/dll/hddproxy.h b/dll/hddproxy.h index 992a434..c4f151b 100644 --- a/dll/hddproxy.h +++ b/dll/hddproxy.h @@ -60,7 +60,7 @@ extern HRESULT WINAPI extGetSurfaceDesc4Proxy(LPDIRECTDRAWSURFACE2, LPDDSURFACED extern ULONG WINAPI extAddRefDProxy(LPDIRECTDRAW); extern ULONG WINAPI extCompactProxy(LPDIRECTDRAW); extern HRESULT WINAPI extEnumDisplayModesProxy(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK); -extern HRESULT WINAPI extGetCapsDProxy(LPDIRECTDRAW, LPDDCAPS, LPDDCAPS); +extern HRESULT WINAPI extGetCapsD(LPDIRECTDRAW, LPDDCAPS, LPDDCAPS); extern HRESULT WINAPI extGetFourCCCodesProxy(LPDIRECTDRAW, LPDWORD, LPDWORD); extern HRESULT WINAPI extGetMonitorFrequencyProxy(LPDIRECTDRAW, LPDWORD); extern HRESULT WINAPI extGetScanLineProxy(LPDIRECTDRAW, LPDWORD); diff --git a/dll/syslibs.h b/dll/syslibs.h index dd22ad5..cef33aa 100644 --- a/dll/syslibs.h +++ b/dll/syslibs.h @@ -175,6 +175,8 @@ typedef HWND (WINAPI *SetCapture_Type)(HWND); // Winmm.dll: typedef MCIERROR(WINAPI *mciSendCommand_Type)(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR); typedef DWORD (WINAPI *timeGetTime_Type)(void); +typedef MMRESULT(WINAPI *timeKillEvent_Type)(UINT); +typedef MMRESULT(WINAPI *timeSetEvent_Type)(UINT, UINT, LPTIMECALLBACK, DWORD_PTR, UINT); /* =================================================================== hooked APIs real pointers @@ -352,6 +354,8 @@ DXWEXTERN SetCapture_Type pSetCapture DXWINITIALIZED; // Winmm.dll: DXWEXTERN mciSendCommand_Type pmciSendCommand DXWINITIALIZED; DXWEXTERN timeGetTime_Type ptimeGetTime DXWINITIALIZED; +DXWEXTERN timeKillEvent_Type ptimeKillEvent DXWINITIALIZED; +DXWEXTERN timeSetEvent_Type ptimeSetEvent DXWINITIALIZED; /* =================================================================== hook procedures (possibly more tnan one per each API...) @@ -526,6 +530,8 @@ extern HWND WINAPI extSetCapture(HWND); // Winmm.dll: extern MCIERROR WINAPI extmciSendCommand(MCIDEVICEID, UINT, DWORD_PTR, DWORD_PTR); extern DWORD WINAPI exttimeGetTime(void); +extern MMRESULT WINAPI exttimeSetEvent(UINT, UINT, LPTIMECALLBACK, DWORD_PTR, UINT); +extern MMRESULT WINAPI exttimeKillEvent(UINT); // extern function declaration diff --git a/dll/user32 - Copia.cpp b/dll/user32 - Copia.cpp new file mode 100644 index 0000000..01b9896 --- /dev/null +++ b/dll/user32 - Copia.cpp @@ -0,0 +1,1888 @@ +#define _WIN32_WINNT 0x0600 +#define WIN32_LEAN_AND_MEAN +#define _CRT_SECURE_NO_WARNINGS + +#include +#include +#include "dxwnd.h" +#include "dxwcore.hpp" +#include "syslibs.h" +#include "dxhook.h" +#include "hddraw.h" +#include "dxhelper.h" + +static HookEntry_Type Hooks[]={ + {"UpdateWindow", (FARPROC)NULL, (FARPROC *)&pUpdateWindow, (FARPROC)extUpdateWindow}, + //{"GetWindowPlacement", (FARPROC)NULL, (FARPROC *)&pGetWindowPlacement, (FARPROC)extGetWindowPlacement}, + //{"SetWindowPlacement", (FARPROC)NULL, (FARPROC *)&pSetWindowPlacement, (FARPROC)extSetWindowPlacement}, + {"ChangeDisplaySettingsA", (FARPROC)ChangeDisplaySettingsA, (FARPROC *)&pChangeDisplaySettings, (FARPROC)extChangeDisplaySettings}, + {"ChangeDisplaySettingsExA", (FARPROC)ChangeDisplaySettingsA, (FARPROC *)&pChangeDisplaySettingsEx, (FARPROC)extChangeDisplaySettingsEx}, + {"BeginPaint", (FARPROC)BeginPaint, (FARPROC *)&pBeginPaint, (FARPROC)extBeginPaint}, + {"EndPaint", (FARPROC)EndPaint, (FARPROC *)&pEndPaint, (FARPROC)extEndPaint}, + {"ShowCursor", (FARPROC)ShowCursor, (FARPROC *)&pShowCursor, (FARPROC)extShowCursor}, + {"CreateDialogIndirectParamA", (FARPROC)CreateDialogIndirectParamA, (FARPROC *)&pCreateDialogIndirectParam, (FARPROC)extCreateDialogIndirectParam}, + {"CreateDialogParamA", (FARPROC)CreateDialogParamA, (FARPROC *)&pCreateDialogParam, (FARPROC)extCreateDialogParam}, + {"MoveWindow", (FARPROC)MoveWindow, (FARPROC *)&pMoveWindow, (FARPROC)extMoveWindow}, + {"EnumDisplaySettingsA", (FARPROC)EnumDisplaySettingsA, (FARPROC *)&pEnumDisplaySettings, (FARPROC)extEnumDisplaySettings}, + {"GetClipCursor", (FARPROC)GetClipCursor, (FARPROC*)&pGetClipCursor, (FARPROC)extGetClipCursor}, + {"ClipCursor", (FARPROC)ClipCursor, (FARPROC *)&pClipCursor, (FARPROC)extClipCursor}, + {"FillRect", (FARPROC)NULL, (FARPROC *)&pFillRect, (FARPROC)extFillRect}, + {"FrameRect", (FARPROC)NULL, (FARPROC *)&pFrameRect, (FARPROC)extFrameRect}, + {"DefWindowProcA", (FARPROC)DefWindowProcA, (FARPROC *)&pDefWindowProc, (FARPROC)extDefWindowProc}, + {"CreateWindowExA", (FARPROC)CreateWindowExA, (FARPROC *)&pCreateWindowExA, (FARPROC)extCreateWindowExA}, + {"CreateWindowExW", (FARPROC)CreateWindowExW, (FARPROC *)&pCreateWindowExW, (FARPROC)extCreateWindowExW}, + {"RegisterClassExA", (FARPROC)RegisterClassExA, (FARPROC *)&pRegisterClassExA, (FARPROC)extRegisterClassExA}, + {"GetSystemMetrics", (FARPROC)GetSystemMetrics, (FARPROC *)&pGetSystemMetrics, (FARPROC)extGetSystemMetrics}, + {"GetDesktopWindow", (FARPROC)GetDesktopWindow, (FARPROC *)&pGetDesktopWindow, (FARPROC)extGetDesktopWindow}, + {"TabbedTextOutA", (FARPROC)TabbedTextOutA, (FARPROC *)&pTabbedTextOutA, (FARPROC)extTabbedTextOutA}, + {"CloseWindow", (FARPROC)NULL, (FARPROC *)&pCloseWindow, (FARPROC)extCloseWindow}, + {"DestroyWindow", (FARPROC)NULL, (FARPROC *)&pDestroyWindow, (FARPROC)extDestroyWindow}, + {"SetSysColors", (FARPROC)NULL, (FARPROC *)&pSetSysColors, (FARPROC)extSetSysColors}, + {"SetCapture", (FARPROC)NULL, (FARPROC *)&pSetCapture, (FARPROC)extSetCapture}, + {0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type EmulateHooks[]={ + {"GetDC", (FARPROC)GetDC, (FARPROC *)&pGDIGetDC, (FARPROC)extGDIGetDC}, + //{"GetWindowDC", (FARPROC)GetWindowDC, (FARPROC *)&pGDIGetWindowDC, (FARPROC)extGDIGetDC}, // not ready yet + {"ReleaseDC", (FARPROC)ReleaseDC, (FARPROC *)&pGDIReleaseDC, (FARPROC)extGDIReleaseDC}, + {0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type DDHooks[]={ + {"GetDC", (FARPROC)GetDC, (FARPROC *)&pGDIGetDC, (FARPROC)extDDGetDC}, + {"GetWindowDC", (FARPROC)GetWindowDC, (FARPROC *)&pGDIGetWindowDC, (FARPROC)extDDGetDC}, + {"ReleaseDC", (FARPROC)ReleaseDC, (FARPROC *)&pGDIReleaseDC, (FARPROC)extDDReleaseDC}, + {"InvalidateRect", (FARPROC)InvalidateRect, (FARPROC *)&pInvalidateRect, (FARPROC)extDDInvalidateRect}, + {0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type GDIHooks[]={ + {"GetDC", (FARPROC)GetDC, (FARPROC *)&pGDIGetDC, (FARPROC)extGDIGetDC}, + {"GetDCEx", (FARPROC)NULL, (FARPROC *)&pGDIGetDCEx, (FARPROC)extGDIGetDCEx}, + {"GetWindowDC", (FARPROC)GetWindowDC, (FARPROC *)&pGDIGetWindowDC, (FARPROC)extGDIGetDC}, + {"ReleaseDC", (FARPROC)ReleaseDC, (FARPROC *)&pGDIReleaseDC, (FARPROC)extGDIReleaseDC}, + {"InvalidateRect", (FARPROC)InvalidateRect, (FARPROC *)&pInvalidateRect, (FARPROC)extInvalidateRect}, + {0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type RemapHooks[]={ + {"ScreenToClient", (FARPROC)ScreenToClient, (FARPROC *)&pScreenToClient, (FARPROC)extScreenToClient}, + {"ClientToScreen", (FARPROC)ClientToScreen, (FARPROC *)&pClientToScreen, (FARPROC)extClientToScreen}, + {"GetClientRect", (FARPROC)GetClientRect, (FARPROC *)&pGetClientRect, (FARPROC)extGetClientRect}, + {"GetWindowRect", (FARPROC)GetWindowRect, (FARPROC *)&pGetWindowRect, (FARPROC)extGetWindowRect}, + {"MapWindowPoints", (FARPROC)MapWindowPoints, (FARPROC *)&pMapWindowPoints, (FARPROC)extMapWindowPoints}, + {0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type PeekAllHooks[]={ + {"PeekMessageA", (FARPROC)NULL, (FARPROC *)&pPeekMessage, (FARPROC)extPeekMessage}, + {"PeekMessageW", (FARPROC)NULL, (FARPROC *)&pPeekMessage, (FARPROC)extPeekMessage}, + {0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type MouseHooks[]={ + {"GetCursorPos", (FARPROC)GetCursorPos, (FARPROC *)&pGetCursorPos, (FARPROC)extGetCursorPos}, + {"SetCursor", (FARPROC)SetCursor, (FARPROC *)&pSetCursor, (FARPROC)extSetCursor}, + {"SendMessageA", (FARPROC)SendMessageA, (FARPROC *)&pSendMessageA, (FARPROC)extSendMessage}, // ??? + {"SendMessageW", (FARPROC)SendMessageW, (FARPROC *)&pSendMessageW, (FARPROC)extSendMessage}, // ??? + //{"SetPhysicalCursorPos", NULL, (FARPROC *)&pSetCursor, (FARPROC)extSetCursor}, // ??? + {0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type WinHooks[]={ + {"ShowWindow", (FARPROC)ShowWindow, (FARPROC *)&pShowWindow, (FARPROC)extShowWindow}, + {"SetWindowLongA", (FARPROC)SetWindowLongA, (FARPROC *)&pSetWindowLong, (FARPROC)extSetWindowLong}, + {"GetWindowLongA", (FARPROC)GetWindowLongA, (FARPROC *)&pGetWindowLong, (FARPROC)extGetWindowLong}, + {"SetWindowPos", (FARPROC)SetWindowPos, (FARPROC *)&pSetWindowPos, (FARPROC)extSetWindowPos}, + {"DeferWindowPos", (FARPROC)DeferWindowPos, (FARPROC *)&pGDIDeferWindowPos, (FARPROC)extDeferWindowPos}, + {"CallWindowProcA", (FARPROC)CallWindowProcA, (FARPROC *)&pCallWindowProc, (FARPROC)extCallWindowProc}, + {0, NULL, 0, 0} // terminator +}; + +static HookEntry_Type MouseHooks2[]={ + {"SetCursorPos", (FARPROC)SetCursorPos, (FARPROC *)&pSetCursorPos, (FARPROC)extSetCursorPos}, + {0, NULL, 0, 0} // terminator +}; + +FARPROC Remap_user32_ProcAddress(LPCSTR proc, HMODULE hModule) +{ + FARPROC addr; + if (addr=RemapLibrary(proc, hModule, Hooks)) return addr; + if ((dxw.dwFlags3 & EMULATEDC) || (dxw.dwFlags2 & HOOKGDI) || (dxw.dwFlags1 & MAPGDITOPRIMARY)) + if (addr=RemapLibrary(proc, hModule, EmulateHooks)) return addr; + if (addr=RemapLibrary(proc, hModule, (dxw.dwFlags1 & MAPGDITOPRIMARY) ? DDHooks : GDIHooks)) return addr; + if (dxw.dwFlags1 & CLIENTREMAPPING) + if (addr=RemapLibrary(proc, hModule, RemapHooks)) return addr; + if(dxw.dwFlags1 & MODIFYMOUSE) + if (addr=RemapLibrary(proc, hModule, MouseHooks)) return addr; + if (dxw.dwFlags1 & (PREVENTMAXIMIZE|FIXWINFRAME|LOCKWINPOS|LOCKWINSTYLE)) + if (addr=RemapLibrary(proc, hModule, WinHooks)) return addr; + if((dxw.dwFlags1 & (MODIFYMOUSE|SLOWDOWN|KEEPCURSORWITHIN)) || (dxw.dwFlags2 & KEEPCURSORFIXED)) + if (addr=RemapLibrary(proc, hModule, MouseHooks2)) return addr; + if(dxw.dwFlags3 & PEEKALLMESSAGES) + if (addr=RemapLibrary(proc, hModule, PeekAllHooks)) return addr; + return NULL; +} + +static char *libname = "user32.dll"; + +void HookUser32(HMODULE hModule) +{ + HookLibrary(hModule, Hooks, libname); + if ((dxw.dwFlags3 & EMULATEDC) || (dxw.dwFlags2 & HOOKGDI) || (dxw.dwFlags1 & MAPGDITOPRIMARY)) + HookLibrary(hModule, EmulateHooks, libname); + HookLibrary(hModule, (dxw.dwFlags1 & MAPGDITOPRIMARY) ? DDHooks : GDIHooks, libname); + if (dxw.dwFlags1 & CLIENTREMAPPING) HookLibrary(hModule, RemapHooks, libname); + if(dxw.dwFlags1 & MODIFYMOUSE)HookLibrary(hModule, MouseHooks, libname); + if (dxw.dwFlags1 & (PREVENTMAXIMIZE|FIXWINFRAME|LOCKWINPOS|LOCKWINSTYLE))HookLibrary(hModule, WinHooks, libname); + if((dxw.dwFlags1 & (MODIFYMOUSE|SLOWDOWN|KEEPCURSORWITHIN)) || (dxw.dwFlags2 & KEEPCURSORFIXED)) HookLibrary(hModule, MouseHooks2, libname); + if(dxw.dwFlags3 & PEEKALLMESSAGES) HookLibrary(hModule, PeekAllHooks, libname); + return; +} + +void HookUser32Init() +{ + HookLibInit(Hooks); + HookLibInit(DDHooks); + HookLibInit(RemapHooks); + HookLibInit(MouseHooks); + HookLibInit(WinHooks); + HookLibInit(MouseHooks2); +} + +// -------------------------------------------------------------------------- +// +// globals, externs, static functions... +// +// -------------------------------------------------------------------------- + +// PrimHDC: DC handle of the selected DirectDraw primary surface. NULL when invalid. +HDC PrimHDC=NULL; + +BOOL isWithinDialog=FALSE; +LPRECT lpClipRegion=NULL; +RECT ClipRegion; +int LastCurPosX, LastCurPosY; + +extern GetDC_Type pGetDC; +extern ReleaseDC_Type pReleaseDC; +extern DEVMODE *pSetDevMode; +extern void FixWindowFrame(HWND); +extern LRESULT CALLBACK extChildWindowProc(HWND, UINT, WPARAM, LPARAM); +extern HRESULT WINAPI sBlt(char *, LPDIRECTDRAWSURFACE, LPRECT, LPDIRECTDRAWSURFACE, LPRECT, DWORD, LPDDBLTFX, BOOL); + +extern INT_PTR CALLBACK extDialogWindowProc(HWND, UINT, WPARAM, LPARAM); + +LONG WINAPI MyChangeDisplaySettings(char *fname, DEVMODE *lpDevMode, DWORD dwflags) +{ + HRESULT res; + + // v2.02.32: reset the emulated DC used in EMULATEDC mode + dxw.ResetEmulatedDC(); + + // save desired settings first v.2.1.89 + // v2.1.95 protect when lpDevMode is null (closing game... Jedi Outcast) + // v2.2.23 consider new width/height only when dmFields flags are set. + if(lpDevMode && (lpDevMode->dmFields & (DM_PELSWIDTH | DM_PELSHEIGHT))){ + RECT client; + dxw.SetScreenSize(lpDevMode->dmPelsWidth, lpDevMode->dmPelsHeight); + // v2.02.31: when main win is bigger that expected resolution, you're in windowed fullscreen mode + //(*pGetClientRect)((dxw.dwFlags1 & FIXPARENTWIN) ? dxw.hParentWnd : dxw.GethWnd(), &client); + (*pGetClientRect)(dxw.GethWnd(), &client); + OutTraceD("%s: current hWnd=%x size=(%d,%d)\n", fname, dxw.GethWnd(), client.right, client.bottom); + if((client.right>=(LONG)lpDevMode->dmPelsWidth) && (client.bottom>=(LONG)lpDevMode->dmPelsHeight)) { + OutTraceD("%s: entering FULLSCREEN mode\n", fname); + dxw.SetFullScreen(TRUE); + } + } + + if ((dwflags==0 || dwflags==CDS_FULLSCREEN) && lpDevMode){ + if (dxw.dwFlags1 & EMULATESURFACE || !(lpDevMode->dmFields & DM_BITSPERPEL)){ + OutTraceD("%s: BYPASS res=DISP_CHANGE_SUCCESSFUL\n", fname); + return DISP_CHANGE_SUCCESSFUL; + } + else{ + DEVMODE NewMode; + if(dwflags==CDS_FULLSCREEN) dwflags=0; // no FULLSCREEN + EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &NewMode); + OutTraceD("ChangeDisplaySettings: CURRENT wxh=(%dx%d) BitsPerPel=%d -> %d\n", + NewMode.dmPelsWidth, NewMode.dmPelsHeight, NewMode.dmBitsPerPel, + lpDevMode->dmBitsPerPel); + NewMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; + NewMode.dmBitsPerPel = lpDevMode->dmBitsPerPel; + res=(*pChangeDisplaySettings)(&NewMode, 0); + if(res) OutTraceE("ChangeDisplaySettings: ERROR err=%d at %d\n", GetLastError(), __LINE__); + return res; + } + } + else + return (*pChangeDisplaySettings)(lpDevMode, dwflags); +} + +void dxwFixWindowPos(char *ApiName, HWND hwnd, LPARAM lParam) +{ + LPWINDOWPOS wp; + int MaxX, MaxY; + wp = (LPWINDOWPOS)lParam; + MaxX = dxw.iSizX; + MaxY = dxw.iSizY; + if (!MaxX) MaxX = dxw.GetScreenWidth(); + if (!MaxY) MaxY = dxw.GetScreenHeight(); + static int iLastCX, iLastCY; + static int BorderX=-1; + static int BorderY=-1; + int cx, cy; + + OutTraceD("%s: GOT hwnd=%x pos=(%d,%d) dim=(%d,%d) Flags=%x(%s)\n", + ApiName, hwnd, wp->x, wp->y, wp->cx, wp->cy, wp->flags, ExplainWPFlags(wp->flags)); + + if (dxw.dwFlags1 & PREVENTMAXIMIZE){ + int UpdFlag = 0; + + if(wp->cx>MaxX) { wp->cx=MaxX; UpdFlag=1; } + if(wp->cy>MaxY) { wp->cy=MaxY; UpdFlag=1; } + if (UpdFlag) + OutTraceD("%s: SET max dim=(%d,%d)\n", ApiName, wp->cx, wp->cy); + } + + if ((wp->flags & (SWP_NOMOVE|SWP_NOSIZE))==(SWP_NOMOVE|SWP_NOSIZE)) return; //v2.02.13 + + if ((dxw.dwFlags1 & LOCKWINPOS) && dxw.IsFullScreen() && (hwnd==dxw.GethWnd())){ + extern void CalculateWindowPos(HWND, DWORD, DWORD, LPWINDOWPOS); + CalculateWindowPos(hwnd, MaxX, MaxY, wp); + OutTraceD("%s: LOCK pos=(%d,%d) dim=(%d,%d)\n", ApiName, wp->x, wp->y, wp->cx, wp->cy); + } + + if ((dxw.dwFlags2 & KEEPASPECTRATIO) && dxw.IsFullScreen() && (hwnd==dxw.GethWnd())){ + // note: while keeping aspect ration, resizing from one corner doesn't tell + // which coordinate is prevalent to the other. We made an arbitrary choice. + // note: v2.1.93: compensation must refer to the client area, not the wp + // window dimensions that include the window borders. + if(BorderX==-1){ + RECT client, full; + (*pGetClientRect)(hwnd, &client); + (*pGetWindowRect)(hwnd, &full); + BorderX= full.right - full.left - client.right; + BorderY= full.bottom - full.top - client.bottom; + OutTraceD("%s: KEEPASPECTRATIO window borders=(%d,%d)\n", ApiName, BorderX, BorderY); + } + extern LRESULT LastCursorPos; + switch (LastCursorPos){ + case HTBOTTOM: + case HTTOP: + case HTBOTTOMLEFT: + case HTBOTTOMRIGHT: + case HTTOPLEFT: + case HTTOPRIGHT: + cx = BorderX + ((wp->cy - BorderY) * dxw.GetScreenWidth()) / dxw.GetScreenHeight(); + if(cx!=wp->cx){ + OutTraceD("%s: KEEPASPECTRATIO adjusted cx=%d->%d\n", ApiName, wp->cx, cx); + wp->cx = cx; + } + break; + case HTLEFT: + case HTRIGHT: + cy = BorderY + ((wp->cx - BorderX) * dxw.GetScreenHeight()) / dxw.GetScreenWidth(); + if(cy!=wp->cy){ + OutTraceD("%s: KEEPASPECTRATIO adjusted cy=%d->%d\n", ApiName, wp->cy, cy); + wp->cy = cy; + } + break; + } + } + + iLastCX= wp->cx; + iLastCY= wp->cy; +} + +void dxwFixMinMaxInfo(char *ApiName, HWND hwnd, LPARAM lParam) +{ + if (dxw.dwFlags1 & PREVENTMAXIMIZE){ + LPMINMAXINFO lpmmi; + lpmmi=(LPMINMAXINFO)lParam; + OutTraceD("%s: GOT MaxPosition=(%d,%d) MaxSize=(%d,%d)\n", ApiName, + lpmmi->ptMaxPosition.x, lpmmi->ptMaxPosition.y, lpmmi->ptMaxSize.x, lpmmi->ptMaxSize.y); + lpmmi->ptMaxPosition.x=0; + lpmmi->ptMaxPosition.y=0; + if(pSetDevMode){ + lpmmi->ptMaxSize.x = pSetDevMode->dmPelsWidth; + lpmmi->ptMaxSize.y = pSetDevMode->dmPelsHeight; + } + else{ + lpmmi->ptMaxSize.x = dxw.GetScreenWidth(); + lpmmi->ptMaxSize.y = dxw.GetScreenHeight(); + } + OutTraceD("%s: SET PREVENTMAXIMIZE MaxPosition=(%d,%d) MaxSize=(%d,%d)\n", ApiName, + lpmmi->ptMaxPosition.x, lpmmi->ptMaxPosition.y, lpmmi->ptMaxSize.x, lpmmi->ptMaxSize.y); + } + // v2.1.75: added logic to fix win coordinates to selected ones. + // fixes the problem with "Achtung Spitfire", that can't be managed through PREVENTMAXIMIZE flag. + if (dxw.dwFlags1 & LOCKWINPOS){ + LPMINMAXINFO lpmmi; + lpmmi=(LPMINMAXINFO)lParam; + OutTraceD("%s: GOT MaxPosition=(%d,%d) MaxSize=(%d,%d)\n", ApiName, + lpmmi->ptMaxPosition.x, lpmmi->ptMaxPosition.y, lpmmi->ptMaxSize.x, lpmmi->ptMaxSize.y); + lpmmi->ptMaxPosition.x=dxw.iPosX; + lpmmi->ptMaxPosition.y=dxw.iPosY; + lpmmi->ptMaxSize.x = dxw.iSizX ? dxw.iSizX : dxw.GetScreenWidth(); + lpmmi->ptMaxSize.y = dxw.iSizY ? dxw.iSizY : dxw.GetScreenHeight(); + OutTraceD("%s: SET LOCKWINPOS MaxPosition=(%d,%d) MaxSize=(%d,%d)\n", ApiName, + lpmmi->ptMaxPosition.x, lpmmi->ptMaxPosition.y, lpmmi->ptMaxSize.x, lpmmi->ptMaxSize.y); + } +} + +static LRESULT WINAPI FixWindowProc(char *ApiName, HWND hwnd, UINT Msg, WPARAM wParam, LPARAM *lpParam) +{ + LPARAM lParam; + + lParam=*lpParam; + OutTraceW("%s: hwnd=%x msg=[0x%x]%s(%x,%x)\n", + ApiName, hwnd, Msg, ExplainWinMessage(Msg), wParam, lParam); + + switch(Msg){ + case WM_ERASEBKGND: + OutTraceD("%s: prevent erase background\n", ApiName); + return 1; // 1=erased + break; // useless + case WM_GETMINMAXINFO: + dxwFixMinMaxInfo(ApiName, hwnd, lParam); + break; + case WM_WINDOWPOSCHANGING: + case WM_WINDOWPOSCHANGED: + dxwFixWindowPos(ApiName, hwnd, lParam); + break; + case WM_STYLECHANGING: + case WM_STYLECHANGED: + dxw.FixStyle(ApiName, hwnd, wParam, lParam); + break; + case WM_SIZE: + if ((dxw.dwFlags1 & LOCKWINPOS) && dxw.IsFullScreen()) return 0; + if (dxw.dwFlags1 & PREVENTMAXIMIZE){ + if ((wParam == SIZE_MAXIMIZED)||(wParam == SIZE_MAXSHOW)){ + OutTraceD("%s: prevent screen SIZE to fullscreen wparam=%d(%s) size=(%d,%d)\n", ApiName, + wParam, ExplainResizing(wParam), HIWORD(lParam), LOWORD(lParam)); + return 0; // checked + //lParam = MAKELPARAM(dxw.GetScreenWidth(), dxw.GetScreenHeight()); + //OutTraceD("%s: updated SIZE wparam=%d(%s) size=(%d,%d)\n", ApiName, + // wParam, ExplainResizing(wParam), HIWORD(lParam), LOWORD(lParam)); + } + } + break; + default: + break; + } + + // marker to run hooked function + return(-1); +} + +static POINT FixMessagePt(HWND hwnd, POINT point) +{ + RECT rect; + static POINT curr; + curr=point; + + if(!(*pScreenToClient)(hwnd, &curr)){ + OutTraceE("ScreenToClient ERROR=%d hwnd=%x at %d\n", GetLastError(), hwnd, __LINE__); + curr.x = curr.y = 0; + } + + if (!(*pGetClientRect)(hwnd, &rect)) { + OutTraceE("GetClientRect ERROR=%d hwnd=%x at %d\n", GetLastError(), hwnd, __LINE__); + curr.x = curr.y = 0; + } + +#ifdef ISDEBUG + if(IsDebug) OutTrace("FixMessagePt point=(%d,%d) hwnd=%x win pos=(%d,%d) size=(%d,%d)\n", + point.x, point.y, hwnd, point.x-curr.x, point.y-curr.y, rect.right, rect.bottom); +#endif + + if (curr.x < 0) curr.x=0; + if (curr.y < 0) curr.y=0; + if (curr.x > rect.right) curr.x=rect.right; + if (curr.y > rect.bottom) curr.y=rect.bottom; + if (rect.right) curr.x = (curr.x * dxw.GetScreenWidth()) / rect.right; + if (rect.bottom) curr.y = (curr.y * dxw.GetScreenHeight()) / rect.bottom; + + return curr; +} + +// -------------------------------------------------------------------------- +// +// user32 API hookers +// +// -------------------------------------------------------------------------- + +BOOL WINAPI extDDInvalidateRect(HWND hwnd, RECT *lpRect, BOOL bErase) +{ + if(lpRect) + OutTraceD("InvalidateRect: hwnd=%x rect=(%d,%d)-(%d,%d) erase=%x\n", + hwnd, lpRect->left, lpRect->top, lpRect->right, lpRect->bottom, bErase); + else + OutTraceD("InvalidateRect: hwnd=%x rect=NULL erase=%x\n", + hwnd, bErase); + + return (*pInvalidateRect)(hwnd, NULL, bErase); +} + +BOOL WINAPI extInvalidateRect(HWND hwnd, RECT *lpRect, BOOL bErase) +{ + if(lpRect) + OutTraceD("InvalidateRect: hwnd=%x rect=(%d,%d)-(%d,%d) erase=%x\n", + hwnd, lpRect->left, lpRect->top, lpRect->right, lpRect->bottom, bErase); + else + OutTraceD("InvalidateRect: hwnd=%x rect=NULL erase=%x\n", + hwnd, bErase); + + return (*pInvalidateRect)(hwnd, NULL, bErase); +} + +BOOL WINAPI extShowWindow(HWND hwnd, int nCmdShow) +{ + BOOL res; + + OutTraceD("ShowWindow: hwnd=%x, CmdShow=%x(%s)\n", hwnd, nCmdShow, ExplainShowCmd(nCmdShow)); + if (dxw.dwFlags1 & PREVENTMAXIMIZE){ + if(nCmdShow==SW_MAXIMIZE){ + OutTraceD("ShowWindow: suppress maximize\n"); + nCmdShow=SW_SHOWNORMAL; + } + } + + res=(*pShowWindow)(hwnd, nCmdShow); + + return res; +} + +LONG WINAPI extGetWindowLong(HWND hwnd, int nIndex) +{ + LONG res; + + res=(*pGetWindowLong)(hwnd, nIndex); + + OutTraceD("GetWindowLong: hwnd=%x, Index=%x(%s) res=%x\n", hwnd, nIndex, ExplainSetWindowIndex(nIndex), res); + + if(nIndex==GWL_WNDPROC){ + WNDPROC wp; + wp=WhndGetWindowProc(hwnd); + OutTraceD("GetWindowLong: remapping WindowProc res=%x -> %x\n", res, (LONG)wp); + if(wp) res=(LONG)wp; // if not found, don't alter the value. + } + + return res; +} + +LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong) +{ + LONG res; + + OutTraceD("SetWindowLong: hwnd=%x, Index=%x(%s) Val=%x\n", + hwnd, nIndex, ExplainSetWindowIndex(nIndex), dwNewLong); + + //if(!hwnd) hwnd=dxw.GethWnd(); + + if (dxw.dwFlags1 & LOCKWINSTYLE){ + if(nIndex==GWL_STYLE){ + OutTraceD("SetWindowLong: Lock GWL_STYLE=%x\n", dwNewLong); + //return 1; + return (*pGetWindowLong)(hwnd, nIndex); + } + if(nIndex==GWL_EXSTYLE){ + OutTraceD("SetWindowLong: Lock GWL_EXSTYLE=%x\n", dwNewLong); + //return 1; + return (*pGetWindowLong)(hwnd, nIndex); + } + } + + if (dxw.dwFlags1 & PREVENTMAXIMIZE){ + if(nIndex==GWL_STYLE){ + dwNewLong &= ~WS_MAXIMIZE; + if(dxw.IsDesktop(hwnd)){ + OutTraceD("SetWindowLong: GWL_STYLE %x suppress MAXIMIZE\n", dwNewLong); + dwNewLong |= WS_OVERLAPPEDWINDOW; + dwNewLong &= ~(WS_DLGFRAME|WS_MAXIMIZE|WS_VSCROLL|WS_HSCROLL|WS_CLIPSIBLINGS); + } + } + // v2.02.32: disable topmost for main window only + if(dxw.IsDesktop(hwnd) && (nIndex==GWL_EXSTYLE)){ + OutTraceD("SetWindowLong: GWL_EXSTYLE %x suppress TOPMOST\n", dwNewLong); + dwNewLong = dwNewLong & ~(WS_EX_TOPMOST); + } + } + + if (dxw.dwFlags1 & FIXWINFRAME){ + if((nIndex==GWL_STYLE) && !(dwNewLong & WS_CHILD)){ + OutTraceD("SetWindowLong: GWL_STYLE %x force OVERLAPPEDWINDOW\n", dwNewLong); + dwNewLong |= WS_OVERLAPPEDWINDOW; + dwNewLong &= ~WS_CLIPSIBLINGS; + } + } + + if (nIndex==GWL_WNDPROC){ + WNDPROC lres; + WNDPROC OldProc; + // GPL fix + if(dxw.IsRealDesktop(hwnd)) { + hwnd=dxw.GethWnd(); + OutTraceD("SetWindowLong: DESKTOP hwnd, FIXING hwnd=%x\n",hwnd); + } + // end of GPL fix + + OldProc = (WNDPROC)(*pGetWindowLong)(hwnd, GWL_WNDPROC); + if(OldProc==extWindowProc) OldProc=WhndGetWindowProc(hwnd); + WhndStackPush(hwnd, (WNDPROC)dwNewLong); + res=(LONG)OldProc; + SetLastError(0); + lres=(WNDPROC)(*pSetWindowLong)(hwnd, GWL_WNDPROC, (LONG)extWindowProc); + if(!lres && GetLastError())OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__); + } + else { + res=(*pSetWindowLong)(hwnd, nIndex, dwNewLong); + } + + OutTraceD("SetWindowLong: hwnd=%x, nIndex=%x, Val=%x, res=%x\n", hwnd, nIndex, dwNewLong, res); + return res; +} + +BOOL WINAPI extSetWindowPos(HWND hwnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags) +{ + BOOL res; + + OutTraceD("SetWindowPos: hwnd=%x%s pos=(%d,%d) dim=(%d,%d) Flags=%x\n", + hwnd, dxw.IsFullScreen()?"(FULLSCREEN)":"", X, Y, cx, cy, uFlags); + + //if ((hwnd != dxw.GethWnd()) || !dxw.IsFullScreen()){ + if (!dxw.IsDesktop(hwnd) || !dxw.IsFullScreen()){ + // just proxy + res=(*pSetWindowPos)(hwnd, hWndInsertAfter, X, Y, cx, cy, uFlags); + if(!res)OutTraceE("SetWindowPos: ERROR err=%d at %d\n", GetLastError(), __LINE__); + return res; + } + + if ((dxw.dwFlags1 & LOCKWINPOS) && dxw.IsFullScreen()){ + // Note: any attempt to change the window position, no matter where and how, through the + // SetWindowPos API is causing resizing to the default 1:1 pixed size in Commandos. + // in such cases, there is incompatibility between LOCKWINPOS and LOCKWINSTYLE. + OutTraceD("SetWindowPos: locked position\n"); + return 1; + } + + if (dxw.dwFlags1 & PREVENTMAXIMIZE){ + int UpdFlag =0; + int MaxX, MaxY; + MaxX = dxw.iSizX; + MaxY = dxw.iSizY; + if (!MaxX) MaxX = dxw.GetScreenWidth(); + if (!MaxY) MaxY = dxw.GetScreenHeight(); + if(cx>MaxX) { cx=MaxX; UpdFlag=1; } + if(cy>MaxY) { cy=MaxY; UpdFlag=1; } + if (UpdFlag) + OutTraceD("SetWindowPos: using max dim=(%d,%d)\n", cx, cy); + } + + // useful??? to be demonstrated.... + // when altering main window in fullscreen mode, fix the coordinates for borders + DWORD dwCurStyle; + RECT rect; + rect.top=rect.left=0; + rect.right=cx; rect.bottom=cy; + dwCurStyle=(*pGetWindowLong)(hwnd, GWL_STYLE); + AdjustWindowRect(&rect, dwCurStyle, FALSE); + cx=rect.right; cy=rect.bottom; + OutTraceD("SetWindowPos: main form hwnd=%x fixed size=(%d,%d)\n", hwnd, cx, cy); + + res=(*pSetWindowPos)(hwnd, hWndInsertAfter, X, Y, cx, cy, uFlags); + if(!res)OutTraceE("SetWindowPos: ERROR err=%d at %d\n", GetLastError(), __LINE__); + return res; +} + +HDWP WINAPI extDeferWindowPos(HDWP hWinPosInfo, HWND hwnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags) +{ + // v2.02.31: heavily used by "Imperialism II" !!! + HDWP res; + + OutTraceD("DeferWindowPos: hwnd=%x%s pos=(%d,%d) dim=(%d,%d) Flags=%x\n", + hwnd, dxw.IsFullScreen()?"(FULLSCREEN)":"", X, Y, cx, cy, uFlags); + + if(dxw.IsFullScreen()){ + dxw.MapClient(&X, &Y, &cx, &cy); + OutTraceD("DeferWindowPos: remapped pos=(%d,%d) dim=(%d,%d)\n", X, Y, cx, cy); + } + + res=(*pGDIDeferWindowPos)(hWinPosInfo, hwnd, hWndInsertAfter, X, Y, cx, cy, uFlags); + if(!res)OutTraceE("DeferWindowPos: ERROR err=%d at %d\n", GetLastError(), __LINE__); + return res; +} + +LRESULT WINAPI extSendMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) +{ + LRESULT ret; + OutTraceW("SendMessage: hwnd=%x WinMsg=[0x%x]%s(%x,%x)\n", + hwnd, Msg, ExplainWinMessage(Msg), wParam, lParam); + + //if(Msg==WM_NCDESTROY) return 1; + + if(dxw.dwFlags1 & MODIFYMOUSE){ + switch (Msg){ + case WM_MOUSEMOVE: + case WM_MOUSEWHEEL: + case WM_LBUTTONDOWN: + case WM_LBUTTONUP: + case WM_LBUTTONDBLCLK: + case WM_RBUTTONDOWN: + case WM_RBUTTONUP: + case WM_RBUTTONDBLCLK: + case WM_MBUTTONDOWN: + case WM_MBUTTONUP: + case WM_MBUTTONDBLCLK: + // revert here the WindowProc mouse correction + POINT prev, curr; + RECT rect; + prev.x = LOWORD(lParam); + prev.y = HIWORD(lParam); + (*pGetClientRect)(dxw.GethWnd(), &rect); + curr.x = (prev.x * rect.right) / dxw.GetScreenWidth(); + curr.y = (prev.y * rect.bottom) / dxw.GetScreenHeight(); + if (Msg == WM_MOUSEWHEEL){ // v2.02.33 mousewheel fix + POINT upleft={0,0}; + (*pClientToScreen)(dxw.GethWnd(), &upleft); + curr = dxw.AddCoordinates(curr, upleft); + } + lParam = MAKELPARAM(curr.x, curr.y); + OutTraceC("SendMessage: hwnd=%x pos XY=(%d,%d)->(%d,%d)\n", hwnd, prev.x, prev.y, curr.x, curr.y); + break; + default: + break; + } + } + ret=(*pSendMessageA)(hwnd, Msg, wParam, lParam); + OutTraceW("SendMessage: lresult=%x\n", ret); + return ret; +} + +HCURSOR WINAPI extSetCursor(HCURSOR hCursor) +{ + HCURSOR ret; + + ret=(*pSetCursor)(hCursor); + OutTraceD("GDI.SetCursor: Cursor=%x, ret=%x\n", hCursor, ret); + //MessageBox(0, "SelectPalette", "GDI32.dll", MB_OK | MB_ICONEXCLAMATION); + return ret; +} + +BOOL WINAPI extGetCursorPos(LPPOINT lppoint) +{ + HRESULT res; + static int PrevX, PrevY; + POINT prev; + + if(dxw.dwFlags1 & SLOWDOWN) dxw.DoSlow(2); + + if (pGetCursorPos) { + res=(*pGetCursorPos)(lppoint); + } + else { + lppoint->x =0; lppoint->y=0; + res=1; + } + + prev=*lppoint; + *lppoint=dxw.ScreenToClient(*lppoint); + *lppoint=dxw.FixCursorPos(*lppoint); + GetHookInfo()->CursorX=(short)lppoint->x; + GetHookInfo()->CursorY=(short)lppoint->y; + OutTraceC("GetCursorPos: FIXED pos=(%d,%d)->(%d,%d)\n", prev.x, prev.y, lppoint->x, lppoint->y); + + return res; +} + +BOOL WINAPI extSetCursorPos(int x, int y) +{ + BOOL res; + int PrevX, PrevY; + + PrevX=x; + PrevY=y; + + if(dxw.dwFlags2 & KEEPCURSORFIXED) { + OutTraceC("SetCursorPos: FIXED pos=(%d,%d)\n", x, y); + LastCurPosX=x; + LastCurPosY=y; + return 1; + } + + if(dxw.dwFlags1 & SLOWDOWN) dxw.DoSlow(2); + + if(dxw.dwFlags1 & KEEPCURSORWITHIN){ + // Intercept SetCursorPos outside screen boundaries (used as Cursor OFF in some games) + if ((y<0)||(y>=(int)dxw.GetScreenHeight())||(x<0)||(x>=(int)dxw.GetScreenWidth())) return 1; + } + + if(dxw.dwFlags1 & MODIFYMOUSE){ + POINT cur; + RECT rect; + + // find window metrics + if (!(*pGetClientRect)(dxw.GethWnd(), &rect)) { + // report error and ignore ... + OutTraceE("GetClientRect(%x) ERROR %d at %d\n", dxw.GethWnd(), GetLastError(), __LINE__); + return 0; + } + + x= x * rect.right / dxw.GetScreenWidth(); + y= y * rect.bottom / dxw.GetScreenHeight(); + + // check for boundaries (???) + if (x >= rect.right) x=rect.right-1; + if (x<0) x=0; + if (y >= rect.bottom) y=rect.bottom-1; + if (y<0) y=0; + + // make it screen absolute + cur.x = x; + cur.y = y; + if (!(*pClientToScreen)(dxw.GethWnd(), &cur)) { + OutTraceE("ClientToScreen(%x) ERROR %d at %d\n", dxw.GethWnd(), GetLastError(), __LINE__); + return 0; + } + x = cur.x; + y = cur.y; + } + + res=0; + if (pSetCursorPos) res=(*pSetCursorPos)(x,y); + + OutTraceC("SetCursorPos: res=%x XY=(%d,%d)->(%d,%d)\n",res, PrevX, PrevY, x, y); + return res; +} + +BOOL WINAPI extPeekMessage(LPMSG lpMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg) +{ + BOOL res; + + res=(*pPeekMessage)(lpMsg, hwnd, 0, 0, (wRemoveMsg & 0x000F)); + + OutTraceW("PeekMessage: ANY lpmsg=%x hwnd=%x filter=(%x-%x) remove=%x(%s) msg=%x(%s) wparam=%x, lparam=%x pt=(%d,%d) res=%x\n", + lpMsg, lpMsg->hwnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg, ExplainPeekRemoveMsg(wRemoveMsg), + lpMsg->message, ExplainWinMessage(lpMsg->message & 0xFFFF), + lpMsg->wParam, lpMsg->lParam, lpMsg->pt.x, lpMsg->pt.y, res); + + return res; +} + +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()){ + *lppoint = dxw.AddCoordinates(*lppoint, dxw.ClientOffset(hwnd)); + OutTraceB("ClientToScreen: FIXED point=(%d,%d)\n", lppoint->x, lppoint->y); + res=TRUE; + } + else { + res=(*pClientToScreen)(hwnd, lppoint); + } + return res; +} + +BOOL WINAPI extScreenToClient(HWND hwnd, LPPOINT lppoint) +{ + // v2.02.10: fully revised to handle scaled windows + 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()){ + *lppoint = dxw.SubCoordinates(*lppoint, dxw.ClientOffset(hwnd)); + OutTraceB("ScreenToClient: FIXED point=(%d,%d)\n", lppoint->x, lppoint->y); + res=TRUE; + } + else { + res=(*pScreenToClient)(hwnd, lppoint); + } + return res; +} + +BOOL WINAPI extGetClientRect(HWND hwnd, LPRECT lpRect) +{ + BOOL ret; + OutTraceB("GetClientRect: whnd=%x FullScreen=%x\n", hwnd, dxw.IsFullScreen()); + + if(!lpRect) return 0; + + // proxed call + ret=(*pGetClientRect)(hwnd, lpRect); + 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; + 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); + } + + return ret; +} + +int WINAPI extMapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints) +{ + UINT pi; + int ret; + // a rarely used API, but responsible for a painful headache: needs hooking for "Commandos 2", "Alien Nations". + + OutTraceD("MapWindowPoints: hWndFrom=%x%s hWndTo=%x%s cPoints=%d FullScreen=%x\n", + hWndFrom, dxw.IsDesktop(hWndFrom)?"(DESKTOP)":"", + hWndTo, dxw.IsDesktop(hWndTo)?"(DESKTOP)":"", + cPoints, dxw.IsFullScreen()); + if(IsDebug){ + OutTrace("Points: "); + for(pi=0; pi>16, ret&0x0000FFFF); + return ret; +} + +HWND WINAPI extGetDesktopWindow(void) +{ + // V2.1.73: correct ??? + HWND res; + + OutTraceD("GetDesktopWindow: FullScreen=%x\n", dxw.IsFullScreen()); + if (dxw.IsFullScreen()){ + OutTraceD("GetDesktopWindow: returning main window hwnd=%x\n", dxw.GethWnd()); + return dxw.GethWnd(); + } + else{ + res=(*pGetDesktopWindow)(); + OutTraceD("GetDesktopWindow: returning desktop window hwnd=%x\n", res); + return res; + } +} + +int WINAPI extGetSystemMetrics(int nindex) +{ + HRESULT res; + + res=(*pGetSystemMetrics)(nindex); + OutTraceD("GetSystemMetrics: index=%x(%s), res=%d\n", nindex, ExplainsSystemMetrics(nindex), res); + + // if you have a bypassed setting, use it first! + if(pSetDevMode){ + switch(nindex){ + case SM_CXFULLSCREEN: + case SM_CXSCREEN: + case SM_CXVIRTUALSCREEN: // v2.02.31 + res = pSetDevMode->dmPelsWidth; + OutTraceD("GetDeviceCaps: fix HORZRES cap=%d\n", res); + return res; + case SM_CYFULLSCREEN: + case SM_CYSCREEN: + case SM_CYVIRTUALSCREEN: // v2.02.31 + res = pSetDevMode->dmPelsHeight; + OutTraceD("GetDeviceCaps: fix VERTRES cap=%d\n", res); + return res; + } + } + + switch(nindex){ + case SM_CXFULLSCREEN: + case SM_CXSCREEN: + case SM_CXVIRTUALSCREEN: // v2.02.31 + res= dxw.GetScreenWidth(); + OutTraceD("GetSystemMetrics: fix SM_CXSCREEN=%d\n", res); + break; + case SM_CYFULLSCREEN: + case SM_CYSCREEN: + case SM_CYVIRTUALSCREEN: // v2.02.31 + res= dxw.GetScreenHeight(); + OutTraceD("GetSystemMetrics: fix SM_CYSCREEN=%d\n", res); + break; + case SM_CMONITORS: + if((dxw.dwFlags2 & HIDEMULTIMONITOR) && res>1) { + res=1; + OutTraceD("GetSystemMetrics: fix SM_CMONITORS=%d\n", res); + } + break; + } + + return res; +} + +ATOM WINAPI extRegisterClassExA(WNDCLASSEX *lpwcx) +{ + OutTraceD("RegisterClassEx: PROXED ClassName=%s style=%x(%s)\n", + lpwcx->lpszClassName, lpwcx->style, ExplainStyle(lpwcx->style)); + return (*pRegisterClassExA)(lpwcx); +} + +static HWND WINAPI extCreateWindowCommon( + LPCTSTR ApiName, + BOOL WideChar, + DWORD dwExStyle, + void *lpClassName, + void *lpWindowName, + DWORD dwStyle, + int x, + int y, + int nWidth, + int nHeight, + HWND hWndParent, + HMENU hMenu, + HINSTANCE hInstance, + LPVOID lpParam) +{ + HWND wndh; + WNDPROC pWindowProc; + BOOL isValidHandle=TRUE; + + // no maximized windows in any case + if (dxw.dwFlags1 & PREVENTMAXIMIZE){ + OutTraceD("%s: handling PREVENTMAXIMIZE mode\n", ApiName); + dwStyle &= ~WS_MAXIMIZE; + //dwStyle &= ~(WS_MAXIMIZE | WS_POPUP); + //dwExStyle &= ~WS_EX_TOPMOST; + } + + // v2.1.92: fixes size & position for auxiliary big window, often used + // for intro movies etc. : needed for ...... + // evidently, this was supposed to be a fullscreen window.... + // v2.1.100: fixes for "The Grinch": this game creates a new main window for OpenGL + // rendering using CW_USEDEFAULT placement and 800x600 size while the previous + // main win was 640x480 only! + // v2.02.13: if it's a WS_CHILD window, don't reposition the x,y, placement for BIG win. + // v2.02.30: fix (Fable - lost chapters) Fable creates a bigger win with negative x,y coordinates. + if ( + ( + ((x<=0)&&(y<=0)) || ((x==CW_USEDEFAULT)&&(y==CW_USEDEFAULT)) + ) + && + ((nWidth>=(int)dxw.GetScreenWidth())&&(nHeight>=(int)dxw.GetScreenHeight())) + && + !(dwExStyle & WS_EX_CONTROLPARENT) // Diablo fix + && + !(dwStyle & WS_CHILD) // Diablo fix + ){ + RECT screen; + POINT upleft = {0,0}; + + // v2.02.30: fix (Fable - lost chapters) + if(nWidth==CW_USEDEFAULT) nWidth=dxw.GetScreenWidth(); + if(nHeight==CW_USEDEFAULT) nHeight=dxw.GetScreenHeight(); + + // update virtual screen size if it has grown + dxw.SetScreenSize(nWidth, nHeight); + // inserted some checks here, since the main window could be destroyed + // or minimized (see "Jedi Outcast") so that you may get a dangerous + // zero size. In this case, better renew the hWnd assignement and its coordinates. + do { // fake loop + isValidHandle = FALSE; + if (!(*pGetClientRect)(dxw.GethWnd(),&screen)) break; + if (!(*pClientToScreen)(dxw.GethWnd(),&upleft)) break; + if (screen.right==0 || screen.bottom==0) break; + isValidHandle = TRUE; + } while(FALSE); + if (isValidHandle){ // use parent's coordinates + if (!(dwStyle & WS_CHILD)){ + x=upleft.x; + y=upleft.y; + } + nWidth=screen.right; + nHeight=screen.bottom; + OutTraceD("%s: fixed BIG win pos=(%d,%d) size=(%d,%d)\n", ApiName, x, y, nWidth, nHeight); + } + else { + // invalid parent coordinates: use initial placement, but leave the size. + // should also fix the window style and compensate for borders here? + // if (!(dwStyle & WS_CHILD)){ // commented out: can't be! see if condition + x=dxw.iPosX; + y=dxw.iPosY; + //} + nWidth=dxw.iSizX; + nHeight=dxw.iSizY; + OutTraceD("%s: renewed BIG win pos=(%d,%d) size=(%d,%d)\n", ApiName, x, y, nWidth, nHeight); + } + dxw.SetFullScreen(TRUE); + if(dxw.Coordinates==DXW_DESKTOP_WORKAREA){ + RECT workarea; + SystemParametersInfo(SPI_GETWORKAREA, NULL, &workarea, 0); + x=0; + y=0; + nWidth=workarea.right; + nHeight=workarea.bottom; + dwStyle=0; + OutTraceD("%s: WORKAREA win pos=(%d,%d) size=(%d,%d)\n", ApiName, x, y, nWidth, nHeight); + } + else if(dxw.Coordinates==DXW_DESKTOP_FULL){ + RECT workarea; + (*pGetClientRect)((*pGetDesktopWindow)(), &workarea); + x=0; + y=0; + nWidth=workarea.right; + nHeight=workarea.bottom; + dwStyle=0; + OutTraceD("%s: FULLDESKTOP win pos=(%d,%d) size=(%d,%d)\n", ApiName, x, y, nWidth, nHeight); + } + } + + if(!dxw.IsFullScreen()){ // v2.1.63: needed for "Monster Truck Madness" + if(WideChar) + wndh= (*pCreateWindowExW)(dwExStyle, (LPCWSTR)lpClassName, (LPCWSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); + else + wndh= (*pCreateWindowExA)(dwExStyle, (LPCSTR)lpClassName, (LPCSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); + OutTraceD("%s: windowed mode ret=%x\n", ApiName, wndh); + return wndh; + } + + // tested on Gangsters: coordinates must be window-relative!!! + // Age of Empires.... + if (dwStyle & WS_CHILD){ + dxw.MapClient(&x, &y, &nWidth, &nHeight); + OutTraceD("%s: fixed WS_CHILD pos=(%d,%d) size=(%d,%d)\n", + ApiName, 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){ + dxw.MapWindow(&x, &y, &nWidth, &nHeight); + OutTraceD("%s: fixed WS_EX_CONTROLPARENT pos=(%d,%d) size=(%d,%d)\n", + ApiName, x, y, nWidth, nHeight); + } + + OutTraceB("%s: fixed pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n", + ApiName, x, y, nWidth, nHeight, dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle)); + + if(WideChar) + wndh= (*pCreateWindowExW)(dwExStyle, (LPCWSTR)lpClassName, (LPCWSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); + else + wndh= (*pCreateWindowExA)(dwExStyle, (LPCSTR)lpClassName, (LPCSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); + if (wndh==(HWND)NULL){ + OutTraceE("%s: ERROR err=%d Style=%x(%s) ExStyle=%x\n", + ApiName, GetLastError(), dwStyle, ExplainStyle(dwStyle), dwExStyle); + return wndh; + } + + if ((!isValidHandle) && dxw.IsFullScreen()) { + dxw.SethWnd(wndh); + extern void AdjustWindowPos(HWND, DWORD, DWORD); + (*pSetWindowLong)(wndh, GWL_STYLE, (dxw.dwFlags2 & MODALSTYLE) ? 0 : WS_OVERLAPPEDWINDOW); + (*pSetWindowLong)(wndh, GWL_EXSTYLE, 0); + OutTraceD("%s: hwnd=%x, set style=WS_OVERLAPPEDWINDOW extstyle=0\n", ApiName, wndh); + AdjustWindowPos(wndh, nWidth, nHeight); + (*pShowWindow)(wndh, SW_SHOWNORMAL); + } + + if ((dxw.dwFlags1 & FIXWINFRAME) && !(dwStyle & WS_CHILD)) + FixWindowFrame(wndh); + + // to do: handle inner child, and leave dialogue & modal child alone!!! + if ((dwStyle & WS_CHILD) && (dxw.dwFlags1 & HOOKCHILDWIN)){ + long res; + pWindowProc = (WNDPROC)(*pGetWindowLong)(wndh, GWL_WNDPROC); + OutTraceD("Hooking CHILD wndh=%x WindowProc %x->%x\n", wndh, pWindowProc, extChildWindowProc); + res=(*pSetWindowLong)(wndh, GWL_WNDPROC, (LONG)extChildWindowProc); + WhndStackPush(wndh, pWindowProc); + if(!res) OutTraceE("%s: SetWindowLong ERROR %x\n", ApiName, GetLastError()); + } + + OutTraceD("%s: ret=%x\n", ApiName, wndh); + return wndh; +} + +static LPCSTR ClassToStr(LPCSTR Class) +{ + static char AtomBuf[20+1]; + if(((DWORD)Class & 0xFFFF0000) == 0){ + sprintf(AtomBuf, "ATOM(%X)", Class); + return AtomBuf; + } + return Class; +} + +// to do: implement and use ClassToWStr() for widechar call + +HWND WINAPI extCreateWindowExW( + DWORD dwExStyle, + LPCWSTR lpClassName, + LPCWSTR lpWindowName, + DWORD dwStyle, + int x, + int y, + int nWidth, + int nHeight, + HWND hWndParent, + HMENU hMenu, + HINSTANCE hInstance, + LPVOID lpParam) +{ + OutTraceD("CreateWindowExW: class=\"%ls\" wname=\"%ls\" pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n", + lpClassName, lpWindowName, x, y, nWidth, nHeight, + dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle)); + if(IsDebug) OutTrace("CreateWindowExW: DEBUG screen=(%d,%d)\n", dxw.GetScreenWidth(), dxw.GetScreenHeight()); + + return extCreateWindowCommon("CreateWindowExW", TRUE, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); +} + +// GHO: pro Diablo +HWND WINAPI extCreateWindowExA( + DWORD dwExStyle, + LPCTSTR lpClassName, + LPCTSTR lpWindowName, + DWORD dwStyle, + int x, + int y, + int nWidth, + int nHeight, + HWND hWndParent, + HMENU hMenu, + HINSTANCE hInstance, + LPVOID lpParam) +{ + OutTraceD("CreateWindowExA: class=\"%s\" wname=\"%s\" pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n", + ClassToStr(lpClassName), lpWindowName, x, y, nWidth, nHeight, + dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle)); + if(IsDebug) OutTrace("CreateWindowExA: DEBUG screen=(%d,%d)\n", dxw.GetScreenWidth(), dxw.GetScreenHeight()); + + return extCreateWindowCommon("CreateWindowExA", false, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); +} + +LRESULT WINAPI extCallWindowProc(WNDPROC lpPrevWndFunc, HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) +{ + // v2.02.30: fix (Imperialism II): apply to main window only !!! + HRESULT res; + + res = -1; + if(hwnd == dxw.GethWnd()) res=FixWindowProc("CallWindowProc", hwnd, Msg, wParam, &lParam); + + if (res==(HRESULT)-1) + return (*pCallWindowProc)(lpPrevWndFunc, hwnd, Msg, wParam, lParam); + else + return res; +} + +LRESULT WINAPI extDefWindowProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) +{ + // v2.02.30: fix (Imperialism II): apply to main window only !!! + HRESULT res; + + res = -1; + if(hwnd == dxw.GethWnd()) res=FixWindowProc("DefWindowProc", hwnd, Msg, wParam, &lParam); + + if (res==(HRESULT)-1) + return (*pDefWindowProc)(hwnd, Msg, wParam, lParam); + else + return res; +} + +int WINAPI extFillRect(HDC hdc, const RECT *lprc, HBRUSH hbr) +{ + int res; + RECT rc; + OutTraceD("FillRect: hdc=%x hbrush=%x rect=(%d,%d)-(%d,%d)\n", hdc, hbr, lprc->left, lprc->top, lprc->right, lprc->bottom); + + // when not in fullscreen mode, just proxy the call + if(!dxw.IsFullScreen()) return (*pFillRect)(hdc, lprc, hbr); + + memcpy(&rc, lprc, sizeof(rc)); + if(OBJ_DC == GetObjectType(hdc)){ + if(rc.left < 0) rc.left = 0; + if(rc.top < 0) rc.top = 0; + if((DWORD)rc.right > dxw.GetScreenWidth()) rc.right = dxw.GetScreenWidth(); + if((DWORD)rc.bottom > dxw.GetScreenHeight()) rc.bottom = dxw.GetScreenHeight(); + dxw.MapClient(&rc); + OutTraceD("FillRect: fixed rect=(%d,%d)-(%d,%d)\n", rc.left, rc.top, rc.right, rc.bottom); + } + + res=(*pFillRect)(hdc, &rc, hbr); + return res; +} + +int WINAPI extFrameRect(HDC hdc, const RECT *lprc, HBRUSH hbr) +{ + int res; + RECT rc; + OutTraceD("FrameRect: hdc=%x hbrush=%x rect=(%d,%d)-(%d,%d)\n", hdc, hbr, lprc->left, lprc->top, lprc->right, lprc->bottom); + + // when not in fullscreen mode, just proxy the call + if(!dxw.IsFullScreen()) return (*pFrameRect)(hdc, lprc, hbr); + + memcpy(&rc, lprc, sizeof(rc)); + if(OBJ_DC == GetObjectType(hdc)){ + if(rc.left < 0) rc.left = 0; + if(rc.top < 0) rc.top = 0; + if((DWORD)rc.right > dxw.GetScreenWidth()) rc.right = dxw.GetScreenWidth(); + if((DWORD)rc.bottom > dxw.GetScreenHeight()) rc.bottom = dxw.GetScreenHeight(); + dxw.MapClient(&rc); + OutTraceD("FrameRect: fixed rect=(%d,%d)-(%d,%d)\n", rc.left, rc.top, rc.right, rc.bottom); + } + + res=(*pFrameRect)(hdc, &rc, hbr); + return res; +} + +BOOL WINAPI extClipCursor(RECT *lpRectArg) +{ + // reference: hooking and setting ClipCursor is mandatori in "Emergency: Fighters for Life" + // where the application expects the cursor to be moved just in a inner rect within the + // main window surface. + + BOOL res; + RECT *lpRect; + RECT Rect; + + if(IsTraceC){ + if (lpRectArg) + OutTrace("ClipCursor: rect=(%d,%d)-(%d,%d)\n", + lpRectArg->left,lpRectArg->top,lpRectArg->right,lpRectArg->bottom); + else + OutTrace("ClipCursor: rect=(NULL)\n"); + } + + if (!(dxw.dwFlags1 & ENABLECLIPPING)) return 1; + + if(lpRectArg){ + Rect=*lpRectArg; + lpRect=&Rect; + } + else + lpRect=NULL; + + if(dxw.dwFlags1 & MODIFYMOUSE){ + // save desired clip region + if (lpRect) { + ClipRegion=*lpRectArg; + lpClipRegion=&ClipRegion; + } + else + lpClipRegion=NULL; + + *lpRect=dxw.MapWindowRect(lpRect); + } + + if (pClipCursor) res=(*pClipCursor)(lpRect); + OutTraceD("ClipCursor: rect=(%d,%d)-(%d,%d) res=%x\n", + lpRect->left,lpRect->top,lpRect->right,lpRect->bottom, res); + + return TRUE; +} + +BOOL WINAPI extGetClipCursor(LPRECT lpRect) +{ + // v2.1.93: if ENABLECLIPPING, return the saved clip rect coordinates + + BOOL ret; + + // proxy.... + if (!(dxw.dwFlags1 & ENABLECLIPPING)) { + ret=(*pGetClipCursor)(lpRect); + if(IsTraceD){ + if (lpRect) + OutTrace("GetClipCursor: PROXED rect=(%d,%d)-(%d,%d) ret=%d\n", + lpRect->left,lpRect->top,lpRect->right,lpRect->bottom, ret); + else + OutTrace("GetClipCursor: PROXED rect=(NULL) ret=%d\n", ret); + } + return ret; + } + + if(lpRect){ + if(lpClipRegion) + *lpRect=ClipRegion; + else{ + lpRect->top = lpRect->left = 0; + lpRect->right = dxw.GetScreenWidth(); + lpRect->bottom = dxw.GetScreenHeight(); + } + OutTraceD("GetClipCursor: rect=(%d,%d)-(%d,%d) ret=%d\n", + lpRect->left,lpRect->top,lpRect->right,lpRect->bottom, TRUE); + } + + return TRUE; +} + +LONG WINAPI extEnumDisplaySettings(LPCTSTR lpszDeviceName, DWORD iModeNum, DEVMODE *lpDevMode) +{ + OutTraceD("EnumDisplaySettings: Devicename=%s ModeNum=%x\n", lpszDeviceName, iModeNum); + if(pSetDevMode && iModeNum==ENUM_CURRENT_SETTINGS){ + lpDevMode=pSetDevMode; + return 1; + } + else + return (*pEnumDisplaySettings)(lpszDeviceName, iModeNum, lpDevMode); +} + +LONG WINAPI extChangeDisplaySettings(DEVMODE *lpDevMode, DWORD dwflags) +{ + if(IsTraceD){ + OutTrace("ChangeDisplaySettings: lpDevMode=%x flags=%x", lpDevMode, dwflags); + if (lpDevMode) OutTrace(" fields=%x(%s) size=(%d x %d) bpp=%d", + lpDevMode->dmFields, ExplainDevModeFields(lpDevMode->dmFields), + lpDevMode->dmPelsWidth, lpDevMode->dmPelsHeight, lpDevMode->dmBitsPerPel); + OutTrace("\n"); + } + + return MyChangeDisplaySettings("ChangeDisplaySettings", lpDevMode, dwflags); +} + +LONG WINAPI extChangeDisplaySettingsEx(LPCTSTR lpszDeviceName, DEVMODE *lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam) +{ + if(IsTraceD){ + OutTrace("ChangeDisplaySettingsEx: DeviceName=%s lpDevMode=%x flags=%x", lpszDeviceName, lpDevMode, dwflags); + if (lpDevMode) OutTrace(" size=(%d x %d) bpp=%d", + lpDevMode->dmPelsWidth, lpDevMode->dmPelsHeight, lpDevMode->dmBitsPerPel); + OutTrace("\n"); + } + + return MyChangeDisplaySettings("ChangeDisplaySettingsEx", lpDevMode, dwflags); +} + +HDC WINAPI extGDIGetDC(HWND hwnd) +{ + HDC ret; + HWND lochwnd; + + OutTraceD("GDI.GetDC: hwnd=%x\n", hwnd); + lochwnd=hwnd; + if (dxw.IsRealDesktop(hwnd)) { + OutTraceD("GDI.GetDC: desktop remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd()); + lochwnd=dxw.GethWnd(); + } + + if(dxw.dwFlags3 & EMULATEDC) + ret=dxw.AcquireEmulatedDC(lochwnd); + else + ret=(*pGDIGetDC)(lochwnd); + + if(ret){ + OutTraceD("GDI.GetDC: hwnd=%x ret=%x\n", lochwnd, ret); + } + else{ + int err; + err=GetLastError(); + OutTraceE("GDI.GetDC ERROR: hwnd=%x err=%d at %d\n", lochwnd, err, __LINE__); + if((err==ERROR_INVALID_WINDOW_HANDLE) && (lochwnd!=hwnd)){ + ret=(*pGDIGetDC)(hwnd); + if(ret) + OutTraceD("GDI.GetDC: hwnd=%x ret=%x\n", hwnd, ret); + else + OutTraceE("GDI.GetDC ERROR: hwnd=%x err=%d at %d\n", hwnd, GetLastError(), __LINE__); + } + } + + return ret; +} + +HDC WINAPI extGDIGetDCEx(HWND hwnd, HRGN hrgnClip, DWORD flags) +{ + MessageBox(0, "GetDCEx", "to fix", MB_OK | MB_ICONEXCLAMATION); + return (HDC)NULL; +} + +HDC WINAPI extGDIGetWindowDC(HWND hwnd) +{ + HDC ret; + HWND lochwnd; + OutTraceD("GDI.GetWindowDC: hwnd=%x\n", hwnd); + lochwnd=hwnd; + if (dxw.IsRealDesktop(hwnd)) { + OutTraceD("GDI.GetWindowDC: desktop remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd()); + lochwnd=dxw.GethWnd(); + } + + ret=(*pGDIGetWindowDC)(lochwnd); + + if(ret){ + OutTraceD("GDI.GetWindowDC: hwnd=%x ret=%x\n", lochwnd, ret); + } + else{ + int err; + err=GetLastError(); + OutTraceE("GDI.GetWindowDC ERROR: hwnd=%x err=%d at %d\n", lochwnd, err, __LINE__); + if((err==ERROR_INVALID_WINDOW_HANDLE) && (lochwnd!=hwnd)){ + ret=(*pGDIGetWindowDC)(hwnd); + if(ret) + OutTraceD("GDI.GetWindowDC: hwnd=%x ret=%x\n", hwnd, ret); + else + OutTraceE("GDI.GetWindowDC ERROR: hwnd=%x err=%d at %d\n", hwnd, GetLastError(), __LINE__); + } + } + return ret; +} + +int WINAPI extGDIReleaseDC(HWND hwnd, HDC hDC) +{ + int res; + + OutTraceD("GDI.ReleaseDC: hwnd=%x hdc=%x\n", hwnd, hDC); + if (dxw.IsRealDesktop(hwnd)) hwnd=dxw.GethWnd(); + + if(dxw.dwFlags3 & EMULATEDC) + res=dxw.ReleaseEmulatedDC(hwnd); + else + res=(*pGDIReleaseDC)(hwnd, hDC); + + if (!res) OutTraceE("GDI.ReleaseDC ERROR: err=%d at %d\n", GetLastError(), __LINE__); + return(res); +} + +HDC WINAPI extBeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint) +{ + HDC hdc; + extern HRESULT WINAPI extGetDC(LPDIRECTDRAWSURFACE, HDC FAR *); + + // proxy part ... + OutTraceD("GDI.BeginPaint: hwnd=%x lpPaint=%x FullScreen=%x\n", hwnd, lpPaint, dxw.IsFullScreen()); + hdc=(*pBeginPaint)(hwnd, lpPaint); + + // if not in fullscreen mode, that's all! + if(!dxw.IsFullScreen()) return hdc; + + if(dxw.dwFlags3 & EMULATEDC) return dxw.AcquireEmulatedDC(hwnd); + + // on MAPGDITOPRIMARY, return the PrimHDC handle instead of the window DC + if(dxw.dwFlags1 & MAPGDITOPRIMARY) { + if(pGetDC && dxw.lpDDSPrimHDC){ + extGetDC(dxw.lpDDSPrimHDC,&PrimHDC); + OutTraceD("GDI.BeginPaint: redirect hdc=%x -> PrimHDC=%x\n", hdc, PrimHDC); + hdc=PrimHDC; + } + else { + OutTraceD("GDI.BeginPaint: hdc=%x\n", hdc); + } + } + + // on CLIENTREMAPPING, resize the paint area to virtual screen size + if(dxw.dwFlags1 & CLIENTREMAPPING){ + lpPaint->rcPaint.top=0; + lpPaint->rcPaint.left=0; + lpPaint->rcPaint.right=dxw.GetScreenWidth(); + lpPaint->rcPaint.bottom=dxw.GetScreenHeight(); + } + + return hdc; +} + +BOOL WINAPI extEndPaint(HWND hwnd, const PAINTSTRUCT *lpPaint) +{ + BOOL ret; + HRESULT WINAPI extReleaseDC(LPDIRECTDRAWSURFACE lpdds, HDC FAR hdc); + + OutTraceD("GDI.EndPaint: hwnd=%x lpPaint=%x\n", hwnd, lpPaint); + + if((dxw.dwFlags3 & EMULATEDC) && dxw.IsFullScreen()){ + ret=dxw.ReleaseEmulatedDC(hwnd); + ret=(*pEndPaint)(hwnd, lpPaint); + OutTraceD("GDI.EndPaint: hwnd=%x ret=%x\n", hwnd, ret); + if(!ret) OutTraceE("GDI.EndPaint ERROR: err=%d at %d\n", GetLastError(), __LINE__); + return ret; + } + + // proxy part ... + ret=(*pEndPaint)(hwnd, lpPaint); + OutTraceD("GDI.EndPaint: hwnd=%x ret=%x\n", hwnd, ret); + if(!ret) OutTraceE("GDI.EndPaint ERROR: err=%d at %d\n", GetLastError(), __LINE__); + + //return ret; + + // if not in fullscreen mode, that's all! + if(!dxw.IsFullScreen()) return ret; + + // v2.02.09: on MAPGDITOPRIMARY, release the PrimHDC handle + if(dxw.dwFlags1 & MAPGDITOPRIMARY) { + if(pReleaseDC && dxw.lpDDSPrimHDC){ + extReleaseDC(dxw.lpDDSPrimHDC, PrimHDC); + OutTraceD("GDI.EndPaint: released hdc=%x\n", PrimHDC); + } + } + + return ret; +} + +HWND WINAPI extCreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM lParamInit) +{ + HWND RetHWND; + isWithinDialog=TRUE; + OutTraceD("CreateDialogIndirectParam: hInstance=%x lpTemplate=%s hWndParent=%x lpDialogFunc=%x lParamInit=%x\n", + hInstance, "tbd", hWndParent, lpDialogFunc, lParamInit); + if(hWndParent==NULL) hWndParent=dxw.GethWnd(); + RetHWND=(*pCreateDialogIndirectParam)(hInstance, lpTemplate, hWndParent, lpDialogFunc, lParamInit); + + WhndStackPush(RetHWND, (WNDPROC)lpDialogFunc); + if(!(*pSetWindowLong)(RetHWND, DWL_DLGPROC, (LONG)extDialogWindowProc)) + OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__); + + OutTraceD("CreateDialogIndirectParam: hwnd=%x\n", RetHWND); + isWithinDialog=FALSE; + //if (IsDebug) EnumChildWindows(RetHWND, (WNDENUMPROC)TraceChildWin, (LPARAM)RetHWND); + return RetHWND; +} + +HWND WINAPI extCreateDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM lParamInit) +{ + HWND RetHWND; + isWithinDialog=TRUE; + OutTraceD("CreateDialogParam: hInstance=%x lpTemplateName=%s hWndParent=%x lpDialogFunc=%x lParamInit=%x\n", + hInstance, "tbd", hWndParent, lpDialogFunc, lParamInit); + if(hWndParent==NULL) hWndParent=dxw.GethWnd(); + RetHWND=(*pCreateDialogParam)(hInstance, lpTemplateName, hWndParent, lpDialogFunc, lParamInit); + + WhndStackPush(RetHWND, (WNDPROC)lpDialogFunc); + if(!(*pSetWindowLong)(RetHWND, DWL_DLGPROC, (LONG)extDialogWindowProc)) + OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__); + + OutTraceD("CreateDialogParam: hwnd=%x\n", RetHWND); + isWithinDialog=FALSE; + //if (IsDebug) EnumChildWindows(RetHWND, (WNDENUMPROC)TraceChildWin, (LPARAM)RetHWND); + return RetHWND; +} + +BOOL WINAPI extMoveWindow(HWND hwnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint) +{ + BOOL ret; + OutTraceD("MoveWindow: hwnd=%x xy=(%d,%d) size=(%d,%d) repaint=%x indialog=%x fullscreen=%x\n", + hwnd, X, Y, nWidth, nHeight, bRepaint, isWithinDialog, dxw.IsFullScreen()); + + if(dxw.IsDesktop(hwnd)){ + // v2.1.93: happens in "Emergency Fighters for Life" ... + // what is the meaning of this? is it related to video stretching? + static BOOL MovedAlready=FALSE; + if(MovedAlready){ + OutTraceD("MoveWindow: prevent moving desktop win\n"); + return TRUE; + } + else { + WINDOWPLACEMENT wp; + MovedAlready=TRUE; + OutTraceD("MoveWindow: initialize desktop win at pos=(%d,%d) size=(%dx%d)\n", dxw.iPosX, dxw.iPosY, dxw.iSizX, dxw.iSizY); + ret=(*pMoveWindow)(hwnd, dxw.iPosX, dxw.iPosY, dxw.iSizX, dxw.iSizY, bRepaint); + if(!ret) OutTraceE("MoveWindow ERROR: err=%d at %d\n", GetLastError(), __LINE__); + memset(&wp, 0, sizeof(wp)); + wp.length=sizeof(wp); + if(!GetWindowPlacement(hwnd, &wp)) OutTraceE("GetWindowPlacement ERROR: err=%d at %d\n", GetLastError(), __LINE__); + wp.rcNormalPosition.left=dxw.iPosX; + wp.rcNormalPosition.top=dxw.iPosY; + wp.rcNormalPosition.right=dxw.iPosX+dxw.iSizX; + wp.rcNormalPosition.bottom=dxw.iPosY+dxw.iSizY; + if(!SetWindowPlacement(hwnd, &wp)) OutTraceE("SetWindowPlacement ERROR: err=%d at %d\n", GetLastError(), __LINE__); + return TRUE; + } + } + + if((hwnd==dxw.GethWnd()) || (hwnd==dxw.hParentWnd)){ + static BOOL MovedAlready=FALSE; + if(MovedAlready){ + OutTraceD("MoveWindow: prevent moving main win\n"); + return TRUE; + } + else { + WINDOWPLACEMENT wp; + MovedAlready=TRUE; + OutTraceD("MoveWindow: initialize main win at pos=(%d,%d) size=(%dx%d)\n", dxw.iPosX, dxw.iPosY, dxw.iSizX, dxw.iSizY); + ret=(*pMoveWindow)(hwnd, dxw.iPosX, dxw.iPosY, dxw.iSizX, dxw.iSizY, bRepaint); + if(!ret) OutTraceE("MoveWindow ERROR: err=%d at %d\n", GetLastError(), __LINE__); + memset(&wp, 0, sizeof(wp)); + wp.length=sizeof(wp); + if(!GetWindowPlacement(hwnd, &wp)) OutTraceE("GetWindowPlacement ERROR: err=%d at %d\n", GetLastError(), __LINE__); + wp.rcNormalPosition.left=dxw.iPosX; + wp.rcNormalPosition.top=dxw.iPosY; + wp.rcNormalPosition.right=dxw.iPosX+dxw.iSizX; + wp.rcNormalPosition.bottom=dxw.iPosY+dxw.iSizY; + if(!SetWindowPlacement(hwnd, &wp)) OutTraceE("SetWindowPlacement ERROR: err=%d at %d\n", GetLastError(), __LINE__); + return TRUE; + } + } + + if (dxw.IsFullScreen()){ + POINT upleft={0,0}; + RECT client; + BOOL isChild; + (*pClientToScreen)(dxw.GethWnd(),&upleft); + (*pGetClientRect)(dxw.GethWnd(),&client); + if ((*pGetWindowLong)(hwnd, GWL_STYLE) & WS_CHILD){ + isChild=TRUE; + // child coordinate adjustement + X = (X * client.right) / dxw.GetScreenWidth(); + Y = (Y * client.bottom) / dxw.GetScreenHeight(); + nWidth = (nWidth * client.right) / dxw.GetScreenWidth(); + nHeight = (nHeight * client.bottom) / dxw.GetScreenHeight(); + } + else { + isChild=FALSE; + // regular win coordinate adjustement + X = upleft.x + (X * client.right) / dxw.GetScreenWidth(); + Y = upleft.y + (Y * client.bottom) / dxw.GetScreenHeight(); + nWidth = (nWidth * client.right) / dxw.GetScreenWidth(); + nHeight = (nHeight * client.bottom) / dxw.GetScreenHeight(); + } + OutTraceD("MoveWindow: DEBUG client=(%d,%d) screen=(%d,%d)\n", + client.right, client.bottom, dxw.GetScreenWidth(), dxw.GetScreenHeight()); + OutTraceD("MoveWindow: hwnd=%x child=%x relocated to xy=(%d,%d) size=(%d,%d)\n", + hwnd, isChild, X, Y, nWidth, nHeight); + } + else{ + if((X==0)&&(Y==0)&&(nWidth==dxw.GetScreenWidth())&&(nHeight==dxw.GetScreenHeight())){ + //if((X<=0)&&(Y<=0)&&(nWidth>=dxw.GetScreenWidth())&&(nHeight>=dxw.GetScreenHeight())){ + // evidently, this was supposed to be a fullscreen window.... + 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("MoveWindow: fixed BIG win pos=(%d,%d) size=(%d,%d)\n", X, Y, nWidth, nHeight); + } + } + + ret=(*pMoveWindow)(hwnd, X, Y, nWidth, nHeight, bRepaint); + if(!ret) OutTraceE("MoveWindow: ERROR err=%d at %d\n", GetLastError(), __LINE__); + return ret; +} + +int WINAPI extShowCursor(BOOL bShow) +{ + static int iFakeCounter; + int ret; + + OutTraceC("ShowCursor: bShow=%x\n", bShow); + if (bShow){ + if (dxw.dwFlags1 & HIDEHWCURSOR){ + iFakeCounter++; + OutTraceC("ShowCursor: HIDEHWCURSOR ret=%x\n", iFakeCounter); + return iFakeCounter; + } + } + else { + if (dxw.dwFlags2 & SHOWHWCURSOR){ + iFakeCounter--; + OutTraceC("ShowCursor: SHOWHWCURSOR ret=%x\n", iFakeCounter); + return iFakeCounter; + } + } + ret=(*pShowCursor)(bShow); + OutTraceC("ShowCursor: ret=%x\n", ret); + return ret; +} + +int WINAPI extDrawTextA(HDC hDC, LPCTSTR lpchText, int nCount, LPRECT lpRect, UINT uFormat) +{ + return 0; +} + +int WINAPI extDrawTextExA(HDC hDC, LPCTSTR lpchText, int cchText, LPRECT lprc, UINT dwDTFormat, LPDRAWTEXTPARAMS lpDTParams) +{ + return 0; +} + +BOOL WINAPI extDrawFocusRect(HDC hDC, const RECT *lprc) +{ + return TRUE; +} + +BOOL WINAPI extScrollDC(HDC hDC, int dx, int dy, const RECT *lprcScroll, const RECT *lprcClip, HRGN hrgnUpdate, LPRECT lprcUpdate) +{ + return TRUE; +} + +HWND WINAPI extGetTopWindow(HWND hwnd) +{ + HWND ret; + OutTraceD("GetTopWindow: hwnd=%x fullscreen=%x\n", hwnd, dxw.IsFullScreen()); + // a fullscreen program is supposed to be always top Z-order on the desktop! + ret = (dxw.IsFullScreen() && dxw.IsDesktop(hwnd)) ? dxw.GethWnd() : (*pGetTopWindow)(hwnd); + OutTraceD("GetTopWindow: ret=%x\n", ret); + return ret; +} + +LONG WINAPI extTabbedTextOutA(HDC hdc, int X, int Y, LPCTSTR lpString, int nCount, int nTabPositions, const LPINT lpnTabStopPositions, int nTabOrigin) +{ + BOOL res; + OutTraceD("TabbedTextOut: hdc=%x xy=(%d,%d) nCount=%d nTP=%d nTOS=%d str=(%d)\"%s\"\n", + hdc, X, Y, nCount, nTabPositions, nTabOrigin, lpString); + + if (dxw.IsFullScreen() && (OBJ_DC == GetObjectType(hdc))){ + dxw.MapClient(&X, &Y); + OutTraceD("TextOut: fixed dest=(%d,%d)\n", X, Y); + } + + res=(*pTabbedTextOutA)(hdc, X, Y, lpString, nCount, nTabPositions, lpnTabStopPositions, nTabOrigin); + return res; +} + +BOOL WINAPI extDestroyWindow(HWND hWnd) +{ + BOOL res; + OutTraceB("DestroyWindow: hwnd=%x\n", hWnd); + if (hWnd == dxw.GethWnd()) { + OutTraceD("DestroyWindow: destroy main hwnd=%x\n", hWnd); + if(1) return 0; + dxw.SethWnd(NULL); + } + res=(*pDestroyWindow)(hWnd); + if(!res)OutTraceE("DestroyWindow: ERROR err=%d\n", GetLastError()); + return res; +} + +BOOL WINAPI extCloseWindow(HWND hWnd) +{ + BOOL res; + OutTraceB("CloseWindow: hwnd=%x\n", hWnd); + if (hWnd == dxw.GethWnd()) { + OutTraceD("CloseWindow: close main hwnd=%x\n", hWnd); + dxw.SethWnd(NULL); + } + res=(*pCloseWindow)(hWnd); + if(!res)OutTraceE("CloseWindow: ERROR err=%d\n", GetLastError()); + return res; +} + +BOOL WINAPI extSetSysColors(int cElements, const INT *lpaElements, const COLORREF *lpaRgbValues) +{ + // v2.02.32: added to avoid SysColors changes by "Western Front" + BOOL ret; + OutTraceD("SetSysColors: Elements=%d\n", cElements); + + if(dxw.dwFlags3 & LOCKSYSCOLORS) return TRUE; + + ret=(*pSetSysColors)(cElements, lpaElements, lpaRgbValues); + if(!ret) OutTraceE("SetSysColors: ERROR er=%d\n", GetLastError()); + return ret; +} + +BOOL WINAPI extUpdateWindow(HWND hwnd) +{ + BOOL ret; + OutTraceD("UpdateWindow: hwnd=%x\n", hwnd); + + if(dxw.IsRealDesktop(hwnd)){ + OutTraceD("UpdateWindow: remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd()); + hwnd=dxw.GethWnd(); + } + + ret=(*pUpdateWindow)(hwnd); + if(!ret) OutTraceE("UpdateWindow: ERROR er=%d\n", GetLastError()); + return ret; +} + +BOOL WINAPI extGetWindowPlacement(HWND hwnd, WINDOWPLACEMENT *lpwndpl) +{ + BOOL ret; + OutTraceD("GetWindowPlacement: hwnd=%x\n", hwnd); + + if(dxw.IsRealDesktop(hwnd)){ + OutTraceD("GetWindowPlacement: remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd()); + hwnd=dxw.GethWnd(); + } + + ret=(*pGetWindowPlacement)(hwnd, lpwndpl); + OutTraceD("GetWindowPlacement: flags=%x showCmd=%x MinPosition=(%d,%d) MaxPosition=(%d,%d) NormalPosition=(%d,%d)-(%d,%d)\n", + lpwndpl->flags, lpwndpl->showCmd, + lpwndpl->ptMinPosition.x, lpwndpl->ptMinPosition.y, + lpwndpl->ptMaxPosition.x, lpwndpl->ptMaxPosition.y, + lpwndpl->rcNormalPosition.left, lpwndpl->rcNormalPosition.top, lpwndpl->rcNormalPosition.right, lpwndpl->rcNormalPosition.bottom); + + switch (lpwndpl->showCmd){ + case SW_SHOW: + if (dxw.IsFullScreen()){ + lpwndpl->showCmd = SW_MAXIMIZE; + OutTraceD("GetWindowPlacement: forcing SW_MAXIMIZE state\n"); + } + break; + } + if(!ret) OutTraceE("GetWindowPlacement: ERROR er=%d\n", GetLastError()); + return ret; +} + +BOOL WINAPI extSetWindowPlacement(HWND hwnd, WINDOWPLACEMENT *lpwndpl) +{ + BOOL ret; + OutTraceD("SetWindowPlacement: hwnd=%x\n", hwnd); + + if(dxw.IsRealDesktop(hwnd)){ + OutTraceD("SetWindowPlacement: remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd()); + hwnd=dxw.GethWnd(); + } + + OutTraceD("SetWindowPlacement: flags=%x showCmd=%x MinPosition=(%d,%d) MaxPosition=(%d,%d) NormalPosition=(%d,%d)-(%d,%d)\n", + lpwndpl->flags, lpwndpl->showCmd, + lpwndpl->ptMinPosition.x, lpwndpl->ptMinPosition.y, + lpwndpl->ptMaxPosition.x, lpwndpl->ptMaxPosition.y, + lpwndpl->rcNormalPosition.left, lpwndpl->rcNormalPosition.top, lpwndpl->rcNormalPosition.right, lpwndpl->rcNormalPosition.bottom); + + switch (lpwndpl->showCmd){ + case SW_SHOW: + if (dxw.IsFullScreen()){ + lpwndpl->showCmd = SW_MAXIMIZE; + OutTraceD("SetWindowPlacement: forcing SW_MAXIMIZE state\n"); + } + break; + } + ret=(*pSetWindowPlacement)(hwnd, lpwndpl); + if(!ret) OutTraceE("SetWindowPlacement: ERROR er=%d\n", GetLastError()); + return ret; +} + +HWND WINAPI extSetCapture(HWND hwnd) +{ + HWND ret; + OutTraceD("SetCapture: hwnd=%x\n", hwnd); + ret=(*pSetCapture)(hwnd); + OutTraceD("SetCapture: ret=%x\n", ret); + return ret; +} \ No newline at end of file diff --git a/dll/user32.cpp b/dll/user32.cpp index 4afd241..56280d4 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -3,6 +3,7 @@ #define _CRT_SECURE_NO_WARNINGS #include +#include #include "dxwnd.h" #include "dxwcore.hpp" #include "syslibs.h" @@ -12,7 +13,8 @@ static HookEntry_Type Hooks[]={ {"UpdateWindow", (FARPROC)NULL, (FARPROC *)&pUpdateWindow, (FARPROC)extUpdateWindow}, - {"GetWindowPlacement", (FARPROC)NULL, (FARPROC *)&pGetWindowPlacement, (FARPROC)extGetWindowPlacement}, + //{"GetWindowPlacement", (FARPROC)NULL, (FARPROC *)&pGetWindowPlacement, (FARPROC)extGetWindowPlacement}, + //{"SetWindowPlacement", (FARPROC)NULL, (FARPROC *)&pSetWindowPlacement, (FARPROC)extSetWindowPlacement}, {"ChangeDisplaySettingsA", (FARPROC)ChangeDisplaySettingsA, (FARPROC *)&pChangeDisplaySettings, (FARPROC)extChangeDisplaySettings}, {"ChangeDisplaySettingsExA", (FARPROC)ChangeDisplaySettingsA, (FARPROC *)&pChangeDisplaySettingsEx, (FARPROC)extChangeDisplaySettingsEx}, {"BeginPaint", (FARPROC)BeginPaint, (FARPROC *)&pBeginPaint, (FARPROC)extBeginPaint}, @@ -971,9 +973,10 @@ ATOM WINAPI extRegisterClassExA(WNDCLASSEX *lpwcx) static HWND WINAPI extCreateWindowCommon( LPCTSTR ApiName, + BOOL WideChar, DWORD dwExStyle, - LPCTSTR lpClassName, - LPCTSTR lpWindowName, + void *lpClassName, + void *lpWindowName, DWORD dwStyle, int x, int y, @@ -1078,8 +1081,10 @@ static HWND WINAPI extCreateWindowCommon( } if(!dxw.IsFullScreen()){ // v2.1.63: needed for "Monster Truck Madness" - wndh= (*pCreateWindowExA)(dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, - hWndParent, hMenu, hInstance, lpParam); + if(WideChar) + wndh= (*pCreateWindowExW)(dwExStyle, (LPCWSTR)lpClassName, (LPCWSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); + else + wndh= (*pCreateWindowExA)(dwExStyle, (LPCSTR)lpClassName, (LPCSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); OutTraceD("%s: windowed mode ret=%x\n", ApiName, wndh); return wndh; } @@ -1102,8 +1107,10 @@ static HWND WINAPI extCreateWindowCommon( OutTraceB("%s: fixed pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n", ApiName, x, y, nWidth, nHeight, dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle)); - wndh= (*pCreateWindowExA)(dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, - hWndParent, hMenu, hInstance, lpParam); + if(WideChar) + wndh= (*pCreateWindowExW)(dwExStyle, (LPCWSTR)lpClassName, (LPCWSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); + else + wndh= (*pCreateWindowExA)(dwExStyle, (LPCSTR)lpClassName, (LPCSTR)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); if (wndh==(HWND)NULL){ OutTraceE("%s: ERROR err=%d Style=%x(%s) ExStyle=%x\n", ApiName, GetLastError(), dwStyle, ExplainStyle(dwStyle), dwExStyle); @@ -1163,17 +1170,12 @@ HWND WINAPI extCreateWindowExW( HINSTANCE hInstance, LPVOID lpParam) { - char sClassName[256+1]; - char sWindowName[256+1]; - wcstombs_s(NULL, sClassName, lpClassName, 80); - wcstombs_s(NULL, sWindowName, lpWindowName, 80); - OutTraceD("CreateWindowExW: class=\"%ls\" wname=\"%ls\" pos=(%d,%d) size=(%d,%d) Style=%x(%s) ExStyle=%x(%s)\n", lpClassName, lpWindowName, x, y, nWidth, nHeight, dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle)); if(IsDebug) OutTrace("CreateWindowExW: DEBUG screen=(%d,%d)\n", dxw.GetScreenWidth(), dxw.GetScreenHeight()); - return extCreateWindowCommon("CreateWindowExW", dwExStyle, sClassName, sWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); + return extCreateWindowCommon("CreateWindowExW", TRUE, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); } // GHO: pro Diablo @@ -1196,7 +1198,7 @@ HWND WINAPI extCreateWindowExA( dwStyle, ExplainStyle(dwStyle), dwExStyle, ExplainExStyle(dwExStyle)); if(IsDebug) OutTrace("CreateWindowExA: DEBUG screen=(%d,%d)\n", dxw.GetScreenWidth(), dxw.GetScreenHeight()); - return extCreateWindowCommon("CreateWindowExA", dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); + return extCreateWindowCommon("CreateWindowExA", false, dwExStyle, (void *)lpClassName, (void *)lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); } LRESULT WINAPI extCallWindowProc(WNDPROC lpPrevWndFunc, HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) @@ -1427,8 +1429,39 @@ HDC WINAPI extGDIGetDC(HWND hwnd) HDC WINAPI extGDIGetDCEx(HWND hwnd, HRGN hrgnClip, DWORD flags) { - MessageBox(0, "GetDCEx", "to fix", MB_OK | MB_ICONEXCLAMATION); - return (HDC)NULL; + // used by Star Wars Shadow of the Empire + HDC ret; + HWND lochwnd; + + OutTraceD("GDI.GetDCEx: hwnd=%x hrgnClip=%x flags=%x(%s)\n", hwnd, hrgnClip, flags, ExplainGetDCExFlags(flags)); + lochwnd=hwnd; + if (dxw.IsRealDesktop(hwnd)) { + OutTraceD("GDI.GetDCEx: desktop remapping hwnd=%x->%x\n", hwnd, dxw.GethWnd()); + lochwnd=dxw.GethWnd(); + } + + if(dxw.dwFlags3 & EMULATEDC) + ret=dxw.AcquireEmulatedDC(lochwnd); + else + ret=(*pGDIGetDC)(lochwnd); + + if(ret){ + OutTraceD("GDI.GetDCEx: hwnd=%x ret=%x\n", lochwnd, ret); + } + else{ + int err; + err=GetLastError(); + OutTraceE("GDI.GetDCEx ERROR: hwnd=%x err=%d at %d\n", lochwnd, err, __LINE__); + if((err==ERROR_INVALID_WINDOW_HANDLE) && (lochwnd!=hwnd)){ + ret=(*pGDIGetDCEx)(hwnd, hrgnClip, flags); + if(ret) + OutTraceD("GDI.GetDCEx: hwnd=%x ret=%x\n", hwnd, ret); + else + OutTraceE("GDI.GetDCEx ERROR: hwnd=%x err=%d at %d\n", hwnd, GetLastError(), __LINE__); + } + } + + return ret; } HDC WINAPI extGDIGetWindowDC(HWND hwnd) @@ -1598,14 +1631,14 @@ BOOL WINAPI extMoveWindow(HWND hwnd, int X, int Y, int nWidth, int nHeight, BOOL if(dxw.IsDesktop(hwnd)){ // v2.1.93: happens in "Emergency Fighters for Life" ... // what is the meaning of this? is it related to video stretching? - OutTraceD("MoveWindow: prevent moving desktop win\n"); - return TRUE; - } + OutTraceD("MoveWindow: prevent moving desktop win\n"); + return TRUE; + } if((hwnd==dxw.GethWnd()) || (hwnd==dxw.hParentWnd)){ - OutTraceD("MoveWindow: prevent moving main win\n"); - return TRUE; - } + OutTraceD("MoveWindow: prevent moving main win\n"); + return TRUE; + } if (dxw.IsFullScreen()){ POINT upleft={0,0}; diff --git a/dll/winmm.cpp b/dll/winmm.cpp index 7294d4c..d3050d9 100644 --- a/dll/winmm.cpp +++ b/dll/winmm.cpp @@ -6,6 +6,9 @@ #include "MMSystem.h" +#undef OutTraceD +#define OutTraceD OutTrace + static HookEntry_Type Hooks[]={ {"mciSendCommandA", NULL, (FARPROC *)&pmciSendCommand, (FARPROC)extmciSendCommand}, {0, NULL, 0, 0} // terminator @@ -13,6 +16,8 @@ static HookEntry_Type Hooks[]={ static HookEntry_Type TimeHooks[]={ {"timeGetTime", NULL, (FARPROC *)&ptimeGetTime, (FARPROC)exttimeGetTime}, + {"timeKillEvent", NULL, (FARPROC *)&ptimeKillEvent, (FARPROC)exttimeKillEvent}, + {"timeSetEvent", NULL, (FARPROC *)&ptimeSetEvent, (FARPROC)exttimeSetEvent}, {0, NULL, 0, 0} // terminator }; @@ -41,6 +46,25 @@ DWORD WINAPI exttimeGetTime(void) return ret; } +MMRESULT WINAPI exttimeSetEvent(UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent) +{ + MMRESULT res; + uDelay = uDelay * 8; + OutTraceD("timeSetEvent: Delay=%d Resolution=%d Event=%x\n", uDelay, uResolution, fuEvent); + res=(*ptimeSetEvent)(uDelay, uResolution, lpTimeProc, dwUser, fuEvent); + OutTraceD("timeSetEvent: ret=%x\n", res); + return res; +} + +MMRESULT WINAPI exttimeKillEvent(UINT uTimerID) +{ + MMRESULT res; + OutTraceD("timeKillEvent: TimerID=%x\n", uTimerID); + res=(*ptimeKillEvent)(uTimerID); + OutTraceD("timeKillEvent: ret=%x\n", res); + return res; +} + /* MCI_DGV_PUT_FRAME The rectangle defined for MCI_DGV_RECT applies to the frame rectangle. diff --git a/exports/007 NightFire.dxw b/exports/007 NightFire.dxw new file mode 100644 index 0000000..1fde1e2 --- /dev/null +++ b/exports/007 NightFire.dxw @@ -0,0 +1,24 @@ +[target] +title0=007 NightFire +path0=D:\Games\007_NightFire\Bond.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234146 +flagg0=134217728 +flagh0=65556 +flagi0=0 +tflag0=67 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/101 The Airborne Invasion of Normandy.dxw b/exports/101 The Airborne Invasion of Normandy.dxw new file mode 100644 index 0000000..71bb96f --- /dev/null +++ b/exports/101 The Airborne Invasion of Normandy.dxw @@ -0,0 +1,24 @@ +[target] +title0=101 The Airborne Invasion of Normandy +path0=D:\Games\101air\101.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234146 +flagg0=134217728 +flagh0=20 +flagi0=0 +tflag0=192 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Age of Empires III.dxw b/exports/Age of Empires III.dxw new file mode 100644 index 0000000..c1efb73 --- /dev/null +++ b/exports/Age of Empires III.dxw @@ -0,0 +1,24 @@ +[target] +title0=Age of Empires III +path0=D:\Games\Age of Empires III\age3.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=-394125278 +flagg0=134217728 +flagh0=20 +flagi0=0 +tflag0=3 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Akuma Demon Spawn - Lamentation Sword.dxw b/exports/Akuma Demon Spawn - Lamentation Sword.dxw new file mode 100644 index 0000000..d73692c --- /dev/null +++ b/exports/Akuma Demon Spawn - Lamentation Sword.dxw @@ -0,0 +1,24 @@ +[target] +title0=Akuma Demon Spawn - Lamentation Sword +path0=D:\Games\Akuma Demon Spawn - Lamentation Sword (1999)\Akuma\Akuma.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234146 +flagg0=134217728 +flagh0=20 +flagi0=0 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Ancient Evil demo.dxw b/exports/Ancient Evil demo.dxw new file mode 100644 index 0000000..c6ad005 --- /dev/null +++ b/exports/Ancient Evil demo.dxw @@ -0,0 +1,24 @@ +[target] +title0=Ancient Evil demo +path0=D:\Games\AECSC\aecsc-demo.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=150994976 +flagg0=1207959552 +flagh0=25165844 +flagi0=0 +tflag0=259 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Army Men RTS.dxw b/exports/Army Men RTS.dxw new file mode 100644 index 0000000..163d2cf --- /dev/null +++ b/exports/Army Men RTS.dxw @@ -0,0 +1,24 @@ +[target] +title0=Army Men RTS +path0=D:\Games\Army Men RTS\amrts.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671088676 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Attack of the Saucerman.dxw b/exports/Attack of the Saucerman.dxw new file mode 100644 index 0000000..fd88a78 --- /dev/null +++ b/exports/Attack of the Saucerman.dxw @@ -0,0 +1,24 @@ +[target] +title0=Attack of the Saucerman +path0=D:\Games\Attack of the Saucerman\attack of the saucerman.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217730 +flagg0=134217728 +flagh0=20 +flagi0=0 +tflag0=192 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Beyond Divinity.dxw b/exports/Beyond Divinity.dxw new file mode 100644 index 0000000..ee7c05a --- /dev/null +++ b/exports/Beyond Divinity.dxw @@ -0,0 +1,24 @@ +[target] +title0=Beyond Divinity +path0=D:\Games\Beyond Divinity\Div.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234144 +flagg0=134217728 +flagh0=61 +flagi0=0 +tflag0=3 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Daikatana.dxw b/exports/Daikatana.dxw new file mode 100644 index 0000000..ff305de --- /dev/null +++ b/exports/Daikatana.dxw @@ -0,0 +1,24 @@ +[target] +title0=Daikatana +path0=D:\Games\Daikatana\daikatana.exe +module0= +opengllib0= +ver0=12 +coord0=0 +flag0=269492738 +flagg0=537002497 +flagh0=20 +flagi0=0 +tflag0=2 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Devastation.dxw b/exports/Devastation.dxw new file mode 100644 index 0000000..d42a274 --- /dev/null +++ b/exports/Devastation.dxw @@ -0,0 +1,24 @@ +[target] +title0=Devastation +path0=D:\Games\Devastation\System\Devastation.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1207959552 +flagh0=16 +flagi0=0 +tflag0=67 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Diablo.dxw b/exports/Diablo.dxw new file mode 100644 index 0000000..63c7691 --- /dev/null +++ b/exports/Diablo.dxw @@ -0,0 +1,24 @@ +[target] +title0=Diablo +path0=D:\Games\Diablo\Diablo.exe +module0= +opengllib0= +ver0=1 +coord0=0 +flag0=138428450 +flagg0=1108344848 +flagh0=20 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=640 +sizy0=480 +maxfps0=0 +initts0=0 diff --git a/exports/Doom Shareware for Windows 95.dxw b/exports/Doom Shareware for Windows 95.dxw new file mode 100644 index 0000000..e29750c --- /dev/null +++ b/exports/Doom Shareware for Windows 95.dxw @@ -0,0 +1,24 @@ +[target] +title0=Doom Shareware for Windows 95 +path0=D:\Games\Doom Shareware for Windows 95\Doom95.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=134217728 +flagh0=20 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Dungeon Keeper II.dxw b/exports/Dungeon Keeper II.dxw new file mode 100644 index 0000000..3b5d517 --- /dev/null +++ b/exports/Dungeon Keeper II.dxw @@ -0,0 +1,24 @@ +[target] +title0=Dungeon Keeper II +path0=D:\Games\Dungeon Keeper 2\DKII.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=16418 +flagg0=574619648 +flagh0=20 +flagi0=0 +tflag0=263 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=150 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Dungeon Lords MMXII.dxw b/exports/Dungeon Lords MMXII.dxw new file mode 100644 index 0000000..bc4f6f5 --- /dev/null +++ b/exports/Dungeon Lords MMXII.dxw @@ -0,0 +1,24 @@ +[target] +title0=Dungeon Lords MMXII +path0=D:\Games\Dungeon Lords MMXII\dlords2012.exe +module0= +opengllib0= +ver0=0 +coord0=2 +flag0=-2013265886 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/GTA 3.dxw b/exports/GTA 3.dxw new file mode 100644 index 0000000..c7e4c44 --- /dev/null +++ b/exports/GTA 3.dxw @@ -0,0 +1,24 @@ +[target] +title0=GTA 3 +path0=D:\Games\GTA3\gta3.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234150 +flagg0=1207975952 +flagh0=176 +flagi0=0 +tflag0=2 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Grand Prix Legends.dxw b/exports/Grand Prix Legends.dxw new file mode 100644 index 0000000000000000000000000000000000000000..999ae13fd69e900ec38a7f66b60f3fe7cc7734a9 GIT binary patch literal 295 NcmZQz7zIRx0003e00961 literal 0 HcmV?d00001 diff --git a/exports/Grand Prix World.dxw b/exports/Grand Prix World.dxw new file mode 100644 index 0000000..b218903 --- /dev/null +++ b/exports/Grand Prix World.dxw @@ -0,0 +1,24 @@ +[target] +title0=Grand Prix World +path0=D:\Games\Grand Prix World\gpwxp2.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134283428 +flagg0=134217728 +flagh0=29 +flagi0=0 +tflag0=3 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Hamsterball.dxw b/exports/Hamsterball.dxw new file mode 100644 index 0000000..e4bdc3e --- /dev/null +++ b/exports/Hamsterball.dxw @@ -0,0 +1,24 @@ +[target] +title0=Hamsterball +path0=D:\Games\Hamsterball\Hamsterball.exe +module0= +opengllib0= +ver0=8 +coord0=0 +flag0=134217762 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=323 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Heroes of Might and Magic IV.dxw b/exports/Heroes of Might and Magic IV.dxw new file mode 100644 index 0000000..cf7cd79 --- /dev/null +++ b/exports/Heroes of Might and Magic IV.dxw @@ -0,0 +1,24 @@ +[target] +title0=Heroes of Might and Magic IV +path0=D:\Games\Heroes of Might and Magic IV\heroes4i.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134283298 +flagg0=1211121728 +flagh0=65556 +flagi0=0 +tflag0=3 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Homeworld 2.dxw b/exports/Homeworld 2.dxw new file mode 100644 index 0000000..9aa9229 --- /dev/null +++ b/exports/Homeworld 2.dxw @@ -0,0 +1,24 @@ +[target] +title0=Homeworld 2 +path0=D:\Games\Homeworld2\Bin\Release\Homeworld2.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671088642 +flagg0=134217728 +flagh0=477 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/JetMoto.dxw b/exports/JetMoto.dxw new file mode 100644 index 0000000..65069a9 --- /dev/null +++ b/exports/JetMoto.dxw @@ -0,0 +1,24 @@ +[target] +title0=JetMoto +path0=D:\Games\Jet_Moto\JETMOTO.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671088674 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Kiss Psycho Circus.dxw b/exports/Kiss Psycho Circus.dxw new file mode 100644 index 0000000..79f48c5 --- /dev/null +++ b/exports/Kiss Psycho Circus.dxw @@ -0,0 +1,24 @@ +[target] +title0=Kiss Psycho Circus +path0=D:\Games\Kiss\client.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217760 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=67 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/L'Elefante a Strisce.dxw b/exports/L'Elefante a Strisce.dxw new file mode 100644 index 0000000..f119aca --- /dev/null +++ b/exports/L'Elefante a Strisce.dxw @@ -0,0 +1,24 @@ +[target] +title0=L'Elefante a Strisce +path0=D:\Games\L'Elefante a Strisce\Pilots1I.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=134217728 +flagh0=20 +flagi0=0 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Land of the Dead.dxw b/exports/Land of the Dead.dxw new file mode 100644 index 0000000..517fb28 --- /dev/null +++ b/exports/Land of the Dead.dxw @@ -0,0 +1,24 @@ +[target] +title0=Land of the Dead +path0=D:\Games\Land of the Dead\System\LOTD.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217766 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Last Bronx.dxw b/exports/Last Bronx.dxw new file mode 100644 index 0000000..3415a45 --- /dev/null +++ b/exports/Last Bronx.dxw @@ -0,0 +1,24 @@ +[target] +title0=Last Bronx +path0=D:\Games\Last_Bronx\LB.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Mageslayer.dxw b/exports/Mageslayer.dxw new file mode 100644 index 0000000..4732846 --- /dev/null +++ b/exports/Mageslayer.dxw @@ -0,0 +1,24 @@ +[target] +title0=Mageslayer +path0=D:\Games\MAGE\MAGESLAY.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234146 +flagg0=134217760 +flagh0=20 +flagi0=0 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Magic & Mayhem.dxw b/exports/Magic & Mayhem.dxw new file mode 100644 index 0000000..8e8066e --- /dev/null +++ b/exports/Magic & Mayhem.dxw @@ -0,0 +1,24 @@ +[target] +title0=Magic & Mayhem +path0=D:\Games\Magic_&_Mayhem\Chaos.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=138428450 +flagg0=1275068416 +flagh0=8388628 +flagi0=0 +tflag0=259 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Mirror's Edge.dxw b/exports/Mirror's Edge.dxw new file mode 100644 index 0000000..07855d2 --- /dev/null +++ b/exports/Mirror's Edge.dxw @@ -0,0 +1,24 @@ +[target] +title0=Mirror's Edge +path0=D:\Games\Mirror's Edge\Binaries\MirrorsEdge.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=-2013265882 +flagg0=1207959552 +flagh0=2097172 +flagi0=0 +tflag0=15 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=6 diff --git a/exports/Praetorians.dxw b/exports/Praetorians.dxw new file mode 100644 index 0000000..a07422a --- /dev/null +++ b/exports/Praetorians.dxw @@ -0,0 +1,24 @@ +[target] +title0=Praetorians +path0=D:\Games\Praetorians\Praetorians.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217760 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=259 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Premier Manager 98.dxw b/exports/Premier Manager 98.dxw new file mode 100644 index 0000000..202d582 --- /dev/null +++ b/exports/Premier Manager 98.dxw @@ -0,0 +1,24 @@ +[target] +title0=Premier Manager 98 +path0=D:\Games\Premier Manager 98\MANAGER.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671088674 +flagg0=1207959552 +flagh0=16 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Primitive Wars.dxw b/exports/Primitive Wars.dxw new file mode 100644 index 0000000..9cc72eb --- /dev/null +++ b/exports/Primitive Wars.dxw @@ -0,0 +1,24 @@ +[target] +title0=Primitive Wars +path0=D:\Games\Primitive Wars\Pw.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=402653218 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Railroad Tycoon II.dxw b/exports/Railroad Tycoon II.dxw new file mode 100644 index 0000000..c3cb149 --- /dev/null +++ b/exports/Railroad Tycoon II.dxw @@ -0,0 +1,24 @@ +[target] +title0=Railroad Tycoon II +path0=D:\Games\Railroad.Tycoon.II\RT2.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=2082 +flagg0=143654912 +flagh0=16 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Rayman 2 Demo.dxw b/exports/Rayman 2 Demo.dxw new file mode 100644 index 0000000..d67ddef --- /dev/null +++ b/exports/Rayman 2 Demo.dxw @@ -0,0 +1,24 @@ +[target] +title0=Rayman2Demo.exe +path0=D:\Games\Rayman2Demo\Rayman2Demo.exe +module0= +opengllib0= +ver0=1 +coord0=0 +flag0=939524129 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=323 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Space Rangers.dxw b/exports/Space Rangers.dxw new file mode 100644 index 0000000..adba567 --- /dev/null +++ b/exports/Space Rangers.dxw @@ -0,0 +1,24 @@ +[target] +title0=Space Rangers +path0=D:\Games\Space Rangers\Rangers.exe +module0= +opengllib0= +ver0=1 +coord0=0 +flag0=134234146 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Star Wars Shadow of the Empire (DEMO).dxw b/exports/Star Wars Shadow of the Empire (DEMO).dxw new file mode 100644 index 0000000..e50772d --- /dev/null +++ b/exports/Star Wars Shadow of the Empire (DEMO).dxw @@ -0,0 +1,24 @@ +[target] +title0=Star Wars Shadow of the Empire (DEMO) +path0=D:\Games\shadowsdemo\shadows.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1208483844 +flagh0=25165844 +flagi0=0 +tflag0=275 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Star Wars Shadow of the Empire.dxw b/exports/Star Wars Shadow of the Empire.dxw new file mode 100644 index 0000000..0ca1af9 --- /dev/null +++ b/exports/Star Wars Shadow of the Empire.dxw @@ -0,0 +1,24 @@ +[target] +title0=Star Wars Shadow of the Empire +path0=D:\Games\Star Wars Shadow of the Empire\game\SDATA\SHADOWS.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=1476919296 +flagh0=25166364 +flagi0=0 +tflag0=274 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/StarCraft.dxw b/exports/StarCraft.dxw new file mode 100644 index 0000000..ec3c771 --- /dev/null +++ b/exports/StarCraft.dxw @@ -0,0 +1,24 @@ +[target] +title0=StarCraft +path0=D:\Games\Starcraft\StarCraft.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217762 +flagg0=136314880 +flagh0=20 +flagi0=0 +tflag0=64 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Talis Gear.dxw b/exports/Talis Gear.dxw new file mode 100644 index 0000000..bc14a14 --- /dev/null +++ b/exports/Talis Gear.dxw @@ -0,0 +1,24 @@ +[target] +title0=Talis Gear +path0=D:\Games\TailsGear078\DT_MAIN.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134217760 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Theseus.dxw b/exports/Theseus.dxw new file mode 100644 index 0000000..076b5e3 --- /dev/null +++ b/exports/Theseus.dxw @@ -0,0 +1,24 @@ +[target] +title0=Theseus +path0=D:\Games\theseus\Theseus.exe +module0= +opengllib0= +ver0=8 +coord0=0 +flag0=134217730 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Total Annihilation Kingdoms.dxw b/exports/Total Annihilation Kingdoms.dxw new file mode 100644 index 0000000..bf596e7 --- /dev/null +++ b/exports/Total Annihilation Kingdoms.dxw @@ -0,0 +1,24 @@ +[target] +title0=Total Annihilation Kingdoms +path0=D:\Games\Total Annihilation Kingdoms\Kingdoms.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=134234146 +flagg0=1073741840 +flagh0=16 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Vangers.dxw b/exports/Vangers.dxw new file mode 100644 index 0000000..d7459f7 --- /dev/null +++ b/exports/Vangers.dxw @@ -0,0 +1,24 @@ +[target] +title0=Vangers +path0=D:\Games\Vangers\road.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=402653219 +flagg0=671088640 +flagh0=20 +flagi0=0 +tflag0=67 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Wargames.dxw b/exports/Wargames.dxw new file mode 100644 index 0000000..0ea1bb9 --- /dev/null +++ b/exports/Wargames.dxw @@ -0,0 +1,24 @@ +[target] +title0=Wargames (demo) +path0=D:\Games\Wargames\wargames.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=268435618 +flagg0=1207959552 +flagh0=20 +flagi0=0 +tflag0=3 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/exports/Warlords 3.dxw b/exports/Warlords 3.dxw new file mode 100644 index 0000000..ed24623 --- /dev/null +++ b/exports/Warlords 3.dxw @@ -0,0 +1,24 @@ +[target] +title0=Warlords 3 +path0=D:\Games\WARLORDS3\Darklord.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=-2147483102 +flagg0=269484064 +flagh0=532 +flagi0=0 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=0 +sizy0=0 +maxfps0=0 +initts0=0 diff --git a/exports/deadrising2otr1.dxw b/exports/deadrising2otr1.dxw new file mode 100644 index 0000000..11f51ac --- /dev/null +++ b/exports/deadrising2otr1.dxw @@ -0,0 +1,24 @@ +[target] +title0=deadrising2otr.exe +path0=C:\Program Files (x86)\Capcom\Dead Rising 2 Off The Record\deadrising2otr.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=0 +flagg0=134217728 +flagh0=16 +flagi0=0 +tflag0=3 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/host/Release/BuildLog.htm b/host/Release/BuildLog.htm deleted file mode 100644 index 599e102c4f37c5bc3638117300e9a619c38b8412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11660 zcmeI2YfoE85Qg_NQvbsdRnsJG>;MU^AgK~;Ls2nMAR$qy5WZlXm`iOFpz3dL`@Fke z&K-1^G%w%!z^p-AlNHWPn~{AWyaeh~KHtzmMgz2?}erIL|*epO( zo8AWfE6i^V_+7k&rqzn9=W%wc`?oj+kAb3fJA8U@TUfN=e+x{WM*7s#;1l+RG>JB0 z6XlHNrg>5^W%j%bXT*~StW&eA&JQpaUxtUa2ps>p3AD#{mG}-HSpG(N+p`?(^4o;E zIp|quXO7JW-s`lgrGW&VK}7>;IEIqG`JPrM$NTWA#a?ycT%Tvjw&rYDZcF+kqkoxg z%hMS%ZF%7Ea2ix(Kb#Z}zn@o0r1-9HTp}I6#rK;?E@+dCIjb~jWps!AJx8J>kvrxSGPR2q z>vzWdz;BOvb$YzC?j)p9@0-ZEteX2wp{dh+XU#LddM*G%mO@rp8ZS$jw9jt$f3q@B zG;7QX*!wlKeab#9^ZUU3fp#1-e;$|x`j^4G4n3z}-;DKZb~!O;oAImAHGS>KRpwUA z0-k2++OfNEPjJg%yA3a*SY~0di|;C#AK}(6@Yh*k10SdLWIxaO&RR}h52p%-rHmDq z&{(Z3-PL~u|Jj32damLl^}l4Lp=jR2yXZ=?NDZWAA504DQ?$>)Jc+dxkd3%~Dl$K5 z;|lD4JrmmTwb0TSG;Ta+n_U<7jt7b)0;t=87i}z26CQSWk_>g>SqJSYF!qGcS5_k3 zSm{uUG5ssY)CTssfux@0z^M&ZcD^xtt=hnQv{-cyEb~UKfu-V~B`j&)m@2rOA_L9b z5iTz1<@PT@^Kx!)8ScsN$jiOEVpJ1-KF#HB&H6!EELpKUTI4@m%#8m}0wYps~`m5S69M~RXXXrIiX)ydhH_OJ4- z_x{yI0ouW&m%nTNwI1_U|1bY4OWPp2anXeLsCU_VTQYxa7{ftJX zilu$~uoCa)D3YE8dVycTP`0J_;o>-X`JSDr8CiZrxZf>{Iddx(^9|l`E~d*a2g#3q z{SGE0SY-<({7r>uyu!0;Tr0p{C4nau&j0u(7KOTt)Z)m~Wov0@m- zDvG$42C->{cw~cT{Z^=Z=}B?%x^1oUzjeo=|7W)l{i}M~Cw|hei!{`tOs5I$(WpbQ z+m0Qhc+{QPWyRq0ocB(}W{TU%=sT=F$Fqzqh&PGqb<#FU1@930Kfgrg@0fTLt>FE) zd8Q)zEqhkuPQIRJNLmdUPz73iexT3DrZ*+w!pO!mj)&}45k-c9y}F?F)X$Lz`WymLlRNi+vZ&UN=rl4py4X4a{q zWF;$m3nAxco#B{dh8y;zv*@sI8F@>e8%|)Yb^e@nVmN_xCePi&%0mcw2?&y9f6K_- z6%qZCbZLpx6VIKHCc zzaOIQkNA&f8q!qXE}y8;KHhV;wUjlxn>1ak)#9h_-Z>vT%Zg9=KIab2H1}ZiCfg&P zo*+}Yuh+uQyY)+U{Vd!xzRL`EgGaVT@MVJne7I_yqSwO`)-E~~HmbnNUTNJG#vD<7 zb+#(xM}>&9X2+=p>?9!>gNCDZ8|&`-RJUKwHs9YV({0DmZ#qVAH@Z6#ier`4sOG#k zkTD-^PFg>yyk`zc(dpD}obQJ?IDesANxC=eV*j+23Ano}KOBIEKihu@wvX&hOSOxF zF4FEK-u3x-YdHCq{^=%L`c|)Q3448fiSB3LYR$gsJKnuYY3EhZVi8T3jn|E3jSX*K F{|olJdJ+Ht diff --git a/host/Release/Inject.obj b/host/Release/Inject.obj deleted file mode 100644 index 34caff28b2a8a997176b23d362218e45d539567f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3879 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 LE<`3(1=#-s;mTE{ diff --git a/host/Release/MainFrm.obj b/host/Release/MainFrm.obj deleted file mode 100644 index b16764f42d75e8ca67fefa4c6fba674dac1bab4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21549 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 JFzO1#e*+LH44eP} diff --git a/host/Release/StatusDialog.obj b/host/Release/StatusDialog.obj deleted file mode 100644 index 6a5a5ea62aa2b82c600bd3792dd88216c2e5922b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19689 zcmeHPdzhP5ng7yhGo{qF$jD8gp`_3Xw9`&+*5Z7*O(rv$B+X=|(^5#&B%KM(B(q6o z+JXw&L4>iOD|lN}R1oCB)qTK6L01aximd3?+k%TOi2hLoT}2jw2W5Znd(O%CeK|>) z-RIf;Yfqn?ym`;>y`1-)^PclvrcqbSnE%>HvbfYRx?KjBRk=z&Tbs&@Uxso09K#4M zRKMi+f+fbPTz>cDsCQ7cOoRCTBK1pro5m9Vs!A?X%UFDZ#1~t?i87aTnvJ-#!M_~1 z0}=~21g@6fUn3z|-1t5O%*P~-y5U)p*d_hzQMe@_J_F2GY&dfX{A7#y}4@{R6r`e_EOHm~yZl2Jm;mGbZFt_f7^hmN?g4k4gQ@9`RjrCw8WjrzdL}r z--*-wdkge^2bk|mT-yo!dk&a+rvre}%D*$wb|x@uCGJH2Z2>0g#A*JW1bxH6q$RFy zx5@Zcfw{R6*APGI<`;o^K;lm1-w|Mb;>2nG(Y*X6FwZvPM1FCs-xq*+-GS5B@5#{T zKEp6h!G{X7j3b1QwP z0ds*3*GwOcN2kP)J}RyBbpaQ66MeLP2Y}gO!?n_v1EyxfHS>@3y$_ff8?KeUTY