Fixed check for unimplemented CMDFIFO and return for now if write would be

valid. The hRetrace value can be set now, since Bochs no longer crashes.
TODO: Implement enough of the FIFO stuff to make the Win9x driver for the
Voodoo2 work.
This commit is contained in:
Volker Ruppert 2017-05-06 10:07:28 +00:00
parent 495607d162
commit 78ff38fcf3
2 changed files with 4 additions and 5 deletions

View File

@ -624,9 +624,7 @@ Bit32u bx_voodoo_c::get_retrace(bx_bool hv)
Bit32u time_in_line = (Bit32u)(time_in_frame % BX_VOODOO_THIS s.vdraw.htotal_usec);
Bit32u hpixel = (Bit32u)(time_in_line * BX_VOODOO_THIS s.vdraw.htime_to_pixel);
if (time_in_line < BX_VOODOO_THIS s.vdraw.hsync_usec) {
// This code seems to be okay, but Voodoo driver gets confused in next stage
// and finally causes a segfault.
// value |= ((hpixel + 1) << 16);
value |= ((hpixel + 1) << 16);
}
}
return value;

View File

@ -1331,12 +1331,13 @@ void register_w(Bit32u offset, Bit32u data)
return;
}
if ((FBIINIT7_CMDFIFO_ENABLE(v->reg[fbiInit7].u)) &&
((offset & 0x200000) > 0)) {
((offset & 0x80000) > 0)) {
if (!(v->regaccess[regnum] & REGISTER_WRITETHRU)) {
BX_ERROR(("Invalid attempt to write %s", v->regnames[regnum]));
return;
}
BX_ERROR(("Writing to CMDFIFO not supported yet"));
return;
}
switch (regnum) {
@ -2382,7 +2383,7 @@ Bit32u register_r(Bit32u offset)
return 0;
}
if ((FBIINIT7_CMDFIFO_ENABLE(v->reg[fbiInit7].u)) &&
((offset & 0x200000) > 0)) {
((offset & 0x80000) > 0)) {
BX_ERROR(("Invalid attempt to read from CMDFIFO"));
}