diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 44330d8c992..f7b10ee3136 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -3346,8 +3346,10 @@ files { MAME_DIR .. "src/mame/drivers/saitek_cp2000.cpp", MAME_DIR .. "src/mame/drivers/saitek_delta1.cpp", MAME_DIR .. "src/mame/drivers/saitek_exchess.cpp", + MAME_DIR .. "src/mame/drivers/saitek_leonardo.cpp", MAME_DIR .. "src/mame/drivers/saitek_mark5.cpp", MAME_DIR .. "src/mame/drivers/saitek_prschess.cpp", + MAME_DIR .. "src/mame/drivers/saitek_renaissance.cpp", MAME_DIR .. "src/mame/drivers/saitek_risc2500.cpp", MAME_DIR .. "src/mame/drivers/saitek_schess.cpp", MAME_DIR .. "src/mame/drivers/saitek_ssystem3.cpp", diff --git a/src/mame/drivers/arcadia.cpp b/src/mame/drivers/arcadia.cpp index 70c0080c646..dc36f5307d1 100644 --- a/src/mame/drivers/arcadia.cpp +++ b/src/mame/drivers/arcadia.cpp @@ -535,6 +535,11 @@ ROM_START(ekusera) ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF) ROM_END +ROM_START(giglnrdo) + ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF) + ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF) +ROM_END + ROM_START(hanihac) ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF) ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF) @@ -570,11 +575,6 @@ ROM_START(lvision) ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF) ROM_END -ROM_START(leonardo) - ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF) - ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF) -ROM_END - ROM_START(mratlus) ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF) ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF) @@ -807,11 +807,12 @@ void arcadia_state::init_arcadia() /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ CONS(1983, advsnha, arcadia, 0, arcadia, arcadia, arcadia_state, init_arcadia, "Advision", "Advision Home Arcade", MACHINE_IMPERFECT_SOUND ) /* France */ -CONS(1982, bndarc, arcadia, 0, arcadia, arcadia, arcadia_state, init_arcadia, "Bandai", "Arcadia", MACHINE_IMPERFECT_SOUND ) /* Japan */ +CONS(1982, bndarc, arcadia, 0, arcadia, arcadia, arcadia_state, init_arcadia, "Bandai", "Arcadia (Bandai)", MACHINE_IMPERFECT_SOUND ) /* Japan */ CONS(1982, arcadia, 0, 0, arcadia, arcadia, arcadia_state, init_arcadia, "Emerson", "Arcadia 2001", MACHINE_IMPERFECT_SOUND ) /* U.S.A. */ CONS(198?, tccosmos, arcadia, 0, arcadia, arcadia, arcadia_state, init_arcadia, "Mobilar?", "Tele-Computer Cosmos", MACHINE_IMPERFECT_SOUND ) /* Spain? I have only found pictures of a German Cosmos ( http://www.pong-picture-page.de/catalog/product_info.php?products_id=2170 ) */ CONS(1982, dynavisn, intmpt03, 0, arcadia, arcadia, arcadia_state, init_arcadia, "Yamagiwa", "Dynavision", MACHINE_IMPERFECT_SOUND ) /* Japan */ CONS(1982, ekusera, intmpt03, 0, arcadia, arcadia, arcadia_state, init_arcadia, "P.I.C", "Ekusera", MACHINE_IMPERFECT_SOUND ) /* Japan */ +CONS(1982, giglnrdo, arcadia, 0, arcadia, arcadia, arcadia_state, init_arcadia, "GiG Electronics", "Leonardo (GiG Electronics)", MACHINE_IMPERFECT_SOUND ) /* Italy */ CONS(1982, hanihac, arcadia, 0, arcadia, arcadia, arcadia_state, init_arcadia, "Hanimex", "Hanimex Home Arcade Centre", MACHINE_IMPERFECT_SOUND ) /* UK */ CONS(1982, hmg2650, arcadia, 0, arcadia, arcadia, arcadia_state, init_arcadia, "Hanimex", "HMG-2650", MACHINE_IMPERFECT_SOUND ) /* Germany */ CONS(198?, intmpt03, 0, arcadia, arcadia, arcadia, arcadia_state, init_arcadia, "Intelligent Game", "Intelligent Game MPT-03", MACHINE_IMPERFECT_SOUND ) /* U.S.A */ @@ -819,7 +820,6 @@ CONS(198?, ixl2000, arcadia, 0, arcadia, arcadia, arcadia_state, init_a CONS(198?, intervsn, ormatu, 0, arcadia, arcadia, arcadia_state, init_arcadia, "Intervision", "Intervision 2001", MACHINE_IMPERFECT_SOUND ) /* Switzerland */ CONS(198?, itmcmtp3, intmpt03, 0, arcadia, arcadia, arcadia_state, init_arcadia, "ITMC", "ITMC MPT-03", MACHINE_IMPERFECT_SOUND ) /* France */ CONS(1982, lvision, arcadia, 0, arcadia, arcadia, arcadia_state, init_arcadia, "Leisure-Dynamics", "Leisure-Vision", MACHINE_IMPERFECT_SOUND ) /* Canada */ -CONS(1982, leonardo, arcadia, 0, arcadia, arcadia, arcadia_state, init_arcadia, "GiG Electronics", "Leonardo", MACHINE_IMPERFECT_SOUND ) /* Italy */ CONS(1983, mratlus, plldium, 0, arcadia, arcadia, arcadia_state, init_arcadia, "H.G.S.", "Mr. Altus Tele Brain", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* Germany */ CONS(198?, ormatu, 0, arcadia, arcadia, arcadia, arcadia_state, init_arcadia, "Ormatu Electronics", "Ormatu 2001", MACHINE_IMPERFECT_SOUND ) /* Netherlands */ CONS(198?, plldium, 0, arcadia, arcadia, plldium, arcadia_state, init_arcadia, "Neckermann", "Palladium Video-Computer-Game", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* Germany, 16 keys instead of 12 */ diff --git a/src/mame/drivers/saitek_leonardo.cpp b/src/mame/drivers/saitek_leonardo.cpp new file mode 100644 index 00000000000..57a3c07a6a7 --- /dev/null +++ b/src/mame/drivers/saitek_leonardo.cpp @@ -0,0 +1,169 @@ +// license:BSD-3-Clause +// copyright-holders:hap +// thanks-to:Berger +/****************************************************************************** + +SciSys Kasparov Leonardo, Saitek Kasparov Galileo. + +This is SciSys's answer to H+G Mephisto modular chesscomputers, but unlike the +Mephistos, these boards are actual chesscomputers and not an accessory. + +They called the expansion capability "OSA", for "Open Systems Architecture". +One for a link port to a PC, and one for a module slot. The expansion modules +are basically entire chesscomputers, making the whole thing combined a +'dual brain' chesscomputer. + +Hardware notes: + +Leonardo (1986): +- 6301Y0 MCU @ 12MHz +- 32KB ROM(27C256) +- 8KB RAM(M5M5165P-15 or compatible) +- magnet sensors chessboard with 16 leds + +The 6301Y0 was seen with internal maskrom serial A96 and B40. It appears to be +running in mode 1 (expanded mode): the internal ROM is disabled and the MCU can +be emulated as if it's a HD6303Y. It's not known what's on the internal ROM, +it could even be from another SciSys chesscomputer. + +Galileo (1988): +- HD6303YP MCU @ 12MHz +- almost same as Leonardo + +Galileo PCB is different, but essentially it's the same hardware as Leonardo. +The 1.4 ROM is identical to it too, even though it's a different MCU type. +And on the outside, the button panel was redesigned a bit. + +TODO: +- WIP + +******************************************************************************/ + +#include "emu.h" + +#include "cpu/m6800/m6801.h" +#include "machine/sensorboard.h" +#include "sound/dac.h" +#include "sound/volt_reg.h" + +#include "speaker.h" + + +namespace { + +class leo_state : public driver_device +{ +public: + leo_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_board(*this, "board"), + m_dac(*this, "dac") + { } + + // machine configs + void leo(machine_config &config); + +protected: + virtual void machine_start() override; + +private: + // devices/pointers + required_device m_maincpu; + required_device m_board; + optional_device m_dac; + + void main_map(address_map &map); +}; + +void leo_state::machine_start() +{ +} + + + +/****************************************************************************** + I/O +******************************************************************************/ + +// ... + + + +/****************************************************************************** + Address Maps +******************************************************************************/ + +void leo_state::main_map(address_map &map) +{ + map(0x0000, 0x0027).m(m_maincpu, FUNC(hd6303y_cpu_device::hd6301y_io)); + map(0x0040, 0x013f).ram(); // internal + map(0x4000, 0x5fff).ram(); + map(0x8000, 0xffff).rom(); +} + + + +/****************************************************************************** + Input Ports +******************************************************************************/ + +static INPUT_PORTS_START( leo ) +INPUT_PORTS_END + + + +/****************************************************************************** + Machine Configs +******************************************************************************/ + +void leo_state::leo(machine_config &config) +{ + /* basic machine hardware */ + HD6303Y(config, m_maincpu, 12_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &leo_state::main_map); + + SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS); + m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); + m_board->set_delay(attotime::from_msec(150)); + + /* sound hardware */ + SPEAKER(config, "speaker").front_center(); + DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25); + VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); +} + + + +/****************************************************************************** + ROM Definitions +******************************************************************************/ + +ROM_START( leonardo ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("sw6.1_osa1.4_510.u9", 0x8000, 0x8000, CRC(e39676b2) SHA1(288c5f2608277cb4c3ca71cb2e642a6a62c01dca) ) // D27C256AD-12 +ROM_END + +ROM_START( leonardoa ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("sx6_617l_osa1.2.u9", 0x8000, 0x8000, CRC(4620f827) SHA1(4ae566646d032dd5bcca48316dd90a11e06772f1) ) // D27C256AD-12 +ROM_END + +ROM_START( galileo ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("sw6.1_osa1.4_510.u9", 0x8000, 0x8000, CRC(e39676b2) SHA1(288c5f2608277cb4c3ca71cb2e642a6a62c01dca) ) // MBM27C256H-10 +ROM_END + +} // anonymous namespace + + + +/****************************************************************************** + Drivers +******************************************************************************/ + +// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +CONS( 1986, leonardo, 0, 0, leo, leo, leo_state, empty_init, "SciSys", "Kasparov Leonardo (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1986, leonardoa, 0, 0, leo, leo, leo_state, empty_init, "SciSys", "Kasparov Leonardo (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) + +CONS( 1988, galileo, 0, 0, leo, leo, leo_state, empty_init, "Saitek", "Kasparov Galileo", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/saitek_renaissance.cpp b/src/mame/drivers/saitek_renaissance.cpp new file mode 100644 index 00000000000..04244dda8ae --- /dev/null +++ b/src/mame/drivers/saitek_renaissance.cpp @@ -0,0 +1,147 @@ +// license:BSD-3-Clause +// copyright-holders:hap +// thanks-to:Berger +/****************************************************************************** + +Saitek Kasparov Renaissance + +Saitek's 2nd version modular chesscomputer. It accepts the same modules as +Leonardo/Galileo. "OSA" version for Renaissance is 1.5. + +Hardware notes: +- 6301Y0(mode 1) or HD6303YP MCU @ 10MHz +- 8KB RAM, 32KB ROM +- "HELIOS" I/O (NEC gate array) +- LCD screen +- magnet sensors chessboard with 81 leds + +The LCD screen is fairly large, it's the same one as in Saitek Simultano, +so a chessboard display + 7seg info. + +TODO: +- unknown LCD hardware, possibly MCU? +- WIP + +******************************************************************************/ + +#include "emu.h" + +#include "cpu/m6800/m6801.h" +#include "machine/sensorboard.h" +#include "sound/dac.h" +#include "sound/volt_reg.h" + +#include "speaker.h" + + +namespace { + +class ren_state : public driver_device +{ +public: + ren_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_board(*this, "board"), + m_dac(*this, "dac") + { } + + // machine configs + void ren(machine_config &config); + +protected: + virtual void machine_start() override; + +private: + // devices/pointers + required_device m_maincpu; + required_device m_board; + optional_device m_dac; + + void main_map(address_map &map); +}; + +void ren_state::machine_start() +{ +} + + + +/****************************************************************************** + I/O +******************************************************************************/ + +// ... + + + +/****************************************************************************** + Address Maps +******************************************************************************/ + +void ren_state::main_map(address_map &map) +{ + map(0x0000, 0x0027).m(m_maincpu, FUNC(hd6303y_cpu_device::hd6301y_io)); + map(0x0040, 0x013f).ram(); // internal + map(0x4000, 0x5fff).ram(); + map(0x8000, 0xffff).rom(); +} + + + +/****************************************************************************** + Input Ports +******************************************************************************/ + +static INPUT_PORTS_START( ren ) +INPUT_PORTS_END + + + +/****************************************************************************** + Machine Configs +******************************************************************************/ + +void ren_state::ren(machine_config &config) +{ + /* basic machine hardware */ + HD6303Y(config, m_maincpu, 10_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &ren_state::main_map); + + SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS); + m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); + m_board->set_delay(attotime::from_msec(150)); + + /* sound hardware */ + SPEAKER(config, "speaker").front_center(); + DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25); + VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); +} + + + +/****************************************************************************** + ROM Definitions +******************************************************************************/ + +ROM_START( renaissa ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("sw7_518d_u3.u3", 0x8000, 0x8000, CRC(21d2405f) SHA1(6ddcf9bdd30aa446fcaeab919a8f950dc3428365) ) // HN27C256AG-10 +ROM_END + +ROM_START( renaissaa ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("sx7_518b.u3", 0x8000, 0x8000, CRC(a0c3ffe8) SHA1(fa170a6d4d54d41de77e0bb72f969219e6f376af) ) // MBM27C256H-10 +ROM_END + +} // anonymous namespace + + + +/****************************************************************************** + Drivers +******************************************************************************/ + +// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +CONS( 1989, renaissa, 0, 0, ren, ren, ren_state, empty_init, "Saitek", "Kasparov Renaissance (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1989, renaissaa, 0, 0, ren, ren, ren_state, empty_init, "Saitek", "Kasparov Renaissance (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 3f22bcfd73f..6c65355f048 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -1482,13 +1482,13 @@ arcadia // Emerson Arcadia 2001 bndarc // Bandai Arcadia dynavisn // Dynavision ekusera // Ekusera +giglnrdo // Leonardo hanihac // Hanimex Home Arcade Centre hmg2650 // Hanimex HMG-2650 intervsn // Intervision 2001 intmpt03 // Intelligent Game MPT-03 itmcmtp3 // ITMC MPT-03 ixl2000 // Intercord XL 2000 System -leonardo // Leonardo lvision // Leisure-Vision mratlus // Mr. Altus Tele Brain orbituvi // UVI Compu-Game @@ -35128,6 +35128,11 @@ ccdelta1 // @source:saitek_exchess.cpp exchess +@source:saitek_leonardo.cpp +galileo +leonardo +leonardoa + @source:saitek_mark5.cpp ccmk5 ccmk6 @@ -35135,10 +35140,14 @@ ccmk6 @source:saitek_prschess.cpp prschess +@source:saitek_renaissance.cpp +renaissa +renaissaa + @source:saitek_risc2500.cpp +montreux // risc2500 // risc2500a // -montreux // @source:saitek_schess.cpp schess diff --git a/src/mame/mess.flt b/src/mame/mess.flt index acfac894c28..0fd600810d1 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -792,8 +792,10 @@ saitek_corona.cpp saitek_cp2000.cpp saitek_delta1.cpp saitek_exchess.cpp +saitek_leonardo.cpp saitek_mark5.cpp saitek_prschess.cpp +saitek_renaissance.cpp saitek_risc2500.cpp saitek_schess.cpp saitek_ssystem3.cpp