summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/fidel_phantom.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/fidel_phantom.cpp')
-rw-r--r--src/mame/drivers/fidel_phantom.cpp143
1 files changed, 143 insertions, 0 deletions
diff --git a/src/mame/drivers/fidel_phantom.cpp b/src/mame/drivers/fidel_phantom.cpp
new file mode 100644
index 00000000000..f1862aa5c57
--- /dev/null
+++ b/src/mame/drivers/fidel_phantom.cpp
@@ -0,0 +1,143 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/******************************************************************************
+*
+* fidel_phantom.cpp, subdriver of machine/fidelbase.cpp, machine/chessbase.cpp
+
+TODO:
+- everything, this is a skeleton driver
+
+*******************************************************************************
+
+Fidelity licensed the design of the Milton/Phantom motorized chessboard and released
+their own version. It has a small LCD panel added, the rest looks nearly the same from
+the outside. After Fidelity was taken over by H&G, it was rereleased in 1990 as the
+Mephisto Phantom. This is assumed to be identical.
+
+Fidelity Phantom (model 6100) overview:
+- R65C02P4, XTAL marked 4.91?200
+- 2*32KB ROM 27C256-15, 8KB RAM MS6264L-10
+- LCD driver, display panel for digits
+- magnetized x/y motor under chessboard, chesspieces have magnet underneath
+- piezo speaker, LEDs, 8*8 chessboard buttons
+- PCB label 510.1128A01
+
+******************************************************************************/
+
+#include "emu.h"
+#include "includes/fidelbase.h"
+
+#include "cpu/m6502/r65c02.h"
+#include "sound/volt_reg.h"
+#include "speaker.h"
+
+// internal artwork
+//#include "fidel_phantom.lh" // clickable
+
+
+namespace {
+
+class phantom_state : public fidelbase_state
+{
+public:
+ phantom_state(const machine_config &mconfig, device_type type, const char *tag) :
+ fidelbase_state(mconfig, type, tag)
+ { }
+
+ void fphantom(machine_config &config);
+ void init_fphantom();
+
+protected:
+ virtual void machine_reset() override;
+
+private:
+ void main_map(address_map &map);
+};
+
+void phantom_state::machine_reset()
+{
+ fidelbase_state::machine_reset();
+ m_rombank->set_entry(0);
+}
+
+void phantom_state::init_fphantom()
+{
+ m_rombank->configure_entries(0, 2, memregion("rombank")->base(), 0x4000);
+}
+
+
+/******************************************************************************
+ Devices, I/O
+******************************************************************************/
+
+//..
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+void phantom_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram();
+ map(0x4000, 0x7fff).bankr("rombank");
+ map(0x8000, 0xffff).rom();
+}
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+static INPUT_PORTS_START( fphantom )
+ PORT_INCLUDE( generic_cb_buttons )
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+
+void phantom_state::fphantom(machine_config &config)
+{
+ /* basic machine hardware */
+ R65C02(config, m_maincpu, 4.9152_MHz_XTAL); // R65C02P4
+ m_maincpu->set_periodic_int(FUNC(phantom_state::irq0_line_hold), attotime::from_hz(600)); // guessed
+ m_maincpu->set_addrmap(AS_PROGRAM, &phantom_state::main_map);
+
+ TIMER(config, "display_decay").configure_periodic(FUNC(phantom_state::display_decay_tick), attotime::from_msec(1));
+ //config.set_default_layout(layout_fidel_phantom);
+
+ /* 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( fphantom ) // model 6100, PCB label 510.1128A01
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("u_3c_yellow.u3", 0x8000, 0x8000, CRC(fb7c38ae) SHA1(a1aa7637705052cb4eec92644dc79aee7ba4d77c) ) // 27C256
+
+ ROM_REGION( 0x8000, "rombank", 0 )
+ ROM_LOAD("u_4_white.u4", 0x0000, 0x8000, CRC(e4181ba2) SHA1(1f77d1867c6f566be98645fc252a01108f412c96) ) // 27C256
+ROM_END
+
+} // anonymous namespace
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
+CONS( 1988, fphantom, 0, 0, fphantom, fphantom, phantom_state, init_fphantom, "Fidelity Electronics", "Phantom Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_MECHANICAL | MACHINE_NOT_WORKING )