naomi: add a new device for the Sega 837-14438 "SH I/O BD" hopper board

This commit is contained in:
yz70s 2021-06-08 21:31:05 +02:00
parent 07a1542a7c
commit ba3e5baffc
6 changed files with 168 additions and 22 deletions

View File

@ -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",

View File

@ -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",

View File

@ -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 )

View File

@ -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);

View File

@ -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);
}

View File

@ -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<sh4_device> m_maincpu;
};
#endif // MAME_MACHINE_SEGASHIOBD_H