struct mmGraphicsConfig { unsigned int Signature; // == '5XFG'; // GFX5 unsigned int InterfaceChoice; unsigned int InterfaceCount; // Max of 8 mmGraphicsInterfaces // 0x683130 = mmGraphicsInterface gfxInterfaces [8] // gfxconf.dat = mmGraphicsInterface gfxInterfaces [InterfaceCount] struct mmGraphicsInterface { GUID GUID; char Name[64]; unsigned int DeviceCaps; enum mmRenderer : unsigned int { Software = 0, // Software (No 3D Video Card) Hardware = 1, // Hardware (3D Video Card) HardwareWithTnL = 2 // Hardware (3D Video Card With T&L) }; mmRenderer Renderer; unsigned int ResolutionCount; // Max of 64 mmResolutions unsigned int ResolutionChoice; enum mmColorDepthFlag: unsigned int { Depth16 = 0x400, Depth24 = 0x200, Depth32 = 0x100 }; mmColorDepthFlag AcceptableDepths; // Used to check if mmResolution::Depth is allowed unsigned int AvailableMemory; unsigned int VendorID; unsigned int DeviceID; struct mmResolution { unsigned short ScreenWidth; unsigned short ScreenHeight; unsigned short ColorDepth; // Always 16 unsigned short Is16BitColor; // = (ColorDepth == 16) + 6 // Always 7 }; mmResolution Resolutions[64]; }; };