📄 vbe.h
字号:
#include<dos.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#ifndef _VBE_H_INCLUDED
#define _VBE_H_INCLUDED
#if !defined(_ENABLE_AUTODEPEND)
#pragma read_only_file;
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define PALETTE_REGISTER_RD 0x3c7
#define PALETTE_MASK 0x3c6
#define PALETTE_DATA 0x3c9
#ifndef MIN
#define MIN(x,y) (((x) < (y)) ? (x) : (y))
#define MAX(x,y) (((x) > (y)) ? (x) : (y))
#define MID(x,y,z) MAX((x), MIN((y), (z)))
#endif
#ifndef ABS
#define ABS(x) (((x) >= 0) ? (x) : (-(x)))
#endif
#ifndef SGN
#define SGN(x) (((x) >= 0) ? 1 : -1)
#endif
#define v320x200x256 0x13
#define v640x480x256 0x101
#define v800x600x256 0x103
#define v1024x768x256 0x105
#define VESA_FUNC 0x4f00
#define VESA_SUCCESS 0x004f
#define VESA_VERSION(major, minor) ((((major)&0xff)<<8) | ((minor)&0xff))
#define VESA_VERSION_MAJOR(vers) (((vers)>>8) & 0xff)
#define VESA_VERSION_MINOR(vers) ((vers) & 0xff)
#define VESA_VGA_INFO 0 // 取 显示卡信息
#define VESA_MODE_INFO 1 // 取 SVGA模式信息
#define VESA_SET_MODE 2 // 置 显示模式
#define VESA_GET_MODE 3 // 取 当前显示模式
#define MODE_SUPPORTED 1 // 硬件支持该模式
//定义显示模式 640x400x256
#define waitVR() while(!(inp(0x3da)&0x08))
typedef struct // VESA兼容卡硬件信息结构
{
unsigned char VESASignature[4]; // = "VESA"
unsigned short VESAVersion; // VESA 版本号
unsigned short OEMStringOff; // 指向OEM串的实模式地址(偏移量)
unsigned short OEMStringSeg; // 指向OEM串的实模式地址(段)
unsigned char Capabilities[4]; // 显示卡特性
unsigned short VideoModePtrOff; // 指向支持SVGA模式的实模式地址
unsigned short VideoModePtrSeg; // 指向支持SVGA模式的实模式地址
unsigned short VRAMSize; // 视频内存大小 (单位: 64K)
unsigned char VesaResever[236]; // 保留
} VBEHardWare;
typedef struct // VESA兼容卡模式信息结构
{
unsigned short ModeAttributes; // 模式属性
unsigned char WinAAttributes; // 存储窗 A 属性
unsigned char WinBAttributes; // 存储窗 B 属性
unsigned short WinGranularity; // 窗口移动最小单位 (单位: KB)
unsigned short WinSize; // 存储窗大小 (单位: KB)
unsigned short WinASegment; // 存储窗 A 起始段地址
unsigned short WinBSegment; // 存储窗 B 起始段地址
void (*WinFuncPtr)(); // 指向存储窗控制函数
unsigned short bytesPerScanLine; // 逻辑扫描线宽度 (单位: unsigned char)
unsigned short XResolution; // 水平点分辨率(图形:点, 文字:字符)
unsigned short YResolution; // 垂直点分辨率
unsigned char XCharSize; // 字符宽度
unsigned char YCharSize; // 字符高度
unsigned char NumberOfPlanes; // 显示内存的颜色平面数
unsigned char BitsPerPixel; // 每一像素占多少位
unsigned char NumberOfBanks; // 交错对应模式下, 扫描线的分组数
unsigned char MemoryModel; // 视频存取模式
unsigned char BankSize; // 扫描线分组大小
unsigned char NumImagePages; // 该模式提供多少显示页
unsigned char Reserved[1]; // 保留
unsigned char RedMaskSize; // 红色所占位数
unsigned char RedMaskPos; // 红色由第几位开始
unsigned char GreenMaskSize; // 绿色所占位数
unsigned char GreenMaskPos; // 绿色由第几位开始
unsigned char BlueMaskSize; // 兰色所占位数
unsigned char BlueMaskPos; // 兰色由第几位开始
unsigned char ReservedMaskSize; // 未用部分所占位数
unsigned char ReservedMaskPos;
unsigned char DirectScreenMode; // Hi/True Color 模式的特性
unsigned long PhysBasePtr; // 32位线形缓存的物理地址
unsigned long OffScreenMemOffset; // 指向屏幕显示部分在缓存中的偏移量
unsigned short OffScreenMemSize; // 以1K为单位的屏幕显示部分的缓存大小
unsigned char ModeResever[206]; // 保留
} VBEModeInfo;
typedef struct{
unsigned char manufacturer;
unsigned char verison;
unsigned char encoding;
unsigned char bitsperpixel;
short xmin,ymin;
short xmax,ymax;
short hers,vers;
unsigned char palette[48];
unsigned char reserved;
unsigned char colorplane;
short width;
short palettetype;
unsigned char filer[58];
}PCXHEAD;
typedef struct bmphead
{
unsigned short signal; //标志位为BM, 即0x4d42
unsigned short bfsize; //文件长度
unsigned short bfresevered1; //保留
unsigned short bfresevered2; //保留
unsigned short cc; //保留
unsigned short bfoff; //
unsigned long aa; //保留
unsigned short dd; //保留
unsigned short biwidth; //图像宽度
unsigned short bb; //保留
unsigned short biheight; //图像高度
unsigned short planes; //颜色平面数
unsigned short bitcount; //颜色位数
unsigned int compression; //压缩方式 0-不压缩
unsigned int sizeimage;
int xpels;
int ypels;
unsigned int clrused;
unsigned int clrimport;
}BMPHEAD;
typedef struct
{unsigned char r;
unsigned char g;
unsigned char b;
}PALETTE[256],RGB,PALLETE[256];
//SVGA信息和变量
struct DIRECTX
{
short x,y;
short cr,cb;
short ct,cl;
short w,h;
unsigned char clip;
unsigned char MskCol;
unsigned char Alph;
unsigned char *dat;
float bitx,bity;
unsigned char *line[];
};
#define BITMAP DIRECTX
typedef struct Mouse
{int x,y;
int oldx,oldy;
int msg;
char event,click_left,
click_right;
unsigned char mouse_shap[16][16];
}Mouse;
typedef struct {
unsigned long EDI;
unsigned long ESI;
unsigned long EBP;
unsigned long Reserved;
unsigned long EBX;
unsigned long EDX;
unsigned long ECX;
unsigned long EAX;
unsigned short flags,ES,DS,FS,GS,IP,CS,SP,SS;
}RMInfo;
//256色基色
int BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,YELLOW;
struct Color_MAP
{unsigned char data[256][256];
}Color_MAP;
typedef struct Voc
{int size;
int same;
char *dat;
}Voc;
#define MIDI_LAYERS 4
#define MIDI_TRACKS 32
#define MIDI_VOICES 32 /* actual drivers may not be */
#define MIDI_AUTO 0
#define MIDI_ADLIB 1
#define MIDI_DIGI 2
#define MIDI_MPU401 3
typedef struct MIDI /* a midi file */
{
int divisions; /* number of ticks per quarter note */
struct {
unsigned char *data; /* MIDI message stream */
int len; /* length of the track data */
} track[MIDI_TRACKS];
} MIDI;
////////////////////////////////////////////////////////////////////////////
char *MidiMapFile[2]={ "","" };
typedef struct MIDI_DRIVER /* driver for playing midi music */
{
char *name; /* driver name */
char *desc; /* description string */
int voices; /* available voices */
int basevoice; /* voice number offset */
int max_voices; /* maximum voices we can support */
int def_voices; /* default number of voices to use */
int xmin, xmax; /* reserved voice range */
int (*detect)(); /* setup routines */
int (*init)(int voices);
void (*exit)();
int (*mixer_volume)(int volume);
void (*raw_midi)(unsigned char data); /* raw MIDI output to MPU-401, etc. */
int (*load_patches)(char *patches, char *drums); /* dynamic patch loading routines */
void (*adjust_patches)(char *patches, char *drums);
void (*key_on)(int inst, int note, int bend, int vol, int pan); /* note control functions */
void (*key_off)(int voice);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -