mirror of
https://github.com/holub/mame
synced 2025-04-25 01:40:16 +03:00
fidel6502: added CSC foreign language sets
This commit is contained in:
parent
f1bd6127a4
commit
b8307512e3
@ -149,12 +149,9 @@ READ8_MEMBER(fidel6502_state::csc_pia0_pb_r)
|
||||
data |= 0x08;
|
||||
|
||||
// d5: button row 8 (active low)
|
||||
if (!(read_inputs(9) & 0x100))
|
||||
data |= 0x20;
|
||||
|
||||
// d6,d7: language switches
|
||||
data|=0xc0;
|
||||
|
||||
data |= (~read_inputs(9) >> 3 & 0x20) | (m_inp_matrix[9]->read() << 6 & 0xc0);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@ -327,7 +324,7 @@ static INPUT_PORTS_START( csc )
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speak") PORT_CODE(KEYCODE_SPACE)
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speak") PORT_CODE(KEYCODE_SPACE)
|
||||
|
||||
PORT_START("IN.1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
@ -338,7 +335,7 @@ static INPUT_PORTS_START( csc )
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RV") PORT_CODE(KEYCODE_V)
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RV") PORT_CODE(KEYCODE_V)
|
||||
|
||||
PORT_START("IN.2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
@ -349,7 +346,7 @@ static INPUT_PORTS_START( csc )
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TM") PORT_CODE(KEYCODE_T)
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TM") PORT_CODE(KEYCODE_T)
|
||||
|
||||
PORT_START("IN.3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
@ -360,7 +357,7 @@ static INPUT_PORTS_START( csc )
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
|
||||
|
||||
PORT_START("IN.4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
@ -371,7 +368,7 @@ static INPUT_PORTS_START( csc )
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
|
||||
|
||||
PORT_START("IN.5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
@ -382,7 +379,7 @@ static INPUT_PORTS_START( csc )
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S)
|
||||
|
||||
PORT_START("IN.6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
@ -393,7 +390,7 @@ static INPUT_PORTS_START( csc )
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("IN.7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
@ -404,7 +401,7 @@ static INPUT_PORTS_START( csc )
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
|
||||
PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("IN.8")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Pawn") PORT_CODE(KEYCODE_1)
|
||||
@ -415,7 +412,14 @@ static INPUT_PORTS_START( csc )
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King") PORT_CODE(KEYCODE_6)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_UNUSED) PORT_UNUSED
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("IN.9") // hardwired
|
||||
PORT_CONFNAME( 0x03, 0x03, "Language" )
|
||||
PORT_CONFSETTING( 0x03, "English" )
|
||||
PORT_CONFSETTING( 0x02, "2" ) // todo..
|
||||
PORT_CONFSETTING( 0x01, "1" )
|
||||
PORT_CONFSETTING( 0x00, "0" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( sc12 )
|
||||
@ -574,15 +578,17 @@ static MACHINE_CONFIG_START( sc12, fidel6502_state )
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fidel_scc")
|
||||
MCFG_GENERIC_EXTENSIONS("bin,dat")
|
||||
MCFG_GENERIC_LOAD(fidel6502_state, scc_cartridge)
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( fev, fidel6502_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M65SC02, XTAL_12MHz/4) // G65SC102
|
||||
MCFG_CPU_ADD("maincpu", M65SC02, XTAL_12MHz/4) // G65SC102P-3, 12.0M ceramic resonator
|
||||
MCFG_CPU_PROGRAM_MAP(fev_map)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(780)) // from 556 timer, PCB photo suggests it's same as sc12
|
||||
MCFG_TIMER_START_DELAY(attotime::from_hz(780) - attotime::from_nsec(15250)) // active for 15.25us
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(780))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_fidel_fev)
|
||||
@ -613,6 +619,43 @@ ROM_START( csc )
|
||||
ROM_RELOAD( 0x1000, 0x1000)
|
||||
ROM_END
|
||||
|
||||
ROM_START( cscsp )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
|
||||
ROM_LOAD("1025a03.bin", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
|
||||
ROM_LOAD("1025a02.bin", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
|
||||
ROM_LOAD("1025a01.bin", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
|
||||
ROM_LOAD("74s474.bin", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
|
||||
|
||||
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( cscg )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
|
||||
ROM_LOAD("1025a03.bin", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
|
||||
ROM_LOAD("1025a02.bin", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
|
||||
ROM_LOAD("1025a01.bin", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
|
||||
ROM_LOAD("74s474.bin", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
|
||||
|
||||
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( cscfr )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
|
||||
ROM_LOAD("1025a03.bin", 0xa000, 0x2000, CRC(63982c07) SHA1(5ed4356323d5c80df216da55994abe94ba4aa94c) )
|
||||
ROM_LOAD("1025a02.bin", 0xc000, 0x2000, CRC(9e6e7c69) SHA1(4f1ed9141b6596f4d2b1217d7a4ba48229f3f1b0) )
|
||||
ROM_LOAD("1025a01.bin", 0xe000, 0x2000, CRC(57f068c3) SHA1(7d2ac4b9a2fba19556782863bdd89e2d2d94e97b) )
|
||||
ROM_LOAD("74s474.bin", 0xfe00, 0x0200, CRC(4511ba31) SHA1(e275b1739f8c3aa445cccb6a2b597475f507e456) )
|
||||
|
||||
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
|
||||
|
||||
|
||||
ROM_START( fscc12 )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD("101-1068a01", 0x8000, 0x2000, CRC(63c76cdd) SHA1(e0771c98d4483a6b1620791cb99a7e46b0db95c4) ) // SSS SCM23C65E4
|
||||
@ -632,9 +675,12 @@ ROM_END
|
||||
Drivers
|
||||
******************************************************************************/
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
|
||||
COMP( 1981, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
|
||||
COMP( 1981, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (English)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
COMP( 1981, cscsp, csc, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (Spanish)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
COMP( 1981, cscg, csc, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (German)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
COMP( 1981, cscfr, csc, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (French)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
COMP( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
COMP( 1987, fexcelv, 0, 0, fev, csc, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
COMP( 1987, fexcelv, 0, 0, fev, csc, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -1082,29 +1082,25 @@ READ8_MEMBER(fidelz80_state::vsc_pio_porta_r)
|
||||
{
|
||||
// d0-d7: multiplexed inputs
|
||||
return read_inputs(11);
|
||||
|
||||
}
|
||||
|
||||
READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
UINT8 data = 0;
|
||||
|
||||
// d4: TSI BUSY line
|
||||
ret |= (m_speech->busy_r()) ? 0 : 0x10;
|
||||
data |= (m_speech->busy_r()) ? 0 : 0x10;
|
||||
|
||||
return ret;
|
||||
return data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(fidelz80_state::vsc_pio_portb_w)
|
||||
{
|
||||
// d0,d1: input mux highest bits
|
||||
// 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());
|
||||
m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x300) | (data << 5 & 0x400);
|
||||
|
||||
// d7: TSI ROM A12
|
||||
|
||||
m_speech->force_update(); // update stream to now
|
||||
m_speech_bank = data >> 7 & 1;
|
||||
|
||||
@ -1209,13 +1205,13 @@ ADDRESS_MAP_END
|
||||
// VSC io: A2 is 8255 _CE, A3 is Z80 PIO _CE - in theory, both chips can be accessed simultaneously
|
||||
READ8_MEMBER(fidelz80_state::vsc_io_trampoline_r)
|
||||
{
|
||||
UINT8 ret = 0xff; // open bus
|
||||
UINT8 data = 0xff; // open bus
|
||||
if (~offset & 4)
|
||||
ret &= m_ppi8255->read(space, offset & 3);
|
||||
data &= m_ppi8255->read(space, offset & 3);
|
||||
if (~offset & 8)
|
||||
ret &= m_z80pio->read(space, offset & 3);
|
||||
data &= m_z80pio->read(space, offset & 3);
|
||||
|
||||
return ret;
|
||||
return data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(fidelz80_state::vsc_io_trampoline_w)
|
||||
@ -1309,8 +1305,8 @@ static INPUT_PORTS_START( cc10 )
|
||||
|
||||
PORT_START("LEVEL") // hardwired (VCC/GND?)
|
||||
PORT_CONFNAME( 0x80, 0x00, "Maximum Levels" )
|
||||
PORT_CONFSETTING( 0x00, "10" ) // factory setting
|
||||
PORT_CONFSETTING( 0x80, "3" )
|
||||
PORT_CONFSETTING( 0x00, "10" ) // factory setting
|
||||
PORT_CONFSETTING( 0x80, "3" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( vcc )
|
||||
@ -1461,10 +1457,10 @@ static INPUT_PORTS_START( vsc )
|
||||
|
||||
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" )
|
||||
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 )
|
||||
|
@ -2142,21 +2142,25 @@ diablo68 // 1991 Novag Diablo 68000 Chess Computer
|
||||
|
||||
// Fidelity
|
||||
cc10
|
||||
vcc
|
||||
vccg
|
||||
vccfr
|
||||
vccsp
|
||||
uvc
|
||||
uvcg
|
||||
uvcfr
|
||||
uvcsp
|
||||
bridgec3
|
||||
vcc // VCC: Voice Chess Challenger (English)
|
||||
vccg // * Spanish
|
||||
vccfr // * German
|
||||
vccsp // * French
|
||||
uvc // UVC: Advanced Voice Chess Challenger (English)
|
||||
uvcsp // * Spanish
|
||||
uvcg // * German
|
||||
uvcfr // * French
|
||||
vsc // VSC: Voice Sensory Chess Challenger (English)
|
||||
vscsp // * Spanish
|
||||
vscg // * German
|
||||
vscfr // * French
|
||||
vbrc
|
||||
vsc
|
||||
vscg
|
||||
vscfr
|
||||
vscsp
|
||||
csc
|
||||
bridgec3
|
||||
|
||||
csc // CSC: Champion Sensory Chess Challenger (English)
|
||||
cscsp // * Spanish
|
||||
cscg // * German
|
||||
cscfr // * French
|
||||
fscc12
|
||||
fexcelv
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user