Merge branch 'pr873' into NetHack-3.7
This commit is contained in:
@@ -47,7 +47,7 @@ OPTIONS=VIDEO
|
|||||||
|
|
||||||
ie: OPTIONS=video:autodetect
|
ie: OPTIONS=video:autodetect
|
||||||
|
|
||||||
Possible values are: AUTODETECT, DEFAULT, VGA
|
Possible values are: AUTODETECT, DEFAULT, VGA, VESA
|
||||||
|
|
||||||
AUTODETECT Checks for a supported hi-res video
|
AUTODETECT Checks for a supported hi-res video
|
||||||
adaptor, and if it detects one, NetHack
|
adaptor, and if it detects one, NetHack
|
||||||
@@ -62,6 +62,9 @@ OPTIONS=VIDEO
|
|||||||
potential to cause machine lock-ups if
|
potential to cause machine lock-ups if
|
||||||
the specified video hardware is not present.
|
the specified video hardware is not present.
|
||||||
|
|
||||||
|
VESA Forces use of VESA specific video routines.
|
||||||
|
Reverts to TTY mode if no VESA BIOS is found.
|
||||||
|
|
||||||
OPTIONS=VIDEOSHADES
|
OPTIONS=VIDEOSHADES
|
||||||
(defaults.nh only)
|
(defaults.nh only)
|
||||||
Players may wish to add this option because one of their
|
Players may wish to add this option because one of their
|
||||||
|
|||||||
@@ -141,6 +141,9 @@ extern int attrib_gr_normal; /* graphics mode normal attribute */
|
|||||||
extern int attrib_text_intense; /* text mode intense attribute */
|
extern int attrib_text_intense; /* text mode intense attribute */
|
||||||
extern int attrib_gr_intense; /* graphics mode intense attribute */
|
extern int attrib_gr_intense; /* graphics mode intense attribute */
|
||||||
extern boolean inmap; /* in the map window */
|
extern boolean inmap; /* in the map window */
|
||||||
|
#ifdef USE_TILES
|
||||||
|
extern glyph_map glyphmap[MAX_GLYPH];
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Global Variables
|
* Global Variables
|
||||||
@@ -480,16 +483,14 @@ vga_redrawmap(boolean clearfirst)
|
|||||||
y + TOP_MAP_ROW, map[y][x].attr);
|
y + TOP_MAP_ROW, map[y][x].attr);
|
||||||
} else {
|
} else {
|
||||||
t = map[y][x].glyph;
|
t = map[y][x].glyph;
|
||||||
if (!(clearfirst && t == cmap_to_glyph(S_stone))) {
|
if (!iflags.over_view) {
|
||||||
if (!iflags.over_view) {
|
read_planar_tile(t, &planecell);
|
||||||
read_planar_tile(t, &planecell);
|
if (map[y][x].special)
|
||||||
if (map[y][x].special)
|
decal_planar(&planecell, map[y][x].special);
|
||||||
decal_planar(&planecell, map[y][x].special);
|
vga_DisplayCell(&planecell, x - clipx, y + TOP_MAP_ROW);
|
||||||
vga_DisplayCell(&planecell, x - clipx, y + TOP_MAP_ROW);
|
} else {
|
||||||
} else {
|
read_planar_tile_O(t, &planecell_O);
|
||||||
read_planar_tile_O(t, &planecell_O);
|
vga_DisplayCell_O(&planecell_O, x, y + TOP_MAP_ROW);
|
||||||
vga_DisplayCell_O(&planecell_O, x, y + TOP_MAP_ROW);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -675,34 +676,26 @@ read_tile_indexes(unsigned glyph, unsigned char (*indexes)[TILE_X])
|
|||||||
{
|
{
|
||||||
const struct TileImage *tile;
|
const struct TileImage *tile;
|
||||||
unsigned x, y;
|
unsigned x, y;
|
||||||
int row, col, ry, tilenum = 0;
|
int tilenum;
|
||||||
|
|
||||||
/* We don't have enough colors to show the statues */
|
/* We don't have enough colors to show the statues */
|
||||||
if (glyph >= GLYPH_STATUE_OFF) {
|
if (glyph_is_statue(glyph)) {
|
||||||
glyph = GLYPH_OBJ_OFF + STATUE;
|
glyph = GLYPH_OBJ_OFF + STATUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
row = currow;
|
|
||||||
col = curcol;
|
|
||||||
if ((col < 0 || col >= COLNO)
|
|
||||||
|| (row < TOP_MAP_ROW || row >= (ROWNO + TOP_MAP_ROW)))
|
|
||||||
return;
|
|
||||||
ry = row - TOP_MAP_ROW;
|
|
||||||
/* Get the tile from the image */
|
/* Get the tile from the image */
|
||||||
tilenum = map[ry][col].tileidx;
|
tilenum = glyphmap[glyph].tileidx;
|
||||||
tile = get_tile(tilenum);
|
tile = get_tile(tilenum);
|
||||||
|
|
||||||
/* Map to a 16 bit palette; assume colors laid out as in default tileset */
|
/* Map to a 16 bit palette; assume colors laid out as in default tileset */
|
||||||
for (y = 0; y < TILE_Y && y < tile->height; ++y) {
|
for (y = 0; y < TILE_Y && y < tile->height; ++y) {
|
||||||
for (x = 0; x < TILE_X && x < tile->width; ++x) {
|
for (x = 0; x < TILE_X && x < tile->width; ++x) {
|
||||||
|
static const unsigned char color_to_16[] = {
|
||||||
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 14, 15,
|
||||||
|
13, 1, 1, 1, 1, 15, 1, 15, 15, 15, 15, 1, 0
|
||||||
|
};
|
||||||
unsigned i = tile->indexes[y * tile->width + x];
|
unsigned i = tile->indexes[y * tile->width + x];
|
||||||
if (i == 28) {
|
i = (i < SIZE(color_to_16)) ? color_to_16[i] : 15;
|
||||||
i = 0;
|
|
||||||
} else if (i == 16) {
|
|
||||||
i = 13;
|
|
||||||
} else if (i > 15) {
|
|
||||||
i = 15;
|
|
||||||
}
|
|
||||||
indexes[y][x] = i;
|
indexes[y][x] = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user