From 037f6b831a88c061302d07921bc301543ac0d766 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 25 Oct 2022 20:45:40 +0200 Subject: [PATCH] New machines marked as NOT_WORKING ---------------------------------- unknown Sega air hockey game [Darksoft, Team Europe] --- src/mame/arcade.flt | 1 + src/mame/mame.lst | 3 + src/mame/sega/unkhockey.cpp | 156 ++++++++++++++++++++++++++++++++++++ 3 files changed, 160 insertions(+) create mode 100644 src/mame/sega/unkhockey.cpp diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index c50e5df154b..09fb680b408 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -1258,6 +1258,7 @@ sega/system16.cpp sega/timetrv.cpp sega/triforce.cpp sega/turbo.cpp +sega/unkhockey.cpp sega/vicdual.cpp sega/winclub.cpp sega/y2.cpp diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 2dda47952f9..4909bc19cff 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -42716,6 +42716,9 @@ uts20 // @source:att/unixpc.cpp 3b1 // 3B1 "Unix PC" +@source:sega/unkhockey.cpp +unkhockey + @source:misc/unkhorse.cpp unkhorse // diff --git a/src/mame/sega/unkhockey.cpp b/src/mame/sega/unkhockey.cpp new file mode 100644 index 00000000000..5f644c8876a --- /dev/null +++ b/src/mame/sega/unkhockey.cpp @@ -0,0 +1,156 @@ +// license:BSD-3-Clause +// copyright-holders: + +/* +Sega 834-12846 PCB (stickered 970729 0259 II) + +The main components are: +MC68EC000FN16 CPU +32.000 MHz XTAL +Sega 315_5296 custom (I/O) +Battery +2x LH52B256N SRAM 32k x 8 +2x Lattice pLSI 2032 High Density Programmable Logic +Lattice pLSI 1016 High Density Programmable Logic +NEC D71054GB programmable timer / counter +NEC D71055GB parallel interface unit +2x MB3771 power supply monitor +SLA7026M unipolar stepper motor +YM3438 +NEC D7759GC +2x 8-dip banks +3-dip bank + +Currently unknown which game this is. The M68K ROM contains several puck-related strings, +so it's supposed to be some kind of air hockey game. +epr codes point to 1996-97 timeframe. Possibly Hockey Stadium (1997)? +*/ + +#include "emu.h" + +#include "315_5296.h" + +#include "cpu/m68000/m68000.h" +#include "machine/i8255.h" +#include "machine/nvram.h" +#include "machine/pit8253.h" +#include "sound/upd7759.h" +#include "sound/ymopn.h" + +#include "speaker.h" + + +namespace { + +class unkhockey_state : public driver_device +{ +public: + unkhockey_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_upd7759(*this, "upd") + { } + + void unkhockey(machine_config &config); + +private: + required_device m_maincpu; + required_device m_upd7759; + + void program_map(address_map &map); +}; + + +void unkhockey_state::program_map(address_map &map) // TODO: verify everything +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x20001f).rw("io", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); + map(0x700000, 0x700007).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write)).umask16(0x00ff); + map(0xb00000, 0xb01fff).ram().share("nvram"); // TODO: size? + //map(0x??0000, 0x??0001).w(FUNC(unkhockey_state::upd7759_w)).umask16(0x00ff); + map(0xff0000, 0xffffff).ram(); +} + + +static INPUT_PORTS_START( unkhockey ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("SW1") + PORT_DIPUNKNOWN_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW1:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW1:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW1:3" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW1:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW1:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW1:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW1:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW1:8" ) + + PORT_START("SW2") + PORT_DIPUNKNOWN_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW2:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW2:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW2:3" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW2:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW2:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" ) + + PORT_START("SW3") // only 3 switches + PORT_DIPUNKNOWN_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW3:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW3:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW3:3" ) +INPUT_PORTS_END + + +void unkhockey_state::unkhockey(machine_config &config) +{ + M68000(config, m_maincpu, 32_MHz_XTAL / 2); // divider unverified + m_maincpu->set_addrmap(AS_PROGRAM, &unkhockey_state::program_map); + + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + + PIT8254(config, "d71054", 0); // NEC D71054GB + + I8255(config, "d071055"); // NEC D71055GB + + SEGA_315_5296(config, "io", 32_MHz_XTAL / 2); // divider unverified + + SPEAKER(config, "mono").front_center(); + + ym3438_device &ymsnd(YM3438(config, "ymsnd", 32_MHz_XTAL / 4)); // divider unverified + ymsnd.add_route(ALL_OUTPUTS, "mono", 0.50); + + UPD7759(config, m_upd7759).add_route(ALL_OUTPUTS, "mono", 0.50); +} + + +ROM_START( unkhockey ) + ROM_REGION( 0x80000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "epr-19513a.ic34", 0x00000, 0x80000, CRC(bf4228af) SHA1(817a96753bee081a9a34052f735403f9b8c167dc) ) + + ROM_REGION( 0x20000, "upd", 0 ) + ROM_LOAD( "epr-19514.ic2", 0x00000, 0x20000, CRC(71342fbc) SHA1(36c9f57da3749f9151e37a7799c23351e4313dea) ) // contents only up to ~ 0x18000 + ROM_IGNORE( 0x60000 ) // 11xxxxxxxxxxxxxxxxx = 0xFF +ROM_END + +} // Anonymous namespace + +GAME( 199?, unkhockey, 0, unkhockey, unkhockey, unkhockey_state, empty_init, ROT0, "Sega", "unknown Sega air hockey game", MACHINE_IS_SKELETON_MECHANICAL )