summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/titan_soc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/titan_soc.cpp')
-rw-r--r--src/mame/drivers/titan_soc.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/mame/drivers/titan_soc.cpp b/src/mame/drivers/titan_soc.cpp
new file mode 100644
index 00000000000..5f8852cc892
--- /dev/null
+++ b/src/mame/drivers/titan_soc.cpp
@@ -0,0 +1,121 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+/************************************************************************
+
+ Titan 1.0C (System on a Chip - ARM based processor)
+
+ used by
+
+ Atari / Colecovision / Intellivision Flashback (not dumped)
+ TecToy Mega Drive 4
+
+
+ Notes:
+
+ It is possible to connect a debug terminal
+ Has a USB port for user to plug in a flash drive etc.
+ 4MB RAM
+
+ Emulators run on the ARM, games don't use some modes 100% correctly compared to original
+ hardware, only correct for the included emulator. Some games are not emulation based.
+
+*/
+
+#include "emu.h"
+#include "cpu/arm7/arm7.h"
+#include "cpu/arm7/arm7core.h"
+#include "emupal.h"
+#include "screen.h"
+
+class titan_soc_state : public driver_device
+{
+public:
+ titan_soc_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_mainram(*this, "mainram"),
+ m_maincpu(*this, "maincpu")
+ { }
+
+ void titan_soc(machine_config &config);
+
+ void init_titan_soc();
+
+private:
+ required_shared_ptr<uint32_t> m_mainram;
+ required_device<cpu_device> m_maincpu;
+
+ virtual void machine_reset() override;
+ virtual void video_start() override;
+ uint32_t screen_update_titan_soc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void map(address_map &map);
+};
+
+
+
+void titan_soc_state::map(address_map &map)
+{
+ map(0x00000000, 0x0007ffff).ram().share("mainram");
+}
+
+static INPUT_PORTS_START( titan_soc )
+
+INPUT_PORTS_END
+
+
+void titan_soc_state::video_start()
+{
+}
+
+uint32_t titan_soc_state::screen_update_titan_soc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+void titan_soc_state::machine_reset()
+{
+}
+
+void titan_soc_state::titan_soc(machine_config &config)
+{
+ /* basic machine hardware */
+ ARM920T(config, m_maincpu, 200000000); // type + clock unknown
+ m_maincpu->set_addrmap(AS_PROGRAM, &titan_soc_state::map);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */);
+ screen.set_size(320, 256);
+ screen.set_visarea(0, 320-1, 0, 256-1);
+ screen.set_screen_update(FUNC(titan_soc_state::screen_update_titan_soc));
+
+ PALETTE(config, "palette").set_entries(256);
+}
+
+
+
+ROM_START( megadri4 )
+ ROM_REGION( 0x80000, "serial", 0 ) // this was only dumped from one of the PCBS, not sure which one, might not be correct for both
+ ROM_LOAD( "25l4005a - rom de boot megadrive4.bin", 0x000000, 0x80000, CRC(1b5c3c31) SHA1(97f301ae441ca23d3c52a901319e375654920867) )
+
+ ROM_REGION( 0x08400000, "flash", 0 )
+ ROM_LOAD( "ic9 megadrive4 titan.bin", 0x000000, 0x08400000, CRC(ed92b81a) SHA1(a3d51a2febf670820d6df009660b96ff6407f475) )
+ROM_END
+
+ROM_START( megadri4a )
+ ROM_REGION( 0x80000, "serial", 0 ) // this was only dumped from one of the PCBS, not sure which one, might not be correct for both
+ ROM_LOAD( "25l4005a - rom de boot megadrive4.bin", 0x000000, 0x80000, CRC(1b5c3c31) SHA1(97f301ae441ca23d3c52a901319e375654920867) )
+
+ ROM_REGION( 0x08400000, "flash", 0 )
+ ROM_LOAD( "ic9 megadrive4 titan segunda placa.bin", 0x000000, 0x08400000, CRC(4b423898) SHA1(293127d2f6169717a7fbfcf18f13e4b1735236f7) )
+ROM_END
+
+
+
+void titan_soc_state::init_titan_soc()
+{
+ // can either run directly from serial ROM, or copies it to RAM on startup
+ memcpy(m_mainram, memregion("serial")->base(), 0x80000);
+}
+
+CONS( 2009, megadri4, 0, 0, titan_soc, titan_soc, titan_soc_state, init_titan_soc, "Tectoy (licensed from Sega)", "Mega Drive 4 / Guitar Idol (set 1)", MACHINE_IS_SKELETON )
+CONS( 2009, megadri4a, megadri4, 0, titan_soc, titan_soc, titan_soc_state, init_titan_soc, "Tectoy (licensed from Sega)", "Mega Drive 4 / Guitar Idol (set 2)", MACHINE_IS_SKELETON )