diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c index 870221742..5b9626ad9 100644 --- a/src/video/vid_s3.c +++ b/src/video/vid_s3.c @@ -5025,12 +5025,13 @@ s3_updatemapping(s3_t *s3) if (s3->chip >= S3_86C928) { s3->linear_base = (svga->crtc[0x5a] << 16) | (svga->crtc[0x59] << 24); - if (s3->chip >= S3_86C928 && s3->chip <= S3_86C805) { + if (s3->chip <= S3_86C805) { if (s3->vlb) s3->linear_base &= 0x03ffffff; else if (!s3->pci) s3->linear_base &= 0x00ffffff; } + if ((svga->crtc[0x58] & 0x10) || (s3->accel.advfunc_cntl & 0x10)) { /*Linear framebuffer*/ mem_mapping_disable(&svga->mapping); @@ -10263,8 +10264,10 @@ s3_reset(void *priv) s3_t *s3 = (s3_t *) priv; if (reset_state != NULL) { - s3->accel.multifunc[0xe] &= ~(0x200 | 0x10); s3_disable_handlers(s3); + s3->accel.multifunc[0xd] = 0xd000; + s3->accel.multifunc[0xe] = 0xe000; + s3_log("S3 reset done.\n"); s3->force_busy = 0; s3->blitter_busy = 0; s3->fifo_read_idx = 0; @@ -10273,7 +10276,8 @@ s3_reset(void *priv) reset_state->pci_slot = s3->pci_slot; *s3 = *reset_state; - } + } else + s3_log("NULL reset.\n"); } static uint16_t