summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2016-01-28 22:05:17 +0100
committer hap <happppp@users.noreply.github.com>2016-01-28 22:05:35 +0100
commitb0cc7ab9e0985bf80cffad27fcd67f383573b688 (patch)
tree9024b1cb60db95e7cba76b13c2b2630d5271abdc
parent681a5e48fe687ca61e2b0393a78ee87c6c8ffcef (diff)
fidelz80: added VSC foreign language sets
-rw-r--r--src/mame/drivers/fidelz80.cpp91
-rw-r--r--src/mame/includes/fidelz80.h2
-rw-r--r--src/mame/mess.lst3
3 files changed, 75 insertions, 21 deletions
diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp
index 5f85a1e49a4..71f36d55537 100644
--- a/src/mame/drivers/fidelz80.cpp
+++ b/src/mame/drivers/fidelz80.cpp
@@ -598,7 +598,7 @@ PB.3 - violet wire
PB.4 - white wire (and TSI BUSY line)
PB.5 - selection jumper input (see below)
PB.6 - TSI start line
-PB.7 - TSI ROM D0 line
+PB.7 - TSI ROM A12 line
selection jumpers:
@@ -1070,7 +1070,7 @@ WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w)
{
// d0-d3: select digits
// d0-d7: select leds, input mux low bits
- m_inp_mux = (m_inp_mux & 0x300) | data;
+ m_inp_mux = (m_inp_mux & ~0xff) | data;
m_led_select = data;
vsc_prepare_display();
}
@@ -1081,7 +1081,8 @@ WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w)
READ8_MEMBER(fidelz80_state::vsc_pio_porta_r)
{
// d0-d7: multiplexed inputs
- return read_inputs(10);
+ return read_inputs(11);
+
}
READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
@@ -1090,18 +1091,26 @@ READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
// d4: TSI BUSY line
ret |= (m_speech->busy_r()) ? 0 : 0x10;
-
+
return ret;
}
WRITE8_MEMBER(fidelz80_state::vsc_pio_portb_w)
{
// d0,d1: input mux highest bits
- m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x300);
-
+ // d5: enable language switch
+ m_inp_mux = (m_inp_mux & ~0x700) | (data << 8 & 0x300) | (data << 5 & 0x400);
+
+ //if (m_inp_mux & 0x400) debugger_break(machine());
+
+ // d7: TSI ROM A12
+
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = data >> 7 & 1;
+
// d6: TSI START line
m_speech->start_w(data >> 6 & 1);
-
+
// d2: lower TSI volume
m_speech->set_output_gain(0, (data & 4) ? 0.5 : 1.0);
}
@@ -1298,26 +1307,26 @@ static INPUT_PORTS_START( cc10 )
PORT_START("IN.4")
PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_START("LEVEL") // factory setting
- PORT_CONFNAME( 0x80, 0x00, "PPI.B.7: Maximum Levels" )
- PORT_CONFSETTING( 0x00, "10" )
+ PORT_START("LEVEL") // hardwired (VCC/GND?)
+ PORT_CONFNAME( 0x80, 0x00, "Maximum Levels" )
+ PORT_CONFSETTING( 0x00, "10" ) // factory setting
PORT_CONFSETTING( 0x80, "3" )
INPUT_PORTS_END
static INPUT_PORTS_START( vcc )
PORT_INCLUDE( vcc_base )
- PORT_START("IN.4") // not consumer accessible
- PORT_CONFNAME( 0x01, 0x00, "PCB Jumper: French" )
+ PORT_START("IN.4") // PCB jumpers, not consumer accessible
+ PORT_CONFNAME( 0x01, 0x00, "Language: French" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x01, DEF_STR( On ) )
- PORT_CONFNAME( 0x02, 0x00, "PCB Jumper: Spanish" )
+ PORT_CONFNAME( 0x02, 0x00, "Language: Spanish" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x02, DEF_STR( On ) )
- PORT_CONFNAME( 0x04, 0x00, "PCB Jumper: German" )
+ PORT_CONFNAME( 0x04, 0x00, "Language: German" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x04, DEF_STR( On ) )
- PORT_CONFNAME( 0x08, 0x00, "PCB Jumper: Special" )
+ PORT_CONFNAME( 0x08, 0x00, "Language: Special" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x08, DEF_STR( On ) )
INPUT_PORTS_END
@@ -1326,7 +1335,7 @@ static INPUT_PORTS_START( vccfr )
PORT_INCLUDE( vcc )
PORT_MODIFY("IN.4")
- PORT_CONFNAME( 0x01, 0x01, "PCB Jumper: French" )
+ PORT_CONFNAME( 0x01, 0x01, "Language: French" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x01, DEF_STR( On ) )
INPUT_PORTS_END
@@ -1335,7 +1344,7 @@ static INPUT_PORTS_START( vccsp )
PORT_INCLUDE( vcc )
PORT_MODIFY("IN.4")
- PORT_CONFNAME( 0x02, 0x02, "PCB Jumper: Spanish" )
+ PORT_CONFNAME( 0x02, 0x02, "Language: Spanish" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x02, DEF_STR( On ) )
INPUT_PORTS_END
@@ -1344,7 +1353,7 @@ static INPUT_PORTS_START( vccg )
PORT_INCLUDE( vcc )
PORT_MODIFY("IN.4")
- PORT_CONFNAME( 0x04, 0x04, "PCB Jumper: German" )
+ PORT_CONFNAME( 0x04, 0x04, "Language: German" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x04, DEF_STR( On ) )
INPUT_PORTS_END
@@ -1449,6 +1458,13 @@ static INPUT_PORTS_START( vsc )
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S)
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("IN.10") // hardwired (2 diodes)
+ PORT_CONFNAME( 0x03, 0x00, "Language" )
+ PORT_CONFSETTING( 0x00, "English" )
+ PORT_CONFSETTING( 0x01, "1" ) // todo: game dasm says it checks against 0/not0, 2, 3.. which language is which?
+ PORT_CONFSETTING( 0x02, "2" )
+ PORT_CONFSETTING( 0x03, "3" )
INPUT_PORTS_END
static INPUT_PORTS_START( vbrc )
@@ -1582,6 +1598,7 @@ static MACHINE_CONFIG_START( vsc, fidelz80_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
+ MCFG_S14001A_EXT_READ_HANDLER(READ8(fidelz80_state, vcc_speech_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END
@@ -1705,8 +1722,39 @@ ROM_START( vsc )
ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
- ROM_REGION( 0x1000, "speech", 0 )
+ ROM_REGION( 0x2000, "speech", 0 )
ROM_LOAD("101-32107.bin", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) )
+ ROM_RELOAD( 0x1000, 0x1000)
+ROM_END
+
+ROM_START( vscsp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-spanish.bin", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
+ROM_END
+
+ROM_START( vscg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-german.bin", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
+ROM_END
+
+ROM_START( vscfr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
+ ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
+ ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-french.bin", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
ROM_END
@@ -1757,7 +1805,10 @@ COMP( 1980, uvcsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fideli
COMP( 1980, uvcg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
COMP( 1980, uvcfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1980, vscsp, vsc, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1980, vscg, vsc, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
+COMP( 1980, vscfr, vsc, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
COMP( 1979, vbrc, 0, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
COMP( 1980, bridgec3, vbrc, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
diff --git a/src/mame/includes/fidelz80.h b/src/mame/includes/fidelz80.h
index c9aea6bafc4..a27f4e7aabc 100644
--- a/src/mame/includes/fidelz80.h
+++ b/src/mame/includes/fidelz80.h
@@ -25,7 +25,7 @@ public:
// devices/pointers
required_device<cpu_device> m_maincpu;
- optional_ioport_array<10> m_inp_matrix; // max 10
+ optional_ioport_array<11> m_inp_matrix; // max 11
optional_device<s14001a_device> m_speech;
optional_region_ptr<UINT8> m_speech_rom;
diff --git a/src/mame/mess.lst b/src/mame/mess.lst
index 8bcee333384..b98dc063fd4 100644
--- a/src/mame/mess.lst
+++ b/src/mame/mess.lst
@@ -2153,6 +2153,9 @@ uvcsp
bridgec3
vbrc
vsc
+vscg
+vscfr
+vscsp
csc
fscc12
fexcelv