Some fixes for the Voodoo Banshee emulation.

- Fixed display updates for color depth > 8.
- Fixed compilation on MSVC (bitblt.h).
- Improved error message for undocumented srcXY bits.
- Fixed a GCC warning.
- Updated makefile dependencies.
This commit is contained in:
Volker Ruppert 2017-11-19 09:06:37 +00:00
parent 96f4c44cce
commit d6f96db705
3 changed files with 9 additions and 10 deletions

View File

@ -136,7 +136,7 @@ svga_cirrus.o: svga_cirrus.@CPP_SUFFIX@ ../iodev.h ../../bochs.h ../../config.h
../../gui/siminterface.h ../../cpudb.h ../../gui/paramtree.h \
../../memory/memory-bochs.h ../../pc_system.h ../../gui/gui.h \
../../instrument/stubs/instrument.h ../../plugin.h ../../extplugin.h \
../../param_names.h vgacore.h svga_cirrus.h ../virt_timer.h
../../param_names.h vgacore.h bitblt.h svga_cirrus.h ../virt_timer.h
vga.o: vga.@CPP_SUFFIX@ ../iodev.h ../../bochs.h ../../config.h ../../osdep.h \
../../bx_debug/debug.h ../../config.h ../../osdep.h \
../../gui/siminterface.h ../../cpudb.h ../../gui/paramtree.h \
@ -155,14 +155,14 @@ voodoo.o: voodoo.@CPP_SUFFIX@ ../iodev.h ../../bochs.h ../../config.h ../../osde
../../memory/memory-bochs.h ../../pc_system.h ../../gui/gui.h \
../../instrument/stubs/instrument.h ../../plugin.h ../../extplugin.h \
../../param_names.h ../pci.h vgacore.h voodoo.h ../virt_timer.h \
../../bxthread.h voodoo_types.h voodoo_data.h voodoo_main.h \
../../bxthread.h bitblt.h voodoo_types.h voodoo_data.h voodoo_main.h \
voodoo_func.h
svga_cirrus.lo: svga_cirrus.@CPP_SUFFIX@ ../iodev.h ../../bochs.h ../../config.h \
../../osdep.h ../../bx_debug/debug.h ../../config.h ../../osdep.h \
../../gui/siminterface.h ../../cpudb.h ../../gui/paramtree.h \
../../memory/memory-bochs.h ../../pc_system.h ../../gui/gui.h \
../../instrument/stubs/instrument.h ../../plugin.h ../../extplugin.h \
../../param_names.h vgacore.h svga_cirrus.h ../virt_timer.h
../../param_names.h vgacore.h bitblt.h svga_cirrus.h ../virt_timer.h
vga.lo: vga.@CPP_SUFFIX@ ../iodev.h ../../bochs.h ../../config.h ../../osdep.h \
../../bx_debug/debug.h ../../config.h ../../osdep.h \
../../gui/siminterface.h ../../cpudb.h ../../gui/paramtree.h \
@ -181,5 +181,5 @@ voodoo.lo: voodoo.@CPP_SUFFIX@ ../iodev.h ../../bochs.h ../../config.h ../../osd
../../memory/memory-bochs.h ../../pc_system.h ../../gui/gui.h \
../../instrument/stubs/instrument.h ../../plugin.h ../../extplugin.h \
../../param_names.h ../pci.h vgacore.h voodoo.h ../virt_timer.h \
../../bxthread.h voodoo_types.h voodoo_data.h voodoo_main.h \
../../bxthread.h bitblt.h voodoo_types.h voodoo_data.h voodoo_main.h \
voodoo_func.h

View File

@ -100,7 +100,7 @@ IMPLEMENT_BACKWARD_BITBLT(notsrc, *dst = (~(*src)))
IMPLEMENT_BACKWARD_BITBLT(notsrc_or_dst, *dst = (~(*src)) | (*dst))
IMPLEMENT_BACKWARD_BITBLT(notsrc_and_notdst, *dst = (~(*src)) & (~(*dst)))
void bx_ternary_rop(Bit8u rop0, Bit8u *dst_ptr, Bit8u *src_ptr, Bit8u *pat_ptr,
static void bx_ternary_rop(Bit8u rop0, Bit8u *dst_ptr, Bit8u *src_ptr, Bit8u *pat_ptr,
int dpxsize)
{
Bit8u mask, inbits, outbits;

View File

@ -1968,12 +1968,11 @@ void bx_voodoo_c::banshee_blt_reg_write(Bit8u reg, Bit32u value)
if (cmdextra_3) {
BX_ERROR(("host to screen blt: commandExtra bit #3 undocumented effect ?"));
}
if ((BLT.reg[blt_srcXY] & 0x1f) != 0) {
BX_ERROR(("host to screen blt: srcXY: start bit/byte not supported yet"));
}
undoc_bits = (BLT.reg[blt_srcXY] & 0x3fe0) != 0;
if (undoc_bits) {
BX_ERROR(("host to screen blt: srcXY: undocumented bit(s) set"));
} else if ((BLT.reg[blt_srcXY] & 0x1f) != 0) {
BX_ERROR(("host to screen blt: srcXY: start bit/byte not supported yet"));
}
if ((pxpack == 0) && !cmdextra_3) {
pbytes = BLT.reg[blt_srcFormat] & 0x3fff;
@ -2092,7 +2091,7 @@ void bx_voodoo_c::banshee_blt_complete()
Bit8u vpxsize = (v->banshee.disp_bpp >> 3);
Bit32u dstart = BLT.dst_base;
Bit16u dpitch = BLT.dst_pitch;
Bit8u dpxsize = BLT.dst_fmt;
Bit8u dpxsize = (BLT.dst_fmt > 1) ? (BLT.dst_fmt - 1) : 1;
Bit32u cmd = BLT.reg[blt_command];
bx_bool xinc = (cmd >> 10) & 1;
bx_bool yinc = (cmd >> 11) & 1;
@ -2375,7 +2374,7 @@ void bx_voodoo_c::banshee_blt_screen_to_screen_pattern()
Bit8u fgcolor[4], bgcolor[4], dstcolor[4];
Bit8u *patcolor;
int x, x0, x1, y, y0, y1, w, h;
Bit8u pmask, rop0, patcol = 0, patline;
Bit8u pmask = 0, rop0, patcol = 0, patline;
bx_bool set;
BX_LOCK(render_mutex);