fidelz80: added VSC foreign language sets

This commit is contained in:
hap 2016-01-28 22:05:17 +01:00
parent 681a5e48fe
commit b0cc7ab9e0
3 changed files with 75 additions and 21 deletions

View File

@ -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 )

View File

@ -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;

View File

@ -2153,6 +2153,9 @@ uvcsp
bridgec3
vbrc
vsc
vscg
vscfr
vscsp
csc
fscc12
fexcelv