summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2017-05-18 21:52:44 -0400
committer AJR <ajrhacker@users.noreply.github.com>2017-05-18 21:52:44 -0400
commita0a9c3259048f880e01f065439a4dac5c228ce44 (patch)
tree29dfb929b3e84ce0d94c43de57c81a38d94aaf6f
parent895a27005d4595c97ccaf653c884aa76354a9ebe (diff)
segam1.cpp: Hook up video devices, sound and much else (nw)
bingpty and unkm1 both boot to error screens now
-rw-r--r--src/mame/drivers/segam1.cpp339
1 files changed, 312 insertions, 27 deletions
diff --git a/src/mame/drivers/segam1.cpp b/src/mame/drivers/segam1.cpp
index be95c899a05..b4ce2ac3031 100644
--- a/src/mame/drivers/segam1.cpp
+++ b/src/mame/drivers/segam1.cpp
@@ -34,7 +34,13 @@ uses s24 style tilemaps (ram based?)
#include "emu.h"
#include "cpu/m68000/m68000.h"
+#include "cpu/z80/z80.h"
#include "machine/315_5296.h"
+#include "machine/gen_latch.h"
+#include "machine/i8251.h"
+#include "machine/mb8421.h"
+#include "sound/2612intf.h"
+#include "video/segaic24.h"
#include "screen.h"
#include "speaker.h"
@@ -46,41 +52,283 @@ public:
segam1_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_paletteram(*this, "paletteram")
+ , m_tile(*this, "tile")
+ , m_mixer(*this, "mixer")
+ , m_ymsnd(*this, "ymsnd")
{ }
+ DECLARE_WRITE16_MEMBER(paletteram_w);
+ DECLARE_WRITE8_MEMBER(sound_a0_bank_w);
+
+ virtual void machine_start() override;
virtual void video_start() override;
- uint32_t screen_update_segam1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ required_shared_ptr<u16> m_paletteram;
+ required_device<segas24_tile_device> m_tile;
+ required_device<segas24_mixer_device> m_mixer;
+ required_device<ym3438_device> m_ymsnd;
};
+void segam1_state::machine_start()
+{
+ membank("soundbank")->configure_entries(0x00, 0x10, memregion("audiocpu")->base(), 0x2000);
+}
+
void segam1_state::video_start()
{
}
-uint32_t segam1_state::screen_update_segam1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+WRITE8_MEMBER(segam1_state::sound_a0_bank_w)
{
+ membank("soundbank")->set_entry(data & 0x0f);
+}
+
+// 315-5242
+
+WRITE16_MEMBER(segam1_state::paletteram_w)
+{
+ COMBINE_DATA(&m_paletteram[offset]);
+ data = m_paletteram[offset];
+
+ u16 r = (data & 0x00f) << 4;
+ if(data & 0x1000)
+ r |= 8;
+
+ u16 g = data & 0x0f0;
+ if(data & 0x2000)
+ g |= 8;
+
+ u16 b = (data & 0xf00) >> 4;
+ if(data & 0x4000)
+ b |= 8;
+
+ r |= r >> 5;
+ g |= g >> 5;
+ b |= b >> 5;
+
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
+
+ if(data & 0x8000) {
+ r = 255-0.6*(255-r);
+ g = 255-0.6*(255-g);
+ b = 255-0.6*(255-b);
+ } else {
+ r = 0.6*r;
+ g = 0.6*g;
+ b = 0.6*b;
+ }
+ m_palette->set_pen_color(offset+m_palette->entries()/2, rgb_t(r, g, b));
+}
+
+
+// copied from segas24.cpp
+namespace {
+ struct layer_sort {
+ layer_sort(segas24_mixer_device *_mixer) { mixer = _mixer; }
+
+ bool operator()(int l1, int l2) {
+ static const int default_pri[12] = { 0, 1, 2, 3, 4, 5, 6, 7, -4, -3, -2, -1 };
+ int p1 = mixer->get_reg(l1) & 7;
+ int p2 = mixer->get_reg(l2) & 7;
+ if(p1 != p2)
+ return p1 - p2 < 0;
+ return default_pri[l2] - default_pri[l1] < 0;
+ }
+
+ segas24_mixer_device *mixer;
+ };
+}
+
+// copied from segas24.cpp
+uint32_t segam1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ if (m_mixer->get_reg(13) & 1)
+ {
+ bitmap.fill(m_palette->black_pen());
+ return 0;
+ }
+
+ screen.priority().fill(0);
+ bitmap.fill(0, cliprect);
+
+ std::vector<int> order;
+ order.resize(12);
+ for(int i=0; i<12; i++)
+ order[i] = i;
+
+ std::sort(order.begin(), order.end(), layer_sort(m_mixer.target()));
+
+ int level = 0;
+ for(int i=0; i<12; i++)
+ if(order[i] < 8)
+ m_tile->draw(screen, bitmap, cliprect, order[i], level, 0);
+ else
+ level++;
+
return 0;
}
static ADDRESS_MAP_START( segam1_map, AS_PROGRAM, 16, segam1_state )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0xb00000, 0xb01fff) AM_RAM // ???
- AM_RANGE(0xb02000, 0xb03fff) AM_RAM // ???
- AM_RANGE(0xb04000, 0xb05fff) AM_RAM // ???
- AM_RANGE(0xb06000, 0xb07fff) AM_RAM // ???
- AM_RANGE(0xb0c000, 0xb0dfff) AM_RAM // ???
- AM_RANGE(0xb80000, 0xbfffff) AM_RAM // ???
- AM_RANGE(0xc00000, 0xc00fff) AM_RAM // ???
- AM_RANGE(0xc01000, 0xc01fff) AM_RAM // ???
+ AM_RANGE(0x000000, 0x07ffff) AM_ROM
+ AM_RANGE(0x340000, 0x340fff) AM_DEVREADWRITE8("dpram", mb8421_device, right_r, right_w, 0x00ff)
+ AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w)
+ AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP /* Horizontal split position (ABSEL) */
+ AM_RANGE(0xb40000, 0xb40001) AM_WRITENOP /* Scanline trigger position (XHOUT) */
+ AM_RANGE(0xb60000, 0xb60001) AM_WRITENOP /* Frame trigger position (XVOUT) */
+ AM_RANGE(0xb70000, 0xb70001) AM_WRITENOP /* Synchronization mode */
+ AM_RANGE(0xb80000, 0xbfffff) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w)
+ AM_RANGE(0xc00000, 0xc03fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0xc04000, 0xc0401f) AM_DEVREADWRITE("mixer", segas24_mixer_device, read, write)
AM_RANGE(0xe00000, 0xe0001f) AM_DEVREADWRITE8("io1", sega_315_5296_device, read, write, 0x00ff)
+ AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("INX")
+ AM_RANGE(0xe40002, 0xe40003) AM_READ_PORT("INY")
+ AM_RANGE(0xe40004, 0xe40005) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
+ AM_RANGE(0xe40006, 0xe40007) AM_WRITENOP
+ AM_RANGE(0xe40008, 0xe40009) AM_READ_PORT("INZ")
AM_RANGE(0xe80000, 0xe8001f) AM_DEVREADWRITE8("io2", sega_315_5296_device, read, write, 0x00ff)
- AM_RANGE(0xf00000, 0xf03fff) AM_RAM // NVRAM?
+ AM_RANGE(0xf00000, 0xf03fff) AM_MIRROR(0x0fc000) AM_RAM // NVRAM?
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( segam1_sound_map, AS_PROGRAM, 8, segam1_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("soundbank")
+ AM_RANGE(0xf000, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( unkm1_sound_map, AS_PROGRAM, 8, segam1_state )
+ AM_RANGE(0xe000, 0xefff) AM_RAM
+ AM_IMPORT_FROM(segam1_sound_map)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( segam1_sound_io_map, AS_IO, 8, segam1_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
+ AM_RANGE(0xa0, 0xa0) AM_WRITE(sound_a0_bank_w)
+ AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( segam1_comms_map, AS_PROGRAM, 8, segam1_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0x9fff) AM_RAM
+ AM_RANGE(0xa000, 0xa7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
+ AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
+ AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
+ AM_RANGE(0xe003, 0xe003) AM_WRITENOP // ???
ADDRESS_MAP_END
static INPUT_PORTS_START( segam1 )
+ PORT_START("INA")
+ 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("INB")
+ 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("INC")
+ 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("IND")
+ 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("INE")
+ 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("INF")
+ 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("ING")
+ 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("INX")
+ 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_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNUSED)
+
+ PORT_START("INY")
+ 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_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNUSED)
+
+ PORT_START("INZ")
+ 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_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNUSED)
INPUT_PORTS_END
@@ -90,29 +338,65 @@ static MACHINE_CONFIG_START( segam1 )
MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2)
MCFG_CPU_PROGRAM_MAP(segam1_map)
-// MCFG_CPU_VBLANK_INT_DRIVER("screen", segam1_state, irq1_line_hold)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", segam1_state, irq4_line_hold)
+
+ MCFG_CPU_ADD("audiocpu", Z80, 4000000) // unknown clock
+ MCFG_CPU_PROGRAM_MAP(segam1_sound_map)
+ MCFG_CPU_IO_MAP(segam1_sound_io_map)
+
+ MCFG_CPU_ADD("m1comm", Z80, 4000000) // unknown clock
+ MCFG_CPU_PROGRAM_MAP(segam1_comms_map)
MCFG_DEVICE_ADD("io1", SEGA_315_5296, 0) // unknown clock
+ MCFG_315_5296_IN_PORTA_CB(IOPORT("INA"))
+ MCFG_315_5296_IN_PORTB_CB(IOPORT("INB"))
+ MCFG_315_5296_IN_PORTC_CB(IOPORT("INC"))
+ MCFG_315_5296_IN_PORTD_CB(IOPORT("IND"))
+ MCFG_315_5296_IN_PORTE_CB(IOPORT("INE"))
+ MCFG_315_5296_IN_PORTF_CB(IOPORT("INF"))
+
MCFG_DEVICE_ADD("io2", SEGA_315_5296, 0) // unknown clock
+ MCFG_315_5296_IN_PORTG_CB(IOPORT("ING"))
+
+ MCFG_DEVICE_ADD("uart", I8251, 4000000) // unknown clock
+
+ MCFG_DEVICE_ADD("dpram", MB8421, 0)
+ MCFG_MB8421_INTL_HANDLER(INPUTLINE("m1comm", 0))
+
+ MCFG_S24TILE_DEVICE_ADD("tile", 0x3fff)
+ MCFG_S24TILE_DEVICE_PALETTE("palette")
+ MCFG_S24MIXER_DEVICE_ADD("mixer")
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(segam1_state, screen_update_segam1)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_RAW_PARAMS(16000000, 656, 0, 496, 424, 0, 384) // copied from segas24.cpp; may not be accurate
+ MCFG_SCREEN_UPDATE_DRIVER(segam1_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 0x200)
- MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_PALETTE_ADD("palette", 8192*2)
+
+ // sound hardware
+ MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- // YM3438
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI))
+
+ MCFG_SOUND_ADD("ymsnd", YM3438, 8000000)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
+ //MCFG_YM2612_IRQ_HANDLER(WRITELINE(segam1_state, ym3438_irq_handler))
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( unkm1, segam1 )
+ MCFG_CPU_MODIFY("audiocpu")
+ MCFG_CPU_PROGRAM_MAP(unkm1_sound_map)
+
+ MCFG_CPU_MODIFY("m1comm")
+ MCFG_DEVICE_DISABLE() // not dumped yet
+MACHINE_CONFIG_END
-ROM_START( bingpty )
- ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */
+
+ROM_START( bingpty ) // 1994/05/01 string
+ ROM_REGION( 0x80000, "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) )
@@ -133,12 +417,13 @@ ROM_START( unkm1 ) // 1992.01.31 string
ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 Code */
ROM_LOAD( "epr-14429.ic104", 0x00000, 0x20000, CRC(1ff8262d) SHA1(fb90bd877b2dc65eb3e5495d6e21dee1f871fb44) )
- // ROM_REGION( 0x8000, "m1comm", 0 ) // not present?
+ ROM_REGION( 0x8000, "m1comm", 0 )
+ ROM_LOAD( "unkm1_comm.bin", 0x00000, 0x8000, NO_DUMP ) // CPU almost certainly exists, but not even type is confirmed
ROM_REGION( 0x100, "plds", 0 )
ROM_LOAD( "315-5472-01.ic22", 0x000, 0x0eb, CRC(828ee6e2) SHA1(f32dd0f6297cc8bd3049be4bca502c0f8ec738cf) )
// dumps of the X-Board part, and the LINK PCB are missing.
ROM_END
-GAME( 199?, bingpty, 0, segam1, segam1, segam1_state, 0, ROT0, "Sega", "Bingo Party Multicart (Rev B) (M1 Satellite board)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 1992, unkm1, 0, segam1, segam1, segam1_state, 0, ROT0, "Sega", "Unknown Sega gambling game (M1 Satellite board)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 1994, bingpty, 0, segam1, segam1, segam1_state, 0, ROT0, "Sega", "Bingo Party Multicart (Rev B) (M1 Satellite board)", MACHINE_NOT_WORKING )
+GAME( 1992, unkm1, 0, unkm1, segam1, segam1_state, 0, ROT0, "Sega", "Unknown Sega gambling game (M1 Satellite board)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )