From 0a498e31f7ba365499b3e1e4dc06c0e5273bbdf2 Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Wed, 2 Apr 2014 02:44:12 +0000 Subject: [PATCH] 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] --- src/mame/machine/archimds.c | 6 +++--- src/mame/video/archimds.c | 38 +++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/mame/machine/archimds.c b/src/mame/machine/archimds.c index 7e93bb2993f..22fcf721c58 100644 --- a/src/mame/machine/archimds.c +++ b/src/mame/machine/archimds.c @@ -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 */ diff --git a/src/mame/video/archimds.c b/src/mame/video/archimds.c index b77699becf5..77f0e17a484 100644 --- a/src/mame/video/archimds.c +++ b/src/mame/video/archimds.c @@ -77,6 +77,41 @@ UINT32 archimedes_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm } } break; + case 2: //4 bpp + { + for(y=0;ypen((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