(MESS) gfxultra: Very basic implementation of the linedraw register, enough to pass the BIOS' test. (no whatsnew)

This commit is contained in:
mahlemiut 2012-09-14 23:11:45 +00:00
parent 2193801ec2
commit 4599f17a75
3 changed files with 35 additions and 0 deletions

View File

@ -5252,6 +5252,39 @@ WRITE16_HANDLER(mach8_bresenham_count_w)
logerror("Mach8: Bresenham count write %04x\n",data);
}
WRITE16_HANDLER(mach8_linedraw_w)
{
// TODO: actually draw the lines
switch(ati.linedraw)
{
case 0: // Set current X
s3.curr_x = data;
ati.linedraw++;
break;
case 1: // Set current Y
s3.curr_y = data;
ati.linedraw++;
break;
case 2: // Line end X
s3.curr_x = data;
ati.linedraw++;
break;
case 3: // Line end Y
s3.curr_y = data;
ati.linedraw = 2;
break;
case 4: // Set current X
s3.curr_x = data;
ati.linedraw++;
break;
case 5: // Set current Y
s3.curr_y = data;
ati.linedraw = 4;
break;
}
logerror("ATI: Linedraw register write %04x, mode %i\n",data,ati.linedraw);
}
READ16_HANDLER(mach8_scratch0_r)
{
return ati.scratch0;

View File

@ -125,6 +125,7 @@ READ16_HANDLER(mach8_vdisp_r);
WRITE16_HANDLER(mach8_vdisp_w);
READ16_HANDLER(mach8_vsync_r);
WRITE16_HANDLER(mach8_vsync_w);
WRITE16_HANDLER(mach8_linedraw_w);
READ16_HANDLER(mach8_ec0_r);
WRITE16_HANDLER(mach8_ec0_w);
READ16_HANDLER(mach8_ec1_r);

View File

@ -113,6 +113,7 @@ void isa16_vga_gfxultra_device::device_start()
m_isa->install16_device(0xbae8, 0xbaeb, 0, 0, FUNC(s3_foremix_r), FUNC(s3_foremix_w));
m_isa->install16_device(0xbee8, 0xbeeb, 0, 0, FUNC(s3_multifunc_r), FUNC(s3_multifunc_w));
m_isa->install16_device(0xe2e8, 0xe2eb, 0, 0, FUNC(s3_pixel_xfer_r), FUNC(s3_pixel_xfer_w));
m_isa->install16_device(0xfeec, 0xfeef, 0, 0, NULL, NULL, FUNC(mach8_linedraw_w));
m_isa->install_memory(0xa0000, 0xbffff, 0, 0, FUNC(ati_mem_r), FUNC(ati_mem_w));
}