summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2015-06-30 17:05:29 +0200
committer hap <happppp@users.noreply.github.com>2015-06-30 17:05:29 +0200
commitee8e7dd26b49f4fff4dc8b0d48b39883b0971b6c (patch)
treea5dfbe8244b8a9692608257e94abd60bb64f343d
parent8cd014d3e6fcf5c3636b2fd863f73c7f5076f8c5 (diff)
added hh_sm510.c skeleton driver
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/emu/cpu/sm510/sm510.c15
-rw-r--r--src/emu/cpu/sm510/sm510.h4
-rw-r--r--src/mame/mess.lst3
-rw-r--r--src/mess/drivers/hh_sm510.c147
5 files changed, 163 insertions, 7 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 925a4fe9272..93b845d4329 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -2113,6 +2113,7 @@ files {
createMESSProjects(_target, _subtarget, "sharp")
files {
+ MAME_DIR .. "src/mess/drivers/hh_sm510.c",
MAME_DIR .. "src/mess/video/mz700.c",
MAME_DIR .. "src/mess/drivers/mz700.c",
MAME_DIR .. "src/mess/drivers/pc1500.c",
diff --git a/src/emu/cpu/sm510/sm510.c b/src/emu/cpu/sm510/sm510.c
index af0f5423101..5a5c364376d 100644
--- a/src/emu/cpu/sm510/sm510.c
+++ b/src/emu/cpu/sm510/sm510.c
@@ -21,7 +21,10 @@ const device_type SM510 = &device_creator<sm510_device>;
// internal memory maps
static ADDRESS_MAP_START(program_2_7k, AS_PROGRAM, 8, sm510_base_device)
- AM_RANGE(0x0000, 0x0aff) AM_ROM
+ AM_RANGE(0x0000, 0x02af) AM_ROM
+ AM_RANGE(0x0400, 0x06af) AM_ROM
+ AM_RANGE(0x0800, 0x0aaf) AM_ROM
+ AM_RANGE(0x0c00, 0x0eaf) AM_ROM
ADDRESS_MAP_END
@@ -87,20 +90,22 @@ void sm510_base_device::device_start()
// zerofill
memset(m_stack, 0, sizeof(m_stack));
- m_op = 0;
- m_prev_op = 0;
m_pc = 0;
m_prev_pc = 0;
+ m_op = 0;
+ m_prev_op = 0;
+ m_param = 0;
m_acc = 0;
m_bl = 0;
m_bm = 0;
// register for savestates
save_item(NAME(m_stack));
- save_item(NAME(m_op));
- save_item(NAME(m_prev_op));
save_item(NAME(m_pc));
save_item(NAME(m_prev_pc));
+ save_item(NAME(m_op));
+ save_item(NAME(m_prev_op));
+ save_item(NAME(m_param));
save_item(NAME(m_acc));
save_item(NAME(m_bl));
save_item(NAME(m_bm));
diff --git a/src/emu/cpu/sm510/sm510.h b/src/emu/cpu/sm510/sm510.h
index ec20ee4272c..34042b093c4 100644
--- a/src/emu/cpu/sm510/sm510.h
+++ b/src/emu/cpu/sm510/sm510.h
@@ -67,10 +67,10 @@ protected:
int m_prgmask;
int m_datamask;
- UINT16 m_prev_pc;
UINT16 m_pc;
- UINT8 m_prev_op;
+ UINT16 m_prev_pc;
UINT8 m_op;
+ UINT8 m_prev_op;
UINT8 m_param;
int m_stack_levels;
UINT16 m_stack[2];
diff --git a/src/mame/mess.lst b/src/mame/mess.lst
index f8f15b810da..dba48281b60 100644
--- a/src/mame/mess.lst
+++ b/src/mame/mess.lst
@@ -2187,6 +2187,9 @@ cfrogger // Coleco
// hh_pic16
maniac // Ideal
+// hh_sm510
+ktopgun // Konami
+
// hh_tms1k
mathmagi // APF
amaztron // Coleco
diff --git a/src/mess/drivers/hh_sm510.c b/src/mess/drivers/hh_sm510.c
new file mode 100644
index 00000000000..7b84f673336
--- /dev/null
+++ b/src/mess/drivers/hh_sm510.c
@@ -0,0 +1,147 @@
+// license:BSD-3-Clause
+// copyright-holders:hap, Sean Riddle
+/***************************************************************************
+
+ Sharp SM510 MCU x..
+
+ TODO:
+ - barnacles
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/sm510/sm510.h"
+#include "sound/speaker.h"
+
+// internal artwork
+//..
+
+
+class hh_sm510_state : public driver_device
+{
+public:
+ hh_sm510_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_inp_matrix(*this, "IN"),
+ m_speaker(*this, "speaker")
+ { }
+
+ // devices
+ required_device<cpu_device> m_maincpu;
+ optional_ioport_array<5> m_inp_matrix; // max 5
+ optional_device<speaker_sound_device> m_speaker;
+
+ // misc common
+ UINT16 m_inp_mux; // multiplexed inputs mask
+
+ UINT8 read_inputs(int columns);
+
+ // display common
+ //..
+
+protected:
+ virtual void machine_start();
+ virtual void machine_reset();
+};
+
+
+// machine start/reset
+
+void hh_sm510_state::machine_start()
+{
+ // zerofill
+ m_inp_mux = 0;
+
+ // register for savestates
+ save_item(NAME(m_inp_mux));
+}
+
+void hh_sm510_state::machine_reset()
+{
+}
+
+
+
+/***************************************************************************
+
+ Helper Functions
+
+***************************************************************************/
+
+UINT8 hh_sm510_state::read_inputs(int columns)
+{
+ return 0;
+}
+
+
+
+/***************************************************************************
+
+ Minidrivers (subclass, I/O, Inputs, Machine Config)
+
+***************************************************************************/
+
+/***************************************************************************
+
+ Konami Top Gun
+ * x
+
+***************************************************************************/
+
+class ktopgun_state : public hh_sm510_state
+{
+public:
+ ktopgun_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ { }
+};
+
+// handlers
+
+//..
+
+
+// config
+
+static INPUT_PORTS_START( ktopgun )
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( ktopgun, ktopgun_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, 10000)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( ktopgun )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "topgun_die.bin", 0x0000, 0x1000, CRC(50870b35) SHA1(cda1260c2e1c180995eced04b7d7ff51616dcef5) )
+ROM_END
+
+
+
+
+
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
+CONS( 1990, ktopgun, 0, 0, ktopgun, ktopgun, driver_device, 0, "Konami", "Top Gun (Konami)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )