summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/video/pc_vga.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/video/pc_vga.c')
-rw-r--r--src/emu/video/pc_vga.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/emu/video/pc_vga.c b/src/emu/video/pc_vga.c
index e81f59e4115..d8c62bedbc8 100644
--- a/src/emu/video/pc_vga.c
+++ b/src/emu/video/pc_vga.c
@@ -94,7 +94,7 @@ static struct
/**/ UINT8 vert_retrace_end;
/**/ UINT16 vert_blank_start;
UINT16 line_compare;
-/**/ UINT16 cursor_addr;
+/**/ UINT32 cursor_addr;
/**/ UINT8 byte_panning;
/**/ UINT8 preset_row_scan;
UINT8 scan_doubling;
@@ -4993,6 +4993,10 @@ WRITE8_DEVICE_HANDLER(ati_port_ext_w)
ati.ext_reg[ati.ext_reg_select] = data;
switch(ati.ext_reg_select)
{
+ case 0x23:
+ vga.crtc.start_addr = (vga.crtc.start_addr & 0xfffdffff) | ((data & 0x10) << 13);
+ vga.crtc.cursor_addr = (vga.crtc.cursor_addr & 0xfffdffff) | ((data & 0x08) << 14);
+ break;
case 0x2d:
if(data & 0x08)
{
@@ -5002,6 +5006,10 @@ WRITE8_DEVICE_HANDLER(ati_port_ext_w)
logerror("ATI: ATI2D (extensions) write %02x\n",data);
}
break;
+ case 0x30:
+ vga.crtc.start_addr = (vga.crtc.start_addr & 0xfffeffff) | ((data & 0x40) << 10);
+ vga.crtc.cursor_addr = (vga.crtc.cursor_addr & 0xfffeffff) | ((data & 0x04) << 14);
+ break;
case 0x32: // memory page select
svga.bank_r = ((data & 0x01) << 3) | ((data & 0xe0) >> 5);
svga.bank_w = ((data & 0x1e) >> 1);