MESS: Attempt to partially rewrite AAKART, and added 4bpp video mode for Acorn Archimedes. It now boots at prompt screen, and actually even boots into splash screen and dies almost soon with an error if you provide a properly initialized NVRAM. [Angelo Salese]

This commit is contained in:
Angelo Salese 2014-04-02 02:44:12 +00:00
parent a05b9490a1
commit 0a498e31f7
2 changed files with 41 additions and 3 deletions

View File

@ -930,17 +930,17 @@ WRITE32_MEMBER(archimedes_state::archimedes_memc_w)
{
case 0: /* video init */
m_vidc_vidinit = ((data>>2)&0x7fff)*16;
//logerror("MEMC: VIDINIT %08x\n",vidc_vidinit);
//printf("MEMC: VIDINIT %08x\n",m_vidc_vidinit);
break;
case 1: /* video start */
m_vidc_vidstart = 0x2000000 | (((data>>2)&0x7fff)*16);
//logerror("MEMC: VIDSTART %08x\n",vidc_vidstart);
//printf("MEMC: VIDSTART %08x\n",m_vidc_vidstart);
break;
case 2: /* video end */
m_vidc_vidend = 0x2000000 | (((data>>2)&0x7fff)*16);
//logerror("MEMC: VIDEND %08x\n",vidc_vidend);
//printf("MEMC: VIDEND %08x\n",m_vidc_vidend);
break;
case 4: /* sound start */

View File

@ -77,6 +77,41 @@ UINT32 archimedes_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
}
}
break;
case 2: //4 bpp
{
for(y=0;y<ysize;y++)
{
for(x=0;x<xsize;x+=2)
{
pen = vram[count];
res_x = x+xstart;
res_y = (y+ystart)*(m_vidc_interlace+1);
for(xi=0;xi<2;xi++)
{
res_x = x+xi+xstart;
res_y = (y+ystart)*(m_vidc_interlace+1);
if(m_vidc_interlace)
{
if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
bitmap.pix32(res_y, res_x) = m_palette->pen((pen>>(xi*4))&0xf);
if (cliprect.contains(res_x, res_y+1) && (res_x) <= xend && (res_y+1) <= yend)
bitmap.pix32(res_y+1, res_x) = m_palette->pen((pen>>(xi*4))&0xf);
}
else
{
if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
bitmap.pix32(res_y, res_x) = m_palette->pen((pen>>(xi*4))&0xf);
}
}
count++;
}
}
}
break;
case 3: //8 bpp
{
for(y=0;y<ysize;y++)
@ -106,6 +141,9 @@ UINT32 archimedes_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
}
}
break;
default:
popmessage("Unemulated bpp mode %02x, contact MAME/MESSdev",m_vidc_bpp_mode);
break;
}
}