From 84b404d3960401f8c7e548904fea3adbb4bdef27 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Jan 2013 20:37:18 +0000 Subject: [PATCH] Use the upper tile attribute bits from the *next* row on Grasspin? (nw) (yes, this seems like utter lunacy but it's the ONLY way I can see this working. The CPU comms problem in transferring the dipswitches remains) --- src/mame/drivers/blueprnt.c | 3 +-- src/mame/video/blueprnt.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/mame/drivers/blueprnt.c b/src/mame/drivers/blueprnt.c index f06be93b74a..2dccba2f86f 100644 --- a/src/mame/drivers/blueprnt.c +++ b/src/mame/drivers/blueprnt.c @@ -96,8 +96,7 @@ static ADDRESS_MAP_START( blueprnt_map, AS_PROGRAM, 8, blueprnt_state ) AM_RANGE(0xc003, 0xc003) AM_READ(blueprnt_sh_dipsw_r) AM_RANGE(0xd000, 0xd000) AM_WRITE(blueprnt_sound_command_w) AM_RANGE(0xe000, 0xe000) AM_READ(watchdog_reset_r) AM_WRITE(blueprnt_flipscreen_w) - AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(blueprnt_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xf400, 0xf7ff) AM_RAM // mirror? + AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(blueprnt_colorram_w) AM_MIRROR(0x400) AM_SHARE("colorram") ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, blueprnt_state ) diff --git a/src/mame/video/blueprnt.c b/src/mame/video/blueprnt.c index 5179218d5d4..2257b73ec8b 100644 --- a/src/mame/video/blueprnt.c +++ b/src/mame/video/blueprnt.c @@ -58,6 +58,10 @@ WRITE8_MEMBER(blueprnt_state::blueprnt_colorram_w) m_colorram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); + + offset+=32; + offset &=0x3ff; + m_bg_tilemap->mark_tile_dirty(offset); } WRITE8_MEMBER(blueprnt_state::blueprnt_flipscreen_w) @@ -87,13 +91,18 @@ TILE_GET_INFO_MEMBER(blueprnt_state::get_bg_tile_info) // or flipscreen after startup... this certainly doesn't work for 'Saturn' TILE_GET_INFO_MEMBER(blueprnt_state::get_bg_tile_info_grasspin) { - int attr = m_colorram[tile_index]; + int attr = m_colorram[tile_index] & 0x3f; + attr |= m_colorram[(tile_index+32)&0x3ff] & 0xc0; // from the next row? + + int code = m_videoram[tile_index]; + + int color = attr & 0x7f; tileinfo.category = (attr & 0x80) ? 1 : 0; - if (!(attr & 0x10)) code += m_gfx_bank * 0x100; + if ((attr & 0x40)) code += m_gfx_bank * 0x100; else code &=0xff; SET_TILE_INFO_MEMBER(0, code, color, 0);