New working clones

------------------
Elegance Chess Challenger (model AS12, set 1) [Berger]
This commit is contained in:
hap 2022-09-14 17:26:53 +02:00
parent 689aeea1ab
commit 81e5abf052
4 changed files with 93 additions and 40 deletions

View File

@ -5,14 +5,23 @@
Fidelity Elegance Chess Challenger (AS12/6085) Fidelity Elegance Chess Challenger (AS12/6085)
Hardware notes: Hardware notes (AS12):
- R65C02P4 CPU @ 3/3.57/4MHz - PCB label 510-1083A01
- 3*8KB ROM(TMM2764), 2*2KB RAM(HM6116) - R65C02P3 @ 3/3.57MHz (apparently the first few had a 3MHz CPU)
- 2*8KB ROM + 1*4KB ROM, 2*2KB RAM(HM6116)
Hardware notes (6085):
- PCB label 510-1084B01 - PCB label 510-1084B01
- R65C02P4 @ 4MHz
- 3*8KB ROM(TMM2764), 2*2KB RAM(HM6116)
This is on the SC12B board, with enough modifications to support more leds and This is on the SC12B board, with enough modifications to support more leds and
magnetic chess board sensors. See sc12.cpp for a more technical description. magnetic chess board sensors. See sc12.cpp for a more technical description.
TODO:
- is the initial AS12 3MHz version the same ROM as felega1? When it's configured
at 3MHz and the CPU divider set to 2, the pace is the same as fscc12a.
******************************************************************************/ ******************************************************************************/
#include "emu.h" #include "emu.h"
@ -194,9 +203,9 @@ static INPUT_PORTS_START( feleg )
PORT_START("FAKE") PORT_START("FAKE")
PORT_CONFNAME( 0x03, 0x02, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, as12_state, switch_cpu_freq, 0) // factory set PORT_CONFNAME( 0x03, 0x02, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, as12_state, switch_cpu_freq, 0) // factory set
PORT_CONFSETTING( 0x00, "3MHz" ) PORT_CONFSETTING( 0x00, "3MHz (original)" )
PORT_CONFSETTING( 0x01, "3.57MHz" ) PORT_CONFSETTING( 0x01, "3.57MHz (AS12)" )
PORT_CONFSETTING( 0x02, "4MHz" ) PORT_CONFSETTING( 0x02, "4MHz (6085)" )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( felega ) static INPUT_PORTS_START( felega )
@ -204,9 +213,9 @@ static INPUT_PORTS_START( felega )
PORT_MODIFY("FAKE") // default to 3.57MHz PORT_MODIFY("FAKE") // default to 3.57MHz
PORT_CONFNAME( 0x03, 0x01, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, as12_state, switch_cpu_freq, 0) // factory set PORT_CONFNAME( 0x03, 0x01, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, as12_state, switch_cpu_freq, 0) // factory set
PORT_CONFSETTING( 0x00, "3MHz" ) PORT_CONFSETTING( 0x00, "3MHz (original)" )
PORT_CONFSETTING( 0x01, "3.57MHz" ) PORT_CONFSETTING( 0x01, "3.57MHz (AS12)" )
PORT_CONFSETTING( 0x02, "4MHz" ) PORT_CONFSETTING( 0x02, "4MHz (6085)" )
INPUT_PORTS_END INPUT_PORTS_END
@ -217,7 +226,7 @@ INPUT_PORTS_END
void as12_state::feleg(machine_config &config) void as12_state::feleg(machine_config &config)
{ {
/* basic machine hardware */ // basic machine hardware
R65C02(config, m_maincpu, 4_MHz_XTAL); // R65C02P4 R65C02(config, m_maincpu, 4_MHz_XTAL); // R65C02P4
m_maincpu->set_addrmap(AS_PROGRAM, &as12_state::main_map); m_maincpu->set_addrmap(AS_PROGRAM, &as12_state::main_map);
@ -229,15 +238,15 @@ void as12_state::feleg(machine_config &config)
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
m_board->set_delay(attotime::from_msec(150)); m_board->set_delay(attotime::from_msec(150));
/* video hardware */ // video hardware
PWM_DISPLAY(config, m_display).set_size(9, 8); PWM_DISPLAY(config, m_display).set_size(9, 8);
config.set_default_layout(layout_fidel_as12); config.set_default_layout(layout_fidel_as12);
/* sound hardware */ // sound hardware
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25); DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
/* cartridge */ // cartridge
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc"); GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc");
SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc"); SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
} }
@ -246,8 +255,8 @@ void as12_state::felega(machine_config &config)
{ {
feleg(config); feleg(config);
/* basic machine hardware */ // basic machine hardware
m_maincpu->set_clock(3.579545_MHz_XTAL); m_maincpu->set_clock(3.579545_MHz_XTAL); // R65C02P3
} }
@ -264,11 +273,18 @@ ROM_START( feleg ) // model 6085
ROM_LOAD("feleg.e000", 0xe000, 0x2000, CRC(b1fb49aa) SHA1(d8c9687dd564f0fa603e6d684effb1d113ac64b4) ) // " ROM_LOAD("feleg.e000", 0xe000, 0x2000, CRC(b1fb49aa) SHA1(d8c9687dd564f0fa603e6d684effb1d113ac64b4) ) // "
ROM_END ROM_END
ROM_START( felega ) // model AS12 ROM_START( felega ) // model AS12, serial 427921xx
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("blue.8000", 0x8000, 0x2000, CRC(2e07e657) SHA1(3238f21bdbf2277851e5a32e18c043e654123f00) ) // M5L2764K-2 ROM_LOAD("blue.8000", 0x8000, 0x2000, CRC(2e07e657) SHA1(3238f21bdbf2277851e5a32e18c043e654123f00) ) // M5L2764K-2
ROM_LOAD("yellow.c000", 0xc000, 0x1000, CRC(fcc48302) SHA1(f60d34229721e8659e9f81c267177daec7723d8f) ) // TMS2732AJL-45 ROM_LOAD("green.c000", 0xc000, 0x1000, CRC(fcc48302) SHA1(f60d34229721e8659e9f81c267177daec7723d8f) ) // TMS2732AJL-45
ROM_LOAD("black.e000", 0xe000, 0x2000, CRC(9142121b) SHA1(264380e7ad36b7b1867658e1af387624d2a72630) ) // TMS2764JL-25 ROM_LOAD("black.e000", 0xe000, 0x2000, CRC(b7c55d19) SHA1(45df961c2c3a1e9c8ec79efb7a1a82500425df2f) ) // TMS2764JL-25
ROM_END
ROM_START( felega1 ) // model AS12, serial 427917xx
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("blue.8000", 0x8000, 0x2000, CRC(2e07e657) SHA1(3238f21bdbf2277851e5a32e18c043e654123f00) ) // M5L2764K-2
ROM_LOAD("green.c000", 0xc000, 0x1000, CRC(fcc48302) SHA1(f60d34229721e8659e9f81c267177daec7723d8f) ) // TMS2732AJL-45
ROM_LOAD("black.e000", 0xe000, 0x2000, CRC(9142121b) SHA1(264380e7ad36b7b1867658e1af387624d2a72630) ) // TMS2764JL-25
ROM_END ROM_END
} // anonymous namespace } // anonymous namespace
@ -279,6 +295,7 @@ ROM_END
Drivers Drivers
******************************************************************************/ ******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS // YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
CONS( 1986, feleg, 0, 0, feleg, feleg, as12_state, empty_init, "Fidelity Electronics", "Elegance Chess Challenger (model 6085)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING ) CONS( 1986, feleg, 0, 0, feleg, feleg, as12_state, empty_init, "Fidelity Electronics", "Elegance Chess Challenger (model 6085)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )
CONS( 1985, felega, feleg, 0, felega, felega, as12_state, empty_init, "Fidelity Electronics", "Elegance Chess Challenger (model AS12)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING ) CONS( 1984, felega, feleg, 0, felega, felega, as12_state, empty_init, "Fidelity Electronics", "Elegance Chess Challenger (model AS12, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )
CONS( 1984, felega1, feleg, 0, felega, felega, as12_state, empty_init, "Fidelity Electronics", "Elegance Chess Challenger (model AS12, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )

View File

@ -3,7 +3,7 @@
// thanks-to:Berger, yoyo_chessboard // thanks-to:Berger, yoyo_chessboard
/****************************************************************************** /******************************************************************************
Fidelity Sensory 12 Chess Challenger (SC12, 6086) Fidelity Sensory 12 Chess Challenger (SC12, SE12, 6086)
------------------------------------ ------------------------------------
RE information from netlist by Berger RE information from netlist by Berger
@ -12,6 +12,8 @@ DIN 41524C printer port
36-pin edge connector 36-pin edge connector
CPU is a R65C02P4, running at 4MHz* CPU is a R65C02P4, running at 4MHz*
Model SC12 is 3MHz, model SE12 3.57MHz, model 6086 4MHz.
*By default, the CPU frequency is lowered on A13/A14 access, with a factory-set jumper: *By default, the CPU frequency is lowered on A13/A14 access, with a factory-set jumper:
/2 on model SC12(1.5MHz), /4 on model 6086(1MHz) /2 on model SC12(1.5MHz), /4 on model 6086(1MHz)
@ -42,6 +44,9 @@ Q6,Q7: LEDs common anode
The keypad is read through a 74HC251, where S0,1,2 is from CPU A0,1,2, Y is connected to CPU D7. The keypad is read through a 74HC251, where S0,1,2 is from CPU A0,1,2, Y is connected to CPU D7.
If control Q4 is set, printer data can be read from I0. If control Q4 is set, printer data can be read from I0.
TODO:
- is SE12 program the same as SC12? just a faster CPU, and probably /4 divider?
******************************************************************************/ ******************************************************************************/
#include "emu.h" #include "emu.h"
@ -81,8 +86,12 @@ public:
void sc12(machine_config &config); void sc12(machine_config &config);
void sc12b(machine_config &config); void sc12b(machine_config &config);
DECLARE_INPUT_CHANGED_MEMBER(switch_cpu_freq) { set_cpu_freq(); }
protected: protected:
virtual void machine_start() override; virtual void machine_start() override;
virtual void machine_reset() override;
void set_cpu_freq();
private: private:
// devices/pointers // devices/pointers
@ -109,6 +118,20 @@ void sc12_state::machine_start()
save_item(NAME(m_inp_mux)); save_item(NAME(m_inp_mux));
} }
void sc12_state::machine_reset()
{
set_cpu_freq();
fidel_clockdiv_state::machine_reset();
}
void sc12_state::set_cpu_freq()
{
// known official CPU speeds: 3MHz, 3.57MHz, 4MHz
static const XTAL xtal[3] = { 3_MHz_XTAL, 3.579545_MHz_XTAL, 4_MHz_XTAL };
m_maincpu->set_unscaled_clock(xtal[ioport("FAKE")->read() % 3]);
div_refresh();
}
/****************************************************************************** /******************************************************************************
@ -187,11 +210,23 @@ INPUT_PORTS_END
static INPUT_PORTS_START( sc12 ) static INPUT_PORTS_START( sc12 )
PORT_INCLUDE( fidel_clockdiv_2 ) PORT_INCLUDE( fidel_clockdiv_2 )
PORT_INCLUDE( sc12_base ) PORT_INCLUDE( sc12_base )
PORT_START("FAKE")
PORT_CONFNAME( 0x03, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, sc12_state, switch_cpu_freq, 0) // factory set
PORT_CONFSETTING( 0x00, "3MHz (SC12)" )
PORT_CONFSETTING( 0x01, "3.57MHz (SE12)" )
PORT_CONFSETTING( 0x02, "4MHz (6086)" )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( sc12b ) static INPUT_PORTS_START( sc12b )
PORT_INCLUDE( fidel_clockdiv_4 ) PORT_INCLUDE( fidel_clockdiv_4 )
PORT_INCLUDE( sc12_base ) PORT_INCLUDE( sc12_base )
PORT_START("FAKE")
PORT_CONFNAME( 0x03, 0x02, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, sc12_state, switch_cpu_freq, 0) // factory set
PORT_CONFSETTING( 0x00, "3MHz (SC12)" )
PORT_CONFSETTING( 0x01, "3.57MHz (SE12)" )
PORT_CONFSETTING( 0x02, "4MHz (6086)" )
INPUT_PORTS_END INPUT_PORTS_END
@ -202,7 +237,7 @@ INPUT_PORTS_END
void sc12_state::sc12(machine_config &config) void sc12_state::sc12(machine_config &config)
{ {
/* basic machine hardware */ // basic machine hardware
R65C02(config, m_maincpu, 3_MHz_XTAL); // R65C02P3 R65C02(config, m_maincpu, 3_MHz_XTAL); // R65C02P3
m_maincpu->set_addrmap(AS_PROGRAM, &sc12_state::main_map); m_maincpu->set_addrmap(AS_PROGRAM, &sc12_state::main_map);
@ -214,15 +249,15 @@ void sc12_state::sc12(machine_config &config)
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
m_board->set_delay(attotime::from_msec(200)); m_board->set_delay(attotime::from_msec(200));
/* video hardware */ // video hardware
PWM_DISPLAY(config, m_display).set_size(2, 9); PWM_DISPLAY(config, m_display).set_size(2, 9);
config.set_default_layout(layout_fidel_sc12); config.set_default_layout(layout_fidel_sc12);
/* sound hardware */ // sound hardware
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25); DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
/* cartridge */ // cartridge
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc"); GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc");
SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc"); SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
} }
@ -231,7 +266,7 @@ void sc12_state::sc12b(machine_config &config)
{ {
sc12(config); sc12(config);
/* basic machine hardware */ // basic machine hardware
m_maincpu->set_clock(4_MHz_XTAL); // R65C02P4 m_maincpu->set_clock(4_MHz_XTAL); // R65C02P4
} }
@ -241,20 +276,20 @@ void sc12_state::sc12b(machine_config &config)
ROM Definitions ROM Definitions
******************************************************************************/ ******************************************************************************/
ROM_START( fscc12 ) // model SC12, PCB label 510-1084B01 ROM_START( fscc12 ) // model 6086, PCB label 510-1084B01
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-1068a01.ic15", 0x8000, 0x2000, CRC(63c76cdd) SHA1(e0771c98d4483a6b1620791cb99a7e46b0db95c4) ) // SSS SCM23C65E4
ROM_LOAD("orange.ic13", 0xc000, 0x1000, CRC(ed5289b2) SHA1(9b0c7f9ae4102d4a66eb8c91d4e84b9eec2ffb3d) ) // TI TMS2732AJL-45, no label, orange sticker
ROM_LOAD("red.ic14", 0xe000, 0x2000, CRC(0c4968c4) SHA1(965a66870b0f8ce9549418cbda09d2ff262a1504) ) // TI TMS2764JL-25, no label, red sticker
ROM_END
ROM_START( fscc12b ) // model 6086, PCB label 510-1084B01
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-1068a01.ic15", 0x8000, 0x2000, CRC(63c76cdd) SHA1(e0771c98d4483a6b1620791cb99a7e46b0db95c4) ) // SSS SCM23C65E4 ROM_LOAD("101-1068a01.ic15", 0x8000, 0x2000, CRC(63c76cdd) SHA1(e0771c98d4483a6b1620791cb99a7e46b0db95c4) ) // SSS SCM23C65E4
ROM_LOAD("orange.ic13", 0xc000, 0x1000, CRC(45070a71) SHA1(8aeecff828f26fb7081902c757559903be272649) ) // TI TMS2732AJL-45, no label, orange sticker ROM_LOAD("orange.ic13", 0xc000, 0x1000, CRC(45070a71) SHA1(8aeecff828f26fb7081902c757559903be272649) ) // TI TMS2732AJL-45, no label, orange sticker
ROM_LOAD("red.ic14", 0xe000, 0x2000, CRC(183d3edc) SHA1(3296a4c3bce5209587d4a1694fce153558544e63) ) // Toshiba TMM2764D-2, no label, red sticker ROM_LOAD("red.ic14", 0xe000, 0x2000, CRC(183d3edc) SHA1(3296a4c3bce5209587d4a1694fce153558544e63) ) // Toshiba TMM2764D-2, no label, red sticker
ROM_END ROM_END
ROM_START( fscc12a ) // model SC12, PCB label 510-1084B01
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("101-1068a01.ic15", 0x8000, 0x2000, CRC(63c76cdd) SHA1(e0771c98d4483a6b1620791cb99a7e46b0db95c4) ) // SSS SCM23C65E4
ROM_LOAD("orange.ic13", 0xc000, 0x1000, CRC(ed5289b2) SHA1(9b0c7f9ae4102d4a66eb8c91d4e84b9eec2ffb3d) ) // TI TMS2732AJL-45, no label, orange sticker
ROM_LOAD("red.ic14", 0xe000, 0x2000, CRC(0c4968c4) SHA1(965a66870b0f8ce9549418cbda09d2ff262a1504) ) // TI TMS2764JL-25, no label, red sticker
ROM_END
} // anonymous namespace } // anonymous namespace
@ -264,5 +299,5 @@ ROM_END
******************************************************************************/ ******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS // YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
CONS( 1984, fscc12, 0, 0, sc12, sc12, sc12_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger \"12\" (model SC12)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING ) CONS( 1986, fscc12, 0, 0, sc12b, sc12b, sc12_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger \"12 B\" (model 6086)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )
CONS( 1984, fscc12b, fscc12, 0, sc12b, sc12b, sc12_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger \"12 B\" (model 6086)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING ) CONS( 1984, fscc12a, fscc12, 0, sc12, sc12, sc12_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger \"12\" (model SC12)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )

View File

@ -498,7 +498,7 @@ ROM_START( mm4b )
ROM_LOAD("600", 0x8000, 0x8000, CRC(837d49b9) SHA1(9fb2dfaaeca2559ce582211137635c069180e95f) ) ROM_LOAD("600", 0x8000, 0x8000, CRC(837d49b9) SHA1(9fb2dfaaeca2559ce582211137635c069180e95f) )
ROM_END ROM_END
ROM_START( mm4tk ) ROM_START( mm4tk ) // hack of 710
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("mm4tk.bin", 0x8000, 0x8000, CRC(51cb36a4) SHA1(9e184b4e85bb721e794b88d8657ae8d2ff5a24af) ) ROM_LOAD("mm4tk.bin", 0x8000, 0x8000, CRC(51cb36a4) SHA1(9e184b4e85bb721e794b88d8657ae8d2ff5a24af) )
ROM_END ROM_END

View File

@ -14006,6 +14006,7 @@ fgoala // MF (c) 1979 Taito Corporation
@source:fidelity/as12.cpp @source:fidelity/as12.cpp
feleg feleg
felega felega
felega1
@source:fidelity/card.cpp @source:fidelity/card.cpp
bridgec bridgec
@ -14113,7 +14114,7 @@ fphantom //
@source:fidelity/sc12.cpp @source:fidelity/sc12.cpp
fscc12 // fscc12 //
fscc12b // fscc12a //
@source:fidelity/sc6.cpp @source:fidelity/sc6.cpp
fscc6 // fscc6 //