summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--hash/videopac.xml171
-rw-r--r--src/devices/video/ef9340_1.cpp5
-rw-r--r--src/mame/drivers/odyssey2.cpp132
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 )