summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2020-09-28 18:39:08 +0200
committer hap <happppp@users.noreply.github.com>2020-09-28 18:39:30 +0200
commit03216ce4d152483dab2fa5e20d493c2d4ea39789 (patch)
tree872f004f626f279880ce7eb05ccae4e48c81197f
parent84d4b2ab676f9a847885d9e358750a1bb8444662 (diff)
New working software list additions
----------------------------------- videopac: Killer Bees! (US, prototype, set 1), Killer Bees! (US, prototype, set 2), Killer Bees! (US, plus, prototype), Des Chiffres et des Lettres (France), Freedom Fighters! (US, plus, prototype), Linguaduc (Europe, prototype), The Adventures of Sherlock Holmes (US, prototype), Sound Tool (Europe), Terminal Program (US, prototype), Attack of the Timelord! (US, plus, prototype) [René van den Enden (Rene_G7400)]
-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 )