【发布时间】:2021-12-02 15:28:15
【问题描述】:
我正在尝试为 DOSBox 制作自己的游戏,但无法写入 VGA 内存。我正在使用 Digital Mars Compiler,并且我正在使用编译标志 -mmd。
这是我的代码:
/*headers*/
#define VGA256 0x13
#define TEXT_MODE 0x03
#define SCREEN_RAM_START 0xA0000000L
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 200
#define SCREEN_SIZE 320 * 200
void set_mode(int mode)
{
asm mov AH, 0;
asm mov AL, mode;
asm int 10h;
}
void set_pixel(int x, int y, char pixel_color)
{
unsigned char *ptr = (unsigned char *)SCREEN_RAM_START;
ptr[(y * SCREEN_HEIGHT) + x] = pixel_color;
}
int main()
{
set_mode(VGA256);
set_pixel(100, 150, 1);
while (!kbhit()) {}
set_mode(TEXT_MODE);
}
【问题讨论】: