summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
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
commit308c451eec39ab6453712ee10727fcbc6536f6f3 (patch)
tree34b2da28b96e65cc4196357dcd6cb18a96d11ec6 /src
parenta95242d9e9362294ff67273ab3ac73e2251428f6 (diff)
(MESS)g7400: First attempt at mixing video signals. (nw)
Diffstat (limited to 'src')
-rw-r--r--src/mess/drivers/odyssey2.c22
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);