Lift restrictions on tilesets

Support full color tilesets with tiles of arbitrary size.
This commit is contained in:
Ray Chason
2020-01-27 09:54:58 +02:00
committed by Pasi Kallinen
parent 34da5ea372
commit 82a219c227
4 changed files with 779 additions and 360 deletions
+5
View File
@@ -64,6 +64,11 @@ tgetch()
{ {
char ch; char ch;
#ifdef SCREEN_VESA
if (iflags.usevesa) {
vesa_flush_text();
}
#endif /*SCREEN_VESA*/
/* BIOSgetch can use the numeric key pad on IBM compatibles. */ /* BIOSgetch can use the numeric key pad on IBM compatibles. */
#ifdef SIMULATE_CURSOR #ifdef SIMULATE_CURSOR
if (iflags.grmode && cursor_flag) if (iflags.grmode && cursor_flag)
+8 -2
View File
@@ -181,6 +181,10 @@ struct overview_planar_cell_struct {
#define ATTRIB_VGA_INTENSE 14 /* Intense White 94/06/07 palette chg*/ #define ATTRIB_VGA_INTENSE 14 /* Intense White 94/06/07 palette chg*/
#endif /*SCREEN_VGA || SCREEN_8514*/ #endif /*SCREEN_VGA || SCREEN_8514*/
#if defined(SCREEN_VESA)
#define BACKGROUND_VESA_COLOR 240
#endif /*SCREEN_VESA*/
#if defined(PC9800) #if defined(PC9800)
static unsigned char attr98[CLR_MAX] = { static unsigned char attr98[CLR_MAX] = {
0xe1, /* 0 white */ 0xe1, /* 0 white */
@@ -249,6 +253,7 @@ E void FDECL(txt_xputc, (CHAR_P, int));
/* ### vidvga.c ### */ /* ### vidvga.c ### */
enum vga_pan_direction { pan_left, pan_up, pan_right, pan_down };
#ifdef SCREEN_VGA #ifdef SCREEN_VGA
E void NDECL(vga_backsp); E void NDECL(vga_backsp);
E void FDECL(vga_clear_screen, (int)); E void FDECL(vga_clear_screen, (int));
@@ -274,7 +279,7 @@ E void FDECL(vga_tty_startup, (int *, int *));
E void FDECL(vga_xputs, (const char *, int, int)); E void FDECL(vga_xputs, (const char *, int, int));
E void FDECL(vga_xputc, (CHAR_P, int)); E void FDECL(vga_xputc, (CHAR_P, int));
E void FDECL(vga_xputg, (int, int, unsigned)); E void FDECL(vga_xputg, (int, int, unsigned));
E void FDECL(vga_userpan, (BOOLEAN_P)); E void FDECL(vga_userpan, (enum vga_pan_direction));
E void FDECL(vga_overview, (BOOLEAN_P)); E void FDECL(vga_overview, (BOOLEAN_P));
E void FDECL(vga_traditional, (BOOLEAN_P)); E void FDECL(vga_traditional, (BOOLEAN_P));
E void NDECL(vga_refresh); E void NDECL(vga_refresh);
@@ -303,10 +308,11 @@ E void FDECL(vesa_tty_startup, (int *, int *));
E void FDECL(vesa_xputs, (const char *, int, int)); E void FDECL(vesa_xputs, (const char *, int, int));
E void FDECL(vesa_xputc, (CHAR_P, int)); E void FDECL(vesa_xputc, (CHAR_P, int));
E void FDECL(vesa_xputg, (int, int, unsigned)); E void FDECL(vesa_xputg, (int, int, unsigned));
E void FDECL(vesa_userpan, (BOOLEAN_P)); E void FDECL(vesa_userpan, (enum vga_pan_direction));
E void FDECL(vesa_overview, (BOOLEAN_P)); E void FDECL(vesa_overview, (BOOLEAN_P));
E void FDECL(vesa_traditional, (BOOLEAN_P)); E void FDECL(vesa_traditional, (BOOLEAN_P));
E void NDECL(vesa_refresh); E void NDECL(vesa_refresh);
E void NDECL(vesa_flush_text);
#endif /* SCREEN_VESA */ #endif /* SCREEN_VESA */
#endif /* NO_TERMS */ #endif /* NO_TERMS */
+760 -354
View File
File diff suppressed because it is too large Load Diff
+6 -4
View File
@@ -502,18 +502,20 @@ boolean clearfirst;
#endif /* USE_TILES && CLIPPING */ #endif /* USE_TILES && CLIPPING */
void void
vga_userpan(left) vga_userpan(pan)
boolean left; enum vga_pan_direction pan;
{ {
int x; int x;
/* pline("Into userpan"); */ /* pline("Into userpan"); */
if (iflags.over_view || iflags.traditional_view) if (iflags.over_view || iflags.traditional_view)
return; return;
if (left) if (pan == pan_left)
x = min(COLNO - 1, clipxmax + 10); x = min(COLNO - 1, clipxmax + 10);
else else if (pan == pan_right)
x = max(0, clipx - 10); x = max(0, clipx - 10);
else
return;
vga_cliparound(x, 10); /* y value is irrelevant on VGA clipping */ vga_cliparound(x, 10); /* y value is irrelevant on VGA clipping */
positionbar(); positionbar();
vga_DrawCursor(); vga_DrawCursor();