diff options
-rw-r--r-- | hash/videopac.xml | 171 | ||||
-rw-r--r-- | src/devices/video/ef9340_1.cpp | 5 | ||||
-rw-r--r-- | src/mame/drivers/odyssey2.cpp | 132 |
3 files changed, 230 insertions, 78 deletions
diff --git a/hash/videopac.xml b/hash/videopac.xml index 5badbd7fc39..16c244e535c 100644 --- a/hash/videopac.xml +++ b/hash/videopac.xml @@ -20,22 +20,18 @@ TODO: Undumped (or dumped but not public): - Spaans (spanish to dutch translator) - Crazy Horses -- Des Chiffres et des Lettres - misc. homebrew cartridges Protos: - Bastion youtube.com/watch?v=cFdmgs4r7_E - Catburglar youtube.com/watch?v=DDsWDFxy0oE - Himalaya youtube.com/watch?v=L_lvOs6EnA4 -- SoundTool youtube.com/watch?v=7JYn6B7rxqw - Terrahawks youtube.com/watch?v=AXk7OSA6NGg http://www.ozyr.com/rene/PICS/protos.jpg -- Sherlock Holmes Consulting Detective (programmed by Ed Friedman, most likely dumped and hoarded) - Back Gammon - Freedom Fighters - K.C.'s Crazy Chase -- Killer Bees (also 10/12/82 (silent version), and 11/12/82 builds exist) - Handicap I (?) - Frogger - Robot City @@ -53,14 +49,9 @@ Unreleased, possibly no prototypes exist: Undumped Odyssey³/G7400 prototypes: -USA: -- TMS2764 -- Freedom Fighters -- Pick Axe Pete - http://www.ozyr.com/rene/PICS/protos.jpg +- Pick Axe Pete - Modem Program -- Attack of the Time Lord - Requins [Shark Hunter] - monsternet dedicated g7400 840209 [Norseman] - 58+ Air Battle @@ -189,6 +180,18 @@ Official VP+ upgaded versions (simply adds a background picture): </part> </software> + <software name="linguaduc"><!-- not a consumer product, communication aid for the handicapped --> + <description>Linguaduc (Europe, prototype)</description> + <year>198?</year> + <publisher>Carba</publisher> + <part name="cart" interface="odyssey_cart"> + <feature name="slot" value="o2_rom" /> + <dataarea name="rom" size="0x800"> + <rom name="pr_linguaduc.bin" size="0x800" crc="bd623665" sha1="d33dedd4b880f0cb655faa2396ab05c619799269" /> + </dataarea> + </part> + </software> + <software name="newscast"> <description>Newscaster (Europe)</description> <year>1980</year> @@ -228,7 +231,19 @@ Official VP+ upgaded versions (simply adds a background picture): </part> </software> - <software name="testcart"> + <software name="soundtool"><!-- not a consumer product, developer sound tool --> + <description>Sound Tool (Europe)</description> + <year>198?</year> + <publisher>Philips</publisher> + <part name="cart" interface="odyssey_cart"> + <feature name="slot" value="o2_rom" /> + <dataarea name="rom" size="0x800"> + <rom name="soundtool.bin" size="0x800" crc="3e454bbe" sha1="976bbac3557e6daa262439645511e280b7c740fe" /> + </dataarea> + </part> + </software> + + <software name="testcart"><!-- not a consumer product, factory test rom --> <description>Service Test Cartridge (Europe)</description> <year>198?</year> <publisher>Philips</publisher> @@ -737,7 +752,7 @@ Official VP+ upgaded versions (simply adds a background picture): <part name="cart" interface="odyssey_cart"> <feature name="slot" value="o2_rom" /> <dataarea name="rom" size="0x1000"> - <rom name="jo_chez-maxime.bin" size="0x1000" crc="0f46cf66" sha1="cd58d267fe5bab82f5dab01dbb08d5adf0053108" /> + <rom name="jo_vxt_a08.bin" size="0x1000" crc="0f46cf66" sha1="cd58d267fe5bab82f5dab01dbb08d5adf0053108" /> </dataarea> </part> </software> @@ -803,7 +818,7 @@ Official VP+ upgaded versions (simply adds a background picture): </part> </software> - <software name="conquest"> + <software name="conquest"><!-- board game --> <description>Conquest of the World (Europe, US)</description> <year>1981</year> <publisher>Philips</publisher> @@ -951,6 +966,18 @@ Official VP+ upgaded versions (simply adds a background picture): </part> </software> + <software name="chifflet"> + <description>Des Chiffres et des Lettres (France)</description> + <year>198?</year> + <publisher>Brandt</publisher> + <part name="cart" interface="odyssey_cart"> + <feature name="slot" value="o2_rom" /> + <dataarea name="rom" size="0x2000"> + <rom name="jo_jft_d03.bin" size="0x2000" crc="248bf33e" sha1="5c86921225b93d87bfd63bc13dd22dddab4e8826" /> + </dataarea> + </part> + </software> + <software name="billiard"> <description>Electronic Billiards (Europe, US)</description> <year>1978</year> @@ -1235,6 +1262,32 @@ Official VP+ upgaded versions (simply adds a background picture): </part> </software> + <software name="beesp" cloneof="bees"> + <description>Killer Bees! (US, prototype, set 1)</description> + <year>1982</year> + <publisher>Philips</publisher> + <info name="programmer" value="Robert S. Harris" /> + <part name="cart" interface="odyssey_cart"> + <feature name="slot" value="o2_rom" /> + <dataarea name="rom" size="0x1000"> + <rom name="o2_47_pr.bin" size="0x1000" crc="f308018d" sha1="15880a92e42258776801fdae4239f3e529662913" /> + </dataarea> + </part> + </software> + + <software name="beespa" cloneof="bees"> + <description>Killer Bees! (US, prototype, set 2)</description> + <year>1982</year> + <publisher>Philips</publisher> + <info name="programmer" value="Robert S. Harris" /> + <part name="cart" interface="odyssey_cart"> + <feature name="slot" value="o2_rom" /> + <dataarea name="rom" size="0x1000"> + <rom name="o2_47_pr_alt.bin" size="0x1000" crc="9bec21c2" sha1="5f38cdc587091cb149364d20d508e800c860d82d" /> + </dataarea> + </part> + </software> + <software name="lasvegas"> <description>Las Vegas Gambling (Europe, US)</description> <year>1980</year> @@ -1825,7 +1878,7 @@ Official VP+ upgaded versions (simply adds a background picture): <part name="cart" interface="odyssey_cart"> <feature name="slot" value="o2_rom" /> <dataarea name="rom" size="0x1000"> - <rom name="jo_syracuse.bin" size="0x1000" crc="280d08f4" sha1="37aa11cbf0a32ece89d1d2c500b74660830377df" /> + <rom name="jo_vxt_a07.bin" size="0x1000" crc="280d08f4" sha1="37aa11cbf0a32ece89d1d2c500b74660830377df" /> </dataarea> </part> </software> @@ -1857,6 +1910,18 @@ Official VP+ upgaded versions (simply adds a background picture): </part> </software> + <software name="sherlock"><!-- board game --> + <description>The Adventures of Sherlock Holmes (US, prototype)</description> + <year>198?</year> + <publisher>Magnavox</publisher> + <part name="cart" interface="odyssey_cart"> + <feature name="slot" value="o2_rom" /> + <dataarea name="rom" size="0x2000"> + <rom name="pr_sherlock.bin" size="0x2000" crc="245dd6a5" sha1="3046caec84ea4b4b5c84ff7e3d1fd38231367f94" /> + </dataarea> + </part> + </software> + <software name="gtwallst"> <description>The Great Wall Street Fortune Hunt (Europe, US)</description> <year>1983</year> @@ -1907,7 +1972,7 @@ Official VP+ upgaded versions (simply adds a background picture): </part> </software> - <software name="quest"> + <software name="quest"><!-- board game --> <description>The Quest for the Rings (Europe, US)</description> <year>1981</year> <publisher>Philips</publisher> @@ -1921,7 +1986,7 @@ Official VP+ upgaded versions (simply adds a background picture): </part> </software> - <software name="laquete" cloneof="quest"> + <software name="laquete" cloneof="quest"><!-- board game --> <description>La Quête des Anneux (France)</description> <year>1982</year> <publisher>Radiola</publisher> @@ -2032,7 +2097,7 @@ Official VP+ upgaded versions (simply adds a background picture): <feature name="slot" value="o2_rom" /> <feature name="b_pin" value="1" /> <dataarea name="rom" size="0x2000"> - <rom name="jo_basket-bowling_pl.bin" size="0x2000" crc="b5fb1416" sha1="c341ed24346546b75de2ab24af1a9223ca2d1aac" /> + <rom name="jo_jfa_e03.bin" size="0x2000" crc="b5fb1416" sha1="c341ed24346546b75de2ab24af1a9223ca2d1aac" /> </dataarea> </part> </software> @@ -2060,7 +2125,7 @@ Official VP+ upgaded versions (simply adds a background picture): <feature name="slot" value="o2_rom" /> <feature name="b_pin" value="1" /> <dataarea name="rom" size="0x2000"> - <rom name="jo_billard_pl.bin" size="0x2000" crc="4cec1404" sha1="004ea921b691db6b310f5b51c495df9b86be3aa8" /> + <rom name="jo_jxa_d03.bin" size="0x2000" crc="4cec1404" sha1="004ea921b691db6b310f5b51c495df9b86be3aa8" /> </dataarea> </part> </software> @@ -2139,7 +2204,7 @@ Official VP+ upgaded versions (simply adds a background picture): <feature name="slot" value="o2_rom" /> <feature name="b_pin" value="1" /> <dataarea name="rom" size="0x2000"> - <rom name="jo_demon-attack_pl.bin" size="0x2000" crc="50af9d45" sha1="cfd1337c8d5a40f2f4e1ab49158a8963764919da" /> + <rom name="jo_jxt_c07.bin" size="0x2000" crc="50af9d45" sha1="cfd1337c8d5a40f2f4e1ab49158a8963764919da" /> </dataarea> </part> </software> @@ -2152,7 +2217,7 @@ Official VP+ upgaded versions (simply adds a background picture): <feature name="slot" value="o2_rom" /> <feature name="b_pin" value="1" /> <dataarea name="rom" size="0x2000"> - <rom name="jo_exojet_pl.bin" size="0x2000" crc="cfca6f39" sha1="8aafcd055a2ef45c3d85804c8a3ea04d9a9732ab" /> + <rom name="jo_jxt_c05.bin" size="0x2000" crc="cfca6f39" sha1="8aafcd055a2ef45c3d85804c8a3ea04d9a9732ab" /> </dataarea> </part> </software> @@ -2165,7 +2230,7 @@ Official VP+ upgaded versions (simply adds a background picture): <feature name="slot" value="o2_rom" /> <feature name="b_pin" value="1" /> <dataarea name="rom" size="0x2000"> - <rom name="jo_flipper_pl.bin" size="0x2000" crc="ac5c74e6" sha1="215439c1044b93888b71bd6a210ebfda93d97c22" /> + <rom name="jo_jfa_d01.bin" size="0x2000" crc="ac5c74e6" sha1="215439c1044b93888b71bd6a210ebfda93d97c22" /> </dataarea> </part> </software> @@ -2230,7 +2295,7 @@ Official VP+ upgaded versions (simply adds a background picture): <feature name="slot" value="o2_rom" /> <feature name="b_pin" value="1" /> <dataarea name="rom" size="0x2000"> - <rom name="jo_le-tresor-englouti_pl.bin" size="0x2000" crc="b2f0f0b4" sha1="c0fcaef6a18026e0acc04c3d48443d768043cb03" /> + <rom name="jo_jft_a10.bin" size="0x2000" crc="b2f0f0b4" sha1="c0fcaef6a18026e0acc04c3d48443d768043cb03" /> </dataarea> </part> </software> @@ -2399,7 +2464,7 @@ Official VP+ upgaded versions (simply adds a background picture): <feature name="slot" value="o2_rom" /> <feature name="b_pin" value="1" /> <dataarea name="rom" size="0x2000"> - <rom name="jo_moto-crash_pl.bin" size="0x2000" crc="68560dc7" sha1="f6de2f95e5cf4849a4d7071b1a470c3ef0634e5f" /> + <rom name="jo_jxt_e05.bin" size="0x2000" crc="68560dc7" sha1="f6de2f95e5cf4849a4d7071b1a470c3ef0634e5f" /> </dataarea> </part> </software> @@ -2436,8 +2501,21 @@ Official VP+ upgaded versions (simply adds a background picture): <!-- Odyssey³ prototypes, they won't work properly on European VP+ consoles --> + <software name="timelordpl" cloneof="timelord"> + <description>Attack of the Timelord! (US, plus, prototype)</description> + <year>1983</year> + <publisher>Philips</publisher> + <part name="cart" interface="odyssey_cart"> + <feature name="slot" value="o2_rom" /> + <feature name="b_pin" value="1" /> + <dataarea name="rom" size="0x2000"> + <rom name="o3_45.bin" size="0x2000" crc="5bbb30c8" sha1="29d999b9e7c59d16e5e68d833f28dbc86f062d1f" /> + </dataarea> + </part> + </software> + <software name="baseballpl" cloneof="baseball"> - <description>Baseball (US, plus, prototype)</description> + <description>Baseball! (US, plus, prototype)</description> <year>1983</year> <publisher>Philips</publisher> <part name="cart" interface="odyssey_cart"> @@ -2462,6 +2540,45 @@ Official VP+ upgaded versions (simply adds a background picture): </part> </software> + <software name="freedomplu" cloneof="freedom"> + <description>Freedom Fighters! (US, plus, prototype)</description> + <year>1983</year> + <publisher>Philips</publisher> + <part name="cart" interface="odyssey_cart"> + <feature name="slot" value="o2_rom" /> + <feature name="b_pin" value="1" /> + <dataarea name="rom" size="0x2000"> + <rom name="o3_36.bin" size="0x2000" crc="3150a9bf" sha1="e1f78160d273a19f4c322423bc28a566fa668e71" /> + </dataarea> + </part> + </software> + + <software name="beesplu" cloneof="bees"> + <description>Killer Bees! (US, plus, prototype)</description> + <year>1983</year> + <publisher>Philips</publisher> + <part name="cart" interface="odyssey_cart"> + <feature name="slot" value="o2_rom" /> + <feature name="b_pin" value="1" /> + <dataarea name="rom" size="0x2000"> + <rom name="o3_47.bin" size="0x2000" crc="3026e732" sha1="a944e7d6c5c8924dcbd9ef08e0f74b4bca1177c3" /> + </dataarea> + </part> + </software> + + <software name="terminal"> + <description>Terminal Program (US, prototype)</description> + <year>1983</year> + <publisher>Philips</publisher> + <part name="cart" interface="odyssey_cart"> + <feature name="slot" value="o2_rom" /> + <feature name="b_pin" value="1" /> + <dataarea name="rom" size="0x800"> + <rom name="o3_terminal.bin" size="0x800" crc="e5d2cf23" sha1="3e6e4f407a8f37636336029950acf7d46253e50a" /> + </dataarea> + </part> + </software> + <!-- Homebrew --> @@ -2492,7 +2609,6 @@ Official VP+ upgaded versions (simply adds a background picture): </part> </software> - <!-- NTSC Cartridge dumped from a 39SF010 flashrom (1MB) and actual data (2KB) data is repeated to fill space and matches publicly posted rom from author --> <software name="deathrac"> <description>Death Race (US)</description> <year>2014</year> @@ -2501,7 +2617,8 @@ Official VP+ upgaded versions (simply adds a background picture): <part name="cart" interface="odyssey_cart"> <feature name="slot" value="o2_rom" /> <dataarea name="rom" size="0x800"> - <rom name="drace_rc04.ntsc.bin" size="0x800" crc="91a767de" sha1="26a044c68ff08f574f6649b731b82caca8c0e797" /> + <!-- 39SF010 flashrom (1MB), actual data (2KB) is repeated to fill space and matches publicly posted rom from author --> + <rom name="drace_rc04_ntsc.bin" size="0x800" crc="91a767de" sha1="26a044c68ff08f574f6649b731b82caca8c0e797" /> </dataarea> </part> </software> @@ -2514,7 +2631,7 @@ Official VP+ upgaded versions (simply adds a background picture): <part name="cart" interface="odyssey_cart"> <feature name="slot" value="o2_rom" /> <dataarea name="rom" size="0x800"> - <rom name="drace_rc04.pal.bin" size="0x800" crc="0ca8c961" sha1="3918d6c2c324fba55e8b90acc8d38e540e4ec5c6" /> + <rom name="drace_rc04_pal.bin" size="0x800" crc="0ca8c961" sha1="3918d6c2c324fba55e8b90acc8d38e540e4ec5c6" /> </dataarea> </part> </software> diff --git a/src/devices/video/ef9340_1.cpp b/src/devices/video/ef9340_1.cpp index 39fe1b752c7..52e51f2bb70 100644 --- a/src/devices/video/ef9340_1.cpp +++ b/src/devices/video/ef9340_1.cpp @@ -16,7 +16,6 @@ This is implemented with a callback. The datasheet explains how to hook up TODO: - busy state (right now it is immediate) - internal display timing (on g7400, most of it is done externally) -- read slice from internal ROM - window boxing - Y zoom @@ -299,8 +298,8 @@ uint8_t ef9340_1_device::ef9341_read( uint8_t command, uint8_t b ) if (b >= 0xa0) m_ef9341.TA = m_read_exram(a << 12 | b << 4 | slice); - else - logerror("ef9341 read slice from internal\n"); + else if (slice < 10) + m_ef9341.TA = m_charset[(((a & 0x80) | (b & 0x7f)) * 10) + slice]; // Increment slice number m_ef9340.M = ( m_ef9340.M & 0xf0) | ( ( slice + 1 ) % 10 ); diff --git a/src/mame/drivers/odyssey2.cpp b/src/mame/drivers/odyssey2.cpp index f8da9a3ce8c..d7ae5c52a5a 100644 --- a/src/mame/drivers/odyssey2.cpp +++ b/src/mame/drivers/odyssey2.cpp @@ -78,8 +78,8 @@ TODO: - 4in1 and musician are not supposed to work on g7400, but work fine on MAME, caused by bus conflict or because they write to P2? - verify odyssey3 cpu/video clocks -- odyssey3 keyboard layout is not the same as g7400, but there is no software - to test the scancodes +- problems with natural keyboard: videopacp has two enter keys, odyssey3 has + alternate inputs for -, =, + - partial screen updates aren't shown when using MAME's debugger, this is caused by a forced full screen update and a reset_partial_updates in emu/video.cpp. For the same reason, collision detection also won't work properly when stepping @@ -167,10 +167,10 @@ private: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; -class videopacp_state : public odyssey2_state +class vpp_state : public odyssey2_state { public: - videopacp_state(const machine_config &mconfig, device_type type, const char *tag) : + vpp_state(const machine_config &mconfig, device_type type, const char *tag) : odyssey2_state(mconfig, type, tag), m_i8243(*this, "i8243"), m_ef934x(*this, "ef934x") @@ -214,7 +214,7 @@ void odyssey2_state::machine_start() save_item(NAME(m_p2)); } -void videopacp_state::machine_start() +void vpp_state::machine_start() { odyssey2_state::machine_start(); memset(m_ef934x_extram, 0, sizeof(m_ef934x_extram)); @@ -273,7 +273,7 @@ uint32_t odyssey2_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -uint32_t videopacp_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t vpp_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { u8 lum = ~m_p1 >> 4 & 0x08; bitmap_ind16 *ef934x_bitmap = m_ef934x->get_bitmap(); @@ -402,19 +402,19 @@ READ_LINE_MEMBER(odyssey2_state::t1_read) // G7400-specific -uint8_t videopacp_state::io_read(offs_t offset) +uint8_t vpp_state::io_read(offs_t offset) { u8 data = odyssey2_state::io_read(offset); return io_vpp(offset, data); } -void videopacp_state::io_write(offs_t offset, uint8_t data) +void vpp_state::io_write(offs_t offset, uint8_t data) { odyssey2_state::io_write(offset, data); io_vpp(offset, data); } -uint8_t videopacp_state::io_vpp(offs_t offset, uint8_t data) +uint8_t vpp_state::io_vpp(offs_t offset, uint8_t data) { if (!(m_p1 & 0x20)) { @@ -428,14 +428,14 @@ uint8_t videopacp_state::io_vpp(offs_t offset, uint8_t data) return data; } -void videopacp_state::p2_write(uint8_t data) +void vpp_state::p2_write(uint8_t data) { odyssey2_state::p2_write(data); m_i8243->p2_w(m_p2 & 0x0f); } template<int P> -void videopacp_state::i8243_port_w(uint8_t data) +void vpp_state::i8243_port_w(uint8_t data) { // P4,P5: color mix I8244 side (IC674) // P6,P7: color mix EF9340 side (IC678) @@ -457,7 +457,7 @@ void videopacp_state::i8243_port_w(uint8_t data) // EF9341 extended RAM -offs_t videopacp_state::ef934x_extram_address(offs_t offset) +offs_t vpp_state::ef934x_extram_address(offs_t offset) { u8 latch = (offset >> 12 & 0x80) | (offset >> 4 & 0x7f); u16 address = (latch & 0x1f) | (offset << 9 & 0x200) | (latch << 3 & 0x400); @@ -468,12 +468,12 @@ offs_t videopacp_state::ef934x_extram_address(offs_t offset) return address | (offset << 4 & 0x60) | (latch << 2 & 0x180); } -uint8_t videopacp_state::ef934x_extram_r(offs_t offset) +uint8_t vpp_state::ef934x_extram_r(offs_t offset) { return m_ef934x_extram[ef934x_extram_address(offset)]; } -void videopacp_state::ef934x_extram_w(offs_t offset, uint8_t data) +void vpp_state::ef934x_extram_w(offs_t offset, uint8_t data) { m_ef934x_extram[ef934x_extram_address(offset)] = data; } @@ -502,7 +502,7 @@ void odyssey2_state::odyssey2_io(address_map &map) Input Ports ******************************************************************************/ -static INPUT_PORTS_START( odyssey2 ) +static INPUT_PORTS_START( o2 ) PORT_START("KEY.0") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') @@ -589,8 +589,8 @@ static INPUT_PORTS_START( odyssey2 ) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, odyssey2_state, reset_button, 0) INPUT_PORTS_END -static INPUT_PORTS_START( g7400 ) - PORT_INCLUDE( odyssey2 ) +static INPUT_PORTS_START( vpp ) + PORT_INCLUDE( o2 ) PORT_MODIFY("KEY.0") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0 #") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('#') @@ -648,7 +648,7 @@ static INPUT_PORTS_START( g7400 ) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Enter _") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(10) PORT_CHAR('_') PORT_MODIFY("KEY.6") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ret") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(13) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ret") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(13) // clash with KEY.5 0x80 PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(": *") PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('*') PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("| @") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('|') PORT_CHAR('@') @@ -664,6 +664,42 @@ static INPUT_PORTS_START( g7400 ) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) INPUT_PORTS_END +static INPUT_PORTS_START( o3 ) + PORT_INCLUDE( vpp ) + + PORT_MODIFY("KEY.0") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0 )") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')') + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("2 @") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@') + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3 #") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6 ^") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^') + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7 &") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&') + + PORT_MODIFY("KEY.1") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8 *") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9 (") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') + + PORT_MODIFY("KEY.4") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') + + PORT_MODIFY("KEY.5") + 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_MODIFY("KEY.6") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("] }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("; :") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("- _") PORT_CODE(KEYCODE_PGDN) // clash with KEY.5 0x01 + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("' \"") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('\"') + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("= +") PORT_CODE(KEYCODE_PGUP) // clash with KEY.2 0x01 and KEY.5 0x08 + + PORT_MODIFY("KEY.7") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2) +INPUT_PORTS_END + /****************************************************************************** @@ -730,38 +766,38 @@ void odyssey2_state::videopacf(machine_config &config) } -void videopacp_state::g7400(machine_config &config) +void vpp_state::g7400(machine_config &config) { /* basic machine hardware */ I8048(config, m_maincpu, 5.911_MHz_XTAL); - m_maincpu->set_addrmap(AS_PROGRAM, &videopacp_state::odyssey2_mem); - m_maincpu->set_addrmap(AS_IO, &videopacp_state::odyssey2_io); - m_maincpu->p1_out_cb().set(FUNC(videopacp_state::p1_write)); - m_maincpu->p2_in_cb().set(FUNC(videopacp_state::p2_read)); - m_maincpu->p2_out_cb().set(FUNC(videopacp_state::p2_write)); - m_maincpu->bus_in_cb().set(FUNC(videopacp_state::bus_read)); + m_maincpu->set_addrmap(AS_PROGRAM, &vpp_state::odyssey2_mem); + m_maincpu->set_addrmap(AS_IO, &vpp_state::odyssey2_io); + m_maincpu->p1_out_cb().set(FUNC(vpp_state::p1_write)); + m_maincpu->p2_in_cb().set(FUNC(vpp_state::p2_read)); + m_maincpu->p2_out_cb().set(FUNC(vpp_state::p2_write)); + m_maincpu->bus_in_cb().set(FUNC(vpp_state::bus_read)); m_maincpu->t0_in_cb().set("cartslot", FUNC(o2_cart_slot_device::t0_read)); - m_maincpu->t1_in_cb().set(FUNC(videopacp_state::t1_read)); + m_maincpu->t1_in_cb().set(FUNC(vpp_state::t1_read)); m_maincpu->prog_out_cb().set(m_i8243, FUNC(i8243_device::prog_w)); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_screen_update(FUNC(videopacp_state::screen_update)); + m_screen->set_screen_update(FUNC(vpp_state::screen_update)); m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); m_screen->set_palette("palette"); PALETTE(config, "palette", m_i8244, FUNC(i8244_device::i8244_palette), 16); I8243(config, m_i8243); - m_i8243->p4_out_cb().set(FUNC(videopacp_state::i8243_port_w<0>)); - m_i8243->p5_out_cb().set(FUNC(videopacp_state::i8243_port_w<1>)); - m_i8243->p6_out_cb().set(FUNC(videopacp_state::i8243_port_w<2>)); - m_i8243->p7_out_cb().set(FUNC(videopacp_state::i8243_port_w<3>)); + m_i8243->p4_out_cb().set(FUNC(vpp_state::i8243_port_w<0>)); + m_i8243->p5_out_cb().set(FUNC(vpp_state::i8243_port_w<1>)); + m_i8243->p6_out_cb().set(FUNC(vpp_state::i8243_port_w<2>)); + m_i8243->p7_out_cb().set(FUNC(vpp_state::i8243_port_w<3>)); EF9340_1(config, m_ef934x, (8.867_MHz_XTAL * 2) / 5, "screen"); m_ef934x->set_offsets(15, 5); - m_ef934x->read_exram().set(FUNC(videopacp_state::ef934x_extram_r)); - m_ef934x->write_exram().set(FUNC(videopacp_state::ef934x_extram_w)); + m_ef934x->read_exram().set(FUNC(vpp_state::ef934x_extram_r)); + m_ef934x->write_exram().set(FUNC(vpp_state::ef934x_extram_w)); I8245(config, m_i8244, (8.867_MHz_XTAL * 2) / 5); m_i8244->set_screen("screen"); @@ -776,7 +812,7 @@ void videopacp_state::g7400(machine_config &config) SOFTWARE_LIST(config, "cart_list").set_original("videopac").set_filter("VPP"); } -void videopacp_state::jo7400(machine_config &config) +void vpp_state::jo7400(machine_config &config) { g7400(config); @@ -785,7 +821,7 @@ void videopacp_state::jo7400(machine_config &config) m_ef934x->set_clock(3.5625_MHz_XTAL); } -void videopacp_state::odyssey3(machine_config &config) +void vpp_state::odyssey3(machine_config &config) { g7400(config); @@ -815,33 +851,33 @@ void videopacp_state::odyssey3(machine_config &config) ROM_START (videopac) ROM_REGION(0x0400,"maincpu",0) - ROM_LOAD ("o2bios.rom", 0x0000, 0x0400, CRC(8016a315) SHA1(b2e1955d957a475de2411770452eff4ea19f4cee)) + ROM_LOAD("o2bios.rom", 0x0000, 0x0400, CRC(8016a315) SHA1(b2e1955d957a475de2411770452eff4ea19f4cee)) ROM_END ROM_START (odyssey2) ROM_REGION(0x0400,"maincpu",0) - ROM_LOAD ("o2bios.rom", 0x0000, 0x0400, CRC(8016a315) SHA1(b2e1955d957a475de2411770452eff4ea19f4cee)) + ROM_LOAD("o2bios.rom", 0x0000, 0x0400, CRC(8016a315) SHA1(b2e1955d957a475de2411770452eff4ea19f4cee)) ROM_END ROM_START (videopacf) ROM_REGION(0x0400,"maincpu",0) - ROM_LOAD ("c52.rom", 0x0000, 0x0400, CRC(a318e8d6) SHA1(a6120aed50831c9c0d95dbdf707820f601d9452e)) + ROM_LOAD("c52.rom", 0x0000, 0x0400, CRC(a318e8d6) SHA1(a6120aed50831c9c0d95dbdf707820f601d9452e)) ROM_END ROM_START (videopacp) ROM_REGION(0x0400,"maincpu",0) - ROM_LOAD ("g7400.bin", 0x0000, 0x0400, CRC(e20a9f41) SHA1(5130243429b40b01a14e1304d0394b8459a6fbae)) + ROM_LOAD("g7400.bin", 0x0000, 0x0400, CRC(e20a9f41) SHA1(5130243429b40b01a14e1304d0394b8459a6fbae)) ROM_END ROM_START (jopac) ROM_REGION(0x0400,"maincpu",0) - ROM_LOAD ("jopac.bin", 0x0000, 0x0400, CRC(11647ca5) SHA1(54b8d2c1317628de51a85fc1c424423a986775e4)) + ROM_LOAD("jopac.bin", 0x0000, 0x0400, CRC(11647ca5) SHA1(54b8d2c1317628de51a85fc1c424423a986775e4)) ROM_END ROM_START (odyssey3) ROM_REGION(0x0400, "maincpu", 0) - ROM_LOAD ("odyssey3.bin", 0x0000, 0x0400, CRC(e2b23324) SHA1(0a38c5f2cea929d2fe0a23e5e1a60de9155815dc)) + ROM_LOAD("odyssey3.bin", 0x0000, 0x0400, CRC(e2b23324) SHA1(0a38c5f2cea929d2fe0a23e5e1a60de9155815dc)) ROM_END } // anonymous namespace @@ -852,11 +888,11 @@ ROM_END Drivers ******************************************************************************/ -// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS -COMP( 1978, videopac, 0, 0, videopac, odyssey2, odyssey2_state, empty_init, "Philips", "Videopac G7000 (Europe)", MACHINE_SUPPORTS_SAVE ) -COMP( 1979, videopacf, videopac, 0, videopacf, odyssey2, odyssey2_state, empty_init, "Philips", "Videopac C52 (France)", MACHINE_SUPPORTS_SAVE ) -COMP( 1979, odyssey2, videopac, 0, odyssey2, odyssey2, odyssey2_state, empty_init, "Magnavox", "Odyssey 2 (US)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +COMP( 1978, videopac, 0, 0, videopac, o2, odyssey2_state, empty_init, "Philips", "Videopac G7000 (Europe)", MACHINE_SUPPORTS_SAVE ) +COMP( 1979, videopacf, videopac, 0, videopacf, o2, odyssey2_state, empty_init, "Philips", "Videopac C52 (France)", MACHINE_SUPPORTS_SAVE ) +COMP( 1979, odyssey2, videopac, 0, odyssey2, o2, odyssey2_state, empty_init, "Magnavox", "Odyssey 2 (US)", MACHINE_SUPPORTS_SAVE ) -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, "Philips", "Odyssey 3 Command Center (US, prototype)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, videopacp, 0, 0, g7400, vpp, vpp_state, empty_init, "Philips", "Videopac+ G7400 (Europe)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, jopac, videopacp, 0, jo7400, vpp, vpp_state, empty_init, "Philips (Brandt license)", "Jopac JO7400 (France)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, odyssey3, videopacp, 0, odyssey3, o3, vpp_state, empty_init, "Philips", "Odyssey 3 Command Center (US, prototype)", MACHINE_SUPPORTS_SAVE ) |