diff --git a/src/vid_tgui9440.c b/src/vid_tgui9440.c index 0014cc5..de748b0 100644 --- a/src/vid_tgui9440.c +++ b/src/vid_tgui9440.c @@ -311,6 +311,7 @@ void tgui_out(uint16_t addr, uint8_t val, void *p) { tgui->linear_base = ((val & 0xf) | ((val >> 2) & 0x30)) << 20; tgui->linear_size = (val & 0x10) ? 0x200000 : 0x100000; + tgui->svga.decode_mask = (val & 0x10) ? 0x1fffff : 0xfffff; } tgui_recalcmapping(tgui); } @@ -710,12 +711,14 @@ void tgui_pci_write(int func, int addr, uint8_t val, void *p) case 0x12: tgui->linear_base = (tgui->linear_base & 0xff000000) | ((val & 0xe0) << 16); tgui->linear_size = 2 << 20; + tgui->svga.decode_mask = 0x1fffff; svga->crtc[0x21] = (svga->crtc[0x21] & ~0xf) | (val >> 4); tgui_recalcmapping(tgui); break; case 0x13: tgui->linear_base = (tgui->linear_base & 0xe00000) | (val << 24); tgui->linear_size = 2 << 20; + tgui->svga.decode_mask = 0x1fffff; svga->crtc[0x21] = (svga->crtc[0x21] & ~0xc0) | (val >> 6); tgui_recalcmapping(tgui); break;