From ed4a36eeacd94bbbbcbb710c18b3856f2f6a968e Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 24 Aug 2020 23:53:41 +0200 Subject: ef9340: fix drawing over wrong area when service row is disabled --- hash/videopacp.xml | 16 ++++++++-------- src/devices/video/ef9340_1.cpp | 10 ++++++---- src/mame/drivers/odyssey2.cpp | 8 +++++--- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/hash/videopacp.xml b/hash/videopacp.xml index bcaf18c1d6f..88cb6308e56 100644 --- a/hash/videopacp.xml +++ b/hash/videopacp.xml @@ -368,7 +368,7 @@ Do Videopac+/Odyssey3 versions exist?: Exojet+ (France) - 198? + 1983 Brandt @@ -381,7 +381,7 @@ Do Videopac+/Odyssey3 versions exist?: Le Tresor Englouti+ (France) - 198? + 1984 Brandt @@ -440,7 +440,7 @@ Do Videopac+/Odyssey3 versions exist?: Norseman (Europe) - 198? + 1983 GST Video @@ -455,7 +455,7 @@ Do Videopac+/Odyssey3 versions exist?: Trans American Rally (Europe) - 198? + 1983 Philips @@ -468,11 +468,11 @@ Do Videopac+/Odyssey3 versions exist?: - + Baseball (US, plus, prototype) - 198? + 1983 Philips @@ -484,8 +484,8 @@ Do Videopac+/Odyssey3 versions exist?: - Flashpoint (US, prototype) - 198? + Flash Point (US, prototype) + 1983 Philips diff --git a/src/devices/video/ef9340_1.cpp b/src/devices/video/ef9340_1.cpp index b9e595511fd..9cc05ab747b 100644 --- a/src/devices/video/ef9340_1.cpp +++ b/src/devices/video/ef9340_1.cpp @@ -323,9 +323,6 @@ uint8_t ef9340_1_device::ef9341_read( uint8_t command, uint8_t b ) void ef9340_1_device::ef9340_scanline(int vpos) { - for (int i = 0; i < m_tmp_bitmap.width(); i++) - m_tmp_bitmap.pix16(vpos, i) = 0; - vpos -= m_offset_y; if (vpos < 0) return; @@ -360,7 +357,7 @@ void ef9340_1_device::ef9340_scanline(int vpos) { // Service row is disabled for (int i = 0; i < 40 * 8; i++) - m_tmp_bitmap.pix16(vpos, i) = 8; + m_tmp_bitmap.pix16(m_offset_y + vpos, m_offset_x + i) = 8; return; } } @@ -480,6 +477,11 @@ void ef9340_1_device::ef9340_scanline(int vpos) } } } + else + { + for (int i = 0; i < 40 * 8; i++) + m_tmp_bitmap.pix16(m_offset_y + vpos, m_offset_x + i) = 0; + } // determine next h parity if (vpos >= 10 && slice == 9) diff --git a/src/mame/drivers/odyssey2.cpp b/src/mame/drivers/odyssey2.cpp index a8ee2a172b4..d107f6e4067 100644 --- a/src/mame/drivers/odyssey2.cpp +++ b/src/mame/drivers/odyssey2.cpp @@ -60,6 +60,8 @@ TODO: glitches (it is used to an advantage in some as-of-yet undumped homebrews) - 8244(NTSC) is not supposed to show characters near the upper border, but hiding them will cause bugs in some Euro games +- 8245(PAL) video timing is not 100% accurate, though vtotal and htotal should + be correct - according to tests, 8244 does not have a sound interrupt, but the Philips service test cartridge for 8245 tests for it and fails if it did not get an irq - likewise, 8244 does not have a horizontal interrupt, but does 8245 have it? @@ -559,7 +561,7 @@ static INPUT_PORTS_START( odyssey2 ) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Y / Yes") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("N / No") PORT_CODE(KEYCODE_N) PORT_CHAR('N') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Clear") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(8) + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Clear") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_START("KEY.6") @@ -643,7 +645,7 @@ static INPUT_PORTS_START( g7400 ) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"= \u2192") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Y / Yes") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("N / No") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Clear ;") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(8) PORT_CHAR(';') + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Clear ;") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_CHAR(';') PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Enter _") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(10) PORT_CHAR('_') PORT_MODIFY("KEY.6") @@ -862,4 +864,4 @@ COMP( 1979, videopacf, odyssey2, 0, videopacf, odyssey2, odyssey2_state, empty COMP( 1983, videopacp, 0, 0, g7400, g7400, videopacp_state, empty_init, "Philips", "Videopac+ G7400 (Europe)", MACHINE_SUPPORTS_SAVE ) COMP( 1983, jopac, videopacp, 0, jo7400, g7400, videopacp_state, empty_init, "Philips (Brandt license)", "Jopac JO7400 (France)", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, odyssey3, videopacp, 0, odyssey3, g7400, videopacp_state, empty_init, "Magnavox", "Odyssey 3 Command Center (US, prototype)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, odyssey3, videopacp, 0, odyssey3, g7400, videopacp_state, empty_init, "Philips", "Odyssey 3 Command Center (US, prototype)", MACHINE_SUPPORTS_SAVE ) -- cgit v1.2.3