From a8274cfed557214cb40ade3b59d460d38fe51d68 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Sat, 17 Feb 2024 09:14:55 +0100 Subject: New systems marked not working ------------------------------ Bingo Planet (Rev C) (M1 Satellite board) [Hammy] --- src/mame/mame.lst | 5 ++-- src/mame/sega/segasm1.cpp | 72 +++++++++++++++++++++++++++++++---------------- 2 files changed, 50 insertions(+), 27 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4e9945ece0d..88dd8c30a5e 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -40024,10 +40024,11 @@ titlefj // 1993.03 Title Fight (Japan) titlefu // 1993.04 Title Fight (US) @source:sega/segasm1.cpp -tinkerbl // (c) 1990 Sega +bingplnt // (c) 1997 Sega +bingpty // (c) 1994 Sega blicks // (c) 1991 Sega carboule // (c) 1992 Sega -bingpty // (c) 1994 Sega +tinkerbl // (c) 1990 Sega @source:sega/segasp.cpp aminosan // 2010.?? Aminosan (satellite) diff --git a/src/mame/sega/segasm1.cpp b/src/mame/sega/segasm1.cpp index 6420fe309f4..44cbf7f65b2 100644 --- a/src/mame/sega/segasm1.cpp +++ b/src/mame/sega/segasm1.cpp @@ -2,7 +2,7 @@ // copyright-holders:R. Belmont, David Haywood /************************************************************************************************************ - Sega System M1 medal games board (834-7795 standlone, 837-7571 networked) + Sega System M1 medal games board (834-7795 standalone, 837-7571 networked) 68000 - main CPU Z80 - sound CPU @@ -21,7 +21,7 @@ TODO: - Hopper - tinkerbl, blicks: throws with "RAM data is BAD" at each soft reset, EEPROM? - - Bingo Party puts up a message about ROM version mismatch with the RAM and says to press the reset switch. + - Bingo Party and Bingo Planet put up a message about ROM version mismatch with the RAM and say to press the reset switch. However, when this is done, the code simply locks up (BRA to itself) and doesn't initialize the RAM. - Verify sound latch locations on Tinker Bell vs. the comms games @@ -41,20 +41,24 @@ ************************************************************************************************************/ #include "emu.h" + +#include "315_5296.h" +#include "segaic24.h" + #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" -#include "segaic24.h" -#include "315_5296.h" #include "machine/gen_latch.h" #include "machine/i8251.h" #include "machine/mb8421.h" #include "machine/nvram.h" #include "machine/timer.h" #include "sound/ymopn.h" + #include "emupal.h" #include "screen.h" #include "speaker.h" + namespace { class systemm1_state : public driver_device @@ -72,14 +76,17 @@ public: , m_ym(*this, "ym3438") , m_io1(*this, "io1") , m_io2(*this, "io2") - , m_soundlatch(*this, "soundlatch") - , m_soundlatch2(*this, "soundlatch2") + , m_soundlatch(*this, "soundlatch%u", 1U) + , m_soundbank(*this, "soundbank") { } void m1base(machine_config &config); void m1comm(machine_config &config); +protected: + virtual void machine_start() override; + private: u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -98,10 +105,8 @@ private: required_device m_palette; required_device m_ym; required_device m_io1, m_io2; - required_device m_soundlatch; - required_device m_soundlatch2; - - void machine_start() override; + required_device_array m_soundlatch; + required_memory_bank m_soundbank; u16 m_paletteram[0x4000 / sizeof(u16)]; @@ -245,7 +250,7 @@ void systemm1_state::mem_map(address_map &map) map(0xe00000, 0xe0003f).rw(m_io1, FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); map(0xe40000, 0xe40001).portr("DIP1"); - map(0xe40005, 0xe40005).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xe40005, 0xe40005).r(m_soundlatch[1], FUNC(generic_latch_8_device::read)).w(m_soundlatch[0], FUNC(generic_latch_8_device::write)); map(0xe80000, 0xe8003f).rw(m_io2, FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); map(0xf00000, 0xf03fff).mirror(0x0fc000).ram().share("nvram"); @@ -266,7 +271,7 @@ void systemm1_state::mem_comm_map(address_map &map) void systemm1_state::z80_map(address_map &map) { map(0x0000, 0x9fff).rom().region("soundcpu", 0); - map(0xa000, 0xbfff).bankr("soundbank"); + map(0xa000, 0xbfff).bankr(m_soundbank); map(0xe000, 0xffff).ram(); } @@ -275,17 +280,19 @@ void systemm1_state::z80_io_map(address_map &map) map.global_mask(0xff); map(0x80, 0x83).mirror(0x0c).rw(m_ym, FUNC(ym3438_device::read), FUNC(ym3438_device::write)); map(0xa0, 0xa0).w(FUNC(systemm1_state::sound_bank_w)); - map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); + map(0xc0, 0xc0).r(m_soundlatch[0], FUNC(generic_latch_8_device::read)).w(m_soundlatch[1], FUNC(generic_latch_8_device::write)); } void systemm1_state::machine_start() { - membank("soundbank")->configure_entries(0x00, 0x10, memregion("soundcpu")->base(), 0x2000); + m_soundbank->configure_entries(0x00, 0x10, memregion("soundcpu")->base(), 0x2000); + + save_item(NAME(m_paletteram)); } void systemm1_state::sound_bank_w(u8 data) { - membank("soundbank")->set_entry(data & 0x0f); + m_soundbank->set_entry(data & 0x0f); } void systemm1_state::comm_map(address_map &map) @@ -625,11 +632,11 @@ void systemm1_state::m1base(machine_config &config) SEGA_315_5296(config, m_io2, XTAL(16'000'000)); - GENERIC_LATCH_8(config, m_soundlatch); - m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI); - m_soundlatch->set_separate_acknowledge(false); + GENERIC_LATCH_8(config, m_soundlatch[0]); + m_soundlatch[0]->data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI); + m_soundlatch[0]->set_separate_acknowledge(false); - GENERIC_LATCH_8(config, m_soundlatch2); + GENERIC_LATCH_8(config, m_soundlatch[1]); } void systemm1_state::m1comm(machine_config &config) @@ -641,7 +648,7 @@ void systemm1_state::m1comm(machine_config &config) Z80(config, m_commcpu, 4'000'000); // unknown clock m_commcpu->set_addrmap(AS_PROGRAM, &systemm1_state::comm_map); - I8251(config, "uart", 4000000); // unknown clock + I8251(config, "uart", 4'000'000); // unknown clock mb8421_device &dpram(MB8421(config, "dpram")); dpram.intl_callback().set_inputline("m1comm", 0); @@ -677,25 +684,39 @@ ROM_START( blicks ) ROM_END ROM_START( bingpty ) // 1994/05/01 string - ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */ + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-16648b.bin", 0x00000, 0x20000, CRC(e4fceb4c) SHA1(0a248bb328d2f6d72d540baefbe62838f4b76585) ) ROM_LOAD16_BYTE( "epr-16649b.bin", 0x00001, 0x20000, CRC(736d8bbd) SHA1(c359ad513d4a7693cbb1a27ce26f89849e894d05) ) - ROM_REGION( 0x20000, "soundcpu", 0 ) /* Z80 Code */ + ROM_REGION( 0x20000, "soundcpu", 0 ) // Z80 code + ROM_LOAD( "epr-14845.bin", 0x00000, 0x20000, CRC(90d47101) SHA1(7bc002c104e3dbde1986aaec54112d5658eab523) ) + + ROM_REGION( 0x8000, "m1comm", 0 ) // Z80 code + ROM_LOAD( "epr-14221a.bin", 0x00000, 0x8000, CRC(a13e67a4) SHA1(4cd269c7f04a64ae7806c8784f86bf6553a25d85) ) + + // dumps of the X-Board part, and the LINK PCB are missing. +ROM_END + +ROM_START( bingplnt ) // 1997/06/30 string + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code + ROM_LOAD16_BYTE( "epr-19373c.ic8", 0x00000, 0x40000, CRC(965e5dba) SHA1(82eab3261ad610a43aa06206d6b44b6fe4aeb9d8) ) + ROM_LOAD16_BYTE( "epr-19374c.ic7", 0x00001, 0x40000, CRC(ad305112) SHA1(8a33cf719074875c96a0e50db2ab7c7b6223924d) ) + + ROM_REGION( 0x20000, "soundcpu", 0 ) // Z80 code ROM_LOAD( "epr-14845.bin", 0x00000, 0x20000, CRC(90d47101) SHA1(7bc002c104e3dbde1986aaec54112d5658eab523) ) - ROM_REGION( 0x8000, "m1comm", 0 ) /* Z80 Code */ + ROM_REGION( 0x8000, "m1comm", 0 ) // Z80 code ROM_LOAD( "epr-14221a.bin", 0x00000, 0x8000, CRC(a13e67a4) SHA1(4cd269c7f04a64ae7806c8784f86bf6553a25d85) ) // dumps of the X-Board part, and the LINK PCB are missing. ROM_END ROM_START( carboule ) // 1992.01.31 string - ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */ + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "epr-14427.ic8", 0x00000, 0x40000, CRC(2d904fc6) SHA1(7062f47d77d09906420118c85e1cb565bec345a7) ) ROM_LOAD16_BYTE( "epr-14428.ic7", 0x00001, 0x40000, CRC(97a317f4) SHA1(19bc4cf6b6c580caa44f36c929b445ed94b2d9eb) ) - ROM_REGION( 0x20000, "soundcpu", 0 ) /* Z80 Code */ + ROM_REGION( 0x20000, "soundcpu", 0 ) // Z80 code ROM_LOAD( "epr-14429.ic104", 0x00000, 0x20000, CRC(1ff8262d) SHA1(fb90bd877b2dc65eb3e5495d6e21dee1f871fb44) ) ROM_REGION( 0x8000, "m1comm", 0 ) @@ -714,4 +735,5 @@ GAME(1990, blicks, 0, m1base, blicks, systemm1_state, empty_init, ROT0, "Seg // M1 comm multi-board games GAME(1994, bingpty, 0, m1comm, bingpty, systemm1_state, empty_init, ROT0, "Sega", "Bingo Party Multicart (Rev B) (M1 Satellite board)", MACHINE_NOT_WORKING) +GAME(1997, bingplnt, 0, m1comm, bingpty, systemm1_state, empty_init, ROT0, "Sega", "Bingo Planet (Rev C) (M1 Satellite board)", MACHINE_NOT_WORKING) // title inferred from date, may be wrong GAME(1992, carboule, 0, m1comm, bingpty, systemm1_state, empty_init, ROT0, "Sega", "Caribbean Boule (M1 Satellite board)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -- cgit v1.2.3