From 0b3d1886310d5929bbd37cb7dc97516e79e9a496 Mon Sep 17 00:00:00 2001 From: gho tik Date: Sun, 10 Nov 2013 11:38:24 -0500 Subject: [PATCH] v2_02_39_src Former-commit-id: bca94a8fa11609187704d32de5dca2ab99209934 --- Include/ddrawi.h | 1070 +++ Include/dxwnd.h | 8 + build/dxwnd.1.ini | 5848 +++++++++++++++++ build/dxwnd.2.ini | 1133 ++++ build/dxwnd.3.ini | 167 + build/dxwnd.dll | 4 +- build/dxwnd.exe | 4 +- build/dxwnd.ini | 2815 +++++++- build/readme-relnotes.txt | 10 - dll/analytic.cpp | 2 - dll/ddraw.cpp | 181 +- dll/dxhook.cpp | 23 +- dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 273920 -> 291840 bytes dll/dxwnd.vs2008.vcproj | 4 - dll/gdi32.cpp | 3 + dll/hddproxy.cpp | 17 +- dll/hddproxy.h | 1 + dll/hddraw.h | 2 +- dll/user32.cpp | 7 +- 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 295 -> 0 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/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/PaletteDialog - Copia.cpp | 139 + host/PaletteDialog.cpp | 82 + host/PaletteDialog.h | 27 + host/Resource.h | 25 +- host/StatusDialog.cpp | 30 +- host/TabDebug.cpp | 4 + host/TabDirectX.cpp | 2 + host/TargetDlg.cpp | 8 +- host/TargetDlg.h | 6 + host/bmpext.h | 96 + host/cdib.cpp | 822 +++ host/cdib.h | 61 + host/dib.cpp | 552 ++ exports/Last Bronx.dxw => host/dxwnd.ini | 11 +- host/dxwndhost.aps | Bin 164720 -> 167304 bytes host/dxwndhost.rc | 59 +- host/dxwndhost.vs2008.suo | Bin 321536 -> 347136 bytes host/dxwndhost.vs2008.vcproj | 20 + host/dxwndhostView.cpp | 21 + host/dxwndhostView.h | 1 + host/palette.bmp | Bin 0 -> 246 bytes host/res/bitmap2.bmp | Bin 1270 -> 0 bytes host/res/palette24.bmp | Bin 0 -> 822 bytes 86 files changed, 13161 insertions(+), 1114 deletions(-) create mode 100644 Include/ddrawi.h create mode 100644 build/dxwnd.1.ini create mode 100644 build/dxwnd.2.ini create mode 100644 build/dxwnd.3.ini delete mode 100644 dll/analytic.cpp delete mode 100644 exports/007 NightFire.dxw delete mode 100644 exports/101 The Airborne Invasion of Normandy.dxw delete mode 100644 exports/Age of Empires III.dxw delete mode 100644 exports/Akuma Demon Spawn - Lamentation Sword.dxw delete mode 100644 exports/Ancient Evil demo.dxw delete mode 100644 exports/Army Men RTS.dxw delete mode 100644 exports/Attack of the Saucerman.dxw delete mode 100644 exports/Beyond Divinity.dxw delete mode 100644 exports/Daikatana.dxw delete mode 100644 exports/Devastation.dxw delete mode 100644 exports/Diablo.dxw delete mode 100644 exports/Doom Shareware for Windows 95.dxw delete mode 100644 exports/Dungeon Keeper II.dxw delete mode 100644 exports/Dungeon Lords MMXII.dxw delete mode 100644 exports/GTA 3.dxw delete mode 100644 exports/Grand Prix Legends.dxw delete mode 100644 exports/Grand Prix World.dxw delete mode 100644 exports/Hamsterball.dxw delete mode 100644 exports/Heroes of Might and Magic IV.dxw delete mode 100644 exports/Homeworld 2.dxw delete mode 100644 exports/JetMoto.dxw delete mode 100644 exports/Kiss Psycho Circus.dxw delete mode 100644 exports/L'Elefante a Strisce.dxw delete mode 100644 exports/Land of the Dead.dxw delete mode 100644 exports/Mageslayer.dxw delete mode 100644 exports/Magic & Mayhem.dxw delete mode 100644 exports/Mirror's Edge.dxw delete mode 100644 exports/Praetorians.dxw delete mode 100644 exports/Premier Manager 98.dxw delete mode 100644 exports/Primitive Wars.dxw delete mode 100644 exports/Railroad Tycoon II.dxw delete mode 100644 exports/Rayman 2 Demo.dxw delete mode 100644 exports/Space Rangers.dxw delete mode 100644 exports/Star Wars Shadow of the Empire (DEMO).dxw delete mode 100644 exports/Star Wars Shadow of the Empire.dxw delete mode 100644 exports/StarCraft.dxw delete mode 100644 exports/Talis Gear.dxw delete mode 100644 exports/Theseus.dxw delete mode 100644 exports/Total Annihilation Kingdoms.dxw delete mode 100644 exports/Vangers.dxw delete mode 100644 exports/Wargames.dxw delete mode 100644 exports/Warlords 3.dxw delete mode 100644 exports/deadrising2otr1.dxw create mode 100644 host/PaletteDialog - Copia.cpp create mode 100644 host/PaletteDialog.cpp create mode 100644 host/PaletteDialog.h create mode 100644 host/bmpext.h create mode 100644 host/cdib.cpp create mode 100644 host/cdib.h create mode 100644 host/dib.cpp rename exports/Last Bronx.dxw => host/dxwnd.ini (67%) create mode 100644 host/palette.bmp delete mode 100644 host/res/bitmap2.bmp create mode 100644 host/res/palette24.bmp diff --git a/Include/ddrawi.h b/Include/ddrawi.h new file mode 100644 index 0000000..cec8139 --- /dev/null +++ b/Include/ddrawi.h @@ -0,0 +1,1070 @@ +/* + * DirectDraw driver interface + * (DirectX 7 version) + * + * Copyright (C) 2001 Ove Kaaven + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_DDRAWI_H +#define __WINE_DDRAWI_H + +#include +#include /* the DD HAL is layered onto DCI escapes */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _DDVIDEOPORTCAPS *LPDDVIDEOPORTCAPS; /* should be in dvp.h */ +typedef struct _DDKERNELCAPS *LPDDKERNELCAPS; /* should be in ddkernel.h */ +typedef struct _VMEMHEAP *LPVMEMHEAP; /* should be in dmemmgr.h */ + +#define DDAPI WINAPI + +/* the DirectDraw versions */ +#define DD_VERSION 0x0200 /* compatibility version */ +#define DD_RUNTIME_VERSION 0x0700 /* actual version */ + +/* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */ +#define DD_HAL_VERSION 0x0100 + +/* more DCICOMMAND escapes */ +#define DDCREATEDRIVEROBJECT 10 +#define DDGET32BITDRIVERNAME 11 +#define DDNEWCALLBACKFNS 12 +#define DDVERSIONINFO 13 + +#define MAX_DRIVER_NAME CCHDEVICENAME + +/***************************************************************************** + * Initialization stuff + */ +typedef struct { + char szName[260]; + char szEntryPoint[64]; + DWORD dwContext; +} DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA; + +typedef struct { + DWORD dwHALVersion; + ULONG_PTR dwReserved1; + ULONG_PTR dwReserved2; +} DDVERSIONDATA,*LPDDVERSIONDATA; + +typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext); + +/* pointer to video memory */ +typedef ULONG_PTR FLATPTR; + +/* predeclare some structures */ +typedef struct _DDHALINFO *LPDDHALINFO; +typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT; +typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL; +typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL; +typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT; +typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL; +typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL; +typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE; +typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE; +typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT; +typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL; +typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL; +typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT; +typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL; +typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL; +typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT; +typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL; +typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT; +typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL; + +/* structure GUIDs for GetDriverInfo */ +DEFINE_GUID( GUID_MiscellaneousCallbacks, 0xEFD60CC0,0x49E7,0x11D0,0x88,0x9D,0x00,0xAA,0x00,0xBB,0xB7,0x6A ); +/* ...videport stuff here... */ +DEFINE_GUID( GUID_D3DCallbacks2, 0x0BA584E1,0x70B6,0x11D0,0x88,0x9D,0x00,0xAA,0x00,0xBB,0xB7,0x6A ); +DEFINE_GUID( GUID_D3DCallbacks3, 0xDDF41230,0xEC0A,0x11D0,0xA9,0xB6,0x00,0xAA,0x00,0xC0,0x99,0x3E ); +DEFINE_GUID( GUID_NonLocalVidMemCaps, 0x86C4FA80,0x8D84,0x11D0,0x94,0xE8,0x00,0xC0,0x4F,0xC3,0x41,0x37 ); +/* ...kernel stuff here... */ +DEFINE_GUID( GUID_D3DExtendedCaps, 0x7DE41F80,0x9D93,0x11D0,0x89,0xAB,0x00,0xA0,0xC9,0x05,0x41,0x29 ); +DEFINE_GUID( GUID_ZPixelFormats, 0x93869880,0x36CF,0x11D1,0x9B,0x1B,0x00,0xAA,0x00,0xBB,0xB8,0xAE ); +DEFINE_GUID( GUID_DDMoreSurfaceCaps, 0x3B8A0466,0xF269,0x11D1,0x88,0x0B,0x00,0xC0,0x4F,0xD9,0x30,0xC5 ); +DEFINE_GUID( GUID_DDStereoMode, 0xF828169C,0xA8E8,0x11D2,0xA1,0xF2,0x00,0xA0,0xC9,0x83,0xEA,0xF6 ); +/* ...more stuff here... */ +DEFINE_GUID(GUID_D3DParseUnknownCommandCallback,0x2E04FFA0,0x98E4,0x11D1,0x8C,0xE1,0x00,0xA0,0xC9,0x06,0x29,0xA8 ); +/* ...motioncomp stuff here... */ +DEFINE_GUID( GUID_Miscellaneous2Callbacks, 0x406B2F00,0x3E5A,0x11D1,0xB6,0x40,0x00,0xAA,0x00,0xA1,0xF9,0x6A ); + +/***************************************************************************** + * driver->ddraw callbacks + */ +typedef BOOL (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset); +typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight); +typedef void (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem); + +typedef struct { + DWORD dwSize; + LPDDHAL_SETINFO lpSetInfo; + LPDDHAL_VIDMEMALLOC lpVidMemAlloc; + LPDDHAL_VIDMEMFREE lpVidMemFree; +} DDHALDDRAWFNS,*LPDDHALDDRAWFNS; + +/***************************************************************************** + * mode info structure + */ +typedef struct _DDHALMODEINFO { + DWORD dwWidth; + DWORD dwHeight; + LONG lPitch; + DWORD dwBPP; + WORD wFlags; + WORD wRefreshRate; + DWORD dwRBitMask; + DWORD dwGBitMask; + DWORD dwBBitMask; + DWORD dwAlphaBitMask; +} DDHALMODEINFO,*LPDDHALMODEINFO; + +#define DDMODEINFO_PALETTIZED 0x0001 +#define DDMODEINFO_MODEX 0x0002 +#define DDMODEINFO_UNSUPPORTED 0x0004 +#define DDMODEINFO_STANDARDVGA 0x0008 +#define DDMODEINFO_MAXREFRESH 0x0010 +#define DDMODEINFO_STEREO 0x0020 + +/***************************************************************************** + * video memory info structure + */ +typedef struct _VIDMEM { + DWORD dwFlags; + FLATPTR fpStart; + union { + FLATPTR fpEnd; + DWORD dwWidth; + } DUMMYUNIONNAME1; + DDSCAPS ddsCaps; + DDSCAPS ddsCapsAlt; + union { + LPVMEMHEAP lpHeap; + DWORD dwHeight; + } DUMMYUNIONNAME2; +} VIDMEM,*LPVIDMEM; + +#define VIDMEM_ISLINEAR 0x00000001 +#define VIDMEM_ISRECTANGULAR 0x00000002 +#define VIDMEM_ISHEAP 0x00000004 +#define VIDMEM_ISNONLOCAL 0x00000008 +#define VIDMEM_ISWC 0x00000010 +#define VIDMEM_ISDISABLED 0x00000020 + +typedef struct _VIDMEMINFO { + FLATPTR fpPrimary; + DWORD dwFlags; + DWORD dwDisplayWidth; + DWORD dwDisplayHeight; + LONG lDisplayPitch; + DDPIXELFORMAT ddpfDisplay; + DWORD dwOffscreenAlign; + DWORD dwOverlayAlign; + DWORD dwTextureAlign; + DWORD dwZBufferAlign; + DWORD dwAlphaAlign; + DWORD dwNumHeaps; + LPVIDMEM pvmList; +} VIDMEMINFO,*LPVIDMEMINFO; + +typedef struct _HEAPALIAS { + FLATPTR fpVidMem; + LPVOID lpAlias; + DWORD dwAliasSize; +} HEAPALIAS,*LPHEAPALIAS; + +typedef struct _HEAPALIASINFO { + DWORD dwRefCnt; + DWORD dwFlags; + DWORD dwNumHeaps; + LPHEAPALIAS lpAliases; +} HEAPALIASINFO,*LPHEAPALIASINFO; + +#define HEAPALIASINFO_MAPPEDREAL 0x00000001 +#define HEAPALIASINFO_MAPPEDDUMMY 0x00000002 + +/***************************************************************************** + * capabilities structures + */ +typedef struct _DDCORECAPS { + DWORD dwSize; + DWORD dwCaps; + DWORD dwCaps2; + DWORD dwCKeyCaps; + DWORD dwFXCaps; + DWORD dwFXAlphaCaps; + DWORD dwPalCaps; + DWORD dwSVCaps; + DWORD dwAlphaBltConstBitDepths; + DWORD dwAlphaBltPixelBitDepths; + DWORD dwAlphaBltSurfaceBitDepths; + DWORD dwAlphaOverlayConstBitDepths; + DWORD dwAlphaOverlayPixelBitDepths; + DWORD dwAlphaOverlaySurfaceBitDepths; + DWORD dwZBufferBitDepths; + DWORD dwVidMemTotal; + DWORD dwVidMemFree; + DWORD dwMaxVisibleOverlays; + DWORD dwCurrVisibleOverlays; + DWORD dwNumFourCCCodes; + DWORD dwAlignBoundarySrc; + DWORD dwAlignSizeSrc; + DWORD dwAlignBoundaryDest; + DWORD dwAlignSizeDest; + DWORD dwAlignStrideAlign; + DWORD dwRops[DD_ROP_SPACE]; + DDSCAPS ddsCaps; + DWORD dwMinOverlayStretch; + DWORD dwMaxOverlayStretch; + DWORD dwMinLiveVideoStretch; + DWORD dwMaxLiveVideoStretch; + DWORD dwMinHwCodecStretch; + DWORD dwMaxHwCodecStretch; + DWORD dwReserved1; + DWORD dwReserved2; + DWORD dwReserved3; + DWORD dwSVBCaps; + DWORD dwSVBCKeyCaps; + DWORD dwSVBFXCaps; + DWORD dwSVBRops[DD_ROP_SPACE]; + DWORD dwVSBCaps; + DWORD dwVSBCKeyCaps; + DWORD dwVSBFXCaps; + DWORD dwVSBRops[DD_ROP_SPACE]; + DWORD dwSSBCaps; + DWORD dwSSBCKeyCaps; + DWORD dwSSBFXCaps; + DWORD dwSSBRops[DD_ROP_SPACE]; + DWORD dwMaxVideoPorts; + DWORD dwCurrVideoPorts; + DWORD dwSVBCaps2; +} DDCORECAPS,*LPDDCORECAPS; + +typedef struct _DDNONLOCALVIDMEMCAPS { + DWORD dwSize; + DWORD dwNLVBCaps; + DWORD dwNLVBCaps2; + DWORD dwNLVBCKeyCaps; + DWORD dwNLVBFXCaps; + DWORD dwNLVBRops[DD_ROP_SPACE]; +} DDNONLOCALVIDMEMCAPS,*LPDDNONLOCALVIDMEMCAPS; +/* +typedef struct _DDSCAPSEX { + DWORD dwCaps2; + DWORD dwCaps3; + DWORD dwCaps4; +} DDSCAPSEX,*LPDDSCAPSEX; +*/ +#define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2 +#define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1 +#define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2 + +/***************************************************************************** + * ddraw->driver callbacks + */ +#define DDHAL_DRIVER_NOTHANDLED 0 +#define DDHAL_DRIVER_HANDLED 1 +#define DDHAL_DRIVER_NOCKEYHW 2 + +typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA; +typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA; +typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA; +typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA; +typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA; +typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA; +typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA; +typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA; +typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA; +typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA; + +typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER) (LPDDHAL_DESTROYDRIVERDATA); +typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE) (LPDDHAL_CREATESURFACEDATA); +typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY) (LPDDHAL_DRVSETCOLORKEYDATA); +typedef DWORD (PASCAL *LPDDHAL_SETMODE) (LPDDHAL_SETMODEDATA); +typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA); +typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE) (LPDDHAL_CANCREATESURFACEDATA ); +typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE) (LPDDHAL_CREATEPALETTEDATA); +typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE) (LPDDHAL_GETSCANLINEDATA); +typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE) (LPDDHAL_SETEXCLUSIVEMODEDATA); +typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE) (LPDDHAL_FLIPTOGDISURFACEDATA); + +typedef struct _DDHAL_DDCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHAL_DESTROYDRIVER DestroyDriver; + LPDDHAL_CREATESURFACE CreateSurface; + LPDDHAL_SETCOLORKEY SetColorKey; + LPDDHAL_SETMODE SetMode; + LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank; + LPDDHAL_CANCREATESURFACE CanCreateSurface; + LPDDHAL_CREATEPALETTE CreatePalette; + LPDDHAL_GETSCANLINE GetScanLine; + /* DirectX 2 */ + LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode; + LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface; +} DDHAL_DDCALLBACKS,*LPDDHAL_DDCALLBACKS; + +typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA; +typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA; +typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA; +typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA; +typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA; +typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA; +typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA; +typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA; +typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA; +typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA; +typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA; +typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA; +typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA; + +typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA); +typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA); + +typedef struct _DDHAL_DDSURFACECALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALSURFCB_DESTROYSURFACE DestroySurface; + LPDDHALSURFCB_FLIP Flip; + LPDDHALSURFCB_SETCLIPLIST SetClipList; + LPDDHALSURFCB_LOCK Lock; + LPDDHALSURFCB_UNLOCK Unlock; + LPDDHALSURFCB_BLT Blt; + LPDDHALSURFCB_SETCOLORKEY SetColorKey; + LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface; + LPDDHALSURFCB_GETBLTSTATUS GetBltStatus; + LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus; + LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay; + LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition; + LPVOID reserved4; + LPDDHALSURFCB_SETPALETTE SetPalette; +} DDHAL_DDSURFACECALLBACKS,*LPDDHAL_DDSURFACECALLBACKS; + +typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA; +typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA; + +typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE)(LPDDHAL_DESTROYPALETTEDATA); +typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA); + +typedef struct _DDHAL_DDPALETTECALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALPALCB_DESTROYPALETTE DestroyPalette; + LPDDHALPALCB_SETENTRIES SetEntries; +} DDHAL_DDPALETTECALLBACKS,*LPDDHAL_DDPALETTECALLBACKS; + +typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF)(LPDDHAL_CANCREATESURFACEDATA); +typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA); +typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA); +typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA); +typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA); + +typedef struct _DDHAL_DDEXEBUFCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer; + LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer; + LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer; + LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer; + LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer; +} DDHAL_DDEXEBUFCALLBACKS,*LPDDHAL_DDEXEBUFCALLBACKS; + +typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA *LPDDHAL_GETAVAILDRIVERMEMORYDATA; +typedef struct _DDHAL_UPDATENONLOCALHEAPDATA *LPDDHAL_UPDATENONLOCALHEAPDATA; +typedef struct _DDHAL_GETHEAPALIGNMENTDATA *LPDDHAL_GETHEAPALIGNMENTDATA; + +typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA); +typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP) (LPDDHAL_UPDATENONLOCALHEAPDATA); +typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT) (LPDDHAL_GETHEAPALIGNMENTDATA); + +typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory; + LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap; + LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment; + LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus; +} DDHAL_DDMISCELLANEOUSCALLBACKS,*LPDDHAL_DDMISCELLANEOUSCALLBACKS; + +typedef struct _DDHAL_CREATESURFACEEXDATA *LPDDHAL_CREATESURFACEEXDATA; +typedef struct _DDHAL_GETDRIVERSTATEDATA *LPDDHAL_GETDRIVERSTATEDATA; +typedef struct _DDHAL_DESTROYDDLOCALDATA *LPDDHAL_DESTROYDDLOCALDATA; + +typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA); +typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA); +typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA); + +typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPVOID Reserved; + LPDDHAL_CREATESURFACEEX CreateSurfaceEx; + LPDDHAL_GETDRIVERSTATE GetDriverState; + LPDDHAL_DESTROYDDLOCAL DestroyDDLocal; +} DDHAL_DDMISCELLANEOUS2CALLBACKS,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS; + +typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE); + +/***************************************************************************** + * driver info structure + * + * The HAL is queried for additional callbacks via the GetDriverInfo callback. + */ +typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA; +typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA); + +typedef struct _DDHALINFO { + DWORD dwSize; + LPDDHAL_DDCALLBACKS lpDDCallbacks; + LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks; + LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks; + VIDMEMINFO vmiData; + DDCORECAPS ddCaps; + DWORD dwMonitorFrequency; + LPDDHAL_GETDRIVERINFO GetDriverInfo; + DWORD dwModeIndex; + LPDWORD lpdwFourCC; + DWORD dwNumModes; + LPDDHALMODEINFO lpModeInfo; + DWORD dwFlags; + LPVOID lpPDevice; + DWORD hInstance; + /* DirectX 2 */ + ULONG_PTR lpD3DGlobalDriverData; + ULONG_PTR lpD3DHALCallbacks; + LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks; +} DDHALINFO; + +#define DDHALINFO_ISPRIMARYDISPLAY 0x00000001 +#define DDHALINFO_MODEXILLEGAL 0x00000002 +#define DDHALINFO_GETDRIVERINFOSET 0x00000004 + +/* where the high-level ddraw implementation stores the callbacks */ +typedef struct _DDHAL_CALLBACKS { + DDHAL_DDCALLBACKS cbDDCallbacks; + DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks; + DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks; + DDHAL_DDCALLBACKS HALDD; + DDHAL_DDSURFACECALLBACKS HALDDSurface; + DDHAL_DDPALETTECALLBACKS HALDDPalette; + DDHAL_DDCALLBACKS HELDD; + DDHAL_DDSURFACECALLBACKS HELDDSurface; + DDHAL_DDPALETTECALLBACKS HELDDPalette; + DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks; + DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf; + DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf; + /* there's more... videoport, colorcontrol, misc, and motion compensation callbacks... */ +} DDHAL_CALLBACKS,*LPDDHAL_CALLBACKS; + +/***************************************************************************** + * parameter structures + */ +typedef struct _DDHAL_DESTROYDRIVERDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + HRESULT ddRVal; + LPDDHAL_DESTROYDRIVER DestroyDriver; +} DDHAL_DESTROYDRIVERDATA; + +typedef struct _DDHAL_SETMODEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DWORD dwModeIndex; + HRESULT ddRVal; + LPDDHAL_SETMODE SetMode; + BOOL inexcl; + BOOL useRefreshRate; +} DDHAL_SETMODEDATA; + +typedef struct _DDHAL_CREATESURFACEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDSURFACEDESC lpDDSurfaceDesc; + LPDDRAWI_DDRAWSURFACE_LCL * lplpSList; + DWORD dwSCnt; + HRESULT ddRVal; + LPDDHAL_CREATESURFACE CreateSurface; +} DDHAL_CREATESURFACEDATA; + +typedef struct _DDHAL_CANCREATESURFACEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDSURFACEDESC lpDDSurfaceDesc; + DWORD bIsDifferentPixelFormat; + HRESULT ddRVal; + LPDDHAL_CANCREATESURFACE CanCreateSurface; +} DDHAL_CANCREATESURFACEDATA; + +typedef struct _DDHAL_CREATEPALETTEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; + LPPALETTEENTRY lpColorTable; + HRESULT ddRVal; + LPDDHAL_CREATEPALETTE CreatePalette; + BOOL is_excl; +} DDHAL_CREATEPALETTEDATA; + +typedef struct _DDHAL_SETEXCLUSIVEMODEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DWORD dwEnterExcl; + DWORD dwReserved; + HRESULT ddRVal; + LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode; +} DDHAL_SETEXCLUSIVEMODEDATA; + +/* surfaces */ +typedef struct _DDHAL_DESTROYSURFACEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + HRESULT ddRVal; + LPDDHALSURFCB_DESTROYSURFACE DestroySurface; +} DDHAL_DESTROYSURFACEDATA; + +typedef struct _DDHAL_FLIPDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg; + DWORD dwFlags; + HRESULT ddRVal; + LPDDHALSURFCB_FLIP Flip; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft; + LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft; +} DDHAL_FLIPDATA; + +typedef struct _DDHAL_LOCKDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + DWORD bHasRect; + RECTL rArea; + LPVOID lpSurfData; + HRESULT ddRVal; + LPDDHALSURFCB_LOCK Lock; + DWORD dwFlags; +} DDHAL_LOCKDATA; + +typedef struct _DDHAL_UNLOCKDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + HRESULT ddRVal; + LPDDHALSURFCB_UNLOCK Unlock; +} DDHAL_UNLOCKDATA; + +typedef struct _DDHAL_BLTDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; + RECTL rDest; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; + RECTL rSrc; + DWORD dwFlags; + DWORD dwROPFlags; + DDBLTFX bltFX; + HRESULT ddRVal; + LPDDHALSURFCB_BLT Blt; + BOOL IsClipped; + RECTL rOrigDest; + RECTL rOrigSrc; + DWORD dwRectCnt; + LPRECT prDestRects; +} DDHAL_BLTDATA; + +typedef struct _DDHAL_UPDATEOVERLAYDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; + RECTL rDest; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; + RECTL rSrc; + DWORD dwFlags; + DDOVERLAYFX overlayFX; + HRESULT ddRVal; + LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay; +} DDHAL_UPDATEOVERLAYDATA; + +typedef struct _DDHAL_SETPALETTEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; + LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; + HRESULT ddRVal; + LPDDHALSURFCB_SETPALETTE SetPalette; + BOOL Attach; +} DDHAL_SETPALETTEDATA; + +/* palettes */ +typedef struct _DDHAL_DESTROYPALETTEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; + HRESULT ddRVal; + LPDDHALPALCB_DESTROYPALETTE DestroyPalette; +} DDHAL_DESTROYPALETTEDATA; + +typedef struct _DDHAL_SETENTRIESDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; + DWORD dwBase; + DWORD dwNumEntries; + LPPALETTEENTRY lpEntries; + HRESULT ddRVal; + LPDDHALPALCB_SETENTRIES SetEntries; +} DDHAL_SETENTRIESDATA; + +typedef struct _DDHAL_GETDRIVERINFODATA { + DWORD dwSize; + DWORD dwFlags; + GUID guidInfo; + DWORD dwExpectedSize; + LPVOID lpvData; + DWORD dwActualSize; + HRESULT ddRVal; + ULONG_PTR dwContext; +} DDHAL_GETDRIVERINFODATA; + +/***************************************************************************** + * high-level ddraw implementation structures + */ +typedef struct _IUNKNOWN_LIST { + struct _IUNKNOWN_LIST * lpLink; + LPGUID lpGuid; + IUnknown * lpIUnknown; +} IUNKNOWN_LIST,*LPIUNKNOWN_LIST; + +typedef struct _PROCESS_LIST { + struct _PROCESS_LIST * lpLink; + DWORD dwProcessId; + DWORD dwRefCnt; + DWORD dwAlphaDepth; + DWORD dwZDepth; +} PROCESS_LIST,*LPPROCESS_LIST; + +typedef struct _ATTACHLIST { + DWORD dwFlags; + struct _ATTACHLIST * lpLink; + LPDDRAWI_DDRAWSURFACE_LCL lpAttached; + LPDDRAWI_DDRAWSURFACE_INT lpIAttached; +} ATTACHLIST,*LPATTACHLIST; + +#define DDAL_IMPLICIT 0x00000001 + +typedef struct _ACCESSRECTLIST { + struct _ACCESSRECTLIST * lpLink; + RECT rDest; + LPDDRAWI_DIRECTDRAW_LCL lpOwner; + LPVOID lpSurfaceData; + DWORD dwFlags; + LPHEAPALIASINFO lpHeapAliasInfo; +} ACCESSRECTLIST,*LPACCESSRECTLIST; + +#define ACCESSRECT_VRAMSTYLE 0x00000001 +#define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002 +#define ACCESSRECT_BROKEN 0x00000004 + +typedef struct _DBLNODE { + struct _DBLNODE * next; + struct _DBLNODE * prev; + LPDDRAWI_DDRAWSURFACE_LCL object; + LPDDRAWI_DDRAWSURFACE_INT object_int; +} DBLNODE,*LPDBLNODE; + +typedef struct _DDRAWI_DIRECTDRAW_INT { + LPVOID lpVtbl; + LPDDRAWI_DIRECTDRAW_LCL lpLcl; + LPDDRAWI_DIRECTDRAW_INT lpLink; + DWORD dwIntRefCnt; +} DDRAWI_DIRECTDRAW_INT; + +typedef struct _DDRAWI_DIRECTDRAW_LCL { + DWORD lpDDMore; + LPDDRAWI_DIRECTDRAW_GBL lpGbl; + DWORD dwUnused0; + DWORD dwLocalFlags; + DWORD dwLocalRefCnt; + DWORD dwProcessId; + IUnknown * pUnkOuter; + DWORD dwObsolete1; + ULONG_PTR hWnd; + ULONG_PTR hDC; + DWORD dwErrorMode; + LPDDRAWI_DDRAWSURFACE_INT lpPrimary; + LPDDRAWI_DDRAWSURFACE_INT lpCB; + DWORD dwPreferredMode; + /* DirectX 2 */ + HINSTANCE hD3DInstance; + IUnknown * pD3DIUnknown; + LPDDHAL_CALLBACKS lpDDCB; + ULONG_PTR hDDVxd; + /* DirectX 5.0 */ + DWORD dwAppHackFlags; + /* DirectX 5.0A */ + ULONG_PTR hFocusWnd; + DWORD dwHotTracking; + DWORD dwIMEState; + /* DirectX 6.0 */ + ULONG_PTR hWndPopup; + ULONG_PTR hDD; + ULONG_PTR hGammaCalibrator; + LPDDGAMMACALIBRATORPROC lpGammaCalibrator; +} DDRAWI_DIRECTDRAW_LCL; + +#define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001 +#define DDRAWILCL_ISFULLSCREEN 0x00000002 +#define DDRAWILCL_SETCOOPCALLED 0x00000004 +#define DDRAWILCL_ACTIVEYES 0x00000008 +#define DDRAWILCL_ACTIVENO 0x00000010 +#define DDRAWILCL_HOOKEDHWND 0x00000020 +#define DDRAWILCL_ALLOWMODEX 0x00000040 +#define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080 +#define DDRAWILCL_MODEHASBEENCHANGED 0x00000100 +#define DDRAWILCL_CREATEDWINDOW 0x00000200 +#define DDRAWILCL_DIRTYDC 0x00000400 +#define DDRAWILCL_DISABLEINACTIVATE 0x00000800 +#define DDRAWILCL_CURSORCLIPPED 0x00001000 +#define DDRAWILCL_EXPLICITMONITOR 0x00002000 +#define DDRAWILCL_MULTITHREADED 0x00004000 +#define DDRAWILCL_FPUSETUP 0x00008000 +#define DDRAWILCL_POWEREDDOWN 0x00010000 +#define DDRAWILCL_DIRECTDRAW7 0x00020000 +#define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000 +#define DDRAWILCL_FPUPRESERVE 0x00080000 + +typedef struct _DDRAWI_DIRECTDRAW_GBL { + DWORD dwRefCnt; + DWORD dwFlags; + FLATPTR fpPrimaryOrig; + DDCORECAPS ddCaps; + DWORD dwInternal1; + DWORD dwUnused1[9]; + LPDDHAL_CALLBACKS lpDDCBtmp; + LPDDRAWI_DDRAWSURFACE_INT dsList; + LPDDRAWI_DDRAWPALETTE_INT palList; + LPDDRAWI_DDRAWCLIPPER_INT clipperList; + LPDDRAWI_DIRECTDRAW_GBL lp16DD; + DWORD dwMaxOverlays; + DWORD dwCurrOverlays; + DWORD dwMonitorFrequency; + DDCORECAPS ddHELCaps; + DWORD dwUnused2[50]; + DDCOLORKEY ddckCKDestOverlay; + DDCOLORKEY ddckCKSrcOverlay; + VIDMEMINFO vmiData; + LPVOID lpDriverHandle; + LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner; + DWORD dwModeIndex; + DWORD dwModeIndexOrig; + DWORD dwNumFourCC; + LPDWORD lpdwFourCC; + DWORD dwNumModes; + LPDDHALMODEINFO lpModeInfo; + PROCESS_LIST plProcessList; + DWORD dwSurfaceLockCount; + DWORD dwAliasedLockCnt; + ULONG_PTR dwReserved3; + ULONG_PTR hDD; + char cObsolete[12]; + DWORD dwReserved1; + DWORD dwReserved2; + DBLNODE dbnOverlayRoot; + volatile LPWORD lpwPDeviceFlags; + DWORD dwPDevice; + DWORD dwWin16LockCnt; + DWORD dwUnused3; + DWORD hInstance; + DWORD dwEvent16; + DWORD dwSaveNumModes; + /* DirectX 2 */ + ULONG_PTR lpD3DGlobalDriverData; + ULONG_PTR lpD3DHALCallbacks; + DDCORECAPS ddBothCaps; + /* DirectX 5.0 */ + LPDDVIDEOPORTCAPS lpDDVideoPortCaps; + LPDDRAWI_DDVIDEOPORT_INT dvpList; + ULONG_PTR lpD3DHALCallbacks2; + RECT rectDevice; + DWORD cMonitors; + LPVOID gpbmiSrc; + LPVOID gpbmiDest; + LPHEAPALIASINFO phaiHeapAliases; + ULONG_PTR hKernelHandle; + ULONG_PTR pfnNotifyProc; + LPDDKERNELCAPS lpDDKernelCaps; + LPDDNONLOCALVIDMEMCAPS lpddNLVCaps; + LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps; + LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps; + ULONG_PTR lpD3DExtendedCaps; + /* DirectX 5.0A */ + DWORD dwDOSBoxEvent; + RECT rectDesktop; + char cDriverName[MAX_DRIVER_NAME]; + /* DirectX 6.0 */ + ULONG_PTR lpD3DHALCallbacks3; + DWORD dwNumZPixelFormats; + LPDDPIXELFORMAT lpZPixelFormats; + LPDDRAWI_DDMOTIONCOMP_INT mcList; + DWORD hDDVxd; + DDSCAPSEX ddsCapsMore; +} DDRAWI_DIRECTDRAW_GBL; + +#define DDRAWI_VIRTUALDESKTOP 0x00000008 +#define DDRAWI_MODEX 0x00000010 +#define DDRAWI_DISPLAYDRV 0x00000020 +#define DDRAWI_FULLSCREEN 0x00000040 +#define DDRAWI_MODECHANGED 0x00000080 +#define DDRAWI_NOHARDWARE 0x00000100 +#define DDRAWI_PALETTEINIT 0x00000200 +#define DDRAWI_NOEMULATION 0x00000400 +/* more... */ + +/* surfaces */ +typedef struct _DDRAWI_DDRAWSURFACE_INT { + LPVOID lpVtbl; + LPDDRAWI_DDRAWSURFACE_LCL lpLcl; + LPDDRAWI_DDRAWSURFACE_INT lpLink; + DWORD dwIntRefCnt; +} DDRAWI_DDRAWSURFACE_INT; + +typedef struct _DDRAWI_DDRAWSURFACE_GBL { + DWORD dwRefCnt; + DWORD dwGlobalFlags; + union { + LPACCESSRECTLIST lpRectList; + DWORD dwBlockSizeY; + } DUMMYUNIONNAME1; + union { + LPVMEMHEAP lpVidMemHeap; + DWORD dwBlockSizeX; + } DUMMYUNIONNAME2; + union { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + LPVOID lpDDHandle; + } DUMMYUNIONNAME3; + FLATPTR fpVidMem; + union { + LONG lPitch; + DWORD dwLinearSize; + } DUMMYUNIONNAME4; + WORD wHeight; + WORD wWidth; + DWORD dwUsageCount; + ULONG_PTR dwReserved1; /* for display driver use */ + /* optional (defaults to primary surface pixelformat) */ + DDPIXELFORMAT ddpfSurface; +} DDRAWI_DDRAWSURFACE_GBL; + +#define DDRAWISURFGBL_MEMFREE 0x00000001 +#define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002 +#define DDRAWISURFGBL_ISGDISURFACE 0x00000004 +#define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008 +#define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010 +#define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020 +#define DDRAWISURFGBL_LOCKBROKEN 0x00000040 +#define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080 +#define DDRAWISURFGBL_ISCLIENTMEM 0x00000100 +#define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200 +#define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400 +#define DDRAWISURFGBL_HARDWAREOPSTARTED 0x00000600 +#define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800 +#define DDRAWISURFGBL_VPORTDATA 0x00001000 +#define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000 +#define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000 +#define DDRAWISURFGBL_FASTLOCKHELD 0x00008000 +#define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000 + +typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE { + DWORD dwSize; + union { + DWORD dwPhysicalPageTable; + FLATPTR fpPhysicalVidMem; + } DUMMYUNIONNAME1; + LPDWORD pPageTable; + DWORD cPages; + ULONG_PTR dwSavedDCContext; + FLATPTR fpAliasedVidMem; + ULONG_PTR dwDriverReserved; + ULONG_PTR dwHELReserved; + DWORD cPageUnlocks; + ULONG_PTR hKernelSurface; + DWORD dwKernelRefCnt; + LPDDCOLORCONTROL lpColorInfo; + FLATPTR fpNTAlias; + DWORD dwContentsStamp; + LPVOID lpvUnswappedDriverReserved; + LPVOID lpDDRAWReserved2; + DWORD dwDDRAWReserved1; + DWORD dwDDRAWReserved2; + FLATPTR fpAliasOfVidMem; +} DDRAWI_DDRAWSURFACE_GBL_MORE; + +/* the MS version of this macro was somewhat obfuscated and unreadable + * (possibly because of mediocre MS coders)... so I simplified it... + * (and so I commit no copyright violations either, hah) */ +#define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \ + (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1)) + +typedef struct _DDRAWI_DDRAWSURFACE_MORE { + DWORD dwSize; + IUNKNOWN_LIST * lpIUnknowns; + LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; + DWORD dwPageLockCount; + DWORD dwBytesAllocated; + LPDDRAWI_DIRECTDRAW_INT lpDD_int; + DWORD dwMipMapCount; + LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper; + /* DirectX 5.0 */ + LPHEAPALIASINFO lpHeapAliasInfo; + DWORD dwOverlayFlags; + VOID *rgjunc; + LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; + LPDDOVERLAYFX lpddOverlayFX; + DDSCAPSEX ddsCapsEx; + DWORD dwTextureStage; + LPVOID lpDDRAWReserved; + LPVOID lpDDRAWReserved2; + LPVOID lpDDrawReserved3; + DWORD dwDDrawReserved4; + LPVOID lpDDrawReserved5; + LPDWORD lpGammaRamp; + LPDWORD lpOriginalGammaRamp; + LPVOID lpDDrawReserved6; + DWORD dwSurfaceHandle; + DWORD qwDDrawReserved8[2]; + LPVOID lpDDrawReserved9; + DWORD cSurfaces; + LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2; + LPDDRAWI_DDRAWSURFACE_LCL *slist; + DWORD dwFVF; + LPVOID lpVB; +} DDRAWI_DDRAWSURFACE_MORE; + +typedef struct _DDRAWI_DDRAWSURFACE_LCL { + LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore; + LPDDRAWI_DDRAWSURFACE_GBL lpGbl; + ULONG_PTR hDDSurface; + LPATTACHLIST lpAttachList; + LPATTACHLIST lpAttachListFrom; + DWORD dwLocalRefCnt; + DWORD dwProcessId; + DWORD dwFlags; + DDSCAPS ddsCaps; + LPDDRAWI_DDRAWPALETTE_INT lpDDPalette; + LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper; + DWORD dwModeCreatedIn; + DWORD dwBackBufferCount; + DDCOLORKEY ddckCKDestBlt; + DDCOLORKEY ddckCKSrcBlt; + ULONG_PTR hDC; + ULONG_PTR dwReserved1; /* for display driver use */ + /* overlays only */ + DDCOLORKEY ddckCKSrcOverlay; + DDCOLORKEY ddckCKDestOverlay; + LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying; + DBLNODE dbnOverlayNode; + RECT rcOverlaySrc; + RECT rcOverlayDest; + DWORD dwClrXparent; + DWORD dwAlpha; + LONG lOverlayX; + LONG lOverlayY; +} DDRAWI_DDRAWSURFACE_LCL; + +#define DDRAWISURF_ATTACHED 0x00000001 +#define DDRAWISURF_IMPLICITCREATE 0x00000002 +#define DDRAWISURF_ISFREE 0x00000004 +#define DDRAWISURF_ATTACHED_FROM 0x00000008 +#define DDRAWISURF_IMPLICITROOT 0x00000010 +#define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020 +#define DDRAWISURF_DATAISALIASED 0x00000040 +#define DDRAWISURF_HASDC 0x00000080 +#define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100 +#define DDRAWISURF_HASCKEYDESTBLT 0x00000200 +#define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400 +#define DDRAWISURF_HASCKEYSRCBLT 0x00000800 +#define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000 +#define DDRAWISURF_HASPIXELFORMAT 0x00002000 +#define DDRAWISURF_HASOVERLAYDATA 0x00004000 +#define DDRAWISURF_SETGAMMA 0x00008000 +/* more... */ +#define DDRAWISURF_INVALID 0x10000000 + +/* palettes */ +typedef struct _DDRAWI_DDRAWPALETTE_INT { + LPVOID lpVtbl; + LPDDRAWI_DDRAWPALETTE_LCL lpLcl; + LPDDRAWI_DDRAWPALETTE_INT lpLink; + DWORD dwIntRefCnt; +} DDRAWI_DDRAWPALETTE_INT; + +typedef struct _DDRAWI_DDRAWPALETTE_GBL { + DWORD dwRefCnt; + DWORD dwFlags; + LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; + DWORD dwProcessId; + LPPALETTEENTRY lpColorTable; + union { + ULONG_PTR dwReserved1; /* for display driver use */ + HPALETTE hHELGDIPalette; + } DUMMYUNIONNAME1; + /* DirectX 5.0 */ + DWORD dwDriverReserved; + DWORD dwContentsStamp; + /* DirectX 6.0 */ + DWORD dwSaveStamp; + /* DirectX 7.0 */ + DWORD dwHandle; +} DDRAWI_DDRAWPALETTE_GBL; + +#define DDRAWIPAL_256 0x00000001 +#define DDRAWIPAL_16 0x00000002 +#define DDRAWIPAL_GDI 0x00000004 +#define DDRAWIPAL_STORED_8 0x00000008 +#define DDRAWIPAL_STORED_16 0x00000010 +#define DDRAWIPAL_STORED_24 0x00000020 +#define DDRAWIPAL_EXCLUSIVE 0x00000040 +#define DDRAWIPAL_INHEL 0x00000080 +#define DDRAWIPAL_DIRTY 0x00000100 +#define DDRAWIPAL_ALLOW256 0x00000200 +#define DDRAWIPAL_4 0x00000400 +#define DDRAWIPAL_2 0x00000800 +#define DDRAWIPAL_STORED_8INDEX 0x00001000 +#define DDRAWIPAL_ALPHA 0x00002000 + +typedef struct _DDRAWI_DDRAWPALETTE_LCL { + DWORD lpPalMore; + LPDDRAWI_DDRAWPALETTE_GBL lpGbl; + ULONG_PTR dwUnused0; + DWORD dwLocalRefCnt; + IUnknown * pUnkOuter; + LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; + ULONG_PTR dwReserved1; + /* DirectX 6.0 */ + ULONG_PTR dwDDRAWReserved1; + ULONG_PTR dwDDRAWReserved2; + ULONG_PTR dwDDRAWReserved3; +} DDRAWI_DDRAWPALETTE_LCL; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* __WINE_DDRAWI_H */ diff --git a/Include/dxwnd.h b/Include/dxwnd.h index a2fa91e..eb5cec4 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -104,6 +104,12 @@ #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!) +#define FORCESHEL 0x02000000 // Forces HEL (DDCREATE_EMULATIONONLY) +#define CAPMASK 0x04000000 // Enable capability mask (according to ini file) +#define COLORFIX 0x08000000 // Win7 color fix for 8bpp paletized modes +#define NODDRAWBLT 0x10000000 // Suppress ddraw Blt to primary +#define NODDRAWFLIP 0x20000000 // Suppress ddraw Flip to primary +#define NOGDIBLT 0x40000000 // Suppress GDI Blt to video device // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general @@ -156,6 +162,7 @@ typedef struct short IsFullScreen; short Width, Height; short ColorDepth; + //DDPIXELFORMAT VirtualPixel; short DXVersion; HWND hWnd; DWORD dwPid; @@ -163,6 +170,7 @@ typedef struct DWORD FPSCount; int TimeShift; short CursorX, CursorY; + PALETTEENTRY Palette[256]; } DXWNDSTATUS; extern DXWNDSTATUS DxWndStatus; diff --git a/build/dxwnd.1.ini b/build/dxwnd.1.ini new file mode 100644 index 0000000..ca2a645 --- /dev/null +++ b/build/dxwnd.1.ini @@ -0,0 +1,5848 @@ +[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 new file mode 100644 index 0000000..2ff451e --- /dev/null +++ b/build/dxwnd.2.ini @@ -0,0 +1,1133 @@ +[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 new file mode 100644 index 0000000..00c9d6c --- /dev/null +++ b/build/dxwnd.3.ini @@ -0,0 +1,167 @@ +[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.dll b/build/dxwnd.dll index 863ff0a..0f2fdbf 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d388e96ad41d9c1eafc912aecd8968fbd61f7f293a1f1a1cd69df02309c64344 -size 419328 +oid sha256:af6a5009d304a3e8cd4b4303697b68a8a6e060a6815e60b70a75a622cf8e4870 +size 421376 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index 1bd0b4a..c19a054 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:376135e3ce4f0be506edbfb44720a7c762f120258e1b24c11ccd6fe11cc6d375 -size 526336 +oid sha256:78e9db00462bdbd92c3b15f0f9e7aa7ae434573ccaa808af1226ba489104837f +size 532480 diff --git a/build/dxwnd.ini b/build/dxwnd.ini index 262883f..a93fb10 100644 --- a/build/dxwnd.ini +++ b/build/dxwnd.ini @@ -1,5 +1,2812 @@ +[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=66 +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=671088676 +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=2 +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=4 +flagi13=0 +tflag13=35 +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=0 +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=134217748 +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=6 +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=1207959568 +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=2 +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=Hard Truck - Road to Victory +path53=C:\Hard Truck\HTruck.exe +module53= +opengllib53= +ver53=0 +coord53=0 +flag53=134217760 +flagg53=134217728 +flagh53=2068 +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=Hellcopter +path54=D:\Games\Hellcopter\HCopter.exe +module54= +opengllib54= +ver54=0 +coord54=0 +flag54=134217762 +flagg54=134217728 +flagh54=1044 +flagi54=0 +tflag54=258 +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=Heroes of Might & Magic 2 Gold +path55=D:\Games\heroes2gold\HEROES2W.EXE +module55= +opengllib55= +ver55=0 +coord55=0 +flag55=134217730 +flagg55=143654912 +flagh55=20 +flagi55=0 +tflag55=770 +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 and Magic 3 CD +path56=D:\Games\Heroes of Might & Magic III\HEROES3.EXE +module56= +opengllib56= +ver56=0 +coord56=0 +flag56=134217762 +flagg56=1207959552 +flagh56=20 +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=Heroes of Might and Magic 3 Complete +path57=D:\Games\Heroes of Might and Magic 3 Complete\Heroes3.exe +module57= +opengllib57= +ver57=0 +coord57=0 +flag57=134217762 +flagg57=1207959552 +flagh57=20 +flagi57=0 +tflag57=2 +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 4 Complete +path58=D:\Games\Heroes of Might and Magic 4 Complete\heroes4.exe +module58= +opengllib58= +ver58=0 +coord58=0 +flag58=134283298 +flagg58=1209008128 +flagh58=65556 +flagi58=0 +tflag58=2 +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 IV +path59=D:\Games\Heroes of Might and Magic IV\heroes4i.exe +module59= +opengllib59= +ver59=0 +coord59=0 +flag59=134283298 +flagg59=1211121728 +flagh59=65556 +flagi59=0 +tflag59=2 +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=HoI2.exe +path60=D:\Games\HoI2 Doomsday\HoI2.exe +module60= +opengllib60= +ver60=0 +coord60=0 +flag60=150994976 +flagg60=134217728 +flagh60=20 +flagi60=0 +tflag60=258 +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=Hooligans Storm over Europe +path61=D:\Games\Hooligans\Hooligans.exe +module61= +opengllib61= +ver61=0 +coord61=0 +flag61=134742048 +flagg61=202375168 +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=Imperialism +path62=D:\Games\Imperialism\Imperialism.exe +module62= +opengllib62= +ver62=0 +coord62=0 +flag62=679485474 +flagg62=134217728 +flagh62=32788 +flagi62=0 +tflag62=2 +initx62=0 +inity62=0 +minx62=0 +miny62=0 +maxx62=0 +maxy62=0 +posx62=50 +posy62=50 +sizx62=1200 +sizy62=900 +maxfps62=0 +initts62=0 +title63=Imperialism II +path63=D:\Games\imperialism_2\imperialism II.exe +module63= +opengllib63= +ver63=0 +coord63=0 +flag63=671096866 +flagg63=470810688 +flagh63=20 +flagi63=0 +tflag63=66 +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=Kohan II Kings of War +path64=D:\Games\Kohan II Kings of War\k2.exe +module64= +opengllib64= +ver64=0 +coord64=0 +flag64=134217762 +flagg64=1207959552 +flagh64=20 +flagi64=0 +tflag64=0 +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=Martian Gothic Unification +path65=D:\Games\Martian Gothic\martian gothic.exe +module65= +opengllib65= +ver65=0 +coord65=0 +flag65=402653217 +flagg65=134217728 +flagh65=8212 +flagi65=0 +tflag65=275 +initx65=0 +inity65=0 +minx65=0 +miny65=0 +maxx65=0 +maxy65=0 +posx65=1450 +posy65=50 +sizx65=400 +sizy65=300 +maxfps65=0 +initts65=0 +title66=Mechwarrior 3 +path66=D:\Games\Mechwarrior 3 (full)\Mech3.exe +module66= +opengllib66= +ver66=0 +coord66=0 +flag66=671096866 +flagg66=-2012086272 +flagh66=20 +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=0 +initts66=0 +title67=Messiah GOG +path67=D:\Games\Messiah (GOG)\MessiahD3D.exe +module67= +opengllib67= +ver67=7 +coord67=0 +flag67=947912738 +flagg67=1207959552 +flagh67=20 +flagi67=0 +tflag67=2 +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=Nightmare Ned +path68=D:\Games\Ned\NITENED.EXE +module68= +opengllib68= +ver68=0 +coord68=0 +flag68=134217762 +flagg68=134217728 +flagh68=1048596 +flagi68=0 +tflag68=2 +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=Premier Manager 98 +path69=D:\Games\Premier Manager 98\MANAGER.EXE +module69= +opengllib69= +ver69=1 +coord69=0 +flag69=671088674 +flagg69=1207959552 +flagh69=20 +flagi69=0 +tflag69=0 +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=Raiden II +path70=D:\Games\raiden2\RAIDENII.EXE +module70= +opengllib70= +ver70=0 +coord70=1 +flag70=134217762 +flagg70=134217728 +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=Rapanui +path71=D:\Games\Rapanui\Rapanui.exe +module71= +opengllib71= +ver71=0 +coord71=0 +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=Rayman 2 (GOG) +path72=D:\Games\GOG.com\Rayman 2\Rayman2.exe +module72= +opengllib72= +ver72=1 +coord72=0 +flag72=134217762 +flagg72=1208025088 +flagh72=20 +flagi72=0 +tflag72=274 +initx72=0 +inity72=0 +minx72=0 +miny72=0 +maxx72=0 +maxy72=0 +posx72=50 +posy72=50 +sizx72=800 +sizy72=600 +maxfps72=0 +initts72=8 +title73=Rayman2.exe +path73=C:\Program Files\GOG.com\Rayman 2\Rayman2.exe +module73= +opengllib73= +ver73=1 +coord73=0 +flag73=134217763 +flagg73=1208029184 +flagh73=2097172 +flagi73=0 +tflag73=18 +initx73=0 +inity73=0 +minx73=0 +miny73=0 +maxx73=0 +maxy73=0 +posx73=50 +posy73=50 +sizx73=800 +sizy73=600 +maxfps73=50 +initts73=8 +title74=Rayman 2 Demo +path74=D:\Games\Rayman2Demo\Rayman2Demo.exe +module74= +opengllib74= +ver74=1 +coord74=0 +flag74=134217762 +flagg74=1207959552 +flagh74=20 +flagi74=0 +tflag74=259 +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=Silent Hunter II (shell) +path75=D:\Games\Silent Hunter II\Shell\Shell.exe +module75= +opengllib75= +ver75=0 +coord75=0 +flag75=402653221 +flagg75=135266304 +flagh75=20 +flagi75=0 +tflag75=2 +initx75=0 +inity75=0 +minx75=0 +miny75=0 +maxx75=800 +maxy75=600 +posx75=50 +posy75=50 +sizx75=800 +sizy75=600 +maxfps75=0 +initts75=0 +title76=Silent Hunter II (sim) +path76=D:\Games\Silent Hunter II\Sim\Sim.exe +module76= +opengllib76= +ver76=0 +coord76=0 +flag76=134217780 +flagg76=134217728 +flagh76=20 +flagi76=0 +tflag76=0 +initx76=400 +inity76=300 +minx76=0 +miny76=0 +maxx76=800 +maxy76=600 +posx76=50 +posy76=50 +sizx76=800 +sizy76=600 +maxfps76=0 +initts76=0 +title77=Space Hack +path77=D:\Games\Space Hack\main.exe +module77= +opengllib77= +ver77=0 +coord77=0 +flag77=671105058 +flagg77=134217728 +flagh77=20 +flagi77=0 +tflag77=258 +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=Tachyon The Fringe +path78=D:\Games\TachyonTheFringe\space.exe +module78= +opengllib78= +ver78=0 +coord78=0 +flag78=134234148 +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=Tanktics +path79=D:\Games\Tanktics\tanktics.exe +module79= +opengllib79= +ver79=0 +coord79=0 +flag79=671088674 +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=TD5_D3D.exe +path80=D:\Games\Test Drive 5\TD5_D3D.exe +module80= +opengllib80= +ver80=0 +coord80=0 +flag80=134217760 +flagg80=1207959552 +flagh80=20 +flagi80=0 +tflag80=64 +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=The Sims +path81=D:\Games\sims\Sims.exe +module81= +opengllib81= +ver81=0 +coord81=0 +flag81=671096866 +flagg81=134217728 +flagh81=20 +flagi81=0 +tflag81=66 +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=Tomb Raider - The Last Revelation +path82=D:\Games\Tomb Raider - The Last Revelation\tomb4.exe +module82= +opengllib82= +ver82=0 +coord82=0 +flag82=134217826 +flagg82=134217728 +flagh82=20 +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=TOMB2.EXE +path83=D:\Games\Tomb Raider 2\TOMB2.EXE +module83= +opengllib83= +ver83=0 +coord83=0 +flag83=134217760 +flagg83=201326592 +flagh83=2068 +flagi83=0 +tflag83=0 +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=Vangers one of the Road +path84=D:\Games\Vangers\road.exe +module84= +opengllib84= +ver84=1 +coord84=0 +flag84=406847650 +flagg84=671088640 +flagh84=262164 +flagi84=0 +tflag84=258 +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=wa.exe +path85=D:\Games\worms_arma\Worms_2_Armageddon\wa.exe +module85= +opengllib85= +ver85=0 +coord85=0 +flag85=713031712 +flagg85=142606336 +flagh85=20 +flagi85=0 +tflag85=2 +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=Wargames +path86=D:\Games\WarGames\wargames.exe +module86= +opengllib86= +ver86=0 +coord86=0 +flag86=134217762 +flagg86=1207959552 +flagh86=20 +flagi86=0 +tflag86=66 +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=Warlords 3 +path87=D:\Games\Warlords3\Darklord.exe +module87= +opengllib87= +ver87=0 +coord87=0 +flag87=-2013249502 +flagg87=135266304 +flagh87=20 +flagi87=0 +tflag87=2 +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=Western Front +path88=D:\Games\Western Front\wf.exe +module88= +opengllib88= +ver88=0 +coord88=0 +flag88=679477282 +flagg88=135266304 +flagh88=16404 +flagi88=0 +tflag88=0 +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=dw.exe +path89=D:\Games\Devil.Whiskey\dw.exe +module89= +opengllib89= +ver89=7 +coord89=0 +flag89=671088674 +flagg89=1208090624 +flagh89=5 +flagi89=0 +tflag89=64 +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=Dungeon Lords MMXII +path90=D:\Games\Dungeon Lords MMXII\dlords2012.exe +module90= +opengllib90= +ver90=0 +coord90=2 +flag90=-2013265886 +flagg90=1207959552 +flagh90=20 +flagi90=0 +tflag90=0 +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=Bunnies must die +path91=D:\Games\Bunnies must die\bmd.exe +module91= +opengllib91= +ver91=7 +coord91=0 +flag91=671088674 +flagg91=1209008128 +flagh91=4 +flagi91=0 +tflag91=2 +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=Magic & Mayhem +path92=D:\Games\Magic_&_Mayhem\Chaos.exe +module92= +opengllib92= +ver92=0 +coord92=0 +flag92=138428450 +flagg92=1275068416 +flagh92=8388628 +flagi92=0 +tflag92=258 +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=Submarine Titans Demo +path93=D:\Games\Submarine Titans Demo\st.exe +module93= +opengllib93= +ver93=0 +coord93=0 +flag93=675282978 +flagg93=1207959552 +flagh93=20 +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\gpl\gpl.exe +module94= +opengllib94= +ver94=0 +coord94=2 +flag94=721420320 +flagg94=1207959568 +flagh94=20 +flagi94=0 +tflag94=322 +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=Land of the Dead +path95=D:\Games\Land of the Dead\System\LOTD.exe +module95= +opengllib95= +ver95=0 +coord95=0 +flag95=134217766 +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 +title96=Devastation +path96=D:\Games\Devastation\System\Devastation.exe +module96= +opengllib96= +ver96=0 +coord96=0 +flag96=671088674 +flagg96=1207959552 +flagh96=16 +flagi96=0 +tflag96=66 +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=RCRacers.exe +path97=D:\Games\Sierra\RCRacing\RCRacers.exe +module97= +opengllib97= +ver97=0 +coord97=0 +flag97=679477282 +flagg97=1209008128 +flagh97=65556 +flagi97=0 +tflag97=66 +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=Kiss Psycho Circus +path98=D:\Games\Kiss\psycho.exe +module98= +opengllib98= +ver98=0 +coord98=0 +flag98=134217762 +flagg98=1207959552 +flagh98=20 +flagi98=0 +tflag98=64 +initx98=0 +inity98=0 +minx98=0 +miny98=0 +maxx98=0 +maxy98=0 +posx98=50 +posy98=50 +sizx98=800 +sizy98=600 +maxfps98=0 +initts98=0 +title99=Hamsterball +path99=D:\Games\Hamsterball\Hamsterball.exe +module99= +opengllib99= +ver99=8 +coord99=0 +flag99=134217762 +flagg99=1207959552 +flagh99=20 +flagi99=0 +tflag99=323 +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=Pharaoh's Ascent 1.4 +path100=D:\Games\Pharaohs_Ascent_1.4\Pharaoh.exe +module100= +opengllib100= +ver100=0 +coord100=0 +flag100=947912739 +flagg100=1209008128 +flagh100=20 +flagi100=0 +tflag100=66 +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=Praetorians +path101=D:\Games\Praetorians\Praetorians.exe +module101= +opengllib101= +ver101=0 +coord101=0 +flag101=134217760 +flagg101=1207959552 +flagh101=20 +flagi101=0 +tflag101=258 +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=Chariots of War binkplay +path102=D:\Games\Chariots of War\data\movies\binkplay.exe +module102= +opengllib102= +ver102=0 +coord102=0 +flag102=671088674 +flagg102=1745879041 +flagh102=4 +flagi102=0 +tflag102=2 +initx102=0 +inity102=0 +minx102=0 +miny102=0 +maxx102=0 +maxy102=0 +posx102=50 +posy102=50 +sizx102=800 +sizy102=600 +maxfps102=0 +initts102=0 +title103=Jetboat Superchamps 2 +path103=D:\Games\Jetboat Superchamps 2\Jbs2.exe +module103= +opengllib103= +ver103=0 +coord103=0 +flag103=134217760 +flagg103=1207959552 +flagh103=4 +flagi103=0 +tflag103=2 +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=Star Force Deluxe +path104=D:\Games\stardeluxe\DELUXE.EXE +module104= +opengllib104= +ver104=0 +coord104=0 +flag104=1207959587 +flagg104=1828716544 +flagh104=10551828 +flagi104=0 +tflag104=259 +initx104=0 +inity104=0 +minx104=0 +miny104=0 +maxx104=0 +maxy104=0 +posx104=50 +posy104=50 +sizx104=400 +sizy104=300 +maxfps104=0 +initts104=0 +title105=Last Bronx +path105=D:\Games\Last_Bronx\LB.EXE +module105= +opengllib105= +ver105=0 +coord105=0 +flag105=134217762 +flagg105=1207959552 +flagh105=20 +flagi105=0 +tflag105=259 +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=Riot Police +path106=D:\Games\Riot Police\RPolice.exe +module106= +opengllib106= +ver106=0 +coord106=0 +flag106=134217762 +flagg106=1207959552 +flagh106=20 +flagi106=0 +tflag106=2 +initx106=0 +inity106=0 +minx106=0 +miny106=0 +maxx106=0 +maxy106=0 +posx106=50 +posy106=50 +sizx106=800 +sizy106=600 +maxfps106=0 +initts106=0 +title107=Serious Sam Demo +path107=D:\Games\Serious Sam Demo\Bin\SeriousSam.exe +module107= +opengllib107= +ver107=0 +coord107=0 +flag107=134217762 +flagg107=1208090624 +flagh107=20 +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=Space Rangers +path108=D:\Games\Space Rangers\Rangers.exe +module108= +opengllib108= +ver108=1 +coord108=0 +flag108=134234146 +flagg108=1207959552 +flagh108=20 +flagi108=0 +tflag108=0 +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=Star Wars Shadow of the Empire +path109=D:\Games\Star Wars Shadow of the Empire\game\SDATA\SHADOWS.EXE +module109= +opengllib109= +ver109=0 +coord109=0 +flag109=201392162 +flagg109=1476919296 +flagh109=41943580 +flagi109=0 +tflag109=275 +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=Roswell Pinball +path110=D:\Games\RoswellPinball\winpin.exe +module110= +opengllib110= +ver110=0 +coord110=0 +flag110=134217762 +flagg110=1207959552 +flagh110=4 +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=Virtua Fighter PC +path111=D:\Games\Virtua Fighter\VFPC.EXE +module111= +opengllib111= +ver111=0 +coord111=0 +flag111=134219810 +flagg111=1207959556 +flagh111=998293526 +flagi111=0 +tflag111=339 +initx111=0 +inity111=0 +minx111=0 +miny111=0 +maxx111=0 +maxy111=0 +posx111=50 +posy111=50 +sizx111=800 +sizy111=600 +maxfps111=0 +initts111=6 +title112=Theseus +path112=D:\Games\theseus\Theseus.exe +module112= +opengllib112= +ver112=8 +coord112=0 +flag112=134217730 +flagg112=1207959552 +flagh112=20 +flagi112=0 +tflag112=0 +initx112=0 +inity112=0 +minx112=0 +miny112=0 +maxx112=0 +maxy112=0 +posx112=50 +posy112=50 +sizx112=800 +sizy112=600 +maxfps112=0 +initts112=0 +title113=Star Wars Shadow of the Empire (DEMO) +path113=D:\Games\shadowsdemo\shadows.exe +module113= +opengllib113= +ver113=0 +coord113=0 +flag113=134217760 +flagg113=1208483840 +flagh113=58720276 +flagi113=0 +tflag113=275 +initx113=0 +inity113=0 +minx113=0 +miny113=0 +maxx113=0 +maxy113=0 +posx113=50 +posy113=50 +sizx113=800 +sizy113=600 +maxfps113=0 +initts113=0 +title114=Chocolate Duke 3D +path114=D:\Games\Release Chocolate Duke3D\ChocolateDuke3D.exe +module114= +opengllib114= +ver114=0 +coord114=0 +flag114=671088672 +flagg114=1207959808 +flagh114=98324 +flagi114=0 +tflag114=3 +initx114=0 +inity114=0 +minx114=0 +miny114=0 +maxx114=0 +maxy114=0 +posx114=50 +posy114=50 +sizx114=400 +sizy114=300 +maxfps114=0 +initts114=0 +title115=Tomb Raider III (SW emulation) +path115=D:\Games\Tomb Raider III\tomb3.exe +module115= +opengllib115= +ver115=0 +coord115=0 +flag115=134217762 +flagg115=1241513984 +flagh115=58720276 +flagi115=0 +tflag115=323 +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=Tomb Raider III (HW acceleration) +path116=D:\Games\Tomb Raider III\tomb3.exe +module116= +opengllib116= +ver116=0 +coord116=0 +flag116=134217760 +flagg116=1241514000 +flagh116=25165828 +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=Star Wars Phantom Menace +path117=D:\Games\Star Wars Phantom Menace\WMAIN.EXE +module117= +opengllib117= +ver117=0 +coord117=0 +flag117=939524129 +flagg117=1207959552 +flagh117=20 +flagi117=0 +tflag117=0 +initx117=0 +inity117=0 +minx117=0 +miny117=0 +maxx117=0 +maxy117=0 +posx117=50 +posy117=50 +sizx117=800 +sizy117=600 +maxfps117=0 +initts117=0 +title118=Last Call +path118=D:\Games\Last Call\fast.EXE +module118= +opengllib118= +ver118=0 +coord118=0 +flag118=134217762 +flagg118=1207959552 +flagh118=20 +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=Empire Earth +path119=D:\Games\Empire Earth\Empire Earth.exe +module119= +opengllib119= +ver119=0 +coord119=0 +flag119=671088674 +flagg119=1207959552 +flagh119=32788 +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=Warcraft 2 Battlenet Edition +path120=D:\Games\Warcraft 2 Battlenet Ed\Warcraft II BNE.exe +module120= +opengllib120= +ver120=0 +coord120=0 +flag120=134217762 +flagg120=1207959552 +flagh120=25165844 +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=Lifestream +path121=D:\Games\Lifestream\Lifestream.exe +module121= +opengllib121= +ver121=0 +coord121=0 +flag121=134217762 +flagg121=1207959552 +flagh121=20 +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 [window] -posx=1127 -posy=417 -sizx=320 -sizy=200 +posx=1314 +posy=269 +sizx=443 +sizy=306 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 1b2454c..c74180a 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -272,13 +272,3 @@ 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 deleted file mode 100644 index 139597f..0000000 --- a/dll/analytic.cpp +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 428b997..709276a 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -8,6 +8,7 @@ #include #include "dxwnd.h" #include "dxhook.h" +#include "ddrawi.h" #include "dxwcore.hpp" #include "stdio.h" #include "hddraw.h" @@ -38,7 +39,7 @@ HRESULT WINAPI extGetDisplayMode(LPDIRECTDRAW, LPDDSURFACEDESC); HRESULT WINAPI extGetGDISurface(LPDIRECTDRAW, LPDIRECTDRAWSURFACE *); HRESULT WINAPI extEnumDisplayModes1(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK); HRESULT WINAPI extEnumDisplayModes4(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2); -// STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE; +HRESULT WINAPI extInitialize(LPDIRECTDRAW, FAR GUID *); HRESULT WINAPI extSetCooperativeLevel(void *, HWND, DWORD); HRESULT WINAPI extSetDisplayMode1(LPDIRECTDRAW, DWORD, DWORD, DWORD); HRESULT WINAPI extSetDisplayMode2(LPDIRECTDRAW, DWORD, DWORD, DWORD, DWORD, DWORD); @@ -138,7 +139,7 @@ GetGDISurface_Type pGetGDISurface; GetMonitorFrequency_Type pGetMonitorFrequency; GetScanLine_Type pGetScanLine; GetVerticalBlankStatus_Type pGetVerticalBlankStatus; -//Initialize +Initialize_Type pInitialize; RestoreDisplayMode_Type pRestoreDisplayMode; SetCooperativeLevel_Type pSetCooperativeLevel; SetDisplayMode1_Type pSetDisplayMode1; @@ -454,6 +455,8 @@ BOOL isPaletteUpdated; void mySetPalette(int dwstart, int dwcount, LPPALETTEENTRY lpentries) { int i; + extern DXWNDSTATUS *pStatus; + OutTraceD("mySetPalette DEBUG: BPP=%d GBitMask=%x count=%d\n", dxw.ActualPixelFormat.dwRGBBitCount, dxw.ActualPixelFormat.dwGBitMask, dwcount); @@ -467,6 +470,9 @@ void mySetPalette(int dwstart, int dwcount, LPPALETTEENTRY lpentries) OutTraceD("\n"); } + for(int idx=0; idxPalette[dwstart+idx]= lpentries[idx]; + if (dxw.dwFlags3 & RGB2YUV){ int idx; for(idx=0; idxbottom; + i=(*lprect)->top; + i=(*lprect)->left; + i=(*lprect)->right; + } + } + __except(EXCEPTION_EXECUTE_HANDLER){ + OutTraceE("Rectangle exception caught at %d: invalid RECT\n", __LINE__); + if(IsAssertEnabled) MessageBox(0, "Rectangle exception", "CleanRect", MB_OK | MB_ICONEXCLAMATION); + *lprect=NULL; + } +} + +static void MaskCapsD(LPDDCAPS c1, LPDDCAPS c2) +{ + FILE *capfile; + //char sBuf[80+1]; + char token[20+1]; + DWORD val; + OutTraceD("MaskCaps\n"); + capfile=fopen("dxwnd.cap", "r"); + if(!capfile) return; + while(TRUE){ + if(fscanf(capfile, "%s=%x", token, &val)!=2) break; + if(!strcmp(token, "dwCaps")) c1->dwCaps &= val; + if(!strcmp(token, "dwCaps2")) c1->dwCaps2 &= val; + if(!strcmp(token, "dwCKeyCaps")) c1->dwCKeyCaps &= val; + if(!strcmp(token, "dwFXCaps")) c1->dwFXCaps &= val; + } + OutTraceD("MaskCaps(D-HW): caps=%x(%s) caps2=%x(%s) fxcaps=%x(%s) fxalphacaps=%x(%s) keycaps=%x(%s)\n", + c1->dwCaps, ExplainDDDCaps(c1->dwCaps), + c1->dwCaps2, ExplainDDDCaps2(c1->dwCaps2), + c1->dwFXCaps, ExplainDDFXCaps(c1->dwFXCaps), + c1->dwFXAlphaCaps, ExplainDDFXALPHACaps(c1->dwFXAlphaCaps), + c1->dwCKeyCaps, ExplainDDCKeyCaps(c1->dwCKeyCaps)); + fclose(capfile); +} + /* ------------------------------------------------------------------------------ */ // directdraw method hooks /* ------------------------------------------------------------------------------ */ @@ -1376,13 +1433,13 @@ HRESULT WINAPI extGetCapsD(LPDIRECTDRAW lpdd, LPDDCAPS c1, LPDDCAPS c2) if(res) OutTraceE("GetCaps(D): ERROR res=%x(%s)\n", res, ExplainDDError(res)); else { - if (c1) OutTraceD("GetCaps(D-HW): caps=%x(%s) caps2=%x(%s)fxcaps=%x(%s) fxalphacaps=%x(%s) keycaps=%x(%s)\n", + if (c1) OutTraceD("GetCaps(D-HW): caps=%x(%s) caps2=%x(%s) fxcaps=%x(%s) fxalphacaps=%x(%s) keycaps=%x(%s)\n", c1->dwCaps, ExplainDDDCaps(c1->dwCaps), c1->dwCaps2, ExplainDDDCaps2(c1->dwCaps2), c1->dwFXCaps, ExplainDDFXCaps(c1->dwFXCaps), c1->dwFXAlphaCaps, ExplainDDFXALPHACaps(c1->dwFXAlphaCaps), c1->dwCKeyCaps, ExplainDDCKeyCaps(c1->dwCKeyCaps)); - if (c2) OutTraceD("GetCaps(D-SW): caps=%x(%s) caps2=%x(%s)fxcaps=%x(%s) fxalphacaps=%x(%s) keycaps=%x(%s)\n", + if (c2) OutTraceD("GetCaps(D-SW): caps=%x(%s) caps2=%x(%s) fxcaps=%x(%s) fxalphacaps=%x(%s) keycaps=%x(%s)\n", c2->dwCaps, ExplainDDDCaps(c2->dwCaps), c2->dwCaps2, ExplainDDDCaps2(c2->dwCaps2), c2->dwFXCaps, ExplainDDFXCaps(c2->dwFXCaps), @@ -1390,12 +1447,28 @@ HRESULT WINAPI extGetCapsD(LPDIRECTDRAW lpdd, LPDDCAPS c1, LPDDCAPS c2) c2->dwCKeyCaps, ExplainDDCKeyCaps(c2->dwCKeyCaps)); } + if((dxw.dwFlags3 & FORCESHEL) && c1) { + DDCAPS_DX7 swcaps; // DDCAPS_DX7 because it is the bigger in size + int size; + size=c1->dwSize; + if (!c2) { + memset(&swcaps, 0, sizeof(DDCAPS_DX7)); + swcaps.dwSize=size; + c2=&swcaps; + res=(*pGetCapsD)(lpdd, NULL, c2); + } + memcpy((void *)c1, (void *)c2, size); + } + + if((dxw.dwFlags3 & CAPMASK) && c1 && c2) MaskCapsD(c1, c2); + return res; } HRESULT WINAPI extDirectDrawCreate(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, IUnknown FAR *pu) { HRESULT res; + GUID FAR *lpPrivGuid = lpguid; OutTraceD("DirectDrawCreate: guid=%x(%s)\n", lpguid, ExplainGUID(lpguid)); @@ -1415,15 +1488,19 @@ HRESULT WINAPI extDirectDrawCreate(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, I } } - res = (*pDirectDrawCreate)(lpguid, lplpdd, pu); + if((dxw.dwFlags3 & FORCESHEL) && (lpguid==NULL)) lpPrivGuid=(GUID FAR *)DDCREATE_EMULATIONONLY; + + res = (*pDirectDrawCreate)(lpPrivGuid, lplpdd, pu); if(res) { OutTraceE("DirectDrawCreate: ERROR res=%x(%s)\n", res, ExplainDDError(res)); return res; } + if(dxw.dwFlags3 & COLORFIX) (*((DDRAWI_DIRECTDRAW_INT **)lplpdd))->lpLcl->dwAppHackFlags |= 0x800; + dxw.dwDDVersion=1; char *mode; - switch ((DWORD)lpguid){ + switch ((DWORD)lpPrivGuid){ case 0: mode="NULL"; break; case DDCREATE_HARDWAREONLY: mode="DDCREATE_HARDWAREONLY"; break; case DDCREATE_EMULATIONONLY: mode="DDCREATE_EMULATIONONLY"; break; @@ -1453,36 +1530,12 @@ HRESULT WINAPI extDirectDrawCreate(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, I return 0; } -/* ------------------------------------------------------------------------------ */ -// CleanRect: -// takes care of a corrupted RECT struct where some elements are not valid pointers. -// In this case, the whole RECT * variable is set to NULL, a value that is interpreted -// by directdraw functions as the whole surface area. -/* ------------------------------------------------------------------------------ */ - -static void CleanRect(RECT **lprect, int line) -{ - __try { - // normally unharmful statements - if(*lprect){ - int i; - i=(*lprect)->bottom; - i=(*lprect)->top; - i=(*lprect)->left; - i=(*lprect)->right; - } - } - __except(EXCEPTION_EXECUTE_HANDLER){ - OutTraceE("Rectangle exception caught at %d: invalid RECT\n", __LINE__); - if(IsAssertEnabled) MessageBox(0, "Rectangle exception", "CleanRect", MB_OK | MB_ICONEXCLAMATION); - *lprect=NULL; - } -} - HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, REFIID iid, IUnknown FAR *pu) { HRESULT res; + GUID FAR *lpPrivGuid = lpguid; + OutTraceD("DirectDrawCreateEx: guid=%x(%s) refiid=%x\n", lpguid, ExplainGUID(lpguid), iid); // v2.1.70: auto-hooking (just in case...) @@ -1505,15 +1558,19 @@ HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *lpguid, } } - res = (*pDirectDrawCreateEx)(lpguid, lplpdd, iid, pu); + if((dxw.dwFlags3 & FORCESHEL) && (lpguid==NULL)) lpPrivGuid=(GUID FAR *)DDCREATE_EMULATIONONLY; + + res = (*pDirectDrawCreateEx)(lpPrivGuid, lplpdd, iid, pu); if (res){ OutTraceD("DirectDrawCreateEx: res=%x(%s)\n",res, ExplainDDError(res)); return res; } + if(dxw.dwFlags3 & COLORFIX) (*((DDRAWI_DIRECTDRAW_INT **)lplpdd))->lpLcl->dwAppHackFlags |= 0x800; + dxw.dwDDVersion=7; char *mode; - switch ((DWORD)lpguid){ + switch ((DWORD)lpPrivGuid){ case 0: mode="NULL"; break; case DDCREATE_HARDWAREONLY: mode="DDCREATE_HARDWAREONLY"; break; case DDCREATE_EMULATIONONLY: mode="DDCREATE_EMULATIONONLY"; break; @@ -1534,6 +1591,23 @@ HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *lpguid, return 0; } +HRESULT WINAPI extInitialize(LPDIRECTDRAW lpdd, GUID FAR *lpguid) +{ + HRESULT res; + GUID FAR *lpPrivGuid = lpguid; + + OutTraceD("Initialize: lpdd=%x guid=%x(%s)\n", lpdd, lpguid, ExplainGUID(lpguid)); + + if((dxw.dwFlags3 & FORCESHEL) && (lpguid==NULL)) lpPrivGuid=(GUID FAR *)DDCREATE_EMULATIONONLY; + + res=(*pInitialize)(lpdd, lpPrivGuid); + + if(dxw.dwFlags3 & COLORFIX) (((DDRAWI_DIRECTDRAW_INT *)lpdd))->lpLcl->dwAppHackFlags |= 0x800; + + if(res) OutTraceE("Initialize ERROR: res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + HRESULT WINAPI extQueryInterfaceD(void *lpdd, REFIID riid, LPVOID *obp) { HRESULT res; @@ -2081,6 +2155,7 @@ void FixSurfaceCapsAnalytic(LPDDSURFACEDESC2 lpddsd, int dxversion) break; case DDSCAPS_SYSTEMMEMORY|DDSCAPS_TEXTURE: // Wargames Direct3D hw acceleration + // Star Wars Shadows of the Empire in RGB HEL mode return; break; case DDSCAPS_TEXTURE: @@ -2117,7 +2192,8 @@ void FixSurfaceCapsAnalytic(LPDDSURFACEDESC2 lpddsd, int dxversion) // 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); + // DDSCAPS_VIDEOMEMORY doesn't work with HEL only! Better switch to DDSCAPS_SYSTEMMEMORY. + if (dxw.dwFlags3 & FORCESHEL) lpddsd->ddsCaps.dwCaps = (DDSCAPS_TEXTURE|DDSCAPS_SYSTEMMEMORY|DDSCAPS_ALLOCONLOAD); //SetPixFmt(lpddsd); return; break; @@ -2188,6 +2264,21 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion) SetPixFmt(lpddsd); return; } + //// DDSCAPS_ALLOCONLOAD on VIDEOMEMORY can't be done when HAL is disabled - it returns DDERR_NODIRECTDRAWHW error + //if((lpddsd->dwFlags & DDSD_CAPS) && + // ((lpddsd->ddsCaps.dwCaps & (DDSCAPS_TEXTURE|DDSCAPS_ALLOCONLOAD))==(DDSCAPS_TEXTURE|DDSCAPS_ALLOCONLOAD))) { + // if (dxw.dwFlags3 & FORCESHEL) lpddsd->ddsCaps.dwCaps = (DDSCAPS_TEXTURE|DDSCAPS_SYSTEMMEMORY|DDSCAPS_ALLOCONLOAD); + // return; + //} + // DDSCAPS_TEXTURE surfaces must be left untouched, unless you set FORCESHEL: in this case switch VIDEOMEMORY to SYSTEMMEMORY + if((lpddsd->dwFlags & DDSD_CAPS) && (lpddsd->ddsCaps.dwCaps & DDSCAPS_TEXTURE)){ + if (dxw.dwFlags3 & FORCESHEL) { + lpddsd->ddsCaps.dwCaps &= ~DDSCAPS_VIDEOMEMORY; + lpddsd->ddsCaps.dwCaps |= DDSCAPS_SYSTEMMEMORY; + } + // no further changes... + return; + } if(lpddsd->dwFlags & DDSD_ZBUFFERBITDEPTH){ lpddsd->dwFlags &= ~DDSD_PIXELFORMAT; } @@ -2202,6 +2293,10 @@ static void FixSurfaceCaps(LPDDSURFACEDESC2 lpddsd, int dxversion) (lpddsd->ddsCaps.dwCaps == (DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY))){ return; } + if(((lpddsd->dwFlags & (DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PIXELFORMAT)) == (DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT|DDSD_PIXELFORMAT)) && + (lpddsd->ddsCaps.dwCaps == (DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY))){ + return; + } // default case: adjust pixel format OutTraceB("FixSurfaceCaps: suppress DDSCAPS_VIDEOMEMORY case\n"); @@ -2830,7 +2925,6 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, BOOL ToPrim, FromPrim, ToScreen, FromScreen; //CkArg arg; - ToPrim=dxw.IsAPrimarySurface(lpdds); FromPrim=dxw.IsAPrimarySurface(lpddssrc); ToScreen=ToPrim && !(dxw.dwFlags1 & EMULATESURFACE); @@ -2881,6 +2975,14 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, OutTrace(sLog); } + // debug suppressions + if(ToPrim){ + if(isFlipping) + if(dxw.dwFlags3 & NODDRAWFLIP) return DD_OK; + else + if(dxw.dwFlags3 & NODDRAWBLT) return DD_OK; + } + #ifdef ONEPIXELFIX if (lpdestrect){ if ((lpdestrect->top == 0) && (lpdestrect->bottom == dxw.GetScreenHeight() -1)) lpdestrect->bottom = dxw.GetScreenHeight(); @@ -3266,8 +3368,7 @@ HRESULT WINAPI extCreatePalette(LPDIRECTDRAW lpdd, DWORD dwflags, LPPALETTEENTRY HookDDPalette(lplpddp); - //if(dwflags & DDPCAPS_PRIMARYSURFACE){ - if(dwflags & DDPCAPS_8BIT){ // v2.02.38 + if((dwflags & (DDPCAPS_8BIT|DDPCAPS_PRIMARYSURFACE)) == (DDPCAPS_8BIT|DDPCAPS_PRIMARYSURFACE)){ // v2.02.39 mySetPalette(0, 256, lpddpa); lpDDP = *lplpddp; } diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index f35e06d..4318226 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -153,6 +153,18 @@ static void dx_ToggleLogging() GetHookInfo()->isLogging=(dxw.dwTFlags & OUTTRACE); } +static void SuppressIMEWindow() +{ + OutTraceD("WindowProc: SUPPRESS IME\n"); + typedef BOOL (WINAPI *ImmDisableIME_Type)(DWORD); + ImmDisableIME_Type pImmDisableIME; + HMODULE ImmLib; + ImmLib=(*pLoadLibraryA)("Imm32"); + pImmDisableIME=(ImmDisableIME_Type)(*pGetProcAddress)(ImmLib,"ImmDisableIME"); + (*pImmDisableIME)(-1); + CloseHandle(ImmLib); +} + void HookDlls(HMODULE module) { PIMAGE_NT_HEADERS pnth; @@ -627,6 +639,7 @@ void AdjustWindowPos(HWND hwnd, DWORD width, DWORD height) OutTraceE("AdjustWindowPos: ERROR err=%d at %d\n", GetLastError(), __LINE__); } + if(dxw.dwFlags2 & SUPPRESSIME) SuppressIMEWindow(); dxw.ShowBanner(hwnd); return; } @@ -909,15 +922,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp } break; case WM_NCCREATE: - if(dxw.dwFlags2 & SUPPRESSIME){ - OutTraceD("WindowProc: SUPPRESS IME\n"); - typedef BOOL (WINAPI *ImmDisableIME_Type)(DWORD); - ImmDisableIME_Type pImmDisableIME; - HMODULE ImmLib; - ImmLib=(*pLoadLibraryA)("Imm32"); - pImmDisableIME=(ImmDisableIME_Type)(*pGetProcAddress)(ImmLib,"ImmDisableIME"); - (*pImmDisableIME)(-1); - } + if(dxw.dwFlags2 & SUPPRESSIME) SuppressIMEWindow(); break; case WM_IME_SETCONTEXT: case WM_IME_NOTIFY: diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index 2f3d375..d01f7b6 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -24,7 +24,7 @@ along with this program. If not, see . #include "dxwnd.h" #include "dxwcore.hpp" -#define VERSION "2.02.38" +#define VERSION "2.02.39" #define DDTHREADLOCK 1 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 97fa676f78eda623a23f5d6a3f8ee6a2d692a715..50c1f0c632aaecc979404b6c7103d78df97dd3b6 100644 GIT binary patch delta 16473 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 - - diff --git a/dll/gdi32.cpp b/dll/gdi32.cpp index c6f5aad..2c8af2f 100644 --- a/dll/gdi32.cpp +++ b/dll/gdi32.cpp @@ -816,6 +816,7 @@ BOOL WINAPI extGDIBitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH res=0; if (OBJ_DC == GetObjectType(hdcDest)){ if (dxw.HandleFPS()) return TRUE; + if (dxw.dwFlags3 & NOGDIBLT) return TRUE; if(dxw.IsFullScreen()){ int nWDest, nHDest; nWDest= nWidth; @@ -862,6 +863,7 @@ BOOL WINAPI extGDIPatBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH if (OBJ_DC == GetObjectType(hdcDest)){ IsToScreen=TRUE; if (dxw.HandleFPS()) return TRUE; + if (dxw.dwFlags3 & NOGDIBLT) return TRUE; if (dxw.IsFullScreen()){ dxw.MapClient(&nXDest, &nYDest, &nWidth, &nHeight); if (dxw.dwFlags2 & SHOWFPSOVERLAY) dxw.ShowFPS(hdcDest); @@ -897,6 +899,7 @@ BOOL WINAPI extGDIStretchBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, in IsToScreen=FALSE; if (OBJ_DC == GetObjectType(hdcDest)){ if (dxw.HandleFPS()) return TRUE; + if (dxw.dwFlags3 & NOGDIBLT) return TRUE; IsToScreen=TRUE; if(dxw.IsFullScreen()){ dxw.MapClient(&nXDest, &nYDest, &nWidth, &nHeight); diff --git a/dll/hddproxy.cpp b/dll/hddproxy.cpp index 5d20a51..2bca343 100644 --- a/dll/hddproxy.cpp +++ b/dll/hddproxy.cpp @@ -60,7 +60,7 @@ extern GetGDISurface_Type pGetGDISurface; extern GetMonitorFrequency_Type pGetMonitorFrequency; extern GetScanLine_Type pGetScanLine; extern GetVerticalBlankStatus_Type pGetVerticalBlankStatus; -// missing Initialize ... +extern Initialize_Type pInitialize; extern RestoreDisplayMode_Type pRestoreDisplayMode; extern SetCooperativeLevel_Type pSetCooperativeLevel; extern SetDisplayMode1_Type pSetDisplayMode1; @@ -658,6 +658,19 @@ ULONG WINAPI extReleaseDProxy(LPDIRECTDRAW lpdd) return ref; } +HRESULT WINAPI extInitializeProxy(LPDIRECTDRAW lpdd, GUID FAR *lpguid) +{ + HRESULT res; + GUID FAR *lpPrivGuid = lpguid; + + OutTraceD("Initialize: lpdd=%x guid=%x(%s)\n", lpdd, lpguid, ExplainGUID(lpguid)); + + res=(*pInitialize)(lpdd, lpPrivGuid); + + if(res) OutTraceE("Initialize ERROR: res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + HRESULT WINAPI extCreateClipperProxy(LPDIRECTDRAW lpdd, DWORD dwflags, LPDIRECTDRAWCLIPPER FAR* lplpDDClipper, IUnknown FAR* pUnkOuter) { HRESULT res; @@ -1711,7 +1724,7 @@ static void HookDDSessionProxy(LPDIRECTDRAW *lplpdd, int dxVersion) // IDIrectDraw::GetVerticalBlankStatus SetHook((void *)(**(DWORD **)lplpdd + 68), extGetVerticalBlankStatusProxy, (void **)&pGetVerticalBlankStatus, "GetVerticalBlankStatus(D)"); // IDIrectDraw::Initialize - // offset 72: Undocumented + SetHook((void *)(**(DWORD **)lplpdd + 72), extInitializeProxy, (void **)&pInitialize, "Initialize(D)"); // IDIrectDraw::RestoreDisplayMode SetHook((void *)(**(DWORD **)lplpdd + 76), extRestoreDisplayModeProxy, (void **)&pRestoreDisplayMode, "RestoreDisplayMode(D)"); if (dxVersion >= 2){ diff --git a/dll/hddproxy.h b/dll/hddproxy.h index c4f151b..893ded1 100644 --- a/dll/hddproxy.h +++ b/dll/hddproxy.h @@ -74,6 +74,7 @@ extern HRESULT WINAPI extGetFourCCCodesProxy(LPDIRECTDRAW, LPDWORD, LPDWORD); extern HRESULT WINAPI extTestCooperativeLevelProxy(LPDIRECTDRAW); extern HRESULT WINAPI extEnumSurfacesProxy1(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMSURFACESCALLBACK); extern HRESULT WINAPI extEnumSurfacesProxy4(LPDIRECTDRAW, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMSURFACESCALLBACK2); +extern HRESULT WINAPI extInitializeProxy(LPDIRECTDRAW, GUID FAR *); // DirectDraw Clipper Proxed methods diff --git a/dll/hddraw.h b/dll/hddraw.h index 42e3272..cbc2789 100644 --- a/dll/hddraw.h +++ b/dll/hddraw.h @@ -42,7 +42,7 @@ typedef HRESULT (WINAPI *GetGDISurface_Type)(LPDIRECTDRAW, LPDIRECTDRAWSURFACE * typedef HRESULT (WINAPI *GetMonitorFrequency_Type)(LPDIRECTDRAW, LPDWORD); typedef HRESULT (WINAPI *GetScanLine_Type)(LPDIRECTDRAW, LPDWORD); typedef HRESULT (WINAPI *GetVerticalBlankStatus_Type)(LPDIRECTDRAW, LPBOOL); -// STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE; +typedef HRESULT (WINAPI *Initialize_Type)(LPDIRECTDRAW, GUID FAR *); typedef HRESULT (WINAPI *RestoreDisplayMode_Type)(LPDIRECTDRAW); typedef HRESULT (WINAPI *SetCooperativeLevel_Type)(void *, HWND, DWORD); typedef HRESULT (WINAPI *SetDisplayMode2_Type)(LPDIRECTDRAW, DWORD, DWORD, DWORD, DWORD, DWORD); diff --git a/dll/user32.cpp b/dll/user32.cpp index 56280d4..21abab6 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -1304,19 +1304,18 @@ BOOL WINAPI extClipCursor(RECT *lpRectArg) if(dxw.dwFlags1 & MODIFYMOUSE){ // save desired clip region + // v2.02.39: fix - do not attempt to write to NULL lpRect if (lpRect) { ClipRegion=*lpRectArg; lpClipRegion=&ClipRegion; + *lpRect=dxw.MapWindowRect(lpRect); } 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); + if (lpRect) OutTraceD("ClipCursor: REMAPPED rect=(%d,%d)-(%d,%d) res=%x\n", lpRect->left,lpRect->top,lpRect->right,lpRect->bottom, res); return TRUE; } diff --git a/exports/007 NightFire.dxw b/exports/007 NightFire.dxw deleted file mode 100644 index 1fde1e2..0000000 --- a/exports/007 NightFire.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 71bb96f..0000000 --- a/exports/101 The Airborne Invasion of Normandy.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index c1efb73..0000000 --- a/exports/Age of Empires III.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index d73692c..0000000 --- a/exports/Akuma Demon Spawn - Lamentation Sword.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index c6ad005..0000000 --- a/exports/Ancient Evil demo.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 163d2cf..0000000 --- a/exports/Army Men RTS.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index fd88a78..0000000 --- a/exports/Attack of the Saucerman.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index ee7c05a..0000000 --- a/exports/Beyond Divinity.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index ff305de..0000000 --- a/exports/Daikatana.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index d42a274..0000000 --- a/exports/Devastation.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 63c7691..0000000 --- a/exports/Diablo.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index e29750c..0000000 --- a/exports/Doom Shareware for Windows 95.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 3b5d517..0000000 --- a/exports/Dungeon Keeper II.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index bc4f6f5..0000000 --- a/exports/Dungeon Lords MMXII.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index c7e4c44..0000000 --- a/exports/GTA 3.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 999ae13fd69e900ec38a7f66b60f3fe7cc7734a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 NcmZQz7zIRx0003e00961 diff --git a/exports/Grand Prix World.dxw b/exports/Grand Prix World.dxw deleted file mode 100644 index b218903..0000000 --- a/exports/Grand Prix World.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index e4bdc3e..0000000 --- a/exports/Hamsterball.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index cf7cd79..0000000 --- a/exports/Heroes of Might and Magic IV.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 9aa9229..0000000 --- a/exports/Homeworld 2.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 65069a9..0000000 --- a/exports/JetMoto.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 79f48c5..0000000 --- a/exports/Kiss Psycho Circus.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index f119aca..0000000 --- a/exports/L'Elefante a Strisce.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 517fb28..0000000 --- a/exports/Land of the Dead.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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/Mageslayer.dxw b/exports/Mageslayer.dxw deleted file mode 100644 index 4732846..0000000 --- a/exports/Mageslayer.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 8e8066e..0000000 --- a/exports/Magic & Mayhem.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 07855d2..0000000 --- a/exports/Mirror's Edge.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index a07422a..0000000 --- a/exports/Praetorians.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 202d582..0000000 --- a/exports/Premier Manager 98.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 9cc72eb..0000000 --- a/exports/Primitive Wars.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index c3cb149..0000000 --- a/exports/Railroad Tycoon II.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index d67ddef..0000000 --- a/exports/Rayman 2 Demo.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index adba567..0000000 --- a/exports/Space Rangers.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index e50772d..0000000 --- a/exports/Star Wars Shadow of the Empire (DEMO).dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 0ca1af9..0000000 --- a/exports/Star Wars Shadow of the Empire.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index ec3c771..0000000 --- a/exports/StarCraft.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index bc14a14..0000000 --- a/exports/Talis Gear.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 076b5e3..0000000 --- a/exports/Theseus.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index bf596e7..0000000 --- a/exports/Total Annihilation Kingdoms.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index d7459f7..0000000 --- a/exports/Vangers.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 0ea1bb9..0000000 --- a/exports/Wargames.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index ed24623..0000000 --- a/exports/Warlords 3.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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 deleted file mode 100644 index 11f51ac..0000000 --- a/exports/deadrising2otr1.dxw +++ /dev/null @@ -1,24 +0,0 @@ -[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/PaletteDialog - Copia.cpp b/host/PaletteDialog - Copia.cpp new file mode 100644 index 0000000..d0537f0 --- /dev/null +++ b/host/PaletteDialog - Copia.cpp @@ -0,0 +1,139 @@ +// StatusDialog.cpp : implementation file +// + +#include "stdafx.h" +#include "dxwndhost.h" +#include "PaletteDialog.h" +#include "bmpext.h" + +// CPaletteDialog dialog + +IMPLEMENT_DYNAMIC(CPaletteDialog, CDialog) + +CPaletteDialog::CPaletteDialog(CWnd* pParent /*=NULL*/) + : CDialog(CPaletteDialog::IDD, pParent) +{ +} + +CPaletteDialog::~CPaletteDialog() +{ +} + +void CPaletteDialog::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); +} + + +BEGIN_MESSAGE_MAP(CPaletteDialog, CDialog) + ON_WM_TIMER() +END_MESSAGE_MAP() + +#define IDPaletteTIMER 2 + +// CPaletteDialog message handlers + +#if 0 +void CPaletteDialog::OnTimer(UINT_PTR nIDEvent) +{ + DXWNDSTATUS DxWndStatus; + int DxStatus; + TARGETMAP *Target; + CBitmap *cPal, *cMiniPal; + extern PRIVATEMAP *pTitles; + extern TARGETMAP *pTargets; + RECT Rect; + int h, w; + //CBitmap cMiniPal; + //cMiniPal.CreateCompatibleBitmap(this->GetDC(), 16, 16); + + CWnd *Pix; + + DxStatus=GetHookStatus(&DxWndStatus); + this->GetDC()->GetWindow()->GetWindowRect(&Rect); + h=Rect.bottom - Rect.top; + w=Rect.right - Rect.left; + cPal=(CBitmap *)this->GetDlgItem(IDC_PALETTECOLORS); + Pix=(CWnd *)this->GetDlgItem(IDC_PALETTEMAP); + + if(DxStatus==DXW_RUNNING){ + for(int row=0; row<16; row++) + for(int col=0; col<16; col++){ + COLORREF color; + PALETTEENTRY *pe = &DxWndStatus.Palette[16*row+col]; + //color=pe->peRed | (pe->peGreen << 8) | (pe->peBlue << 16); + color=RGB(pe->peRed, pe->peGreen, pe->peBlue); + + //Pix->GetDC()->SetPixel(row, col, color); + //this->GetDC()->StretchBlt(0, 0, w, h, Pix->GetDC(), 0, 0, 16, 16, SRCCOPY); + + this->GetDC()->SetPixel(row, col, color); + } + + } + else + this->GetDC()->StretchBlt(0, 0, w, h, NULL, 0, 0, 0, 0, WHITENESS); +} +#else +void CPaletteDialog::OnTimer(UINT_PTR nIDEvent) +{ + DXWNDSTATUS DxWndStatus; + int DxStatus; + extern PRIVATEMAP *pTitles; + extern TARGETMAP *pTargets; + RECT Rect; + int h, w; + + CBitmap cBmp; + CBitmap* pBitmap; + CDC cMemDC; + cMemDC.CreateCompatibleDC(this->GetDC()); // Create the memory DC. + + CBitmap* pOld = cMemDC.SelectObject(&cBmp); + pBitmap = cMemDC.SelectObject(pOld); + + DxStatus=GetHookStatus(&DxWndStatus); + this->GetDC()->GetWindow()->GetWindowRect(&Rect); + h=Rect.bottom - Rect.top; + w=Rect.right - Rect.left; + + CDib dib; + dib.ReadFromResource(IDB_PALETTE); + if(DxStatus==DXW_RUNNING){ + for(int row=0; rowpeBlue; + rgbq.rgbGreen=pe->peGreen; + rgbq.rgbRed=pe->peRed; + rgbq.rgbReserved=0; + dib.SetPixel(col, row, rgbq); + } + } + } + dib.Draw(this->GetDC(), CRect(0, 0, w, h), CRect(0, 0, 16, 16)); +} +#endif + +BOOL CPaletteDialog::OnInitDialog() +{ + CDialog::OnInitDialog(); + + SetTimer(IDPaletteTIMER, 1000, NULL); + + // TODO: Add extra initialization here + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + +void CPaletteDialog::OnOK() +{ + // TODO: Add your specialized code here and/or call the base class + + KillTimer(IDPaletteTIMER); + // stop timer + + CDialog::OnOK(); +} diff --git a/host/PaletteDialog.cpp b/host/PaletteDialog.cpp new file mode 100644 index 0000000..824e254 --- /dev/null +++ b/host/PaletteDialog.cpp @@ -0,0 +1,82 @@ +// StatusDialog.cpp : implementation file +// + +#include "stdafx.h" +#include "dxwndhost.h" +#include "PaletteDialog.h" +#include "bmpext.h" + +// CPaletteDialog dialog + +IMPLEMENT_DYNAMIC(CPaletteDialog, CDialog) + +CPaletteDialog::CPaletteDialog(CWnd* pParent /*=NULL*/) + : CDialog(CPaletteDialog::IDD, pParent) +{ +} + +CPaletteDialog::~CPaletteDialog() +{ +} + +void CPaletteDialog::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); +} + + +BEGIN_MESSAGE_MAP(CPaletteDialog, CDialog) + ON_WM_TIMER() +END_MESSAGE_MAP() + +#define IDPaletteTIMER 2 + +// CPaletteDialog message handlers + +void CPaletteDialog::OnTimer(UINT_PTR nIDEvent) +{ + DXWNDSTATUS DxWndStatus; + int DxStatus; + //extern PRIVATEMAP *pTitles; + extern TARGETMAP *pTargets; + RECT Rect; + int h, w; + + DxStatus=GetHookStatus(&DxWndStatus); + this->GetDC()->GetWindow()->GetClientRect(&Rect); + h=Rect.bottom - Rect.top; + w=Rect.right - Rect.left; + + CDib dib; + dib.ReadFromResource(IDB_PALETTE); + if(DxStatus==DXW_RUNNING){ + for(int row=0; row<16; row++){ + for(int col=0; col<16; col++){ + PALETTEENTRY *pe = &DxWndStatus.Palette[16*row+col]; + RGBQUAD rgbq; + rgbq.rgbBlue=pe->peBlue; + rgbq.rgbGreen=pe->peGreen; + rgbq.rgbRed=pe->peRed; + rgbq.rgbReserved=0; + dib.SetPixel(col, row, rgbq); + } + } + } + dib.Draw(this->GetDC(), CRect(0, 0, w, h), CRect(0, 0, 16, 16)); +} + +BOOL CPaletteDialog::OnInitDialog() +{ + CDialog::OnInitDialog(); + SetTimer(IDPaletteTIMER, 200, NULL); + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + +void CPaletteDialog::OnOK() +{ + // TODO: Add your specialized code here and/or call the base class + KillTimer(IDPaletteTIMER); + // stop timer + CDialog::OnOK(); +} diff --git a/host/PaletteDialog.h b/host/PaletteDialog.h new file mode 100644 index 0000000..a8b1a2a --- /dev/null +++ b/host/PaletteDialog.h @@ -0,0 +1,27 @@ +#pragma once + + +// CPaletteDialog dialog + +class CPaletteDialog : public CDialog +{ + DECLARE_DYNAMIC(CPaletteDialog) + +public: + CPaletteDialog(CWnd* pParent = NULL); // standard constructor + virtual ~CPaletteDialog(); + +// Dialog Data + enum { IDD = IDD_PALETTE }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnTimer(UINT_PTR nIDEvent); +public: + virtual BOOL OnInitDialog(); +protected: + virtual void OnOK(); +}; diff --git a/host/Resource.h b/host/Resource.h index 3fadfe3..2301793 100644 --- a/host/Resource.h +++ b/host/Resource.h @@ -32,11 +32,13 @@ #define IDD_TAB_TIMING 156 #define IDD_TAB_WINDOW 157 #define IDD_TAB_EMPTY 158 +#define IDB_PALETTE 158 #define IDD_TAB_OPENGL 159 #define IDD_TAB_COMPAT 160 #define IDD_TAB_GDI 161 #define IDD_TAB_COLOR 162 #define IDD_TAB_DEBUG 163 +#define IDD_PALETTE 164 #define IDC_AUTO 300 #define IDC_DIRECTX1 301 #define IDC_DIRECTX7 302 @@ -135,6 +137,7 @@ #define IDC_WINDOWIZE 1091 #define IDC_NOBANNER 1092 #define IDC_STARTDEBUG 1093 +#define IDC_PALETTECOLORS 1093 #define IDC_WIREFRAME 1094 #define IDC_DISABLEGAMMARAMP 1095 #define IDC_FORCEWINRESIZE 1096 @@ -145,11 +148,7 @@ #define IDC_SUPPRESSD3DEXT 1101 #define IDC_FULLRECTBLT 1102 #define IDC_TIMESPEED 1103 -#define IDC_FULLRECTBLT2 1103 -#define IDC_SURFACEWARN 1103 #define IDC_HOOKDLLS 1104 -#define IDC_ANALITICALMODE 1104 -#define IDC_ANALYTICMODE 1104 #define IDC_HOOKENABLED 1105 #define IDC_DESKTOPWORKAREA 1106 #define IDC_DESKTOPFULL 1107 @@ -177,6 +176,17 @@ #define IDC_FILTERMESSAGES 1129 #define IDC_PEEKALLMESSAGES 1130 #define IDC_TRACEHOOKS 1131 +#define IDC_FULLRECTBLT2 1132 +#define IDC_SURFACEWARN 1133 +#define IDC_ANALITICALMODE 1134 +#define IDC_ANALYTICMODE 1135 +#define IDC_CAPMASK 1136 +#define IDC_FORCESHEL 1137 +#define IDC_COLORFIX 1138 +#define IDC_NODDRAWBLIT 1139 +#define IDC_NODDRAWBLT 1139 +#define IDC_NODDRAWFLIP 1140 +#define IDC_NOGDIBLT 1141 #define ID_MODIFY 32771 #define ID_DELETE 32772 #define ID_ADD 32773 @@ -218,15 +228,16 @@ #define ID_INDEX0_EXPORT 32821 #define ID_PEXPORT 32822 #define ID_PKILL 32823 +#define ID_VIEW_PALETTE 32825 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 -#define _APS_NEXT_RESOURCE_VALUE 156 -#define _APS_NEXT_COMMAND_VALUE 32825 -#define _APS_NEXT_CONTROL_VALUE 1092 +#define _APS_NEXT_RESOURCE_VALUE 159 +#define _APS_NEXT_COMMAND_VALUE 32826 +#define _APS_NEXT_CONTROL_VALUE 1095 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/host/StatusDialog.cpp b/host/StatusDialog.cpp index bef9a3d..2339e0e 100644 --- a/host/StatusDialog.cpp +++ b/host/StatusDialog.cpp @@ -38,6 +38,7 @@ void CStatusDialog::OnTimer(UINT_PTR nIDEvent) int IconId; LPCSTR Status; char sMsg[1024]; + char sMsg2[1024]; char sMsgBuf[80+1]; char DllVersion[21]; DXWNDSTATUS DxWndStatus; @@ -45,8 +46,11 @@ void CStatusDialog::OnTimer(UINT_PTR nIDEvent) extern TARGETMAP *pTargets; TARGETMAP *Target; extern char *GetTSCaption(int); + int iPixelFormat; + PIXELFORMATDESCRIPTOR pfd; CDialog::OnTimer(nIDEvent); + GetDllVersion(DllVersion); DxStatus=GetHookStatus(&DxWndStatus); switch (DxStatus){ case DXW_IDLE: IconId=IDI_DXIDLE; Status="DISABLED"; break; @@ -55,14 +59,29 @@ void CStatusDialog::OnTimer(UINT_PTR nIDEvent) default: IconId=IDI_DXIDLE; Status="???"; break; } - GetDllVersion(DllVersion); + // get the current pixel format index + //HDC myDC = this->GetDC()->m_hDC; + //iPixelFormat = GetPixelFormat(myDC); + iPixelFormat = 1; + HDC myDC = ::GetDC(::GetForegroundWindow()); + //iPixelFormat = ::GetPixelFormat(myDC); + + // obtain a detailed description of that pixel format + memset((void *)&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR)); + pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); + DescribePixelFormat(myDC, iPixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &pfd); + + sprintf_s(sMsg, 1024, + "DxWnd %s\n" + "PixelFormat=%d DEPTH=%d RGBA=(%d,%d,%d,%d)\n" + "Hook status: %s", + DllVersion, iPixelFormat, pfd.cColorBits, pfd.cRedBits, pfd.cGreenBits, pfd.cBlueBits, pfd.cAlphaBits, Status); + if(DxStatus==DXW_RUNNING){ Target=&pTargets[DxWndStatus.TaskIdx]; - sprintf_s(sMsg, 1024, - "DxWnd %s\nHook status: %s\n" - "Running \"%s\"\nScreen = (%dx%d) %dBPP\n" + sprintf_s(sMsg2, 1024, "FullScreen = %s\nDX version = %d\n" "Logging = %s\n" "Cursor = (%d,%d)", @@ -72,6 +91,7 @@ void CStatusDialog::OnTimer(UINT_PTR nIDEvent) DxWndStatus.IsFullScreen ? "Yes":"No", DxWndStatus.DXVersion, DxWndStatus.isLogging?"ON":"OFF", DxWndStatus.CursorX, DxWndStatus.CursorY); + strcat(sMsg, sMsg2); if(Target->flags2 & (SHOWFPS|SHOWFPSOVERLAY)){ sprintf(sMsgBuf, "\nFPS = %d", DxWndStatus.FPSCount); strcat(sMsg, sMsgBuf); @@ -83,8 +103,6 @@ void CStatusDialog::OnTimer(UINT_PTR nIDEvent) } } } - else - sprintf_s(sMsg, 1024, "DxWnd %s\nHook status: %s", DllVersion, Status); this->SetDlgItemTextA(IDC_STATUSINFO, sMsg); } diff --git a/host/TabDebug.cpp b/host/TabDebug.cpp index 94bc60a..4ee0aa5 100644 --- a/host/TabDebug.cpp +++ b/host/TabDebug.cpp @@ -35,6 +35,10 @@ void CTabDebug::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_MARKBLIT, cTarget->m_MarkBlit); DDX_Check(pDX, IDC_ANALYTICMODE, cTarget->m_AnalyticMode); DDX_Check(pDX, IDC_SURFACEWARN, cTarget->m_SurfaceWarn); + DDX_Check(pDX, IDC_CAPMASK, cTarget->m_CapMask); + DDX_Check(pDX, IDC_NODDRAWBLT, cTarget->m_NoDDRAWBlt); + DDX_Check(pDX, IDC_NODDRAWFLIP, cTarget->m_NoDDRAWFlip); + DDX_Check(pDX, IDC_NOGDIBLT, cTarget->m_NoGDIBlt); } BEGIN_MESSAGE_MAP(CTabDebug, CDialog) diff --git a/host/TabDirectX.cpp b/host/TabDirectX.cpp index 6ab91e7..e018920 100644 --- a/host/TabDirectX.cpp +++ b/host/TabDirectX.cpp @@ -38,6 +38,8 @@ void CTabDirectX::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_NOPALETTEUPDATE, cTarget->m_NoPaletteUpdate); DDX_Check(pDX, IDC_SETCOMPATIBILITY, cTarget->m_SetCompatibility); DDX_Check(pDX, IDC_DISABLEHAL, cTarget->m_DisableHAL); + DDX_Check(pDX, IDC_FORCESHEL, cTarget->m_ForcesHEL); + DDX_Check(pDX, IDC_COLORFIX, cTarget->m_ColorFix); //DDX_Check(pDX, IDC_SAVECAPS, cTarget->m_SaveCaps); // DirectInput DDX_Check(pDX, IDC_HOOKDI, cTarget->m_HookDI); diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index eaeffca..628b707 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -38,6 +38,8 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_SuppressD3DExt = FALSE; m_SetCompatibility = TRUE; m_DisableHAL = FALSE; + m_ForcesHEL = FALSE; + m_ColorFix = FALSE; m_LockSysColors = FALSE; m_ForceYUVtoRGB = FALSE; m_ForceRGBtoYUV = FALSE; @@ -51,7 +53,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_Windowize = TRUE; // default true !! m_HookDLLs = TRUE; // default true !! m_HookEnabled = TRUE; // default true !! - m_EmulateRegistry = FALSE; // default true !! + m_EmulateRegistry = FALSE; m_FullScreenOnly = FALSE; m_FilterMessages = FALSE; m_PeekAllMessages = FALSE; @@ -109,6 +111,10 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_FakeVersion = FALSE; m_FullRectBlt = FALSE; m_SurfaceWarn = FALSE; + m_CapMask = FALSE; + m_NoDDRAWBlt = FALSE; + m_NoDDRAWFlip = FALSE; + m_NoGDIBlt = FALSE; m_AnalyticMode = FALSE; m_NoPaletteUpdate = FALSE; m_WireFrame = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 720bf9b..d964507 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -105,6 +105,10 @@ public: BOOL m_FakeVersion; BOOL m_FullRectBlt; BOOL m_SurfaceWarn; + BOOL m_CapMask; + BOOL m_NoDDRAWBlt; + BOOL m_NoDDRAWFlip; + BOOL m_NoGDIBlt; BOOL m_AnalyticMode; BOOL m_NoPaletteUpdate; BOOL m_LimitResources; @@ -114,6 +118,8 @@ public: BOOL m_SuppressIME; BOOL m_SetCompatibility; BOOL m_DisableHAL; + BOOL m_ForcesHEL; + BOOL m_ColorFix; BOOL m_LockSysColors; BOOL m_SaveCaps; BOOL m_SingleProcAffinity; diff --git a/host/bmpext.h b/host/bmpext.h new file mode 100644 index 0000000..998f83d --- /dev/null +++ b/host/bmpext.h @@ -0,0 +1,96 @@ +#pragma once + +#include "afxtempl.h" + +//MakeRgn helper data definition +typedef CTypedPtrList< CPtrList, LPRECT > RECTLIST; + +////////////////////////////////////////////////////////////////////////// +// DD Bitmap draw extensions class +class AFX_EXT_CLASS CDDBDrawEx +{ +public: + CDDBDrawEx(CDC* pDC, CBitmap* pbmSrc, CBitmap* pbmBack = NULL); + virtual ~CDDBDrawEx(); + + void Fill(CRect& rDest); + void Draw(CRect& rDest, CPoint& pntSrc); + void DrawTransparent(CRect& rDest, CPoint& pntSrc, COLORREF crMask ); + HRGN MakeRgn(COLORREF cTransparentColor = 0, COLORREF cTolerance = 0x101010); + +private: + CDC* m_pDC; + CBitmap* m_pbmSrc; + CBitmap* m_pbmBack; + + LPRGNDATA RectList2RGNDATA( RECTLIST& rl, RECT& rBound, int& iByteCount ); +}; + +/////////////////////////////////////////////////////////////////////////// +// DIB support classes +class CDibException +{ +public: + //exception types: not enough memory, operation not supported, invalid pixel position + enum {E_NOMEM, E_NOTSUPP, E_INVPOS}; + CDibException( int iReason ) : m_iReason(iReason) {} + + static void Throw( int iReason ){ throw new CDibException(iReason); } + +public: + int m_iReason; +}; + +class AFX_EXT_CLASS CDib +{ +// Constructors +public: + CDib(); + virtual ~CDib(); + +// Attributes +protected: + LPBYTE m_pBits; + LPBITMAPINFO m_pBMI; + +public: + CPalette* m_pPalette; + +public: + DWORD Width() const; + DWORD Height() const; + WORD NumColors( BITMAPINFOHEADER& bmiHeader ) const; + BOOL IsValid() const; + + void SetPixel( int iX, int iY, RGBQUAD& rgbPixel ); + RGBQUAD GetPixel(int iX, int iY); + +private: + void AssertPosition( int iX, int iY ); + DWORD PaletteSize() const; + +// Operations +public: + BOOL Draw(CDC*, CRect& rectDC, CRect& rectDIB) const; + + DWORD Save(CFile& file) const; + DWORD Read(CFile& file, BOOL bFromResource = FALSE ); + DWORD ReadFromResource(UINT nResID); + + void Invalidate(); + +// Implementation +protected: + BOOL CreatePalette(); + + void Free(); + +public: + HBITMAP CreateDDBitmap(CDC* pDC); + HBITMAP CreateDDBitmap( HDC hDC ); + BOOL Compress(CDC* pDC, BOOL bCompress ); + +protected: + CDib& operator = (CDib& dib); +}; + diff --git a/host/cdib.cpp b/host/cdib.cpp new file mode 100644 index 0000000..c14333d --- /dev/null +++ b/host/cdib.cpp @@ -0,0 +1,822 @@ +// cdib.cpp +// new version for WIN32 + +#include "stdafx.h" +#include "cdib.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +IMPLEMENT_SERIAL(CDib, CObject, 0); + +CDib::CDib() +{ + + m_hFile = NULL; + + m_hBitmap = NULL; + + m_hPalette = NULL; + + m_nBmihAlloc = m_nImageAlloc = noAlloc; + + Empty(); + +} + + + +CDib::CDib(CSize size, int nBitCount) + +{ + + m_hFile = NULL; + + m_hBitmap = NULL; + + m_hPalette = NULL; + + m_nBmihAlloc = m_nImageAlloc = noAlloc; + + Empty(); + + ComputePaletteSize(nBitCount); + + m_lpBMIH = (LPBITMAPINFOHEADER) new + + char[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries]; + + m_nBmihAlloc = crtAlloc; + + m_lpBMIH->biSize = sizeof(BITMAPINFOHEADER); + + m_lpBMIH->biWidth = size.cx; + + m_lpBMIH->biHeight = size.cy; + + m_lpBMIH->biPlanes = 1; + + m_lpBMIH->biBitCount = nBitCount; + + m_lpBMIH->biCompression = BI_RGB; + + m_lpBMIH->biSizeImage = 0; + + m_lpBMIH->biXPelsPerMeter = 0; + + m_lpBMIH->biYPelsPerMeter = 0; + + m_lpBMIH->biClrUsed = m_nColorTableEntries; + + m_lpBMIH->biClrImportant = m_nColorTableEntries; + + ComputeMetrics(); + + memset(m_lpvColorTable, 0, sizeof(RGBQUAD) * m_nColorTableEntries); + + m_lpImage = NULL; // no data yet + +} + + + +CDib::~CDib() + +{ + + Empty(); + +} + + + +CSize CDib::GetDimensions() + +{ + + if(m_lpBMIH == NULL) return CSize(0, 0); + + return CSize((int) m_lpBMIH->biWidth, (int) m_lpBMIH->biHeight); + +} + + + +BOOL CDib::AttachMapFile(const char* strPathname, BOOL bShare) // for reading + +{ + + // if we open the same file twice, Windows treats it as 2 separate files + + // doesn't work with rare BMP files where # palette entries > biClrUsed + + HANDLE hFile = ::CreateFile(strPathname, GENERIC_WRITE | GENERIC_READ, + + bShare ? FILE_SHARE_READ : 0, + + NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + + ASSERT(hFile != INVALID_HANDLE_VALUE); + + DWORD dwFileSize = ::GetFileSize(hFile, NULL); + + HANDLE hMap = ::CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL); + + DWORD dwErr = ::GetLastError(); + + if(hMap == NULL) { + + AfxMessageBox("Empty bitmap file"); + + return FALSE; + + } + + LPVOID lpvFile = ::MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0); // map whole file + + ASSERT(lpvFile != NULL); + + if(((LPBITMAPFILEHEADER) lpvFile)->bfType != 0x4d42) { + + AfxMessageBox("Invalid bitmap file"); + + DetachMapFile(); + + return FALSE; + + } + + AttachMemory((LPBYTE) lpvFile + sizeof(BITMAPFILEHEADER)); + + m_lpvFile = lpvFile; + + m_hFile = hFile; + + m_hMap = hMap; + + return TRUE; + +} + + + +BOOL CDib::CopyToMapFile(const char* strPathname) + +{ + + // copies DIB to a new file, releases prior pointers + + // if you previously used CreateSection, the HBITMAP will be NULL (and unusable) + + BITMAPFILEHEADER bmfh; + + bmfh.bfType = 0x4d42; // 'BM' + + bmfh.bfSize = m_dwSizeImage + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries + sizeof(BITMAPFILEHEADER); + + // meaning of bfSize open to interpretation + + bmfh.bfReserved1 = bmfh.bfReserved2 = 0; + + bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; + + HANDLE hFile = ::CreateFile(strPathname, GENERIC_WRITE | GENERIC_READ, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + + ASSERT(hFile != INVALID_HANDLE_VALUE); + + int nSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries + m_dwSizeImage; + + HANDLE hMap = ::CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, nSize, NULL); + + DWORD dwErr = ::GetLastError(); + + ASSERT(hMap != NULL); + + LPVOID lpvFile = ::MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0); // map whole file + + ASSERT(lpvFile != NULL); + + LPBYTE lpbCurrent = (LPBYTE) lpvFile; + + memcpy(lpbCurrent, &bmfh, sizeof(BITMAPFILEHEADER)); // file header + + lpbCurrent += sizeof(BITMAPFILEHEADER); + + LPBITMAPINFOHEADER lpBMIH = (LPBITMAPINFOHEADER) lpbCurrent; + + memcpy(lpbCurrent, m_lpBMIH, sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries); // info + + lpbCurrent += sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; + + memcpy(lpbCurrent, m_lpImage, m_dwSizeImage); // bit image + + DWORD dwSizeImage = m_dwSizeImage; + + Empty(); + + m_dwSizeImage = dwSizeImage; + + m_nBmihAlloc = m_nImageAlloc = noAlloc; + + m_lpBMIH = lpBMIH; + + m_lpImage = lpbCurrent; + + m_hFile = hFile; + + m_hMap = hMap; + + m_lpvFile = lpvFile; + + ComputePaletteSize(m_lpBMIH->biBitCount); + + ComputeMetrics(); + + MakePalette(); + + return TRUE; + +} + + + +BOOL CDib::AttachMemory(LPVOID lpvMem, BOOL bMustDelete, HGLOBAL hGlobal) +{ + // assumes contiguous BITMAPINFOHEADER, color table, image color table could be zero length + Empty(); + m_hGlobal = hGlobal; + if(bMustDelete == FALSE) { + m_nBmihAlloc = noAlloc; + } + else { + m_nBmihAlloc = ((hGlobal == NULL) ? crtAlloc : heapAlloc); + } + try { + m_lpBMIH = (LPBITMAPINFOHEADER) lpvMem; + ComputeMetrics(); + ComputePaletteSize(m_lpBMIH->biBitCount); + m_lpImage = (LPBYTE) m_lpvColorTable + sizeof(RGBQUAD) * m_nColorTableEntries; + MakePalette(); + } + + catch(CException* pe) { + + AfxMessageBox("AttachMemory error"); + + pe->Delete(); + + return FALSE; + + } + + return TRUE; + +} + + + +UINT CDib::UsePalette(CDC* pDC, BOOL bBackground /* = FALSE */) + +{ + + if(m_hPalette == NULL) return 0; + + HDC hdc = pDC->GetSafeHdc(); + + ::SelectPalette(hdc, m_hPalette, bBackground); + + return ::RealizePalette(hdc); + +} + + + +BOOL CDib::Draw(CDC* pDC, CPoint origin, CSize size) + +{ + + if(m_lpBMIH == NULL) return FALSE; + + if(m_hPalette != NULL) { + + ::SelectPalette(pDC->GetSafeHdc(), m_hPalette, TRUE); + + } + + pDC->SetStretchBltMode(COLORONCOLOR); + + ::StretchDIBits(pDC->GetSafeHdc(), origin.x, origin.y, size.cx, size.cy, + + 0, 0, m_lpBMIH->biWidth, m_lpBMIH->biHeight, + + m_lpImage, (LPBITMAPINFO) m_lpBMIH, DIB_RGB_COLORS, SRCCOPY); + + return TRUE; + +} + + + +HBITMAP CDib::CreateSection(CDC* pDC /* = NULL */) + +{ + + if(m_lpBMIH == NULL) return NULL; + + if(m_lpImage != NULL) return NULL; // can only do this if image doesn't exist + + m_hBitmap = ::CreateDIBSection(pDC->GetSafeHdc(), (LPBITMAPINFO) m_lpBMIH, + + DIB_RGB_COLORS, (LPVOID*) &m_lpImage, NULL, 0); + + ASSERT(m_lpImage != NULL); + + return m_hBitmap; + +} + + + +BOOL CDib::MakePalette() + +{ + + // makes a logical palette (m_hPalette) from the DIB's color table + + // this palette will be selected and realized prior to drawing the DIB + + if(m_nColorTableEntries == 0) return FALSE; + + if(m_hPalette != NULL) ::DeleteObject(m_hPalette); + + TRACE("CDib::MakePalette -- m_nColorTableEntries = %d\n", m_nColorTableEntries); + + LPLOGPALETTE pLogPal = (LPLOGPALETTE) new char[2 * sizeof(WORD) + + + m_nColorTableEntries * sizeof(PALETTEENTRY)]; + + pLogPal->palVersion = 0x300; + + pLogPal->palNumEntries = m_nColorTableEntries; + + LPRGBQUAD pDibQuad = (LPRGBQUAD) m_lpvColorTable; + + for(int i = 0; i < m_nColorTableEntries; i++) { + + pLogPal->palPalEntry[i].peRed = pDibQuad->rgbRed; + + pLogPal->palPalEntry[i].peGreen = pDibQuad->rgbGreen; + + pLogPal->palPalEntry[i].peBlue = pDibQuad->rgbBlue; + + pLogPal->palPalEntry[i].peFlags = 0; + + pDibQuad++; + + } + + m_hPalette = ::CreatePalette(pLogPal); + + delete pLogPal; + + return TRUE; + +} + + + +BOOL CDib::SetSystemPalette(CDC* pDC) + +{ + + // if the DIB doesn't have a color table, we can use the system's halftone palette + + if(m_nColorTableEntries != 0) return FALSE; + + m_hPalette = ::CreateHalftonePalette(pDC->GetSafeHdc()); + + return TRUE; + +} + + + +HBITMAP CDib::CreateBitmap(CDC* pDC) + +{ + + if (m_dwSizeImage == 0) return NULL; + + HBITMAP hBitmap = ::CreateDIBitmap(pDC->GetSafeHdc(), m_lpBMIH, + + CBM_INIT, m_lpImage, (LPBITMAPINFO) m_lpBMIH, DIB_RGB_COLORS); + + ASSERT(hBitmap != NULL); + + return hBitmap; + +} + + + +BOOL CDib::Compress(CDC* pDC, BOOL bCompress /* = TRUE */) + +{ + + // 1. makes GDI bitmap from existing DIB + + // 2. makes a new DIB from GDI bitmap with compression + + // 3. cleans up the original DIB + + // 4. puts the new DIB in the object + + if((m_lpBMIH->biBitCount != 4) && (m_lpBMIH->biBitCount != 8)) return FALSE; + + // compression supported only for 4 bpp and 8 bpp DIBs + + if(m_hBitmap) return FALSE; // can't compress a DIB Section! + + TRACE("Compress: original palette size = %d\n", m_nColorTableEntries); + + HDC hdc = pDC->GetSafeHdc(); + + HPALETTE hOldPalette = ::SelectPalette(hdc, m_hPalette, FALSE); + + HBITMAP hBitmap; // temporary + + if((hBitmap = CreateBitmap(pDC)) == NULL) return FALSE; + + int nSize = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; + + LPBITMAPINFOHEADER lpBMIH = (LPBITMAPINFOHEADER) new char[nSize]; + + memcpy(lpBMIH, m_lpBMIH, nSize); // new header + + if(bCompress) { + + switch (lpBMIH->biBitCount) { + + case 4: + + lpBMIH->biCompression = BI_RLE4; + + break; + + case 8: + + lpBMIH->biCompression = BI_RLE8; + + break; + + default: + + ASSERT(FALSE); + + } + + // calls GetDIBits with null data pointer to get size of compressed DIB + + if(!::GetDIBits(pDC->GetSafeHdc(), hBitmap, 0, (UINT) lpBMIH->biHeight, NULL, (LPBITMAPINFO) lpBMIH, DIB_RGB_COLORS)) { + + AfxMessageBox("Unable to compress this DIB"); + + // probably a problem with the color table + + ::DeleteObject(hBitmap); + + delete [] lpBMIH; + + ::SelectPalette(hdc, hOldPalette, FALSE); + + return FALSE; + + } + + if (lpBMIH->biSizeImage == 0) { + + AfxMessageBox("Driver can't do compression"); + + ::DeleteObject(hBitmap); + + delete [] lpBMIH; + + ::SelectPalette(hdc, hOldPalette, FALSE); + + return FALSE; + + } + + else { + + m_dwSizeImage = lpBMIH->biSizeImage; + + } + + } + + else { + + lpBMIH->biCompression = BI_RGB; // decompress + + // figure the image size from the bitmap width and height + + DWORD dwBytes = ((DWORD) lpBMIH->biWidth * lpBMIH->biBitCount) / 32; + + if(((DWORD) lpBMIH->biWidth * lpBMIH->biBitCount) % 32) { + + dwBytes++; + + } + + dwBytes *= 4; + + m_dwSizeImage = dwBytes * lpBMIH->biHeight; // no compression + + lpBMIH->biSizeImage = m_dwSizeImage; + + } + + // second GetDIBits call to make DIB + + LPBYTE lpImage = (LPBYTE) new char[m_dwSizeImage]; + + VERIFY(::GetDIBits(pDC->GetSafeHdc(), hBitmap, 0, (UINT) lpBMIH->biHeight, lpImage, (LPBITMAPINFO) lpBMIH, DIB_RGB_COLORS)); + + TRACE("dib successfully created - height = %d\n", lpBMIH->biHeight); + + ::DeleteObject(hBitmap); + + Empty(); + + m_nBmihAlloc = m_nImageAlloc = crtAlloc; + + m_lpBMIH = lpBMIH; + + m_lpImage = lpImage; + + ComputeMetrics(); + + ComputePaletteSize(m_lpBMIH->biBitCount); + + MakePalette(); + + ::SelectPalette(hdc, hOldPalette, FALSE); + + TRACE("Compress: new palette size = %d\n", m_nColorTableEntries); + + return TRUE; + +} + + + +BOOL CDib::Read(CFile* pFile) +{ + // 1. read file header to get size of info hdr + color table + // 2. read info hdr (to get image size) and color table + // 3. read image + // can't use bfSize in file header + + Empty(); + int nCount, nSize; + BITMAPFILEHEADER bmfh; + + try { + nCount = pFile->Read((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); + //if(nCount != sizeof(BITMAPFILEHEADER)) { + // throw new CException; + //} + //if(bmfh.bfType != 0x4d42) { + // throw new CException; + //} + nSize = bmfh.bfOffBits - sizeof(BITMAPFILEHEADER); + m_lpBMIH = (LPBITMAPINFOHEADER) new char[nSize]; + m_nBmihAlloc = m_nImageAlloc = crtAlloc; + nCount = pFile->Read(m_lpBMIH, nSize); // info hdr & color table + ComputeMetrics(); + ComputePaletteSize(m_lpBMIH->biBitCount); + MakePalette(); + m_lpImage = (LPBYTE) new char[m_dwSizeImage]; + nCount = pFile->Read(m_lpImage, m_dwSizeImage); // image only + } + catch(CException* pe) { + AfxMessageBox("Read error"); + pe->Delete(); + return FALSE; + } + return TRUE; +} + +BOOL CDib::ReadSection(CFile* pFile, CDC* pDC /* = NULL */) +{ + // new function reads BMP from disk and creates a DIB section + // allows modification of bitmaps from disk + // 1. read file header to get size of info hdr + color table + // 2. read info hdr (to get image size) and color table + // 3. create DIB section based on header parms + // 4. read image into memory that CreateDibSection allocates + Empty(); + int nCount, nSize; + BITMAPFILEHEADER bmfh; + try { + nCount = pFile->Read((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); + //if(nCount != sizeof(BITMAPFILEHEADER)) { + // throw new CException; + //} + //if(bmfh.bfType != 0x4d42) { + // throw new CException; + //} + nSize = bmfh.bfOffBits - sizeof(BITMAPFILEHEADER); + m_lpBMIH = (LPBITMAPINFOHEADER) new char[nSize]; + m_nBmihAlloc = crtAlloc; + m_nImageAlloc = noAlloc; + nCount = pFile->Read(m_lpBMIH, nSize); // info hdr & color table + //if(m_lpBMIH->biCompression != BI_RGB) { + // throw new CException; + //} + ComputeMetrics(); + ComputePaletteSize(m_lpBMIH->biBitCount); + MakePalette(); + UsePalette(pDC); + m_hBitmap = ::CreateDIBSection(pDC->GetSafeHdc(), (LPBITMAPINFO) m_lpBMIH, DIB_RGB_COLORS, (LPVOID*) &m_lpImage, NULL, 0); + ASSERT(m_lpImage != NULL); + nCount = pFile->Read(m_lpImage, m_dwSizeImage); // image only + } + catch(CException* pe) { + AfxMessageBox("ReadSection error"); + pe->Delete(); + return FALSE; + } + return TRUE; +} + +BOOL CDib::Write(CFile* pFile) +{ + BITMAPFILEHEADER bmfh; + bmfh.bfType = 0x4d42; // 'BM' + int nSizeHdr = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; + bmfh.bfSize = 0; + // bmfh.bfSize = sizeof(BITMAPFILEHEADER) + nSizeHdr + m_dwSizeImage; + // meaning of bfSize open to interpretation (bytes, words, dwords?) -- we won't use it + bmfh.bfReserved1 = bmfh.bfReserved2 = 0; + bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; + try { + pFile->Write((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); + pFile->Write((LPVOID) m_lpBMIH, nSizeHdr); + pFile->Write((LPVOID) m_lpImage, m_dwSizeImage); + } + catch(CException* pe) { + pe->Delete(); + AfxMessageBox("write error"); + return FALSE; + } + return TRUE; +} + +void CDib::Serialize(CArchive& ar) + +{ + DWORD dwPos; + dwPos = ar.GetFile()->GetPosition(); + TRACE("CDib::Serialize -- pos = %d\n", dwPos); + ar.Flush(); + dwPos = ar.GetFile()->GetPosition(); + TRACE("CDib::Serialize -- pos = %d\n", dwPos); + if(ar.IsStoring()) { + Write(ar.GetFile()); + } + else { + Read(ar.GetFile()); + } +} + +// helper functions + +void CDib::ComputePaletteSize(int nBitCount) +{ + if((m_lpBMIH == NULL) || (m_lpBMIH->biClrUsed == 0)) { + switch(nBitCount) { + case 1: + m_nColorTableEntries = 2; + break; + case 4: + m_nColorTableEntries = 16; + break; + case 8: + m_nColorTableEntries = 256; + break; + case 16: + case 24: + case 32: + m_nColorTableEntries = 0; + break; + default: + ASSERT(FALSE); + } + } + else { + m_nColorTableEntries = m_lpBMIH->biClrUsed; + } + ASSERT((m_nColorTableEntries >= 0) && (m_nColorTableEntries <= 256)); +} + + + +void CDib::ComputeMetrics() +{ + //if(m_lpBMIH->biSize != sizeof(BITMAPINFOHEADER)) { + // TRACE("Not a valid Windows bitmap -- probably an OS/2 bitmap\n"); + // throw new CException; + //} + m_dwSizeImage = m_lpBMIH->biSizeImage; + if(m_dwSizeImage == 0) { + DWORD dwBytes = ((DWORD) m_lpBMIH->biWidth * m_lpBMIH->biBitCount) / 32; + if(((DWORD) m_lpBMIH->biWidth * m_lpBMIH->biBitCount) % 32) { + dwBytes++; + } + dwBytes *= 4; + m_dwSizeImage = dwBytes * m_lpBMIH->biHeight; // no compression + } + m_lpvColorTable = (LPBYTE) m_lpBMIH + sizeof(BITMAPINFOHEADER); +} + +void CDib::Empty() +{ + + // this is supposed to clean up whatever is in the DIB + + DetachMapFile(); + + if(m_nBmihAlloc == crtAlloc) { + + delete [ ] m_lpBMIH; + + } + + else if(m_nBmihAlloc == heapAlloc) { + + ::GlobalUnlock(m_hGlobal); + + ::GlobalFree(m_hGlobal); + + } + + if(m_nImageAlloc == crtAlloc) delete [] m_lpImage; + + if(m_hPalette != NULL) ::DeleteObject(m_hPalette); + + if(m_hBitmap != NULL) ::DeleteObject(m_hBitmap); + + m_nBmihAlloc = m_nImageAlloc = noAlloc; + + m_hGlobal = NULL; + + m_lpBMIH = NULL; + + m_lpImage = NULL; + + m_lpvColorTable = NULL; + + m_nColorTableEntries = 0; + + m_dwSizeImage = 0; + + m_lpvFile = NULL; + + m_hMap = NULL; + + m_hFile = NULL; + + m_hBitmap = NULL; + + m_hPalette = NULL; + +} + + + +void CDib::DetachMapFile() + +{ + + if(m_hFile == NULL) return; + + ::UnmapViewOfFile(m_lpvFile); + + ::CloseHandle(m_hMap); + + ::CloseHandle(m_hFile); + + m_hFile = NULL; + +} + + + + + + \ No newline at end of file diff --git a/host/cdib.h b/host/cdib.h new file mode 100644 index 0000000..29b978f --- /dev/null +++ b/host/cdib.h @@ -0,0 +1,61 @@ +#ifndef _INSIDE_VISUAL_CPP_CDIB +#define _INSIDE_VISUAL_CPP_CDIB + +class CDib : public CObject +{ + enum Alloc {noAlloc, crtAlloc, heapAlloc}; // applies to BITMAPINFOHEADER + DECLARE_SERIAL(CDib) + +public: + + LPVOID m_lpvColorTable; + HBITMAP m_hBitmap; + LPBYTE m_lpImage; // starting address of DIB bits + LPBITMAPINFOHEADER m_lpBMIH; // buffer containing the BITMAPINFOHEADER + +private: + + HGLOBAL m_hGlobal; // for external windows we need to free; could be allocated by this class or allocated externally + Alloc m_nBmihAlloc; + Alloc m_nImageAlloc; + DWORD m_dwSizeImage; // of bits—not BITMAPINFOHEADER or BITMAPFILEHEADER + int m_nColorTableEntries; + + HANDLE m_hFile; + HANDLE m_hMap; + LPVOID m_lpvFile; + HPALETTE m_hPalette; + +public: + + CDib(); + CDib(CSize size, int nBitCount); // builds BITMAPINFOHEADER + ~CDib(); + int GetSizeImage() {return m_dwSizeImage;} + int GetSizeHeader() + {return sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries;} + CSize GetDimensions(); + BOOL AttachMapFile(const char* strPathname, BOOL bShare = FALSE); + BOOL CopyToMapFile(const char* strPathname); + BOOL AttachMemory(LPVOID lpvMem, BOOL bMustDelete = FALSE, HGLOBAL hGlobal = NULL); + BOOL Draw(CDC* pDC, CPoint origin, CSize size); // until we implement CreateDibSection + HBITMAP CreateSection(CDC* pDC = NULL); + UINT UsePalette(CDC* pDC, BOOL bBackground = FALSE); + BOOL MakePalette(); + BOOL SetSystemPalette(CDC* pDC); + BOOL Compress(CDC* pDC, BOOL bCompress = TRUE); // FALSE means decompress + HBITMAP CreateBitmap(CDC* pDC); + BOOL Read(CFile* pFile); + BOOL ReadSection(CFile* pFile, CDC* pDC = NULL); + BOOL Write(CFile* pFile); + void Serialize(CArchive& ar); + void Empty(); + +private: + + void DetachMapFile(); + void ComputePaletteSize(int nBitCount); + void ComputeMetrics(); +}; + +#endif // _INSIDE_VISUAL_CPP_CDIB \ No newline at end of file diff --git a/host/dib.cpp b/host/dib.cpp new file mode 100644 index 0000000..5b4a13c --- /dev/null +++ b/host/dib.cpp @@ -0,0 +1,552 @@ +#include "stdafx.h" +#include "bmpext.h" + +////////////////////////////////////////////////////////////////////////// +// DIB support defines +#define BMIH_SIZE sizeof BITMAPINFOHEADER +#define BMIF_SIZE sizeof BITMAPFILEHEADER + +/* DIB constants */ +#define PALVERSION 0x300 + +/* Dib Header Marker - used in writing DIBs to files */ +#define DIB_HEADER_MARKER ((WORD) ('M' << 8) | 'B') + +// WIDTHBYTES performs DWORD-aligning of DIB scanlines. The "bits" +// parameter is the bit count for the scanline (biWidth * biBitCount), +// and this macro returns the number of DWORD-aligned bytes needed +// to hold those bits. +#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4) + +///////////////////////////////////////////////////////////////////////////// +//CDib implementation + +CDib::CDib() : m_pBMI(0), m_pBits(0), m_pPalette(0) +{} + +CDib::~CDib() +{ + Free(); +} + +DWORD CDib::Width() const +{ + if (!m_pBMI) + return 0; + + /* return the DIB width */ + return m_pBMI->bmiHeader.biWidth; +} + +DWORD CDib::Height() const +{ + if (!m_pBMI) + return 0; + + /* return the DIB height */ + return m_pBMI->bmiHeader.biHeight; +} + +WORD CDib::NumColors( BITMAPINFOHEADER& bmiHeader ) const +{ + if ( bmiHeader.biClrUsed != 0) + return (WORD)bmiHeader.biClrUsed; + + switch ( bmiHeader.biBitCount ) + { + case 1: + return 2; + case 4: + return 16; + case 8: + return 256; + default: + return 0; + } +} + +BOOL CDib::IsValid() const +{ + return (m_pBits != NULL); +} + +DWORD CDib::PaletteSize() const +{ + return NumColors( m_pBMI->bmiHeader ) * sizeof(RGBQUAD); +} + +BOOL CDib::Draw(CDC* pDC, CRect& rectDC, CRect& rectDIB) const +{ + if ( !IsValid() ) + return FALSE; + + CPalette* pOldPal = NULL; // Previous palette + + // Get the DIB's palette, then select it into DC + if (m_pPalette != NULL) + { + // Select as background since we have + // already realized in forground if needed + pOldPal = pDC->SelectPalette( m_pPalette, TRUE); + } + + /* Make sure to use the stretching mode best for color pictures */ + pDC->SetStretchBltMode( COLORONCOLOR ); + + /* Determine whether to call StretchDIBits() or SetDIBitsToDevice() */ + BOOL bSuccess; + if( ( rectDC.Width() == rectDIB.Width() ) && + ( rectDC.Height() == rectDIB.Height() ) ) + bSuccess = ::SetDIBitsToDevice(pDC->m_hDC, // hDC + rectDC.left, // DestX + rectDC.top, // DestY + rectDC.Width(), // nDestWidth + rectDC.Height(), // nDestHeight + rectDIB.left, // SrcX + (int)Height() - + rectDIB.top - + rectDIB.Height(), // SrcY + 0, // nStartScan + (WORD)Height(), // nNumScans + m_pBits, // lpBits + m_pBMI, // lpBitsInfo + DIB_RGB_COLORS); // wUsage + else + bSuccess = ::StretchDIBits(pDC->m_hDC, // hDC + rectDC.left, // DestX + rectDC.top, // DestY + rectDC.Width(), // nDestWidth + rectDC.Height(), // nDestHeight + rectDIB.left, // SrcX + rectDIB.top, // SrcY + rectDIB.Width(), // wSrcWidth + rectDIB.Height(), // wSrcHeight + m_pBits, // lpBits + m_pBMI, // lpBitsInfo + DIB_RGB_COLORS, // wUsage + SRCCOPY); // dwROP + + /* Reselect old palette */ + if (pOldPal != NULL) + { + pDC->SelectPalette( pOldPal, TRUE); + } + + return bSuccess; +} + + +void CDib::AssertPosition(int iX, int iY) +{ + if( (iX < 0) || (iX > m_pBMI->bmiHeader.biWidth - 1) || + (iY < 0) || (iY > m_pBMI->bmiHeader.biHeight - 1) ) + { + //invalid image pixel position + CDibException::Throw( CDibException::E_INVPOS ); + } +} + + +RGBQUAD CDib::GetPixel(int iX, int iY) +{ + RGBQUAD rgbResult; + WORD wDummy; + + //takeinto account that DIBit raws are reversed vertically + iY = (m_pBMI->bmiHeader.biHeight - 1) - iY; // GHO fix + //iY = m_pBMI->bmiHeader.biHeight - iY; + + //assert pixel position + AssertPosition( iX, iY ); + + //access the destination pixel + int nRowBytes = m_pBMI->bmiHeader.biWidth * m_pBMI->bmiHeader.biBitCount; + nRowBytes = ( (nRowBytes + 31) & (~31) ) / 8; + + switch( m_pBMI->bmiHeader.biBitCount ) + { + case 1: //Monochrome + rgbResult = m_pBMI->bmiColors[ *(m_pBits + nRowBytes*iY + iX/8) & (0x80 >> iX%8) ]; + break; + case 4: + rgbResult = m_pBMI->bmiColors[ *(m_pBits + nRowBytes*iY + iX/2) & ((iX&1) ? 0x0f : 0xf0) ]; + break; + case 8: + rgbResult = m_pBMI->bmiColors[ *(m_pBits + nRowBytes*iY + iX) ]; + break; + case 16: + wDummy = *(LPWORD)(m_pBits + nRowBytes*iY + iX*2); + + rgbResult.rgbBlue = (BYTE)(0x001F & wDummy); + rgbResult.rgbGreen = (BYTE)(0x001F & (wDummy >> 5)); + rgbResult.rgbRed = (BYTE)(0x001F & wDummy >> 10 ); + break; + case 24: + rgbResult = *(LPRGBQUAD)(m_pBits + nRowBytes*iY + iX*3); + break; + case 32: + rgbResult = *(LPRGBQUAD)(m_pBits + nRowBytes*iY + iX*4); + break; + } + + return rgbResult; +} + +void CDib::SetPixel(int iX, int iY, RGBQUAD &rgbPixel) +{ + WORD wDummy; + + //takeinto account that DIBit raws are reversed vertically + iY = (m_pBMI->bmiHeader.biHeight - 1) - iY; // GHO fix + //iY = m_pBMI->bmiHeader.biHeight - iY; + + //assert pixel position + AssertPosition( iX, iY ); + + //access the destination pixel + int nRowBytes = m_pBMI->bmiHeader.biWidth * m_pBMI->bmiHeader.biBitCount; + nRowBytes = ( (nRowBytes + 31) & (~31) ) / 8; + + switch( m_pBMI->bmiHeader.biBitCount ) + { + case 1: + case 4: + case 8: + //do not support this operation; + CDibException::Throw( CDibException::E_NOTSUPP ); + break; + case 16: + wDummy = rgbPixel.rgbRed; + wDummy = wDummy << 5; + wDummy |= rgbPixel.rgbGreen; + wDummy = wDummy << 5; + wDummy |= rgbPixel.rgbBlue; + + *(LPWORD)(m_pBits + nRowBytes*iY + iX*2) = wDummy; + break; + case 24: + *(LPRGBQUAD)(m_pBits + nRowBytes*iY + iX*3) = rgbPixel; + break; + case 32: + *(LPRGBQUAD)(m_pBits + nRowBytes*iY + iX*4) = rgbPixel; + break; + } +} + +DWORD CDib::Save(CFile& file) const +{ + BITMAPFILEHEADER bmfHdr; // Header for Bitmap file + DWORD dwDIBSize; + + if (m_pBMI == NULL) + return 0; + + // Fill in the fields of the file header + + // Fill in file type (first 2 bytes must be "BM" for a bitmap) + bmfHdr.bfType = DIB_HEADER_MARKER; // "BM" + + // Calculating the size of the DIB is a bit tricky (if we want to + // do it right). The easiest way to do this is to call GlobalSize() + // on our global handle, but since the size of our global memory may have + // been padded a few bytes, we may end up writing out a few too + // many bytes to the file (which may cause problems with some apps). + // + // So, instead let's calculate the size manually (if we can) + // + // First, find size of header plus size of color table. Since the + // first DWORD in both BITMAPINFOHEADER and BITMAPCOREHEADER conains + // the size of the structure, let's use this. + dwDIBSize = m_pBMI->bmiHeader.biSize + PaletteSize(); // Partial Calculation + + // Now calculate the size of the image + if ((m_pBMI->bmiHeader.biCompression == BI_RLE8) || (m_pBMI->bmiHeader.biCompression == BI_RLE4)) + { + // It's an RLE bitmap, we can't calculate size, so trust the + // biSizeImage field + dwDIBSize += m_pBMI->bmiHeader.biSizeImage; + } + else + { + DWORD dwBmBitsSize; // Size of Bitmap Bits only + + // It's not RLE, so size is Width (DWORD aligned) * Height + dwBmBitsSize = WIDTHBYTES((m_pBMI->bmiHeader.biWidth)*((DWORD)m_pBMI->bmiHeader.biBitCount)) * m_pBMI->bmiHeader.biHeight; + dwDIBSize += dwBmBitsSize; + + // Now, since we have calculated the correct size, why don't we + // fill in the biSizeImage field (this will fix any .BMP files which + // have this field incorrect). + m_pBMI->bmiHeader.biSizeImage = dwBmBitsSize; + } + + // Calculate the file size by adding the DIB size to sizeof(BITMAPFILEHEADER) + bmfHdr.bfSize = dwDIBSize + BMIF_SIZE; + bmfHdr.bfReserved1 = 0; + bmfHdr.bfReserved2 = 0; + + /* + * Now, calculate the offset the actual bitmap bits will be in + * the file -- It's the Bitmap file header plus the DIB header, + * plus the size of the color table. + */ + bmfHdr.bfOffBits = BMIF_SIZE + m_pBMI->bmiHeader.biSize + PaletteSize(); + + // Write the file header + file.Write( (LPSTR)&bmfHdr, BMIF_SIZE ); + DWORD dwBytesSaved = BMIF_SIZE; + + // Write the DIB header + UINT nCount = sizeof(BITMAPINFO) + PaletteSize(); + dwBytesSaved += nCount; + file.Write(m_pBMI, nCount); + + // Write the DIB bits + DWORD dwBytes = m_pBMI->bmiHeader.biBitCount * Width(); + // Calculate the number of bytes per line + if (dwBytes%32 == 0) + dwBytes /= 8; + else + dwBytes = dwBytes/8 + (32-dwBytes%32)/8 + (((32-dwBytes%32)%8 > 0) ? 1 : 0); + nCount = dwBytes * Height(); + dwBytesSaved += nCount; + //file.WriteHuge(m_pBits, nCount); + file.Write(m_pBits, nCount); + + return dwBytesSaved; +} + +DWORD CDib::Read(CFile& file, BOOL bFromResource) +{ + DWORD dwReadBytes = 0; + DWORD dwLength = file.GetLength(); + + // Ensures no memory leaks will occur + Free(); + + BITMAPFILEHEADER bmfHeader; + BITMAPINFOHEADER bmiHeader; + + if( !bFromResource ) + { + // Go read the DIB file header and check if it's valid. + if( (dwReadBytes = file.Read((LPSTR)&bmfHeader, BMIF_SIZE)) != BMIF_SIZE) + return 0; + if(bmfHeader.bfType != DIB_HEADER_MARKER) + return 0; + } + + // Read DIB header. + if( file.Read( &bmiHeader, BMIH_SIZE ) != BMIH_SIZE ) + return 0; + dwReadBytes += BMIH_SIZE; + + DWORD dwPalSize = NumColors( bmiHeader ) * sizeof RGBQUAD; + m_pBMI = (LPBITMAPINFO) new BYTE[BMIH_SIZE + dwPalSize]; + memcpy( m_pBMI, &bmiHeader, BMIH_SIZE ); + // read palette data + if( file.Read( m_pBMI->bmiColors, dwPalSize ) != dwPalSize ) + return 0; + dwReadBytes += dwPalSize; + CreatePalette(); + + // Go read the bits. + m_pBits = new BYTE[ dwLength - dwReadBytes + 0x200]; // GHO fix: you need some more space who knows why...? + if (m_pBits == 0) + return 0; + + if (file.Read( m_pBits, dwLength - dwReadBytes ) != (dwLength - dwReadBytes)) + { + delete m_pBMI; + m_pBMI = NULL; + + delete m_pBits; + m_pBits = NULL; + + return 0; + } + dwReadBytes = dwLength; + + return dwReadBytes; +} + +DWORD CDib::ReadFromResource(UINT nResID) +{ + DWORD dwResult = 0; + // Load from resource + HRSRC hbmres = FindResource( NULL, MAKEINTRESOURCE(nResID), RT_BITMAP ); + CMemFile file; + HGLOBAL hGlob; + + if (hbmres) + { + DWORD dwResSize = SizeofResource( NULL, hbmres ); + file.Attach( (LPBYTE)LockResource( hGlob = LoadResource(NULL, hbmres) ), dwResSize ); + dwResult = Read(file, TRUE); + file.Detach(); + DeleteObject( hGlob ); + } + + return dwResult; +} + +void CDib::Invalidate() +{ + Free(); +} + +BOOL CDib::CreatePalette() +{ + if ( !IsValid() ) + return FALSE; + + //get the number of colors in the DIB + WORD wNumColors = NumColors( m_pBMI->bmiHeader ); + BOOL bResult = TRUE; + + if (wNumColors != 0) + { + // allocate memory block for logical palette + LPLOGPALETTE pLogPal = (LPLOGPALETTE) new BYTE[ sizeof(LOGPALETTE) + + sizeof(PALETTEENTRY)*wNumColors ]; + + // if not enough memory, clean up and return NULL + if( pLogPal == 0 ) + return FALSE; + + // set version and number of palette entries + pLogPal->palVersion = PALVERSION; + pLogPal->palNumEntries = wNumColors; + + for (WORD i = 0; i < wNumColors; i++) + { + pLogPal->palPalEntry[i].peRed = m_pBMI->bmiColors[i].rgbRed; + pLogPal->palPalEntry[i].peGreen = m_pBMI->bmiColors[i].rgbGreen; + pLogPal->palPalEntry[i].peBlue = m_pBMI->bmiColors[i].rgbBlue; + pLogPal->palPalEntry[i].peFlags = 0; + } + + // create the palette and get handle to it + if (m_pPalette) + { + m_pPalette->DeleteObject(); + delete m_pPalette; + } + + m_pPalette = new CPalette; + bResult = m_pPalette->CreatePalette( pLogPal ); + delete pLogPal; + } + + return bResult; +} + +void CDib::Free() +{ + // Make sure all member data that might have been allocated is freed. + if(m_pBMI) + { + delete m_pBMI; + m_pBMI = NULL; + } + + if(m_pBits) + { + delete m_pBits; + m_pBits = NULL; + } + + if(m_pPalette) + { + m_pPalette->DeleteObject(); + delete m_pPalette; + m_pPalette = NULL; + } +} + +HBITMAP CDib::CreateDDBitmap( HDC hDC ) +{ + HBITMAP hBitmap = ::CreateDIBitmap( hDC, &m_pBMI->bmiHeader, + CBM_INIT, m_pBits, (LPBITMAPINFO)m_pBMI, DIB_RGB_COLORS); + ASSERT(hBitmap); + return hBitmap; +} + +HBITMAP CDib::CreateDDBitmap(CDC* pDC) +{ + return CreateDDBitmap( pDC->GetSafeHdc() ); +} + +BOOL CDib::Compress(CDC* pDC, BOOL bCompress ) +{ + // 1. makes GDI bitmap from existing DIB + // 2. makes a new DIB from GDI bitmap with compression + // 3. cleans up the original DIB + // 4. puts the new DIB in the object + if((m_pBMI->bmiHeader.biBitCount != 4) && (m_pBMI->bmiHeader.biBitCount != 8)) return FALSE; + // compression supported only for 4 bpp and 8 bpp DIBs + TRACE(_T("Compress: original palette size = %d\n"), NumColors(m_pBMI->bmiHeader) ); + HDC hdc = pDC->GetSafeHdc(); + CPalette* pOldPalette = pDC->SelectPalette( m_pPalette, TRUE); + HBITMAP hBitmap; // temporary + if((hBitmap = CreateDDBitmap(pDC)) == NULL) return FALSE; + int nSize = BMIF_SIZE + PaletteSize(); + LPBITMAPINFO pBMI = (LPBITMAPINFO) new char[nSize]; + memcpy(pBMI, &m_pBMI->bmiHeader, nSize); // new header + if(bCompress) { + switch (pBMI->bmiHeader.biBitCount) { + case 4: + pBMI->bmiHeader.biCompression = BI_RLE4; + break; + case 8: + pBMI->bmiHeader.biCompression = BI_RLE8; + break; + default: + ASSERT(FALSE); + } + // calls GetDIBits with null data pointer to get size of compressed DIB + if(!::GetDIBits(pDC->m_hDC, hBitmap, 0, (UINT) pBMI->bmiHeader.biHeight, + NULL, pBMI, DIB_RGB_COLORS)) { + AfxMessageBox(_T("Unable to compress this DIB")); + // probably a problem with the color table + ::DeleteObject(hBitmap); + delete[] pBMI; + pDC->SelectPalette( pOldPalette, TRUE); + return FALSE; + } + if (pBMI->bmiHeader.biSizeImage == 0) { + AfxMessageBox(_T("Driver can't do compression")); + ::DeleteObject(hBitmap); + delete[] pBMI; + pDC->SelectPalette( pOldPalette, TRUE); + return FALSE; + } + else { + m_pBMI->bmiHeader.biSizeImage = pBMI->bmiHeader.biSizeImage; + } + } + else { + pBMI->bmiHeader.biCompression = BI_RGB; // decompress + // figure the image size from the bitmap width and height + DWORD dwBytes = ((DWORD) pBMI->bmiHeader.biWidth * pBMI->bmiHeader.biBitCount) / 32; + if(((DWORD) pBMI->bmiHeader.biWidth * pBMI->bmiHeader.biBitCount) % 32) { + dwBytes++; + } + dwBytes *= 4; + m_pBMI->bmiHeader.biSizeImage = dwBytes * pBMI->bmiHeader.biHeight; // no compression + pBMI->bmiHeader.biSizeImage = m_pBMI->bmiHeader.biSizeImage; + } + // second GetDIBits call to make DIB + LPBYTE lpImage = (LPBYTE) new char[m_pBMI->bmiHeader.biSizeImage]; + VERIFY(::GetDIBits(pDC->m_hDC, hBitmap, 0, (UINT) pBMI->bmiHeader.biHeight, + lpImage, pBMI, DIB_RGB_COLORS)); + TRACE(_T("dib successfully created - height = %d\n"), pBMI->bmiHeader.biHeight); + ::DeleteObject(hBitmap); + Free(); + m_pBMI = pBMI; + m_pBits = lpImage; + CreatePalette(); + pDC->SelectPalette( pOldPalette, TRUE ); + TRACE(_T("Compress: new palette size = %d\n"), NumColors(m_pBMI->bmiHeader) ); + return TRUE; + } diff --git a/exports/Last Bronx.dxw b/host/dxwnd.ini similarity index 67% rename from exports/Last Bronx.dxw rename to host/dxwnd.ini index 3415a45..7c397d1 100644 --- a/exports/Last Bronx.dxw +++ b/host/dxwnd.ini @@ -1,6 +1,11 @@ +[window] +posx=1283 +posy=380 +sizx=320 +sizy=200 [target] -title0=Last Bronx -path0=D:\Games\Last_Bronx\LB.EXE +title0=a10 +path0=D:\Games\A10\A10Cuba.exe module0= opengllib0= ver0=0 @@ -9,7 +14,7 @@ flag0=134217762 flagg0=1207959552 flagh0=20 flagi0=0 -tflag0=0 +tflag0=64 initx0=0 inity0=0 minx0=0 diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index cda103230e6411c29de9af20fb696b2ec24e9794..bcc0bf838e09495d35f217b93f2cde499d276eab 100644 GIT binary patch delta 8372 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 ZJQt!|X&wD{gucE^`hA|mXK?xw{3l6i97g~E delta 5686 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 DLAv6g diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index e4f95b5..6766334 100644 --- a/host/dxwndhost.rc +++ b/host/dxwndhost.rc @@ -119,6 +119,7 @@ BEGIN BEGIN MENUITEM "Status", ID_VIEW_STATUS MENUITEM "Time Slider", ID_VIEW_TIMESLIDER + MENUITEM "Palette", ID_VIEW_PALETTE END END @@ -316,7 +317,7 @@ BEGIN GROUPBOX "Emulation",IDC_STATIC,7,109,98,61,WS_GROUP CONTROL "Auto Primary Surface Refresh",IDC_AUTOREFRESH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,16,126,9 GROUPBOX "DirectDraw Surface handling",IDC_STATIC,112,3,181,167 - CONTROL "VIDEO->SYSTEM surf. on fail",IDC_VIDEOTOSYSTEMMEM, + CONTROL "switch VIDEO to SYSTEM on fail",IDC_VIDEOTOSYSTEMMEM, "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,118,28,126,9 CONTROL "Suppress DX common errors",IDC_SUPPRESSDXERRORS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,40,127,10 CONTROL "Make Backbuf attachable",IDC_BACKBUFATTACH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,52,119,10 @@ -341,6 +342,8 @@ BEGIN GROUPBOX "DirectInput",IDC_STATIC,7,172,286,61 CONTROL "Set AERO compatible mode",IDC_SETCOMPATIBILITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,100,109,12 CONTROL "Disable HAL support",IDC_DISABLEHAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,112,109,12 + CONTROL "Forces HEL ",IDC_FORCESHEL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,124,109,12 + CONTROL "Win7 color fix",IDC_COLORFIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,136,109,12 END IDD_TAB_MOUSE DIALOGEX 0, 0, 300, 240 @@ -465,17 +468,30 @@ IDD_TAB_DEBUG DIALOGEX 0, 0, 300, 240 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - GROUPBOX "Debug flags",IDC_STATIC,7,3,140,144 - CONTROL "Simulate YUV to RGB color conv.",IDC_YUV2RGB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,36,119,9 - CONTROL "Simulate RGB to YUV color conv.",IDC_RGB2YUV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,48,119,9 - CONTROL "Highlight blit to primary",IDC_MARKBLIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,24,99,10 - CONTROL "Full RECT Blit",IDC_FULLRECTBLT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,60,119,10 + GROUPBOX "Debug flags",IDC_STATIC,7,7,140,140 + CONTROL "Simulate YUV to RGB color conv.",IDC_YUV2RGB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,24,119,9 + CONTROL "Simulate RGB to YUV color conv.",IDC_RGB2YUV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,36,119,9 + CONTROL "Highlight blit to primary",IDC_MARKBLIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,126,99,10 + CONTROL "Full RECT Blit",IDC_FULLRECTBLT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,114,119,10 GROUPBOX "debug mode logs",IDC_STATIC,7,154,139,79 CONTROL "Assert Dialog",IDC_ASSERT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,166,73,11 CONTROL "ddraw Proxy",IDC_DXPROXED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,178,73,9 CONTROL "Warning for analytic surface mode",IDC_SURFACEWARN, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,84,127,10 - CONTROL "Analytic surface mode",IDC_ANALYTICMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,72,127,10 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,60,127,10 + CONTROL "Analytic surface mode",IDC_ANALYTICMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,48,127,10 + CONTROL "Enable capability mask",IDC_CAPMASK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,72,127,10 + CONTROL "Suppress ddraw Blt to primary",IDC_NODDRAWBLT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,24,127,10 + CONTROL "Suppress ddraw Flip",IDC_NODDRAWFLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,36,127,10 + CONTROL "Suppress GDI Blt",IDC_NOGDIBLT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,48,127,10 + GROUPBOX "Visual flags",IDC_STATIC,153,7,140,139 +END + +IDD_PALETTE DIALOGEX 0, 0, 169, 167 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "DxWnd Palette" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_PALETTECOLORS,"Static",SS_WHITEFRAME | SS_CENTERIMAGE,2,2,163,163 END @@ -653,6 +669,14 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 233 END + + IDD_PALETTE, DIALOG + BEGIN + LEFTMARGIN, 2 + RIGHTMARGIN, 167 + TOPMARGIN, 2 + BOTTOMMARGIN, 165 + END END #endif // APSTUDIO_INVOKED @@ -779,6 +803,25 @@ END ///////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////// +// Italian (Italy) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ITA) +#ifdef _WIN32 +LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_PALETTE BITMAP "res\\palette24.bmp" +#endif // Italian (Italy) resources +///////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////////////////////////////////// // English (U.K.) resources diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index 52d091c6073d01a3137caa013c44082d79b1324f..f50378bf3ad19ac6768e2efe02549f3e18137afb 100644 GIT binary patch delta 30087 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 PaJtv@CiZ + + @@ -335,6 +339,14 @@ /> + + + + @@ -438,6 +450,10 @@ Name="Header Files" Filter="h;hpp;hxx;hm;inl" > + + @@ -563,6 +579,10 @@ RelativePath=".\res\idr_main.ico" > + + diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index 9f010c1..6843829 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -12,6 +12,7 @@ #include "TargetDlg.h" #include "SystemTray.h" #include "StatusDialog.h" +#include "PaletteDialog.h" #include "TimeSliderDialog.h" #ifdef _DEBUG @@ -62,6 +63,7 @@ BEGIN_MESSAGE_MAP(CDxwndhostView, CListView) ON_COMMAND(ID_RUN, OnRun) ON_COMMAND(ID_TRAY_RESTORE, OnTrayRestore) ON_COMMAND(ID_VIEW_STATUS, OnViewStatus) + ON_COMMAND(ID_VIEW_PALETTE, OnViewPalette) ON_COMMAND(ID_VIEW_TIMESLIDER, OnViewTimeSlider) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -156,6 +158,8 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_SuppressD3DExt) t->flags3 |= SUPPRESSD3DEXT; if(dlg->m_SetCompatibility) t->flags2 |= SETCOMPATIBILITY; if(dlg->m_DisableHAL) t->flags3 |= DISABLEHAL; + if(dlg->m_ForcesHEL) t->flags3 |= FORCESHEL; + if(dlg->m_ColorFix) t->flags3 |= COLORFIX; if(dlg->m_LockSysColors) t->flags3 |= LOCKSYSCOLORS; if(dlg->m_ForceYUVtoRGB) t->flags3 |= YUV2RGB; if(dlg->m_ForceRGBtoYUV) t->flags3 |= RGB2YUV; @@ -214,6 +218,10 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_FullRectBlt) t->flags2 |= FULLRECTBLT; if(dlg->m_NoPaletteUpdate) t->flags2 |= NOPALETTEUPDATE; if(dlg->m_SurfaceWarn) t->flags3 |= SURFACEWARN; + if(dlg->m_CapMask) t->flags3 |= CAPMASK; + if(dlg->m_NoDDRAWBlt) t->flags3 |= NODDRAWBLT; + if(dlg->m_NoDDRAWFlip) t->flags3 |= NODDRAWFLIP; + if(dlg->m_NoGDIBlt) t->flags3 |= NOGDIBLT; if(dlg->m_AnalyticMode) t->flags3 |= ANALYTICMODE; t->initx = dlg->m_InitX; t->inity = dlg->m_InitY; @@ -280,6 +288,8 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_SuppressD3DExt = t->flags3 & SUPPRESSD3DEXT ? 1 : 0; dlg->m_SetCompatibility = t->flags2 & SETCOMPATIBILITY ? 1 : 0; dlg->m_DisableHAL = t->flags3 & DISABLEHAL ? 1 : 0; + dlg->m_ForcesHEL = t->flags3 & FORCESHEL ? 1 : 0; + dlg->m_ColorFix = t->flags3 & COLORFIX ? 1 : 0; dlg->m_LockSysColors = t->flags3 & LOCKSYSCOLORS ? 1 : 0; dlg->m_ForceRGBtoYUV = t->flags3 & RGB2YUV ? 1 : 0; dlg->m_ForceYUVtoRGB = t->flags3 & YUV2RGB ? 1 : 0; @@ -342,6 +352,10 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_FullRectBlt = t->flags2 & FULLRECTBLT ? 1 : 0; dlg->m_NoPaletteUpdate = t->flags2 & NOPALETTEUPDATE ? 1 : 0; dlg->m_SurfaceWarn = t->flags3 & SURFACEWARN ? 1 : 0; + dlg->m_CapMask = t->flags3 & CAPMASK ? 1 : 0; + dlg->m_NoDDRAWBlt = t->flags3 & NODDRAWBLT ? 1 : 0; + dlg->m_NoDDRAWFlip = t->flags3 & NODDRAWFLIP ? 1 : 0; + dlg->m_NoGDIBlt = t->flags3 & NOGDIBLT ? 1 : 0; dlg->m_AnalyticMode = t->flags3 & ANALYTICMODE ? 1 : 0; dlg->m_InitX = t->initx; dlg->m_InitY = t->inity; @@ -1302,6 +1316,13 @@ void CDxwndhostView::OnViewStatus() pDlg->ShowWindow(SW_SHOW); } +void CDxwndhostView::OnViewPalette() +{ + CPaletteDialog *pDlg = new CPaletteDialog(); + BOOL ret = pDlg->Create(CPaletteDialog::IDD, this); + pDlg->ShowWindow(SW_SHOW); +} + void CDxwndhostView::OnViewTimeSlider() { CTimeSliderDialog *pDlg = new CTimeSliderDialog(); diff --git a/host/dxwndhostView.h b/host/dxwndhostView.h index c689f3d..d3597de 100644 --- a/host/dxwndhostView.h +++ b/host/dxwndhostView.h @@ -83,6 +83,7 @@ protected: afx_msg void OnHookStop(); afx_msg void OnTrayRestore(); afx_msg void OnViewStatus(); + afx_msg void OnViewPalette(); afx_msg void OnViewTimeSlider(); afx_msg void OnExit(); //}}AFX_MSG diff --git a/host/palette.bmp b/host/palette.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d62c0c135ba6b2ef86beced11ddc79c64f7908b6 GIT binary patch literal 246 zcmZ?r{l)+RWk5;;hy|dSk%0v)(EuhP1WXRX1IhpqLqh|E0+K)`!+`?_fHX+rKNvCm W{|{mTF%W`;fJ8Z+!FMRAhXMfGmR8*W literal 0 HcmV?d00001 diff --git a/host/res/bitmap2.bmp b/host/res/bitmap2.bmp deleted file mode 100644 index 6e8e840620a27fb2fa28f68c860a5eaa5714167a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1270 zcmZ?r{l>xo24z4}1BeZvn2`Y@(EybPD?%X}7#M(vp`ign0ZAZ};lP0dKpG_RAB-6O a{|B*v7zjZ^ApR&A4S~@R7!82|3IPD0SCat% diff --git a/host/res/palette24.bmp b/host/res/palette24.bmp new file mode 100644 index 0000000000000000000000000000000000000000..28d7e7608de40635ba79b8b5c3c69ed10e5a7257 GIT binary patch literal 822 zcmZ?rHDhJ~12Z700mK4O%*Y@C7H5FULpTuf|NsAM)~q3(BuO#QSmI5Fs2nvPe~68S I4|T%_0HO