mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-18 02:21:47 +00:00
109 lines
3.2 KiB
C++
109 lines
3.2 KiB
C++
// Emacs style mode select -*- C++ -*-
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// Copyright (C) 1998-2000 by DooM Legacy Team.
|
|
//
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License
|
|
// as published by the Free Software Foundation; either version 2
|
|
// of the License, or (at your option) any later version.
|
|
//
|
|
// This program 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 General Public License for more details.
|
|
//-----------------------------------------------------------------------------
|
|
/// \file
|
|
/// \brief VESA extra modes.
|
|
|
|
#include "../doomdef.h"
|
|
#include "../screen.h"
|
|
|
|
|
|
|
|
#define MODE_SUPPORTED_IN_HW 0x0001
|
|
#define COLOR_MODE 0x0008
|
|
#define GRAPHICS_MODE 0x0010
|
|
#define VGA_INCOMPATIBLE 0x0020
|
|
#define LINEAR_FRAME_BUFFER 0x0080
|
|
#define LINEAR_MODE 0x4000
|
|
|
|
#define MAX_VESA_MODES 30 // we'll just take the first 30 if there
|
|
|
|
|
|
// VESA information block structure
|
|
typedef struct vbeinfoblock_s
|
|
{
|
|
UINT8 VESASignature[4];
|
|
UINT16 VESAVersion;
|
|
unsigned long OemStringPtr;
|
|
UINT8 Capabilities[4];
|
|
unsigned long VideoModePtr;
|
|
UINT16 TotalMemory;
|
|
UINT8 OemSoftwareRev[2];
|
|
UINT8 OemVendorNamePtr[4];
|
|
UINT8 OemProductNamePtr[4];
|
|
UINT8 OemProductRevPtr[4];
|
|
UINT8 Reserved[222];
|
|
UINT8 OemData[256];
|
|
} ATTRPACK vbeinfoblock_t;
|
|
|
|
|
|
// VESA information for a specific mode
|
|
typedef struct vesamodeinfo_s
|
|
{
|
|
UINT16 ModeAttributes;
|
|
UINT8 WinAAttributes;
|
|
UINT8 WinBAttributes;
|
|
UINT16 WinGranularity;
|
|
UINT16 WinSize;
|
|
UINT16 WinASegment;
|
|
UINT16 WinBSegment;
|
|
unsigned long WinFuncPtr;
|
|
UINT16 BytesPerScanLine;
|
|
UINT16 XResolution;
|
|
UINT16 YResolution;
|
|
UINT8 XCharSize;
|
|
UINT8 YCharSize;
|
|
UINT8 NumberOfPlanes;
|
|
UINT8 BitsPerPixel;
|
|
UINT8 NumberOfBanks;
|
|
UINT8 MemoryModel;
|
|
UINT8 BankSize;
|
|
UINT8 NumberOfImagePages;
|
|
UINT8 Reserved_page;
|
|
UINT8 RedMaskSize;
|
|
UINT8 RedMaskPos;
|
|
UINT8 GreenMaskSize;
|
|
UINT8 GreenMaskPos;
|
|
UINT8 BlueMaskSize;
|
|
UINT8 BlueMaskPos;
|
|
UINT8 ReservedMaskSize;
|
|
UINT8 ReservedMaskPos;
|
|
UINT8 DirectColorModeInfo;
|
|
|
|
/* VBE 2.0 extensions */
|
|
unsigned long PhysBasePtr;
|
|
unsigned long OffScreenMemOffset;
|
|
UINT16 OffScreenMemSize;
|
|
|
|
/* VBE 3.0 extensions */
|
|
UINT16 LinBytesPerScanLine;
|
|
UINT8 BnkNumberOfPages;
|
|
UINT8 LinNumberOfPages;
|
|
UINT8 LinRedMaskSize;
|
|
UINT8 LinRedFieldPos;
|
|
UINT8 LinGreenMaskSize;
|
|
UINT8 LinGreenFieldPos;
|
|
UINT8 LinBlueMaskSize;
|
|
UINT8 LinBlueFieldPos;
|
|
UINT8 LinRsvdMaskSize;
|
|
UINT8 LinRsvdFieldPos;
|
|
unsigned long MaxPixelClock;
|
|
|
|
UINT8 Reserved[190];
|
|
} ATTRPACK vesamodeinfo_t;
|
|
|
|
|
|
// setup standard VGA + VESA modes list, activate the default video mode.
|
|
void VID_Init (void);
|