some of Ray Chason's MSDOS and other fixes

This commit is contained in:
nhmall
2016-03-05 14:44:50 -05:00
parent ef9cd17942
commit 78857961d2
22 changed files with 1484 additions and 201 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 video.c $NHDT-Date: 1432512791 2015/05/25 00:13:11 $ $NHDT-Branch: master $:$NHDT-Revision: 1.10 $ */
/* NetHack 3.6 video.c $NHDT-Date: 1457207042 2016/03/05 19:44:02 $ $NHDT-Branch: chasonr $:$NHDT-Revision: 1.11 $ */
/* Copyright (c) NetHack PC Development Team 1993, 1994, 2001 */
/* NetHack may be freely redistributed. See license for details. */
/* */
@@ -79,6 +79,11 @@ get_scr_size()
if (iflags.usevga) {
vga_get_scr_size();
} else
#endif
#ifdef SCREEN_VESA
if (iflags.usevesa) {
vesa_get_scr_size();
} else
#endif
txt_get_scr_size();
}
@@ -141,6 +146,10 @@ backsp()
#ifdef SCREEN_VGA
} else if (iflags.usevga) {
vga_backsp();
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
vesa_backsp();
#endif
}
}
@@ -153,6 +162,10 @@ clear_screen()
#ifdef SCREEN_VGA
} else if (iflags.usevga) {
vga_clear_screen(BACKGROUND_VGA_COLOR);
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
vesa_clear_screen(BACKGROUND_VGA_COLOR);
#endif
}
}
@@ -168,6 +181,10 @@ void cl_end() /* clear to end of line */
#ifdef SCREEN_VGA
} else if (iflags.usevga) {
vga_cl_end(col, row);
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
vesa_cl_end(col, row);
#endif
}
tty_curs(BASE_WINDOW, (int) ttyDisplay->curx + 1, (int) ttyDisplay->cury);
@@ -182,6 +199,10 @@ void cl_eos() /* clear to end of screen */
#ifdef SCREEN_VGA
} else if (iflags.usevga) {
vga_cl_eos(cy);
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
vesa_cl_eos(cy);
#endif
}
tty_curs(BASE_WINDOW, (int) ttyDisplay->curx + 1, (int) ttyDisplay->cury);
@@ -198,6 +219,10 @@ register int col, row;
#ifdef SCREEN_VGA
} else if (iflags.usevga) {
vga_gotoloc(col, row);
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
vesa_gotoloc(col, row);
#endif
}
}
@@ -223,6 +248,10 @@ home()
#ifdef SCREEN_VGA
} else if (iflags.usevga) {
vga_gotoloc(0, 0);
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
vesa_gotoloc(0, 0);
#endif
}
}
@@ -236,6 +265,10 @@ int col, row;
#ifdef SCREEN_VGA
} else if (iflags.usevga) {
vga_gotoloc(col, row);
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
vesa_gotoloc(col, row);
#endif
}
}
@@ -360,6 +393,10 @@ tty_end_screen()
#ifdef SCREEN_VGA
} else if (iflags.usevga) {
vga_tty_end_screen();
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
vesa_tty_end_screen();
#endif
}
}
@@ -395,6 +432,11 @@ int *wid, *hgt;
if (iflags.usevga) {
vga_tty_startup(wid, hgt);
} else
#endif
#ifdef SCREEN_VESA
if (iflags.usevesa) {
vesa_tty_startup(wid, hgt);
} else
#endif
txt_startup(wid, hgt);
@@ -430,39 +472,44 @@ tty_start_screen()
void
gr_init()
{
if (iflags.usevga) {
#ifdef SCREEN_VGA
if (iflags.usevga) {
vga_Init();
} else
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
if (iflags.usevesa) {
vesa_Init();
} else
#endif
#ifdef SCREEN_8514
} else if (iflags.use8514) {
if (iflags.use8514) {
v8514_Init();
} else
#endif
}
{}
}
void
gr_finish()
{
if (iflags.grmode) {
if (iflags.usevga) {
#ifdef SCREEN_VGA
if (iflags.usevga) {
vga_Finish();
} else
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
if (iflags.usevesa) {
vesa_Finish();
} else
#endif
#ifdef SCREEN_8514
} else if (iflags.use8514) {
if (iflags.use8514) {
v8514_Finish();
} else
#endif
}
{}
}
}
@@ -510,6 +557,10 @@ const char *s;
#ifdef SCREEN_VGA
} else if (iflags.usevga) {
vga_xputs(s, col, row);
#endif
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
vesa_xputs(s, col, row);
#endif
}
}
@@ -529,6 +580,10 @@ char ch;
} else if (iflags.usevga) {
vga_xputc(ch, attribute);
#endif /*SCREEN_VGA*/
#ifdef SCREEN_VESA
} else if (iflags.usevesa) {
vesa_xputc(ch, attribute);
#endif /*SCREEN_VESA*/
}
}
@@ -541,8 +596,12 @@ unsigned special;
if (!iflags.grmode || !iflags.tile_view) {
xputc((char) ch);
#ifdef SCREEN_VGA
} else {
} else if (iflags.grmode && iflags.usevga) {
vga_xputg(glyphnum, ch, special);
#endif
#ifdef SCREEN_VESA
} else if (iflags.grmode && iflags.usevesa) {
vesa_xputg(glyphnum, ch, special);
#endif
}
}
@@ -555,9 +614,13 @@ char *posbar;
if (!iflags.grmode)
return;
#ifdef SCREEN_VGA
else
else if (iflags.usevga)
vga_update_positionbar(posbar);
#endif
#ifdef SCREEN_VESA
else if (iflags.usevesa)
vesa_update_positionbar(posbar);
#endif
}
#endif
@@ -593,7 +656,12 @@ void
DrawCursor()
{
#ifdef SCREEN_VGA
vga_DrawCursor();
if (iflags.usevga)
vga_DrawCursor();
#endif
#ifdef SCREEN_VESA
if (iflags.usevesa)
vesa_DrawCursor();
#endif
}
@@ -601,7 +669,12 @@ void
HideCursor()
{
#ifdef SCREEN_VGA
vga_HideCursor();
if (iflags.usevga)
vga_HideCursor();
#endif
#ifdef SCREEN_VESA
if (iflags.usevesa)
vesa_HideCursor();
#endif
}
@@ -854,7 +927,9 @@ char *sopt;
* getch();
*/
iflags.grmode = 0;
iflags.hasvesa = 0;
iflags.hasvga = 0;
iflags.usevesa = 0;
iflags.usevga = 0;
if (strncmpi(sopt, "def", 3) == 0) { /* default */
@@ -892,9 +967,10 @@ char *sopt;
#endif
/*
* Auto-detect Priorities (arbitrary for now):
* VGA
* VESA, VGA
*/
if (iflags.hasvga) {
if (iflags.hasvesa) iflags.usevesa = 1;
else if (iflags.hasvga) {
iflags.usevga = 1;
/* VGA depends on BIOS to enable function keys*/
iflags.BIOS = 1;
@@ -911,9 +987,13 @@ tileview(enable)
boolean enable;
{
#ifdef SCREEN_VGA
if (iflags.grmode)
if (iflags.grmode && iflags.usevga)
vga_traditional(enable ? FALSE : TRUE);
#endif
#ifdef SCREEN_VESA
if (iflags.grmode && iflags.usevesa)
vesa_traditional(enable ? FALSE : TRUE);
#endif
}
#endif /* NO_TERMS */