diff --git a/src/emu/video/ef9340_1.c b/src/emu/video/ef9340_1.c index 03a23571940..7365eb38c6a 100644 --- a/src/emu/video/ef9340_1.c +++ b/src/emu/video/ef9340_1.c @@ -100,9 +100,13 @@ UINT16 ef9340_1_device::ef9340_get_c_addr(UINT8 x, UINT8 y) void ef9340_1_device::ef9340_inc_c() { m_ef9340.X++; - if ( m_ef9340.X >= 40 ) + if ( m_ef9340.X == 40 || m_ef9340.X == 48 || m_ef9340.X == 56 || m_ef9340.X == 64 ) { - m_ef9340.Y = ( m_ef9340.Y + 1 ) % 24; + m_ef9340.Y = ( m_ef9340.Y + 1 ) & 0x1f; + if ( m_ef9340.Y == 24 ) + { + m_ef9340.Y = 0; + } m_ef9340.X = 0; } } diff --git a/src/emu/video/i8244.h b/src/emu/video/i8244.h index 59c8514b09e..ed73f86e4b7 100644 --- a/src/emu/video/i8244.h +++ b/src/emu/video/i8244.h @@ -105,6 +105,7 @@ public: // Global constants static const int START_ACTIVE_SCAN = 42; + static const int BORDER_SIZE = 10; static const int END_ACTIVE_SCAN = 42 + 10 + 320 + 10; static const int START_Y = 1; static const int SCREEN_HEIGHT = 243; diff --git a/src/mess/drivers/odyssey2.c b/src/mess/drivers/odyssey2.c index 1782933e054..9db2cf20cfd 100644 --- a/src/mess/drivers/odyssey2.c +++ b/src/mess/drivers/odyssey2.c @@ -441,14 +441,16 @@ WRITE16_MEMBER(odyssey2_state::scanline_postprocess_g7400) bitmap_ind16 *ef934x_bitmap = m_ef9340_1->get_bitmap(); // apply external LUM setting + int x_real_start = i8244_device::START_ACTIVE_SCAN + i8244_device::BORDER_SIZE; + int x_real_end = i8244_device::END_ACTIVE_SCAN - i8244_device::BORDER_SIZE; for ( int x = i8244_device::START_ACTIVE_SCAN; x < i8244_device::END_ACTIVE_SCAN; x++ ) { UINT16 d = bitmap->pix16( vpos, x ); - if ( ! m_g7400_ic678_decode[ d & 0x07 ] ) + if ( ( ! m_g7400_ic678_decode[ d & 0x07 ] ) && x >= x_real_start && x < x_real_end ) { // Use EF934x input - d = ef934x_bitmap->pix16( y, x - i8244_device::START_ACTIVE_SCAN ) & 0x07; + d = ef934x_bitmap->pix16( y, x - x_real_start ) & 0x07; if ( ! m_g7400_ic674_decode[ d & 0x07 ] ) {