From 933f60e452ec0bb6acebc7a458760a1ccda23d75 Mon Sep 17 00:00:00 2001
From: David Haywood <28625134+DavidHaywood@users.noreply.github.com>
Date: Tue, 13 Sep 2022 18:07:24 +0100
Subject: [PATCH] Added skeleton driver for Nikko Entertainment/Grey Innovation
digiBLAST (#10295)
bus/centronics/digiblst.cpp: Changed device short name to make it more explicit.
new NOT WORKING machine
-------------
Nikko Entertainment B.V. / Grey Innovation digiBLAST [TeamEurope]
new NOT WORKING software list items
---------------
digiblast_cart.xml:
Sonic X 1 (Italy / Spain) [Most-Student-5165]
Sponge Bob Square Pants 1 (Italy / Spain) [Most-Student-5165]
Totally Spies! 1 (Italy) [Most-Student-5165]
Yu-Gi-Oh! (Italy / Spain) [Most-Student-5165]
Winx Club 1 (Italy / Spain) [Most-Student-5165]
Winx Club + 5 Atari Games (Italy / Spain) [Most-Student-5165]
---
hash/digiblast_cart.xml | 78 +++++++++++++++
src/devices/bus/centronics/digiblst.cpp | 2 +-
src/mame/mame.lst | 3 +
src/mame/skeleton/digiblast.cpp | 127 ++++++++++++++++++++++++
4 files changed, 209 insertions(+), 1 deletion(-)
create mode 100644 hash/digiblast_cart.xml
create mode 100644 src/mame/skeleton/digiblast.cpp
diff --git a/hash/digiblast_cart.xml b/hash/digiblast_cart.xml
new file mode 100644
index 00000000000..54f6c1bda42
--- /dev/null
+++ b/hash/digiblast_cart.xml
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+ Sonic X 1 (Italy / Spain)
+ 2005
+ Nikko Entertainment B.V. / Grey Innovation
+
+
+
+
+
+
+
+
+ Sponge Bob Square Pants 1 (Italy / Spain)
+ 2005
+ Nikko Entertainment B.V. / Grey Innovation
+
+
+
+
+
+
+
+
+ Totally Spies! 1 (Italy)
+ 2005
+ Nikko Entertainment B.V. / Grey Innovation
+
+
+
+
+
+
+
+
+ Yu-Gi-Oh! (Italy / Spain)
+ 2005
+ Nikko Entertainment B.V. / Grey Innovation
+
+
+
+
+
+
+
+
+ Winx Club + 5 Atari Games (Italy / Spain)
+ 2005
+ Nikko Entertainment B.V. / Grey Innovation
+
+
+
+
+
+
+
+
+ Winx Club 1 (Italy / Spain)
+ 2005
+ Nikko Entertainment B.V. / Grey Innovation
+
+
+
+
+
+
+
+
diff --git a/src/devices/bus/centronics/digiblst.cpp b/src/devices/bus/centronics/digiblst.cpp
index af02c153653..3b66d35b9df 100644
--- a/src/devices/bus/centronics/digiblst.cpp
+++ b/src/devices/bus/centronics/digiblst.cpp
@@ -15,7 +15,7 @@
//**************************************************************************
// device type definition
-DEFINE_DEVICE_TYPE(CENTRONICS_DIGIBLASTER, centronics_digiblaster_device, "digiblst", "Digiblaster (DIY)")
+DEFINE_DEVICE_TYPE(CENTRONICS_DIGIBLASTER, centronics_digiblaster_device, "cpcdigiblst", "Digiblaster (DIY)")
/***************************************************************************
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 5b940996ac0..0f240d941bf 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -12505,6 +12505,9 @@ dietgou // MAY (c) 1993
digel804 //
ep804 //
+@source:skeleton/digiblast.cpp
+digiblst
+
@source:skeleton/digilog320.cpp
digilog320 //
diff --git a/src/mame/skeleton/digiblast.cpp b/src/mame/skeleton/digiblast.cpp
new file mode 100644
index 00000000000..ca5f6bc5edd
--- /dev/null
+++ b/src/mame/skeleton/digiblast.cpp
@@ -0,0 +1,127 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+
+// a generic looking s3c2410 SoC setup, with very little of note in the system, and a NAND ROM in the cartriges
+// if you copy the NAND plumbing from ghosteo.cpp (and add the ID command) the software begins to boot, but
+// the NAND should be included in the cartridge bus device, not the driver.
+
+#include "emu.h"
+
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+#include "cpu/arm7/arm7.h"
+#include "cpu/arm7/arm7core.h"
+#include "machine/s3c2410.h"
+
+#include "emupal.h"
+#include "screen.h"
+#include "softlist_dev.h"
+#include "speaker.h"
+
+
+namespace {
+
+class digiblast_state : public driver_device
+{
+public:
+ digiblast_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_s3c2410(*this, "s3c2410")
+ , m_system_memory(*this, "systememory")
+ , m_cart(*this, "cartslot")
+ {
+ }
+
+ void digiblast(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+private:
+ required_device m_maincpu;
+ required_device m_s3c2410;
+ required_shared_ptr m_system_memory;
+
+ required_device m_cart;
+
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
+
+ void digiblast_map(address_map &map);
+};
+
+void digiblast_state::digiblast_map(address_map &map)
+{
+ map(0x30000000, 0x31ffffff).ram().share("systememory").mirror(0x02000000);
+}
+
+static INPUT_PORTS_START( digiblast )
+INPUT_PORTS_END
+
+void digiblast_state::machine_start()
+{
+}
+
+void digiblast_state::machine_reset()
+{
+}
+
+DEVICE_IMAGE_LOAD_MEMBER(digiblast_state::cart_load)
+{
+ uint32_t size = m_cart->common_get_size("rom");
+
+ m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
+ m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
+
+ return image_init_result::PASS;
+}
+
+
+void digiblast_state::digiblast(machine_config &config)
+{
+ /* basic machine hardware */
+ ARM9(config, m_maincpu, 200000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &digiblast_state::digiblast_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(455, 262);
+ screen.set_visarea(0, 320-1, 0, 256-1);
+ screen.set_screen_update("s3c2410", FUNC(s3c2410_device::screen_update));
+
+ PALETTE(config, "palette").set_entries(256);
+
+ S3C2410(config, m_s3c2410, 12000000);
+ m_s3c2410->set_palette_tag("palette");
+ m_s3c2410->set_screen_tag("screen");
+ //m_s3c2410->core_pin_r_callback().set(FUNC(digiblast_state::s3c2410_core_pin_r));
+ //m_s3c2410->gpio_port_r_callback().set(FUNC(digiblast_state::s3c2410_gpio_port_r));
+ //m_s3c2410->gpio_port_w_callback().set(FUNC(digiblast_state::s3c2410_gpio_port_w));
+ //m_s3c2410->i2c_scl_w_callback().set(FUNC(digiblast_state::s3c2410_i2c_scl_w));
+ //m_s3c2410->i2c_sda_r_callback().set(FUNC(digiblast_state::s3c2410_i2c_sda_r));
+ //m_s3c2410->i2c_sda_w_callback().set(FUNC(digiblast_state::s3c2410_i2c_sda_w));
+ //m_s3c2410->nand_command_w_callback().set(FUNC(digiblast_state::s3c2410_nand_command_w));
+ //m_s3c2410->nand_address_w_callback().set(FUNC(digiblast_state::s3c2410_nand_address_w));
+ //m_s3c2410->nand_data_r_callback().set(FUNC(digiblast_state::s3c2410_nand_data_r));
+ //m_s3c2410->nand_data_w_callback().set(FUNC(digiblast_state::s3c2410_nand_data_w));
+
+ /* sound hardware */
+ SPEAKER(config, "front").front_center();
+
+ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "digiblast_cart");
+ m_cart->set_width(GENERIC_ROM8_WIDTH);
+ m_cart->set_device_load(FUNC(digiblast_state::cart_load));
+
+ SOFTWARE_LIST(config, "cart_list").set_original("digiblast_cart");
+
+}
+
+ROM_START( digiblst )
+ //ROM_REGION( 0x4200000, "flash", ROMREGION_ERASEFF )
+ROM_END
+
+} // Anonymous namespace
+
+CONS( 2005, digiblst, 0, 0, digiblast, digiblast, digiblast_state, empty_init, "Nikko Entertainment B.V. / Grey Innovation", "digiBLAST", MACHINE_IS_SKELETON )