From ba3e5baffceb6e226e8e4d8dc722352b416eefe0 Mon Sep 17 00:00:00 2001 From: yz70s Date: Tue, 8 Jun 2021 21:31:05 +0200 Subject: naomi: add a new device for the Sega 837-14438 "SH I/O BD" hopper board --- scripts/target/mame/arcade.lua | 2 + scripts/target/mame/mess.lua | 2 + src/mame/drivers/naomi.cpp | 34 ++++------- src/mame/includes/naomi.h | 2 + src/mame/machine/segashiobd.cpp | 121 ++++++++++++++++++++++++++++++++++++++++ src/mame/machine/segashiobd.h | 29 ++++++++++ 6 files changed, 168 insertions(+), 22 deletions(-) create mode 100644 src/mame/machine/segashiobd.cpp create mode 100644 src/mame/machine/segashiobd.h diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 00ac2a26a6d..8ac7d3cdf87 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -3556,6 +3556,8 @@ files { MAME_DIR .. "src/mame/machine/dc-ctrl.h", MAME_DIR .. "src/mame/machine/jvs13551.cpp", MAME_DIR .. "src/mame/machine/jvs13551.h", + MAME_DIR .. "src/mame/machine/segashiobd.cpp", + MAME_DIR .. "src/mame/machine/segashiobd.h", MAME_DIR .. "src/mame/drivers/triforce.cpp", MAME_DIR .. "src/mame/drivers/puckpkmn.cpp", MAME_DIR .. "src/mame/drivers/segac2.cpp", diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 1fe07c532ed..0a651947626 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -1570,6 +1570,8 @@ files { MAME_DIR .. "src/mame/machine/315-5881_crypt.h", MAME_DIR .. "src/mame/machine/315-6154.cpp", MAME_DIR .. "src/mame/machine/315-6154.h", + MAME_DIR .. "src/mame/machine/segashiobd.cpp", + MAME_DIR .. "src/mame/machine/segashiobd.h", MAME_DIR .. "src/mame/video/powervr2.cpp", MAME_DIR .. "src/mame/video/powervr2.h", MAME_DIR .. "src/mame/drivers/neogeo.cpp", diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp index 56031ccb4b5..3ac26f07aa6 100644 --- a/src/mame/drivers/naomi.cpp +++ b/src/mame/drivers/naomi.cpp @@ -3113,6 +3113,16 @@ void naomi_state::naomim4(machine_config &config) rom_board.irq_callback().set(FUNC(dc_state::g1_irq)); } +/* + * Naomi M1 with 837-14438 "SH I/O BD" hopper board + */ + +void naomi_state::naomim1_hop(machine_config &config) +{ + naomim1(config); + SEGA837_14438(config, "hopperbd", 0); +} + /* * Naomi M2 with Keyboard controllers */ @@ -7754,26 +7764,6 @@ ROM_START( kick4csh ) ROM_REGION(0x200, "some_eeprom", 0) ROM_LOAD( "25lc040.ic13s", 0, 0x200, CRC(1576366a) SHA1(3e8bf3dbc8a248a6863242b78d5c6e53a869e951) ) - // 837-14438 SH I/O BD - // IC1 - Hitachi/Renesas SH4 SoC - // IC2 - Xilinx Spartan XC2S50 PQ208AMS0341 FPGA - // IC3 - Xilinx 17S50APC Spartan-II Family OTP Configuration PROM, stamped 6372A - // IC4,5 - Toshiba TC59S6432CFT-10 512K x4 banks x32bit SDRAM - // IC6 - Macronix MX29LV160ATTC-90 16Mbit Flash ROM - // IC7 - ST M68AF127BL55MC6 1Mbit (128K x8) SRAM - // IC9 - NS USBN9604-28M USB Node Controller - // OSC1 - 33.3333 MHz - // OSC2 - 32.0000 MHz - // OCS3 - 24.0000 MHz - // SW1,2 - pushbuttons - // DIPSW1 - 4x DIP switch - // LED1-5 - LEDs - // LED6,7 - 7seg LEDs - // BT1 - Panasonic CR2032 battery - ROM_REGION(0x220000, "hopper_board", 0) - ROM_LOAD( "fpr-24150.ic6", 0x0000000, 0x200000, CRC(3845c34c) SHA1(027b17bac64482ee152773d5fab30fcbc6e2bcb7) ) // SH4 code - ROM_LOAD( "6372a.ic3", 0x0200000, 0x020000, CRC(f30839ad) SHA1(ea1a32c4da1ed9745300bcdd7964a7c0964e3221) ) // FPGA config - // 840-0140 2004 317-0397-COM Naomi ROM_PARAMETER( ":rom_board:key", "820857c9" ) ROM_END @@ -11743,9 +11733,9 @@ ROM_END /* 0128 */ GAME( 2003, shootpl, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan, Rev A)", GAME_FLAGS ) /* 0130 */ GAME( 2002, hopper, naomi, naomi, naomi, naomi_state, init_naomi, ROT0, "Sega", "SWP Hopper Board", GAME_FLAGS ) // 0132 Mushiking 2K3 2ND (Japan) -/* 0136 */ GAME( 2004, shootplm, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B", GAME_FLAGS ) // Build: 23 Jan 2004 +/* 0136 */ GAME( 2004, shootplm, naomi, naomim1_hop, naomi, naomi_state, init_naomi, ROT0, "Sega", "Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B", GAME_FLAGS ) // Build: 23 Jan 2004 /* 0136 */ GAME( 2004, shootplmp, shootplm, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B (prototype)", GAME_FLAGS ) // Build: 15 Dec 2003 -/* 0140 */ GAME( 2004, kick4csh, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Kick '4' Cash (Export)", GAME_FLAGS ) +/* 0140 */ GAME( 2004, kick4csh, naomi, naomim1_hop, naomi, naomi_state, init_naomi, ROT0, "Sega", "Kick '4' Cash (Export)", GAME_FLAGS ) /* 0150 */ GAME( 2004, mushike, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Mushiking The King Of Beetle (2K3 2ND Ver. 1.003-, World)", GAME_FLAGS ) // not for Japan /* 0150 */ GAME( 2004, mushikeo, mushike, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Mushiking The King Of Beetle (2K3 2ND Ver. 1.002-, World)", GAME_FLAGS ) // not for Japan /* 0150-FLS*/ GAME( 2004, mushikep, mushike, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Mushiking The King Of Beetle (MUSHIUSA '04 1ST, Prototype)", GAME_FLAGS ) diff --git a/src/mame/includes/naomi.h b/src/mame/includes/naomi.h index a128305cb94..620aa13085f 100644 --- a/src/mame/includes/naomi.h +++ b/src/mame/includes/naomi.h @@ -28,6 +28,7 @@ naomi.h -> NAOMI includes #include "machine/jvs13551.h" #include "machine/m3comm.h" #include "machine/gunsense.h" +#include "machine/segashiobd.h" #include "dc.h" enum { @@ -54,6 +55,7 @@ class naomi_state : public dc_state void naomim2_gun(machine_config &config); void naomi(machine_config &config); void naomim1(machine_config &config); + void naomim1_hop(machine_config &config); void naomigd(machine_config &config); void naomigd_kb(machine_config &config); void naomim4(machine_config &config); diff --git a/src/mame/machine/segashiobd.cpp b/src/mame/machine/segashiobd.cpp new file mode 100644 index 00000000000..f5c9d632a90 --- /dev/null +++ b/src/mame/machine/segashiobd.cpp @@ -0,0 +1,121 @@ +// license:BSD-3-Clause +// copyright-holders:Samuele Zannoli + +#include "emu.h" +#include "machine/segashiobd.h" + +/* + 837-14438 SH I/O BD + +|-------------------------------------------------------------------------------------| +| CN3 CN6 CN2 CN1 CN11 | +| | +| LED1-5 | +| | +| DIPSW1 BT1 OSC1 | +| | +| IC3 LED6,7 SW2 | +| | +| OSC2 IC8 IC1 IC4 IC5 | +| | +|CN5 IC7 | +| | +| IC2 | +| | +| IC6 | +| | +| SW1 | +| | +| IC9 | +| OSC3 | +| CN4 CN7 CN8 | +|-------------------------------------------------------------------------------------| + + IC1 - Hitachi/Renesas SH4 SoC + IC2 - Xilinx Spartan XC2S50 PQ208AMS0341 FPGA + IC3 - Xilinx 17S50APC Spartan-II Family OTP Configuration PROM, stamped 6372A + IC4,5 - Toshiba TC59S6432CFT-10 512K x4 banks x32bit SDRAM + IC6 - Macronix MX29LV160ATTC-90 16Mbit Flash ROM + IC7 - ST M68AF127BL55MC6 1Mbit (128K x8) SRAM + IC8 - 42-pin DIP socket, unpopulated + IC9 - NS USBN9604-28M USB Node Controller + OSC1 - 33.3333 MHz + OSC2 - 32.0000 MHz + OCS3 - 24.0000 MHz + SW1,2 - pushbuttons + DIPSW1 - 4x DIP switch + LED1-5 - LEDs + LED6,7 - 7seg LEDs + BT1 - Panasonic CR2032 battery + + CN1 - 8 pin JST VH series connector + 1 12V + 2 5V + 3 5V + 4 3.3V + 5 3.3V + 6 gnd + 7 gnd + 8 gnd + + CN2 - 4 pin JST VH series connector + 1 12V + 2 12V + 3 gnd + 4 gnd +*/ + +DEFINE_DEVICE_TYPE(SEGA837_14438, sega_837_14438_device, "sega837_14438", "Sega 837-14438 SH I/O BD") + +void sega_837_14438_device::sh4_map(address_map &map) +{ + // mirrors only for the debugger + map(0x00000000, 0x001fffff).mirror(0xa0000000).rom(); + map(0x04000000, 0x0401ffff).mirror(0xa0000000).ram(); + map(0x0c000000, 0x0cffffff).mirror(0x80000000).ram(); +} + +#define CPU_CLOCK 200000000 // need to set the correct value here + +void sega_837_14438_device::device_add_mconfig(machine_config &config) +{ + SH4LE(config, m_maincpu, CPU_CLOCK); + m_maincpu->set_md(0, 1); + m_maincpu->set_md(1, 0); + m_maincpu->set_md(2, 1); + m_maincpu->set_md(3, 0); + m_maincpu->set_md(4, 0); + m_maincpu->set_md(5, 1); + m_maincpu->set_md(6, 0); + m_maincpu->set_md(7, 1); + m_maincpu->set_md(8, 0); + m_maincpu->set_sh4_clock(CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &sega_837_14438_device::sh4_map); +} + +sega_837_14438_device::sega_837_14438_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, SEGA837_14438, tag, owner, clock), + m_maincpu(*this, "shiobdcpu") +{ +} + +void sega_837_14438_device::device_start() +{ +} + +void sega_837_14438_device::device_reset() +{ + device_t::device_reset(); +} + +ROM_START(segashiobd) + ROM_REGION(0x200000, "shiobdcpu", 0) + ROM_LOAD("fpr-24150.ic6", 0x0000000, 0x200000, CRC(3845c34c) SHA1(027b17bac64482ee152773d5fab30fcbc6e2bcb7)) // SH4 code + ROM_REGION(0x020000, "config_prom", 0) + ROM_LOAD("6372a.ic3", 0x0000000, 0x020000, CRC(f30839ad) SHA1(ea1a32c4da1ed9745300bcdd7964a7c0964e3221)) // FPGA configuration prom +ROM_END + +const tiny_rom_entry* sega_837_14438_device::device_rom_region() const +{ + return ROM_NAME(segashiobd); +} diff --git a/src/mame/machine/segashiobd.h b/src/mame/machine/segashiobd.h new file mode 100644 index 00000000000..c1bec8871f9 --- /dev/null +++ b/src/mame/machine/segashiobd.h @@ -0,0 +1,29 @@ +// license:BSD-3-Clause +// copyright-holders:Samuele Zannoli +#ifndef MAME_MACHINE_SEGASHIOBD_H +#define MAME_MACHINE_SEGASHIOBD_H + +#pragma once + +#include "cpu/sh/sh4.h" + +DECLARE_DEVICE_TYPE(SEGA837_14438, sega_837_14438_device) + +class sega_837_14438_device : public device_t +{ +public: + // construction/destruction + sega_837_14438_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual const tiny_rom_entry *device_rom_region() const override; + +protected: + virtual void device_start() override; + virtual void device_reset() override; + virtual void device_add_mconfig(machine_config &config) override; + void sh4_map(address_map &map); + +private: + required_device m_maincpu; +}; + +#endif // MAME_MACHINE_SEGASHIOBD_H -- cgit v1.2.3