vid_svga.c: Hardware cursors with negative Y values work properly now

* Fixes cursor disappearing completely in Matrox cards in some cases.
* Allows emulated video adapters allowing negative Y values for hardware cursor to render those properly
This commit is contained in:
Cacodemon345
2024-02-15 00:31:51 +06:00
parent 97a6651942
commit f5995a4719
3 changed files with 11 additions and 13 deletions

View File

@@ -5924,9 +5924,9 @@ mystique_hwcursor_draw(svga_t *svga, int displine)
case XCURCTRL_CURMODE_XGA:
for (uint8_t x = 0; x < 64; x++) {
if (!(dat[1] & (1ULL << 63)))
svga->monitor->target_buffer->line[displine][offset + svga->x_add] = (dat[0] & (1ULL << 63)) ? svga_lookup_lut_ram(svga, mystique->cursor.col[1]) : svga_lookup_lut_ram(svga, mystique->cursor.col[0]);
svga->monitor->target_buffer->line[displine][(offset + svga->x_add) & 2047] = (dat[0] & (1ULL << 63)) ? svga_lookup_lut_ram(svga, mystique->cursor.col[1]) : svga_lookup_lut_ram(svga, mystique->cursor.col[0]);
else if (dat[0] & (1ULL << 63))
svga->monitor->target_buffer->line[displine][offset + svga->x_add] ^= 0xffffff;
svga->monitor->target_buffer->line[displine][(offset + svga->x_add) & 2047] ^= 0xffffff;
offset++;
dat[0] <<= 1;