diff options
author | Wilbert Pol <wilbert@jdg.info> | 2013-01-13 20:05:40 +0000 |
---|---|---|
committer | Wilbert Pol <wilbert@jdg.info> | 2013-01-13 20:05:40 +0000 |
commit | 308c451eec39ab6453712ee10727fcbc6536f6f3 (patch) | |
tree | 34b2da28b96e65cc4196357dcd6cb18a96d11ec6 /src | |
parent | a95242d9e9362294ff67273ab3ac73e2251428f6 (diff) |
(MESS)g7400: First attempt at mixing video signals. (nw)
Diffstat (limited to 'src')
-rw-r--r-- | src/mess/drivers/odyssey2.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/mess/drivers/odyssey2.c b/src/mess/drivers/odyssey2.c index 4c29cf3e5a5..8a7af5c5a4f 100644 --- a/src/mess/drivers/odyssey2.c +++ b/src/mess/drivers/odyssey2.c @@ -436,15 +436,35 @@ WRITE16_MEMBER(odyssey2_state::scanline_postprocess) WRITE16_MEMBER(odyssey2_state::scanline_postprocess_g7400) { int vpos = data; + int y = vpos - i8244_device::START_Y; bitmap_ind16 *bitmap = m_i8244->get_bitmap(); + bitmap_ind16 *ef934x_bitmap = m_ef9340_1->get_bitmap(); // apply external LUM setting for ( int x = i8244_device::START_ACTIVE_SCAN; x < i8244_device::END_ACTIVE_SCAN; x++ ) { - bitmap->pix16( vpos, x ) |= ( m_lum ^ 0x08 ); + UINT16 d = bitmap->pix16( vpos, x ); + + if ( ! m_g7400_ic678_decode[ d & 0x07 ] ) + { + // Use EF934x input + d = ef934x_bitmap->pix16( y, x - i8244_device::START_ACTIVE_SCAN ) & 0x07; + + if ( ! m_g7400_ic674_decode[ d & 0x07 ] ) + { + d |= 0x08; + } + } + else + { + // Use i8245 input + d |= ( m_lum ^ 0x08 ); + } + bitmap->pix16( vpos, x ) = d; } } + UINT32 odyssey2_state::screen_update_odyssey2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { return m_i8244->screen_update(screen, bitmap, cliprect); |