X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fdos%2Fvbe.h;h=73df02fcef6d516700ebb37eff1fb1910e8fa4ad;hb=2c4602e53eaab44272ea5cd62667c939e6d2f61b;hp=17b24391337600b8333a4b22c26a32f9b25b4763;hpb=8a64d603ee67cd98070360b40938e123ea845154;p=dosdemo diff --git a/src/dos/vbe.h b/src/dos/vbe.h index 17b2439..73df02f 100644 --- a/src/dos/vbe.h +++ b/src/dos/vbe.h @@ -2,69 +2,37 @@ #define VBE_H_ #include "inttypes.h" +#include "util.h" -#define VBE_ATTR_LFB (1 << 7) -#define VBE_MODE_LFB (1 << 14) - -#pragma pack (push, 0) +#pragma pack (push, 1) struct vbe_info { - uint8_t sig[4]; - uint16_t version; - uint32_t oem_str_ptr; - uint8_t caps[4]; /* capabilities */ - uint32_t vid_mode_ptr; /* vbefarptr to video mode list */ - uint16_t total_mem; /* num of 64k mem blocks */ - uint16_t oem_sw_rev; /* VBE implementation software revision */ - uint32_t oem_vendor_name_ptr; - uint32_t oem_product_name_ptr; - uint32_t oem_product_rev_ptr; - uint8_t reserved[222]; - uint8_t oem_data[256]; -}; - -struct vbe_mode_info { - uint16_t mode_attr; - uint8_t wina_attr, winb_attr; - uint16_t win_gran, win_size; - uint16_t wina_seg, winb_seg; - uint32_t win_func; - uint16_t scanline_bytes; - - /* VBE 1.2 and above */ - uint16_t xres, yres; - uint8_t xcharsz, ycharsz; - uint8_t num_planes; - uint8_t bpp; - uint8_t num_banks; - uint8_t mem_model; - uint8_t bank_size; /* bank size in KB */ - uint8_t num_img_pages; - uint8_t reserved1; - - /* direct color fields */ - uint8_t rmask_size, rpos; - uint8_t gmask_size, gpos; - uint8_t bmask_size, bpos; - uint8_t xmask_size, xpos; - uint8_t cmode_info; /* direct color mode attributes */ - - /* VBE 2.0 and above */ - uint32_t fb_addr; /* physical address of the linear framebuffer */ - uint32_t reserved2; - uint16_t reserved3; - - uint8_t reserved4[206]; -}; + char sig[4]; + uint16_t ver; + char *oem_name; + uint32_t caps; + uint16_t *modes; + uint16_t oem_ver; + char *vendor; + char *product; + char *revstr; + uint16_t accel_ver; + uint16_t accel_modes; +} PACKED; #pragma pack (pop) -struct vbe_info *vbe_get_info(void); -struct vbe_mode_info *vbe_get_mode_info(int mode); - -int vbe_set_mode(int mode); - -int vbe_set_palette_bits(int bits); -void vbe_set_palette(int idx, int *col, int count, int bits); +enum { + VBE_8BIT_DAC = 0x01, + VBE_NON_VGA = 0x02, + VBE_DAC_BLANK = 0x04, + VBE_STEREO = 0x08, /* ? */ + VBE_ACCEL = 0x08, + VBE_STEREO_VESA = 0x10, /* ? */ + VBE_MUSTLOCK = 0x10, + VBE_HWCURSOR = 0x20, + VBE_HWCLIP = 0x40, + VBE_TRANSP_BLT = 0x80 +}; -void print_mode_info(FILE *fp, struct vbe_mode_info *modei); +int vbe_getinfo(struct vbe_info *info); #endif /* VBE_H_ */